
- •Аннотация
- •Оглавление
- •Предисловие
- •ГЛАВА 1. Задачи оптимизации. Основные определения
- •1.1. Задачи оптимизации
- •1.2. Минимум функции одной переменной
- •1.3. Унимодальные функции
- •1.4. Выпуклые функции
- •1.5. Условие Липшица
- •1.6. Классическая минимизация функции одной переменной
- •Вопросы и задания для самоконтроля
- •ГЛАВА 2. Одномерная минимизация функций. Прямые методы
- •2.1. О прямых методах
- •2.2. Метод перебора
- •2.3. Метод поразрядного поиска
- •2.4. Метод дихотомии
- •2.5. Метод золотого сечения
- •2.6. Сравнение методов перебора, дихотомии и золотого сечения
- •2.7. Метод парабол
- •Вопросы и задания для самоконтроля
- •Задание для численной реализации в среде программирования MATLAB
- •ГЛАВА 3. Одномерная минимизация. Методы, использующие информацию о производных целевой функции
- •3.1. Метод средней точки
- •3.2. Метод хорд
- •3.3. Метод Ньютона
- •3.4. Возможные модификации метода Ньютона
- •3.5. Методы минимизации многомодальных функций
- •Вопросы и задания для самоконтроля
- •Задание для численной реализации в среде программирования MATLAB
- •ГЛАВА 4. Задача минимизации функции многих переменных. Необходимые и достаточные условия безусловного экстремума
- •4.1. Постановка задачи и определения
- •4.2. Свойства выпуклых множеств и выпуклых функций
- •4.3. Необходимые и достаточные условия безусловного экстремума
- •Вопросы и задания для самоконтроля
- •5.1. Выпуклые квадратичные функции
- •5.2. Общие принципы многомерной минимизации
- •5.3. Метод градиентного спуска
- •5.4. Метод наискорейшего спуска
- •5.5. Метод сопряженных направлений
- •5.6. Метод сопряженных градиентов
- •5.7. Метод Ньютона
- •5.8. Квазиньютоновские методы
- •Вопросы и задания для самопроверки
- •Задание для численной реализации в среде программирования MATLAB
- •ГЛАВА 6. Прямые методы безусловной минимизации многомерных задач
- •6.1. Проблема минимизации многомерных задач
- •6.2. Минимизация функций по правильному (регулярному) симплексу
- •6.3. Минимизация функций при помощи нерегулярного симплекса
- •6.4. Метод циклического покоординатного спуска
- •6.5. Метод Хука–Дживса
- •6.6. Методы случайного поиска
- •Вопросы и задания для самопроверки
- •Задание для численной реализации в среде программирования MATLAB
- •7.1. Условный экстремум при ограничениях типа равенств
- •7.2. Условный экстремум при ограничениях типа неравенств
- •Вопросы и задания для самопроверки
- •ГЛАВА 8. Линейное программирование
- •8.1. Определения. Примеры задач линейного программирования
- •8.2. Общая и каноническая задачи линейного программирования
- •8.3. Геометрическое истолкование задач линейного программирования
- •8.4. Аналитическое решение задач линейного программирования
- •Вопросы и задания для самоконтроля
- •Литература
ГЛАВА 3
Одномерная минимизация. Методы, использующие информацию о производных целевой функции
Рассмотренные в предыдущей главе прямые методы используются при минимальных требованиях к целевой функции f (x) , которая считается
унимодальной, и вычислению подлежат значения только самой функции, но не ее производных. Пусть теперь f (x) является дифференцируемой или дважды дифференцируемой выпуклой функцией и возможно вычисление производных f (x) в произвольно выбранных точках. В этом случае эффективность поиска точки минимума можно существенно повысить.
Рассмотрим три метода минимизации, в которых используются значения производных целевой функции:
−метод средней точки;
−метод хорд;
−метод Ньютона.
Напомним, что для выпуклой дифференцируемой функции равенство f ′(x) = 0
является не только необходимым, но и достаточным условием глобального минимума. Поэтому, если известно, что x является внутренней точкой отрезка
′ |
≈ 0 |
или |
|
′ |
|
≤ ε может служить условием |
|
|
|
||||||
[a, b], то приближенное равенство f |
(x) |
|
f (x) |
|
|||
остановки вычислений в рассматриваемых трех методах. |
|||||||
3.1. Метод средней точки |
|
|
|
|
|
|
|
Если определение производной |
f |
′ |
не |
|
представляет затруднений, то в |
||
(x) |
|
процедуре исключения отрезков методом дихотомии вычисление двух значений
f (x) |
вблизи середины очередного отрезка можно заменить вычислением одного |
|||||
|
′ |
|
|
|
a +b |
|
значения f (x) в его средней точке |
x = |
|
. |
|||
2 |
||||||
В |
самом |
деле, если f |
′ |
то |
точка x лежит на участке монотонного |
|
(x) > 0 , |
||||||
возрастания |
f (x) , поэтому |
x < x , |
и точку минимума следует искать на отрезке |
|||
[a, x]. |
При f |
′ |
|
|
|
|
(x) < 0 имеем противоположную ситуацию и переходим к отрезку |
37

[x, b]. Равенство |
′ |
означает, |
что точка минимума найдена точно |
x |
|
= x , |
f (x) = 0 |
|
|||||
(рис. 3.1). |
|
|
|
|
|
|
y |
|
y |
y |
|
|
|
a |
x* |
_ |
b x |
a |
_ |
|
|
b x |
a |
_ |
b x |
|||||
x |
x x* |
x*= x |
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_ |
|
|
_ |
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
a |
x* |
|
|
x* |
b |
|
|
|
||||||||
x |
|
|
x |
|
|
|
Рис. 3.1. Иллюстрация исключения отрезков методом средней точки |
|
|
|
||||||||||
Такое исключение отрезков требует |
на каждой |
|
итерации только |
одного |
|||||||||
′ |
|
|
|
|
|
|
x |
|
ровно вдвое. |
|
|
|
|
вычисления f (x) и уменьшает отрезок поиска точки |
|
|
|
|
|||||||||
Алгоритм метода средней точки следующий. |
|
|
|
|
|
|
|
||||||
Шаг 1. Положить x = |
a + b |
. Вычислить |
f |
′ |
|
|
|
|
|
|
|
||
2 |
|
|
|
|
|
|
|
||||||
(x) . Перейти к шагу 2. |
|
|
|
||||||||||
Шаг 2. Проверка на окончание поиска: |
если |
|
f |
′ |
|
|
≤ ε , то положить |
x |
|
= x , |
|||
|
|
|
|||||||||||
|
(x) |
|
|||||||||||
f = f (x) и завершить поиск, иначе перейти к шагу 3. |
|
|
|
|
|
|
|
||||||
′ |
|
|
′ |
|
|
|
|
|
|
|
|
|
|
Шаг 3. Сравнить f (x) с нулем: если f |
(x) > 0 , то продолжить поиск на отрезке |
[a, x], положив b = x , иначе − на отрезке [x, b], положив a = x . Перейти к шагу 1.
Пример 3.1. Методом средней точки решить задачу f (x) = x4 +e−x → min,
x [0, 1], с точностью до |
|
′ |
(x) |
|
≤ 0,02 . |
|
|||||
|
|
|
|||||||||
|
f |
|
|
||||||||
□ Рассмотрим детально действия при выполнении итерации 1. |
|||||||||||
Шаг 1. Находим x =0,5, |
f |
′ |
, переходим к шагу 2. |
||||||||
(x) = −0,107 |
|||||||||||
Шаг 2. |
|
′ |
|
> 0,02 |
, поэтому переходим к шагу 3. |
||||||
|
|
||||||||||
|
f (x) |
|
|||||||||
Шаг 3. |
′ |
значит |
полагаем |
a = x = 0,5 , и переходим к следующей |
|||||||
f (x) < 0 , |
итерации, начиная с шага 1 и т.д. пока не достигнем необходимой точности. Исходные данные и результаты вычислений при выполнении итераций
приведены в табл. 3.1.
38

