scipy.linalg.
eigvalsh_tridiagonal#
- scipy.linalg.eigvalsh_tridiagonal(d, e, select='a', select_range=None, check_finite=True, tol=0.0, lapack_driver='auto')[source]#
求解實對稱三對角矩陣的特徵值問題。
找出
a
的特徵值 wa v[:,i] = w[i] v[:,i] v.H v = identity
針對具有對角線元素 d 和非對角線元素 e 的實對稱矩陣
a
。- 參數:
- dndarray,形狀為 (ndim,)
陣列的對角線元素。
- endarray,形狀為 (ndim-1,)
陣列的非對角線元素。
- select{‘a’, ‘v’, ‘i’},選填
要計算哪些特徵值
select
計算
‘a’
所有特徵值
‘v’
區間 (min, max] 中的特徵值
‘i’
索引 min <= i <= max 的特徵值
- select_range(min, max),選填
選定特徵值的範圍
- check_finitebool,選填
是否檢查輸入矩陣是否僅包含有限數字。停用此項可能會提高效能,但如果輸入包含無限大或 NaN,則可能會導致問題(崩潰、非終止)。
- tolfloat
每個特徵值所需的絕對容差(僅在
lapack_driver='stebz'
時使用)。如果特徵值(或叢集)位於此寬度的區間內,則視為已收斂。如果 <= 0(預設值),則使用值eps*|a|
,其中 eps 是機器精度,而|a|
是矩陣a
的 1-範數。- lapack_driverstr
要使用的 LAPACK 函數,可以是 ‘auto’、‘stemr’、‘stebz’、‘sterf’ 或 ‘stev’。當 ‘auto’(預設值)時,如果
select='a'
則會使用 ‘stemr’,否則使用 ‘stebz’。‘sterf’ 和 ‘stev’ 只能在select='a'
時使用。
- 返回:
- w(M,) ndarray
特徵值,以升序排列,每個特徵值根據其重數重複。
- 引發:
- LinAlgError
如果特徵值計算不收斂。
另請參閱
eigh_tridiagonal
對稱/厄米三對角矩陣的特徵值和右特徵向量
範例
>>> import numpy as np >>> from scipy.linalg import eigvalsh_tridiagonal, eigvalsh >>> d = 3*np.ones(4) >>> e = -1*np.ones(3) >>> w = eigvalsh_tridiagonal(d, e) >>> A = np.diag(d) + np.diag(e, k=1) + np.diag(e, k=-1) >>> w2 = eigvalsh(A) # Verify with other eigenvalue routines >>> np.allclose(w - w2, np.zeros(4)) True