Trigonometrické tabulky - Trigonometric tables
Trigonometrie |
---|
Odkaz |
Zákony a věty |
Počet |
V matematice jsou tabulky goniometrických funkcí užitečné v řadě oblastí. Před existencí kapesních kalkulaček byly trigonometrické tabulky nezbytné pro navigaci , vědu a techniku . Výpočet matematických tabulek byl důležitou oblastí studia, která vedla k vývoji prvních mechanických výpočetních zařízení .
Moderní počítače a kapesní kalkulačky nyní generují hodnoty trigonometrických funkcí na vyžádání pomocí speciálních knihoven matematického kódu. Tyto knihovny často interně používají předem vypočítané tabulky a vypočítají požadovanou hodnotu pomocí vhodné metody interpolace . Interpolace jednoduchých vyhledávacích tabulek goniometrických funkcí se stále používá v počítačové grafice , kde může být vyžadována pouze mírná přesnost a rychlost je často prvořadá.
Další důležitou aplikací goniometrických tabulek a generačních schémat je algoritmus rychlé Fourierovy transformace (FFT), kde stejné hodnoty trigonometrických funkcí (nazývané twiddle faktory ) musí být v dané transformaci mnohokrát vyhodnoceny, zejména v běžném případě, kdy mnoho transformací jsou vypočteny stejné velikosti. V tomto případě je volání obecných rutin knihovny pokaždé nepřijatelně pomalé. Jednou z možností je jednou zavolat rutiny knihovny a vytvořit tabulku těch trigonometrických hodnot, které budou potřeba, ale k uložení tabulky to vyžaduje značnou paměť. Další možností, protože je vyžadována pravidelná posloupnost hodnot, je použít vzorec pro opakování k výpočtu trigonometrických hodnot za běhu. Významný výzkum byl věnován hledání přesných a stabilních schémat opakování, aby byla zachována přesnost FFT (která je velmi citlivá na trigonometrické chyby).
Výpočet na vyžádání
Moderní počítače a kalkulačky používají různé techniky k poskytování hodnot trigonometrických funkcí na vyžádání pro libovolné úhly (Kantabutra, 1996). Jednou z běžných metod, zejména u procesorů vyšší třídy s jednotkami s plovoucí desetinnou čárkou , je kombinace polynomu nebo racionální aproximace (například Chebyshevova aproximace , nejlepší jednotná aproximace, Padéova aproximace a typicky pro vyšší nebo variabilní přesnost řada Taylor a Laurent ) se zmenšením rozsahu a vyhledáním tabulky - nejprve vyhledají nejbližší úhel v malé tabulce a poté pomocí polynomu vypočítají korekci. Udržování přesnosti při provádění takové interpolace není triviální, ale lze k tomu použít metody jako Galovy přesné tabulky , redukce rozsahu Codyho a Waiteho a algoritmy redukce radiánů Payne a Hanek. Na jednodušších zařízeních, která postrádají multiplikátor hardwaru , existuje algoritmus s názvem CORDIC (stejně jako související techniky), který je efektivnější, protože používá pouze posuny a doplňky. Všechny tyto metody jsou běžně implementovány v hardwaru z důvodu výkonu.
Konkrétní polynom použitý k aproximaci goniometrické funkce je generován předem pomocí určité aproximace algoritmu aproximace minimaxu .
U výpočtů s velmi vysokou přesností , kdy je konvergence sériové expanze příliš pomalá, lze goniometrické funkce aproximovat aritmeticko-geometrickým průměrem , který sám aproximuje goniometrickou funkci ( komplexním ) eliptickým integrálem (Brent, 1976).
Trigonometrické funkce úhlů, které jsou racionálními násobky 2π, jsou algebraická čísla . Hodnoty pro a / b · 2n lze nalézt použitím de Moivre identity pro n = a do A b -tého kořen jednoty , který je také kořen polynomu x b - 1 v komplexní rovině . Například kosinus a sinus 2π ⋅ 5/37 jsou skutečnými a imaginárními částmi 5. síly 37. kořene jednoty cos (2π/37) + sin (2π/37) i, což je kořen stupně -37 polynomu x 37 - 1. v tomto případě je kořen zjišťovací algoritmus, jako jsou Newtonovy metody , je mnohem jednodušší, než aritmetický-geometrický průměr algoritmy nad přičemž sbíhající v podobném asymptotické rychlostí. Tyto algoritmy jsou však vyžadovány pro transcendentální goniometrické konstanty.
Poloviční úhel a vzorce pro přidání úhlu
Historicky nejčasnější metodou, kterou byly trigonometrické tabulky počítány, a pravděpodobně nejběžnější až do příchodu počítačů, bylo opakovaně aplikovat goniometrické identity s polovičním úhlem a přidáním úhlu počínaje známou hodnotou (například sin (π/2) ) = 1, cos (π/2) = 0). Tuto metodu použil starověký astronom Ptolemaios , který je odvodil v Almagestu , pojednání o astronomii. V moderní podobě jsou identity, které odvodil, uvedeny následovně (se znaky určenými kvadrantem, ve kterém leží x ):
Ty byly použity ke konstrukci Ptolemaiovy tabulky akordů , která byla aplikována na astronomické problémy.
Jsou možné různé další permutace těchto identit: například některé rané goniometrické tabulky používaly nikoli sinus a kosinus, ale sinus a versine .
Rychlá, ale nepřesná aproximace
Rychlý, ale nepřesný algoritmus pro výpočet tabulky N aproximací s n pro sin (2 π n / N ) a c n pro cos (2π n / N ) je:
- s 0 = 0
- c 0 = 1
- s n +1 = s n + d × c n
- c n +1 = c n - d × s n
pro n = 0, ..., N - 1, kde d = 2π / N .
Toto je jednoduše Eulerova metoda pro integraci diferenciální rovnice :
s počátečními podmínkami s (0) = 0 a c (0) = 1, jejichž analytické řešení je s = sin ( t ) a c = cos ( t ).
Bohužel, toto není vhodný algoritmus pro generování sine tabulek, protože má závažné chyby, úměrné 1 / N .
Například pro N = 256 je maximální chyba v hodnotách sinusů ~ 0,061 ( s 202 = −1,0368 místo −0,9757). Pro N = 1024 je maximální chyba v hodnotách sinusů ~ 0,015 ( s 803 = −0,99321 namísto −0,97832), asi 4krát menší. Pokud by byly získané hodnoty sinusů a kosinusů vykresleny, nakreslil by tento algoritmus spíše logaritmickou spirálu než kruh.
Lepší, ale stále nedokonalý vzorec pro opakování
Jednoduchý vzorec opakování pro generování trigonometrických tabulek je založen na Eulerově vzorci a vztahu:
To vede k následujícímu opakování pro výpočet trigonometrických hodnot s n a c n, jak je uvedeno výše:
- c 0 = 1
- s 0 = 0
- c n +1 = w r c n - w i s n
- s n +1 = w i c n + w r s n
pro n = 0, ..., N - 1, kde w r = cos (2π/ N ) a w i = sin (2π/ N ). Tyto dvě výchozí trigonometrické hodnoty jsou zpravidla založeny na stávající funkce knihovny (ale může být také najít např použitím Newtonovu metodu v komplexní rovině řešit pro primitivní kořen z z N - 1).
Tato metoda by vytvořila přesnou tabulku v přesné aritmetice, ale má chyby v aritmetice s pohyblivou řádovou čárkou s konečnou přesností . Ve skutečnosti chyby rostou jako O (ε N ) (v nejhorších i průměrných případech), kde ε je přesnost s plovoucí desetinnou čárkou.
Významným zlepšením je použití následující úpravy výše uvedeného, triku (kvůli Singletonovi, 1967), který se často používá ke generování trigonometrických hodnot pro implementace FFT:
- c 0 = 1
- s 0 = 0
- c n +1 = c n - (α c n + β s n )
- s n +1 = s n + (β c n - α s n )
kde α = 2 sin 2 (π/ N ) a β = sin (2π/ N ). Chyby této metody jsou mnohem menší, O (ε √ N ) v průměru a O (ε N ) v nejhorším případě, ale stále je dostatečně velká, aby podstatně snížila přesnost FFT velkých velikostí.
Viz také
- Aryabhataův sinusový stůl
- KORDICKÉ
- Přesné trigonometrické konstanty
- Madhavův sinusový stůl
- Numerická analýza
- Plimpton 322
- Prosthaphaeresis
Reference
- Carl B. Boyer (1991) A History of Mathematics , 2. vydání, John Wiley & Sons .
- Manfred Tasche a Hansmartin Zeuner (2002) „Vylepšená analýza chyb zaokrouhlení pro předem vypočítané twiddle faktory“, Journal for Computational Analysis and Applications 4 (1): 1–18.
- James C. Schatzman (1996) „Přesnost diskrétní Fourierovy transformace a rychlá Fourierova transformace“, SIAM Journal on Scientific Computing 17 (5): 1150–1166.
- Vitit Kantabutra (1996) „O hardwaru pro výpočet exponenciálních a goniometrických funkcí,“ Transakce IEEE na počítačích 45 (3): 328–339.
- RP Brent (1976) „ Fast Multiple-Precision Evaluation of Elementary Functions “, Journal of the Association for Computing Machinery 23: 242–251.
- Singleton, Richard C. (1967) „O výpočtu rychlé Fourierovy transformace“, Communications of the ACM 10: 647–654.
- William J. Cody Jr., William Waite, Softwarová příručka pro základní funkce , Prentice-Hall, 1980, ISBN 0-13-822064-6 .
- Mary H. Payne, Robert N. Hanek, Radiánová redukce pro goniometrické funkce , ACM SIGNUM Newsletter 18: 19-24, 1983.
- Gal, Shmuel a Bachelis, Boris (1991) „Přesná elementární matematická knihovna pro standard IEEE s plovoucí desetinnou čárkou“, ACM Transactions on Mathematical Software .