- •Аннотация
- •Оглавление
- •Предисловие
- •ГЛАВА 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. Аналитическое решение задач линейного программирования
- •Вопросы и задания для самоконтроля
- •Литература
Шаг 2. По формулам (2.10) и (2.11) находим x = 0,4968. Поскольку на первой
итерации вычисление величины |
|
невозможно, переходим сразу к шагу 4. |
|
|
|
|
|
|||||||||||||||||||||
Шаг 4. Вычисляем f (x) = 0,6694. Переходим к шагу 5. |
|
|
|
|
|
|
|
|
||||||||||||||||||||
Шаг 5. На данной итерации имеем: x1 |
< x < x2 < x3 , |
f (x) ≥ f (x2 ), следовательно |
||||||||||||||||||||||||||
x [x, x |
]. |
Поэтому полагаем |
|
x |
|
= x = 0,4968, f (x ) = f (x) = 0,6694, а точки x |
|
, x |
3 |
и |
||||||||||||||||||
3 |
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
1 |
|
|
|
2 |
|
|
|
|||
значения f (x) в них не изменяются. Переходим к следующей итерации. |
|
|
|
|
|
|||||||||||||||||||||||
Итерация 2. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
Поскольку точки x1 , x2 |
и x3 |
уже найдены, то начинаем с шага 2. |
|
|
|
|
|
|
||||||||||||||||||||
Шаг 2. Находим x = 0,5224. Переходим к шагу 3. |
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
Шаг 3. |
= |
|
0,4968 −0,5224 |
|
|
|
= 0,026 > 0,025, поэтому переходим к шагу 4. |
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|||||||||||||||||||||
Шаг 4. Вычисляем f (x) = 0,6676. Переходим к шагу 5. |
|
|
|
|
|
|
|
|
||||||||||||||||||||
Шаг 5. |
Поскольку x |
< x |
2 |
< x < x |
, |
f (x |
2 |
) ≥ f (x), |
следовательно |
x [x |
2 |
, x |
], |
|||||||||||||||
|
|
1 |
|
|
|
|
|
|
|
3 |
|
|
|
|
|
|
|
|
|
|
3 |
|
||||||
поэтому |
|
полагаем |
x1 = x2 = 0,5, |
f (x1 ) = f (x2 ) = 0,6690, |
x2 |
= x = 0,5224, |
||||||||||||||||||||||
f (x2 ) = f (x) = 0,6676, а точка x3 |
и значение f (x3 ) остаются прежними. Переходим |
|||||||||||||||||||||||||||
к следующей итерации. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
Итерация 3. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
Поскольку точки x1 , x2 |
и x3 |
уже найдены, то начинаем с шага 2. |
|
|
|
|
|
|
||||||||||||||||||||
Шаг 2. Находим x = 0,5248 и переходим к шагу 3. |
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
Шаг 3. |
Определяем |
= |
|
0,5224 −0,5248 |
|
= 0,024 < 0,025 , |
т.е. |
требуемая точность |
||||||||||||||||||||
|
|
|||||||||||||||||||||||||||
достигнута, поэтому полагаем x |
|
≈ x ≈ 0,525. |
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
Отметим, что в результате пяти вычислений функции |
f (x) |
(три − на итерации |
1, и по одному − на итерациях 2 и 3) точка x была найдена с весьма высокой точностью (точное до четвертого знака значение x = 0,5283) . ■
Вопросы и задания для самоконтроля
1. Пусть |
f (x) − дифференцируемая унимодальная на отрезке [a, b] функция, |
|||
причем |
|
′ |
|
≤ M . Оценить точность (N ) при определении минимального |
|
|
|||
|
f (x) |
|||
значения |
|
f |
методом перебора в результате N вычислений f (x) . |
33
2. Может ли оценка ε(N) = bN−−a1 для точности определения x методом
перебора нарушаться для функций, не являющихся унимодальными? Ответ пояснить рисунком.
3.Повысится ли эффективность метода поразрядного поиска, если шаг поиска последовательно уменьшать не в четыре, а в какое-либо другое число раз?
4.Может ли применение методов исключения отрезков привести к неверному определению x , если функция f (x) не унимодальна? Ответ пояснить рисунком.
5.Зависит ли точность определения x , которую гарантируют методы дихотомии и золотого сечения в результате N вычислений f (x) , от конкретной функции f (x) ?
6.Требуется найти точку минимума унимодальной функции на отрезке длины 1 с точностью ε = 0,02 . Имеется возможность измерить не более 10 значений f (x) .
Какой из прямых методов минимизации можно использовать для этого?
7. Доказать, что погрешность определения точки минимума x функции f (x)
методом перебора не превосходит величины εn = (b − a) / n .
8. Доказать, что в методе дихотомии число итераций, необходимое для определения точки минимума с точностью ε , определяется формулой
n ≥ log2 b2−εa−−δδ .
9. Доказать, что число точности ε на отрезке [a, b]
|
2ε |
|
b − a |
||
n ≥ ln |
|
|
/ lnτ ≈ 2,1ln |
|
|
|
2ε |
||||
b − a |
|
|
итераций, необходимое для достижения заданной в методе золотого сечения определяется формулой
.
10. Сравнить необходимые количества вычисленных значений N∂ и N n
функции f (x) при поиске ее точки минимума на отрезке длины 1 с точностью 10-5
методом деления отрезка пополам и методом перебора.
11.Зависит ли точность определения x , которая получается методом парабол
врезультате N вычислений функции f (x) , от конкретной функции f (x) ?
12.Указать класс функций, для точного определения точек минимума которых достаточно одной итерации метода парабол.
34
13. В окрестности точки минимума x график f1 (x) близок к симметричному относительно вертикальной оси, проходящей через точку x , а график f2 (x)
заметно асимметричен. Для какой из этих функций следует ожидать более высокой скорости сходимости, применяя метод парабол?
Задание для численной реализации в среде программирования MATLAB
1.Написать в среде MATLAB функции, реализующие следующие пять методов: перебора, поразрядного поиска, дихотомии, золотого сечения и парабол.
2.Выбрать для выполнения работы тестовую функцию, номер которой соответствует номеру Вашего компьютера. Например, для компьютера №3 это будет функция 3), для компьютера №13 − функция 4): 13-9=4; для компьютера №23 это будет функция 5): 23-9×2=5.
1) |
f (x) = x3 |
− 3sin x → min, x [0, 1]. |
||||||||||
2) |
f (x) = x 4 |
+ x 2 + x +1 → min, |
x [−1, 0]. |
|||||||||
3) |
f (x) = e x |
+ |
|
1 |
|
→ min, |
x [0,5, 1,5]. |
|||||
|
|
|||||||||||
|
|
|
|
|
x |
|
|
|||||
4) |
f (x) = x 2 |
− 2x + e−x → min, |
x [−1, 1,5]. |
|||||||||
5) |
f (x) = x sin x + 2 cos x → min, |
x [−6, − 4]. |
||||||||||
6) |
f (x) = x + |
1 |
|
→ min, |
x [1, 2]. |
|||||||
|
|
|
||||||||||
|
|
|
x2 |
|
|
|||||||
7) |
f (x) =10x ln x − |
x 2 |
→ min, |
x [0,1,1]. |
||||||||
|
||||||||||||
|
|
2 |
|
|
|
|||||||
8) |
f (x) = e x |
− |
1 |
x3 + 2x → min, |
x [−2,5, −1]. |
|||||||
|
||||||||||||
|
|
3 |
|
|
|
|
|
|
|
|||
9) |
f (x) = x 2 |
− 2x − 2 cos x → min, x [−0,5,1]. |
3.Для выбранной функции и для каждого реализованного метода изучить зависимость скорости работы (числа вычислений функции N ) от заданного значения точности ε . Провести сравнение методов друг с другом. Объяснить полученные результаты.
4.Вычислить аналитическое значение координаты минимума выбранной функции с точностью до 4 значащих цифр.
35
5. Определить, сколько вычислений функции потребуется каждому методу для того, чтобы разность между численным и аналитическим решениями была меньше
ε =10−4 . |
|
|
|
|
|
6. Найти минимум функции f (x) = e x −1 |
− x − |
x2 |
− |
x3 |
с точностью ε =10−4 на |
|
|
||||
|
2 |
6 |
|
отрезке [-5,5] методами золотого сечения и парабол. Объяснить полученные результаты.
7. Результаты работы сохранить для использования в задании для численной реализации гл. 3.
36