scipy.linalg.eigvalsh_tridiagonal

scipy.linalg.eigvalsh_tridiagonal(d, e, select='a', select_range=None, check_finite=True, tol=0.0, lapack_driver='auto')[源代码]

求解实对称三对角矩阵的特征值问题。

查找特征值 wa ::

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

对于实对称矩阵 a 使用对角线元素 d 和非对角线单元 e

参数
dndarray,形状(ndim,)

数组的对角元素。

endarray,形状(ndim-1,)

数组的非对角线元素。

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

要计算哪些特征值

选择

已计算

‘a’

所有特征值

“v”

区间内的特征值(最小、最大)

“我”

指标为min<=i<=max的特征值

select_range(最小,最大),可选

选定特征值的范围

check_finite布尔值,可选

是否检查输入矩阵是否仅包含有限个数字。禁用可能会带来性能提升,但如果输入确实包含无穷大或NAN,则可能会导致问题(崩溃、非终止)。

tol浮动

每个特征值所需的绝对容差(仅在以下情况下使用 lapack_driver='stebz' )。如果特征值(或簇)位于该宽度的区间内,则认为该特征值(或簇)已收敛。如果<=0。(默认值),值 eps*|a| 在EPS是机器精度的情况下使用,并且 |a| 是矩阵的1-范数 a

lapack_driver应力

要使用的LAPACK函数,可以是‘auto’、‘stemr’、‘stebz’、‘sterf’或‘stev’。如果设置为“auto”(默认值),则在以下情况下将使用“stemr” select='a' 和‘stebz’否则。“sterf”和“Stev”只能在以下情况下使用 select='a'

退货
w(M,)ndarray

特征值按升序排列,每个特征值根据其重数重复。

加薪
LinAlgError

如果特征值计算不收敛。

参见

eigh_tridiagonal

对称/厄米特三对角阵的特征值和右本征向量

示例

>>> 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