Trigonometrické tabulky - Trigonometric tables

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í

Stránka z knihy matematických tabulek z roku 1619 .

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é

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 .