In rete: http://www.elegio.it/mc2/doc/arco-tangente.html
Arco tangente
Il calcolo dell'arco tangente può essere effettuato utilizzando il seguente sviluppo in serie:
φ = atan( y ) = ∑m = 0,..,∞ y·( − y2 )m2·m + 1 ; |y| ≤ 1
ovvero:
φ = atan( y ) = y − y33 + y55 − y77 + y99 − y1111 + ... ; |y| ≤ 1
Per calcolare l'arco_tangente quando y è in modulo superiore ad uno si può usare la seguente formula:
φ = atan( y ) = π·y2·|y| − 1y + 1 3·y3 − 1 5·y5 + 1 7·y7 − 1 9·y9 + ... ; |y| ≥ 1
Resta comunque il fatto che quando |y| = 1 la convergenza della sommatoria è lentissima.
Se però si pone:
z = y 1 + ( 1 + y2 )1/2
si ha la garanzia che sempre, qualunque valore abbia y, risulti |z| < 1 e pertanto il valore di φ si calcola nel seguente modo:
φ2 = atan( z ) = z − z33 + z55 − z77 + z99 − z1111 + ... ; |z| ≤ 1
Il procedimento può essere ripetuto indefinitamente calcolando la tangente dell'angolo dimezzato dell'angolo dimezzato ovvero:
q = z 1 + ( 1 + z2 )1/2
e quindi:
φ4 = atan( q ) = q − q33 + q55 − q77 + q99 − q1111 + ... ; |q| ≤ 1
e così via col vantaggio di usare, nella sommatoria, le potenze di un numero sempre più prossimo, in valore assoluto, allo zero e dunque ottenere una convergenza sempre più veloce della sommatoria stessa.
Verifica della formula
Uso la seguente function:function atanmia(){ var ob,j,x,y,z,potdue,fi; ob=document.getElementById("tangente"); x=eval(ob.value); with(Math){ potdue=1; y=x; for(j=0;6>j;j++){ z=y/(1 + sqrt( 1 + y*y)); potdue+=potdue; y=z; } } z=y*y; fi=potdue*y*(1+z*(-1/3+z*(1/5-z/7))); alert("Valore vero : "+Math.atan(x)+ "\nValore calcolato: "+fi); }