![](/user_photo/2706_HbeT2.jpg)
- •Лабораторная работа № 7 Решение задач оптимизации
- •Содержание работы
- •Основные понятия Унимодальные функции
- •Метод половинного деления
- •Метод золотого сечения
- •Средства Excel для решения задач условной оптимизации
- •Пример постановки задачи линейного программирования
- •Формирование математической модели
- •Ввод условий задачи:
- •Сформировать таблицу в диапазоне ячеек a1:f11, приведенную на рис. 1. Р ис. 1. Таблица для ввода условий задачи линейного программирования
- •Решение задачи
- •Нажать кнопку «Параметры». Установить линейную модель. Нажать кнопку ok. Нажать кнопку «Выполнить».
- •В таблице появятся выходные значения, приведенные на рис. 4.
- •Постановка задачи
- •Варианты заданий Задание №1
- •Задание №2
- •Содержание отчета
- •Вопросы и задания для самоконтроля
Метод половинного деления
Пусть при решении задачи (1) определен отрезок [a, b], которому принадлежит точка локального минимума х*, и функция f(x) является унимодальной на этом отрезке.
Далее для сужения отрезка унимодальности используем точки х1 и х2, расположенные симметрично относительно середины отрезка [a, b];
Будем считать, что число k гораздо меньше 1 (k << 1). Тогда точки х1 и х2 принадлежат отрезку [a, b] и, следуя рассмотренной в прошлом пункте схеме, получим новый суженный отрезок [a1, b1] и оценим его длину в каждом из трех возможных случаев:
I. y1
< y2,
a1
= a,
.
II. y1
> y2,
.
III. y1
= y2,
a1
= x1,
b1=x2;
Таким образом, после первого шага преобразований найден новый отрезок унимодальности [a1, b1], длина которого уменьшилась.
Название метода (метод половинного деления) мотивировано тем, что если величина k очень мала, то длина отрезка унимодальности b-а уменьшается почти вдвое (в случаях I, II).
Теперь в новом суженном промежутке [а1,
b1] выберем точки
и
,
симметричные относительно его середины:
.
Проведя вычисления, аналогичные проделанным ранее, получаем отрезок [а2, b2], длина которого не больше
,
и т. д.
В результате приходим к последовательности таких вложенных отрезков [a, b], [a1, b1] … [аn, bn], …, что точка локального минимума х* функции f(x) принадлежит каждому из них и является общим пределом последовательностей {аn} и {bn}. Отсюда получаются приближенные равенства
х* an bn,
точность которых на n-м шаге вычислений можно оценить неравенством
(2)
Пример 3. Найти точку х* локального минимума функции f(х) = 2x2 – ln x на отрезке [0,25; 1] методом половинного деления с точностью = 0,1. Провести вычисления, полагая k = 0,1 и предварительно оценив минимальное число шагов n для достижения точности .
Решение. Было установлено (см. пример 1), что функция унимодальна на отрезке [0,25;1]; точка х* принадлежит этому отрезку. Воспользуемся неравенством (2) и определим число шагов n:
Обозначим
(3)
где a0 =
a = 0,25,
b0
= b = 1,
ai,
bi
- координаты начала и конца отрезка,
полученные на i-м
шаге вычислений, точки
и
принадлежат отрезку [ai,
bi].
Произведем последовательные вычисления.
Отрезок [a,b] = [0,25; 1]:
x1 = 0,5375, х2 = 0,6625, у1 = 1,2221 < у2 = -1,2895.
Отрезок [а1, b1] = [а, х2] = [0,25; 0,66251]:
= 0,4356,
= 0,4769,
= 1,2105 >
= 1,1953.
Отрезок [а2, b2] = [ , x2] = [0,4356; 0,66251];
= 0,5377,
= 0,5604,
= 1,1987 <
= 1,2072.
Отрезок [a3,b3] = [ , ] = [0,4356; 0,56041]:
= 0,4918,
= 0.5043,
=
1,1934 >
= 1,1932.
Отрезок [a4, b4] = [ , ] = [0,4918; 0,5604].
Разность = b4 - а4 = 0.0686 < =0,1. Следовательно, точкой локального минимума, найденной с заданной точностью, является х* а4 = 0,4918.
Метод золотого сечения
Термин «золотое сечение» ввел
Леонардо да Винчи. Точка х1
является золотым сечением отрезка [а,
b], если отношение
длины b-а
всего отрезка к длине b-х1
большей части равно отношению длины
большей части к длине х1-а
меньшей части (рис. 3), т.е. х1
- золотое сечение, если справедливо
отношение
Аналогично, точка х2, симметричная точке х1 относительно середины отрезка [а, b], является вторым золотым сечением этого отрезка. Так как точки х1 и х2 расположены симметрично относительно середины отрезка [а, b], то можно записать
(4)
Учитывая, что
,
и используя определение золотого
сечения, вычислим число k
> 0:
.
Отметим свойство золотого сечения, в котором легко убедиться: пусть x1 и х2 - два золотых сечения отрезка [а, b]; тогда точка х1 одновременно является золотым сечением отрезка [а, х2], а другая точка х2 - золотым сечением отрезка [х1, b] (рис. 3).
Т
еперь
разберем подробнее алгоритм метода
золотого сечения при нахождении
последовательности вложенных отрезков
[ai, bi]
(i=0, 1, ... , n),
сужающихся к точке х* локального минимума
унимодальной функции f(x).
Сначала на исходном отрезке [а, b]
по формулам (4) при
найдем точки х1 и
х2, а затем разность
1x
= х2 – х1.
Далее вычисляем значения функции
у1=f(х1)
и у2=f(х2)
и, следуя схеме, описанной выше, образуем
суженный отрезок [а1,
b1].
Наконец, готовясь к следующему шагу и
используя свойство золотого сечения,
на отрезке [а1, b1]
находим два сечения
и
.
При этом возможны три случая:
.
.
.
Теперь, следуя разобранной схеме, можно
переходить к нахождению отрезков [а2,
b2],
[а3, b3]
и т. д., учитывая при этом, что в случаях
I или II значение
или
целевой функции уже получено на предыдущем
шаге (i =
1,2,...,n).
Точность приближенного равенства х* аn bn на n-м шаге вычислений можно оценить неравенством
(5)
полученным из неравенства (2), где
.
Пример 4. Найти точку х* локального минимума функции f(x) = 2х2-ln х на отрезке [0,25; 1] методом золотого сечения с точностью = 0,1. Провести вычисления, предварительно оценив минимальное число шагов n для достижения точности .
Решение. Определим минимальное число шагов n, используя неравенство (5):
Произведем последовательные вычисления.
Отрезок [a,b] = [0,25; 1]:
x1 = 0,5375, х2 = 0,7135, у1 = 1,1983 < у2 = 1,3558, x1 = 0,177.
Отрезок [а1, b1] = [а, х2] = [0,25; 0,7135]:
= 0,4271, = x1, = 1,2156 > = y1, x2 = 0,1094.
Отрезок [а2, b2] = [ , x2] = [0,4271; 0,7135];
= = x1, = 0,6041, = y1 < = 1,2339, x3 = 0,06763.
Отрезок [a3,b3] = [ , ] = [0,4271; 0,6041]:
= 0,4947, = = = x1, = 1,1933 < = y1, x4 = 0,0418.
Отрезок [a4, b4] = [ , ] = [0,4271; 0.5365];
= 0,4688,
=
,
=
1,1971 >
=
,
x5
= 0,0258.
Отрезок [a5, b5]
= [
,
]
= [0,4688; 0.5365];
Точкой минимума функции f(x) с погрешностью = b5 – а5 = 0.0677 < 0,1 = является х* а5 = 0,4688.