A PiFast program használata Nagy Lajos
Tartalomjegyzék 1. Bevezetés 3 2. Bináris kimenet létrehozása. 3 2.1. Beépített konstans esete.............................. 3 2.2. Felhasználói konstans esete............................ 4 3. Formázott ASCII kimenet létrehozása. 6 3.1. Beépített konstans esete.............................. 6 3.2. Felhasználói konstans esete............................ 6 A. Felhasználói konstans definiálása. 9 A.1. Felhasználói konstans definiálásának matematikai alapjai........... 9 A.2. Felhasználói konstanst definiáló fájl létrehozása................ 9 1
Előszó Jelen dokumentum célja, hogy tömören ismertesse a PiFast program használatának módját. A dokumentumban foglaltak a programnak a dokumentum keletkezése idején legújabb, 4.3- as verziójára vonatkoznak. Egyéb verziók esetében az egyes lépésekben kisebb eltérések lehetnek. A PiFast program mindenkori legfrissebb verziója és a részletes angol nyelvű dokumentáció elérhető a honlapon. http://numbers.computation.free.fr/constants/piprogram/pifast.html 2013, Budapest Nagy Lajos 2
1. Bevezetés A PiFast nevezetes konstansok értékeinek rövid idő alatt, akár milliárd tizedesjegy pontossággal történő meghatározására és az eredmény fájlba írására alkalmas program. Az előre beépített konstansok (mint a π, az e, a 2, stb. ) mellett lehetőség van további, a felhasználó által definiált konstansok létrehozására is, melynek részleteit az A. függelék ismerteti. Bár a program képes a szám értékét azonnal ASCII fájlba írni, annak formátuma kötött és többnyire nem felel meg az igényeinknek, ezért a kimenet előállítása két lépésben történik: 1. Adott tizedesjegy pontossággal meghatározzuk a konstans értékét, majd az eredményt egy bináris fájlban tároljuk el. Ezt a lépést ismerteti a 2. szakasz. 2. A bináris fájlt feldolgozva a konstans értékét a kívánt formátumú ASCII fájlban tároljuk el. Ennek leírása a 3. szakaszban található. A két részfeladat egyes lépései a beépített-, illetve a felhasználói konstansok esetében kissé eltérnek, ezért a továbbiakban külön tárgyaljuk a két esetet. 2. Bináris kimenet létrehozása. 2.1. Beépített konstans esete. Az alábbi lépések a π, e vagy 2 konstans értékének meghatározására és az eredmény bináris fájlban való eltárolására vonatkoznak. Az egyes lépéseket az 1. ábra illusztrálja. 1. Indítsuk el a PiFast programot! 2. A főmenüben a [0] [4] opciók közül válaszzuk ki az előállítani kívánt konstansnak megfelelőt! 3. Beállíthatjuk, hogy a program a merevlemez-memóriáját egyáltalán ne ([0]), kisebb ([1]), vagy nagyobb ([2]) mértékben használja. Az ideális választás függ az előállítandó tizedesjegyek számától és a számítógép hardveradottságaitól: nagyon sok tizedesjegy és öregebb számítógép esetében javasolt lehet a merevlemez-memória használata, azonban az általunk megkövetelt pontossághoz és mai számítógépek többségéhez nem feltétlenül szükséges. 4. Adjuk meg az előállítandó tizedesjegyek számát! 5. Ebben a menüpontban a memóriakezelés módját állíthatjuk be. A MEM kulcsszó után az adott memóriakezelési módszer által felhasználni kívánt RAM mennyisége szerepel. Ha a 3. lépésben engedélyeztük a merevlemez-memória használatát, megjelenik a MemDisk kulcsszó is, amely után a módszer által felhasználni kívánt merevlemezmemória szerepel. Az egyes módszerek közül az FFT Size kulcsszó után álló szám bevitelével választhatunk. Válasszuk a számítógépünkben rendelkezésre álló memóriának még megfelelő legnagyobb értéket! 6. Ebben a menüpontban megadhatjuk, hogy az eredményt tömörített formátumban kívánjuk-e eltárolni, vagy sem. A célunknak megfelelően válasszuk az [1] opciót! 3
7. Amennyiben a 3. pontban nem engedélyeztük a merevlemez-memória használatot, a bináris fájl előállítása azonnal megkezdődik. Ellenkező esetben itt megadhatjuk, hogy a teljes számítás hány különálló szakaszban történjen. Az egy lépésben történő számításhoz adjunk meg 0-t! A számítás befejezését követően a PiFast program automatikusan bezárul. A programindító.exe-t tartalmazó könyvtárban többek között megjelenik az előállított konstansra utaló nevű bináris fájl. 1. ábra. π értékének meghatározása 1000000 tizedesjegy pontossággal és az eredmény eltárolása tömörített formátumú bináris fájlban. 2.2. Felhasználói konstans esete. Az alábbi lépések felhasználói konstansok értékeinek meghatározására és az eredmény bináris fájlban való eltárolására vonatkoznak. Az egyes lépéseket a 2. ábra illusztrálja. Ne feledjük, hogy az első lépés megkezdésekor már rendelkeznünk kell a konstanst definiáló fájllal! Felhasználói konstanst definiáló fájl létrehozásának módjáról lásd az A. függeléket. 4
1. Indítsuk el a PiFast programot! 2. A főmenüben válasszuk a [6] opciót! 3. Adjuk meg a korábban előállított felhasználói konstanst definiáló.pifast kiterjesztésű fájl nevét kiterjesztés nélkül. 4. A további lépések megegyeznek a beépített konstansokra vonatkozó 4 7. lépésekkel azzal a különbséggel, hogy felhasználói konstans esetében nincs lehetőség merevlemezmemória használatára. 2. ábra. ϕ értékének meghatározása 1000000 tizedesjegy pontossággal és az eredmény eltárolása tömörített formátumú bináris fájlban. 5
3. Formázott ASCII kimenet létrehozása. 3.1. Beépített konstans esete. Az alábbi lépések a π, e vagy 2 konstans értékét tartalmazó bináris fájl feldolgozására és az eredmény formázott ASCII fájlban való eltárolására vonatkoznak. Az egyes lépéseket a 3. ábra illusztrálja. 1. Indítsuk el a PiFast programot! 2. Bináris fájlból történő formázott kimenet létrehozásához a főmenüben válasszuk a [7] menüpontot! 3. A [0] [2] opciók közül válasszuk az előállítandó konstansnak megfelelőt! 4. Beállíthatjuk, hogy a formázott kimenetet a képernyőn kívánjuk megjeleníteni ([0]), vagy pedig ASCII fájlban szeretnénk eltárolni ([1]). Célunknak megfelelően válasszuk az [1] opciót! 5. Adjuk meg a formázott kimenetet tartalmazó ASCII fájl nevét.txt kiterjesztéssel! 6. Beállíthatjuk, hogy a konstans valamennyi számjegyét ([0]), vagy csak bizonyos számjegyeit ([1] [2]) szeretnénk-e a formázott kimenetre írni. Célunknak megfelelően válasszuk a [0] opciót! 7. A kimenet formátumának részletes beállításához válasszuk az [1] opciót! 8. Megadhatjuk, hogy a kimeneten hány tizedesjegyenként kezdődjön új sor. Hogy valamennyi tizedesjegy egy sorba kerüljön, adjuk meg a 0 értéket! 9. Megadhatjuk, hogy a kimeneten hány tizedesjegyenként legyen szóköz. Hogy a számjegyek közé ne kerüljenek szóközök, válasszuk a [0] opciót. A formázott kimenet létrehozása után a PiFast program automatikusan bezárul. A programindító.exe-t tartalmazó könyvtárban megjelenik a konstans értékét tartalmazó ASCII fájl, melynek első sora az előállított tizedesjegyek számát, második sora a konstans egész részét tartalmazza. A törtrész számjegyei a harmadik sorban helyezkednek el. A fájl felhasználása előtt érdemes azt szövegszerkesztőben megnyitni és az első két sort kitörölni, vagy a felhasználás során átugrani őket. 3.2. Felhasználói konstans esete. Az alábbi lépések egy felhasználói konstans értékét tartalmazó bináris fájl feldolgozására és az eredmény formázott ASCII fájlban való eltárolására vonatkoznak. Az egyes lépéseket a 4. ábra illusztrálja. 1. Indítsuk el a PiFast programot! 2. Tömörített fájlból történő formázott kimenet létrehozásához a főmenüben válasszuk a [7] menüpontot! 3. Felhasználói konstanst tartalmazó fájl feldolgozásához válasszuk a [3] opciót! 6
3. ábra. A π értékét tartalmazó bináris fájl feldolgozása és az eredmény eltárolása formázott ASCII fájlban. 7
4. ábra. A ϕ értékét tartalmazó bináris fájl feldolgozása és az eredmény eltárolása formázott ASCII fájlban. 4. Adjuk meg a konstans nevét! 5. A további lépések megegyeznek a beépített konstansokra vonatkozó 4 9. lépésekkel. 8
A. Felhasználói konstans definiálása. A PiFast program a beépített konstansok (π, e, 2) melett lehetőséget nyújt a felhasználó által definiált konstansok értékeinek meghatározására és az eredmény kívánt formátumban való eltárolására is. Ehhez elsőként a konstanst matematikailag a PiFast számára értelmezhető alakra kell hozni. Ennek módját a A.1. alszakasz ismerteti. Ezt követően létre kell hoznunk a konstans definícióját tartalmazó fájlt, melynek lépéseit a A.2. alszakaszban tekintjük át. A.1. Felhasználói konstans definiálásának matematikai alapjai. A PiFast programban olyan konstansok definiálhatóak felhasználói konstansként, amelyek felírhatóak N darab végtelen hipergeometriai hatványsor lineáris kombinációjaként: C = N c i H i, (1) i=1 ahol a c i együttható egy racionális szám, H i pedig végtelen hipergeometriai sor. Megjegyezzük, hogy a program a sor együtthatóját kissé megtévesztő módon a hipergeometriai sor kifejezésében lévő egyik együtthatóhoz hasonlóan szintén β-nak nevezi. Az egyértelműség kedvéért a matematikai kifejezésben a c i jelölést alkalmazzuk. A H i sor lehet a PiFast által ismert valamely speciális alakú sor, vagy egy általános alakú sor, amely a következő két alak valamelyikében adott: H i = α i + β i H i = α i + β i n=1 F (n) G(n) Zn (2) n F (n) G(n) Zn, (3) n=1 k=1 ahol α i, β i és Z racionális számok, F (n) és G(n) pedig polinomok. Példaként nézzük meg, az aranymetszés, vagyis ϕ esetét. írjuk fel ϕ egy lehetséges definícióját majd ekvivalens átalakításokkal hozzuk a (2)-es, vagy (3)-as egyenletnek megfelelő sor alakra a számot: ϕ = 1 + 5 2 = 1 2 + 1 1 1 5 = 3 2 + n=1 (2n 1)!! 2 n n! ( ) 1 n = 3 [ 5 2 + n n=1 k=1 2n 1 2n ] (1 ) n. 5 Azt kaptuk tehát eredményül, hogy ϕ egy darab (3) alakú végtelen hipergeometriai sorként írható fel, és az (1) (3) egyenletben szereplő paraméterek megfelelő értékei: N = 1, c 1 = 1, α 1 = 3 2, β 1 = 1, Z = 1, F (n) = 2n 1, G(n) = 2n. 5 A.2. Felhasználói konstanst definiáló fájl létrehozása Az alábbi lépések egy felhasználói konstanst definiáló fájl létrehozására vonatkoznak a ϕ példáján keresztül. Az egyes lépéseket az 5. ábra illusztrálja. 1. Indítsuk el a PiFast programot! 9
2. Felhasználói konstans definiálásához a főmenüben válasszuk az [5] menüpontot! 3. Adjunk nevet a konstansnak! Jelen esetben ez lehet például fi. 4. Adhatunk valamilyen megjegyzést a konstanst defináló fájlhoz. Ha nem kívánunk élni ezzel a lehetőséggel, akkor üssük le egymás után az Enter, a pont, majd ismét az Enter billentyűket. 5. Adjuk meg, hogy hány darab hipergeometriai sor összegéből áll a konstans, vagyis a (1) képletbeli N értékét! Jelen esetben ez 1. 6. Adjuk meg a hipergeometriai sor együtthatójának értékét, vagyis a (1) képletbeli c 1 értékét! Jelen esetben ez 1. Ne feledjük, hogy a c együtthatót a program β-nak nevezi! 7. Kiválaszthatjuk, hogy a hipergeometriai sor általános alakú ([0]), vagy valamely speciális alakban ([1] [3]) adott. Mivel esetünkben az előbbiről van szó, így válasszuk a [0] opciót! 8. Kiválaszthatjuk, hogy az általános alakú hipergeometriai sor konkrét matematikai formája a (2), vagy a (3) képletnek felel meg. Jelen esetben a sor a (3) egyenletnek megfelelő alakú. ezért válasszuk az [1] opciót! 9. Adjuk meg α 1 értékét, amely jelen esetben 3/2! 10. Adjuk meg β 1 értékét, amely jelen esetben 1! 11. Adjuk meg az F (n) polinomot, amely jelen esetben 2n 1! 12. Adjuk meg a G(n) polinomot, amely jelen esetben 2n! 13. Adjuk meg Z értékét, amely jelen esetben 1/5! 14. Adjuk meg a konstanst definiáló.pifast kiterjesztésű fájl nevét kiterjesztés nélkül! A konstanst definiáló fájl létrehozása után a PiFast program automatikusan bezárul. A programindító.exe-t tartalmazó könyvtárban létrejött.pifast kiterjesztésű fájl. 10
5. ábra. A ϕ konstans definícióját tartalmazó fájl létrehozása. 11