Risolvi l'equazione x2 − 105·x + 1 = 0 arrotondando le, eventuali, soluzioni ad 11 cifre.
Sia F(x) = x2 − 105·x + 1. L'equazione F(x) = 0 ha sicuramente soluzioni
in quanto F è continua, il suo grafico è una parabola con la concavità rivolta verso l'alto che ha dei
punti al di sotto dell'asse delle ascisse: ad esempio
Provo a risolvere l'equazione usando la "formula risolutiva per le equazioni di 2º grado":
a*x²+b*x+c=0, (-b+sqrt(b^2-4*a*c))/(2*a), (-b-sqrt(b^2-4*a*c))/(2*a); a = c = 1, b = -1e5
Usiamo una calcolatrice efficiente, come questa, mettendo l'input dove indica la freccia:
(1e5+sqrt(-1e5*-1e5-4*1*1))/2 = 99999.99999
(1e5-sqrt(-1e5*-1e5-4*1*1))/2 = 0.000010000003385357559
Usando uno script che incopora la formula risolutiva come questo otterrei un esito analogo:
Vediamo se x2 − 105·x + 1 vale effettivamente 0 assegnando a x questi valori:
99999.99999*99999.99999 + (-1e5)*99999.99999 + 1 = 0
0.000010000003385357559*0.000010000003385357559+(-1e5)*0.000010000003385357559+1 = -3.384357558644524e-7
In un caso non ottengo 0; con una calcolatrice meno effciente non avrei ottenuto 0 neanche nell'altro caso. Come mai?
Proviamo a trovare la seconda soluzione in un modo più efficiente, usando un metodo numerico (analogo a quello di bisezione), incorporato in questo script:
0.000010000000001000000 è la soluzione arrotondata della equazione. Verifichiamola con la calcolatrice:
0.000010000000001*0.000010000000001+(-1e5)*0.000010000000001+1 = 0
OK!
Verifichiamo la cosa anche con WolframAlpha battendo
solve x^2-10^5*x+1=0 for x. Otteniamo i seguenti valori, che arrotondati a 17 cifre sono in accordo con le
uscite precedenti.
x = 0.00001000000000100000000020000000005000
x = 99999.99998999999999899999999980000
Come mai questo fenomeno? L'uso di un metodo numerico dà approssimazioni migliori in quanto usando invece la cosiddetta formula
risolutiva ci si trova di fronte al calcolo di
(105 − √(1010 − 4)) / 2 =
(105 − √(1010 − 4))(105 + √(1010 − 4)) / (2(105 + √(1010 − 4))) =
(1010 − 1010 + 4) / (2(105 + √(1010 − 4))) =
2 / (105 + √(1010 − 4))
Utilizzando questo termine troveremmo una approssimazione confrontabile con quella della soluzione ottenuta algoritmicamente:
0.000010000000001*0.000010000000001+(-1e5)*0.000010000000001+1 = 0
2 / (1e5 + sqrt(1e10-4)) = 0.000010000000001000001