|
<>请问高手能帮忙解决一下这个问题吗?</P>
<>我用最小二乘法的非线性拟合2004年高教杯的C题----饮酒驾车的模型的相关代码时总是出错,本来才21个数据,残差居然可以达到五千多.真是好奇怪啊!不知道是什么原因.</P>
<>下面是两个程序段我是放在两个M文件里的.)</P>
<P>function ct=fordrink(arg,data)<BR> ct=arg(1).*(exp(-arg(2).*data)-exp(-arg(3).*data));</P>
<P>第二个M文件:</P>
<P>options = optimset('LevenbergMarquardt','on');<BR>t0=clock;<BR>para0=[120,-1.0,-1.5]; % Initial guess for nonlinear parameters<BR>xdata=[0.25 0.5 0.75 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0];<BR>ydata=[30.0 68.0 75.0 82.0 82.0 77.0 68.0 68.0 58.0 51.0 50.0 41.0 38.0 35.0 28.0 25.0 18.0 15.0 12.00 10.0 7.0 7.0 4.0];<BR>plot(xdata,ydata,'or');<BR>hold on;<BR>[para,res]=lsqcurvefit(@fordrink,para0,xdata,ydata,[],[],options)<BR>execution_time=etime(clock, t0);<BR>fprintf('Execution time: %g\n',execution_time);<BR>t=0:0.1:16;<BR>a=para(1); %吸收能力<BR>b=para(2); %代谢的能力<BR>fct=para(1)*(exp(para(2).*t)-exp(para(3).*t));<BR>plot(t,fct,'-b');<BR>hold off</P>
<P>急急急>>...>>>>></P> |
|