И другие программы этой серии
lsqnonlin реализует метод наименьших квадратов и, как правило, дает наименьшее число итераций при минимизации. Ограничимся приведением примеров их применения для минимизации функции Розенброка:
>> options=optimset(\'tolX\',1e-6,\'TolFun\',1e-6);
>> [xmin, opt, exflag, out, grad, hessian ]=fminunc(@rb,[-1.2
1], options)
Рис. 8.2. Графическая иллюстрация минимизации функции Розенброка
симплекс-методом
Warning: Gradient must be provided for trust-region method;
using line-search method instead. > In C:\\MATLABR12\\toolbox\\optim\\fminunc.m at line 211 Optimization terminated successfully:
Current search direction is a descent direction, and magnitude of directional derivative in search direction less than 2*options.TolFun
xmin =
1.0000 opt =
1.9116e-011 exflag =
1.0000
out =
1
iterations: 26
funcCount: 162
stepsize: 1.2992
firstorderopt: 5.0020e-004
algorithm: \'medium-scale: Quasi-Newton line search\'
grad =
1.Oe-003 *
-0.5002
-0.1888
402
Программные средства численных методов
Аппроксимация производных
403
hessian =
820.4028 -409.5496
-409.5496 204.7720
firstorderopt – мера оптимальности для первой нормы градиента целевой функции в найденной точке минимума:
>>options=optimset(\'tolX\',1e-6, \'maxFunEvals\',162);
>> [xmin, opt]=lsqnonlin(@rb,[-1.2 1],[0 1e-6],[0 1e-6],options)
Warning: Large-scale method requires at least as many equations as
variables; switching to line-search method instead. Upper and
lower bounds will be ignored.
> In C:\\MATLABR12\\toolbox\\optim\\private\\lsqncommon.m at line 155
In C:\\MATLABR12\\toolbox\\optim\\lsqnonlin.m at line 121
Maximum number of function evaluations exceeded
Increase OPTIONS.maxFunEvals
xmin = 0.6120 0.3715
opt = 0.1446
Обратите внимание на то, что вопреки ожиданиям функция lsqnonlin к успеху не привела.
Начало в части 1