繁体   English   中英

当需要符号表达式时,SymPy 输出数值结果

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM