В системе MATLAB имеются специальные функции для поиска минимумов заданных функций [1 - 3]. При этом возможен поиск минимума как для функции одной вещественной переменной, так и для функций многих переменных. Для функций одной переменной их минимумы разыскивает функция fmin:
Fmin(name, x0, x1)
Здесь name представляет имя функции, у которой находятся минимумы, а х0 и x1 задают отрезок поиска. Иллюстрировать работу этой функции будем на примере функции hump (переводится как «горб»), специально поставляющейся с системой MATLAB в демонстрационных целях. Эта функция задается формулой:
у = 1./((х - 0.3).^2 + 0.01)+1./((х - 0.9).^2 + 0.04)
- а ее график легко получается с помощью вызова функции
fplot('humps', [0,3])
Из рис. 3.2 видно, что локальный минимум этой функции существует на отрезке от 0.5 до 1.0. Попробуем найти точку минимума следующим вызовом функции fmin:
х = fmin('humps', 0.5, 1.0)
х =
0.63701067459059
Рис.3.2
Для поиска минимума функции нескольких переменных применяется функция fmins:
xmin = fmins(name, x0)
Здесь name является именем функции нескольких переменных, для которой ищется минимум, а х0 - это вектор ее аргументов, с которого начинается поиск. Для иллюстративного примера создадим простую функцию двух переменных:
function у = MyFunc2(х),
у = х(1)^2 + х(2)^2;
имеющую минимумом точку (0,0). Этот текст надо записать в файл MyFunc2.m в текущий каталог системы MATLAB. После этого можно вызвать функцию fmins:
xmin = fmins ('MyFunc2', [1,1]); которая приближенно находит вектор xmin координат точки минимума: