Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
 
 
主题工具 显示模式
旧 2019-12-10, 20:48   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 MATLAB中矩阵指数为W * diag(S)* W'的矩阵的本征分解

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'); 希望这可以帮助。

一种。



更多&回答...
poster 当前离线   回复时引用此帖
 


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 01:13


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.