Sei sulla pagina 1di 59

Università degli Studi di Catania

Facoltà di Scienze Matematiche, Fisiche e Naturali

Corso di laurea magistrale in Informatica

Equazioni Differenziali
Ordinarie
Metodi Multi-step

Seminario di Metodi Matematici per l'Ottimizzazione

Studenti:

Rosario Distefano
Damiano Calaore
Alberto Rinaudo

Anno Accademico 2009-2010


Equazioni Differenziali Ordinarie:
metodi Multi-step

9 Dicembre 2009
Indice

1 Introduzione 1
2 Metodi numerici 8
2.1 Metodi Multi-step . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.1.1 Metodi di Adams-Bashforth . . . . . . . . . . . . . . . 22
2.1.2 Metodi di Adams-Moulton . . . . . . . . . . . . . . . . 30
2.1.3 Metodi Predictor-Corrector . . . . . . . . . . . . . . . 42

i
Capitolo 1

Introduzione

Denizioni sulle equazioni dierenziali ordinarie


Per equazione dierenziale si intende un particolare tipo di equazione fun-

zionale, in cui viene espresso un legame tra una funzione incognita e le sue

derivate.

Si parla di equazioni dierenziali ordinarie o ODE se le derivate si riferiscono

ad una sola incognita e di equazioni a derivate parziali o PDE in caso di più

variabili.

Per ordine di una equazione dierenziale si intende l'ordine massimo del-

la derivata della funzione incognita che compare nell'equazione, quindi una

funzione dierenziale di ordine n sarà del tipo:

0
F (x, y, y , ..., y n ) = 0 (1.1)

in cui la funzione y(x) è la soluzione cercata, cioè per soluzione di una

1
CAPITOLO 1. INTRODUZIONE 2

equazione dierenziale di ordine n si intende una funzione y(x) che sostituita


nell'equazione con le sue derivate no alla n-esima la verica per ogni x in

un certo intervallo (a, b). Questo ovviamente implica che y(x) deve essere

sucientemente regolare per ammettere derivate no alla n-esima in (a, b).

Notiamo come con la sostituzione zi (x) = y (i) (x) con i = 0, 1, · · · , n − 1


una equazione dierenziale ordinaria di ordine n può essere trasformata nel

seguente sistema di n equazioni dierenziali del primo ordine:


0
F (z0 , z1 , · · · , zn ) = 0






 0



 z0 = z1

 z 0 = z2


1
(1.2)
0



 z2 = z3

.

.

.





 z 0 = zn−1


n−2

Possiamo allora limitarci a studiare le equazioni del primo ordine. D'ora

in avanti considereremo pertanto una equazione dierenziale del tipo:

0
y (x) = f (x, y(x)) (1.3)

Problema di Cauchy
Spesso nei problemi che si vogliono modellare si deve trovare come evolve un

sistema a partire da dei dati iniziali; ciò si traduce imponendo che la soluzione

del problema dierenziale passi per un determinato punto del piano x − y . Si


ottiene allora il così detto problema ai valori iniziali o problema di Cauchy:
CAPITOLO 1. INTRODUZIONE 3


 y 0 (x) = f (x, y) ∀x ∈ I

(1.4)
 y(x ) = y

0 0

Il nostro problema ha quindi come dati la funzione f : Ix< → <, I ⊆ < ,

il valore iniziale (x0 , y0 ) e come risultato deve fornire una funzione y : I → <,
tale che y sia derivabile in I, con x0 ∈ I e y(x0 ) = y0 .

Alcune proprietà devono essere vericate dal problema di Cauchy perché

la soluzione del problema possa essere approssimata in modo corretto:

• esistenza: il problema ammette esistenza della soluzione?

• unicità: la soluzione è unica?

• dipendenza continua dai dati: come varia la soluzione al variare dei


dati del problema?

I primi due punti trovano risposta nel seguente:

Teorema 1. Sia f (x, y) una funzione continua in S = {(x, y)|a ≤ x ≤ b, y ∈


<}, e lipschitziana rispetto a y , allora per ogni (x0 , y0 ) ∈ S esiste ed è unica
la soluzione del problema di Cauchy (1.4).
La richiesta di lipschitzianità di f si traduce nell'esistenza di una costante

L (detta costante di Lipshitz) tale che:

|f (x, y1 ) − f (x, y2 )| ≤ L|y1 − y2 | ∀x ∈ [a, b] e ∀y1 , y2 ∈ < (1.5)

Applicando il teorema del valor medio, è facile vericare che se la derivata

ϑf δf
parziale
ϑy
esiste ed è limitata (cioè
δy
≤L ) allora f è lipschitziana in y.
CAPITOLO 1. INTRODUZIONE 4

Per quanto riguarda la dipendenza dai dati consideriamo il seguente

problema perturbato:


 Y 0 (x) = f (x, y) + δ(x)

(1.6)
 Y (x ) = y + 

0 0 0

Se f verica le condizioni del Teorema 3 e se δ(x) e 0 sono limitate allora

si può dimostrare che esistono due costanti  e k tali che:

|y(x) − Y (x)| ≤ k ∀x ∈ [a, b] (1.7)

La condizione precedente esprime una dipendenza continua della soluzione

dai dati che è molto importante per le approssimazioni numeriche perché

inevitabilmente i dati numerici sono aetti da errori.

Tale condizione, però, non è suciente a garantire che gli errori numerici

non tendano ad amplicarsi perché la costante k dipende dalla costante di

Lipschitz e dall'ampiezza (b − a) dell'intervallo su cui si vuole calcolare la

soluzione. Il valore di k può quindi diventare grande.

Dal punto di vista analitico per trovare la soluzione del problema di

Cauchy bisogna trovare tutte le soluzioni massimali dell'equazione dieren-

ziale (così detto integrale generale) per poi trovare la soluzione che verica la

condizione iniziale. Questa tecnica, però, può essere utilizzata solo in pochi

casi perché esistono solo alcune tecniche per calcolare l'integrale generale e

queste ultime non sempre possono essere usate. Pertanto è indispensabile

utilizzare dei metodi numerici che approssimano il valore della soluzione su

un insieme ssato di valori dell'incognita x.


CAPITOLO 1. INTRODUZIONE 5

Metodi numerici per il Problema di Cauchy


In questa sezione ci occuperemo dell'approssimazione numerica del problema

di Cauchy (1.4). Ovviamente daremo per scontato che il problema soddis

alle condizioni del Teorema 3 nell'intervallo I (I ⊆ <) dove vogliamo calcolare


la soluzione.

L'idea di base di tutti i metodi che vedremo è di introdurre una succes-

sione di punti {xi }ni=0 , con xi ∈ I tale che xi+1=xi +hi con i = 1, 2, 3, · · · , n−1
e di calcolare un valore approssimato ui della soluzione esatta y(xi ) . In

seguito indicheremo con:

• y(xi+1 ) la soluzione vera in xi+1

• yi+1 = ui+1 la soluzione approssimata in xi+1

