Complementi di Matematica e Calcolo Numerico A.A. 2010-2011 Laboratorio 11 - Metodi numerici per equazioni differenziali ordinarie Cosideriamo il seguente Problema di Cauchy: Trovare una funzione y : I R, y C 1 (I) tale che y (t) = f(t, y(t)) t I, y(t 0 ) = y 0 dove I = [t 0, t max ] R, y 0 R ed f : I R R funzione assegnata. Per approssimare la soluzione di un tale problema con un metodo numerico suddividiamo I in piccoli sottointervalli, scegliamo t 0 t 1 t N t max e ci limitiamo ad approssimare il valore della soluzione y(t) nei nodi t n, per n = 0,... N. Chiamiamo y n y(t n ) tale valore approssimato. Un metodo numerico fornisce le approssimazioni y 0, y 1,..., y N della soluzione nei nodi t 0, t 1,..., t N Matlab fornisce alcune funzioni predefinite a tale scopo tra cui ode23 e d ode45
Sintassi: [T,Y] = ode23(fun,tspan,y0)), [T,Y] = ode45(fun,tspan,y0)) input: fun = f(t, y) funzione data di due variabili tspan = [t 0, t max ] = I intervallo dato y 0 condizione iniziale del problema output: T = [t 0, t 1,..., t N ] vettore colonna dei tempi Y = [y 0, y 1,..., y N ] vettore colonna della soluzione approssimata agli istanti in T Esercizio 1 Si realizzi uno script file al fine di approssimare la soluzione del primo problema di Cauchy negli esempi di riferimento sotto riportati utilizzando le function ode23 e ode45 di Matlab. Si disegnino nello stesso grafico la soluzione esatta e quella approssimata, si calcoli la norma infinito della differenza tra la soluzione esatta ed approssimata agli istanti di approssimazione. Si confrontino i risultati ottenuti con le due funzioni. Si ripeta l esercizio con gli altri problemi di Cauchy di riferimento. 2
Si considerino i seguenti problemi di Cauchy di riferimento: y (t) = 2ty 2 (t) t [0, 2], Sol: y(t) = 1 y(0) = 1 1 + t 2 y (t) = t 2 [1 3y(t)] t [0, 2], y(0) = 2 y (t) = y(t) t y(e) = e + ( y(t) ) 2 t t [e, e + 2], y (t) = 1 t (2y(t) + t2 y 2 (t)) t [1, 5], y(1) = 1 y (t) = y 2 (t) t [0, 10], y(0) = 5 y (t) = y(t) t + πt cos(πt) t [1, 3], y(1) = 0 Sol: y(t) = 1 3 (1 + 5e t3 ) Sol: y(t) = Sol: y(t) = t 2 log(t) 1 t 2 (1 + log(t)) Sol: y(t) = 5 1 + 5t Sol: y(t) = t sin(πt) 3
Scegliamo d ora in poi di suddividere I in sottointervalli di uguale ampiezza h > 0 piccolo, e consideriamo i punti t n = t 0 + n h per n = 0,... N con t N t max che individuano tale discretizzazione dell intervallo I. Metodo di Eulero esplicito A partire da y 0 calcoliamo y 1,..., y N attraverso la relazione y n+1 = y n + h f(t n, y n ) Esercizio 2 Si scriva una funzione che implementi il metodo di Eulero esplicito. Sintassi: [T,Y] = eulero(fun,t,y0), input: fun = f(t, y) funzione data di due variabili T = [t 0, t 1,... t N ] vettore riga dei tempi y 0 condizione iniziale del problema output: T = [t 0, t 1,..., t N ] vettore colonna dei tempi Y = [y 0, y 1,..., y N ] vettore colonna della soluzione approssimata agli istanti in T Esercizio 3 Si approssimi la soluzione di ciascun problema di riferimento con il metodo di Eulero esplicito per diversi valori del passso uniforme 4
h = 0.1, 0.01, 0.001. Si disegni il grafico della soluzione approssimata a confronto con quella esatta. Sia y n la soluzione approssimata agli istanti t n = t 0 + nh, si calcoli il massimo errore di approssimazione commesso nei nodi di approssimazione: e = e si compili la seguente tabella: max y(t n) y n n=0,...,n h 0.1 0.01 0.001 Errore Si stimi l ordine del metodo. Esercizio 4 (dal tema d esame del 4-11-2010) Si consideri il problema di Cauchy y (t) = 50 y(t) + 50 sin(t) t [0, 4] y(0) = 0 la cui soluzione esatta è y(t) = 50 2501 (50 sin(t) cos(t) + e 50t ). 1. Approssimare il problema di Cauchy con il metodo di Eulero Esplicito. 2. Calcolare la norma infinito dell errore tra la soluzione esatta e quella approssimata in tutti i passi calcolati. Eseguire prove per h = 2 k, per k = 5, 6, 7, 8 e compilare la seguente tabella: 5
k h 5 6 7 8 errore Eulero esplicito Tabella 1 3. Tracciare (senza stampare) il grafico sovrapposto di soluzione esatta (rosso) e approssimata (blu) per tutti i valori di k 4. Dedurre dalla tabella 1 l ordine del metodo di Eulero esplicito, motivando la risposta. 6
Metodo di Eulero implicito A partire da y 0 calcoliamo y 1,..., y N attraverso la relazione y n+1 = y n + h f(t n+1, y n+1 ) Si noti che ad ogni passo occorre risolvere una equazione non lineare in y n+1 utilizzando a tale scopo un opportuno metodo numerico. Esercizio 5 Si scriva una funzione che implementi il metodo di Eulero implicito, utilizzando il metodo di Newton per risolvere l equazione non lineare ad ogni passo. Sintassi: [T,Y] = eulimp(fun,t,y0,dfy,toll,nitmax), input: fun = f(t, y) funzione data di due variabili T = [t 0, t 1,... t N ] vettore riga dei tempi y 0 condizione iniziale del problema dfy derivata di f rispetto ad y toll tolleranza per l arresto di Newton nitmax numero massimo di iterazioni di Newton output: T = [t 0, t 1,..., t N ] vettore colonna dei tempi Y = [y 0, y 1,..., y N ] vettore colonna della soluzione approssimata agli istanti in T 7
Esercizio 6 Si ripeta quanto richiesto nell Esercizio 3 utilizzando il metodo di Eulero implicito. Esercizio 7 (dal tema d esame del 21-2-1011) Si consideri il problema di Cauchy y (t) = 2y(t), 0 t 2 y(0) = 1 la cui soluzione esatta è y(t) = e 2t. 1. Approssimare il problema di Cauchy con il metodo di Eulero implicito, utilizzando toll=1e-5 e nitmax=100 per risolvere l equazione non lineare ad ogni passo. 2. Calcolare la norma infinito dell errore tra la soluzione esatta e quella approssimata in tutti i passi calcolati. Eseguire prove per h = 2 k, k = 6, 7, 8, 9, 10 e compilare la tabella 1. k h errore Eulero implicito 6 7 8 9 10 Tabella 1 8
3. Dedurre dalla tabella 1 l ordine del metodo di Eulero implicito, motivando la risposta. 4. Si approssimi l integrale 2 0 y(t)dt con la formula di quadratura dei trapezi, utilizzando i risultati ottenuti con il metodo di Eulero implicito per k = 10. 9