幂方法不适用于对称矩阵

时间:2018-11-26 08:30:14

标签: python linear-algebra eigenvalue

我在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?

1 个答案:

答案 0 :(得分:1)

我认为问题是用于初始化的向量x0 = [1,1] 如果您使用x0 = [-1,1]或[1,-1]来运行Power方法,那么如果容差为0.0001,则应该在3次迭代后获得最大特征值是3。