Tali punti prendono il nome di nodi, x0 rappresenta il punto della con-

dizione iniziale, e i valori hi sono detti passi della discretizzazione. Più piccoli
sono i passi e maggiore sarà il numero di nodi in cui calcolo la soluzione.

Questo signica sicuramente un maggior costo computazionale che si spera

venga compensato da una maggior precisione nell'approssimazione ottenuta.

Il modo più semplice per calcolare i nodi è che questi siano equispaziati, cioè

tali che h = hi ∀i (se a e b sono gli estremi dell'intervallo di denizione della

funzione I, si ha h = b−a
n
); studieremo pertanto principalmente questo caso.

In generale quando non si riesce a determinare una qualche soluzione esat-

ta, se ne può cercare una approssimata di tipo polinomiale approssimando la

funzione con un polinomio opportuno mediante lo sviluppo della serie di


Taylor.
CAPITOLO 1. INTRODUZIONE 6

Lo sviluppo della formula di Taylor infatti serve per approssimare una fun-

zione localmente (vicino ad un punto) con un polinomio.

In particolare data una funzione f (x) (derivabile no all'ordine n) è un punto


x0 del dominio, il polinomio di Taylor di ordine n è:

1 00 1
Pn (x) = f (x0 ) + f 0 (xo )(x − x0 ) + f (x0 )(x − x0 )2 + f 000 (xo )(x − x0 )3 + ...+
2! 3!

1 (n)
+ f (x0 )(x − x0 )n
n!

Notiamo che il polinomio di Taylor di grado 1 in x0 altro non è che l'ap-

prossimazione della funzione con la retta tangente nel punto x0 .

Consideriamo una successione di nodi {xi }ni=0 , xi ∈ I :

xi+1 = xi + hi con i = 0, ..., n − 1

con x0 punto della condizione iniziale ed hi passo della discretizzazione. Sup-

poniamo hi = h.
Se a e b sono gli estremi di I, si ha:

b−a
h=
n

Indicando con y(xi+1 ) la soluzione vera in xi+1 e con yi+1 la soluzione

approssimata in xi+1 , e supponendo che y(x) sia sucientemente regolare, si

ha:

h2 00
y(xi+1 ) = y(xi ) + hy 0 (xi ) + y (xi ) + ...
2
CAPITOLO 1. INTRODUZIONE 7

Troncando la serie al k -esimo termine, otteniamo:

yi+1 = yi + hTk (xi , yi ; h)

con:

hk−1 (k)
Tk (xi , yi ; h) = y 0 (xi ) + ... + y (xi )
k!

Poichè però è richiesto il calcolo delle derivate, tale metodo non è conveniente.
Capitolo 2

Metodi numerici

Spesso trovare una soluzione per via analitica è un'operazione piuttosto dif-

cile e se anche fosse possibile trovare tale soluzione, potrebbe comunque

risultare dicoltoso ottenerne una espressione esplicita. Per tali ragioni si

ricorre a metodi numerici.

I metodi numerici per la risoluzione di una ODE possono essere ad un passo

o a più passi.

2.1 Metodi Multi-step


Introduzione ai Metodi Multistep lineari
(per la soluzione di equazioni lineari di primo ordine)

Concettualmente, un metodo numerico inizia da un punto iniziale e poi

tramite un passo computazionale (metodo) trova il punto di soluzione suc-

cessiva. Il processo continua con i passi successivi per mappare la soluzione.

8
CAPITOLO 2. METODI NUMERICI 9

I Metodi a Passo Singolo (come ad esempio il Metodo di Eulero ) si riferiscono


ad un solo punto precedente e dei suoi derivati per determinare il valore cor-

rente.

I Metodi a più Passi o Multistep sono un tentativo di guadagnare in e-

cienza della soluzione (cioè ricercano una soluzione più accurata possibile),

mantenendo e utilizzando le informazioni provenienti da passaggi precedenti,

piuttosto che abbandonarle. Di conseguenza, i metodi multistep si riferiscono

a diversi punti precedenti ed ai loro valori derivati.

Nel caso dei metodi multistep lineari per calcolare il valore di y per il

passo corrente desiderato, viene utilizzata una combinazione lineare dei punti

precedenti yi e dei loro valori derivati yi0 .

Metodi Espliciti-Impliciti
Un metodo si dice esplicito, se yi+1 dipende solo dai valori dei passi prece-
denti, mentre si dice implicito se yi+1 dipende anche da se stesso, attraverso

la funzione f. Questi ultimi metodi richiedono la soluzione di una equazione

non lineare se f è non lineare in y.


Metodi Impliciti e Metodi Multipasso
I Metodi One-Step di tipo esplicito, in cui ad ogni passo la soluzione nel

punto ti+1 viene facilmente calcolata utilizzano in modo opportuno i valori

già noti nei nodi precedenti sono schemi in generale poco costosi e facili da

implementare, ma presentano spesso dei fenomeni di instabilità numerica so-

prattutto quando la soluzione esatta del problema che si sta approssimando

presenta dei forti gradienti (ricordiamo che il gradiente di una funzione è


CAPITOLO 2. METODI NUMERICI 10

dento come il vettore che ha per componenti cartesiane le derivate parziali

della funzione. Il gradiente rappresenta quindi la direzione di massimo incre-

mento di una funzione di n variabili).

Spesso per ottenere una soluzione non oscillatoria si dovrebbe utilizzare un

passo h così piccolo da rendere proibitivo l'uso di metodi espliciti. In questi

casi è indispensabile ricorrere a dei metodi impliciti, cioè a dei metodi in

cui la funzione f deve essere valutata anche in yi+1 . Vediamo allora come

possono essere ricavati dei metodi di questo tipo. Dal teorema fondamentale

del calcolo integrale e dalla 1.3 otteniamo:

Z tn+1
yn+1 = yn + f (t, y(t))dt (2.1)
tn

Se ora usiamo degli schemi numerici per approssimare l'integrale denito

in 2.1 otteniamo degli schemi per approssimare il Problema di Cauchy. Se

per esempio approssimiamo l'integrale con l'area del rettangolo di base h


ed altezza f (tn , un ) (un soluzione discreta), otteniamo il Metodo di Eulero
Esplicito :

un+1 = un + hf (tn , un ) (2.2)

mentre se usiamo l'area del rettangolo di base h ed altezza f (tn+1 , un+1 )


otteniamo il Metodo di Eulero Implicito :

un+1 = un + hf (tn+1 , un+1 ) (2.3)

Utilizzando la stessa tecnica si possono ottenere anche metodi così detti


CAPITOLO 2. METODI NUMERICI 11

a più passi, cioè in cui il valore di un+1 dipende non solo da un , ma anche

dagli altri valori un−1 , un−2 , . . . , un−q calcolati precedentemente.

Sostituendo all'integrale di f nell'equazione 2.1 l'integrale del polinomio

che interpola f nei nodi tn−q , tn−q+1 , . . . , tn , si ottengono i così detti Metodi di
Adams-Bashforth che sono di tipo esplicito, mentre sostituendo all'integrale

di f nell'equazione 2.1 l'integrale del polinomio che interpola f nei nodi

tn−q , tn−q+1 , . . . , tn , tn+1 , si ottengono i così detti Metodi di Adams-Moulton


che sono impliciti.

Sottolineiamo il fatto che per poter innescare un metodo multipasso non è

più suciente il solo dato iniziale del problema di Cauchy, ma sono necessari

q valori iniziali che andranno calcolati con un metodo, per esempio, ad un

passo. Inoltre questi dati iniziali devono essere calcolati con una precisione

che dipende dall'ordine del metodo multipasso che si vuole utilizzare per non

pregiudicarne l'approssimazione.

L'equazione principale dei Metodi Multistep si ottiene dall'equazione 2.1


supponendo che l'intervallo di integrazione [t0 , T ] sia suddiviso in un certo

T −t0
numero di intervallini (N) di ampiezza h (passo di discretizzazione (
N
))

ed integrando l'equazione da tn−j a tn+k :

Z tn+k
y(tn+k ) = y(tn−j ) + f (t, y(t))dt (2.4)
tn−j

Per trasformare questa relazione esatta in un metodo numerico, possi-

amo applicate una formula di quadratura per il calcolo dell'integrale. Poiché

il valore numerico della funzione y(t) è noto nei punti equidistanziati (ti =
ti−1 + h i = 1, . . . , N ) della successione, appare naturale utilizzare per il
CAPITOLO 2. METODI NUMERICI 12

calcolo dell'integrale le formule di Quadratura di Newton-Cotes.


Utilizzando allora q+1 punti, tn−q , . . . , tn , costruiamo il polinomio di La-
grange ed integriamolo nell'intervallo [tn−j , tn+k ]

q
X
pq (x) = f (tn−i , yn−i )Li (x) (2.5)
i=0

dove Li (x) rappresentano i polinomi elementari di Lagrange, cioè:

q
Y x − xn−l
Li (x) = (2.6)
l=0 l6=i
xn−i − xn−l

Sostituendo quindi il polinomio nell'integrale, si ottiene la seguente re-

lazione fra i valori della yi

q
X
yn+k = yn−j + h βqi fn−i (2.7)
i=0

dove, per compattezza di notazione si è posto

fl ≡ f (tl , yl ) (2.8)

e dove i coecienti βqi si ottengono per integrazione dei polinomi elemen-

tari di Lagrange

Z tn+k Z k q
1 Y x+l
βqi = Li (t)dt = dx (2.9)
h tn−j −j l=0 l6=i
−i + l

A seconda dei diversi valori di k, j e q si ottengono dierenti metodi

multistep. In particolare, per k=1 e j=0 si ottengono i cosiddetti metodi

di Adams-Bashforth
CAPITOLO 2. METODI NUMERICI 13

q
X
yn+1 = yn + h βqi fn−i (2.10)
i=0

Per k=0 e j=1 otteniamo i cosiddetti metodi di Adams-Moulton :

q
X
yn = yn−1 + h βqi fn−i (2.11)
i=0

che può essere riscritta nel seguente modo

q
X
yn+1 = yn + h βqi fn−i+1 (2.12)
i=0

Inne, scegliendo k=1 e j=1 otteniamo i metodi di Nyström

q
X
yn+1 = yn−1 + h βqi fn−i (2.13)
i=0

dove per q=0 si ottiene il metodo del punto medio

yn+1 = yn−1 + 2hf (tn , yn ) (2.14)

Riportiamo di seguito alcuni esempi di questi metodi con il loro ordine.

Metodi di Adams-Bashforth:

h
un+1 = un + [3fn − fn−1 ] secondo ordine (2.15)
2

h
un+1 = un + [23fn − 16fn−1 + 5fn−2 ] terzo ordine (2.16)
12
CAPITOLO 2. METODI NUMERICI 14

Metodi di Adams-Moulton:

h
un+1 = un + [fn+1 − fn ] secondo ordine (2.17)
2

h
un+1 = un + [5fn+1 − 8fn + fn−1 ] terzo ordine (2.18)
12

Denizione del problema Multistep Lineare

Una generalizzazione dei metodi multistep che include i metodi Adams, è da-

ta dalla famiglia dei metodi multistep lineari. Il metodo multistep utilizzerà i

precedenti q passi per calcolare il valore successivo. Di conseguenza, il valore

desiderato nella fase attuale di trasformazione è yn+q .

Un metodo multistep lineare può essere descritto nella forma seguente:

q q
X X
ai yn−i = h bi fn−i (2.19)
i=0 i=0

che può essere esplicitata nella seguente forma:

yn+q + aq−1 yn+q−1 + aq−2 yn+q−2 + . . . + a0 yn h ·

· [bq f (tn+q , yn+q ) + bq−1 f (tn+q−1 , yn+q−1 ) + . . . + b0 f (tn , yn )] (2.20)

dove h indica la dimensione del passo ed f il lato destro della equazione


CAPITOLO 2. METODI NUMERICI 15

dierenziale y 0 (x) = f (x, y(x)) .

I coecienti a0 , . . . , aq−1 e b0 , . . . , b q determinare il metodo.

Il progettista del metodo sceglie i coecienti, spesso, molti coecienti sono

pari a zero. In genere, il progettista sceglie i coecienti in modo che saprà

esattamente interpolare y(t) quando questa funzione sarà un polinomio di

n-esimo ordine.

Considerazioni:

Se il valore di bq è diverso da zero, allora il valore di yn+q dipende dal valore

di f (tn+q , yn+q ) . Di conseguenza, il metodo è esplicito se bq = 0. In tal caso,

la formula può essere calcolare direttamente come yn+q . Se bq 6= 0 allora il

metodo è implicito e l'equazione per yn+q deve essere risolta. Metodi iterativi

come il metodo di Newton sono spesso utilizzati per risolvere la formula

implicita.

A volte un metodo multistep esplicito viene utilizzato per prevedere il

valore di yn+q . Tale valore viene poi utilizzato in una formula implicita per

correggere il valore. Il risultato è un Metodo Predictor-Corrector.

Equazioni alle dierenze lineari


Per una analisi dei metodi multistep è necessario sviluppare un po' di nozioni

teoriche sulle equazioni alle dierenze lineari. Una equazione nella forma:

ak zn+k + ak−1 zn+k−1 + . . . + a1 zn+1 + a0 zn = bn (2.21)

è detta equazione lineare alle dierenze di ordine k, dove ak , ak−1 , . . . , a0 , bn


CAPITOLO 2. METODI NUMERICI 16

sono funzioni di n, essendo n appartenente all'insieme dei numeri interi con-

secutivi. Cominciamo con il considerare il caso di una equazione omogenea:

ak zn+k + ak−1 zn+k−1 + . . . + a1 zn+1 + a0 zn = 0 n = 0, 1, . . . (2.22)

Se ak 6= 0 , allora si può trovare una soluzione per ogni scelta dei valori

iniziali z0 , z1 , . . . , zk−1 e tale soluzione è unica. Se zi = 0 con i = 0, ..., k − 1,


si ha l'unica soluzione zk = 0 . Chiaramente, una soluzione è data da una

qualunque successione che verichi l'equazione data. Poiché tali equazioni

sono collegate alla soluzione delle equazioni dierenziali ordinarie, l'indice

discreto n della successione sostituisce la variabile indipendente continua

t delle equazioni dierenziali ordinarie. Se due successioni {yn }, {zn } sono

soluzioni, allora anche Ayn +Bzn è soluzione, con A e B costanti arbitrarie. La

soluzione generale può essere scritta come {yn +zn } , dove {yn } è la soluzione
dell'equazione omogenea e zn una soluzione particolare dell'equazione non

omogenea, che può essere trovata risolvendo rispetto ad un particolare valore

iniziale.

Inne, due soluzioni sono linearmente indipendenti in n se @A, B : A2 +


B 2 > 0 : Ayn + Bzn = 0 n = 0, 1, . . . . In analogia alle ODE lineari, si

cercano soluzioni della forma:

zn = xn (2.23)

Per cui, sostituendo nell'equazione, si ha:


CAPITOLO 2. METODI NUMERICI 17

ak xn+k + ak−1 xn+k−1 + . . . + a1 xn+1 + a0 xn = 0 (2.24)

Dividendo per xn si ha:

ak xk + ak−1 xk−1 + . . . + a1 x + a0 = 0 (2.25)

cioè x è una radice del polinomio caratteristico:

p(x) = ak xk + ak−1 xk−1 + . . . + a1 x + a0 (2.26)

Se r1 , r2 , . . . , rk sono gli zeri di p(x), allora:

zi = γ1 (r1 )i + γ2 (r2 )i + . . . + γk (rk )i i = 0, 1, . . . (2.27)

è soluzione della equazione.

Esempio

zn+2 + zn+1 − 6zn = 0


p(x) = x2 + x − 6 r1 = 2, r2 = −3
zi = γ1 2i + γ2 (−3)i i = 0, 1

con γ1 , γ2 costanti.

Se una radice ha molteplicità m allora {ri }, {iri }, . . . , {im−1 ri } con i=


0, 1, . . . soddisfano l'equazione alle dierenze.

Esempio

p(x) = (x − 2)3 (x − 3)2 r1 = 2, r2 = −3


zi = γ1 2i + γ2 i(2)i + γ3 i2 2i + γ4 3i + γ5 i3i i = 0, . . . , k − 1
CAPITOLO 2. METODI NUMERICI 18

Convergenza
Per i metodi multistep l'analisi della convergenza è più complicata rispetto

ai metodi ad un passo in quanto:

i) la soluzione approssimata è inuenzata anche dagli errori nei valori di

partenza:

ej = yj − y(xj ) per j = 0, . . . , k − 1 . Tali valori si dicono consistenti

se:

lim |yj (h) − y(xj )| = 0 j = 0, . . . , k − 1 (2.28)


h→0

ii) i metodi multistep possono essere instabili. Per mostrare ciò consideri-

amo il problema test:


 y 0 = λy

(2.29)
 y(0) = 1

la cui soluzione è y(x) = eλx . Analizziamo il comportamento di qualche


metodo multistep nel caso λ < 0. Consideriamo il Metodo del Punto
Medio:

yn+2 = yn + 2hfn+1 (2.30)

la cui equazione alle dierenze associata è:

x2 − 2hλx − 1 = 0 (2.31)
CAPITOLO 2. METODI NUMERICI 19

le cui soluzioni sono:

√ √
r1 = hλ + 1 + h2 λ2 e r2 = hλ − 1 + h2 λ2 (2.32)

La soluzione generale di tale equazione è:

yn = β1 r1n + β2 r2n (2.33)

Ricaviamo β1 e β2 :


 y0 = 1 = β1 + β2

(2.34)
 y1 = ehλ = β1 r1 + β2 r2

da cui segue:

ehλ − r2 r1 − ehλ
β1 = √ = 1+O(h2 λ2 ) e β2 = √ = O(h3 λ3 )
2 1 + h2 λ2 2 1 + h2 λ2
(2.35)

