python - sympy 简化虚数的分数幂

标签 python sympy

为什么-(-1)**(1/3) + (-1)**(2/3)不减少到-1?

wolfram alpha knows它是-1但是sympy gamma仅进行浮点近似

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_complex():

In [19]: expand_complex(-(-1)**Rational(1, 3) + (-1)**Rational(2, 3))
Out[19]: -1

理想情况下,simplify() 会调用 expand_complex(),并且对此存在一个 Unresolved 问题 ( https://github.com/sympy/sympy/issues/7569 )。

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

关于python - sympy 简化虚数的分数幂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24100509/

相关文章:

python - 获取字典列表的最大键

python - 内隐微分 Sympy

python - 在 python 中转发属性查找

python - Dataframe 使用方括号设置值,不遵循 Dataframe 传递的顺序

python - 我可以避免这种繁琐的列表理解吗

python - 对多个符号变量使用 Lambdify

python - 如何在 sympy 中求解非线性方程?

python - 为什么单个值可以作为条件

python - Sympy:手动处理等式

python - 如何在 SymPy 中使用对数 x 轴正确编写 2D 绘图调用?