1
我试图用mpmath.polyroots
找到一个简单的多项式的根整系数x*(x-4)**3
,当其扩展为[1, -12, 48, 64, 0]
系数向量。下面的代码失败:寻找一个简单的多项式的根与mpmath
import mpmath
p = [ 1, -12, 48, -64, 0]
print mpmath.polyroots(p,maxsteps=2000)
与错误:
Traceback (most recent call last):
File "poly.py", line 3, in <module>
print mpmath.polyroots(p,maxsteps=2000)
File "/usr/local/lib/python2.7/dist-packages/mpmath/calculus/polynomials.py", line 188, in polyroots
% maxsteps)
mpmath.libmp.libhyper.NoConvergence: Didn't converge in maxsteps=2000 steps.
增加的步骤没有帮助的数量。预期的答案显然是[0,4,4,4]
。
如果存在多重性,mpmath无法找到多项式的根?我该如何解决这个问题?
由于浮点评估中的扰动,三重根导致数值求解器中的'1e-5'错误级别。对于1e-6或更小的典型默认级别,这可能无法解决。通过聚类分析来查找多个或根目录可能会阻止这种情况。 – LutzL
@LutzL我认为这个词的聚类分析可能有不同的看法(例如我的用例就像主成分分析)。聚类分析如何与寻找多根相关? – Hooked
多根在数值行为与根簇密切相关。我不知道软件在哪里完成,但从数学的角度来看,在复平面中识别包含多个或多个根的相对较小的磁盘并找到相应的多项式因子将是有利的。这种中间因式分解不会像多重性根的情况那样遭受精度损失。但是,小程度的因素可能仍然会导致不稳定的根源,就像这个例子。 – LutzL