[X1,FVAL,EXITFLAG,OUTPUT]=FMINUNC(@ch72fun,X0,opt2)
%DFP,混合二三次插值
opt3=optimset(opt1,'HessUpdate','dfp');
[X1,FVAL,EXITFLAG,OUTPUT]=FMINUNC(@ch72fun,X0,opt3)
%DFP,三次插值
opt4=optimset(opt3,'LineSearchType','cubicpoly');
[X1,FVAL,EXITFLAG,OUTPUT]=FMINUNC(@ch72fun,X0,opt4)
%最速下降,混合二三次插值
opt5=optimset(opt1,'HessUpdate','steepdesc');
[X1,FVAL,EXITFLAG,OUTPUT]=FMINUNC(@ch72fun,X0,opt5)
【MATLAB 运行结果】:
结果为:
( 0.50000349867429
-1.00000872058446)
( 0.50000550257798
-1.00000588930458)
( 0.50005027832388
-0.99990715185660)
( 0.50000001176327
-1.00000037427431)
( 0.49992419845803
-0.99988138702904)
所以可以得到本题的解析解:x=(0.5,-1),f=0。
【结果分析】:
观察上面的运算结果可以看出:BFGS 和混合二三次插值
(Matlab 默认值)的性能是最好的,其精度较高,迭代次数
少;DFP 和三次插值的精度最高,但是其迭代次数相对较多。
DFP 和混合二三次插值的迭代次数最少,但是其精度是最低
的。另外最速下降法也能得出结果,而不是像 Rosenbrock
函数那样不收敛。