作者Haha10101 (水啦~)
看板MATLAB
标题[问题]解非线性矩阵联立方程式
时间Sat Nov 5 17:34:26 2011
大家好,
一个问题请大家解惑,当有三个未知数又有三个独立方程式理论上
是可以解出这三个未知数没有问题的。但如果有三个未知矩阵,又
有三个矩阵形式的独立方程式,理论上应该也是可以解的。因此我
有一个问题是
F1(x,y,z)=0
F2(x,y,z)=0
F3(x,y,z)=0
x=1*4矩阵
y,z皆为5*5矩阵
F1,F2皆为Lyapunov equation
我希望可以同时去解三个未知数x,y,z
目前,找到matlab的optimization toolbox里是有fsolver这个
函式可以用,但似乎因为矩阵维度关系使用fsolver会有很大的
问题,因为我必须令一个变数K=[x;y;z]去解<----这里很奇怪!!
试问这种问题有其他办法可以解吗?
亦或是这种问题是无法同时解出最佳化的解呢?
感谢!
程式码
1.m
-----
% size(P)=5*5; First unknowns
% size(S)=5*5; Second unknowns
% size(K)=1*4; Third unknows
% assume X=[K;P;S] --> 这里似乎无法编辑成'正常'矩阵的样子
function F = equation_solver(X)
A=[-1.01887 0.90506 -0.00215 0 0;0.82225 -1.07741 -0.17555 0 0;0 0 -20.2 0 0;10 0 0 -10 0;-16.26 -0.9788 0.04852 0 0];
B=[0;0;20.2;0;0];
C=[0 0 0 57.2958 0;0 57.2958 0 0 0;-16.26 -0.9788 0.04842 0 0;0 0 0 0 1];
H=[16.26 0.9788 -0.04852 0 0];
Q=H'*H;
X=[K;P;S];
R=1;
F = [(A-B*K*C)'*P+P*(A-B*K*C)+Q+C'*K'*R*K*C;
(A-B*K*C)*S+S*(A-B*K*C)'+(-inv(A-B*K*C-eye(5,5))*(E-B*K*F)*r)*(-inv(A-B*K*C-eye(5,5))*(E-B*K*F)*r)';
R*K*C*S*C'-B'*P*S*C'+B'*(inv(A-B*K*C))'*(P+H'*V*H)*x_bar*y_bar'-B'*(inv(A-B*K*C))'*H'*V*r*y_bar'];
F的表示也因为X的关系无法套入linear indexing的格式中
2.m
-----
X0 = [0 0 0 0;1 1 1 1 1;1 1 1 1 1]; % Make a starting guess at the solution
options=optimset('Display','iter'); % Option to display output
[x,fval] = fsolve(@equation_solver,X0,options) % Call solver
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.116.202.99
※ 编辑: Haha10101 来自: 140.116.202.99 (11/05 19:43)
※ 编辑: Haha10101 来自: 140.116.202.99 (11/05 19:50)