[英]SymPy outputs a numerical result when a symbolic expression is expected
我希望我的 SymPy 结果显示为精确结果而不是小数结果。 我查看了 SymPy 文档,但找不到任何有用的信息。
为了说明问题,这里是一些示例代码:
from sympy import *
u = symbols("u")
integrate((1+u)**(1/2), (u, 0, 1))
输出:
1.21895141649746
预期结果:
(4/3)*sqrt(2)-(2/3)
问题在于 SymPy 将简化包含浮点数的表达式,因此删除了那些符号表达式。 尽管表达式看起来不像浮点数,但除法1/2
是使用标准 Python 完成的,内部表示为0.5
。
解决方案是首先将分数的一部分转换为 SymPy 对象。 最简单的方法是使用函数S
,如下所示:
from sympy import *
u = symbols("u")
print(integrate((1+u)**(S(1)/2), (u, 0, 1)))
输出所需的-2/3 + 4*sqrt(2)/3
。
文档的陷阱部分试图解释这种行为。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.