当多项式只有<;时,numpy.root()是否会返回n个不同的浮点值;n唯一(精确)根?
我想标题说明了一切,但具体来说,我有一些名为“系数”的数字列表。假设具有所述系数的多项式正好有k个唯一根,下面的代码是否会将唯一根的数量设为大于k的数字当多项式只有<;时,numpy.root()是否会返回n个不同的浮点值;n唯一(精确)根?,numpy,scipy,Numpy,Scipy,我想标题说明了一切,但具体来说,我有一些名为“系数”的数字列表。假设具有所述系数的多项式正好有k个唯一根,下面的代码是否会将唯一根的数量设为大于k的数字 import numpy as np number_of_unique_roots = len(set(np.roots(coeffs))) 对 更精确地说,具有k次方根的多项式f(x)+eps·g(x)的扰动f(x)通常具有唯一的根,并且k次方根分离成一个几乎对称的星,k个顶点围绕原始k次方根,其距离与eps^(1/k)成比例 多项式的数值
import numpy as np
number_of_unique_roots = len(set(np.roots(coeffs)))
对
更精确地说,具有k次方根的多项式
f(x)+eps·g(x)
的扰动f(x)
通常具有唯一的根,并且k次方根分离成一个几乎对称的星,k个顶点围绕原始k次方根,其距离与eps^(1/k)
成比例
多项式的数值计算(64位的双倍)带有抵消误差,尤其是接近根的误差。这可以解释为eps=1e-16的扰动。因此,如同在其他答案中一样,双根分裂成两个根,距离的大小为:代码>1E-8/CODE>原始根在中间。4倍的根会形成正方形或菱形,大小为~1e-4
等
>>> len(set(numpy.roots([1, 6, 9])))
2
>>> numpy.roots([1, 6, 9])
array([-3. +3.72529030e-08j, -3. -3.72529030e-08j])