Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
我正在从教科书上处理MatLab问题,其中一个问题要求我在MATLAB中使用eig命令,计算矩阵V和D,使A = V * D * inv(V)。知道V的第一列对应于第一特征值D(1,1)等等,我需要对D的对角线条目进行重新排序,以使实部沿对角线增加,并相应地对V的列进行重新排序,以便A = V * D * inv(V)仍然成立。到目前为止,这是我写的内容:
r = RandStream('mt19937ar','Seed',1234); A = r.randn(10,10)+1j*r.randn(10,10); [V,D] = eig(A); for tt = 1:9 if (real(D(tt,tt)) > real(D(tt+1,tt+1))) temp = D(tt,tt); D(tt,tt) = D(tt+1,tt+1); D(tt+1,tt+1) = temp; tempV = V(1,tt); V(1,tt) = V(1,tt+1); V(1,tt+1) = tempV; if (A == V*D*inv(V)) break end end end 当我测试它时,D的对角元素与原始顺序没有变化,我知道这可能是由于我设置的条件引起的,但是我不确定是什么原因导致它不执行任何操作。我还认为重新排序对角线元素和相应特征向量的方式可能存在问题。感谢您的任何反馈或建议,谢谢。 更多&回答... |
![]() |
![]() |