Python 当需要符号表达式时,SymPy将输出数值结果
我希望我的SymPy结果显示为精确结果,而不是十进制结果。我查阅了Symphy文档,但没有找到任何有用的东西 为了说明这个问题,下面是一些示例代码:Python 当需要符号表达式时,SymPy将输出数值结果,python,sympy,Python,Sympy,我希望我的SymPy结果显示为精确结果,而不是十进制结果。我查阅了Symphy文档,但没有找到任何有用的东西 为了说明这个问题,下面是一些示例代码: from sympy import * u = symbols("u") integrate((1+u)**(1/2), (u, 0, 1)) 输出: 1.21895141649746 预期结果: (4/3)*sqrt(2)-(2/3) 问题是Symphy将简化包含浮点的表达式,从而删除这些符号表达式。虽然表达式看起来不像一个浮点,但是除法1
from sympy import *
u = symbols("u")
integrate((1+u)**(1/2), (u, 0, 1))
输出:
1.21895141649746
预期结果:
(4/3)*sqrt(2)-(2/3)
问题是Symphy将简化包含浮点的表达式,从而删除这些符号表达式。虽然表达式看起来不像一个浮点,但是除法
1/2
是用标准Python完成的,内部表示为0.5
解决方案是首先将分数的一部分转换为一个SymPy对象。最简单的方法是使用函数S
,如下所示:
来自sympy导入的*
u=符号(“u”)
打印(集成((1+u)**(S(1)/2),(u,0,1)))
输出所需的-2/3+4*sqrt(2)/3
文档的第二部分试图解释这种行为