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

看板MATLAB作者 (rox)時間14年前 (2011/05/27 19:31), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《bawpee (皮)》之銘言: : 小弟的問題有點煩雜..有錯請小力鞭 @_@ : 然後老闆希望我對這個式子中的 "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去解? (我想應該也是沒辦法..) : 如果要解這種問題又該用什麼方法解? 牛頓拉佛森? 牛頓法? : 請板上的高手救命~~~ ~_~" 照你問題的解法屬於optimal control 的基本解法 非線性聯立式可以用fsolve得到數值解 (Newton-Raphson method) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.118.21.56

05/28 03:55, , 1F
嗯嗯 感謝您 我會試試看 XD
05/28 03:55, 1F
文章代碼(AID): #1Dtujx74 (MATLAB)
文章代碼(AID): #1Dtujx74 (MATLAB)