【发布时间】:2020-10-25 22:24:48
【问题描述】:
多项式x^3 - 3x + 1 的三个(实)根总和为0。但是 sympy 似乎无法化简这个根之和:
>>> from sympy import *
>>> from sympy.abc import x
>>> rr = real_roots(x**3 -3*x + 1)
>>> sum(rr)
CRootOf(x**3 - 3*x + 1, 0) + CRootOf(x**3 - 3*x + 1, 1) + CRootOf(x**3 - 3*x + 1, 2)
函数simplify 和radsimp 不能简化这个表达式。然而,最小多项式的计算是正确的:
>>> minimal_polymial(sum(rr))
_x
由此我们可以得出结论,总和是0。有没有一种直接的方法可以让 sympy 简化这个根总和?
【问题讨论】:
-
对于三次或更高级别的符号化简化,我找不到太多信息,但您可以得到一个数值近似值:
sum([root.eval_approx(20) for root in rr])。 Documentation. -
@Maelstrom 当然,最好进行精确的评估,......并且使用
minimal_polynomial应该可以扩展函数simplify(或任何其他适当的函数)来实现它能够进行这样的简化。我可能会为此在 sympy 项目中创建一个问题。 -
@Maelstrom 见 sympy issue #19726 (github.com/sympy/sympy/issues/19726)
标签: sympy