【问题标题】:How to solve for eigen value of a matrix numerically如何数值求解矩阵的特征值
【发布时间】:2022-01-06 20:52:59
【问题描述】:

我有一个 3x3 矩阵;我有兴趣以数字方式查找特征值和相应的特征向量。我知道对于较小的系统,我们可以取行列式并求解行列式方程,从而得出特征值。但是我的矩阵大小很大;说1000x1000。为了说明问题,我选择了 3x3(这是实际问题的虚拟表示)。现在如何在python中计算特征值和特征向量。

import numpy as np
eg_matrix=np.array([[-2-x, -4, 2], [-2, 1-x, 2],[4,2,5-x]])

与我的问题类似的系统是; lambda_3 对应于特征值。

【问题讨论】:

  • 但是它的 (K-x^2M) 如何解决这个系统
  • x 在您的示例中未定义。该代码将给出 NameError。
  • 矩阵表示动态刚度矩阵。 x 是频率/特征值
  • 您的原始矩阵是否采用M - xI 的形式,例如您的示例中的np.array([[-2, -4, 2], [-2, 1, 2],[4,2,5]]) - x * np.eye(3)?如果是这样的话,也许你可以在math.stackexchange.com 上问这个问题。

标签: matrix scipy linear-algebra eigenvalue


【解决方案1】:

您只需将矩阵提供给特征值求解器

import numpy as np
A=np.array([[-2, -4, 2], [-2, 1, 2],[4,2,5]])
x, V = np.linalg.eig(A)
assert np.allclose(V @ np.diag(x), A @ V)

对于您的示例,它给出了x = array([-5., 3., 6.]) 插入表达式np.det(A - x * np.eye(len(A)))x 的每个元素都将接近于零。

例如

np.linalg.det(A - np.eye(len(A))*x[0])

4.849454171562702e-13

V 是特征向量矩阵。

【讨论】:

  • 实际上在我的矩阵中,未知的x 也存在于非对角元素中。这就是我不能使用内置函数来计算特征值和特征向量的原因
  • 因此您求解矩阵的常数部分的特征值以及添加x 的每个特征值。
  • det(A - (y+x) I) = 0 的解是 det((A - xI) - yI) = 0 的解
  • 对于像 3x3 这样的系统,它可以工作;但我的实际问题大小是 100x100。计算行列式真的很困难
  • 我不是建议你计算行列式,我只是说特征方程的结果。
猜你喜欢
  • 2017-09-27
  • 2018-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-27
  • 2012-08-08
相关资源
最近更新 更多