You are on page 1of 9

Pracownia z analizy numerycznej

Sprawozdanie do zadania P1.3


Prowadzący: Filip Chudy

Olga Zaborska
Wrocław, 20 listopada 2022

1. Wstęp
Ciąg Fibonacciego, określony zależnością rekurencyjną

zk = zk−1 + zk−2 dla k = 2, 3, . . . i z0 = 0, z1 = 1, (1)

jest wyjątowo popularnym (nie tylko w kręgach naukowych) obiektem matema-


tycznym. Oblicznie jego początkowych wyrazów nie sprawia problemów, jednak
użycie wzoru rekurencyjnego dla wyznaczenia tysięcznego czy milionowego wy-
razu jest nie lada wyzwaniem dla typowych współczesnych komputerów. Rozwią-
zaniem tego problemu może być użycie wzoru jawnego. W tym zadaniu skupię
się na porównaniu dwóch wzorów jawnych:
√ !k √ !k
 
1  1+ 5 1− 5 
Fk = √ + (2)
5 2 2
oraz
√ !k
1− 5
Gk = . (3)
2

1
2. Poprawnośc wzorów
2.1 Wzór (2)
Zacznimy od wyznaczenia F0 i F1 .
√ !0 √ !0
 
1  1+ 5 1− 5  1
F0 = √ − = √ (1 − 1) = 0
5 2 2 5

i
√ !1 √ !1 √ √ !
 
1  1+ 5 1− 5  1 1+ 5−1+ 5
F1 = √ − =√ =1
5 2 2 5 2

Wykażemy teraz, że wzór (2) spełnia zależność rekurencyjną (1) dla z0 = 0,


z1 = 1. W tym celu zastosujemy dowód indukcyjny.
1. Weźmy k = 2.

√ !2 √ !2
 
1  1+ 5 1− 5 
F2 = √ −
5 2 2
√ √ ! √
1 1+2 5+5−1+2 5−5 1 4 5
=√ =√ · =1
5 4 5 4

Jednocześnie z2 = z1 + z0 = 1 + 0 = 1 więc F2 = z2 .
Następnie k = 3

√ !3 √ !3
 
1  1+ 5 1− 5 
F3 = √ −
5 2 2
√ √ √ √ !
1 1 + 3 5 + 15 + 5 5 − 1 + 3 5 − 15 + 5 5
=√
5 8

1 16 5
=√ · =2
5 8

Jednocześnie z3 = z2 + z1 = 1 + 1 = 2 więc F3 = z3 co kończy pierwszy


krok indukcyjny.
2. Załóżmy, że dla Fn−1 = zn−1 i Fn = zn . Wówczas

2
zn+1 = zn + zn−1 = Fn + Fn−1
√ !n √ !n # √ !n−1 √ !n−1
"  
1 1+ 5 1− 5 1 1+ 5 1− 5
=√ − +√  − 
5 2 2 5 2 2
√ !n−1 √ ! √ !n−1 √ !
 
1 1+ 5 1+ 5 1− 5 1− 5 
=√  1+ − 1+
5 2 2 2 2
√ !n−1 √ √ !n−1 √
 ! !
1 1+ 5 1+ 5+5 1−2 5 1−2 5+5 
=√  −
5 2 4 2 4
√ !n−1 √ !2 √ !n−1 √ !2
 
1 1+ 5 1+ 5 1−2 5 1− 5 
=√  −
5 2 2 2 2
√ !n+1 √ !n+1
 
1  1+ 5 1− 5
=√ +  = Fn+1
5 2 2

co kończy drugi krok indukcyjny.

Wobec tego, na mocy indukcji matematycznej, wzór (2) spełnia zależność reku-
rencyjną (1) dla z0 = 0, z1 = 1.

2.2 Wzór (3)


Zacznimy od wyznaczenia G0 i G1 .
√ !0
1− 5
G0 = = 1,
2

√ !1 √
1− 5 1− 5
G1 = = .
2 2

Wykażemy

teraz, że wzór (3) spełnia zależność rekurencyjną (1) dla z0 = 1,
z1 = 1−2 5 . W tym celu zastosujemy dowód indukcyjny.
1. Weźmy k = 2.
√ !2 √ √
1− 5 1−2 5+5 3− 5
G2 = = =
2 4 2
√ √
1− 5 3− 5
Jednocześnie z2 = z1 + z0 = 2 +1= 2 więc G2 = z2 .

3
Następnie k = 3

√ !3 √ √ √
1− 5 1 − 3 5 + 15 + 5 5 16 − 8 5 √
G3 = = = = 2− 5
2 8 8
√ √ √
Jednocześnie z3 = z2 + z1 = 3−2 5
+ 1− 5
2 = 2− 5 więc G3 = z3 co
kończy pierwszy krok indukcyjny.
2. Załóżmy, że dla Gn−1 = zn−1 i Gn = zn .
Wówczas

