24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1059  |  回复: 16
当前主题已经存档。

limengiiii

银虫 (小有名气)

[交流] 【求助】MATLAB解矩阵方程

请教一个Matlab关于矩阵方程的问题
小弟近日一直在研究一个矩阵方程的MATLAB求解问题,百思不得其解,还请给位给点指示,问题描述如下:
方程形式为:(A+B*K)Z(A+B*K)'+(C+D*K)Z(C+D*K)'=a*Z
其中,A,B,C,D,K均为已知矩阵,Z为对称矩阵,a为一标量,目的是要求a的值
曾尝试用克罗内克积的形式来变换,但是处理不了对称矩阵的问题,还请各位多多指点!!!

[ Last edited by bslt on 2009-6-23 at 14:33 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

vflag

木虫 (正式写手)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
bslt(金币+1,VIP+0):感谢交流。。。 6-29 19:52
Z如果也是变量的话可能不止一组解,设出来Z的上对角线元素,用循环一个一个套吧。
2楼2009-06-22 22:21:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

vflag

木虫 (正式写手)


小木虫(金币+0.5):给个红包,谢谢回帖交流
搞定没?搞定再说下哈。呵呵
3楼2009-06-23 09:37:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

limengiiii

银虫 (小有名气)

没搞定,的确Z是可以任意解的,关键是求标量a的值,就像解普通矩阵方程似的,AX=b,要求X为非零解,必须要使得A的行列式为零,这个维数较低时可以用手算出来,但维数太高时必须用MATLAB来解答,可惜...
4楼2009-06-23 10:01:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

limengiiii

银虫 (小有名气)

虫子们来帮个忙啊
5楼2009-06-24 20:39:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

aimit

木虫 (职业作家)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
bslt(金币+1,VIP+0):感谢交流。。。 6-29 19:52
最后能写成Mz = a*z,其中z为Z的向量化,即z = vec(Z)
因此,a为M的特征值,z为对应的特征向量。
研究方向机器学习及其应用,欢迎交流讨论。
6楼2009-06-27 19:40:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

limengiiii

银虫 (小有名气)

是的,但是关键的一步是Z是对称的,所以这个vec(Z)是一个特殊的情况,比如说Z=[1,2;1,1],vec(Z)=(1,2,1,1)',但是当Z=[1,2;2,1]时,我们只需令VEC(Z)=[1,2,1]即能表示Z的信息,如何在MATLAB中提取这个信息是我没想明白的,还望赐教!
7楼2009-06-28 15:50:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

aimit

木虫 (职业作家)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
bslt(金币+1,VIP+0):感谢交流。。。 7-5 09:59
M是已知的矩阵,而且还必须满足Mz = a*z,因此在M的特征向量中,如果由特征向量恢复的矩阵不是对称的,则无解。
研究方向机器学习及其应用,欢迎交流讨论。
8楼2009-06-29 21:48:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

limengiiii

银虫 (小有名气)

你说的的确正确,但我想你对我问题的理解有点儿小的偏差,要是不嫌麻烦的话,您可以用手算一下我提出的那个方程,2维的即可,(Z为对称,Z=[Z11,Z12;Z12,Z22])
9楼2009-06-30 09:15:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

string121

金虫 (小有名气)

★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
bslt(金币+2,VIP+0):感谢交流,欢迎常来。 8-7 19:12
bslt(金币+1,VIP+0):赞一个! 8-7 19:13
矩阵都是dim*dim方阵时Matlab code:

clc;
clear;
dim=10;
A=rand(dim);
B=rand(dim);
C=rand(dim);
D=rand(dim);
K=rand(dim);
S1=A+B*K;
S2=C+D*K;
%z不对称  
for j=1:dim
    for i=1:dim
        for j1=1:dim
            for i1=1:dim
                I=(j-1)*dim+i;
                J=(j1-1)*dim+i1;
                M1(I,J)=S1(i,i1)*S1(j,j1)+ S2(i,i1)*S2(j,j1);
            end
        end
    end
end
%z对称
M2=M1;
col=[];
for j=1:dim
    for i=1:j-1
        M2(:,(i-1)*dim+j)=M1(:,(i-1)*dim+j)+M1(:,(j-1)*dim+i);
        col=[col (j-1)*dim+i];
    end
end
M2(:,col)=[];
M3=M2;
row=[];
for j=1:dim
    for i=1:j-1
        M3((i-1)*dim+j,=(M2((i-1)*dim+j,+M2((j-1)*dim+i,)/2;
        row=[row (j-1)*dim+i];
    end
end
M3(row,=[];
a=eig(M3);
disp('a=')
disp(a)


M3 就是在z对称时7楼所说的的M. a是你要的结果.
没推出向量表示,所以当dim很大时比较慢, 如要做大型问题,
将所有for循环部分改成mex文件.  你算几个特殊的试试对不对
10楼2009-08-04 20:47:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 limengiiii 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见