- •Тема 6.6. Одномерная оптимизация
- •6.6.2. Метод дихотомии
- •6.6.3. Метод золотого сечения
- •6.6.4. Сравнение методов
- •6.6.5. Технология решения задач одномерной оптимизации средствами математических пакетов
- •6.6.5.1. Технология решения задач одномерной оптимизации средствами MathCad
- •6.6.5.2. Технология решения задач одномерной оптимизации средствами MatLab
- •6.6.6. Тестовые задания по теме «Одномерная оптимизация»
- •Тема 6.6. Одномерная оптимизация Страница 132
6.6.4. Сравнение методов
На каждой итерации при использовании методадихотомииотрезок неопределенности сокращается практически в два раза, а при использовании метода золотого сечения в1.618раз.
Конечная длина отрезка неопределенности
при использовании метода дихотомии
,
а при использовании метода золотого
сечения -
,
поэтому для обеспечения одного и того
же значения погрешности методом дихотомии
требуется произвести меньше итераций,
чем при использовании метода золотого
сечения.
На каждой итерации в методе дихотомии целевая функция вычисляется два раза, а в методе золотого сечения только один раз, следовательно, метод золотого сечения менее трудоемок с точки зрения вычислений.
6.6.5. Технология решения задач одномерной оптимизации средствами математических пакетов
6.6.5.1. Технология решения задач одномерной оптимизации средствами MathCad
Пакет Mathcadс помощью встроенных функций решает задачу нахождения только локального экстремума. Для нахождения глобального экстремума необходимо вычислить все локальные экстремумы и выбрать среди них наибольший (наименьший). Отметим несколько подходов в поиске экстремума.
Для непрерывной функции от одной
переменной можно использовать равенство
нулю её производной, и путем решения
полученного уравнения получить точки
экстремумов. Уравнение можно решить с
использованием встроенной функции
root.
При этом следует принимать во внимание
знак второй производной. Если на отрезке,
содержащем точку экстремума,
,
то это локальный минимум, а если
,
то это локальный максимум.
Пример 6.6.5-1.
Найти глобальный минимум функции
.
Дальнейшее исследование показало, что глобальным минимумом является точка х = -3.679.
Для непрерывных функций также удобно пользоваться такими встроенными функциями как Maximize(y,x)иMinimize(y,x).Здесь ключевое словоGivenможно опускать, поскольку оно необходимо лишь при наличии ограничений.
Пример 6.6.5-2. Найти минимум и максимум функции y(x)=2x3-16x+5.
Для ступенчатой функции или функции с переломами можно использовать встроенную функцию Minеrr( ). Предварительно по графику выбирается число, заведомо большее (или меньшее) экстремального значения функции, и записывается в качестве ограничения в блокеGiven. ФункцияMinеrr( )возвращает значение аргумента, при котором расхождение между заданным числом и значением функции минимально.
Пример 6.6.5-3. Найти минимум и максимум ступенчатой функции.
Пример 6.6.5-4. Найти минимум функции одной переменной.
-
Пример поиска минимума функции одной переменной





6.6.5.2. Технология решения задач одномерной оптимизации средствами MatLab
Пакет MatLab, так же как и пакет MathCAD,с помощью встроенных функций решает задачу нахождения только локального экстремума. Для нахождения глобального экстремума необходимо вычислить все локальные экстремумы и выбрать среди них наибольший (наименьший).
В MatLabпоиск локального минимума осуществляет функция:
[x, y]=fminbnd(name, a, b, [, options]),
где name– имяm-функции, вычисляющей значениеf(x);
a, b– границы интервала, на котором осуществляется поиск минимума;
Options– параметры, управляющие ходом решения;
x, y– координаты точки, в которой достигается минимум функции на заданном интервале.
Пример 6.6.5-5. Найти локальные экстремумы функции f(x)=x4- 0.5x3-28x2+140.
-
Пример
6.6.5-5% M – функция, вычисляющая f(x)
function y=ext(x)
y=x.^4-0.5*x.^3-28*x.^2+140;
end
%------------------------------------------
%Построение графика
>> x=-5:0.1:6;
>> y=ext(x);
>> plot(x,y,'-k')

> [x,y]=fminbnd(@ext,-4,-2)
x = -3.5589
y = -31.6817
>> [x,y]=fminbnd(@ext,-2,2)
x = 1.9999
y = 40.0054
>> [x,y]=fminbnd(@ext,2,4)
x = 3.9339
y = -84.2624
>> [x,y]=fminbnd(@ext,-6,6)
x = 3.9339
y = -84.2624
>>
Пример 6.6.5-6. Найти минимальное значение функции f(x)=24–2x /3+x2/ 30 наотрезке [5;20].
-
Пример
6.6.5-6x = 5.0 : 0.01 : 20.0 ;
y = 24 – 2 * x./3 + x.^2 / 30 ;
plot(x, y) ; grid on

>>[x, y] = fminbnd ( ' (24.0 – 2* x/3 + x.^2/30) ', 5.0, 20.0)
>> х
10.0000
>>у
20.6667







