scipy.linalg.

fiedler_companion#

scipy.linalg.fiedler_companion(a)[source]#

返回一个 Fiedler 伴侣矩阵

给定一个多项式系数数组 a,此函数会形成一个具有特殊结构的五对角矩阵,其特征值与 a 的根一致。

参数
a(…, N) 类数组

一个多项式系数的一维数组,以降序排列,且首项系数非零。对于 N < 2,返回一个空数组。N 维数组被视为一个批次:沿最后一个轴的每个切片都是一个多项式系数的一维数组。

返回
c(…, N-1, N-1) ndarray

生成的伴侣矩阵。对于批次输入,输出沿最后两个维度的形状为 (N-1, N-1) 的每个切片,对应于输入沿最后一个维度的形状为 (N,) 的切片。

另请参阅

companion

备注

类似于 companion 函数,输入沿最后一个轴的每个首项系数都应非零。如果首项系数不为 1,则在数组生成之前会对其余系数进行重新缩放。为避免数值问题,最好提供一个首一多项式。

在 1.3.0 版本中新增。

参考文献

[1]

M. Fiedler,《伴侣矩阵注释》,《线性代数及其应用》,2003年,DOI:10.1016/S0024-3795(03)00548-2

示例

>>> import numpy as np
>>> from scipy.linalg import fiedler_companion, eigvals
>>> p = np.poly(np.arange(1, 9, 2))  # [1., -16., 86., -176., 105.]
>>> fc = fiedler_companion(p)
>>> fc
array([[  16.,  -86.,    1.,    0.],
       [   1.,    0.,    0.,    0.],
       [   0.,  176.,    0., -105.],
       [   0.,    1.,    0.,    0.]])
>>> eigvals(fc)
array([7.+0.j, 5.+0.j, 3.+0.j, 1.+0.j])