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

看板MATLAB作者 (Emily)時間12年前 (2013/10/15 19:12), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/4 (看更多)
如果想要將這些係數 a=-2600,b=-1600,c=-1800來做input的輸入應該要怎麼做修正 我原本以為就將y = pracl(x,a,b,c) 但是都出現 錯誤訊息 即使我的workspace已經存有a,b,c Not enough input arguments. Error in fsolve (line 241) fuser = feval(funfcn{3},x,varargin{:}); Caused by: Failure in initial user-supplied objective function evaluation. FSOLVE cannot continue. ※ 引述《qqqidqqq (newworld)》之銘言: : 此題可以用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差距太多 則可能是初始值設的離實際值太遠 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 141.35.40.137
文章代碼(AID): #1INICiCj (MATLAB)
討論串 (同標題文章)
文章代碼(AID): #1INICiCj (MATLAB)