-2

我可以在 Python 中找到矩阵的特征向量,如下所示:

from numpy import linalg as LA
w, v = LA.eig(np.diag((1, 2, 3)))

但是如何为一个 100*200 的较大矩阵找到最大的两个特征向量呢?

4

1 回答 1

1

没有为非方阵定义特征值分解。最接近的操作是单值分解。非方阵的 SVD 和 EIG 是相关的,因为单个值是矩阵本身的转置的特征值的平方根。

B = A' * A
SVD(A) * SVD(A) ~= EIG(B)

因此,您的问题的一个潜在答案是:

import numpy as np
A = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
B = np.matmul(np.transpose(A), A)
u,s,v = np.linalg.svd(A)
V, D = np.linalg.eig(B)
print(f'Compare s*s to V {s*s - V}')

虽然s不是直接的,A但它的特征值有些相关。

于 2021-09-17T13:22:14.670 回答