Nevezetes sorozatok
A következő programokat nem
Turbo Pascalban, hanem Free Pascalban írtam meg, mivel ebben a nyelvben
található meg az Int64 típus, és így elég sok lépésig lehetett futtatni az
iterációkat.
A Fibonacci sorozat
A Fibonacci sorozat elemei a
következők:
1, 1, 2, 3, 5, 8, 13, 21, 34,
55, ...
Képzési szabálya pedig ez: az első és
második eleme legyen 1, majd a harmadiktól kezdve minden elem az előző két
elemnek az összege. Képletben:
an = an-1+an-2
Írjunk programot, amely Fibonacci sorozat
elemeit állítja elő. Egészítsük ki azzal, hogy minden lépésben az egymást
követő elemek hányadosát is határozzuk meg. Lehessen megadni, hogy hány elemet
határozzon meg a program. Ellenőrzött adatbevitel mellett adjunk korlátot az
elemek számára. A programot Free Pascal-ban írtam meg. A alkalmazott legbővebb
adattipúsok mellett a maximális meghatározható elemszám 91. Ezt is vegyük
figyelembe a kódolásnál. A program listája:
Program Fibonacc;
Uses Crt;
Var A, B, C: Int64;
I, N: Word;
Sz: String;
Kod: Integer;
Begin
TextMode(CO80);
ClrScr;
Write('Iterációk száma (kisebb mint 91): ');
ReadLn(Sz); Val(Sz,N,Kod);
If Kod>0 Then N:= 90; If N>90 Then N:= 90;
A:= 1; B:= 1;
For I:= 1 To N Do
Begin
WriteLn(I:3,'/',N:3,': ',A:22, B:22, B/A:25:20);
C:= A+B; A:= B; B:= C;
End;
Repeat Until Keypressed;
End.
Futtassuk a programot a maximális
megengedett értékig. Az utolsó elemeket láthatjuk a következő képernyőn:
Futtassuk a programot a 23. lépésig:
Látható, hogy a hányados 1,618
környékén kezd egyre kisebb értékkel változni. Keressük meg, hogy hanyadik
elemtől lesz ez változatlan (16 tizedes érték pontossággal). Ezt a 43. lépéstől
láthatjuk:
A Leibniz-féle sor a Pi közelítésére
Közismert érték a kör átmérőjének és
kerületének aránya, melyet szokás Ludolph féle számnak is nevezni, amit röviden
Pi-nek nevezünk és 3,14-nek ismerjük legjobban. Ez a szám irracionális (nem
szakaszos végtelen tizedes tört), sőt transzcendens, ami azt jelenti, hogy
nincs olyan algebrai egyenlet, melynek megoldása lenne. Másképpen nincs rá
olyan képlet, amely a csak négy alapművelet és a gyökvonás segítségével véges lépésben
a Pi-t előállítaná. Praktikusan nem ismert minden számjegye, csak elég sok,
manapság már billiárd nagyságrendű számjegyét meghatározták.
A számjegyek megismerése számítógéppel
gép és idő függvénye. Számos előállító képletéből én az egyik legegyszeűbbet, a
Leibniz-féle sort választottam. Ez pedig a következő:
pi/4 = 1/1 – 1/3 + 1/5 – 1/7
+ 1/9 – ...
A képzési szabály igen egyszerű, a
páratlan számok reciprokainak váltott előjeles összevonásával a Pi negyedét
kapjuk. A program listája:
Program PiKozel;
Uses Crt;
Var I, N: Word;
PK: Real;
Kod, EJ: Integer;
Sz: String;
Begin
TextMode(CO80);
ClrScr;
Write('Iterációk száma (kisebb mint 20001): ');
ReadLn(Sz); Val(Sz,N,Kod);
If Kod>0 Then N:= 1000; If N>20000 Then N:= 20000;
PK:= 1;
For I:= 1 To N Do
Begin
If Odd(I) Then EJ:= -1 Else EJ:= 1;
PK:= PK+EJ/(2*I+1);
WriteLn(I:5,'/',N:5,':',4*PK:20:14);
End;
TextColor(Yellow);
WriteLn('Pi: ',Pi:20:14);
Repeat Until Keypressed;
End.
Például
20000 lépés alatt a következő eredményre jutunk:
A képernyő utolsó sorában a gép által ismert Pi
látható 14 tizedes jegy pontossággal.
A természetes alapú logaritmus
alapjának közelítése
Mint ismeretes a természetes alapú logaritmus
alapszáma egy 2,71 körüli érték, melyet e
betűvel jelölünk. Ez a szám is transzcendens, akárcsak a Pi. Közelítő
meghatározásának alapja a következő sorozat, melynek a határértéke e, n tart végtelen esetén:
an = (1+1/n)n
A sorozat határértékének közelítését a minél magasabb
hatvány meghatározása jelenti. A listában ez a határszám az 1 millió, de
nagyobb is beírható. A program listája:
Program LogNat;
Uses Crt;
Var I, N: LongInt;
Sz: String;
Kod: Integer;
Function Hatv(N: LongInt): Real;
Var I: LongInt;
P: Real;
Begin
P:= 1;
For I:= 1 To N Do P:= (1+1/N)*P;
Hatv:= P;
End;
Begin
TextMode(CO80);
ClrScr;
Write('Iterációk száma (kisebb mint 1000000): ');
ReadLn(Sz); Val(Sz,N,Kod);
If Kod>0 Then N:= 1000; If N>999999 Then N:= 20000;
For I:= 1 To N Do
WriteLn(I:6,'/',N:6,':',Hatv(I):18:14);
TextColor(Red+8);
WriteLn('999999: ',Hatv(999999):18:14);
TextColor(Yellow);
WriteLn('e: ',Exp(1):18:14);
Repeat Until Keypressed;
End.
A sorozat szigorúan monoton növekedő, ha 1000 lépést végzünk
el, akkor az érték 2 tizedesre pontos, ha egymilliót, akkor 5-re. A képernyő
utolsó előtti sorában pirossal a 999999. lépés, az utolsóban a gép által ismert
e érték látható 14 titedes
jegyre.