Минимизация
функции одной переменной
Еще одна важная
задача численных методов — поиск
минимума
функции
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
Содержание раздела