Минимизация функции одной переменной
Еще одна важная задача численных методов — поиск
минимума
функции
f(x)
в некотором интервале изменения
х —
от
х
1
до
х
2
. Если нужно найти
максимум
такой функции, то достаточно поставить знак «минус» перед функцией. Для решения этой задачи используется следующая функция:
[X.fval.exitflag,output] = fminbnd(@fun.x1,x2.options, p1,p2,...)
fminbnd(@fun,xl,x2) — возвращает значение х, которое является локальным минимумом функции fun(x) на интервале xl<x<x2;
fminbnd(@fun,xl,x2.options) — сходна с описанной выше формой функции, но использует параметры to!X, maxfuneval, maxiter, display из вектора options, предварительно установленные при помощи команды optimset (смотрите описание lsqnonneg);
fminbnd(@fun,xl.x2,options.P1.P2...) — сходна с описанной выше, но передает в целевую функцию дополнительные аргументы: Р1, Р2..... Если требуется использовать параметры вычислений по умолчанию, то вместо options перед P1, Р2 необходимо ввести [ ] (пустой массив);
[x.fval] = fminbnd(...) — дополнительно возвращает значение целевой функции fval в точке минимума;
[x.fval .exitflag] = fminbndL.) —дополнительно возвращает параметр exitflag, равный 1, если функция сошлась с использованием options.tolX, и 0, если достигнуто максимальное число итераций options.maxiter.
В этих представлениях используются следующие обозначения: xl. х2 — интервал, на котором ищется минимум функции; Р1.Р2... — дополнительные, помимо х, передаваемые в функцию аргументы; fun — строка, содержащая название функции,
которая будет минимизирована; options — вектор параметров вычислений. В зависимости от формы задания функции fminbnd вычисление минимума выполняется известными методами золотого сечения или параболической интерполяции. Пример:
» options=optimset('tolX',1.е-10):
[x]=fminbnd(@cos.3,4,options)
х =
3.1416