Hogyan számítsuk ki egy ellipszis kerületét?

Az általános és középiskolában sok síkbeli alakzatról tanultunk, beleértve a kört és ellipszist is. Furcsa módon míg a körnek a területét és kerületét meghatározó képleteket nem csak, hogy megtanították, hanem számos feladatban alkalmazni is kellett, valahogy az ellipszis terület- és kerületképlete nem került elő (talán még egyetemen sem mindenhol). Nem véletlenül. Bár az ellipszis területét a köréhez hasonló egyszerű képlettel ki lehet számolni, nem ez a helyzet a kerület meghatározásával. Ehhez már felsőbb szintű matematikai ismeretek kellenek, ugyanis az elvi egzakt képletet egy integrál, az úgynevezett másodfajú elliptikus integrál adja, amelynek formáját a következő ábra felső részén láthatjuk.

Ezzel az integrállal mind analitikus mind numerikus számítási szempontból nehézségek vannak. Ami az előbbit illeti a gond, hogy az elliptikus integrálok nem fejezhetők ki elemi integrállal. Ha pedig numerikusan akarjuk meghatározni az értékét, akkor még a gyakorlatban elvárható pontossághoz is nagyon sok részértéket kell kiszámolni és azokat összegezni.

Ezért törekedtek régen is a matematikusok olyan képletek megalkotására, amelyek bár közelítőek, de viszonylag pontos eredményt adnak nem túl nagy számításigény mellett.

Az ellipszis kerületének kiszámítására egy ilyen közelítő formulát egy briliáns indiai matematikus, Srinivasa Ramanujan adta, ezért tiszteletére Ramanujan képletnek nevezik, ami szintén az ábrán látható. Bár a képlet csak közelítő eredményt ad, de egyszerűsége ellenére meglepően pontos, ezért a gyakorlatban jól használható.

A kerület közelítő számításának egy másik eszköze a gyorsan konvergáló Gauss-Kummer sor lehet, aminek a képletét szintén megtaláljuk az ábrán.

A Gauss-Kummer sorban a szummán belül a binomiális együttható szerepel, mégpedig meglepő módon nem egész értékkel. Ez nem tévedés, hanem a binomiális együttható értelmezésének nem egész számokra való kiterjesztésével lehetséges. Ezért ezt általánosított binomiális együtthatónak (generalized binomial coefficient) nevezik és számítása az úgynevezett gamma-függvénnyel történik. A Γ(x) gamma-függvény egyik fontos tulajdonsága, hogy Γ(x) = (x-1)Γ(x-1). E jellemzője miatt igaz rá, hogy nem negatív egész n esetén Γ(n+1) = n!, vagyis a gamma-függvény a faktoriális művelet általánosításának tekinthető.

Az általánosított binomiális együttható gamma-függvénnyel való kifejezése a fenti ábra alján látható.

Ha programot akarunk írni az ellipszis kerületének kiszámítására, bármelyik előbb említett módszerhez egyszerűen készíthetünk egy függvényt, még a Gauss-Kummer sorral számolóhoz is, mert a math modulban a gamma-függvény rendelkezésre áll. Az egyes függvények megvalósítását alább láthatjuk. A fenti ábrán szereplő képletekkel összevetve megértésük nem lehet gond.

/Megjegyezzük, hogy ha a megszokott, egész számokra értelmezett binomiális együtthatót akarjuk kiszámolni, akkor arra a math modul comb(n, k) függvénye használható./

A következőkben bemutatott tesztsorok nem csak az egyes függvények önmagukban való helyes működését ellenőrzik, hanem össze is lehet hasonlítani az egyes kerületszámítási módszerek eredményeit különböző lapítottságú ellipszisek esetén. Jól látszik, hogy ahhoz, hogy a numerikus integrálás a másik két módszerrel pár tizedesjegy pontossággal megegyezzen nagyon sok pontban kell számolni. Referenciaként akár vehetjük a Ramanujan formula szerinti eredményt annál a tesztesetnél, amelynél az ellipszis egy kör, hiszen a körnek tudjuk a kerületét tetszőleges pontossággal, és a Ramanujan képlet épp ezzé egyszerűsödik és így – adott megjelenített számhosszon – pontos eredményt ad. Láthatólag a numerikus integrál nem követi pontosságban a közelítő módszerekét.

Most, hogy már tudunk ellipszis kerületet számolni, alkalmazzuk ezt a tudást egy gyakorlati kérdés megválaszolására: mekkora utat tesz meg a Föld egy év alatt a Nap körüli pályán, és milyen átlagos sebességgel száguld ezen?

A tudomány mai állása szerint a Föld a Nap körül egy ellipszis alakú pályán kering, aminek paraméreit, például a fél nagy- és kistengely hosszát, a tudósok meg is határozták. Ha ezeket ismerjük, akkor ki tudjuk számolni az ellipszis pálya kerületét, és ennek, valamint az átlagos keringési idő ismeretében meg tudjuk határozni az átlagos pályamenti sebességet. Ezen számításokat és az eredményeket alább láthatjuk.

Az említett indiai matematikus, Ramanujan, egy igazi zseni volt, és bár sajnos korán meghalt, ennek ellenére jelentős felfedezéseket tett a matematikában, sokban hozzájárult annak fejlődéséhez. Neki állít emléket a „Az ember, aki ismerte a végtelent” című film.

Ebben a bejegyzésben programozási szempontból a math modul által kínált lehetőségek voltak a fókuszban. A math modul az itt említetteknél sokkal több matematikai függvényt kínál, érdemes ezeket tanulmányozni, hogy szükség esetén, egy adott feladathoz alkalmazni tudjuk, mint pl. jelen esetben a gamma-függvényt. A math modulról a Python tudásépítés lépésről lépésre című e-könyvben a „Készétel fogyasztás – a szabványos könyvtár moduljainak használata” fejezeten belül egy teljes alfejezet szól, „Matematikai számítások támogatása” címmel.

É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.