Irracionális számok közelítése többszáz tizedesjegy pontossággal

Mint azt a matematikából tudjuk, az irracionális számok mindig végtelen, nem szakaszos tizedestörtként fejezhetők ki, ezért a velük való konkrét numerikus számítások esetén sohasem lehet egzakt eredményt kapni, hanem csak valamilyen pontossággal. Ahhoz, hogy az eredmény pontossága növekedjen az irracionális szám tizedesjegyeinek egyre hosszabb sorozatának meghatározása szükséges. Akkor van gond, ha többször tíz, vagy esetleg több száz tizedesjegyre van igény. Ilyenkor ugyanis a float típusú számok, a bináris számábrázolásuk korlátai következtében, az ilyen nagy pontosságot nem tudják biztosítani. Ekkor lesz segítségünkre a szabványos könyvtár decimal modulja.

Most két irracionális szám közelítő értékét fogjuk meghatározni 500 számjegy pontossággal. Az egyik szám a természetes logaritmus alapszáma, vagy más néven Euler-féle szám, a másik a négyzetgyök kettő. A számításhoz használt képleteket a következők:

Ezeket implementáló függvények definíciója alább látható. Ezekben már Decimal típusú számokkal dolgozunk.

Ahhoz, hogy ellenőrizzük a számítások helyességét, a fenti kód felső részében minkét szám 600 számjegyet tartalmazó értékét tüntettük fel egy-egy konstansként. Ezeket megtalálhatjuk az interneten keresve.

Az ellenőrzést úgy tesszük meg, hogy megvizsgáljuk, hogy az általunk számított érték karakterlánc formájában milyen hosszú karaktersorozat egyezik meg a 600 karaktert tartalmazó konstansokkal. Ez az ellenőrző függvény a következő:

Azt, hogy mi a két szám közelítő képlete esetében a legkevesebb számítási igény, ami legalább 500 jegy pontosságot biztosít, egy alább látható függvénnyel határozzuk meg. Ennek működése a részletes kommentekből megérthető.

A közelítő számításokat és azok eredményét a következő sorok mutatják. Itt azt is megfigyelhetjük, hogy a négyzetgyök számítási képlete sokkal gyorsabban konvergál, mint az Euler számé.

Mindezek után esetleg felmerülhet, hogy vajon szükség van-e egyáltalán több száz számjegy pontosságú számításra.

Azt, hogy több száz, vagy csak több tíz számjegy pontosság szükséges, az nyilván alkalmazásfüggő. Mindenesetre vannak olyan használati esetek, amelyek igen nagy pontosságú számításokat igényelnek. Többek között ilyen például az űrkutatás, űrhajózás, ahol a nagy távolságok miatt a pályaszámításoknak nagyon pontosaknak kell lenni. Ennek fontosságát láthatjuk a megtörtént események alapján készült „A számolás joga” (eredetileg: Hidden Figures) című filmben, ami a Mercury űrprogramról szól, és a középpontjában az a három matematikus nő (Katherine Johnson, Dorothy Vaughan és Mary Jackson) áll, akik kézzel végezték a pályaszámításokat. Azt nem tudni, hogy van-e összefüggés a számított tizedesjegyek hossza és az életkor között, de az biztos, hogy a három hölgy igen magas kort ért meg (101, 98 és 83).

A nagy pontosságú számításokhoz a Python szabványos könyvtár decimal modulja nélkülözhetetlen. A használatának megértése azonban csupán a Python hivatalos dokumentáció alapján nem biztos, hogy mindenki számára egyszerű. Ezért a Python tudásépítés lépésről lépésre című e-könyv egy önálló alfejezetet szán e modulnak, és megpróbálja közérthetően tálalni a tudnivalókat számos példával, ábrával és táblázattal segítve a megértést. Mindezzel a „Készétel fogyasztás – a szabványos könyvtár moduljainak használata” fejezet, „Amikor fontos a pontos számítás – decimal modul” alfejezete foglalkozik.

Érdekel a Python tudásépítés lépésről lépésre az alapoktól az első asztali alkalmazásig című e-könyv.