matlab实对称矩阵对角化,基于Matlab的实对称矩阵对角化

假设两个实对称矩阵A和B,如果存在一个可逆的矩阵X, XAX'=B,已知A和B,知道怎么用matlab求X?

本例中数据如下:

A=[0.287402 0 0

0 0.483209 0

0 0 0.000025];

B=[0.287402 -0.028039 -0.0000727

-0.028039 0.483209 0.001299

-0.0000727 0.001299 0.000025];

下面是对一个对称矩阵求转换后的对角矩阵的matlab程序

程序来自

《基于Matlab的实对称矩阵对角化》一文,作者 计文军等

其中a的对称矩阵,d是对角化后的矩阵,p是相应的合同变换,满足pTap=d

function [p,d]=juzheng(a)

[m,n]=size(a);

a=[a eye(n)]';

for k=1:n

if a(k,k)==0

for r=(k+1):n

if a(k,r)~=0

for i=k:n

a(k,i)=a(k,i)+a(r,i);

end

for i=k:2*n

a(i,k)=a(i,k)+a(i,r);

end

break

end

end

end

for i=k+1:n

l=a(i,k)/a(k,k);

for j=k:n

a(i,j)=a(i,j)-l*a(k,j);

end

for j=k:2*n

a(j,i)=a(j,i)-l*a(j,k);

end

end

end

p=a(n+1:2*n,1:n);

d=a(1:n,1:n);

return

下面在脚本文件中调用juzheng.m函数

A=[0.287402 0 0

0 0.483209 0

0 0 0.000025];

B=[0.287402 -0.028039 -0.0000727

-0.028039 0.483209 0.001299

-0.0000727 0.001299 0.000025];

[p,d]=juzheng(B);

X=(inv(p))';% 这一步是将计算的结果转成本例中我所需要的形式

%你可以验证X*A*X'=B

完毕!

感谢文章作者

参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:1024 设计师:我叫白小胖 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值