2

W是一个又高又瘦的实值矩阵,diag(S)是一个对角矩阵,由对角线组成+1-1在对角线上。A = W * diag(S) * W'我想要单引号表示转置的特征分解。主要问题是它A相当大。由于A是对称的,秩不足,而且我实际上知道A(from W) 的最大秩,我认为我应该能够有效地做到这一点。知道如何解决这个问题吗?

A我的最终目标是在不使用 MATLAB 的情况下计算矩阵指数,expm这对于大矩阵来说非常慢,并且没有利用秩不足。如果A = U * diag(Z) * U'是特征分解,exp(A) = U * diag(exp(Z)) * U'

在找到一个看起来很有希望有一个简单算法的正交UW * diag(S) * W' = U' * diag(Z) * U',我需要一些线性代数的帮助。

4

2 回答 2

4

我首先对 W 执行所谓的“薄”QR 分解,然后计算 的特征值分解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');

希望这可以帮助。

一种。

于 2010-11-14T22:12:57.087 回答
2

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

为了获得最大的唯一值,可以使用幂迭代法,或者更好的瑞利商迭代法。

于 2010-11-14T19:20:03.900 回答