# Tavola trigonometrica

In matematica la tavola trigonometrica è una tabella che elenca il valore di una funzione trigonometrica per un certo numero di possibili valori angolari. Una tavola trigonometrica è principalmente caratterizzata da due aspetti:
* dettaglio: la differenza tra due angoli consecutivi di cui la tabella riporta i valori;
* precisione: l'approssimazione usata per arrotondare i valori della funzione trigonometrica riportati nella tavola.
Il dettaglio può non essere costante per meglio mappare funzioni che implicano significative variazioni del valore delle funzioni in prossimità di alcuni valori angolari, ad esempio funzioni che abbiano asintoti verticali.

## Storia
### Origini

La prima tavola trigonometrica di cui si ha testimonianza risale al II secolo a.C. ed è quella predisposta da Ipparco di Nicea allo scopo di risolvere, ovvero individuare tutti gli angoli e le lunghezze dei lati nota una parte di essi, ogni possibile triangolo.
Secondo alcune interpretazioni della tavoletta d'argilla di origine babilonese nota con il nome di Plimpton 322 (risalente al 1800 a.C.) potrebbe essere una rudimentale tavola trigonometrica.
Claudio Tolomeo, attorno al 150, nella sua opera Almagesto spiega come costruire una "tavola delle corde" utile per i calcoli astronomici.
È curioso notare come le prime tavole trigonometriche non mappassero la funzione coseno, oltre alla funzione seno, come normalmente accade oggi, quanto la funzione senoverso.

### Impieghi storici

Prima dell'introduzione delle calcolatrici tascabili, le tavole trigonometiche erano essenziali per i calcoli richiesti in numerose aree della scienza e delle applicazioni pratiche, come anche l'algoritmo di prostaferesi per la navigazione e l'astronomia.
Il calcolo delle tabelle matematiche era un'area di studio molto importante che portò all'invenzione dei primi dispositivi automatici di calcolo.
Tra i matematici che si ricordano per aver contribuito a definire tavole sempre più accurate, vanno citati:
* Abu l-Wafa Muhammad al-Buzjani
* Al-Kashi
* Bhāskara
* Johann Werner
* Keplero
* Georg Joachim Rheticus
* Muḥammad ibn Mūsā al-Khwārizmī

### Impieghi moderni

Oggi ogni calcolatrice è in grado di fornire i valori delle funzioni trigonometriche per qualsiasi angolo. I metodi usati dalle calcolatrici per ottenere questo risultato comprendono:
* l'interpolazione di valori della funzione appartenenti ad una tabella precaricata nella memoria della calcolatrice;
* l'approssimazione della funzione tramite uno sviluppo polinomiale di grado sufficientemente elevato.
L'interpolazione, anche di tabelle non molto dettagliate, trova ancora oggi impiego nella computer grafica, dove la precisione di calcolo non deve essere necessariamente elevata volendo prediligere la velocità di calcolo.
Un'altra importante applicazione delle tabelle trigonometriche è negli algoritmi per il calcolo della trasformata di Fourier veloce (FFT), dove gli stessi valori delle funzioni trigonometriche (i cosiddetti fattori twiddle o "di rotazione") devono essere calcolati più volte all'interno della stessa trasformata, soprattutto nel caso non raro in cui si eseguono più trasformazioni dello stesso ordine. In questo caso non sarebbe accettabile chiamare ripetutamente la routine generica di calcolo poiché il tempo complessivo sarebbe eccessivo. Una possibilità è quella di chiamare la routine un'unica volta per ciascun valore twiddle e storicizzarne il risultato in una tabella da consultare durante l'algoritmo. Seppure efficace, la soluzione non risulta efficiente in termine di quantità di memoria usata.

## Metodi per l'ottenimento delle tavole
### Formule di addizione e bisezione di angoli

Storicamente, il metodo più antico, e probabilmente quello più comunemente usato fino all'avvento dei calcolatori elettronici, per ottenere e ampliare con sistematicità una tavola trigonometrica è stato quello di applicare ripetutamente le identità trigonometriche notevoli note come formule di bisezione e formule di addizione e sottrazione partendo da valori noti quali $\sin(\pi /2)=1$ oppure $\cos(\pi /2)=0$:
    $\cos \left({\frac {x}{2}}\right)=\pm \,{\sqrt {\frac {1+\cos x}{2}}};$
    $\sin \left({\frac {x}{2}}\right)=\pm \,{\sqrt {\frac {1-\cos x}{2}}};$
    $\sin(x\pm y)=\sin(x)\cos(y)\pm \cos(x)\sin(y);$
    $\cos(x\pm y)=\cos(x)\cos(y)\mp \sin(x)\sin(y).$
L'impiego più remoto, di cui ci sia pervenuta una testimonianza scritta, risale a Tolomeo.

### Equazioni differenziali

