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


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


本文简要介绍 python 语言中 scipy.linalg.eig 的用法。

用法:

scipy.linalg.eig(a, b=None, left=False, right=True, overwrite_a=False, overwrite_b=False, check_finite=True, homogeneous_eigvals=False)#

求解方阵的普通或广义特征值问题。

求一般矩阵的特征值 w 和右或左特征向量:

a   vr[:,i] = w[i]        b   vr[:,i]
a.H vl[:,i] = w[i].conj() b.H vl[:,i]

其中 .H 是 Hermitian 共轭。

参数

a (M, M) 数组

将计算其特征值和特征向量的复数或实数矩阵。

b (M, M) 数组,可选

广义特征值问题中的右侧矩阵。默认值为 None,假定为单位矩阵。

left 布尔型,可选

是否计算并返回左特征向量。默认为假。

right 布尔型,可选

是否计算并返回右特征向量。默认为真。

overwrite_a 布尔型,可选

是否覆盖a;可以提高性能。默认为假。

overwrite_b 布尔型,可选

是否覆盖b;可以提高性能。默认为假。

check_finite 布尔型,可选

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

homogeneous_eigvals 布尔型,可选

如果为 True,则返回齐次坐标中的特征值。在这种情况下,w 是一个 (2, M) 数组,因此:

w[1,i] a vr[:,i] = w[0,i] b vr[:,i]

默认为假。

返回

w (M,) 或 (2, M) 双精度或复数 ndarray

特征值,每个都根据其多重性重复。形状为 (M,) 除非 homogeneous_eigvals=True

vl (M, M) 双精度或复数 ndarray

与特征值w[i]对应的归一化左特征向量是列vl[:,i]。仅在 left=True 时返回。

vr (M, M) 双精度或复数 ndarray

对应于特征值 w[i] 的归一化右特征向量是列 vr[:,i] 。仅在 right=True 时返回。

抛出

LinAlgError

如果特征值计算不收敛。

例子

>>> import numpy as np
>>> from scipy import linalg
>>> a = np.array([[0., -1.], [1., 0.]])
>>> linalg.eigvals(a)
array([0.+1.j, 0.-1.j])
>>> b = np.array([[0., 1.], [1., 1.]])
>>> linalg.eigvals(a, b)
array([ 1.+0.j, -1.+0.j])
>>> a = np.array([[3., 0., 0.], [0., 8., 0.], [0., 0., 7.]])
>>> linalg.eigvals(a, homogeneous_eigvals=True)
array([[3.+0.j, 8.+0.j, 7.+0.j],
       [1.+0.j, 1.+0.j, 1.+0.j]])
>>> a = np.array([[0., -1.], [1., 0.]])
>>> linalg.eigvals(a) == linalg.eig(a)[0]
array([ True,  True])
>>> linalg.eig(a, left=True, right=False)[1] # normalized left eigenvector
array([[-0.70710678+0.j        , -0.70710678-0.j        ],
       [-0.        +0.70710678j, -0.        -0.70710678j]])
>>> linalg.eig(a, left=False, right=True)[1] # normalized right eigenvector
array([[0.70710678+0.j        , 0.70710678-0.j        ],
       [0.        -0.70710678j, 0.        +0.70710678j]])

相关用法


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