幂法不适用于对称矩阵

Power Method doesn't work for symmetric matrices

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

我认为问题出在你用于初始化的向量 x0 = [1,1] 如果您 运行 具有 x0 = [-1, 1] 或 [1, -1] 的 Power 方法,如果您的公差为 0.0001

,那么在 3 次迭代后,您应该得到最大的特征值为 3