И другие программы этой серии
Они представлены ниже:
Версия 4 и ниже Версия 5 и выше
fmin fminbnd
fmins fminsearch
foption soptimget, optimsetfzero
nnls lsqnonneg
400
Программные средства численных методов
Вычисление минимумов функций
401
8.4.3. Минимизация тестовой функции Розенброка
Классическим примером применения функции fminsearch является поиск минимума тестовой функции Розенброка, точка минимума которой находится в «овраге» с «плоским дном»:
rb(x1, x2, a) = 100*(x2 – x12)2 + (a – x1)2.
Минимальное значение этой функции равно нулю и достигается в точке [a a2]. В качестве примера уточним значения x1 и x2 в точке [–1.2 1]. Зададим функцию (в файле rb.m):
% Тестовая функция Розенброка function f=rb(x,a) if nargin<2 a=1; end f=100*(x(2)-x(1)^2)^2+(a-x(1))^2;
Теперь решим поставленную задачу:
>> options=optimset(\'tolX\',1.e-6); [xmin, opt, rosexflag,
rosout]=fminsearch(@rb,[-1.2 1],options)
xmin = 1.0000 1.0000
opt = 4.1940e-014
rosexflag = 1
rosout =
iterations: 101
funcCount: 189
algorithm: \'Nelder-Mead simplex direct search\'
Для лучшего понимания сути минимизации функции нескольких переменных рекомендуется просмотреть пример минимизации этой функции, имеющийся в библиотеке демонстрационных примеров Demos (рис. 8.2).
8.4.4. Другие средства минимизации функций нескольких переменных
Для минимизации функций нескольких переменных можно использовать также функцию MATLAB fminunc и функцию lsqnonlin из пакета Optimization Toolbox. Первая из них позволяет использовать предварительно заданные командой optimset порог сходимости для значения целевой функции, вектор градиентов options.gradobj, матрицу Гесса, функцию умножения матрицы Гесса или график разреженности матрицы Гесса целевой функции.
Начало в части 1