Equazioni Differenziali Ordinarie Metodi Multi-step Studenti: Cutuli Sebastiano Cantone Salvatore Seminario Metodi Matematici per l’Ottimizzazione A.A. 2011/2012
Indice 1 Introduzione 2 I Metodi Multi-Step 2.1 Metodi impliciti 2.1.1 Metodo di Adams-Bashford 2.2 Metodi espliciti 2.2.1 Metodo di Adams-Moulton
Introduzione Si definisce equazione differenziale un’equazione che coinvolge una o più derivate di una funzione incognita. Se tutte le derivate sono calcolate rispetto ad una sola variabile indipendente, l’equazione si dirà equazione differenziale ordinaria (ODE). Quando sono presenti derivate rispetto a più variabili indipendenti, avremo invece una equazione differenziale alle derivate parziali (PDE). Una equazione differenziale avrà ordine n, se n è l’ordine massimo delle derivate che vi compaiono.
Introduzione La forma generale di una ODE di ordine n è: Dove y=y(x) è la funzione cercata. Una funzione è detta soluzione di una ODE se essa riduce l’equazione ad una identità quando viene sostituita nell’equazione.
ODE di ordine 1 La forma generale di una equazione differenziale ordinaria di primo ordine è: dove y=y(x) è la funzione incognita. Per semplicità assumiamo che l’equazione sia scritta nella forma: con la condizione y=y0 quando x=x0:
Esempio… Determinare le primitive di una funzione f(x) significa risolvere y’(x) = f(x) dove l'incognita è la funzione y(x). Questa equazione è un semplice esempio di equazione differenziale. Ad esempio se: y’(x) = 2x le soluzioni che si ottengono integrando 2x sono y(x) = x2+ c ossia le soluzioni sono incognite e ciascuna è individuata da un diverso valore della costante reale c, ognuna detta soluzione particolare. La costante c può essere determinata imponendo un'ulteriore condizione. Ad esempio se vogliamo che y(1) = 3 allora c = 2 e y(x) =x2 + 2.
ODE di ordine 1 L’interpretazione geometrica della soluzione è data dal fatto che ogni soluzione particolare è rappresentata da una curva nel piano (x,y) e, preso un punto P(x,y) arbitrario , possiamo calcolare f(x,y) che deve essere uguale alla pendenza della tangente alla curva desiderata nel punto P. Campo di direzione
Problema di Cauchy L’obiettivo è capire come evolve un sistema a partire da alcuni dati iniziali: ciò si traduce imponendo che la soluzione del problema differenziale passi per un determinato punto del piano x,y. Si ottiene allora il cosiddetto problema ai valori iniziali o problema di Cauchy: Sia con valore iniziale. trovare una funzione con y derivabile in tale che:
Problema di Cauchy Alcune proprietà che devono essere verificate dal problema di Cauchy sono: Esistenza: vedere se il problema ammette esistenza della soluzione. Unicità: vedere se la soluzione è unica.
Teorema di esistenza ed unicità Sia un dominio ed una funzione continua che soddisfi la condizione di Lipschitz: Comunque si scelgano e una costante segue che: ha soluzione unica in tale intervallo.
Metodi Multistep Per risolvere le equazioni differenziali si ricorre a metodi numerici che possono essere ad un passo o a più passi, poiché trovare una soluzione analitica è un’operazione piuttosto difficile. Un metodo numerico per risolvere Equazioni Differenziali Lineari inizia da un punto iniziale e poi tramite un passo computazionale (metodo) trova il punto di soluzione successiva. Il processo continua con i passi successivi per mappare la soluzione.
Metodi Multistep 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 corrente. I Metodi a più Passi o Multistep 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.
Metodi Multistep Impliciti ed Espliciti Un metodo si dice esplicito se yi+1 dipende solo dai valori dei passi precedenti. Un metodo 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. Un’equazione differenziale è detta lineare se la funzione f è lineare nella funzione incognita e nelle derivate, ovvero è della forma:
Instabilità dei metodi one-step Nei metodi One-Step di tipo esplicito, dove ad ogni passo viene calcolato la soluzione nel punto ti+1, 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 in particolare quando la soluzione esatta del problema che si sta approssimando presenta dei forti gradienti (ricordiamo che il gradiente di una funzione è definito come il vettore che ha per componenti cartesiane le derivate parziali della funzione. Il gradiente rappresenta quindi la direzione di massimo incremento di una funzione di n variabili).
Instabilità dei metodi one-step 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 metodi impliciti, cioè 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 definizione di equazione differenziale otteniamo:
Instabilità dei metodi one-step Se adesso usiamo degli schemi numerici per approssimare l’integrale della slide precedente 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) otteniamo il Metodo di Eulero Esplicito: mentre se usiamo l'area del rettangolo di base h ed altezza f(tn+1; un+1) otteniamo il Metodo di Eulero Implicito:
Instabilità dei metodi one-step Utilizzando la stessa tecnica si possono ottenere anche metodi così detti a più passi, cioè in cui il valore di un+1 dipende non solo da un un, ma anche dagli altri valori { un-1, un-2,.…., un-q } calcolati precedentemente. Sostituendo nell’integrale 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 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 di tipo implicito.
Schema generale L'equazione principale dei Metodi Multistep si ottiene dall'equazione supponendo che l'intervallo di integrazione [ t0; T ] sia suddiviso in un certo numero di intervallini (N) di ampiezza h (passo di discretizzazione ((T-t0)/N) ed integrando l'equazione da tn-j a tn+k: Applichiamo una formula di quadratura per il calcolo dell'integrale.
Schema generale Per il calcolo dell'integrale si applicano le formule di Quadratura di Newton-Cotes. Utilizzando q+1 punti { tn-q,….,tn } costruiamo il polinomio di Lagrange ed integriamolo nell'intervallo [tn-j ; tn+k]. dove Li(x) rappresentano i polinomi elementari di Lagrange, cioè:
Schema generale Sostituendo quindi il polinomio nell'integrale, si ottiene la seguente relazione fra i valori della yi dove, per compattezza di notazione si è posto e dove i coefficienti βqi si ottengono per integrazione dei polinomi elementari di Lagrange A seconda dei diversi valori di k, j e q si ottengono differenti metodi multistep.
Schema generale In particolare, per k = 1 e j = 0 si ottengono i cosiddetti metodi di Adams-Bashforth (di tipo esplicito) Per k = 0 e j = 1 otteniamo i cosiddetti metodi di Adams-Moulton (di tipo implicito) o meglio
Metodo di adams-bashforth Questi metodi vengono detti espliciti poiché per calcolare il passo n-esimo si utilizza una combinazione lineare dei primi q+1 passi. con Otteniamo diversi metodi di tale formula se a partire da questa poniamo p=1,2,3,… Se difatti poniamo p=1 (Adams-Bashforth ad 1 passo) ritorniamo ai metodi one-step perché l’equazione diventa:
Metodo di adams-bashforth Se poniamo p=2 (Adams-Bashforth a 2 passi) : Ovvero, per trovare il passo (n+1)-esimo vengono utilizzati i valori trovati al passo n-2 ed n-1. Oppure ancora se poniamo p=3 (Adams-Bashforth a 3 passi) si ottiene:
Ode & matlab Risoluzione dell’equazione differenziale: con soluzione: Intervallo di approssimazione [t0,tf]=[0,5] N° approssimazioni (passi) n = 10 Step-Size : h=(tf-t0)/n=1/2 Poiché tratteremo un metodo esplicito a 2 passi, ed il valore iniziale non è sufficiente per eseguire lo script di risoluzione, utilizzeremo il metodo di Eulero esplicito per calcolare il valore y(2)
Ode & matlab
Ode & matlab
Ode & matlab
Ode & matlab considerazioni metodo a.b. Come è possibile notare l’errore cresce soprattutto con il metodo di A.B.4, il quale non converge alla soluzione.
Ode & matlab considerazioni metodo a.b. Per ottenere la convergenza abbiamo usato le seguenti accorgenze: Passo di integrazione ¼ per tutti i metodi Ottenendo : Andamento errore diminuito rispetto ai valori precedentemente rilevati
Ode & matlab considerazioni metodo a.b.
Risultati sperimentali Sono stati trovati i seguenti risultati sperimentali (errori relativi): N ERRORE BASHFORTH 2 BASHFORTH 3 BASHFORTH 4 10 8,936618 314,5462 3.170,614 20 0,108160 0,02121 0,50884 40 0,006005 0,010660 0,00280 80 0,000699 0,00122 0,00137 Osservazioni: Aumentando il n° di passi (dunque dimezzando man mano h), la soluzione approssimata si avvicina sempre più alla soluzione esatta, indice del fatto che il metodo numerico converge. Inoltre è facile osservare che la funzione che si avvicina più di tutte alla soluzione reale è quella di ordine 2.
METODO DI ADAMS-MOULTON Sono molte le analogie tra il metodo di Adams-Bashforth ed il metodo di Adams-Moulton, infatti sostituendo all'integrale della funzione f(t; y(t)) nell’equazione: l'integrale del polinomio interpolatore di Lagrange (con grado p+1 per ottenere il metodo Adams-Moulton a p+1 passi) che interpola la f nei nodi, si ottengono i così detti metodi di Adams-Moulton che fanno parte della famiglia dei metodi impliciti. Pertanto il polinomio interpolatore utilizza non solo i punti tn-p, tn-p+1,….., tn, analogamente ad Adams-Bashforth, metodo esplicito, ma anche tn+1.
Illustrazione metodo a.moulton Nella figura apprezziamo che il metodo di Adams-Moulton tiene conto del passo tn+1 rispetto a Bashforth, pertanto tale metodo implicito dovrebbe avere un’accuratezza maggiore.
Formule generali Adams-Moulton Dopo tutte le considerazioni del caso la formula generale del metodo Moulton si presenta così: Con Tuttavia preferiamo scrivere la formula secondo questa forma:
METODO DI ADAMS-MOULTON A partire dalla formula precedente iteriamo p sulla sommatoria e vediamo come si presenta la formula per p=1,2,3,4 e 5 p=1 yn= yn-1 + hfn (ovvero Eulero - implicito) p=2 yn+1= yn + h/2 [fn+1 + fn ] p=3 yn+2= yn+1 + h (5/12 fn+2 – 2/3 fn+1 -1/12 fn ] p=4 yn+3= yn+2 + h (3/8 fn+3 + 19/24 fn+2 -5/24 fn+1 +1/24 fn] p=5 yn+4= yn+3 + h/720 (251 fn+4 + 646 fn+3 - 264 fn+2 + 106 fn+1 -19 fn ] …..
METODO DI ADAMS-MOULTON Poiché si tratta di un metodo implicito dove ad ogni passo è richiesta la soluzione di un equazione non lineare, è necessario trovare un metodo per risolvere le equazioni non lineari: ad esempio nel metodo di Eulero Implicito la soluzione è data dalla formula: yn+1 = yn + h*f(tn+1,yn+1) dunque yn+1 è la soluzione dell’equazione ad ogni passo: yn+1 - yn - h*f(tn+1,yn+1) = 0 Se f ha una forma semplice si può risolvere facilmente yn+1 altrimenti è necessario ricorrere ad un metodo per la risoluzione di equazioni non lineari.
Funzione fzero di matlab Matlab calcola la soluzione del problema f(x)=0 con la function fzero. In fzero sono accoppiati un metodo a convergenza veloce (interpolazione quadratica inversa) insieme ad un metodo di tipo bisezione, per determinare un intervallo in cui f cambi segno, e per evitare che il metodo diverga. L’espressione è x = fzero(funzione; 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. Per risolvere l’equazione yn+1 - yn - h*f(tn+1,yn+1) = 0 è stato utilizzato il comando y(n+1) = fzero |@(y_inc) y_inc - y(n) -h*f (t(n+1),y_inc), y(n)| dove ‘@(y_inc) y_inc - h*f (t(n+1) – y(n)’ indica che si vuole trovare la soluzione dell’equazione y_inc -h*f (t(n+1),y_inc)-y(n)=0 con incognita y_inc; il parametro y(n) indica che verrà scelto questo valore(il valore precedente) come stima iniziale della soluzione.
Ode & matlab Risoluzione dell’equazione differenziale: con soluzione: Intervallo di approssimazione [t0,tf]=[0,5] N° approssimazioni (passi) n = 10 Step-Size : h=(tf-t0)/n=1/2 Poiché Adams-Moulton di 2° ordine è un metodo a 2 passi, utilizzeremo il metodo di Eulero implicito per calcolare il valore y(2) e analogamente y(3), y(4) e y(5) per i metodi di ordine 3°,4° e 5°.
Risultati sperimentali
Risultati sperimentali
Risultati sperimentali Sono stati trovati i seguenti risultati sperimentali (errori relativi): N ERRORE MOULTON 2 ERRORE MOULTON 3 ERRORE MOULTON 4 ERRORE MOULTON 5 10 0,160915 1,192922 2,143834 1,470348 20 0,044363 0,026204 0,113504 0,114283 40 0,003998 0,0055349 0,026335 0,0054211 80 0,000555 0,001929 0,00007787 0,007616 160 0,00066595 0,01657 0,0422435 0,02716 Osservazioni: Aumentando il n° di passi (dunque dimezzando man mano h), la soluzione approssimata si avvicina sempre più alla soluzione esatta, indice del fatto che il metodo numerico converge. Inoltre è facile osservare che la funzione che si avvicina più di tutte alla soluzione reale è quella di ordine 2.