Quale versione del fortran utilizzi?
A cura di Giuseppe Ciaburro
Pubblicato il 24/08/2001
Algoritmo di Eulero per l'integrazione di una equazione differenziale ordinaria.
Il m. di Eulero
consiste nel costruire una tabella di valori
, uniformemente distribuiti nel dominio di integrazione
[t0,tf] attraverso l'uso della seguente formula:
dove
Il metodo viene
anche chiamato metodo della tangente, dato che
è il coefficiente angolare della retta tangente alla
soluzione in
. In realtà, il metodo consiste nello spostarsi lungo
la tangente a partire dal punto
fino a
.
Seguendo la notazione della figura, il primo valore calcolato è dato da
mentre il secondo è dato da
Da notare che
stavolta è
. Ciò implica che, a meno che non sia
, l'errore globale non è uguale alla somma degli errori
locali.
L'errore globale può crescere con il procedere della soluzione; il suo valore assoluto è dato per definizione da
ed è, come si vede, limitato dalla somma dei valori assoluti degli errori di arrotondamento e di troncamento.
Maggiorazioni e stime dell'errore per il metodo di Eulero
Se la soluzione
ha derivata seconda continua in un intorno di
(e ciò è vero se
ed
sono continue) allora, sviluppando in serie di Taylor
intorno a
, si ha:
dove
. Combinando con la formula del metodo si ha
e, se la soluzione
al passo n è priva di errori, ossia
, l'e. di troncamento locale è
L'e. di troncamento
locale sarà maggiorato da
dove
nel dominio di integrazione.
L'e. di troncamento
globale può essere maggiorato osservando che, dopo n passi, esso sarà
al massimo pari a
, e cioè, se il passo è costante e perciò
, a
. Ciò significa che, per il metodo di Eulero, l'errore
locale e globale sono rispettivamente del secondo e del primo ordine in
.
Maggiorazioni a posteriori
La conoscenza di un maggiorante per l'errore globale, sebbene in genere sia una valutazione eccessivamente prudente, rappresenta l'unica garanzia certa della qualità di una soluzione numerica. Se si possiedono informazioni sulla soluzione esatta, è possibile determinare un maggiorante più vicino all'estremo superiore. Per esempio, dato il problema
nell'intervallo
, sia
la soluzione; sarà quindi
, e
. Dalla espressione per l'errore locale trovata in precedenza,
Un maggiorante
per
è quindi
La valutazione
del maggiorante si riduce quindi alla conoscenza di un maggiorante della soluzione
nell'intervallo di integrazione. In questo esempio illustrativo la soluzione
è ovviamente
, maggiorata da
in
, perciò
Questa rappresenta una maggiorazione a posteriori poiché richiede il possesso di informazioni sulla soluzione.
Maggiorazioni a priori
In generale, è possibile ricavare un’espressione di maggiorazione a priori, ossia dalla conoscenza della sola f, osservando che
e da questa relazione
risalire ad un maggiorante di
e di qui all'errore.
Stime dell'errore
È possibile ottenere
approssimazioni migliori delle dimensioni dell'errore per mezzo di stime dell'errore
(di solito date da espressioni funzionali che approssimano l'errore per
) — ma non si può essere certi che l'errore sia inferiore
alla stima.
Stime dell'errore sono adoperate nei metodi di controllo del passo di integrazione. Un modo semplice di farsi un'idea dell'errore è quella di eseguire il calcolo più volte per diversi valori del passo: l'approssimazione della soluzione non sarà migliore della differenza tra le due soluzioni così calcolate.
Stabilità del metodo di Eulero
Dalla definizione di errore di troncamento si ha
Se
è Lipschitziana il secondo membro può essere maggiorato come segue:
e, ricorsivamente,
Se il problema è dato sull'intervallo (a,b), per una integrazione a passo costante è t=(b-a)/M dove M è il numero totale di punti, e siccome
si ha, per M molto grande:
dove C è indipendente da Dt . L'errore finale è un multiplo limitato di quello iniziale e dunque il metodo è stabile secondo la prima definizione data. Tuttavia la stabilità da verificare ai fini pratici è quella assoluta, per la quale si ha
e pertanto la regione di stabilità assoluta è
La stabilità assoluta non garantisce ancora che la soluzione non abbia un andamento indebitamente oscillante; per ottenere ciò bisogna che lo schema sia positivo, e la condizione relativa è ancora più restrittiva.
Il metodo di Eulero: forward e backward
Il metodo di Eulero descritto fin qui è detto esplicito o forward per distinguerlo da quello implicito o backward:
Per implicito si intende uno schema in cui il secondo membro dipende dai valori ancora incogniti della variabile indipendente. Gli schemi impliciti richiedono più calcoli degli espliciti, ma offrono in genere migliori caratteristiche di stabilità. In questo caso, ad esempio, con riferimento all’equazione test, l'errore evolve secondo
e perciò la regione di stabilità assoluta è
Di seguito è riportato il codice in fortran 90 per l'integrazione di una equazione differenziale ordinaria con il metodo di Eulero.
program main
!Programma in fortran 90 per l'integrazione di una
!equazione differenziale ordinaria con il metodo di Eulero
real :: a= 1.0, b= 2.0, x=-4.0, h, t, f
integer :: n= 100, k
h = (b - a)/ real(n)
t = a
print *,t,x
do k = 1,n
x = x + h*f(t,x)
t = t + h
print*, "this is k,t,x", k,t,x
end do
end program main
function f(t,x)
real, intent(in)::x, t
f = 1.0 + x*x + t**3
end function f