Osserviamo che:

Per h → 0, β1 → 1, β2 → 0 .

Per λ > 0, |r1 | > |r2 | > 0 ed il termine dominante è β1 r1n .

Per λ < 0, 0 < |r1 | < 1, r2 < −1 ed il termine dominante è β2 r2n .

Pertanto, per λ<0 la soluzione diverge da quella vera. Questo accade

perché la ODE ha una sola soluzione, mentre l'equazione alle dierenze di


CAPITOLO 2. METODI NUMERICI 20

ordine k ha k soluzioni di cui una corrisponde alla soluzione vera. Perché si

abbia convergenza è quindi necessario che le altre soluzioni rimangano lim-

itate. Analizziamo, quindi, il comportamento delle equazioni alle dierenze

relativamente al problema della stabilità.

Denizione 1. L'equazione alle dierenze:

k−1
X
Zn+k + am an+m = 0 n = 0, 1, . . . (2.36)
m=0

con coecienti a0 , . . . , ak−1 costanti è detta stabile, se tutte le sue soluzioni


sono limitate.

Per cercare delle condizioni facilmente vericabili per stabilire la conver-

genza di un metodo multistep, partiamo dall'errore locale di discretizzazione:

k
X k
X
hτ = αj y(x + hj) − h βj y 0 (x + hj) (2.37)
j=0 j=0

Abbiamo visto che il metodo è consistente se τ →0 per h→0 . È detto

di ordine p se τ h = θ(hp+1 ) . Se y(x) è sucientemente dierenziabile, si può


esprimere hτ come:

hτ = C0 y(x) + C1 hy 0 (x) + . . . + Cp hp y (p) (x) + . . . (2.38)

Infatti, espandendo y(x + hj) e y 0 (x + hj) intorno ad x, si ha:

(hj)2
y(x + hj) = y(x) + hjy 0 (x) + y 00 (x) + ... (2.39)
2
CAPITOLO 2. METODI NUMERICI 21

(hj)2
y 0 (x + hj) = y 0 (x) + hjy 00 (x) + y 000 (x) + ... (2.40)
2

che dà hτ se poniamo:

C0 = α0 + α1 + . . . + αk
C1 = α0 + 2α2 + . . . + kαk − (β0 + β1 + . . . + βk )
......
1 1
Cn = n!
(α1 + 2n α2 + . . . + k n αk ) − (n−1)!
(β1 + 2n−1 β2 + . . . + k n−1 βk )
......
(2.41)

Se C0 = C1 = . . . = Cp = 0, con Cp+1 6= 0, allora il metodo è di ordine p.

Un metodo che è almeno di ordine 1 è detto consistente. Allora una

