登录论坛

查看完整版本 : MATLAB中矩阵指数为W * diag(S)* W'的矩阵的本征分解


poster
2019-12-10, 20:48
W是一个又高又瘦的实值矩阵, diag(S)是一个对角矩阵,对角线上包含+1或-1 。我想要A = W * diag(S) * W'的特征分解,其中单引号表示换位。主要问题是A很大。由于A是对称的,秩不足的,并且实际上我知道A的最大秩(从W ),所以我认为我应该能够有效地做到这一点。知道如何处理吗?

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

当找到一个正交的U使得W * diag(S) * W' = U' * diag(Z) * U'看起来有望拥有一个简单的算法时,我在这里需要一些线性代数帮助。



回答:

我首先要执行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'); 希望这可以帮助。

一种。



更多&回答... (https://stackoverflow.com/questions/4178523)