求矩阵的问题

来源:百度知道 编辑:UC知道 时间:2024/05/14 13:14:32
A=[0 1 0;0 0 1;0 0 0];
B=[0 ;0;1;];
Q=[100 0 0;0 1 0; 0 0 1];
A'*P+2*P*A-P*B*B'*P+Q=0;
求解P 如何在matlab中实现?

没有发现好办法,只好用了一个笨办法,把问题解决了,P有20组解啊!

clc;clear;
A=[0 1 0;0 0 1;0 0 0]
B=[0 ;0;1]
Q=[100 0 0;0 1 0; 0 0 1]
P=sym('[a11 a12 a13;a21 a22 a23;a31 a32 a33]')
s=A'*P+2*P*A-P*B*B'*P+Q
%[a11,a12,a13,a21,a22,a23,a31,a32,a33] = solve(s,'a11,a12,a13,a21,a22,a23,a31,a32,a33')
[a11,a12,a13,a21,a22,a23,a31,a32,a33] = solve(s(1),s(2),s(3),s(4),s(5),s(6),s(7),s(8),s(9),'a11,a12,a13,a21,a22,a23,a31,a32,a33');
for k=1:length(a11)
PP(:,:,k)=eval([a11(k) a12(k) a13(k);a21(k) a22(k) a23(k);a31(k) a32(k) a33(k)]);
end

%test results
P=PP
for m=1:length(a11)
ss(:,:,m)=A'*P(:,:,m)+2*P(:,:,m)*A-P(:,:,m)*B*B'*P(:,:,m)+Q;
end
ss

结果:
A =

0 1 0
0 0 1
0 0 0

B =

0
0
1

Q =

100 0 0
0 1 0
0 0 1