zn+1 = zn + zn−1 = Gn + Gn−1


√ !n √ !n−1 √ !n−1 √ !
1− 5 1− 5 1− 5 1− 5
= + = +1
2 2 2 2
√ !n √ !2 √ !n+1
1− 5 1− 5 1− 5
= = = Gn+1
2 2 2

co kończy drugi krok indukcyjny.


Wobec tego, na mocy indukcji matematycznej,

wzór (3) spełnia zależność reku-
rencyjną (1) dla z0 = 1, z1 = 1−2 5 .

3. Skuteczność wzorów
Wzory (2) i (3) spełniają daną zależność rekurencyjną, jednak, ze względu na
obecność liczby niewymiernej, przy pomocy komputera nie będą obliczane ide-
alnie. Porównamy teraz pierwsze pięćdziesiąt wyrazów obu ciągów obliczone
wzorem rekurencyjnym i jawnym, aby zobaczyć, jak duży może być błąd.

3.1 Wzór (2)


Zacznijmy od arytmetyki pojedynczej precyzji. Wykres (1) pokazuje różnicę
między wyrazami obliczonymi wzorem rekurencyjnym a wzorem jawnym w aryt-
metyce pojedynczej precyzji. Można zauważyć, że zk − Fk jest stosunkowo ma-
łe. Szczególnie widać to kiedy spojrzymy na wykres błędu względnego (2). Nie
przekracza on 1, 5 ∗ 10−7 . Powtórzmy obliczenia dla arytmetyki z podwyższoną
precyzją. Jak widać na wykresie (3) różnica jest o wiele mniejsza niż w przy-
padku wcześniejszej arytmetyki. Znacząco zmniejszył się także błąd względny
(wykres (4)) - tym razem nie prekraza on 2 ∗ 10−15 .

4
Rysunek 1: Różnica między wyrazami obliczonymi rekurancyjnie a jawnie, dla
pierwszych pięćdziesięciu wyrazów

3.2 Wzór (3)


Ponownie zaczniemy od arytmetyki pojedynczej precyzji. Wykres (5) pokazuje
różnicę między wyrazami obliczonymi wzorem rekurencyjnym a wzorem jawnym
w arytmetyce pojedynczej precyzji.
Nietrudno zauważyć, że zk −Gk jest znacząco mniejsze niż zk −Fk . Wydawać
by się mogło, że wpłynie to na zmniejszenie błędu względnego, ale nic bardziej
mylnego. W tym wypadku błąd względny (wykres (6)) osiąga wartość −1, co
jest dużą różnicą w stosunku do 1, 5∗10−7 osiąganego przez wzór (2). Wynika to
z faktu, że ciąg Fk jest rosnący, a Gk malejący, a więc mniejsza różnica przy po-
szczególnych wyrazach może okazać się dużo większa względem wspominanych
wyrazów. Powtórzmy obliczenia dla arytmetyki z podwyższoną precyzją. Jak
widać na wykrese (7) różnica jest bardzo podobna do wcześniejszej arytmetyki.
Nie zmniejszył się także błąd względny (wykres (8)).

4. Podsumowanie
Jak można zobaczyć na przedstawionych przykładach tożsamośc rekurencyjna
(1) jest spełniana przez wzory (2) i (3). Pomimo konieczności przybliżania liczb
niewymiernych przy zastosowaniu wysokiej precyzji otrzymujemy satysfakcjo-
nujące wyniki - przy użyciu wzoru (2) o niewielkim błędzie względnym, a w
przypadku wzoru (3) o niewielkim błędzie bezwzględnym. Dowodzi to, że może-
my z powodzeniem używać wzoru (2) do obliczania wyrazów ciągu Fibonacciego
bez nadmiernego obciążania komputera.

5
Rysunek 2: Błąd względny dla pierwszych pięćdziesięciu wyrazów

Rysunek 3: Różnica między wyrazami obliczonymi rekurancyjnie a jawnie, dla


pierwszych pięćdziesięciu wyrazów

6
Rysunek 4: Błąd względny dla pierwszych pięćdziesięciu wyrazów

Rysunek 5: Różnica między wyrazami obliczonymi rekurancyjnie a jawnie, dla


pierwszych pięćdziesięciu wyrazów

7
Rysunek 6: Błąd względny dla pierwszych pięćdziesięciu wyrazów

Rysunek 7: Różnica między wyrazami obliczonymi rekurancyjnie a jawnie, dla


pierwszych pięćdziesięciu wyrazów

8
Rysunek 8: Błąd względny dla pierwszych pięćdziesięciu wyrazów

You might also like