【问题标题】:Power Method doesn't work for symmetric matrices幂法不适用于对称矩阵
【发布时间】:2018-11-26 08:30:13
【问题描述】:

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

【问题讨论】:

  • 您为 x 选择的初始值是特征值为 1 的特征向量,因此在完美算术中,您的迭代将始终停留在该特征空间中。这是幂法的问题之一。

标签: python linear-algebra eigenvalue


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-05
    • 1970-01-01
    • 2015-12-09
    • 2013-09-24
    • 1970-01-01
    • 2013-12-11
    • 2016-10-05
    • 2020-05-08
    相关资源
    最近更新 更多