|
Результаты вычислений примера методом средней точки |
Таблица 3.1. |
|||||||
|
|
|
|
|
|
|
′ |
|
|
|
|
|
|
|
|
|
|
′ |
|
Номер |
|
a |
|
b |
|
x |
f (x) |
Знак |
|
|
|
|
|
f (x) |
|||||
итерации |
|
|
|
|
|
|
-0,107 |
|
|
1 |
|
0 |
|
1 |
|
0,5 |
|
- |
|
|
|
|
|
|
|
|
1,215 |
|
|
2 |
|
0,5 |
|
1 |
|
0,75 |
|
+ |
|
|
|
|
|
|
|
|
0,441 |
|
|
3 |
|
0,5 |
|
0,750 |
|
0,625 |
|
+ |
|
|
|
|
|
|
|
|
0,142 |
|
|
4 |
|
0,5 |
|
0,625 |
|
0,563 |
|
+ |
|
|
|
|
|
|
|
|
0,012 |
|
|
5 |
|
0,5 |
|
0,563 |
|
0,531 |
точность |
||
|
|
|
|
|
|
|
|
достигнута |
|
Таким образом, x ≈ 0,531, |
f ≈ 0,668 . ■ |
|
|
|
|
Метод средней точки напоминает метод дихотомии, но сходится к искомому значению x быстрее, поскольку, в отличие от него, после вычисления n значений производной, для длины интервала неопределенности минимизируемой на [a, b]
функции |
f (x) получаем n = |
b − a |
. |
|
|||
|
|
2n |
Таким образом, для одинакового уменьшения значения n при использовании метода средней точки нужно вычислить вдвое меньше значений производной функции по сравнению с числом значений самой функции при методе дихотомии.
3.2. Метод хорд
Как уже отмечалось, равенство |
′ |
|
|
|
|
||||
f (x) =0 является необходимым и достаточным |
|||||||||
условием |
глобального минимума |
выпуклой дифференцируемой |
функции |
f (x) . |
|||||
Если |
на |
концах отрезка |
[a, b] |
производная |
′ |
имеет разные знаки, |
т.е. |
||
f (x) |
|||||||||
′ |
′ |
< 0 , и она непрерывна, |
то на интервале (a, b) |
найдется точка, в которой |
|||||
f (a) f (b) |
|||||||||
′ |
обращается в нуль. |
В этом случае поиск точки минимума |
f (x) на отрезке |
||||||
f (x) |
|||||||||
[a, b] |
эквивалентен решению уравнения |
|
|
|
|
||||
|
|
|
′ |
|
x (a, b) . |
|
|
|
(3.1) |
|
|
|
f (x) = 0 , |
|
|
|
|||
Таким |
образом, при |
′ |
′ |
|
приближенный |
метод решения |
|||
f (a) f |
(b) < 0 любой |
уравнения (3.1) можно рассматривать как метод минимизации выпуклой непрерывно дифференцируемой функции f (x) на отрезке [a, b] .
Сущность приближенного решения уравнения F(x) = 0 на отрезке [a, b] |
при |
|
F(a) F(b) < 0 методом хорд состоит в исключении отрезков путем определения |
~ |
− |
x |
39