È un metodo rapido, ma impreciso, per ottenere una tabella di dimensione $N$ nell'intervallo $[0,2\pi ]$
Posto $s_{n}=\sin(2\pi n/N)$ e $c_{n}=\cos(2\pi n/N)$, si usano le seguenti formule:
    $s_{0}=0,$
    $c_{0}=1,$
    $s_{n+1}=s_{n}+{\tfrac {2\pi }{N}}c_{n},$
    $c_{n+1}=c_{n}-{\tfrac {2\pi }{N}}s_{n},$
per $n=0,1,\ldots ,N-1.$
Queste formule si ottengono applicando il metodo di Eulero per l'integrazione del seguente sistema di equazioni differenziali ordinarie:
    ${\begin{cases}\displaystyle {\frac {ds(t)}{dt}}=c(t),\\\displaystyle {\frac {dc(t)}{dt}}=-s(t),\end{cases}}$
con le condizioni al contorno $s(0)=0$ e $c(0)=1,$ la cui soluzione analitica è $s(t)=\sin t$ e $c(t)=\cos t$.
L'errore che si commette con l'uso di questo algoritmo è inversamente proporzionale a $N.$ In particolare per il seno il massimo dell'approssimazione è circa $15/N,$ mentre per il coseno è $20/N.$ Ad esempio, per $N=256$ l'errore massimo che si commette nel calcolo del seno è circa ~0,061 (s$_{201}$ = -1,0368 invece di -0,9757). Per $N=1024,$ l'errore massimo che si commette nel calcolo del seno è circa ~0,015 (s$_{802}$ = -0,99321 invece di -0,97832), all'incirca 4 (=1024/256) volte inferiore.
L'andamento dell'ampiezza dell'errore non è lineare ma oscillante e divergente, per cui se si volesse tracciare la curva definita anche da coppie $(s,c)$ ottenute per valori superiori a $N,$ si otterrebbe una spirale logaritmica anziché una circonferenza.

### Formule ricorsive di Eulero

Una semplice formula ricorsiva per la generazione delle tabelle trigonometriche è basata sulla formula di Eulero e sulla seguente relazione:
    $e^{i(\theta +\Delta \theta )}=e^{i\theta }e^{i\Delta \theta }.$
Possiamo così calcolare i valori trigonometrici $s_{n}$ e $c_{n}$ come segue:
    $c_{0}=1,$
    $s_{0}=0,$
    $c_{n+1}=w_{r}c_{n}-w_{i}s_{n}=w_{i}s_{n},$
    $s_{n+1}=w_{i}c_{n}+w_{r}s_{n},$
