求解方阵的普通或广义特征值问题。
求一般矩阵的特征值 w 和右或左特征向量:
参数:
a: (M, M) 数组
将计算其特征值和特征向量的复数或实数矩阵。
b: (M, M) 数组,可选
Right-hand 广义特征值问题中的边矩阵。默认为无,假设单位矩阵。
left: 布尔型,可选
是否计算并返回左特征向量。默认为假。
right: 布尔型,可选
是否计算并返回右特征向量。默认为真。
overwrite_a: 布尔型,可选
是否覆盖a;可以提高性能。默认为假。
overwrite_b: 布尔型,可选
是否覆盖b;可以提高性能。默认为假。
check_finite: 布尔型,可选
是否检查输入矩阵是否仅包含有限数。禁用可能会提高性能,但如果输入确实包含无穷大或 NaN,则可能会导致问题(崩溃、非终止)。
homogeneous_eigvals: 布尔型,可选
如果为 True,则返回齐次坐标中的特征值。在这种情况下,w 是一个 (2, M) 数组,默认为假。
返回:
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 时返回。
抛出:
LinAlg错误
如果特征值计算不收敛。
>>> 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]])