當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python SciPy linalg.eigh_tridiagonal用法及代碼示例


本文簡要介紹 python 語言中 scipy.linalg.eigh_tridiagonal 的用法。

用法:

scipy.linalg.eigh_tridiagonal(d, e, eigvals_only=False, select='a', select_range=None, check_finite=True, tol=0.0, lapack_driver='auto')#

求解實對稱三對角矩陣的特征值問題。

求特征值w和可選的右特征向量va

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

對於實對稱矩陣a具有對角線元素d和非對角元素e.

參數

d ndarray,形狀(ndim,)

數組的對角元素。

e ndarray,形狀(ndim-1,)

數組的非對角元素。

eigvals_only 布爾型,可選

僅計算特征值而不計算特征向量。 (默認:還計算特征向量)

select {‘a’, ‘v’, ‘i’},可選

計算哪些特征值

選擇

計算出來的

‘a’

所有特征值

‘v’

區間內的特征值 (min, max]

‘i’

具有索引 min <= i <= max 的特征值

select_range (最小,最大),可選

所選特征值的範圍

check_finite 布爾型,可選

是否檢查輸入矩陣是否僅包含有限數。禁用可能會提高性能,但如果輸入確實包含無窮大或 NaN,則可能會導致問題(崩潰、非終止)。

tol 浮點數

每個特征值所需的絕對容差(僅當 ‘stebz’ 為lapack_driver)。如果特征值(或簇)位於該寬度的區間內,則認為該特征值已收斂。如果 <= 0(默認),則該值eps*|a|用於其中 eps 是機器精度,並且|a|是矩陣的 1-範數a.

lapack_driver str

要使用的LAPACK函數,可以是‘auto’, ‘stemr’, ‘stebz’, ‘sterf’,或‘stev’。當‘auto’(默認)時,如果select='a'則使用‘stemr’,否則使用‘stebz’。當使用 ‘stebz’ 查找特征值和 eigvals_only=False 時,將使用第二個 LAPACK 調用(到 ?STEIN )來查找相應的特征向量。 ‘sterf’隻能在eigvals_only=Trueselect='a'時使用。 ‘stev’隻能在select='a'時使用。

返回

w (M,) ndarray

特征值按升序排列,每個都根據其多重性重複。

v (M, M) ndarray

與特征值w[i]對應的歸一化特征向量是列v[:,i]。僅在 eigvals_only=False 時返回。

拋出

LinAlgError

如果特征值計算不收斂。

注意

此函數使用 LAPACK S/DSTEMR 例程。

例子

>>> import numpy as np
>>> from scipy.linalg import eigh_tridiagonal
>>> d = 3*np.ones(4)
>>> e = -1*np.ones(3)
>>> w, v = eigh_tridiagonal(d, e)
>>> A = np.diag(d) + np.diag(e, k=1) + np.diag(e, k=-1)
>>> np.allclose(A @ v - v @ np.diag(w), np.zeros((4, 4)))
True

相關用法


注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.linalg.eigh_tridiagonal。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。