La precisione in matematica
Di Cristiano Armellini, cristiano.armellini@alice.it
Consideriamo il tema del calcolo dei decimali di un qualunque numero reale con una precisione infinita.
Consideriamo lo sviluppo binomiale di
(1 + π₯)π = 1 + ππ₯ + πΆ2π π₯ + πΆ3π π₯ + β―
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 2
1∗3 3 1∗3∗5 4
π₯ +
π₯ − 4
π₯ +β―
√1 + π₯ = 1 + π₯ −
2
2∗4
2∗4∗6
2 ∗ 4!
Per x = 1 ho immediatamente la √2
1
√3
Se x =1/2 ho posso calcolare √1 + π₯ = √1 + 2 = 2 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 2
2∗5 3
π₯ +
π₯ +β―
√1 + π₯ = 1 + π₯ −
3
3∗6
3∗6∗9
3
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 π₯ 2 + π₯ + π = 0 che ha come
soluzioni π₯1,2 =
−1±√1−4π
2
. Allora se il mio obiettivo è calcolare (ad esempio) la radice quadrata di 5 basterà
porre 1-4c=5, quindi c = -1, quindi π₯ 2 + π₯ − 1 = 0, π₯ =
−1±√5
.
2
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
+
+β―
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
+ − +. .
3! 5! 7!
π₯2 π₯4 π₯6
cos(π₯) = 1 − + − +. .
2! 4! 6!
2
π₯
π₯3
π π₯ = 1 + π₯ + + +. .
2! 3!
π₯−1
1 π₯−1 3 1 π₯−1 5
ln(π₯) = 2 {(
)+ (
) + (
) +β―},π₯ > 0
π₯+1
2 π₯+1
5 π₯+1
π ππ(π₯) = π₯ −
π₯−1
1 π₯−1 2 1 π₯−1 3
ln(π₯) = {(
)+ (
) + (
) + β― } , π₯ > 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
π
24π (4π!)4
= lim
2 π→+∞ [(2π)!]2 (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