condizione necessaria per la convergenza è la consistenza, ma essa non è

suciente. Solo se anche la condizione della radice è soddisfatta si ha con-

vergenza.

Un metodo multistep si dirà relativamente stabile se:

|r1 | > |ri | per i = 2, . . . , k (2.42)

L'intervallo di stabilità relativa è il più grande intervallo (α, β) , con

α ≤ 0 ≤ β, tale che il metodo è relativamente stabile ∀hλ ∈ (α, β) . Se λ è

grande, h dovrà essere piccolo. Con tale tipo di stabilità si controlla l'errore

relativo.
CAPITOLO 2. METODI NUMERICI 22

Assoluta stabilità
Spesso è importante fare un'analisi di stabilità tenendo il passo h ssato e ciò
permette di controllare l'errore assoluto. Un metodo è assolutamente stabile

se gli errori ai passi precedenti non aumentano. Tale concetto si applica anche

ai metodi one-step.

Diremo che un metodo multistep soddisfa la condizione assoluta delle

radici, se esiste un h0 > 0 tale che:

|rj (hλ)| < 1 j = 0, . . . , k ∀h ≤ h0 (2.43)

Pertanto, condizione necessaria e suciente anché un metodo multistep

sia assolutamente stabile, ovvero anché yn → 0 per tn → ∞ , è che esso

soddis la condizione assoluta delle radici. L'assoluta stabilità implica la zero

stabilità, mentre non è vero il viceversa.

2.1.1 Metodi di Adams-Bashforth


Sostituendo all'integrale di f nell'equazione 2.1 l'integrale del polinomio che

interpola f nei punti tn−p , tn−p+1 , . . . , tn si ottiene quindi una classe di metodi

detta di Adams-Bashforth. Questi metodi sono espliciti, il che vuol dire che

per calcolare l'approssimazione n-esima utilizzano una combinazione lineare

delle prime n−1 approssimazioni. Integrando quindi l'equazione 2.1, dopo

aver sostituito l'integrale del polinomio, otteniamo l'equazione a partire da

cui vengono deniti i metodi multistep di Adams:


CAPITOLO 2. METODI NUMERICI 23

p
X
yn+k = yn−j + βpi fn−i (2.44)
i=0

dove

Z tn+k p Z k
1 Y x+l
fi ≡ (ti , yi ) e βpi = Li (x)dx = dx (2.45)
h tn−j −j l=0 −i + l
l6=i

sostituendo in questa equazione i valori k=1 e j=0 otteniamo quindi

la classe di metodi di Adams-Bashforth.

La formula che esplicita questa classe di metodi diventa quindi:

p Z 1 p
X Y x+l
yn+1 = yn + h βpi fn−i con βpi = dx (2.46)
i=0 0 l=0
−i + l
l6=i

a partire da questa formula, ponendo p = 1, 2, 3, 4, . . . otteniamo i diversi

metodi della classe di Adams-Bashforth, in particolare:

• per p = 1 l'equazione diventa: yn = yn−1 + hfn−1 : Adams-Bashforth a 1


passo: questa è una degenerazione del metodo multistep in un metodo

onestep, in particolare questa equazione rappresenta il metodo di Eulero

esplicito;

h
• per p = 2 l'equazione diventa: yn = yn−1 + 2
[3fn−1 − fn−2 ]: Adams-

Bashforth a 2 passi: con questo metodo per calcolare l'approssimazione

n-esima vengono utilizzate le approssimazioni trovate al passo n−1 e

n−2 ;
CAPITOLO 2. METODI NUMERICI 24

h
• per p = 3 l'equazione diventa: yn = yn−1 + 12 [23fn−1 − 16fn−2 + 5fn−3 ]:
Adams-Bashforth a 3 passi.

h
• per p = 4 l'equazione diventa: yn = yn−1 + 24 [55fn−1 − 59fn−2 + 37fn−3 − 9fn−4 ]:
Adams-Bashforth a 4 passi.

Vediamo adesso un esempio pratico sull'applicazione di questi metodi.

Esaminiamo la funzione


 y 0 = −y + 5 · e−t · cos(5 · t − π)

(2.47)
 y(0) = 0

la cui soluzione esatta è:

y(x) = e−t · sin(5 · t − π)

risolviamola i metodi di Adams-Bashforth a 2,3 e 4 passi: poniamo l'in-

tervallo di approssimazione [t0 , tf ] = [0, 5] e il numero di approssimazioni

da calcolare all'interno dell'intervallo N = 10. Lo step size sarà quindi

tf −t0 1
h= N
= 2
, le formule diventeranno quindi:

yn = yn−1 + 14 [3fn−1 − fn−2 ]


1
yn = yn−1 + 24
[23fn−1 − 16fn−2 + 5fn−3 ]
1
yn = yn−1 + 48
[55fn−1 − 59fn−2 + 37fn−3 − 9fn−4 ]

la routine in codice matlab per la risoluzione con il metodo di Adams-

Bashforth a 2 passi è:
CAPITOLO 2. METODI NUMERICI 25

Algorithm 1 Adams Barhforth di ordine 2


function [ t, y ] = Adams-Bashforth-ordine2( func, t0, tf, y0, N )
% inizializzo il valore di h
h = ( tf  t0 ) / N;

f = inline( func );

% inizializzo il vettore dei valori delle ascisse


t = linspace( t0, tf, N );

% inizializzo il vettore dei valori delle ordinate


y = zeros( 1, N );

% pongo il primo valore uguale al valore iniziale


y( 1 ) = y0;

% calcolo il secondo valore con Eulero esplicito


y( 2 ) = y( 1 ) + h * f( t( 1 ), y( 1 ) );

% calcolo le restanti approssimazioni come combinazione lineare


% delle due approssimazioni precedenti
for n=3:N
y( n ) = y( n - 1 ) + h / 2 * ( 3 * f( t( n - 1 ), y( n - 1 ) ) - f( t( n  2 ), y(
n  2 ) ) );
end

end
CAPITOLO 2. METODI NUMERICI 26

Essendo un metodo a 2 passi il valore iniziale non è suciente ad eseguire

la routine di risoluzione, utilizziamo quindi il metodo di Eulero esplicito per

il calcolo del punto y(2) . In questo modo diventa possibile l'esecuzione della
routine di risoluzione. I metodi di risoluzione a 3 e 4 passi funziona analoga-

mente, in questo caso però abbiamo bisogno rispettivamente di 3 e 4 punti

iniziali. Applichiamo quindi Eulero esplicito per ottenere tutti i valori e ap-

plichiamo poi la routine a partire da questi punti iniziali. Il graco delle

soluzioni è quindi quello sottostante:


CAPITOLO 2. METODI NUMERICI 27
CAPITOLO 2. METODI NUMERICI 28

1
come è possibile notare il passo di integrazione risulta troppo grande,
2

e i metodi a 3 e 4 passi non convergono alla soluzione reale. Per ottenere la

1
convergenza del metodo del metodo a 3 passi basta porre , per ottenere
4

