- 老师答疑区
- 帖子详情
老师参与
关于非线性拟合设置不显示中间结果
澄碧钓徒
发表于2018年04月09日
<p>非线性方程求解跟最优化问题不显示中间结果都是调用optimset函数,将Display选项设为off,怎么以同样的方法用在lsqcurvefit和lsqnonlin的命令中就报错了?<br ></p><p>>> f=@(x,tdata)x(1)+x(2)*exp(-0.02*x(3)*tdata);</p><p>tdata=100:100:1000</p><p>cdata=1e-03*[4.54,4.99,5.35,5.65,5.90,6.10,6.26,6.39,6.50,6.59];</p><p>x0=[0.2,0.05,0.05];</p><p>option=optimset('Display','off');</p><p>x=lsqcurvefit(f,x0,tdata,cdata,option)</p><p><br ></p><p>tdata =</p><p> 100 200 300 400 500 600 700 800 900 1000</p><p>错误使用 lsqcurvefit (line 185)</p><p>LSQCURVEFIT requires the following inputs to be of data type double: 'LB'.</p><p> </p><p>>> f=@(x)x(1)+x(2)*exp(-0.02*x(3)*tdata)-cdata</p><p>tdata=100:100:1000</p><p>cdata=1e-03*[4.54,4.99,5.35,5.65,5.90,6.10,6.26,6.39,6.50,6.59];</p><p>x0=[0.2,0.05,0.05];</p><p>x=lsqnonlin(f,x0,optimset('Display','off'))</p><p><br ></p><p>f =</p><p> 包含以下值的 function_handle:</p><p> @(x)x(1)+x(2)*exp(-0.02*x(3)*tdata)-cdata</p><p>tdata =</p><p> 100 200 300 400 500 600 700 800 900 1000</p><p>错误使用 lsqnonlin (line 180)</p><p>LSQNONLIN requires the following inputs to be of data type double: 'LB'.</p><p>另外,不带option运行出来的结果和PPT上的不一样是怎么回事?保险起见数据都是从PPT上粘贴过去的:</p><p>>> f=@(x,tdata)x(1)+x(2)*exp(-0.02*x(3)*tdata);</p><p>tdata=100:100:1000</p><p>cdata=1e-03*[4.54,4.99,5.35,5.65,5.90,6.10,6.26,6.39,6.50,6.59];</p><p>x0=[0.2,0.05,0.05];</p><p>x=lsqcurvefit(f,x0,tdata,cdata)</p><p><br ></p><p>x =</p><p> 0.0069 -0.0029 0.0809</p><p><br ></p><p>>> f=@(x)x(1)+x(2)*exp(-0.02*x(3)*tdata)-cdata</p><p>tdata=100:100:1000</p><p>cdata=1e-03*[4.54,4.99,5.35,5.65,5.90,6.10,6.26,6.39,6.50,6.59];</p><p>x0=[0.2,0.05,0.05];</p><p>x=lsqnonlin(f,x0)</p><p><br ></p><p>x =</p><p> 0.0069 -0.0029 0.0809</p>
2
回复