如何以对角矩阵的形式记录矩阵的所有特征值?
How to record all eigenvalues of a matrix in form of a diagonal matrix?
我在 Python 中使用了大小为 64*64 的矩阵 A
的 svd,如下所示。
U,D,V=svd(A)
现在,D
是 A
的所有特征值的数组。如何将 D
中的所有值重写为对角矩阵?比如如果D=[d1,d2,d3,d4]
,怎么有
D_new=[[d1,0,0,0],[0,d2,0,0],[0,0,0,d3],[0,0,0,d4]]?
根据特征值的长度创建一个零空向量,然后在遍历列表时分配位置,附加以创建对角矩阵
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']
使用 numpy :
import numpy as np
d = [d1,d2,d3]
diagonal = np.diag(d)
我在 Python 中使用了大小为 64*64 的矩阵 A
的 svd,如下所示。
U,D,V=svd(A)
现在,D
是 A
的所有特征值的数组。如何将 D
中的所有值重写为对角矩阵?比如如果D=[d1,d2,d3,d4]
,怎么有
D_new=[[d1,0,0,0],[0,d2,0,0],[0,0,0,d3],[0,0,0,d4]]?
根据特征值的长度创建一个零空向量,然后在遍历列表时分配位置,附加以创建对角矩阵
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']
使用 numpy :
import numpy as np
d = [d1,d2,d3]
diagonal = np.diag(d)