我在Python 3.7中实现了一个简单的幂方法,该方法应用于计算给定矩阵的最大特征值:
def power(A, x0, num_iter):
""" A - matrix, x0 - initial approximation of eigenvector,
num_iter - number of iteration"""
x = x0
l = x.T @ A @ x
for i in range(num_iter):
y = A @ x
x = y / np.linalg.norm(y)
l = x.T @ (A @ x)
return l
当我尝试计算具有两个特征值3和1的简单对称矩阵的特征值时:
test_matrix = numpy.array([[2, -1],[-1, 2]])
我知道了
In1: test_matrix, np.array([1, 1]), 100
Out1: 1
在这种情况下,为什么我的算法不能收敛到最大特征值,即3?
答案 0 :(得分:1)
我认为问题是用于初始化的向量x0 = [1,1] 如果您使用x0 = [-1,1]或[1,-1]来运行Power方法,那么如果容差为0.0001,则应该在3次迭代后获得最大特征值是3。