20.2.2 多元函数无约束优化
在MATLAB中,对形如 的多元函数无约束优化问题提供了下列求解函数。
(1)x= fminunc(fun, X0),或x=fminsearch(fun, X0)。
(2)x= fminunc(fun, X0, options),或x=fminsearch(fun,X0, options)。
(3)[x,fval]= fminunc(…),或[x,fval]= fminsearch(…)。
(4)[x,fval,exitflag]= fminunc(…),或[x,fval,exitflag]= fminsearch。
(5)[x,fval,exitflag,output]= fminunc(…),或[x,fval,exitflag,output]= fminsearch(…)。
其中,fminsearch是用单纯型法寻优,对fminunc的算法有如下几点说明。
(1)fminunc为无约束优化提供了大型优化和中型优化算法,由options中的参数LargeScale控制:LargeScale='on'(默认值),使用大型算法;LargeScale='off'(默认值),使用中型算法。
(2)fminunc为中型优化算法的搜索方向提供了4种算法,由options中的参数HessUpdate控制:HessUpdate='bfgs'(默认值),拟牛顿法的BFGS公式;HessUpdate='dfp',拟牛顿法的DFP公式;HessUpdate='steepdesc',最速下降法。
(3)fminunc为中型优化算法的步长一维搜索提供了两种算法,由options中参数LineSearchType控制:LineSearchType='quadcubic'(默认值),混合的二次和三次多项式插值;LineSearchType='cubicpoly',三次多项式插值使用fminunc和 fminsearch可能会得到局部最优解。
例20-2 求函数 在点[ 1,1]附近的局部最小点。>>f= @(x)exp(x(2))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);
>>x0= [-1, 1];
>>x=fminunc(f,x0);
>>y=f(x)
y=1.3919e-013
x=0.5000 -1.0000
可知,函数在点[ 1,1]附近的点[0.5, 1]处取得局部最小点,极小值为1.3919e 013。
【责任编辑:book TEL:(010)68476606】
点赞 0