Calcolo numerico/Algoritmi per la risoluzione

Da testwiki.
Vai alla navigazione Vai alla ricerca

Template:Calcolo numerico

Metodi a un passo

Dato il problema

{y′(t)=f(t,y)y(t0)=y0

supponiamo di volerlo risolvere in I=(t0,T)⊂I0.

Creiamo una successione di valori {yn} dove yn approssima y(tn) e tn=t0+nh,n=(T−t0)/h, e h viene chiamato passo di discretizzazione.

Per calcolare y(t+h) conoscendo y(t) consideriamo il rapporto incrementale

y(t+h)−y(t)h

che deve essere approssimato. Per l'approssimazione si utilizza la derivata prima, che in questo caso è un dato del problema. Quindi si pone

y(t+h)−y(t)h=f(t,y(t))=y′(t)

ed esplicitando y(t+h):

y(t+h)=y(t)+h∗f(t,y(t)).

Metodo di Eulero esplicito

Otteniamo quindi il seguente metodo detto metodo di Eulero esplicito:

yn+1=yn+hf(tn,yn)

con tn=t0+nh, e yn approssimazione della soluzione esatta all'istante tn.

h=tn+1−tn

Questo metodo è detto esplicito perché la quantità da calcolare, yn+1, non compare nel membro di destra.

Sappiamo che

y(tn+1)=y(tn)+∫tntn+1f(τ,y(τ))dτ

e sostituendo alla funzione il polinomio interpolante di grado 0 in (tn,f(tn,yn)), cioè la retta p=f(tn,y(tn)) otteniamo il metodo di Eulero esplicito:

y(tn+1)=y(tn)+∫tntn+1f(tn,y(tn))dτ

y(tn+1)=y(tn)+f(tn,y(tn))(tn+1−tn)

y(tn+1)=y(tn)+hf(tn,y(tn))

Generalizzazione del metodo

Consideriamo la generalizzazione del metodo

yn+1=yn+hΦ(tn,yn,f(tn,yn);h)

e lo confronto con la corrispondente espressione nel continuo (soluzione esatta):

y(tn+1)=y(tn)+h∗Φ(tn,y(tn),f(tn,y(tn)));h)

All'istante tn+1 definisco il residuo εn+1. Ci si chiede di quanto la soluzione esatta non soddisfa lo schema numerico considerato.

εn+1=hτn+1 è funzione del passo di discretizzazione, e si può scrivere

τn+1(h)=εn+1/h

dove τn+1 è detto errore di troncamento locale. εn+1 è la differenza tra la soluzione y(tn+1) e la soluzione che si ottiene considerando come yn il valore esatto y(tn).

Più precisamente

Template:Definizione

Per dire che l'errore commesso tende a 0, non basta richiedere che εn+1→0, altrimenti si elimina la dipendenza del metodo da Φ.

Consistenza

Template:Definizione

La condizione di consistenza è la minima condizione che dev'essere soddisfatta affinché il metodo funzioni.

Considerando il metodo di Eulero esplicito:

Φ(t,y,f,h)=f(t,y(t))

τ(t,y(t),h)=1/h∗[y(t+h)−y(t)−hΦ(t,y,h)]

=1/h∗[y(t+h)−y(t)−hf(t,y(t))]

e sviluppando con Taylor y(t+h) e tenendo conto che f(t,y(t)=y′(t):

=1/h∗[y(t)+hy′(t)+h2/2y(2)(ξ)−y(t)−hy′(t)]

e in seguito a cancellazioni:

=1/h∗h2/2y(2)(ξ)=o(h)

e il metodo di Eulero esplicito è consistente di ordine p=1.

Si ricava anche

τ(h,y,f)=h/2y(2)(ξ)formula 1

Convergenza nell'intervallo [t0T]

Per h→0, l'insieme di valori tn=t0+nh tende a ricoprire l'intervallo in questione.

Chiediamo che yn converga alla soluzione esatta y(t) per ogni t∈I.

Template:Definizione

Il problema è convergente di ordine p se

C=o(hp)

Disegniamo un grafico con il tempo in ascissa e la condizione y0 in ordinata. Tenendo conto che t=t0+nh, segue che al diminuire del passo h, sono necessari più passi per raggiungere un fissato istante di tempo t. Non si può scegliere come condizione di convergenza

limhi→0yn(hi)=y0

perché questo tiene conto solo della condizione iniziale e non dà importanza al fatto che dopo un fissato numero di passi, a differenti scelte di h corrispondono istanti t diversi. Bisogna quindi fissare t, e fare contemporaneamente

limhi→0,n→∞yn(hi)=y0

Abbiamo un metodo convergente se per ogni problema ai valori iniziali

limh→0,t=t0+nhy(t)=y0

per ogni successione {yn} generata a partire da y0.

Analisi di convergenza

Dato il metodo

yn+1=yn+hf(tn,yn)

Consideriamo l'errore all'istante tn+1, e definiamo

en+1=y(tn+1)−yn+1=y(tn+1)−yn+1∗+yn+1∗−yn+1

dove yn+1∗ è il valore che otteniamo se all'istante tn+1 prendiamo come dato yn il valore esatto y(tn), cioè

yn+1∗=y(tn)+hf(tn,y(tn))

e rappresenta l'errore locale, di consistenza.

Possiamo sostituire i primi due addendi con l'errore di troncamento moltiplicato per h, quindi

En+1=hτn+1+y(tn)+hf(tn,y(tn))−yn+1

e sostituendo l'espressione di yn+1=yn+hf(tn,yn):

En+1=hτn+1+y(tn)+hf(tn,y(tn))−yn−hf(tn,yn)

e siccome En=y(tn)−yn,

En+1≤hτn+1+En+h∗f(tn,y(tn))−h∗f(tn,yn)

Passando ai moduli

|En+1|≤h∗|τn+1(h)|+|En|+h∗(|f(tn,y(tn))|−|f(tn,yn)|)

Poniamo τh=maxn{τn+1(h)} e teniamo conto della lipschitzianità di f, allora otteniamo

≤h|τh|+|En|+Lh(y(tn)−yn)≤hτh+|En|+Lh∗En≤hτh+(1+Lh)|En|

e avendo trovato la relazione ricorsiva si prosegue fino al passo 0:

≤hτh+(1+Lh)∗(hτh+(1+Lh)|En−1|)

e siccome E0≤hτh in conclusione si ha

|En+1≤hτh∗(1+(1+Lh)+…+(1+Lh)n)

≤hτh∑k=0n(1+LH)k

=(1+Lh)n+1−1Lhhτh

=(1+Lh)n+1−1Lτh

Siccome in generale 1+x≤ex, si ha

≤(ehL)n+1−1L∗τh

Siccome tn+1−t0=h si ha

=eL(tn+1−t0)−1L∗τh

Se Y∈C2, nel caso di Eulero esplicito si ha per la formula 1

τ=h/2f(2)(ξ)

quindi τh≤Mh/2 dove M=max⁡|f(2)(ξ)|.

Allora segue che

En+1≤eL(tn+1−t0)−1L∗M/2h

per ogni n≥0.

La quantità tende a 0 per h→0, con lo stesso ordine 1 dell'errore di troncamento locale.

Metodo di Eulero implicito

Il metodo di Eulero implicito è dato da

yn+1=yn+hf(tn+1,yn+1)

Consideriamo l'errore di troncamento

τh(y,t,n)=1/h[y(t+h)−y(t)−h∗f(t+h,y(t+h))]

e tenendo conto della definizione del problema di Cauchy:

=1/h[y(t+h)−y(t)−hy′(t+h)]

=1/h[y(t)+hy′(t)+h2/2y(2)(ξ)−y(t)−h(y′(t)+h∗y(2)(η))]

=1/h∗h2(c1y″(ξ)+c2y″(η)

e abbiamo un ordine di consistenza h=1.

Metodo dei trapezi

yn+1=yn+h/2(f(tn,yn)+f(tn+1,yn+1))

A destra ci sono due valutazioni di f e l'unica incognita è yn+1.

Esercizio 7.1

Verificare, usando Taylor, che l'ordine di consistenza di questo metodo è 2.

Dim. L'errore di troncamento si definisce come

τ=1/h∗[y(t+h)−y(t)−h/2(f(tn,yn)+f(tn+1,yn+1)]

τ=1/h∗[y(t+h)−y(t)−h/2y′(t)−h/2y′(t+h)]

τ=1/h∗[y(t)+hy′(t)+h2/2y″(t)+h3/3y(3)(ξ)−y(t)−h/2y′(t)−h/2y′(t)−h/2y″(t)h−h/2y(3)(η)h2/2]

τ=1/h∗[h3(ay(3)(ξ)−by(3)(η))]=o(h2)

Considerando il metodo di Eulero implicito:

yn+1=yn+hf(tn+1,yn+1)

si ha un'equazione non lineare e può essere trattata in due modi.

1. Definiamo il metodo di punto fisso:

yk+1=yk+hf(t0+nh,yk),

Affinché il metodo converga si richiede che |g′(z)|<1. In questo caso, con z=yk+1 si ha:

g′(z)=h∂f∂z<HL

quindi la costante di Lipschitz influenza la scelta del passo di discretizzazione. Se la costante di Lipschitz è grande, bisogna scegliere un passo di discretizzazione piccolo per poter avere convergenza.

2. Applichiamo il metodo di Newton. Poniamo z=yn+1 e cerchiamo lo zero di

ϕ(z)=z−yn+hf(tn+1,z)

con il metodo

zk+1=zk−ϕ(zk)ϕ′(zk)

con vettore d'innesco z0=yn.

ϕ′(z)=1−h∂f∂z(tn+1)

Come test d'arresto si ha il test dell'incremento.

Template:Avanzamento