作者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)