- •Содержание
- •Тема 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.5. Метод Фибоначчи
Метод Фибоначчи эффективнее метода дихотомии, так как разбиение отрезка производится таким образом, что на каждой итерации требуется вычислять не два значения f(x1) и f(x2), а лишь одно.
Метод Фибоначчи основан на использовании чисел Фибоначчи, задаваемых рекуррентным соотношением
Fn = Fn-1 + Fn-2 (n 2) (1.6)
с начальными значениями F0 = 1, F1 = 1.
Этот метод был предложен в 1953 г. Кифером.
Формула (1.6) вместе с начальными значениями определяет следующий ряд чисел Фибоначчи :
n |
0 1 2 3 4 5 6 7 8 9 10 11 … |
Fn |
1 1 2 3 5 8 13 21 34 55 89 144 … |
Метод Фибоначчи состоит из n шагов.
Положим вначале a0 = a, b0 = b.
На
k-ом
шаге,
k
=0, 1, … , n
– 1,
определим
точки x
и
x
из
условия
x
= ak
+
(bk
– ak),
x
= ak
+
(bk
– ak).
(1.7)
Формулы (1.7) являются основными расчетными формулами метода Фибоначчи
После этого так же, как и в методе дихотомии, определяют новый, меньший отрезок локализации [ak+1, bk+1] по тому же правилу:
если f(x ) f(x ), то ak+1 = ak, bk+1 = x ;
если
f(x
)
> f(x
),
то
ak+1
= x
,
bk+1
=
bk.
Важно,
что одна из пробных точек x
,
x
станет
пробной точкой на новом отрезке
локализации, т. е. совпадет с одной из
точек x
,
x
.
Поэтому на каждой итерации достаточно определить только одно значение f(x), так как другое уже найдено на предыдущей итерации.
В
конце вычислений можно взять в качестве
приближенного значения x*
= x
.
После выполнения n итераций погрешность удовлетворяет следующему неравенству:
n
=
<
.
(1.8)
Следовательно, если задана требуемая точность , число итераций n определяется из условия < или
Fn
+1 >
.
(1.9)
Заметим, что из (1.9) следует, что число итераций, необходимое для удовлетворения заданной точности , зависит только от длины отрезка b – a и точности и не зависит от вида функции f(x).
Алгоритм 1.3 (Алгоритм метода Фибоначчи).
Шаг 1. Ввести исходные данные: a, b, . Определить число итераций n из условия (1.9). Ввести числа Фибоначчи F0, F1, F2, … , Fn +1.
Шаг 2. Положить k = 0 и определить x1 и x2 по формулам (1.7).
Шаг 3. Вычислить f(x1) и f(x2).
Шаг 4. Проверить критерий окончания вычислений: k = n . Если k < n, перейти к шагу 5, иначе – к шагу 6.
Шаг 5. Перейти к новому отрезку локализации и новым пробным точкам. Если f(x1) f(x2), то положить b = x2, x2 = x1, f(x2) = f(x1), x1= a + (b – a) и вычислить f(x1). Иначе положить a = x1, x1 = x2, f(x1) = f(x2), x2 = a + (b – a) и вычислить f(x2).
Положить k = k +1 и перейти к шагу 4.
Шаг 6. Положить x* x1. Вычислить f * f(x*).
Пример 1.4.
Методом Фибоначчи решим задачу, рассмотренную ранее: f(x) = x4 + e –x min, x [0, 1], = 0.1.
Условие (1.8) для нашей задачи имеет вид
Fn
+1 >
= 5.
Первым среди чисел Фибоначчи, для которого выполняется это условие является число F5 = 8, т.е. n +1 = 5, n = 4.
Результаты вычислений для четырех итераций приведены в табл. 1.5.
Таблица 1.5
k |
a |
b |
b – a |
x1 |
x2 |
f(x1) |
f(x2) |
Сравнение f(x1) и f(x2) |
0 1 2 3
|
0 0.375 0.375 0.375
|
1 1.000 0.75 0.625
|
1 0.625 0.375 0.25
|
0.375 0.625 0.5 0.5
|
0.625 0.75 0.625 0.5
|
0.707 0.688 0.669 0.669
|
0.688 0.789 0.688 0.669
|
f(x1) > f(x2) f(x1) < f(x2) f(x1) < f(x2)
|
Таким образом, x* 0.5 и f(x*) 0.669.
