Sunteți pe pagina 1din 8

Lucrare de laborator

Metoda Fibonacci

1. Scopul lucrrii
Scopul principal al acestei lucrri este ca prin implementarea i
rularea unui algoritm bazat pe metoda Fibonacci s familiarizeze pe cei
interesai cu problemele care apar n minimizarea funciilor de o singur
variabil.

2. Prezentarea lucrrii
Metoda Fibonacci este o procedur de minimizare a funciilor de o
singur variabil, n absena restriciilor, bazat exclusiv pe valorile funciei
obiectiv. Ca i metoda seciunii de aur, metoda propus caut minimizarea
numrului de valori calculate n cadrul procesului iterativ necesar asigurrii
unei precizii impuse n localizarea minimului. Spre deosebire de metoda
seciunii de aur, n cadrul acestei proceduri raportul de contracie

bk +1 a k +1
bk a k
nu este constant i este dependent de numrul iteraiei efectuate. n
construcia punctelor intermediare de test intervin valori ale termenilor din
irul Fibonacci.
irul Fibonacci este definit prin relaia de recuren:
FK+1 = FK + FK-1 , cu F0 = F1 = 1.
23

(1)

Dac considerm n cadrul iteraiei k, intervalul de incertitudine


iniial ca fiind [ak,bk], alegerea punctelor intermediare de test se face astfel:

k = a k +

Fn k 1
(bk a k )
Fn k +1

(2)

k = ak +

Fn k
(bk a k ) .
Fn k +1

(3)

n funcie de rezultatul comparaiei valorilor f(k) i f(k), intervalul de


incertitudine va fi [ak, k] sau [k,bk]. Prin urmare:

Fn k
(bk a k )
Fn k +1

(4)

Fn k 1
F
(bk a k ) = n k (bk a k ) .
Fn k +1
Fn k +1

(5)

bk +1 a k +1 = k a k =
sau

bk +1 a k +1 = bk k = bk a k

Prin urmare, indiferent de rezultatul comparaiei valorilor f(k) i f(k),


obinem urmtorul rezultat:
bk +1 a k +1 =

Fn k
(bk a k ) .
Fn k +1

(6)

Urmeaz s verificm dac valorile intermediare calculate pe baza


relaiilor (4.2) i (4.3) satisfac condiia pe baza creia, la fiecare iteraie, este
necesar calcularea valorii funciei ntr-un singur punct.
Considerm c n iteraia k, lungimea intervalului de incertitudine
iniial este [ak,bk] i alegem valorile k < k , conform relaiilor (2) i (3).
Presupunem cazul f(k) > f(k) care impune o incertitudine final [ak+1 , bk+1]
= [k , k].
Aadar:
24

k +1 = a k +1 +

Fn k 2
F
(bk +1 a k +1 ) = k + n k 2 (bk a k ) =
Fn k
Fn k

= ak +

Fn k 1
F
F
(bk a k ) + n k 2 (bk +1 a k +1 n k 1 (bk a k )) =
Fn k +1
Fn k
Fn k +1

= ak +

Fn k 1
F
F
(bk ak ) + n k 2 (1 n k 1 ) (bk ak ) .
Fn k +1
Fn k
Fn k +1

(7)

Fn k 1 Fn k +1 Fn k 1
F
=
= nk ,
Fn k +1
Fn k +1
Fn k +1

(8)

Deoarece
1

rezult:
F

k +1 = a k + n k 1 + n k 2 (bk a k ) = a k + n k (bk a k ) = k .
Fn k +1
Fn k +1 Fn k +1

(9)

Procednd prin calcul direct, obinem pentru cazul f(k) < f(k):

k +1 = k .

(10)

Prin urmare, i n cadrul acestei metode este necesar evaluarea


funciei obiectiv ntr-un singur punct, cu excepia primei iteraii.
nainte de a prezenta algoritmic procedura de cutare, atragem
atenia c iteraiile se fac dup valorile lui k pentru un n fixat apriori.
Valoarea n se determin pe baza preciziei impuse, . Dac avem n vedere
relaia (6), rezult:
bn a n
F
= 1
bn 1 a n 1 F2
bn 1 a n 1 F 2
=
bn 2 a n 2 F 3
25

(11)

b2 a 2 Fn 1
=
b1 a1
Fn

Rezultatul se obine imediat:


bn a n
1
.
=
b1 a1 Fn

(12)

Condiia de asigurare a unei precizii impuse va fi:

bn a n =

1
(b1 a1 )
Fn

(13)

din care putem determina valoarea lui n:

Fn > (b1 a1 ) / .
n continuare, vom prezenta algoritmul Fibonacci:

Etapa de iniializare. Se impune valoarea maxim a intervalului de


incertitudine final , precum i constanta de discernabilitate . Se
consider dat intervalul de incertitudine iniial [a1,b1] i determinm n din
condiia Fn > (b1 a1 ) / . Se calculeaz:

1 = a1 +

Fn 2
F
(b1 a1 ) , 1 = a1 + n 1 (b1 a1 )
Fn
Fn

i valorile corespunztoare: f(1) i f(1).


Impunem k = 1 i trecem la etapa de baz.

Etapa de baz. Pasul 1. Dac f(k) > f(k) se trece la pasul 2, iar dac f(k)
f(k) se trece la pasul 3.
26

Pasul 2. Se reiniializeaz a k +1 = k , bk +1 = bk i se determin k +1 = k ,

k +1 = a k +1 +

Fn k 2
(bk +1 a k +1 ) .
Fn k

