next up previous
Next: Radici di un polinomio Up: Gli errori Previous: Gli errori

Equazioni differenziali

Vogliamo risolvere su [0,10] il problema

\begin{displaymath}y''=y, \hspace{1cm} y(0)=1, \hspace{1cm} y'(0)=-1
\end{displaymath}

la cui soluzione esatta è y(x)=e-x. Osserviamo per prima cosa che se poniamo la condizione iniziale $y'(0) = -1+\delta$ (con $\delta$ piccolo), la soluzione esatta del problema diventerebbe

\begin{displaymath}e^ {-x} + {\delta\over 2}(e^x - e^{-x}) = e^{-x}+\delta\sinh x
\end{displaymath}

che è profondamente diversa dalla precedente (non tende neppure a 0 quando x va ad infinito). Questo mostra che il problema è molto sensibile ai dati iniziali, dunque è malcondizionato. Non possiamo aspettarci grandi risultati dall'algoritmo risolutivo che adesso viene esposto.

Per risolvere l'equazione numericamente, l'idea è di discretizzare l'intervallo: scelto un opportuno passo h, si utilizzano solo i valori che y assume nei punti x+ih (per $i=0,\ldots,10/h$. Poniamo dunque

yi = y(x+ih).

Si pone il problema di approssimare l'operatore ``derivata seconda''. A tale scopo, utilizzando la formula di Taylor, si può ricavare che

\begin{displaymath}y''(x) \approx { y(x+h)-2y(x)+y(x-h) \over h^2 }
\end{displaymath}

da cui otteniamo

\begin{displaymath}y''(x+ih) \approx { y_{i+1} -2 y_i +y_{i-1} \over h^2 }.
\end{displaymath}

L'equazione iniziale si scrive allora

yi+1 = (2+h2) yi -yi-1

e l'applicazione ripetuta di questa formula a partire da due valori iniziali y0=1, y-1=eh dovrebbe permetterci di ricavare i valori successivi di y(x+ih).

L'implementazione (esemplificata in diffeq.c) mostra invece che questo sistema dà, dopo poche iterazioni, risultati addirittura negativi. In questo caso, come detto, è il problema ad essere fortemente malcondizionato. Esso va dunque trattato con metodi molto particolari.


next up previous
Next: Radici di un polinomio Up: Gli errori Previous: Gli errori
Daniele Finocchiaro
1998-11-13