Метод Фибоначчи

Характерной чертой метода является способ вычисления границ текущего интервала, основанный на использовании чисел Фибоначчи. Метод можно использовать в том случае, когда известно число испытаний n. Основная идея метода состоит в следующем :

Пусть необходимо провести n испытаний (вычислений f(x) в пробных точках) для отыскания минимума унимодальной функции на [a0, b0]. Положим, что проведены все испытания кроме последнего, и имеется интервал неопределенной длины Ln-1 (рис. 2.2).

Внутри этого интервала следует поместить последнюю точку xn и длина последнего интервала Ln должна быть наименьшей. Оптимальным при этом будет расположение точек xn и xn-1 симметрично относительно середины интервала и удаленных от нее на величину e/2 (e - точность поиска). Следовательно, [2]

clip_image002 (17)

Далее пусть проведены все испытания, кроме двух последних. Точки xn и xn-1 будем располагать симметрично внутри интервала Ln-2 на расстоянии Ln-1 от концов этого интервала, т.е.

clip_image004 (18)

Проведя аналогичные рассуждения для любого интервала Lj, получающегося после проведения j испытаний, получим рекуррентную формулу

clip_image006, clip_image008. (19)

Используя формулы (17) и (19), можно вычислить

clip_image010 (20)

Введем последовательность чисел Фибоначчи Fk, определяемую следующим образом

clip_image012 clip_image014 clip_image016 (21)

Тогда имеем

clip_image018 (22)

Если исходный отрезок [a0, b0] имеет длину L1 = b0-a0, то

clip_image020

(23)

clip_image022 (24)

Таким образом, стратегия метода гарантирует, что длина отрезка Ln после n испытаний будет не больше величины Ln, вычисленной по формуле (24) для любой унимодальной функции f(x).

При реализации итерационного процесса используют правило симметрии. Необходимо найти положение первой точки, которая располагается на расстоянии L2 от одного из концов начального отрезка [a0, b0]. Вторая точка располагается согласно правилу симметрии на расстоянии L2 от второго конца отрезка [a0, b0] (рисунок 2.3).

Длина отрезка L2 вычисляется по формуле

clip_image024 (25)

Аналогично вычисляются координаты всех n точек, т.е. для вычисления текущего отрезка [ak+1; bk+1] выбираются точки x1* и x2* по формулам

clip_image026 (26)

clip_image028 (27)

где Fn-1-k, Fn+1-k, Fn-k – числа Фибоначчи.

 

image

Рис. 2.2. Расположение точек clip_image032и clip_image034 Рис 2.3. Расположение точек clip_image036и clip_image038

при поиске минимума clip_image040. при поиске минимума clip_image040[1].

Ниже представлен алгоритм одной из модификаций метода Фибоначчи. Пусть а = а0, b = b0.

1 Если n=1, то перейти к п. 2. Если n > 1, то перейти к п. 3.

2 Вычислить clip_image042 и значение функции clip_image044. Поиск закончен.

3 Определить последовательность чисел Фибоначчи: F0 = 1, F1 = 1, Fk = Fk-1+Fk-2 для k = 2,3,…,n. Вычислить

clip_image046

4 Вычислить значения функции f(x1) и f(x2).

5 Если n = 2, то перейти к п. 6. Если n > 2 , то перейти к п. 9.

6 Если f(x1) £ f(x2), то перейти к п. 7. Если f(x1) > f(x2), то перейти к п. 8.

7 Положить clip_image048и вычислить значение функции clip_image044[1] Закончить поиск.

8 Положить clip_image050 вычислить значение функции clip_image044[2] Закончить поиск.

9 Если f(x1) £ f(x2), то перейти к п. 10. Если f(x1) > f(x2), то перейти к п. 13.

10 Положить b = x2, x2 = x1 и n = n-1.

11 Вычислить

clip_image052

12 Вычислить f(x1) и перейти к п. 5.

13 Положить a = x1, x1 = x2 и n = n-1.

14 Вычислить

clip_image054

15 Вычислить f(x2) и перейти к п. 5.

16

Пример 4. Используя метод Фибоначчи найти минимум функции clip_image056 в интервале [0, 1] за 10 шагов [2].

Решение: поиск решения приведен в таблице 1.

Числа Фибоначчи F2=1, F3=2; F4=3; F5=5; F6=8; F7=13; F8=21; F9=34; F10=55; F11=89; F12=144.

Таблица 1.

 

a

b

x1

x2

f(x1)

f(x2)

n

Итерация 1

0

1

0,38194

0,618

-1,17337

-1,09133

10

Итерация 2

0

0,618

0,23613

0,381

-1,15482

-1,17337

9

Итерация 3

0,236

0,618

0,38194

0,382

-1,17337

-1,17336

8

Итерация 4

0,236

0,382

0,29192

0,381

-1,16856

-1,17337

7

Итерация 5

0,291

0,382

0,38194

0,326

-1,17337

-1,17289

6

Итерация 6

0,291

0,326

0,30517

0,381

-1,1706

-1,17337

5

Итерация 7

0,305

0,326

0,38194

0,318

-1,17337

-1,17217

4

Итерация 8

0,305

0,318

0,31047

0,381

-1,17128

-1,17337

3

Итерация 9

0,310

0,318

0,38194

0,306

-1,17337

-1,17081

2

Итерация 10

0,310

0,318

0,38194

0,306

-1,17337

-1,17081

1

Предлагаю ознакомиться с аналогичными статьями: