scipy.linalg.
eigvalsh_tridiagonal#
- scipy.linalg.eigvalsh_tridiagonal(d, e, select='a', select_range=None, check_finite=True, tol=0.0, lapack_driver='auto')[源代码]#
求解实对称三对角矩阵的特征值问题。
求
a
的特征值 wa v[:,i] = w[i] v[:,i] v.H v = identity
对于具有对角元素 d 和非对角元素 e 的实对称矩阵
a
。- 参数:
- dndarray,形状为 (ndim,)
数组的对角元素。
- endarray,形状为 (ndim-1,)
数组的非对角元素。
- select{‘a’,‘v’,‘i’},可选
要计算的特征值
选择
计算结果
‘a’
所有特征值
‘v’
区间(最小值,最大值] 中的特征值
‘i’
索引最小 <= i <= 最大的特征值
- select_range(最小值,最大值),可选
所选特征值的范围
- 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