直接看下面的代码就行啦!

import numpy as np

#输入矩阵
A = np.array([[1, 1/2, 4, 3, 3],
              [2, 1, 7, 5, 5],
              [1/4, 1/7, 1, 1/2, 1/3],
              [1/3, 1/5, 2, 1, 1],
              [1/3, 1/5, 3, 1, 1]])

#求解特征值即特征向量
lamda = np.linalg.eig(A)

for i in range(len(lamda[0])):
    print('特征值:{0}\n对应的特征向量:\n{1}\n'.format(lamda[0][i], np.transpose([lamda[1][:,i]])))

index = np.argmax(lamda[0])
lamda_max = np.real(lamda[0][index])
vector = lamda[1][:,index]

vector_final = np.transpose((np.real(vector)))

print('最大特征值为:{0}\n对应的特征向量:\n{1}'.format(lamda_max, vector_final))

输出如下:

特征值:(5.072084408570216+0j)
对应的特征向量:
[[-0.46582183+0.j]
 [-0.84086331+0.j]
 [-0.09509743+0.j]
 [-0.17329948+0.j]
 [-0.19204866+0.j]]

特征值:(-0.03070462349371196+0.6008274290268424j)
对应的特征向量:
[[ 0.44186009+0.27105866j]
 [ 0.77734237+0.j        ]
 [-0.02000217-0.15570733j]
 [-0.02610008+0.07828144j]
 [-0.28288299+0.12469508j]]

特征值:(-0.03070462349371196-0.6008274290268424j)
对应的特征向量:
[[ 0.44186009-0.27105866j]
 [ 0.77734237-0.j        ]
 [-0.02000217+0.15570733j]
 [-0.02610008-0.07828144j]
 [-0.28288299-0.12469508j]]

特征值:(-0.005337580791396011+0.05475205961539484j)
对应的特征向量:
[[-0.36716196+0.2414553j ]
 [ 0.85752776+0.j        ]
 [-0.0190312 +0.00635723j]
 [-0.07374757-0.21459801j]
 [ 0.07483506+0.11850604j]]

特征值:(-0.005337580791396011-0.05475205961539484j)
对应的特征向量:
[[-0.36716196-0.2414553j ]
 [ 0.85752776-0.j        ]
 [-0.0190312 -0.00635723j]
 [-0.07374757+0.21459801j]
 [ 0.07483506-0.11850604j]]

最大特征值为:5.072084408570216
对应的特征向量:
[-0.46582183 -0.84086331 -0.09509743 -0.17329948 -0.19204866]

进程已结束,退出代码为 0

给个一键三连呗,至少点个赞再走吧!

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