Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当需要符号表达式时,SymPy将输出数值结果_Python_Sympy - Fatal编程技术网

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

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

我希望我的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/2
是用标准Python完成的,内部表示为
0.5

解决方案是首先将分数的一部分转换为一个SymPy对象。最简单的方法是使用函数
S
,如下所示:

来自sympy导入的
*
u=符号(“u”)
打印(集成((1+u)**(S(1)/2),(u,0,1)))
输出所需的
-2/3+4*sqrt(2)/3

文档的第二部分试图解释这种行为