numpy.poly#
- numpy.poly(seq_of_zeros)[源代码]#
查找具有给定根序列的多项式的系数。
注意
这是旧多项式 API 的一部分。自 1.4 版本以来,更推荐使用
numpy.polynomial
中定义的新多项式 API。可以在过渡指南中找到差异摘要。返回给定零(根)序列的多项式系数,其中最高次项系数为一(多重根必须根据其重数在序列中包含多次;参见示例)。也可以给定一个方阵(或将被视为矩阵的数组),在这种情况下,将返回矩阵的特征多项式系数。
- 参数:
- seq_of_zeros类数组,形状 (N,) 或 (N, N)
多项式根序列,或一个方阵/矩阵对象。
- 返回:
- cndarray
多项式系数的一维数组,从最高次到最低次
c[0] * x**(N) + c[1] * x**(N-1) + ... + c[N-1] * x + c[N]
,其中 c[0] 始终为 1。
- 抛出:
- ValueError
如果输入形状错误(输入必须是一维或二维方阵)。
注释
指定多项式的根仍会留有一个自由度,通常由一个未确定的最高次项系数表示。[1] 在此函数中,该系数(返回数组中的第一个)始终取为一。(如果由于某种原因你还有另一个点,目前唯一能自动利用该信息的方法是使用
polyfit
。)一个 n 乘 n 矩阵 A 的特征多项式 \(p_a(t)\) 由以下公式给出:
\(p_a(t) = \mathrm{det}(t\, \mathbf{I} - \mathbf{A})\),
其中 I 是 n 乘 n 单位矩阵。[2]
参考文献
[1]M. Sullivan 和 M. Sullivan, III,“代数与三角学,带图表实用工具增强版”,Prentice-Hall,第 318 页,1996 年。
[2]G. Strang,“线性代数及其应用,第 2 版”,Academic Press,第 182 页,1980 年。
示例
给定多项式零(根)的序列
>>> import numpy as np
>>> np.poly((0, 0, 0)) # Multiple root example array([1., 0., 0., 0.])
上述行表示 z**3 + 0*z**2 + 0*z + 0。
>>> np.poly((-1./2, 0, 1./2)) array([ 1. , 0. , -0.25, 0. ])
上述行表示 z**3 - z/4
>>> np.poly((np.random.random(1)[0], 0, np.random.random(1)[0])) array([ 1. , -0.77086955, 0.08618131, 0. ]) # random
给定一个方阵对象
>>> P = np.array([[0, 1./3], [-1./2, 0]]) >>> np.poly(P) array([1. , 0. , 0.16666667])
请注意,在所有情况下,最高次项系数始终为 1。