per $n=0,\ldots ,N-1$, dove $w_{r}=\cos(2\pi /N)$ e $w_{i}=\sin(2\pi /N)$. I due valori iniziali sono generalmente calcolati avvalendosi di funzioni di libreria esistenti (ad esempio utilizzando semplicemente con il metodo di Newton nel piano complesso per il calcolo delle radici dell'unità di $z^{N}-1$).
Questo metodo in teoria (cioè in aritmetica esatta) dovrebbe fornire una tavola di valori esatta, tuttavia gli errori dovuti all'aritmetica finita (virgola mobile) fanno sì che l'errore commesso sia un O-grande $O(\varepsilon N)$ (nel peggiore dei casi ma anche mediamente), dove $\varepsilon$ è la precisione della rappresentazione in virgola mobile.
Un significativo miglioramento si ottiene utilizzando la seguente modifica, uno stratagemma (ideato da Richard C. Singleton) sovente utilizzato per ottenere i valori trigonometrici nelle implementazioni della FFT:
    $c_{0}=1,$
    $s_{0}=0,$
    $c_{n+1}=c_{n}-(\alpha c_{n}+\beta s_{n}),$
    $s_{n+1}=s_{n}+(\beta c_{n}-\alpha s_{n}),$
dove $\alpha =2\sin ^{2}(2\pi /N)$ e $\beta =\sin(2\pi /N)$. Gli errori di questo metodo sono molto più piccoli, $O(\varepsilon {\sqrt {N}})$ in media e $O(\varepsilon N)$ nel peggiore dei casi, che è comunque in grado di inficiare significativamente la precisione per FFT di grandi dimensioni.

## Tavola con valori

| Gradi ° | Radianti | Seno | Coseno | Tangente | Cotangente |
| <0° | <0 | -sin (-x) | cos (-x) | -tan(-x) | -cot(-x) |
| 0° | 0 | 0 | 1 | 0 | Non definita |
| 1° | π/180 | 0,0175 | 0,9998 | 0,0175 | 57,2900 |
| 2° | π/90 | 0,0349 | 0,9994 | 0,0349 | 28,6363 |
| 3° | π/60 | 0,0523 | 0,9986 | 0,0524 | 19,0811 |
| 4° | π/45 | 0,0698 | 0,9976 | 0,0699 | 14,3007 |
| 5° | π/36 | 0,0872 | 0,9962 | 0,0875 | 11,4301 |
| 6° | π/30 | 0,1045 | 0,9945 | 0,1051 | 9,5144 |
| 7° | 7π/180 | 0,1219 | 0,9925 | 0,1228 | 8,1443 |
| 8° | 2π/45 | 0,1392 | 0,9903 | 0,1405 | 7,1154 |
| 9° | π/20 | 0,1564 | 0,9877 | 0,1584 | 6,3138 |
| 10° | π/18 | 0,1736 | 0,9848 | 0,1763 | 5,6713 |
| 11° | 11π/180 | 0,1908 | 0,9816 | 0,1944 | 5,1446 |
| 12° | π/15 | 0,2079 | 0,9781 | 0,2126 | 4,7046 |
| 13° | 13π/180 | 0,2250 | 0,9744 | 0,2309 | 4,3315 |
| 14° | 7π/90 | 0,2419 | 0,9703 | 0,2493 | 4,0108 |
| 15° | π/12 | 0,2588 | 0,9659 | 0,2679 | 3,7321 |
| 16° | 4π/45 | 0,2756 | 0,9613 | 0,2867 | 3,4874 |
| 17° | 17π/180 | 0,2924 | 0,9563 | 0,3057 | 3,2709 |
| 18° | π/10 | 0,3090 | 0,9511 | 0,3249 | 3,0777 |
| 19° | 19π/180 | 0,3256 | 0,9455 | 0,3443 | 2,9042 |
| 20° | π/9 | 0,3420 | 0,9397 | 0,3640 | 2,7475 |
| 21° | 7π/60 | 0,3584 | 0,9336 | 0,3839 | 2,6051 |
| 22° | 11π/90 | 0,3746 | 0,9272 | 0,4040 | 2,4751 |
| 23° | 23π/180 | 0,3907 | 0,9205 | 0,4245 | 2,3559 |
| 24° | 2π/15 | 0,4067 | 0,9135 | 0,4452 | 2,2460 |
| 25° | 5π/36 | 0,4226 | 0,9063 | 0,4663 | 2,1445 |
| 26° | 13π/90 | 0,4384 | 0,8988 | 0,4877 | 2,0503 |
| 27° | 3π/20 | 0,4540 | 0,8910 | 0,5095 | 1,9626 |
| 28° | 7π/45 | 0,4695 | 0,8829 | 0,5317 | 1,8807 |
| 29° | 29π/180 | 0,4848 | 0,8746 | 0,5543 | 1,8040 |
| 30° | π/6 | 0,5000 | 0,8660 | 0,57735 | 1,7321 |
| 31° | 31π/180 | 0,5150 | 0,8572 | 0,6009 | 1,6643 |
| 32° | 8π/45 | 0,5299 | 0,8480 | 0,6249 | 1,6003 |
| 33° | 11π/60 | 0,5446 | 0,8387 | 0,6494 | 1,5399 |
| 34° | 17π/90 | 0,5592 | 0,8290 | 0,6745 | 1,4826 |
| 35° | 7π/36 | 0,5736 | 0,8192 | 0,7002 | 1,4281 |
| 36° | π/5 | 0,5878 | 0,8090 | 0,7265 | 1,3764 |
| 37° | 37π/180 | 0,6018 | 0,7986 | 0,7536 | 1,3270 |
| 38° | 19π/90 | 0,6157 | 0,7880 | 0,7813 | 1,2799 |
| 39° | 13π/60 | 0,6293 | 0,7771 | 0,8098 | 1,2349 |
| 40° | 2π/9 | 0,6428 | 0,7660 | 0,8391 | 1,1918 |
| 41° | 41π/180 | 0,6561 | 0,7547 | 0,8693 | 1,1504 |
| 42° | 7π/30 | 0,6691 | 0,7431 | 0,9004 | 1,1106 |
| 43° | 43π/180 | 0,6820 | 0,7314 | 0,9325 | 1,0724 |
| 44° | 11π/45 | 0,6947 | 0,7193 | 0,9657 | 1,0355 |
| 45° | π/4 | 0,7071 | 0,7071 | 1 | 1 |
| 45°↔90° | π/4↔π/2 | cos(90°-x) | sin(90°-x) | cot(90°-x) | tan(90°-x) |
| 60° | π/3 | 0,8660 | 0,5000 | 1,7321 | 0,5774 |
| 75° | 5π/12 | 0,9659 | 0,2588 | 3,7321 | 0,2679 |
| 90° | π/2 | 1 | 0 | Non definita | 0 |
| 90°↔180° | π/2↔π | sin(180°-x) | -cos(180°-x) | -tan(180°-x) | -cot(180°-x) |
| 180° | π | 0 | -1 | 0 | Non definita |
| 180°↔360° | π↔2π | -sin(x-180°) | -cos(x-180°) | tan(x-180°) | cot(x-180°) |
| 360° | 2π | 0 | 1 | 0 | Non definita |
| >360° | >2π | sin(x-360°) | cos(x-360°) | tan(x-360°) | cot(x-360°) |