Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.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 虚数分数次幂的辛化简_Python_Sympy - Fatal编程技术网

Python 虚数分数次幂的辛化简

Python 虚数分数次幂的辛化简,python,sympy,Python,Sympy,为什么-(-1)**(1/3)+(-1)**(2/3)没有减少到-1 它是-1,但只做浮点近似 re()+I*im()生成了一个NegativeOne对象,但是我尝试过的其他简化函数都没有对它做任何处理。我假设你的意思是-1)**Rational(1,3)+-1)**Rational(2,3),就像字面上的-1)**(1/3)+-1)**(2/3)都是Python(没有SymPy),并进行数值计算 大多数SymPy对象不会自动进行任何类型的非平凡简化。原因是,有时您可能希望表示-(-1)**(1

为什么
-(-1)**(1/3)+(-1)**(2/3)
没有减少到-1

它是-1,但只做浮点近似


re()+I*im()
生成了一个
NegativeOne
对象,但是我尝试过的其他简化函数都没有对它做任何处理。

我假设你的意思是
-1)**Rational(1,3)+-1)**Rational(2,3)
,就像字面上的
-1)**(1/3)+-1)**(2/3)
都是Python(没有SymPy),并进行数值计算

大多数SymPy对象不会自动进行任何类型的非平凡简化。原因是,有时您可能希望表示
-(-1)**(1/3)+(-1)**(2/3)
,而不进行简化。此外,简化通常是一个昂贵的操作,在操作创建时这样做效率很低,因为通常您创建的中间表达式不需要在中间阶段进行简化

re(expr)+I*im(expr)
可以。一种更自动化的方法是使用
expand\u complex()

理想情况下,
simplify()
将调用
expand\u complex()
,这是一个悬而未决的问题()


需要注意的是,SymPy Gamma直接在SymPy之上提供了很多自动化功能。例如,它将
-(-1)**(1/3)+(-1)**(2/3)
转换为SymPy类型,并对表达式执行各种功能,如数值计算、简化、微分等。

舍入误差。如果您想确切知道发生了什么,请查看Symphy源代码。@larsmans:但是Symphy没有舍入错误?它在计算普通Python表达式时会有舍入错误,我怀疑这里就是这种情况。它并没有改变Python语言,只是增加了它。@larsmans不,它是一种同情的表达。我尝试了一系列简化函数,但没有找到
expand\u complex()
In [19]: expand_complex(-(-1)**Rational(1, 3) + (-1)**Rational(2, 3))
Out[19]: -1