2023.3.16
#和积法求最大特征向量及最大特征值
import numpy as np
#输入矩阵
A = np.array([[1,1,3, 1/5,3,1/3,3],
[2,1/3,1,1/3,1/2,1/2,3],
[3,5,3,1,4,3,5],
[4,1/3,2,1/4,1,1/3,3],
[5,3,2,1/3,3,1,5],
[6,1/3,1/3,1/5,1/3,1/5,1],
[7,1/7,1/5,1/9,1/5,1/6,1/3]
])
‘’‘A = np.array([[1,3,1/3],
[1/3,1,1/5],
[3,5,1]
])’‘’
‘’‘A = np.array([
[1,1,1,4,1,1/2],
[1,1,2,4,1,1/2],
[1,1/2,1,5,3,1/2],
[1/4,1/4,1/5,1,1/3,1/3],
[1,1,1/3,3,1,1],
[2,2,2,3,1,1]
])’‘’
#按列相加
axis_sum1 = A.sum(axis=0)
i = 0
j = 0
B = np.zeros((len(A),len(A)))
#按列归一化
for i in range(0,len(axis_sum1)):
for j in range(0,len(axis_sum1)):
B[j][i] = A[j][i]/axis_sum1[i]
#归一化矩阵行相加
axis_sum2 = B.sum(axis=1)
#归一矩阵和
sum1 = B.sum()
#归一矩阵求最大特征向量
C = axis_sum2/sum1
C = np.around(
C, # numpy数组或列表
decimals=3 # 保留几位小数
)
print(“最大特征向量:”,C)
#求AC并转置
D = np.dot(A,C)
D = D.T
D = np.around(
D, # numpy数组或列表
decimals=3 # 保留几位小数
)
sum2 = 0
i = 0
#求最大特征值
for i in range(0,len(D)):
sum2 += D[i]/C[i]
x = sum2/len(D)
print(“最大特征值:”,x)