Per stampare: Clicca qui oppure seleziona File » Stampa nel menù del tuo browser.

        -----------------------------------------------------------------------------------------------
        Questo intervento è stato stampato da Guide di Dada.Net
        raggiungibile a http://guide.dada.net
        -----------------------------------------------------------------------------------------------

By Fortran di Giuseppe Ciaburro
URL: http://guide.dada.net/fortran/interventi/2001/08/61578.shtml

Fortran di Giuseppe Ciaburro guida dal 04-06-2002

L'algoritmo di Eulero

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

 
Interpretazione grafica del metodo di Eulero
 

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 è 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)/ 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.

Regione di stabilità assoluta, metodo: Eulero esplicito (forward)
 
 

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 è

.
 
 
 
 
Regione di stabilità assoluta, metodo: Eulero implicito (backward)

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