- •Содержание
- •Тема 1. Задачи одномерной безусловной минимизации
- •Тема 2. Задачи многомерной безусловной минимизации
- •Тема 3. Задачи многомерной оптимизации при наличии ограничений. Линейное программирование
- •Введение
- •Тема 1. Задачи одномерной безусловной минимизации
- •1.1. Постановка задачи
- •1.2. Метод перебора
- •1.3. Метод поразрядного поиска
- •1.4. Метод деления отрезка пополам (метод дихотомии)
- •1.5. Метод Фибоначчи
- •1.6. Метод золотого сечения
- •1.7. Метод средней точки.
- •1.8. Метод Ньютона.
- •Тема 2. Задачи многомерной безусловной минимизации
- •2.1. Необходимые сведения из курса линейной алгебры
- •2.2. Постановка задачи многомерной оптимизации
- •2.3. Необходимые сведения из курса математического анализа
- •2.4. Методы спуска
- •2.5. Метод градиентного спуска с дроблением шага
- •2.6. Метод наискорейшего спуска
- •2.7. Метод сопряженных градиентов
- •2.8. Метод покоординатного спуска
- •2.9. Метод Ньютона
1.4. Метод деления отрезка пополам (метод дихотомии)
В основе этого метода лежит свойство унимодальной функции (1.3), благодаря которому можно сокращать отрезок локализации точки минимума.
Пусть
f(x)
– непрерывная
и унимодальная на отрезке [a,
b]
функция,
принимающая во всех точках этого отрезка
конечные значения. Пусть число пробных
точек x1,
x2,
…, xn
конечно,
и для определения каждой точки xk
можно
использовать информацию о значениях
функции во всех предыдущих точках x1,
x2,
…, xk
– 1 .
Положим
a0
= a,
b0
=
b.
Середина
отрезка [a,
b]
= [a0,
b0]
находится
в точке
.
Выберем
две симметричные точки
x1
=
,
x2
=
.
(1.5)
Величина , удовлетворяющая условию 0 < < b – a , является параметром метода, как правило, – малая величина.
Вычислим значения функции в выбранных точках: f(x1) и f(x2). Определим новый отрезок локализации [a1, b1] следующим образом:
если f(x1) f(x2), то a1 = a0, b1 = x2;
если f(x1) > f(x2), то a1 = x1, b1 = b0.
Далее процедура деления отрезка [a1, b1] повторяется.
Деление продолжают до тех пор, пока половина длины отрезка [an, bn] не станет меньше заданной точности решения задачи , , т. е. пока не выполнится неравенство
<
.
Тогда
за приближение x*
принимают
середину отрезка [an,
bn],
т.е.
x*
.
Алгоритм 1.2 (Алгоритм метода дихотомии).
Шаг 1. Ввести исходные данные: a, b, , .
Шаг 2. Определить x1 и x2 по формулам (1.5).
Шаг 3. Вычислить f(x1) и f(x2).
Шаг 4. Если f(x1) f(x2), то перейти к новому отрезку [a, b], положив b = x2. Иначе перейти к новому отрезку [a, b], положив a = x1.
Шаг
5.
Если
<
,
то
требуемая точность достигнута, перейти
к шагу 6, иначе – к шагу 2 для продолжения
итераций.
Шаг
6.
Положить
x*
.
Вычислить
f
*
f(x*).
Число итераций метода дихотомии оценивается по формуле
n
log2
.
Величину выбирают из условия 0 < < 2. При этом нужно иметь в виду, что при слишком малом из-за погрешности вычисления на ЭВМ сравнение f(x1) и f(x2) становится затруднительным.
Пример 1.3.
Методом деления отрезка пополам решим задачу, рассмотренную в примерах 1.1 и 1.2: f(x) = x4 + e –x min, x [0, 1], = 0.1.
Положим = 0.02. Результаты вычислений приведены в табл. 1.4.
Таблица 1.4
Номер итерации |
a |
b |
|
x1 |
x2 |
f(x1) |
f(x2) |
Сравнение f(x1) и f(x2) |
1 2 3 4 |
0 0.49 0.49 0.49 |
1 1.000 0.755 0.633 |
0.5 0.26 0.13 0.07 |
0.49 0.735 0.613
|
0.51 0.755 0.633 |
0.670 0.771 0.683 |
0.688 0.792 0.691 |
f(x1) > f(x2) f(x1) < f(x2) f(x1) < f(x2)
|
Вычисления прекращаются после 4-ой итерации, так как требуемая точность достигнута (0.07< 0.1). При этом
x*
0.56, f
*
f(0.56*)
0.67.
