scipy.linalg.

eigvals_banded#

scipy.linalg.eigvals_banded(a_band, lower=False, overwrite_a_band=False, select='a', select_range=None, check_finite=True)[source]#

解決實對稱或複 Hermitian 帶狀矩陣特徵值問題。

找出 a 的特徵值 w

a v[:,i] = w[i] v[:,i]
v.H v    = identity

矩陣 a 儲存在 a_band 中,可以是下對角線或上對角線有序形式

a_band[u + i - j, j] == a[i,j] (if upper form; i <= j) a_band[ i - j, j] == a[i,j] (if lower form; i >= j)

其中 u 是對角線上方帶狀的數量。

a_band 的範例 (a 的形狀為 (6,6), u=2)

upper form:
*   *   a02 a13 a24 a35
*   a01 a12 a23 a34 a45
a00 a11 a22 a33 a44 a55

lower form:
a00 a11 a22 a33 a44 a55
a10 a21 a32 a43 a54 *
a20 a31 a42 a53 *   *

標記 * 的儲存格未使用。

參數:
a_band(u+1, M) 類陣列

M x M 矩陣 a 的帶狀。

lowerbool, 選項性

矩陣是否為下三角形式。(預設為上三角形式)

overwrite_a_bandbool, 選項性

捨棄 a_band 中的資料 (可能提升效能)

select{‘a’, ‘v’, ‘i’}, 選項性

要計算哪些特徵值

select

計算值

‘a’

所有特徵值

‘v’

區間 (min, max] 中的特徵值

‘i’

索引 min <= i <= max 的特徵值

select_range(min, max), 選項性

選定特徵值的範圍

check_finitebool, 選項性

是否檢查輸入矩陣僅包含有限數字。停用此選項可能會提高效能,但如果輸入包含無限或 NaN 值,可能會導致問題 (崩潰、無法終止)。

回傳值:
w(M,) ndarray

特徵值,以升序排列,每個值根據其重數重複。

引發:
LinAlgError

如果特徵值計算不收斂。

另請參閱

eig_banded

對稱/Hermitian 帶狀矩陣的特徵值和右特徵向量

eigvalsh_tridiagonal

對稱/Hermitian 三對角矩陣的特徵值

eigvals

通用陣列的特徵值

eigh

對稱/Hermitian 陣列的特徵值和右特徵向量

eig

非對稱陣列的特徵值和右特徵向量

範例

>>> import numpy as np
>>> from scipy.linalg import eigvals_banded
>>> A = np.array([[1, 5, 2, 0], [5, 2, 5, 2], [2, 5, 3, 5], [0, 2, 5, 4]])
>>> Ab = np.array([[1, 2, 3, 4], [5, 5, 5, 0], [2, 2, 0, 0]])
>>> w = eigvals_banded(Ab, lower=True)
>>> w
array([-4.26200532, -2.22987175,  3.95222349, 12.53965359])