invece una buona approssimazione con il metodo Adams-Bashforth a 4 passi

1
dobbiamo porre il passo di integrazione :
8
CAPITOLO 2. METODI NUMERICI 29
CAPITOLO 2. METODI NUMERICI 30

2.1.2 Metodi di Adams-Moulton


Il metodo di Adams-Moulton è simile a quello di Adams-Bashforth. Sos-

tituendo all'integrale della funzione f (t, y(t)) nell'equazione 2.4 l'integrale

1
del polinomio interpolatore di Lagrange (di grado p + 1 per ottenere il meto-
do Adams-Moluton a p+1 passi) che interpola la f nei nodi si ottengono i

così detti metodi di Adams-Multon che sono impliciti. Da notare infatti che

il polinomio interpolatore utilizza non solo i punti tn−p , tn−p+1 , . . . , tn , tn+1


come per Adams-Bashforth, metodo esplicito, ma anche tn+1 .

La formula che esplicita questa classe di metodi è:

1 In analisi numerica, l'interpolazione polinomiale è il interpolazione di un determinato

insieme di dati con un polinomio: dati alcuni punti, trovare un polinomio che passa proprio

attraverso questi punti.


CAPITOLO 2. METODI NUMERICI 31

p pZ 0
X Y x+l
yn = yn−1 + h βpi fn−i con βpi = dx (2.48)
i=0 −1 l=0 −i + l
l6=i

sebbene sia preferibile scriverla nel seguente modo:

p
X
yn+1 = yn + h βpi fn−i+1 (2.49)
i=0

a partire da questa formula, ponendo p = 1, 2, 3, 4, 5, . . . otteniamo i

diversi metodi della classe di Adams-Moulton, in particolare:

• per p=1 l'equazione diventa: yn = yn−1 + hfn : Adams-Moulton a 1

passo (questa è una degenerazione del metodo multistep in un meto-

do one-step, in particolare questa equazione rappresenta il metodo di

Eulero implicito);

h
• per p = 2 l'equazione diventa: yn+1 = yn + 2
[fn+1 + fn ]: Adams-

Moulton a 2 passi;

5
• per p=3 l'equazione diventa: yn+2 = yn+1 + h( 12 fn+2 − 23 fn+1 − 12
1
fn ):
Adams-Moulton a 3 passi;

• per p = 4 l'equazione diventa: yn+3 = yn+2 +h( 83 fn+3 + 19 5


f − 24
24 n+2
fn+1 +
1
f ): Adams-Moulton a 4 passi;
24 n

h
• per p=5 l'equazione diventa: yn+4 = yn+3 + 720
(251fn+4 + 646fn+3 −
264fn+2 + 106fn+1 − 19fn ): Adams-Moulton a 5 passi;

• ...
CAPITOLO 2. METODI NUMERICI 32

Risolutore Adams-Moulton per ODE


Per risolvere un equazione dierenziale, si possono implementare in Matlab

delle funzioni, cercando di applicare uno dei metodi conosciuti e studiati.

Verranno implementati i metodi di Adams-Moulton dal primo al quinto or-

dine (RISOLU ZION E _ODE.m).


Interfaccia
Innanzitutto si è creata un intuitiva interfaccia graca in cui è possibile

specicare:

• la funzione dierenziale da risolvere y 0 = f (t, y(t));

• la soluzione y(t) della funzione diernziale;

• l'intervallo di integrazione t0 , . . . , tf ;

• il valore iniziale dell'integrazione y(0);

• il numero di intervalli per cui vogliamo integrare la funzione (questo

valore non è valido per le funzioni built-in di Matlab ode45, ode23 ed

ode113 poiché queste sono funzioni adattive che calcolano la soluzione

a meno di un errore prestabilito) (nel caso in cui il valore immesso sia

minore o uguale a 5 → N = (abs(t0 − tf )/M axStep = 0.1 ∗ abs(t0 −


tf )) = 10);

• Metodo desiderato per risolvere l'equazione dierenziale:

 ode45

 ode23

 ode15s
CAPITOLO 2. METODI NUMERICI 33

 EuleroI (metodo di Adams-Moulton di primo ordine, metodo di

Eulero-Implicito) (f ile : euleroi mplicito.m)

 AM2 (metodo di Adams-Moulton di secondo ordine)

(f ile : Adamsm oultono rdine2.m)

 AM3 (metodo di Adams-Moulton di terzo ordine)

(f ile : Adamsm oultono rdine3.m)

 AM4 (metodo di Adams-Moulton di quarto ordine)

(f ile : Adamsm oultono rdine4.m)

 AM5 (metodo di Adams-Moulton di quinto ordine)

