Meтод Фибоначчи
В данном методе также реализована стратегия, обеспечивающая максимальное гарантированное сокращение интервала неопределенности при заданном количестве вычислений функции. Стратегия метола опирается на числа Фибоначчи.
Определение. Числа Фибоначчи определяются по формуле: F0 = F1 = 1, Fn = Fn-1 + Fn-2 (n = 2, 3…). Последовательность Фибоначчи: Fn = 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233… Метод относится к последовательным стратегиям. Перед началом работы алгоритма следует вычислить число N вычислений функции. Пусть известен начальный промежуток неопределенности L0 = [a0,b0] и задана точность - длина конечного промежутка неопределенности. Тогда N вычисляется как наименьшее целое число, при котором верно неравенство:
Итерации алгоритма осуществляются по следующему алгоритму. На k-й итерации метода вычисляются координаты точек:
,
Очевидно,
справедливо
,
то есть точки yk и zk выбираются симметрично внутри отрезка [ak, bk], причем yk < zk.
Следующий промежуток неопределенности определяется по правилу:
Если
, то
,
,
,Если
, то
,
,
,Если
, то
,
.
Работа
алгоритма заканчивается, как только
,
при этом выполняется условие, что длина
текущего интервала не станет меньше
заданной наперед точности >0,
которую называют требуемой точностью
метода. При этом полагают
где k-номер
последней итерации.
Основная идея метода заключается в использовании чисел Фибоначчи для деления отрезка на меньшие части. Последовательность Фибоначчи определяется рекуррентной формулой:
• F(0) = 0
• F(1) = 1
• F(n) = F(n-1) + F(n-2) для n ≥ 2
Учитывая, что в каждый очередной интервал неопределенности попадает один предыдущий эксперимент, для продолжения поиска новую точку следует располагать в этом интервале симметрично оставшимся. Если обозначить через X(j) координату оставшейся точки на у-м этапе поиска, a S1y и S2j- — соответственно левую и правую границы очередного интервала неопределенности, то координата Xj+l новой точки задается соотношением:
Пример работы
Пример реализации метода Фибоначчи.
Таблица 2. Метод Золотого сечения
Метод |
Фибоначчи: |
|
|
|
|
|
Итерация |
a |
y |
z |
b |
f(y) |
f(z) |
1 |
0.000000 |
0.381944 |
0.618056 |
1.000000 |
0.013937 |
0.013937 |
2 |
0.381944 |
0.472144 |
0.527856 |
0.618056 |
0.000776 |
0.000775 |
3 |
0.472144 |
0.527856 |
0.562344 |
0.618056 |
0.000776 |
0.003887 |
4 |
0.472144 |
0.506632 |
0.527856 |
0.562344 |
0.000044 |
0.000776 |
5 |
0.472144 |
0.493368 |
0.506632 |
0.527856 |
0.000044 |
0.000043 |
6 |
0.493368 |
0.506632 |
0.514591 |
0.527856 |
0.000044 |
0.000213 |
7 |
0.493368 |
0.501326 |
0.506632 |
0.514591 |
0.000002 |
0.000044 |
8 |
0.493368 |
0.498674 |
0.501326 |
0.506632 |
0.000002 |
0.000002 |
9 |
0.498674 |
0.501326 |
0.503979 |
0.506632 |
0.000002 |
0.000016 |
|
|
|
|
|
|
|
Результат: |
|
|
|
|
|
|
x_min |
= |
0.501326 |
Число |
итераций: |
9 |
|
f_min |
= |
0.000002 |
|
|
|
|
Шаг 1
Вычисляется первая итерация, задаются начальные значения интервала L — интервала неопределённости, начало интервала A = 0, конец интервала B = 1. Вычисляются значения y и z, значения функций f(z) и f(y).
Шаг 2
На втором шаге значение начала интервала A становится равным y, а конца интервала B равным z, так как значения функций f(y) и f(z) равны. Значения начала и конца сдвигаются.
Шаг 3
На третьем шаге значение конца интервала B не меняется, а значение начала интервала A меняется и становится равным y, так как функция f(y) больше, чем f(z).
Шаг 4
На четвёртом шаге значение начала интервала A не меняется, а значение конца интервала B меняется и становится равным z, так как функция f(y) меньше, чем f(z).
Шаг 5
На пятом шаге значение начала интервала A не меняется, а значение конца интервала B меняется и становится равным z, так как функция f(y) меньше, чем f(z).
Шаг 6
На шестом шаге значение конца интервала B не меняется, а значение начала интервала A меняется и становится равным y, так как функция f(y) больше, чем f(z).
Шаг 7
На седьмом шаге значение начала интервала A становится равным y, а конца интервала B равным z, так как значения функций f(y) и f(z) равны. Значения начала и конца сдвигаются.
Шаг 8
На восьмом шаге значение начала интервала A не меняется, а значение конца интервала B меняется и становится равным z, так как вычисленное значение функции f(y) меньше, чем f(z).
Шаг 9
На девятом шаге значение конца интервала B не меняется, а значение начала интервала A меняется и становится равным y, так как функция f(y) больше, чем f(z).