точки пересечения с осью Ox |
хорды графика функции F(x) на [a, b] , |
представленного на рис. 3.2. |
|
y |
F(x)=f΄(x) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
a |
|
~ |
* |
|
|
|
|
|
|
b |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x |
x |
|
|
|
|
|
|
|
x |
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
~ |
x* |
|
|
|
|
b |
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
Рис. 3.2. Иллюстрация исключения отрезков методом хорд |
|
|
|
|
|
||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
′ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
~ |
|
|
|
|
|
|
|
|
|
|
|
Полагая F(x) = f (x) , запишем координату точки x |
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
~ |
|
|
|
f |
′ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(3.2) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(a) |
|
|
|
|
− b) . |
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
x = a − |
|
|
|
|
|
|
|
(a |
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
f |
′ |
|
′ |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(a) − |
f (b) |
|
|
|
|
|
|
~ |
|
|
|
~ |
|
|
|
|
|
|||||
|
Отрезок |
дальнейшего |
поиска |
точки |
|
x |
|
|
или |
|
|
|
|
в |
|||||||||||||||||||||||
|
|
|
|
([a, x] |
[x, b] ) выбирается |
||||||||||||||||||||||||||||||||
зависимости |
от |
|
|
знака |
′ |
~ |
|
так |
же, как |
в |
|
методе |
средней точки. |
На каждой |
|||||||||||||||||||||||
|
|
f (x) |
|
|
|||||||||||||||||||||||||||||||||
итерации, кроме первой, необходимо вычислять только одно новое значение |
|
′ |
|
||||||||||||||||||||||||||||||||||
f |
(x) . |
||||||||||||||||||||||||||||||||||||
|
Алгоритма метода хорд следующий. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
Шаг 1. Найти |
~ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
′ ~ |
|
|
|
|
|
|
|
|
|
|||||||||
|
x по формуле (3.2). Вычислить f |
|
(x) и перейти к шагу 2. |
|
|
|
|
||||||||||||||||||||||||||||||
|
Шаг 2. Проверка на окончание поиска: |
|
|
если |
|
′ |
~ |
|
≤ ε |
, то положить |
x |
|
= x , |
||||||||||||||||||||||||
|
|
|
|
|
|||||||||||||||||||||||||||||||||
|
|
|
|
f (x ) |
|
|
|||||||||||||||||||||||||||||||
f = f (x) |
и завершить поиск, иначе перейти к шагу 3. |
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||
|
Шаг |
3. |
Переход |
к новому |
отрезку. |
|
Если |
|
′ |
~ |
|
|
то положить |
|
|
|
~ |
||||||||||||||||||||
|
|
|
f (x) > 0 , |
b = x , |
|||||||||||||||||||||||||||||||||
′ |
′ |
~ |
|
|
|
|
|
|
|
|
|
|
|
|
|
~ |
, f |
′ |
= f |
′ |
|
~ |
|
|
|
|
|
|
|
|
|
|
|
||||
f (b) = f (x) , иначе положить a |
= x |
(a) |
|
(x) . Перейти к шагу 1. |
|
|
|
|
|
||||||||||||||||||||||||||||
|
Пример 3.2. Методом хорд решить задачу |
f (x) = x4 + e−x →min, |
x [0,1] , |
с |
|||||||||||||||||||||||||||||||||
точностью до |
|
f |
′ |
|
≤ 0,05 . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
(x) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
□ Условие |
|
f |
′ |
|
′ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
(0) f (1) < 0 выполняется. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
|
Рассмотрим детально действия при выполнении итерации 1. |
|
|
|
|
|
|||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
~ |
=0,216, |
|
′ |
~ |
= −0,766 . Переходим к шагу 2. |
|
|
|
|
|
|||||||||||||||||
|
Шаг 1. Находим: x |
|
f (x) |
|
|
|
|
|
|||||||||||||||||||||||||||||
|
Шаг 2. |
|
f |
′ |
~ |
|
|
> 0,05 |
, поэтому переходим к шагу 3. |
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||
|
|
(x ) |
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||
|
Шаг |
3. |
|
|
f |
|
′ ~ |
|
|
поэтому |
полагаем |
|
|
|
a |
= 0,216 , |
′ |
|
|
|
|
|
к |
||||||||||||||
|
|
|
|
(x) < 0 , |
|
|
|
f (a) = −0,766 . Переходим |
итерации 2, начиная с шага 1 и т.д. пока не достигнем требуемой точности. Результаты вычислений при выполнении итераций записаны в табл. 3.2.
40