Daniela Lera Università degli Studi di Cagliari Dipartimento di Matematica e Informatica A.A. 2008-2009
Metodi Runge-Kutta In alcuni esempi precedenti sono stati presentati vari metodi monostep. Esiste una tecnica generale per costruire tutti i metodi di questa classe, noti anche come metodi Runge-Kutta (RK). In essi si mantiene la struttura ad un passo, ma viene aumentato il numero delle valutazioni funzionali per ogni passo.
Metodi Runge-Kutta Si basano sullo sviluppo di Taylor: y(x i+1 ) = y(x i ) + h (x i, y i, f ; h) (1) con (x, y, f ; h) = y (x) + h h2 y (x) + 2 3! y(3) (x) +... E il modo più semplice per avanzare la soluzione dal nodo x i al successivo x i+1.
Metodi Runge-Kutta Per ogni intero p fissato, si ottiene uno schema numerico troncando la serie (1) ai primi p termini. cioé: con η i+1 = η i + hφ(x i, η i, f ; h), i = 0, 1,... (2) Φ(x, η, f ; h) = f (x, η) + h 2 f (x, η) +... + hp 1 f (p 1) (x, η) p!
Metodi Runge-Kutta Per p = 1 e p = 2 si hanno in particolare le formule: p=1 (Eulero-Cauchy) η i+1 = η i + hf (x i, η i ) p=2 η i+1 = η i + h[f (x i, η i ) + h 2 (f x(x i, η i ) + f y (x i, η i )f (x i, η i ))]
Metodi Runge-Kutta In (2) il calcolo di ogni η i comporta una valutazione della funzione Φ, che quindi dovrà essere con un "basso" costo di calcolo. Inoltre la Φ è costruita a partire dalle derivate della funzione f. Ciò potrebbe costituire un problema.
Metodi Runge-Kutta Si cerca di ovviare a tale inconveniente senza perdere la semplicità delle formule ottenute con l idea dello sviluppo in serie. Un modo per costruire formule di tipo (2) con Φ coincidente con per un fissato numero di termini e senza l utilizzo esplicito delle derivate è dovuto a Runge (1895), Heun (1900) e Kutta (1901).
Metodi Runge-Kutta Costruiamo le formule in un caso particolare. Poniamo: Φ(x, y, f ; h) = c 1 f (x, y) + c 2 f (x + ha, y + hbf (x, y)) dove c 1, c 2, a, b sono costanti da determinare.
Metodi Runge-Kutta Consideriamo i seguenti sviluppi in serie (x, y, f ; h) = f (x, y) + h 2 [f x(x, y) + f y (x, y)f (x, y)] + O(h 2 ) Φ(x, y, f ; h) = (c 1 + c 2 )f (x, y) + hc 2 [af x (x, y) + bf y (x, y)f (x, y)] +O(h 2 ) L ultimo ottenuto considerando Φ funzione di h (con punto iniziale h = 0).
Metodi Runge-Kutta Le costanti c 1, c 2, a, b vengono determinate in modo tale che tra i due precedenti sviluppi in serie coincida il massimo numero di coefficienti di potenze di h. Per avere la coincidenza di Φ con i primi due termini di dovrà essere: c 1 + c 2 = 1 c 2 a = 1 2 c 2 b = 1 2 Infinite formule
Metodi Runge-Kutta Lasciando libero un parametro, per es. c 2, si ottiene una famiglia di metodi: Φ(x, y, f ; h) = (1 α)f (x, y) + αf (x + h 2α, y + h f (x, y)) 2α essendo: c 1 = 1 α, c 2 = α, a = b = 1 2α
Metodi Runge-Kutta La Φ e la coincidono fino al secondo ordine, diremo che questi metodi sono del secondo ordine. In essi si utilizzano due valutazioni della funzione f, per questo vengono detti metodi RK espliciti a 2-stadi.
Metodi RK 2-stadi: esempi α = 1 2 Heun η i+1 = η i + h 2 [f (x i, η i ) + f (x i + h, η i + hf (x i, η i )] α = 1 Eulero modificato η i+1 = η i + hf (x i + h 2, η i + h 2 f (x i, η i ))
Metodi RK espliciti m-stadi Il processo precedente può essere esteso in modo da utilizzare m valutazioni della funzione f. Si ottiene il seguente : η i+1 = η i + hφ(x i, η i, f ; h) Φ(x, η, f ; h) := m r=1 c rk r, k 1 = f (x, y) k r = f (x + ha r, y + h r 1 s=1 b rsk s ), r = 2,..., m RK a m-stadi
Metodi RK a 3-stadi, m=3 η i+1 = η i + h 6 (k 1 + 4k 2 + k 3 ) k 1 = f (x i, η i ) k 2 = f (x i + h 2, η i + h 2 k 1) k 3 = f (x i + h, η i + hk 2 ) η 0 = y 0 Tale formula, se la funzione f è sufficientemente regolare è del terzo ordine.
Metodi RK a 4-stadi (m=4) η i+1 = η i + h 6 (k 1 + 2k 2 + 2k 3 + k 4 ) k 1 = f (x i, η i ) k 2 = f (x i + h 2, η i + h 2 k 1) k 3 = f (x i + h 2, η i + h 2 k 2) k 4 = f (x i + h, η i + hk 3 ) η 0 = y 0
Metodi RK a 4-stadi (m=4) La formula con m = 4 è probabilmente la più nota. Tale formula, se la funzione f è sufficientemente regolare è del quarto ordine.
Metodi Runge-Kutta I metodi RK esposti sono, in tutti i casi, metodi espliciti monostep. Ci si muove sempre su rette con coefficienti angolari ottenuti da medie pesate di coefficienti angolari intermedi. Ipotizzando η i = y i tutti i metodi RK si muovono su una retta y = η i + m(x x i )
Metodi Runge-Kutta Eulero: m = f (x i, η i ) approssima la tangente in x i. Eulero modificato: m = f (x i + h/2, η i + h/2f (x i, η i )) approssima la tangente nel punto medio (x i + h/2).
Metodi Runge-Kutta Heun: m = 1/2[f (x i, η i ) + f (x i + h, η i + hf (x i, η i ))] media dei coefficienti angolari ai due estremi. In generale: m = media pesata i coefficienti angolari in punti opportuni.
Schema generale: Metodi RK impliciti η i+1 = η i + hφ(x i, η i, f ; h) Φ(x, η, f ; h) := m r=1 c rk r (1) k r = f (x + ha r, y + h m s=1 b rsk s ), r = 1,..., m RK implicito a m-stadi I k r si ottengono come soluzioni di m equazioni in generale non-lineari.
Eulero implicito: Metodi RK impliciti η i+1 = η i + hf (x i+1, η i+1 ) Qualsiasi metodo implicito può essere visto come una operazione non-lineare η i+1 = Ψ(η i+1 ) Il metodo iterativo fornito dall equazione non-lineare è convergente se la Ψ(z) è contrattiva.
Metodi RK impliciti Nel caso di Eulero implicito: Ψ(η i+1 ) Ψ( η i+1 ) = h f (x i+1, η i+1 ) f (x i+1, η i+1 ) hl η i+1 η i+1 per la contrattività bisogna che hl < 1 h < 1 L
Metodi RK impliciti In generale si dimostra il seguente: Teorema Se la f è continua e lipschitziana in y con costante L e se: h < 1 L max i j b ij allora esiste un unica soluzione di (1) che può essere ottenuta tramite iterazioni successive. Oss. La restrizione diventa severa quando L è grande. Si tenga presente che più piccolo è il passo h e maggiore è, in generale, il costo.
Metodi RK impliciti N.B. Il metodo implicito viene applicato come un metodo iterativo: n volte o finché si raggiunge un determinato scarto, partendo da: η (0) i+1 = η i e η (k+1) i+1 = Ψ(η (k) i+1 ) In Eulero implicito: η (k+1) i+1 = η i + hf (x i+1, η (k) i+1 )
Metodi Predictor-Corrector η (0) i+1 = η i η (k+1) i+1 = Ψ(η (k) i+1 ) (2) Si osservi che per ogni k viene fatta una valutazione della Ψ (e dunque di f ). Affinché tale metodo sia competitivo con un metodo esplicito dello stesso ordine è necessario che il numero di iterazioni sia il più basso possibile.
Metodi Predictor-Corrector L idea è quella di partire da un "buon" dato iniziale η (0) i+1, ottenuto utilizzando un metodo multistep esplicito (Predictor), e di fare poi eventualmente una sola iterazione in (2) (Corrector). In alternativa si può applicare ad ogni passo il correttore un numero fissato t di volte. Il valore η (t+1) i+1 è allora accettato come approssimazione di y(x i+1 ).
Siano: Esempio: PECE P: η i+1 = η i + h 2 (3f i f i 1 ) C: η i+1 = η i + h 2 (f i+1 f i ) con f i = f (x i, η i ). Metodi di Adams Per t = 1, cioé facendo una sola iterazione in (2), si ha:
Esempio: PECE P: η (0) i+1 = η(1) i + h (1) 2 (3f i f (1) i 1 ) E: f (0) i+1 = f (x i+1, η (0) i+1 ) C: η (1) i+1 = η(1) i + h (1) 2 (f i + f (0) i+1 ) E: f (1) i+1 = f (x i+1, η (1) i+1 ) Procedura PECE
Esempio: PEC Un modo più economico è il seguente: P: η (0) i+1 = η(1) i + h (0) 2 (3f i f (0) i 1 ) E: f (0) i+1 = f (x i+1, η (0) i+1 ) C: η (1) i+1 = η(1) i + h (0) 2 (f i + f (0) i+1 ) Procedura PEC Per t > 1, si hanno metodi del tipo P(EC) t E e P(EC) t.
Siano: Eulero esplicito Esempio P: η i+1 = η i + hf (x i, η i ) C: η i+1 = η i + h 2 [f (x i, η i ) + f (x i+1, η i+1 )] Crank-Nicolson Il metodo P-C risultante è il metodo di Heun (con t = 1). η i+1 = η i + h 2 [f (x i, η i ) + f (x i+1, η i + hf (x i, η i )]