W 是一个高大而又瘦真正的价值矩阵, diag(S) 是对角线矩阵由 +1 或者 -1 在对角线上。我想要特征的分解 A = W * diag(S) * W' 单引号表示换位。主要问题是 A 很大。自从 A 是对称的,排名不足,我实际上知道 A (从 W),我认为我应该能够有效地做到这一点。有什么想法如何处理?

我最终的目标是计算矩阵指数 A 不使用matlab的 expm 对于大型矩阵来说,这非常慢,并且不利用排名不足。如果 A = U * diag(Z) * U' 是特征分解, exp(A) = U * diag(exp(Z)) * U'.

在找到正交的同时 U 这样 W * diag(S) * W' = U' * diag(Z) * U' 看起来很容易拥有一种简单的算法,我在这里需要一些线性代数帮助。

有帮助吗?

解决方案

我首先执行所谓的“薄” QR分解W,然后计算特征值分解 R*diag(S)*R', ,然后使用它来计算A的EIG分解。

N = 10;
n=3;
S = 2*(rand(1,n)>0.5)-1;
W = rand(N,n);

[Q,R] = qr(W,0);
[V,D] = eig(R*diag(S)*R');

%this is the non rank-deficient part of eig(W*diag(S)*W')
D_A = D;
V_A = Q*V;

%compare with
[V_full,D_full] = eig(W*diag(S)*W');

希望这可以帮助。

一个。

其他提示

MATLAB实际上具有用于检索最大(或最小)的特征值和向量的实现。利用 eigs(A,k) 得到 k 最大。

为了获得最大的 电力迭代 方法或更好的瑞利商迭代。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top