Re: [問題]解非線性方程式.....三個函數

看板MATLAB作者 (newworld)時間14年前 (2011/12/08 01:24), 編輯推噓2(201)
留言3則, 3人參與, 最新討論串2/4 (看更多)
此題可以用fsolve來解喔~~ 先設函數: function y=prac1(x) y=zeros(1,3); y(1) = x(1)*(1-x(2)*exp(-2600/x(3))-exp(-2600/x(3))... +x(2)*exp(-3000/x(3))*exp(137.6/x(3)))-873; y(2) = x(1)*(1-x(2)*exp(-1600/x(3))-exp(-1600/x(3))... +x(2)*exp(-3000/x(3))*exp(137.6/x(3)))-555; y(3) = x(1)*(1-x(2)*exp(-800/x(3))-exp(-800/x(3))... +x(2)*exp(-3000/x(3))*exp(137.6/x(3)))-91; 接著來解~ clear clc x01=[1,1,1]; a1=fsolve('prac1',x01) y1=prac1(a1) x02=[100,100,100]; a2=fsolve('prac1',x02) y2=prac1(a2) x03=[10000,10000,10000]; a3=fsolve('prac1',x03) y3=prac1(a3) % fsolve的用法是 fsolve('待解函數',初始值) (*初始值可任意代 但最好盡量靠近答案(mo,f,T1) 就是要你先猜大概的(mo,f,T1) 若與真實答案的級數差太多 則可能找不到你要的解) x01,x02,x03就是我設的三種初始值 而a1,a2,a3就是各解出的(mo,f,T1)值 y1,y2,y3為各代回function 看這三個方程式的值是否都等於0 來判斷解出的答案是否是我們要的 若與0差距太多 則可能是初始值設的離實際值太遠 讓我們來看看結果如何吧~~ a1 = 506.3333 1.0000 1.0000 y1 = -366.6667 -48.6667 415.3333 ______________________________________ a2 = 1.0e+003 * 1.0833 0.0008 1.4808 y2 = 1.0e-010 * -0.1489 0.4025 0.6632 _____________________________________ a3 = 1.0e+003 * 1.0833 0.0008 1.4808 y3 = 1.0e-010 * 0.5537 0.5082 -0.5024 ______________________________________ 可看出a2和a3一樣 而y2和y3也確實趨近於0 至於a1的值和a2,a3差蠻多的 但也有可能是另一組解 不過y1就不趨近於0了 可見a1這組不是我們要的答案! 所以 此題之 mo=1083.3 f=0.8 T1=1480.8 呼~~~ 解完囉~~~~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.169.14.166

12/08 01:27, , 1F
哇靠....完全正確!!!高手~~~請受小弟一拜!!
12/08 01:27, 1F

12/08 01:35, , 2F
一起加油吧~ 在matlab上我也是個新手 要學的還好多呢!!
12/08 01:35, 2F

12/08 04:27, , 3F
用心推,所以用symbolic解真的很慢。
12/08 04:27, 3F
文章代碼(AID): #1Etw59r5 (MATLAB)
討論串 (同標題文章)
文章代碼(AID): #1Etw59r5 (MATLAB)