作者emily8877560 (Emily)
看板MATLAB
标题Re: [问题]解非线性方程式.....三个函数
时间Tue Oct 15 19:12:41 2013
如果想要将这些系数 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