- •Содержание
- •Тема 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.7. Метод средней точки.
Все методы, рассмотренные до сих пор, основаны на предположении об унимодальности исследуемой функции. Эти методы используют вычисление значений функции в некоторых точках и не требуют вычисления значений производной функции. Использование информации о производной позволит повысить эффективность решения задачи оптимизации.
Рассмотрим метод средней точки, который называется также методом бисекции или методом деления отрезка пополам.
Пусть f(x) – унимодальная, непрерывно дифференцируемая на отрезке [a, b] функция и на этом отрезке точка x* является единственной стационарной точкой. Сведем задачу нахождения минимума функции f(x) к решению нелинейного уравнения
f '(x) = 0. (1.14)
Положим a0 = a, b0 = b.
Так как функция f '(x) удовлетворяет условию (1.14), то она принимает на концах отрезка [a0, b0] значения разных знаков, т.е.
f(a0)f(b0) < 0.
Разделим отрезок [a0, b0] пополам. Получим точку x0 = . Вычислим f '(x0). Если f '(x0) = 0, то x0 – искомый корень, и задача решена. Если f '(x0) 0, то f '(x0) – число определенного знака: f '(x0) > 0, либо f '(x0) < 0. Тогда либо на концах отрезка [a0, x0], либо на концах отрезка [x0, b0] значения функции f '(x) имеют разные знаки. Обозначим такой отрезок [a1, b1]. Очевидно, что x* [a1, b1], и длина отрезка [a1, b1] в два раза меньше, чем длина отрезка [a0, b0]. Поступим аналогично с отрезком [a1, b1]. В результате получим либо корень x*, либо новый отрезок [a2, b2], и т.д. (рис.1.4 ).
Рис. 1.4
Середина
n-го
отрезка xn
=
.
Очевидно,
что длина отрезка [an,
bn]
будет
равна
,
а
т. к. x*
[an,
bn],
то
|
xn
– x*|
.
(1.15)
Оценка (1.15) характеризует погрешность метода средней точки и указывает на скорость сходимости: метод сходится со скоростью геометрической прогрессии, знаменатель которой q = 1/2.
Если задана требуемая точность , то процесс вычислений следует закончить, когда выполнится условие f '(xn) , после чего полагают x* xn.
Алгоритм 1.5 (Алгоритм метода средней точки).
Шаг 1. Ввести исходные данные: a, b, .
Шаг 2. Определить x0 = .
Шаг 3. Вычислить f '(x0).
Шаг 4. Проверить критерий окончания вычислений. Если f '(x0) , , перейти к шагу 6, иначе – к шагу 5.
Шаг 5. Перейти к новому отрезку локализации [a, b]. Если f '(x0) > 0, то положить b = x0. Иначе положить a = x0. Перейти к шагу 2.
Шаг 6. Положить x* x0. Вычислить f'(x*).
Пример 1.6.
Методом средней точки решим задачу, рассмотренную ранее:
f(x) = x4 + e - x min, x [0, 1], = 0.02.
Очевидно, что f '(x) = 4x3 – e –x.
Результаты вычислений приведены в табл. 1.7.
Таблица 1.7
Номер итерации |
a |
b |
x0 |
f '(x0) |
Знак f '(x0) |
1 2 3 4 5 |
0 0.5 0.5 0.5 0.5 |
1 1.000 0.750 0.625 0.563 |
0.5 0.750 0.625 0.563 0.531 |
-0.107 1.215 0.441 0.142 0.012 |
– + + + |
Вычисления прекращаются после 5-ой итерации, так как требуемая точность достигнута (0.012 < 0.02).
Таким образом, x* 0.531 и f(x*) 0.668.
