【问题标题】:Diagonalizing Matrix A without using any libraries在不使用任何库的情况下对矩阵 A 进行对角化
【发布时间】:2022-07-01 23:19:55
【问题描述】:

如何使用双嵌套循环创建由三个特征向量列组成的矩阵 P。

from sympy.matrices import Matrix, zeros
from sympy import pprint

A = Matrix([[6,2,6], [2,6,6], [6,6,2]])
ew_A = A.eigenvals()
ev_A = A.eigenvects()
pprint(ew_A)
pprint(ev_A)


# Matrix P
(n,m) = A.shape 
P = TODO  # Initialising

# "filling Matrix P with ... 
for i in TODO: 
    for j in TODO:
        P[:,i+j] = TODO
    
## Calculating Diagonalmatrix
D= P**-1*P*A

非常感谢提前

【问题讨论】:

  • 请修改您的帖子,使其不包含images of code。 (改为文本格式的邮政编码。)

标签: python math matrix diagonal


【解决方案1】:

求矩阵的特征值,或将其对角化,等同于求多项式的零点,其次数等于矩阵的大小。因此,在您的情况下,对 3x3 矩阵进行对角化等效于找到 3 次多项式的零点。也许有一个简单的算法可以解决这个问题,但数学家总是选择一般情况。

在一般情况下,您可以证明没有找到 5 次或更高次多项式的零点的终止算法(即所谓的伽罗瓦理论),因此也没有简单的“三重循环”算法大小为 5x5 及更大的矩阵。特征值软件通过迭代逼近算法工作,因此这是围绕一些有限循环的“while”循环。

这意味着您的问题在一般情况下没有答案。在 3x3 的情况下也许可以,但即使这样也不会非常简单。

【讨论】:

  • 感谢您的回答!如何在不使用双循环的情况下从特征向量创建矩阵 P(因为它很复杂)?
  • 读一本书。有很多算法。我相信“隐式移位 QR”算法是最好的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-01
  • 1970-01-01
  • 2018-03-02
  • 1970-01-01
  • 2020-05-12
  • 2013-10-11
  • 1970-01-01
相关资源
最近更新 更多