Dac k = n 2 , se trece la pasul 5 i dac nu, se trece la pasul 4.

Pasul 3. Se reiniializeaz a k +1 = a k , bk +1 = k i se determin:

k +1 = a k +1 +

Fn k 2
(bk +1 a k +1 ) .
Fn k

Dac k = n 2 , se trece la pasul 5 i dac nu, se trece la pasul 4.

Pasul 4. Iterm k k + 1 i relum de la pasul 1.


Pasul 5. Facem n = n 1 i n = n + . Dac f(k) > f(k), atunci a n = n
i bn = bn 1 . n caz contrar, a n = a n 1 i bn = n . Punctul de optim va fi
situat n intervalul [an , bn].

Exemplul 4.1. Comportarea algoritmului de cutare generat de metoda


Fibonacci va fi testat pe funcia

f ( x) = x 2 + x + 1 , prezentat i n

exemplele precedente i pentru care am introdus o pauz de o secund


simulnd astfel o complexitate de calcul mai mare a funciei obiectiv.
Pentru cutarea minimului s-a utilizat algoritmul Fibonacci prezentat
n Anexa 1. Subrutina a fost setat astfel:

Intervalul de incertitudine iniial a1 = 3, b1 = 3 ;

Precizia de determinare a minimului = 0.01 ;

Valoarea de discernabilitate e1 = 10 6 .
27

Rezultatele obinute prin rularea programului sunt prezentate n tabelul 4.1:

b(k)

b(k)-

a(k)

-3.0000

3.0000

6.0000

-0.7082

0.7082

0.7933

2.2097

-3.0000

0.7082

3.7082

-1.5836

-0.7082

1.9242

0.7933

-1.5836

0.7082

2.2918

-0.7082

-0.1672

0.7933

0.8607

-1.5836

-0.1672

1.4164

-1.0426

-0.7082

1.0444

0.7933

-1.0426

-0.1672

0.8754

-0.7082

-0.5016

0.7933

0.7500

-0.7082

-0.1672

0.5410

-0.5016

-0.3738

0.7500

0.7659

-0.7082

-0.3738

0.3344

-0.5803

-0.5016

0.7565

0.7500

-0.5803

-0.3738

0.2066

-0.5016

-0.4525

0.7500

0.7523

-0.5803

-0.4525

0.1279

-0.5311

-0.5016

0.7510

0.7500

10

-0.5311

-0.4525

0.0787

-0.5016

-0.4820

0.7500

0.7503

11

-0.5311

-0.4820

0.0492

-0.5115

-0.5016

0.7501

0.7500

12

-0.5115

-0.4820

0.0295

-0.5016

-0.4918

0.7500

0.7501

13

-0.5115

-0.4918

0.0197

-0.5016

-0.5016

0.7500

0.7500

14

-0.5016

-0.4918

0.0098

-0.5016

-0.5016

0.7500

0.7500

a(k)

l(k)

m(k) teta1(k)

teta2(k)

Tabelul 4.1. Rezultatele obinute prin simulare

Prima coloan indic tactul de lucru. Urmtoarele dou coloane indic


limita inferioar i respectiv superioar ale intervalului de incertitudine, iar
cea de a patra coloan indic lungimea intervalului de incertitudine pe tactul
curent. Coloanele cinci i ase dau valorile de testare pe tactul curent, iar
ultimele dou coloane fixeaz valorile funciei obiectiv n valorile
intermediare alese conform algoritmului propus.
Intuitiv, convergena algoritmului poate fi analizat cu ajutorul
graficului prezentat n figura 7.

28

Figura 7.Convergena algoritmului

Linia ngroat reprezint intervalul de incertitudine pe fiecare tact.


Pentru o evaluare calitativ a vitezei de convergen a algoritmului
generat de metoda Fibonacci, pentru un acelai interval de incertitudine
iniial am impus valori privind intervalul de incertitudine final de forma

= 10 k , k 1,4 . Timpii de calcul necesari asigurrii preciziei impuse sunt


prezentai n tabelul urmtor:
k

1.0000

2.0000

3.0000

4.0000

timp

12.2170

16.0430

21.0310

26.0370

Tabelul 4.2. Variaia timpului n funcie de precizie

n figura 8 este prezentat


graficul dependenei timpului
de calcul n funcie de precizia
de calcul impus:
Figura 8. Dependena timpului
n funcie de precizia impus

29

Observaie

Algoritmul Fibonacci este superior ca performane algoritmului


seciunii de aur. Acest lucru este resimit n cazul unui numr mic de
iteraii. n cazul unui numr mare de pai, comportarea celor doi algoritmi
este aproape identic.

3. Chestiuni de studiat
Se consider ca funcie obiectiv una dintre funciile prezentate n tabelul de
mai jos (funcia va fi impus de conductorul lucrrii):
Nr.
Crt.

Funcie

Interval de
incertitudine
iniial

Valoare
de
minim

Minim

f ( x ) = x 4 + x3 + 5 x 2 + x + 2

[-3;3]

-0.1027

1.9491

f ( x ) = 5 x + x + 16

[-4;4]

-0.1

15.95

f ( x ) = sin( x ) cos( x )

[-2;2]

-0.7854

-1.4142

f ( x ) = e cos( x ) 5 sin( x )

[-7;-3]

-4.9112

-5.0917

[-3;4]

0.3889

-0.2086

f ( x ) = x x cos( x )

Determinai minimul funciei, impunnd diferite precizii de calcul al


acestuia. De asemenea, afiai graficul funciei obiectiv.

30