Na těchto stránkách naleznete principy a ukázku použití algoritmů pro výpočet čísla PI. Zde je stručný obsah:
Tato metoda je historicky nejstarší, poprvé ji použil Archimedes již ve
třetím století před Kristem. Vychází z jednoduchého předpokladu, že kružnice je
vlastně pravidelný n-úhelník s velkým (nekonečným) počtem vrcholů. Pro výpočet
se použije jak vepsaný, tak opsaný n-úhelník a výsledkem je tedy interval, ve
kterém se PI vyskytuje. Se zvyšujícím se počtem vrcholů se samozřejmě tento
interval zužuje.
Metoda samotná je tedy velmi jednoduchá, ale má drobný problém - pro výpočet
musíme určit sinus a kosinus
Nyní se pokusím odvodit vzorec pro hodnotu PI.
Z náčrtku jsou zřejmé vztahy:
,
, a tedy
,
.
Pro obvody n-úhelníků a kružnice pak platí nerovnost:
,
ze které odvodíme vztah pro pi
.
Přesnou hodnotu PI lze pak získat limitou pro n jdoucí k nekonečnu.
Zpřesňování odhadu je lépe patrné z tabulky, ve které najdete hodnoty pro 3-100 úhelník.
Jak už je patrno z názvu, tato metoda používá k výpočtu součet
nekonečné řady, který je právě hodnotou PI. Používá se hned několik vzorců, ale
zde popsaný a při výpočtu použitý je vzorec odvozený Leibnitzem na konci
sedmnáctého století:
Jak je z Leibnitzova vztahu patrné, jedná se o součet nekonečné řady:
. . .
Výpočet se provádí, dokud je člen větší než 10^(-d), kde d je počet
desetinných míst, na které chceme PI spočítat. Výsledek pak získáme oříznutím
(nikoliv zaokrouhlením) na požadovaný počet des. míst. Díky exponenciální
složitosti je však vzorec pro větší d velmi pomalý.
Ovládání appletů na této stránce je velmi jednoduché. První applet
umožňuje nastavení počtu vrcholů pomocí tlačítek + a - nebo přímé zadání
počtu do TextFieldu a jeho nastavení tlačítkem Nastav. Po stisku jednoho ze tří
tlačítek se překreslí zobrazované n-úhelníky a přepočtou hodnoty odhadu PI.
Applet druhý umožňuje nastavení požadované přesnosti výpočtu a frekvenci
zobrazovaných výsledků. Pokud nastavíme frekvenci na n, bude se průběžný výsledek
zobrazovat při dosažení členu, který je násobkem n (tedy 0, n, 2n,...). Toto
nastavení umožňuje zvýšit rychlost výpočtu, protože zobrazení výsledku je
časově mnohem náročnější než výpočet samotný. Pokud není frekvence uvedena,
použije se "optimální" hodnota. Nastavení výpočtu je v průběhu výpočtu
zobrazeno v řádku stavu výpočtu.
Z popsaného je patrné, že veškeré vstupy jsou číselné. Pokud se uvede
nečíselná hodnota, nebude akce provedena. Vyjímkou je pouze nastavení frekvence, kdy
se použije "optimální" hodnota.
zdroje.zip (download)
Na této stránce se nachází dva applety. V tomto odstavci bych chtěl popsat zajímavosti, které se v appletech vyskytují a mohli by sloužit jako inspirace při tvorbě vaší semestrálky.
Oba applety mají pevné umístění komponent (nepoužívají LayoutManager) a k jejich umístění je použit speciální typ Position, který jejich umísťování usnadňuje. Pokud by jste ho chtěli použít, bude nejlepší podívat se na jeho použití v obou appletech.
První applet (class Okno1) používá k vykreslení n-úhelníků další
komponenty, a to abstraktní třídu Poly (n-úhelník se zadaným počtem bodů a
poloměrem) a její potomky InnerPoly (vepsaný pravidelný n-úhelník) a OuterPoly
(opsaný). Samotné vykreslování (PolyCanvas) je prováděno ve vlákně, takže i při
složitějším výpočtu bodů n-úhelníku je možno s appletem dále pracovat. Běh v
nezávislém vlákně však občas vede k chybám při běhu dvou vláken paralelně
(pokud se nový výpočet zahájí ještě před dokončením starého), protože
původní vlákno se spuštěním nového nezruší. Pokud není korektní běh vláken
prohlížečem zajištěn, mohou se obě vlákna navzájem rušit.
Druhou částí tohoto appletu je výpočet hodnoty PI z obvodu n-úhelníku. Ten
probíhá také ve vlákně, ale délka výpočtu není tak velká a je konstantní s
počtem uzlů (pouze se počítá hodnota goniometrických funkcí).
Applet druhý (Okno2) provádí rozvoj řady, který je velmi náročný na
čas. Proto je výpočet taktéž prováděn ve vlákně, které lze zastavit (a tedy i
zrušit). Není však možné výpočet pozastavit a pak opět spustit.
Při zkoušení tohoto appletu jsem zjistil, že při velké frekvenci
zobrazování výsledků se v Internet Exploreru občas mění jen některé hodnoty,
zatímco ostatní zůstavají podle nastavení při iniciaci. Není to chyba appletu,
nýbrž prohlížeče.
Pokud by vás zajímaly podrobnosti k některé z tříd, naleznete je v dokumentaci k úloze (formát MSWord97).
A nakonec ještě malá, i když dost podstatná poznámka. Pokud se vám applety nespustí s hláškou "Class ... not found" nebo jinou chybou, zkuste jiný prohlížeč. Doma jsem použitelnost zkoušel v IE4.0 a Netscapu4.06. Ve škole (tedy v NT učebně K311) mi to běhalo jen pod Netscapem4.5 (tedy Comunicatorem). Staré verze (4.05) nejspíš podporují jen JDK1.0.
zdroje.zip (download)