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