La precisione in matematica Di Cristiano Armellini, [email protected] Consideriamo il tema del calcolo dei decimali di un qualunque numero reale con una precisione infinita. Consideriamo lo sviluppo binomiale di 1 1 Ove i termini dello sviluppo sono i coefficienti binomiali C. Consideriamo quindi a = ½, a = 1/3 ecc. Nel caso a = ½, per -1 < x <= 1 ho la seguente formula 1 1 13 135 √1 1 2 24 246 2 4! Per x = 1 ho immediatamente la √2 √ Se x =1/2 ho posso calcolare √1 1 ma sconoscendo già il valore esatto del denominatore √ mi ricavo facilmente il valore del numeratore. Continuando così per x = 1/3 mi calcolo la radice quadrata di 4 (che già so essere un quadrato perfetto), quindi per x = ¼ mi calcolo la radice quadrata di 5, conoscendo la radice di 4, e per x = 1/5 la radice di 6 conoscendo già al passo precedente la radice quadrata di 5, ecc. Il metodo iterattivo è immediato quando 1 1/ 1/ e n o n+1 sono quadrati perfetti perché in questo caso applicando la formulo dello sviluppo binomiale e conoscendo il valore del quadrato perfetto, il calcolo dell’altra radice quadrata risulta immediato. Stesso ragionamento per le radici cubiche ricordando che per a = 1/3 (per -1 < x <= 1) 1 2 25 √1 1 3 36 369 Il sistema descritto consente di ottenere valori con una precisione arbitraria ma a volte risulta poco pratico. Consideriamo allora un’altra semplice tecnica. Partiamo dall’equazione 0 che ha come soluzioni , !"√!# . Allora se il mio obiettivo è calcolare (ad esempio) la radice quadrata di 5 basterà porre 1-4c=5, quindi c = -1, quindi 1 0, !"√$ . Per ottenere la soluzione in modo preciso possiamo risolvere l’equazione usando i metodi del calcolo numerico (tangenti, Newton, punto unito, bisezione) . Una volta trovato x basterà calcolare 2x+/-1 per ottenere il risultato finale. E se devo calcolare la radice ennesima di x ? n > 2 . Si possono studiare regole ad hoc come abbiamo fatto sopra per ogni n > 2 ma in generale si considera l’equazione % 0 che risolta con le tecniche di analisi numerica dà la radice ennesima di a. Un altro possibile approccio (sempre grazie a Taylor-Mc-Laurin) consiste nel considerare lo sviluppo di & ' &(% 1 ) ) ) 2! 3! Che vale per ogni x ma nella quale compare ln(a) ovvero il logaritmo naturale di a che però possiamo calcolare con una precisione infinita usando una delle formule riportate qui sotto. Usando lo sviluppo in serie di Taylor già sappiamo che possiamo calcolare con estrema accuratezza i valori di sen(x), cos(x), tan(x), ln(x), alla base di molti calcoli e applicazioni matematiche (per l’accuratezza basterà considerare molti termini della serie) Ad esempio $ + . . 3! 5! 7! 2 cos 1 . . 2! 4! 6! ' & 1 . . 2! 3! 1 1 1 1 1 $ ln 2 56 7 6 7 6 7 8, 9 0 1 2 1 5 1 *' 1 1 1 1 1 ln 56 7 6 7 6 7 8 , 9 1/2 2 3 Di queste espressioni sappiamo anche stimare l’errore che si commette considerando i primi k termini della serie La precisione è molto importante anche per il calcolo dei numeri trascendenti, il più famoso dei quali è certamente il PI greco. Usando la formula di Wallis ho 2% 4! : lim 2 %=>? @2!A 2 1 Con questa formula molto compatta proviamo a scrivere una applicativo in Python per calcolare le cifre decimali di pigreco con una precisione praticamente infinita import math; def wallis(n): m = 10**n; pi = ((2**(4*m))*(math.factorial(m))**4)/((2*m+1)*(math.factorial(2*m)**2)); k = 2*pi; return k*10^n; Ma in questo caso per ottenere una estrema precisione occorre disporre di un calcolatore particolarmente potente