Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
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'); 希望这可以帮助。 一种。 更多&回答... |
![]() |
![]() |