SymPy:难以简化包含因子一的表达式

喜悦

对不起,对于新手问题,但到目前为止我还没有找到答案。

假设我们有一个符号,然后将其乘以浮点数1:

import sympy

x = sympy.Symbol('x')
x = 1.0 * x

x无论我做什么,所有包含此内容的表达式都将包含因数一:

from pprint import pprint
pprint(x)
pprint(sympy.simplify(x))

输出:

1.0⋅x
1.0⋅x

在上面的示例中,我要输出x而不是1.0⋅x是否可以通过用浮点数1求解所有乘法来简化表达式?我应该将此浮点数转换为其他数据类型吗?

短信

看起来这是由于浮点数与整数1的关系-如果您可以摆脱1,就不要使用1.0呢?

您可以检查它是否与和1.0完全相同if f.as_integer_ratio() == (1, 1),如果是,则不要在不必要的'1.0'前面加上:

>>> xf = 1.0 * x
>>> xi = 1 * x

>>> xf
1.0*x
>>> xi
x

>>> pprint(xf)
1.0*x
>>> pprint(xi)
x

这可能是由于浮点不精确(我不太了解sympy,不能说更多)。

编辑:的运行时间float.as_integer_ratio()很小,以回应您的问题:

>>> python -m timeit -n 1000000 '(1.0).as_integer_ratio() == (1,1)'
1000000 loops, best of 5: 172 nsec per loop

>>> python -m timeit -n 1000000 '(1.1).as_integer_ratio() == (1,1)'
1000000 loops, best of 5: 327 nsec per loop

>>> python -m timeit -n 1000000 '(1.01).as_integer_ratio() == (1,1)'
1000000 loops, best of 5: 331 nsec per loop

>>> python -m timeit -n 1000000 '(0.999999999999).as_integer_ratio() == (1,1)'
1000000 loops, best of 5: 329 nsec per loop

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何获得sympy来简化包含sqrt(2)/ 2的表达式?

来自分类Dev

如何在Sympy中简化包含复杂指数的表达式

来自分类Dev

简化包含符号变量的表达式

来自分类Dev

简化包含符号变量的表达式

来自分类Dev

逐字渲染一个sympy表达式,不做任何简化

来自分类Dev

在sympy中,使用规范的换向关系简化表达式

来自分类Dev

如何使sympy简化等于零的基本表达式

来自分类Dev

SymPy,使用已知模式或子表达式的简化/替换

来自分类Dev

如何在sympy中替换和简化表达式?

来自分类Dev

检查 Sympy 表达式是否简化为常量

来自分类Dev

如何将包含erf函数的SymPy表达式与NumPy一起使用

来自分类Dev

表达式简化算法

来自分类Dev

简化LINQ表达式

来自分类Dev

布尔表达式简化

来自分类Dev

简化numpy表达式

来自分类Dev

逻辑表达式简化

来自分类Dev

简化CSS表达式

来自分类Dev

表达式简化算法

来自分类Dev

简化布尔表达式

来自分类Dev

简化 AND OR 布尔表达式

来自分类Dev

检查sympy表达式是否包含函数

来自分类Dev

使用SymPy解析包含N的表达式

来自分类Dev

Sympy可以通过收集多个术语来简化有理表达式吗?

来自分类Dev

在Maxima中简化包含对数和乘积的数学表达式

来自分类Dev

最大值:简化包含最小值的表达式

来自分类Dev

在Maxima中简化包含对数和乘积的数学表达式

来自分类Dev

最大值:简化包含最小值的表达式

来自分类Dev

简化JavaScript正则表达式

来自分类Dev

简化条件布尔表达式