原创 用MATLAB优化工具箱解非线性最小二乘拟合问题

2009-3-26 15:17 8453 12 12 分类: 软件与OS



l 非线性最小二乘问题





min image044.gif



s.t. v1image045.gifximage045.gifv2



求解程序名为lsqnonlin,其最简单的调用格式为:



x=lsqnonlin(@F,x0, v1,v2)



其最复杂的调用格式为:



[x,norm,res,ef,out,lam,jac] = lsqnonlin(@F,x0,v1,v2,opt,P1,P2, ... )



l 非线性拟合问题



min image046.gif



s.t. v1image045.gifximage045.gifv2



求解程序名为lsqcurvefit,其最简单的调用格式为:



x=lsqcurvefit(@F, x0,t,y,v1,v2)



其最复杂的调用格式为:



[x,norm,res,ef,out,lam,jac] = lsqcurvefit(@F,x0,t,y,v1,v2,opt,P1,P2,...)





输出参数
输入参数
注意事项



2.3.1 程序lsqnonlin和lsqcurvefit的输出参数



其中输出变量的含义为:



1) x : 最优解



2) norm : 误差的平方和



3)res: 误差向量



4) ef : 程序结束时的状态指示:



· >0:收敛



· 0:函数调用次数或迭代次数达到最大值(该值在options中指定)



· <0:不收敛



5) out: 包含以下数据的一个结构变量



· funcCount 函数调用次数



· iterations 实际迭代次数



· cgiterations 实际PCG迭代次数(大规模计算用)



· algorithm 实际使用的算法



·
stepsize
最后迭代步长(中等规模计算用)



· firstorderopt 一阶最优条件满足的情况(大规模计算用)



6) lam:上下界所对应的Lagrange乘子



7) jac:结果(x点)处的雅可比矩阵



2.3.2程序lsqnonlin和lsqcurvefit的输入参数



其中输入变量的含义为:



· x0为初始解(缺省时程序自动取x0=0)



· F给出目标函数的M文件,当Jacobian='on时必须给出其Jacobi矩阵,一般形式为:



function [F,J] = Fun(x)(对程序lsqcurvefit为Fun(x,t))


F =
... % objective function
values at x



if nargout > 1 % two output arguments



J = ... % Jacobian of the function evaluated at x



end



· t,y: 拟合数据



· v1,v2: 上下界



· options:包含算法控制参数的结构



设定(或显示)控制参数的命令为Optimset,有以下一些用法:



Optimset //显示控制参数



optimset optfun //显示程序'optfun的控制参数



opt=optimset //控制参数设为[](即缺省值



opt=optimset(optfun)// 设定为程序'optfun的控制参数缺省值



Opt=optimset('par1',val1,'par2',val2,...)



Opt=optimset(oldopts,'par1',val1,...)



opt=optimset(oldopts,newopts)



可以设定的参数比较多,对lsqnonlin和lsqcurvefit,常用的有以下一些参数:



Diagnostics 是否显示诊断信息( 'on' 或'off)



Display
显示信息的级别('off'
, 'iter' , 'final,'notify)



LargeScale 是否采用大规模算法( 'on' 或'off)缺省值为on



MaxIter 最大迭代次数



TolFun 函数计算的误差限



TolX 决策变量的误差限



Jacobian 目标函数是否采用分析Jacobi矩阵('on' ,'off)



MaxFunEvals 目标函数最大调用次数



LevenbergMarquardt 搜索方向选用LM法(‘on’), GN法(‘off’,缺省值)



LineSearchType 线搜索方法(‘cubicpoly’,’quadcubic’(缺省值))



2.3.3 注意事项



· fminunc中输出变量、输入参数不一定写全,可以缺省。



· 当中间某个输入参数缺省时,需用[]占据其位置。

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
12
关闭 站长推荐上一条 /1 下一条