当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python SciPy linalg.eigvalsh_tridiagonal用法及代码示例


本文简要介绍 python 语言中 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.

参数

d ndarray,形状(ndim,)

数组的对角元素。

e ndarray,形状(ndim-1,)

数组的非对角元素。

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

计算哪些特征值

选择

计算出来的

‘a’

所有特征值

‘v’

区间内的特征值 (min, max]

‘i’

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

select_range (最小,最大),可选

所选特征值的范围

check_finite 布尔型,可选

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

tol 浮点数

需要每个特征值的绝对容差(仅在 lapack_driver='stebz' 时使用)。如果特征值(或簇)位于此宽度的区间内,则认为它已收敛。如果 <= 0.(默认),则使用值 eps*|a|,其中 eps 是机器精度,而 |a| 是矩阵 a 的 1-范数。

lapack_driver str

要使用的 LAPACK 函数可以是 ‘auto’, ‘stemr’, ‘stebz’、‘sterf’ 或 ‘stev’。当‘auto’(默认)时,如果select='a'则使用‘stemr’,否则使用‘stebz’。 ‘sterf’ 和 ‘stev’ 只能在 select='a' 时使用。

返回

w (M,) ndarray

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

抛出

LinAlgError

如果特征值计算不收敛。

例子

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

相关用法


注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.linalg.eigvalsh_tridiagonal。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。