Van Wijngaardenova transformace
Author
Albert FloresVan Wijngaardenova transformace je metoda překladu programů z vyššího programovacího jazyka na nižší programovací jazyk. Tato transformace byla vyvinuta v roce 1968 Arie van Wijngaardenem a je jednou z nejdůležitějších metod překladu a optimalizace programů. Transformace se skládá z několika kroků, přičemž každý krok provádí určitou úpravu programu s cílem zlepšit jeho efektivitu a přenositelnost. Například první krok se zabývá nahrazením funkcí za jejich definice, což vede k menší velikosti kódu a urychlení provedení programu. Další kroky transformace se zaměřují na optimalizaci výpočtů, eliminaci nepotřebného kódu nebo zjednodušení podmínek. Cílem je vytvořit efektivnější a snadno udržovatelný kód. Van Wijngaardenova transformace se používá nejen pro překlad programů do nižšího programovacího jazyka, ale také pro jeho optimalizaci. Díky své obecnosti a vysoké účinnosti se stala základem pro vývoj dalších metod překladu a optimalizace programů. V dnešní době je Van Wijngaardenova transformace stále používána v různých oblastech vývoje software. Její použití přináší výhody v podobě sníženého času překladu, snadné udržovatelnosti kódu a vyšší výkonnosti programů.
Van Wijngaardenova transformace je v matematice a numerické matematice varianta Eulerovy transformace používané pro zrychlení konvergence alternujících řad.
Jeden z algoritmů pro výpočet Eulerovy transformace funguje takto: Vypočítá řádek částečných součtů s_{0,k} = \sum_{n=0}^k(-1)^n a_n a vytváří řádky průměrů mezi sousedy s_{j+1,k} = \frac{s_{j,k}+s_{j,k+1}}2 První sloupec s_{j,0} pak obsahuje částečné součty z Eulerovy transformace.
Přínos Adriaana van Wijngaardena spočívá v tom, že upozornil, že je lepší neprovádět tento postup až do úplného konce, ale zastavit jej ve dvou třetinách. Pokud jsou známy členy a_0,a_1,\ldots,a_{12}, pak s_{8,4} je skoro vždy lepší aproximací součtu než s_{12,0}. +more V mnoha případech diagonální členy v jednom cyklu nekonvergují, takže průměrování je třeba zopakovat s diagonálními členy umístěnými do řádku. (To bude potřebné v geometrické řadě s kvocientem -4. ) Tento proces opakovaného průměrování částečných součtů může být nahrazen použitím vzorce pro výpočet diagonálního členu.
Příklad
Jednoduchým příkladem je Leibnizův vzorec pro výpočet čísla pí Výše popsaný algoritmus vytvoří následující tabulku:
1. 00000000 | 0. +more66666667 | 0. 86666667 | 0. 72380952 | 0. 83492063 | 0. 74401154 | 0. 82093462 | 0. 75426795 | 0. 81309148 | 0. 76045990 | 0. 80807895 | 0. 76460069 | 0. 80460069 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
0. 83333333 | 0. 76666667 | 0. 79523810 | 0. 77936508 | 0. 78946609 | 0. 78247308 | 0. 78760129 | 0. 78367972 | 0. 78677569 | 0. 78426943 | 0. 78633982 | 0. 78460069 | |
0. 80000000 | 0. 78095238 | 0. 78730159 | 0. 78441558 | 0. 78596959 | 0. 78503719 | 0. 78564050 | 0. 78522771 | 0. 78552256 | 0. 78530463 | 0. 78547026 | ||
0. 79047619 | 0. 78412698 | 0. 78585859 | 0. 78519259 | 0. 78550339 | 0. 78533884 | 0. 78543410 | 0. 78537513 | 0. 78541359 | 0. 78538744 | |||
0. 78730159 | 0. 78499278 | 0. 78552559 | 0. 78534799 | 0. 78542111 | 0. 78538647 | 0. 78540462 | 0. 78539436 | 0. 78540052 | ||||
0. 78614719 | 0. 78525919 | 0. 78543679 | 0. 78538455 | 0. 78540379 | 0. 78539555 | 0. 78539949 | 0. 78539744 | |||||
0. 78570319 | 0. 78534799 | 0. 78541067 | 0. 78539417 | 0. 78539967 | 0. 78539752 | 0. 78539847 | ||||||
0. 78552559 | 0. 78537933 | 0. 78540242 | 0. 78539692 | 0. 78539860 | 0. 78539799 | |||||||
0. 78545246 | 0. 78539087 | 0. 78539967 | 0. 78539776 | 0. 78539829 | ||||||||
0. 78542166 | 0. 78539527 | 0. 78539871 | 0. 78539803 | |||||||||
0. 78540847 | 0. 78539699 | 0. 78539837 | ||||||||||
0. 78540273 | 0. 78539768 | |||||||||||
0. 78540021 |
To odpovídá následujícím výstupům: