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

完毕!

感谢文章作者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值