(f ile : Adamsm oultono rdine5.m)

 all (all: esegue i metodi ode45, ode23 e ode 113 ed il metodo di

Adams-Moulton di ordine specicato nella successiva imput-box)

 allAM (allAM: esegue il metodo di Adams-Moulton per tutti e

cinque gli ordini implementati e con il numero di intervalli speci-

cato, inoltre richiama anche una funzione

• Ordine del metodo di Adams-Moulton, scelta valida solo per il metodo

all (metti 0 se non hai scelto il metodo di risoluzione di Adams-Moulton


o se hai scelto Adams-Moulton per tutti e cinque gli ordini )
CAPITOLO 2. METODI NUMERICI 34

Figura 2.1: Interfaccia.


CAPITOLO 2. METODI NUMERICI 35

Metodo utilizzato per risolvere le formule implicite


Essendo il metodo di Adams-Moulton un metodo implitico in cui è richiesta,

ad ogni passo, la risoluzione di una equazione non lineare, si è dovuto pertanto

trovare un metodo per calcolare la soluzione di equazioni non lineari. Nel

metodo di Eulero implicito, la soluzione numerica e calcolata come si è detto

attraverso la formula:

yn+1 = yn + hf (tn+1 , yn+1 ) n = 0, 1, . . . , N − 1 (2.50)

e quindi il valore yn+1 è la soluzione y ◦ , ad ogni passo temporale, denita


implicitamente dall'equazione non lineare:

y ◦ − yn + hf (tn+1 , y ◦ ) = 0 (2.51)

Se f ha una forma particolarmente semplice (per esempio e lineare) è

possibile esplicitare y◦ direttamente, altrimenti è necessario ricorrere ad un

metodo numerico per la soluzione di equazioni non lineari. A tal proposito

si può scegliere il metodo preferito, come per esempio quello di Newton, o

adarsi alla funzione di Matlab fzero.


function fzero di Matlab
In fzero sono accoppiati un metodo a convergenza veloce (interpolazione

quadratica inversa) insieme ad un metodo tipo bisezione, per determinare un

intervallo in cui f cambi segno, e per evitare che il metodo diverga. La chiama-

ta più semplice è: >> x = f zero(f unzione, x0) dove funzione è una stringa

di caratteri che contiene il nome della funzione di cui si sta cercando uno zero,

ed x0 è un valore di partenza, dal quale cominciare la ricerca. Come si può in-


CAPITOLO 2. METODI NUMERICI 36

tuire l'esito della ricerca (e la velocità di convergenza) dipendono fortemente

dalla scelta di x0. Si ottiene un controllo maggiore su fzero, se x0 è assegnato


come vettore a due componenti (p.e. x0 = [a, b]). In questo caso fzero limita

la ricerca all'interno di [a, b]. Per avere un controllo maggiore su fzero e sapere
che cosa sta facendo, dobbiamo modicare le opzioni disponibili. Questo si

ottiene con la function optimset, per esempio per imporre una tolleranza rel-

ativa uguale a 0.001: >> x = f zero(f unzione, x0, optimset(0 T olX 0 , 1e − 3))

Per risolvere l'equazione y ◦ − yn + hf (tn+1 , y ◦ ) = 0 si è utilizzato il seguente

comando:

y(n+1) = fzero [@(ys) ys-h*f(t(n+1), ys) -y(n), y(n)]

dove '@(ys) ys-h*f(t(n+1), ys)' sta ad indicare che voglio cercare la soluzione

dell'equazione:

ys - h f(t(n+1),ys) - y(n) =0

considerando come incognita ys; mentre il secondo parametro y(n) sta

ad indicare che verrà scelto questo valore (il precedente) come stima iniziale

della soluzione.

La funzione fzero è stata utilizzata anche per implementare tutti i metodi de

Adams-Moulton.

Esempi e risultati sperimentali


Vediamo adesso un esempio pratico sull'applicazione di questi metodi.

Esaminiamo la funzione
CAPITOLO 2. METODI NUMERICI 37


 y 0 = −y + 5 · e−t · cos(5 · t − π)

(2.52)
 y(0) = 0

la cui soluzione esatta è:

y(t) = e−t · sin(5 · t − π)

Vogliamo integrare l'equazione dierenziale da t0 = 0 a tf = 3 con con-

dizione iniziale y0 = 0 . Risolvendo questo PVI (problema a valori iniziali)

con i vari ordini del metodo di Adams-Moulton. Impostando un numero di

passi pari a 20 (h = (abs( 0−3


20
)) = 0.15), otteniamo i seguenti risultati:
CAPITOLO 2. METODI NUMERICI 38

Figura 2.2: Adams-Moulton: per N = 20, h = 0.15.


CAPITOLO 2. METODI NUMERICI 39

La routine in codice matlab per la risoluzione con il metodo di Adams-

Moulton a 2 passi è:

Algorithm 2 Adams Moulton di ordine 2


function [t,y] = Adams-Moulton-ordine2(fname,t0,tf,y0,N,)
f=inline(fname);
h=abs(t0-tf )/N; % inzializzo il valore di h: passo di discretizzazione
y = zeros(N,1); % inizializzo il vettore delle soluzioni (ordinate)
t = linspace(t0,tf,N); % inizializzo il vettore delle ascisse
y(1) = y0; % pongo il primo valore uguale al valore iniziale
y(2)=fzero(@(ys) ys-h*f(t(2),ys)-y(1),y(1)); % formula di eulero-implicito

% calcolo le restanti approssimazioni come combinazione lineare


% delle due approssimazioni precedenti
for n=2:N-1
% Adams-Moulton del secondo ordine
y(n+1)=fzero(@(ys) ys-y(n)-(1/2)*h*(f(t(n+1),ys)+f(t(n),y(n))), y(n) );
end

end

Essendo Adams-Moulton di secondo ordine un metodo a 2 passi il val-

ore iniziale non è suciente ad eseguire la routine di risoluzione, utilizziamo

quindi il metodo di Eulero implicito per il calcolo del punto y(2) . In questo

modo diventa possibile l'esecuzione della routine di risoluzione. I metodi di

risoluzione a 3,4,5 passi funzionano analogamente, in questo caso però abbi-

amo bisogno di 3,4,5 punti iniziali. Applichiamo quindi Eulero implicito 2,3,4

volte, così da trovare i punti y(2), y(3), y(4), . . ., applichiamo poi la routine

a partire da questi punti iniziali.

Adesso sempre sull'esempio precedente provando ad aumentare il numero

di passi a 50 (h = (abs( 0−3


50
)) = 0.06), otteniamo i seguenti risultati:

osserviamo che la funzione più preformate, in questo caso, è sempre


CAPITOLO 2. METODI NUMERICI 40

Figura 2.3: Adams-Moulton: per N = 50, h = 0.06.


CAPITOLO 2. METODI NUMERICI 41

l'Adams-Moulton di 2◦ ordine; inoltre l'errore di approssimazione è dimi-

nuito. Se si prova ad aumentare il numero dei punti ( raddoppiando N =


10; 20; 40; :::, quindi dimezziamo di volta in volta il valore di h) si vede che la
soluzione approssimata si avvicina sempre di più alla soluzione esatta, indice

del fatto che il metodo numerico sta convergendo. Sperimentalmente si sono

trovati i seguenti risultati:

Figura 2.4: Risultati sperimentali.

Sempre sperimentalmente, si è osservato che provando a predire il valore

del punto yi col metodo di Eulero-implicito e poi correggendo questo valore

con il metodo di Adams-Moulton si ottengono esattamente gli stessi errori.

Ricordiamo inne che la Sostituzione nella 2.1 di f (t, y(t)) per la sua inter-
CAPITOLO 2. METODI NUMERICI 42

polante fa si che incorriamo in un errore di ordine hp .


Ricordando che secondo la seguente denizione:

Un metodo si dice convergente se ∀i = 0, . . . , N ; |y(xi − yi )| ≤ C(h), dove


C(h) è un innitesimo rispetto ad h , e in tal caso si dice convergente di
ordine p se: ∃C > 0 tale che: C(h) = Chp .

2.1.3 Metodi Predictor-Corrector


I Metodi Predictor-Corrector o Predittore-Correttore rappresentano una sot-

tocategoria dei Metodi Multistep. Il metodo consta di due parti, la parte

riguardante il Predittore, che fa uso di un metodo esplicito, cerca di approssi-


mare la funzione yn+1 ; successivamente quella riguardante il Correttore, che
fa uso di un metodo implicito, presa l'approssimazione yn+1 calcolata dal

Predittore, ne calcola una migliore approssimazione. Tale metodo consente di


evitare di risolvere una equazione implicita per yn+1 , infatti trovato un valore
approssimato di yn+1 per mezzo del Predittore, il Correttore eettua il calcolo
tramite iterazioni successive di un metodo implicito, la cui approssimazione

iniziale è stata calcolata nel passo predittivo. Il Predittore-Correttore più

popolare è rappresentato dalla classe di Metodi Adams-Bashforth-Moulton,


che possiede buone proprietà di stabilità. Il suo vantaggio consiste nel fatto

che è possibile ottenere elevata accuratezza con basso costo computazionale,

inferiore rispetto ai metodi a singolo passo di pari ordine, infatti la combi-

nazione Predittore-Correttore richiede solo la valutazione di due f (t, y) per

step.

(0)
Occorre fornire un buon dato iniziale di un+1 . Questo viene realizzato con
CAPITOLO 2. METODI NUMERICI 43

l'impiego di un metodo multistep esplicito.

Per contenere il costo computazionale si itera per un numero ssato m.


La parte Adams-Bashforth viene impiegata per il Predittore, si ha:

h
P redittore un+1 = un + [3fn − fn−1 ] (2.53)
2

La parte Adams-Moulton viene impiegata per il Correttore, si ha:

h
Correttore un+1 = un + [5fn+1 − 8fn + fn−1 ] (2.54)
12

Ci sono tre processi principali in un Metodo Predittore-Correttore. Il primo


passo, identicato con il carattere P, rappresenta il passo predittivo, il secondo
valuta fn+1 dall'ultimo valore di un+1 , identicato con il carattere E ; inne il
terzo, rappresenta il passo correttivo, identicato dal carattere C. Di seguito
viene mostrato il metodo PECE.
h i
(0) (1) h (1) (1)
(P ) un+1 = un + 2
3fn − fn−1
(0) (0)
(E) fn+1 = f (tn+1 , un+1 )
h i (2.55)
(1) (1) h (0) (1) (1)
(C) un+1 = un + 12 5fn+1 + 8fn − fn−1
(1) (1)
(E) fn+1 = f (tn+1 , un+1 )

Se il Correttore viene iterato m volte, possiamo scrivere P (EC)m . Tut-

tavia risulta migliore eettuare una valutazione anche alla ne, come avviene

nel metodo PECE. Ricordiamo che se il Predittore è di ordine k e il Corret-

tore di ordine k∗, allora il Metodo Predittore-Correttore PECE si comporta


CAPITOLO 2. METODI NUMERICI 44

come un metodo di ordine min(k ∗ , k + 1). In genere si utilizzano i metodi

di Adams in coppia (2 − 3, 3 − 4) per ottenere metodi Predittore-Correttore


di ordine pari a quello del Correttore. Nello schema riportato precedente-

mente, il metodo risulta essere di ordine 3, infatti il Predittore è di ordine

k =2 (Adams-Bashforth a due passi), mentre il Correttore è di ordine k∗ = 3


(Adams-Moulton a tre passi) .

Vediamo adesso un esempio pratico sull'applicazione di questi metodi.

Esaminiamo la funzione


 y 0 = −y + 5 · e−t · cos(5 · t − π)

(2.56)
 y(0) = 0

la cui soluzione esatta è:

y(t) = e−t · sin(5 · t − π)

Poniamo l'intervallo di approssimazione [t0 , tf ] = [0, 5] e il numero di ap-

prossimazioni da calcolare all'interno dell'intervallo. Lo step size sarà quindi

h =
tf −t0
N
. I seguenti esempi fanno uso della funzione ode113 presente in

Matlab, e delle funzioni implementate Adams-Bashforth-Moulton di ordine

(2-3) e (3-4).

L'applicativo prende in input i seguenti parametri:

• la funzione dierenziale da risolvere y 0 = f (t, y(t));

• la soluzione y(t) della funzione diernziale;


CAPITOLO 2. METODI NUMERICI 45

Figura 2.5: Interfaccia applicativo.


CAPITOLO 2. METODI NUMERICI 46

• l'intervallo di integrazionet0 , . . . , tf ;

• il valore iniziale dell'integrazione y(0);

• il numero di intervalli per cui vogliamo integrare la funzione (nel caso

in cui il valore immesso sia minore o uguale a 5 → N = (abs(t0 −


tf )/M axStep = 0.1 ∗ abs(t0 − tf )) = 10);

Segue il codice utilizzato per il Metodo Predictor-Corrector con Adams-

Bashforth-Moulton (2-3).
CAPITOLO 2. METODI NUMERICI 47

Algorithm 3 Predictor-Corrector con Adams-Bashforth-Moulton (2-3)


function [t,y] = Adams_Bashforth_Moulton_2_3(fname,t0,tf,y0,N)
f=inline(fname);
% inzializzo il valore di h: passo di discretizzazione
h=(abs(t0-tf ))/N;

% inizializzo il vettore delle soluzioni (ordinate)


y = zeros(N+1,1);

% inizializzo il vettore delle ordinate


t = linspace(t0,tf,N+1);

% inizializzo il vettore delle ordinate


y(1) = y0;

% calcolo i valori iniziali con eulero esplicito


y(2)= y(1) + h*f(t(1),y(1));
y(3)= y(2) + h*f(t(2),y(2));

for n=3:N
% prediciamo il valore con Adams-Bashfort di ordine 2
y(n+1)= y(n) + (h/2)*(3*f(t(n),y(n))- f(t(n-1),y(n-1)));

% correggiamo il valore con Adams-Multon di ordine 3


y(n+1)=y(n)+h*((5/12)*(f(t(n+1),y(n+1)))+(2/3)*(f(t(n),y(n)))-
(1/12)*(f(t(n-1),y(n-1))));
end
end
CAPITOLO 2. METODI NUMERICI 48

1
Figura 2.6: Per N = 10, h = 2 = 0.5.
CAPITOLO 2. METODI NUMERICI 49

1
Figura 2.7: Per N = 20, h = 4 = 0.25.
CAPITOLO 2. METODI NUMERICI 50

1
Figura 2.8: Per N = 35, h = 7 = 0.143 .
CAPITOLO 2. METODI NUMERICI 51

1
Figura 2.9: Per N = 50, h = 10 = 0.1 .
CAPITOLO 2. METODI NUMERICI 52

1
Figura 2.10: Per N = 70, h = 14 = 0.071.
CAPITOLO 2. METODI NUMERICI 53

1
Figura 2.11: Per N = 100, h = 20 = 0.05.
CAPITOLO 2. METODI NUMERICI 54

Aumentando il numero di punti, e di conseguenza diminuendo il passo di

discretizzazione, miglioriamo l'approssimazione. Viene utilizzata l'accoppiata

metodo esplicito-implicito, perché il primo risulta facile da calcolare, mentre il

secondo risulta essere stabile. In generale i Metodi Predittore-Correttore han-


no una regione di stabilità che si colloca tra quelle dei due metodi (esplicito

e implicito) che lo compongono.


CAPITOLO 2. METODI NUMERICI 55

Figura 2.12: viene mostrato un confronto tra le diverse procedure, cioè tra Adams-
1
Bashforth, Adams-Moulton e Adams-Bashforth-Moulton utilizzando N = 50 e h= 10 =
0.1 .
CAPITOLO 2. METODI NUMERICI 56

Figura 2.13: viene mostrato un confronto tra le diverse procedure, cioè tra Adams-
1
Bashforth, Adams-Moulton e Adams-Bashforth-Moulton utilizzando N = 100 e h= 20 =
0.05 .

Potrebbero piacerti anche