scipy.linalg.

fiedler_companion#

scipy.linalg.fiedler_companion(a)[原始碼]#

返回 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, “ A note on companion matrices”, Linear Algebra and its Applications, 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])