scipy.linalg.eigvalsh_tridiagonal¶
- scipy.linalg.eigvalsh_tridiagonal(d, e, select='a', select_range=None, check_finite=True, tol=0.0, lapack_driver='auto')[源代码]¶
求解实对称三对角矩阵的特征值问题。
查找特征值 w 的
a
::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