[討論] 利用MATLAB解偏微分聯立方程?已回收

看板MATLAB作者 (皮)時間14年前 (2011/05/26 23:26), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串1/2 (看更多)
小弟的問題有點煩雜..有錯請小力鞭 @_@ ---------------------------------問題敘述開始---------------------------------- 目的是要求出最佳參數解..老闆把原本我的目標函數以及限制式弄成一條式子,如下所示 H = (a1*w*(f^3)*tf)+(a2*delta_P*tf)+lumda*((Cout+(G/f))*(1-(exp(-(f/V)*tf))) +(Cinitial*(exp(-(f/V)*tf)))-800*10^-6); 其中 w = 0.0000000234175; coin = 5; a1 = 277.7778*coin; a2 = 1; Cout = 300*10^-6; Cinitial = 1000*10^-6; V = 15*13*3; people = 25; AP = 0.023/3600; G = AP*people; p = 0.3; money = 0.0789; delta_P = p*people*money; 然後老闆希望我對這個式子中的 "tf" "F" "lumda" 做偏微分,並且讓它們等於0,如下 dH/dtf = 0 dH/dF = 0 dH/dlumda 最後再將此三項進行解聯立方程,最後可以得到 "tf" "F" "lumda" 各為多少 我先利用以下這段指令去對H做偏微分 syms H tf lumda f w delta_P Cout G V Cinitial a1 a2 H = (a1*w*(f^3)*tf)+(a2*delta_P*tf)+lumda*((Cout+(G/f))*(1-(exp(-(f/V)*tf))) +(Cinitial*(exp(-(f/V)*tf)))-800*10^-6); H_tf = diff(H,tf) H_lumda = diff(H,lumda) H_f = diff(H,f) pretty(H_f) pretty(H_lumda) pretty(H_tf) 最後得到三個可解聯立方程的聯立方程組,如下 H_tf = a1*w*f^3+a2*delta_P+lamda*((Cout+G/f)*f/V*exp(-f/V*tf) -Cinitial*f/V*exp(-f/V*tf)) = 0 H_f = 3*a1*w*f^2*tf+lamda*(-G/f^2*(1-exp(-f/V*tf)) +(Cout+G/f)/V*tf*exp(-f/V*tf)-Cinitial/V*tf*exp(-f/V*tf)) = 0 H_lamda = (Cout+G/f)*(1-exp(-f/V*tf))+Cinitial*exp(-f/V*tf)-1/1250 = 0 ------------------------------------------------------------------------------ 老闆說..這樣就可以解出一組最佳參數解.. 但是我的問題來了,我想請問板上的高手..這樣子的非線性聯立方程組是不是沒有辦法 利用solve去解? (我想應該也是沒辦法..) 如果要解這種問題又該用什麼方法解? 牛頓拉佛森? 牛頓法? 請板上的高手救命~~~ ~_~" -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 120.126.8.117

05/27 15:38, , 1F
看看 Partial Differential Equation Toolbox 吧
05/27 15:38, 1F
文章代碼(AID): #1Dtd4pnj (MATLAB)
文章代碼(AID): #1Dtd4pnj (MATLAB)