Re: [運算] 三元二次方程式 求解

看板MATLAB作者 (愛將 150)時間13年前 (2012/08/16 23:43), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
或許可以用gradient descent去做 但提供一個另外解法 n1-P1*(x(1)/((x(1)+x(2)+x(3))))-x(1);------(1) n2-P2*(x(2)/((x(1)+x(2)+x(3))))-x(2);------(2) n3-P3*(x(3)/((x(1)+x(2)+x(3))))-x(3);------(3) 化簡 (1) (2) (3) (n1-x(1))/P1=(x(1)/(x(1)+x(2)+x(3)))-------(4) (n2-x(2))/P2=(x(2)/(x(1)+x(2)+x(3)))-------(5) (n3-x(3))/P3=(x(3)/(x(1)+x(2)+x(3)))-------(6) (4)+(5)+(6) 可得 a1x(1)+a2x(2)+a3x(3)=Const Let [x(1) x(2) x(3)]=[c1 c2 c3]+u 向量1+ v 向量2 向量1 和向量2 和平面法向量垂直 代入 (7) (8) ((n1-x(1))/P1) (x(1)+x(2)+x(3))= x(1)-------(7) ((n2-x(2))/P2) (x(1)+x(2)+x(3))= x(2)-------(8) 變成u v 二元二次 應該就解的出來了 解出來你在看似不是有和剩下兩個方程式 ※ 引述《boffin (新的開始)》之銘言: : 參考了上面的例子後仍無法了解該如何進行 : 希望可以得到一些解答 : 我是用fsolve去解 因為2009找不到有關solve的說明 : 式子在F中 應該只需要前三個就可以求得解了 : 但同時需要符合下面兩個式子 : 此外所求得的解要為正值且 x(1) < n1 : x(2) < n2 : x(3) < n3 : 試了很多初始值代入都得不到合理的答案 : 請問該如何修改或是用什麼方式來求解 : 感謝!! : ============================================== : [x] = fsolve(@myfun,x0,options) : function F = myfun(x) : n1=7.1638e-04; : n2=4.1505e-09; : n3=5.3156e-12; : P1=3.1316e-02; : P2=9.7300e-03; : P2=7.4428e-03; : R=0.082; : T=298; : K2=1e5; : K3=5.7e3; : Va=1; : F = [ n1-P1*(x(1)/((x(1)+x(2)+x(3))))-x(1); : n2-P2*(x(2)/(x(1)+x(2)+x(3)))-x(2); : n3-P3*(x(3)/(x(1)+x(2)+x(3)))-x(3); : x(2)-(n2-x(2))*R*T/Va*K2*x(1)*18/1000; : x(3)-(n3-x(3))*R*T/Va*K3*x(1)*18/1000]; : end -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.240.22.251

08/16 23:57, , 1F
非常感謝
08/16 23:57, 1F
文章代碼(AID): #1GBHK8eV (MATLAB)
文章代碼(AID): #1GBHK8eV (MATLAB)