本文简要介绍 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]])
相关用法
- Python SciPy linalg.eigvalsh_tridiagonal用法及代码示例
- Python SciPy linalg.eig_banded用法及代码示例
- Python SciPy linalg.eigvalsh用法及代码示例
- Python SciPy linalg.eigh_tridiagonal用法及代码示例
- Python SciPy linalg.eigh用法及代码示例
- Python SciPy linalg.eigs用法及代码示例
- Python SciPy linalg.eigvals用法及代码示例
- Python SciPy linalg.eigvals_banded用法及代码示例
- Python SciPy linalg.eigsh用法及代码示例
- Python SciPy linalg.expm用法及代码示例
- Python SciPy linalg.expm_multiply用法及代码示例
- Python SciPy linalg.expm_frechet用法及代码示例
- Python SciPy linalg.expm_cond用法及代码示例
- Python SciPy linalg.cdf2rdf用法及代码示例
- Python SciPy linalg.LaplacianNd用法及代码示例
- Python SciPy linalg.solve_circulant用法及代码示例
- Python SciPy linalg.polar用法及代码示例
- Python SciPy linalg.clarkson_woodruff_transform用法及代码示例
- Python SciPy linalg.rsf2csf用法及代码示例
- Python SciPy linalg.hessenberg用法及代码示例
- Python SciPy linalg.tril用法及代码示例
- Python SciPy linalg.triu用法及代码示例
- Python SciPy linalg.svd用法及代码示例
- Python SciPy linalg.ishermitian用法及代码示例
- Python SciPy linalg.invhilbert用法及代码示例
注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.linalg.eig。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。