Condizionamento del calcolo soluzioni di equazioni di secondo grado

La soluzione delle equazioni di secondo grado è un problema ben condizionato, ma l'usuale formula può portare a perdita di precisione.

Si consideri l'equazione di secondo grado:

$\displaystyle ax^2 +bx+c = 0 \qquad a\ne0 $

$\displaystyle \Delta = b^2-4ac > 0 \Rightarrow x_\pm = \frac{-b \pm \sqrt{\Delta}}{2a} $

Esistono due possibili casi:

\begin{displaymath}
\begin{cases}
b > 0 : x_+ = \frac{\sqrt\Delta -b}{2a} \\
b < 0 : x_- = \frac{-b -\sqrt\Delta}{\vert 2a \rvert}
\end{cases} \end{displaymath}

Nel primo caso al numeratore si presenta una sottrazione.

Se dovessero essere $ b$, $ a$, $ c$ tali che $ b^2 \gg \lvert 4ac \rvert$ allora (in termini relativi):

$\displaystyle \Delta = b^2 \ominus 4ac \approx b^2 $

Allora $ \sqrt{\Delta} \approx b$ e a causa delle proprietà della sottrazione in macchina $ \ominus$ si avrebbe perdita di precisione nel calcolo di $ \sqrt{\Delta} - b$:

$\displaystyle \sqrt{\Delta} \ominus b \to 0 $

È però sufficiente manipolare algebricamente l'$ x_+$ problematico per rimuovere l'operazione instabile:

$\displaystyle x_+ = \frac{-b+\sqrt\Delta}{2a} = \frac{\sqrt\Delta - b}{2a} \fra...
...Delta+b} = \frac{\Delta - b^2}{2a(\sqrt\Delta+b)} = \frac{-2c}{\sqrt\Delta +b} $

Dunque

Definizione 2.11 (Formula risolutiva stabilizzata per le equazioni di secondo grado)  

$\displaystyle x_1 = -\mathit{sign}(b)\frac{2c}{\vert b \rvert + \sqrt\Delta} $

$\displaystyle x_2 = -\mathit{sign}(b)\frac{\lvert b \rvert + \sqrt\Delta}{2a} $

Esempio 2.5   Siano $ b = 10$, $ t=4$:

$\displaystyle x^2 + 10x - 1 = 0 $

$\displaystyle \tilde{x}_+ = \frac{\overbrace{\sqrt{10^4 + 4}}^{10^4+4 \approx 10^4} \ominus 10^2}{2} = 0 $

$\displaystyle e = \frac{\lvert x_+ - \overbrace{\tilde{x}_+}^{\to 0} \rvert }{ \lvert x_+ \rvert} = 1 \Rightarrow 100\% $

Esempio 2.6   Siano $ t = 16$, $ \varepsilon_m = \frac{10^{-15}}{2}$ (condizioni simili a Matlab):

$\displaystyle 10^{-2}x^2 + 10^4 x - 10^{-2} = 0 $

$\displaystyle \tilde{x}_+ = \frac{\sqrt{10^8+4\cdot 10^{-4}} - 10^ 4}{2 \cdot 10^{-2}} $

$\displaystyle e = \frac{\lvert x_+ - \tilde{x}_+ \rvert }{ \lvert x_+ \rvert} = 1.1 \cdot 10^{-5} $

Si perdono ossia 10 ordini di grandezza.

Matteo Lisotto, Tobia Tesan - CC-BY 2.0