【问题标题】:How to record all eigenvalues of a matrix in form of a diagonal matrix?如何以对角矩阵的形式记录矩阵的所有特征值?
【发布时间】:2021-11-15 10:06:29
【问题描述】:

我在 Python 中使用了大小为 64*64 的矩阵 A 的 svd,如下所示。

U,D,V=svd(A)

现在,DA 的所有特征值的数组。如何将D 中的所有值重写为对角矩阵?比如D=[d1,d2,d3,d4],怎么有

D_new=[[d1,0,0,0],[0,d2,0,0],[0,0,0,d3],[0,0,0,d4]]?

【问题讨论】:

标签: python matrix svd


【解决方案1】:

使用 numpy :

import numpy as np 
d = [d1,d2,d3]
diagonal = np.diag(d)

【讨论】:

  • 谢谢!请问如何在Python中计算diagonal^(-1/2)
  • @quasAliki 在单独的帖子中提出新问题,而不是在 cmets 中。但是如果你做一些简单的搜索,你会找到你的answer
  • @Woodford 好吧,这似乎不适用于 (-1/2)。
  • 是的,您可以,请执行以下操作:diagonal**(-1/2)。但是,它不会起作用,因为您将拥有 1/0,它将被计算为 inf (infinity)
  • 但是,这是一个解决方案:是 D = np.array(d) 然后是 D**(-1/2) 然后是 diagonal = np.diag(D)
【解决方案2】:

根据特征值的长度创建一个零的空向量,然后在遍历列表时分配位置,追加以创建对角矩阵

d=['d1','d2','d3','d4']
dnew=[]

for i,x in enumerate(d):
    vec=[0 for x in d]
    vec[i]=d[i]
    dnew.append(vec)

for x in dnew:
    print(x)  


['d1', 0, 0, 0]
[0, 'd2', 0, 0]
[0, 0, 'd3', 0]
[0, 0, 0, 'd4']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-29
    相关资源
    最近更新 更多