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

看板MATLAB作者 (外派越南工作者)時間12年前 (2013/11/13 00:19), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/4 (看更多)
※ 引述《emily8877560 (Emily)》之銘言: : 如果想要將這些係數 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差距太多 則可能是初始值設的離實際值太遠 ---------------------------------------- function pttex138 format long g global a b c a=-2600; b=-1600; c=-1800; F = zeros(3,3) options = [1 1 1;100 100 100;10000 10000 10000;] for n = 1:3 F(n,:) = fsolve(@pracl,options(n,:)); end F function y=pracl(x) global a b c a1 = a; b1 = b; c1 = c; y=zeros(1,3); y(1) =x(1)*(1-x(2)*exp(a1/x(3))-exp(a1/x(3))... +x(2)*exp(-3000/x(3))*exp(137.6/x(3)))-873; y(2) =x(1)*(1-x(2)*exp(b1/x(3))-exp(b1/x(3))... +x(2)*exp(-3000/x(3))*exp(137.6/x(3)))-555; y(3) =x(1)*(1-x(2)*exp(c1/x(3))-exp(c1/x(3))... +x(2)*exp(-3000/x(3))*exp(137.6/x(3)))-91; ------------------------------------------------------- 解答 F = 506.333333333333 1 1 1748.23867022159 0.191247951354778 6174.43739540953 240834.8269029 -0.765130280948859 1582530.40003226 不過解出來不太是正確解,畢竟一堆指數相加又相乘 建議還是圖形化出來看一下 -- 數值方法 : 求根值 . ODE系統 . DDE系統. DAE系統. PDE系統 非線性聯立系統. 化工程序控制系統 . 力學系統 RLC 系統 . MCK 系統 . Laplace 轉換 系統 其他 : 工程數學 .微積分.化工程序.輸送現象.化工程序線性控制 Simulator . MATLAB tool box . Simulink . FORTRAN 不會影像處理.....囧> -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 113.163.21.45
文章代碼(AID): #1IWbJxCB (MATLAB)
討論串 (同標題文章)
文章代碼(AID): #1IWbJxCB (MATLAB)