[問題] 解非線性矩陣聯立方程式

看板MATLAB作者 (水啦~)時間14年前 (2011/11/05 17:34), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
大家好, 一個問題請大家解惑,當有三個未知數又有三個獨立方程式理論上 是可以解出這三個未知數沒有問題的。但如果有三個未知矩陣,又 有三個矩陣形式的獨立方程式,理論上應該也是可以解的。因此我 有一個問題是 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)
文章代碼(AID): #1EjGCbDx (MATLAB)