Dispense di Metodi Numerici per le Equazioni Differenziali Dott. Marco Caliari a.a. 2014/15 Questi appunti non hanno nessuna pretesa di completezza. Sono solo alcune note ed esercizi che affiancano l’insegnamento di Metodi Numerici per le Equazioni Differenziali. Sono inoltre da considerarsi in perenne “under revision” e pertanto possono contenere discrepanze, inesattezze o errori. Questa `e la versione del 20 gennaio 2015. La versione pi` u aggiornata si trova all’indirizzo http://profs.scienze.univr.it/caliari/aa1415/equazioni differenziali/dispense.pdf Tutti i grafici riportano a fianco il link al codice usato per ottenerli. Nel caso in cui il link non funzionasse, i codici si trovano all’indirizzo http://profs.scienze.univr.it/caliari/aa1415/equazioni differenziali/ Indice 0 Preliminari 7 1 Matrici e autovalori 8 2 Interpolazione polinomiale a tratti 10 2.1 Interpolazione lineare a tratti . . . . . . . . . . . . . . . . . . 10 2.1.1 Errore di interpolazione . . . . . . . . . . . . . . . . . 11 3 Formule di quadratura gaussiana 12 3.1 Quadratura gaussiana di Chebyshev(-Lobatto) . . . . . . . . . 13 4 Metodi iterativi per sistemi lineari 4.1 Metodi di Richardson . . . . . . . . . . . . . . . . . . . 4.1.1 Metodo del gradiente precondizionato . . . . . . 4.1.2 Metodo del gradiente coniugato precondizionato 4.1.3 Test d’arresto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 17 17 18 19 5 Memorizzazione di matrici sparse 20 5.1 Alcuni comandi per matrici sparse . . . . . . . . . . . . . . . . 21 6 Sistemi tridiagonali 7 Metodo di Newton 7.1 Metodo di Newton inesatto 22 24 . . . . . . . . . . . . . . . . . . . 25 8 Esponenziale di matrice 8.1 Formula delle variazioni delle costanti . . . 8.2 Calcolo di exp(A) . . . . . . . . . . . . . . . 8.2.1 Matrici piene, di modeste dimensioni 8.2.2 Matrici sparse, di grandi dimensioni . 9 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 26 27 27 29 31 3 4 1 INDICE BVPs 33 10 Introduzione 34 11 Differenze finite 11.1 Differenze finite centrate del secondo ordine . . . . . . . 11.2 Convergenza per un problema modello . . . . . . . . . . 11.2.1 Unicit`a . . . . . . . . . . . . . . . . . . . . . . . . 11.2.2 Esistenza . . . . . . . . . . . . . . . . . . . . . . 11.2.3 Regolarit`a . . . . . . . . . . . . . . . . . . . . . . 11.2.4 Esistenza ed unicit`a per il problema discretizzato 11.2.5 Propriet`a di A . . . . . . . . . . . . . . . . . . . . 11.2.6 Consistenza . . . . . . . . . . . . . . . . . . . . . 11.2.7 Stabilit`a . . . . . . . . . . . . . . . . . . . . . . . 11.2.8 Convergenza . . . . . . . . . . . . . . . . . . . . . 11.3 Altre differenze finite . . . . . . . . . . . . . . . . . . . . 11.3.1 Su nodi non equispaziati . . . . . . . . . . . . . . 11.3.2 Non centrate . . . . . . . . . . . . . . . . . . . . 11.3.3 Di ordine pi` u elevato . . . . . . . . . . . . . . . . 11.4 Condizioni al bordo . . . . . . . . . . . . . . . . . . . . . 11.4.1 Condizioni di Robin . . . . . . . . . . . . . . . . 11.4.2 Importanza delle condizioni al bordo . . . . . . . 11.5 Un esempio: l’equazione della catenaria . . . . . . . . . . 11.5.1 Iterazioni di punto fisso . . . . . . . . . . . . . . . 11.5.2 Metodo di Newton . . . . . . . . . . . . . . . . . 11.6 Norme ed errori . . . . . . . . . . . . . . . . . . . . . . . 11.7 Derivate ed equazioni differenziali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 35 38 39 39 40 41 42 42 42 43 44 44 45 45 45 45 48 49 50 50 51 53 12 Metodo di shooting 54 12.1 Metodo di bisezione . . . . . . . . . . . . . . . . . . . . . . . . 54 12.2 Metodo di Newton . . . . . . . . . . . . . . . . . . . . . . . . 55 12.3 Problema ai limiti con frontiera libera . . . . . . . . . . . . . . 56 13 Equazione di Poisson 58 13.1 Equazione di Poisson bidimensionale . . . . . . . . . . . . . . 58 13.1.1 Condizioni al bordo di Dirichlet . . . . . . . . . . . . . 58 13.1.2 Condizioni al bordo miste . . . . . . . . . . . . . . . . 60 14 Metodi variazionali 62 14.1 Un problema modello . . . . . . . . . . . . . . . . . . . . . . . 62 14.1.1 Metodo di approssimazione variazionale . . . . . . . . . 65 INDICE 14.1.2 Estensione al caso bidimensionale 14.2 Metodi spettrali . . . . . . . . . . . . . . 14.2.1 Trasformata di Fourier . . . . . . 14.2.2 Trasformata di Fourier discreta . 14.3 Metodi di collocazione . . . . . . . . . . 14.3.1 Condizioni al bordo . . . . . . . . 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 73 75 76 84 85 15 Esercizi 88 2 90 ODEs 16 Introduzione 91 16.1 Riduzione in forma autonoma . . . . . . . . . . . . . . . . . . 92 16.2 Equazioni di ordine superiore al primo . . . . . . . . . . . . . 92 17 Metodi ad un passo 17.1 Metodo di Eulero . . . . . . . . . . . . . . 17.2 Metodo dei trapezi . . . . . . . . . . . . . 17.3 theta-metodo . . . . . . . . . . . . . . . . 17.3.1 Risoluzione di un metodo implicito 17.3.2 Newton inesatto e passo variabile . 17.3.3 Caso lineare . . . . . . . . . . . . . 17.4 Verifica dell’implementazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 93 96 97 99 101 102 103 18 Metodi multistep 18.1 Metodi di Adams-Bashforth . . . . . . . 18.2 Metodi lineari multistep . . . . . . . . . 18.2.1 Metodi BDF . . . . . . . . . . . . 18.3 Consistenza e stabilit`a . . . . . . . . . . 18.4 Influenza degli errori di arrotondamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 105 107 109 111 117 . . . . . 19 Metodi di Runge-Kutta 119 19.1 Metodi di Runge–Kutta espliciti . . . . . . . . . . . . . . . . . 119 19.2 Metodi di Runge–Kutta semiimpliciti . . . . . . . . . . . . . . 125 19.3 Metodi di Runge-Kutta embedded . . . . . . . . . . . . . . . . 128 20 A-stabilit` a 20.1 A-stabilit`a dei metodi di Runge-Kutta espliciti . . . . . 20.2 A-stabilit`a dei metodi lineari multistep . . . . . . . . . 20.3 Equazioni stiff . . . . . . . . . . . . . . . . . . . . . . . 20.3.1 Risoluzione di un metodo implicito per problemi . . . . . . . . . stiff 132 . 134 . 136 . 137 . 139 6 INDICE 21 Integratori esponenziali 140 22 Esercizi 143 3 PDEs 23 Equazioni ADR 23.1 Equazione del calore . . . . . . . . . . . . . . . . . 23.1.1 Esistenza di una soluzione . . . . . . . . . . 23.1.2 Unicit`a della soluzione . . . . . . . . . . . . 23.2 Metodo di Fourier . . . . . . . . . . . . . . . . . . . 23.3 Metodo delle linee . . . . . . . . . . . . . . . . . . . 23.3.1 Differenze finite . . . . . . . . . . . . . . . . 23.3.2 Condizioni al bordo di Dirichlet . . . . . . . 23.3.3 Condizioni al bordo di Neumann (costanti) . 23.4 Equazione di trasporto-diffusione . . . . . . . . . . 23.4.1 Stabilizzazione mediante diffusione artificiale 23.4.2 Elementi finiti . . . . . . . . . . . . . . . . . 23.4.3 Errori spaziali e temporali . . . . . . . . . . 23.5 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . 4 147 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Appendici A Alcune dimostrazioni A.1 M -matrici . . . . . . . . . . . . . . . . . . . . . . . . . A.2 Positivit`a di Eulero implicito per trasporto-diffusione . A.3 Equazione del filo elastico . . . . . . . . . . . . . . . . A.4 Equazione della trave . . . . . . . . . . . . . . . . . . . A.4.1 Appoggi ottimali per una trave . . . . . . . . . A.5 Lunghezza della catenaria . . . . . . . . . . . . . . . . A.6 A-stabilit`a di un metodo di Runge–Kutta semiimplicito 148 . 148 . 148 . 151 . 152 . 153 . 154 . 155 . 156 . 156 . 158 . 161 . 162 . 163 165 . . . . . . . . . . . . . . . . . . . . . 166 . 166 . 166 . 169 . 170 . 172 . 174 . 174 B Estrapolazione di Richardson 176 C Temi d’esame 177 5 Bibliografia Bibliografia 195 196 Parte 0 Preliminari 7 Capitolo 1 Matrici e autovalori Una matrice A ∈ Cn×n `e detta normale se AA∗ = A∗ A, ove A∗ denota la trasposta coniugata. Esempi di matrici normali sono le hermitiane (simmetriche se reali) A∗ = A, le antihermitiane (antisimmetriche se reali) A∗ = −A e le unitarie (ortogonali se reali) A∗ = A−1 . Vale il seguente Teorema 1 (Teorema spettrale). Una matrice A `e normale se e solo se si pu` o decomporre come A = U DU ∗ ove U `e una matrice unitaria e D la matrice diagonale degli autovalori di A. In particolare, gli autovettori di una matrice normale (le colonne di U ) relativi ad autovalori distinti sono tra loro ortogonali e dunque formano una base per Cn . Il campo dei valori (field of values o numerical range) W (A) di A `e il sottoinsieme di C dei numeri della forma W (A) = {z ∈ C : z = x∗ Ax, x ∈ Cn , x∗ x = 1} Gli autovalori di A stanno nel campo dei valori: infatti, se Ax = λx, con x di norma unitaria, allora λ = x∗ Ax. Il campo dei valori gode della propriet`a subadditiva: W (A + B) ⊆ W (A) + W (B). Per le matrici normali, il campo dei valori `e l’involucro convesso dello spettro. Infatti, se λ = x∗ Ax e x = P n i=1 ci xi , ove gli {xi } sono gli autovettori (di norma unitaria) di A, allora ∗ λ = x Ax = n X ci cj x∗i Axj = i,j=1 e P j |cj | 2 n X i,j=1 = 1 perch´e x di norma unitaria. 8 ci cj λj x∗i xj = n X j=1 |cj |2 λj 9 Teorema 2 (Dischi di Gerschgorin). Sia A = (aij ) una matrice quadrata di dimensione n. Allora gli autovalori sono compresi nella regione ! ! n n [ [ Cj Ri ∩ j=1 i=1 ove Ri = z ∈ C : |z − aii | ≤ n X j=1 j6=i |aij | , Cj = z ∈ C : |z − ajj | ≤ n X i=1 i6=j |aij | Dimostrazione. Dimostriamo che gli autovalori (destri) di A stanno in ∪i Ri : seguir`a che gli autovalori di AT stanno in ∪j Cj e poich´e i due insiemi di autovalori coincidono, staranno nell’intersezione. Sia λ un autovalore e v l’autovettore associato, normalizzato in modo che max|vk | = |vi | = 1 k per un qualche 1 ≤ i ≤ n. Allora n X j=1 aij vj − λvi = n X j=1 j6=i aij uj + aii vi − λvi = n X j=1 j6=i aij vj + (aii − λ)vi = 0 Passando ai moduli |aii − λ| = | e dunque λ ∈ Ri . n X j=1 j6=i aij vj | ≤ n X j=1 j6=i |aij ||vj | ≤ n X j=1 j6=i |aij | Capitolo 2 Interpolazione polinomiale a tratti Data una funzione f : [a, b] → R e un’insieme {xi }m i=1 ⊂ [a, b] di nodi ordinati (xi−1 < xi ), consideriamo l’interpolante polinomiale a tratti pck−1 f di grado k − 1. Su ogni intervallo [xi , xi+1 ] di lunghezza hi = xi+1 − xi essa `e il polinomio di grado k − 1 ai,1 (x − xi )k−1 + ai,2 (x − xi )k−2 + . . . + ai,k−1 (x − xi ) + ai,k . (2.1) Dunque, l’interpolante polinomiale a tratti `e completamente nota una volta noti i nodi e i coefficienti di ogni polinomio. In GNU Octave, l’interpolante polinomiale a tratti `e definita mediante una struttura solitamente chiamata pp (piecewise polynomial) che si costruisce con il comando mkpp(x,A), ove x `e il vettore di nodi e A `e la matrice, con riferimento a (2.1), Aij = ai,j . Nota una struttura pp, `e possibile valutare il valore dell’interpolante in un generico target (o vettore di target) x¯ con il comando ppval(pp,xbar). 2.1 Interpolazione lineare a tratti Dati i vettori [x1 , . . . , xm ]T e [f1 , . . . , fm ]T , nell’intervallo [xi , xi+1 ] l’interpolante lineare a tratti coincide con il polinomio di grado uno fi+1 − fi (x − xi ) + fi hi ove hi = xi+1 − xi . Pertanto, si costruisce la corrispondente struttura pp con il comando 10 2.1. INTERPOLAZIONE LINEARE A TRATTI 11 pp = mkpp(x,[(f(2:m)-f(1:m-1))./h,f(1:m-1)]) ove h `e il vettore delle distanze tra nodi consecutivi (e si pu`o ottenere con il comando diff(x)). 2.1.1 Errore di interpolazione Il risultato fondamentale sull’errore di interpolazione `e f (m) (ξ) f (x) − pm−1 f (x) = (x − x1 ) · (x − x2 ) · . . . · (x − xm ) n! ove pm−1 f `e il polinomio di grado m−1 interpolatore di f sui nodi {xi }m i=1 e ξ m un opportuno punto nell’involucro convesso di x ∪ {xi }i=1 . Per l’interpolante lineare a tratti pc1 f su nodi equispaziati in un intervallo [a, b], si ha dunque per x ∈ [xi , xi+1 ] f (x) − pc1 f (x) = f ′′ (ξ) (x − xi )(x − xi+1 ) 2 (2.2) e pertanto |f (x) − pc1 f (x)| ≤ f ′′ (ξ) h2 , ξ∈[xi ,xi+1 ] 2 4 max x ∈ [xi , xi+1 ] ((x − xi )(xi+1 − x) `e una parabola rivolta verso il basso di vertice (xi + h/2, h2 /4)) da cui max|f (x) − pc1 f (x)| = kf − pc1 f k∞ ≤ [a,b] h2 ′′ kf k∞ 8 Derivando rispetto a x l’equazione (2.2), si ottiene f ′ (x) − (pc1 f )′ (x) = f ′′ (ξ) [(x − xi+1 ) + (x − xi )] 2 e pertanto |f ′ (x) − (pc1 f )′ (x)| ≤ f ′′ (ξ) 2h, ξ∈[xi ,xi+1 ] 2 max da cui kf ′ − (pc1 f )′ k∞ ≤ hkf ′′ k∞ x ∈ [xi , xi+1 ] Capitolo 3 Formule di quadratura gaussiana Dato un intervallo (a, b) (eventualmente anche non limitato) e una funzione peso w(x) non negativa su (a, b), si considera il prodotto scalare (f, g) = Z b f (x)g(x)w(x)dx a con l’ipotesi Z b a |x|k w(x)dx < ∞, k≥0 Allora, esiste un’unica famiglia {pj (x)}j , pj (x) polinomio di grado j, ortonormale rispetto al prodotto scalare Z b pj (x)pi (x)w(x)dx = δij a Gli zeri {xn }m n=1 del polinomio pm (x) sono interni all’intervallo (a, b) e assieme ai pesi Z b Ln (x)w(x)dx, 1 ≤ n ≤ m wn = a ove Ln (x) `e il polinomio di Lagrange di grado m − 1 che vale 1 in xn e zero in tutti gli altri nodi, costituiscono una formula di quadratura gaussiana esatta fino al grado polinomiale 2m − 1, cio`e Z b qj (x)w(x)dx = a m X qj (xn )wn , n=1 12 0 ≤ j ≤ 2m − 1 3.1. QUADRATURA GAUSSIANA DI CHEBYSHEV(-LOBATTO) 13 ove qj (x) `e un qualunque polinomio di grado 2m − 1. In particolare, per la famiglia {pj }j , vale δij = Z b pj (x)pi (x)w(x)dx = a m X pj (xn )pi (xn )wn , n=1 0 ≤ i, j ≤ m − 1 (3.1) (perch´e pj (x)pi (x) `e un polinomio di grado i+j ≤ 2m−2 < 2m−1). Nel caso in cui (a, b) sia limitato, esiste un’unica formula di quadratura esatta fino al m−1 grado polinomiale 2m−3 che usa come nodi x¯1 = a, x¯m = b e gli zeri {¯ xn }n=2 del polinomio di grado m − 2 della famiglia di polinomi ortogonali rispetto alla funzione peso w(x)(x − a)(b − x). In questo caso si ha, in particolare, δij = Z b pj (x)pi (x)w(x)dx = a m X pj (¯ xn )pi (¯ xn )w¯n , n=1 0≤i≤m−3 0≤j ≤m−1 p La famiglia {φj (x)}m w(x) `e ovviamente ortonormale j=1 , ove φj (x) = pj−1 (x) rispetto al prodotto scalare Z b (f, g) = f (x)g(x)dx a e per essa valgono le osservazioni fatte sopra riguardo al calcolo degli integrali. 3.1 Quadratura gaussiana di Chebyshev e di Chebyshev–Lobatto Per integrali del tipo Z 1 f (x) √ dx 1 − x2 −1 i polinomi ortogonali da considerare sono quelli di Chebyshev pj (x) = Tj (x) = cos(j arccos(x)) che soddisfano la relazione di ricorrenza T0 (x) = 1, T1 (x) = 1 Tj+1 (x) = 2xTj (x) − Tj−1 (x), j≥1 Gli zeri del polinomio di grado m soddisfano m arccos(x) = π + (n − 1)π, 2 1≤n≤m 14 CAPITOLO 3. FORMULE DI QUADRATURA GAUSSIANA (gli angoli devono essere compresi tra 0 e mπ) da cui π + (n − 1)π π (2n − 1)π 2 xn = cos = sin , − m 2 2m 1≤n≤m (la seconda formula produce nodi anche numericamente simmetrici) e i corrispondenti pesi di quadratura sono costanti e valgono wn = π , m 1≤n≤m I nodi di (Gauss–)Chebyshev–Lobatto sono invece π (n − 1)π (n − 1)π − = sin , x¯n = cos m−1 2 m−1 1≤n≤m e i corrispondenti pesi π per n = 1 o n = m 2(m − 1) w¯n = π per 2 ≤ n ≤ m − 1 m−1 Capitolo 4 Metodi iterativi per sistemi di equazioni lineari I metodi iterativi per la soluzione del sistema lineare Ax = b (4.1) si basano sull’idea di calcolare la soluzione come limite di una successione di vettori x = lim x(l) . l→∞ Una strategia generale per costruire la successione {x(l) }l `e basata sullo splitting A = P − M , ove P `e non singolare. Assegnato x(1) , il termine x(l+1) `e calcolato ricorsivamente come P x(l+1) = M x(l) + b, l≥1 (4.2) Posto e(l) = x − x(l) , si ha e(l) = Bel−1 , B = P −1 M = I − P −1 A , ` molto importante questo risultato ove B `e chiamata matrice di iterazione. E Proposizione 1. Sia B una matrice quadrata. Sono equivalenti 1. liml→∞ B l = 0 (ove 0 indica la matrice nulla) 2. liml→∞ kB l k = 0, per una qualunque norma 3. ρ(B) < 1, ove ρ(B) = maxλ |λ|, λ ∈ σ(B) `e il raggio spettrale di B 15 16 CAPITOLO 4. METODI ITERATIVI PER SISTEMI LINEARI Dimostrazione. Poich´e la funzione norma k·k `e continua, 1. implica 2. Per l’equivalenza delle norme kB l k∞ ≤ M kB l k e per definizione di k·k∞ , se kB l k tende a zero, B l tende alla matrice nulla. Pertanto 2. implica 1. Per una qualunque norma naturale1 kBk ≥ ρ(B) (infatti kBk = maxkxk=1 kBxk ≥ kBuk = |λ| se λ e u con norma unitaria sono una coppia autovalore-autovettore) e quindi kB l k ≥ ρ(B l ) = ρ(B)l e dunque 2. implica 3. Il raggio spettrale di una matrice gode della seguente propriet`a (qui non dimostrata): per ogni ε esiste una norma naturale k·k tale che kBk ≤ ρ(B) + ε Pertanto, se ρ(B) < 1 allora esiste ε e una norma naturale k·k tali che kBk ≤ ρ(B) + ε = µ < 1 e dunque (per la disuguaglianza moltiplicativa valida per le norme naturali) kB l k ≤ kBkl ≤ µl e quindi liml→∞ kB l k = 0 e cos`ı per ogni altra norma, per l’equivalenza delle norme. Dunque, 3. implica 2. Da questa proposizione discende immediatamente la seguente Proposizione 2. Se ρ(B) < 1 (o se kBk < 1 per una qualunque norma k·k), allora ∞ X −1 (I − B) = Bl l=0 Dimostrazione. Basta considerare (I − B)(I + B + B 2 + . . . + B L−1 ) = I − B L = (I + B + B 2 + . . . + B L−1 )(I − B) e passare al limite L → ∞. Tornando ai metodi iterativi, si ha e(l) = B l e(0) e dunque e(l) tende a zero se e solo se ρ(B) < 1. 1 Indotta da una norma sui vettori 4.1. METODI DI RICHARDSON 4.1 17 Metodi di Richardson Indicato con r(l) il residuo r(l) = b − Ax(l) = Ax − Ax(l) = A(x − x(l) ) = Ae(l) , il metodo (4.2) pu`o essere riscritto come P (x(l+1) − x(l) ) = r(l) . (4.3) In questo contesto, P viene chiamata matrice di precondizionamento o precondizionatore di A e viene scelta in modo che la matrice di iterazione B = I − P −1 A abbia un raggio spettrale minore di 1 e la risoluzione di (4.3) sia “facile”. Una generalizzazione dello schema (4.3) `e il metodo di Richardson: dato (1) x , x(l+1) `e calcolato ricorsivamente come P (x(l+1) − x(l) ) = αr(l) , ove α `e un opportuno parametro di accelerazione. Dati x(1) e r(1) = b−Ax(1) , l’algoritmo per calcolare x(l+1) `e P z (l) = r(l) x(l+1) = x(l) + αz (l) (4.4) r(l+1) = r(l) − αAz (l) Il costo di un’iterazione `e dato essenzialmente dalla risoluzione di un sistema lineare P z (l) = r(l) facile e dal prodotto matrice-vettore Az (l) . Tali metodi risulteranno particolarmente vantaggiosi per matrici sparse, in cui il numero di elementi diversi da zero `e O(N ) piuttosto che O(N 2 ) (e dunque il costo di un prodotto matrice-vettore `e O(N )), se l’ordine della matrice `e N . Il calcolo del residuo r(l+1) = r(l) − αAz (l) (invece di r(l+1) = b − Ax(l+1) ) permette di ridurre la propagazione, attraverso il prodotto matrice-vettore, degli errori, in quanto il vettore z (l) , contrariamente a x(l+1) , diminuisce in modulo al crescere di l. 4.1.1 Metodo del gradiente precondizionato Siano A e P simmetriche e definite positive. Il metodo di Richardson pu`o essere generalizzato con una scelta dinamica del parametro di accelerazione, prendendo α = αl in modo tale che p kx − x(l+1) kA , kykA = y T Ay 18 CAPITOLO 4. METODI ITERATIVI PER SISTEMI LINEARI sia minima. Si ha kx − x(l+1) k2A = (x − x(l) − αl z (l) )T A(x − x(l) − αl z (l) ) = T T = αl2 z (l) Az (l) − 2αl z (l) A(x − x(l) ) + (x − x(l) )T A(x − x(l) ) e dunque il minimo `e dato dalla scelta T αl = z (l) r(l) . T z (l) Az (l) Il metodo ottenuto si chiama metodo del gradiente precondizionato. Dati x(1) e r(1) , l’algoritmo per calcolare x(l+1) `e P z (l) = r(l) T z (l) r(l) αl = T z (l) Az (l) x(l+1) = x(l) + αl z (l) (4.5) r(l+1) = r(l) − αl Az (l) Nel caso si scelga P = I, si ottiene il metodo del gradiente (noto anche come steepest descent). 4.1.2 Metodo del gradiente coniugato precondizionato Siano A e P simmetriche e definite positive. Il metodo del gradiente coniugato precondizionato `e una generalizzazione del metodo di Richardson in cui x(l+1) = x(l) + αl p(l) ove i {p(l) }l sono coniugati, cio`e soddisfano T p(i) Ap(j) = 0, i 6= j Per soddisfare questa propriet`a `e necessaria l’introduzione di un ulteriore parametro βl . Dati x(1) , r(1) , P z (1) = r(1) e p(1) = z (1) , l’algoritmo per calcolare x(l+1) `e T z (l) r(l) αl = T p(l) Ap(l) x(l+1) = x(l) + αl p(l) r(l+1) = r(l) − αl Ap(l) P z (l+1) = r(l+1) T βl+1 = p(l+1) z (l+1) r(l+1) T z (l) r(l) = z (l+1) + βl+1 p(l) (4.6) 4.1. METODI DI RICHARDSON 19 Teorema 3. Il metodo del gradiente coniugato applicato ad una matrice di ordine N converge in al pi` u N iterazioni (in aritmetica esatta). Dimostrazione. La dimostrazione (omessa) si basa essenzialmente sul fatto che p(1) , . . . , p(N ) sono vettori linearmente indipendenti e non ce ne possono essere pi` u di N . Per questo motivo, tale metodo `e detto semiiterativo. Stima dell’errore Vale la seguente stima dell’errore: !l−1 p cond2 (P −1 A) − 1 p ke(1) kA −1 cond2 (P A) + 1 ke(l) kA ≤ 2 dalle quale si osserva che • la stima d’errore decresce in ogni caso, poich´e il numeratore `e pi` u piccolo del denominatore; • in particolare, nel caso P = I; • tanto pi` u `e piccolo il numero di condizionamento di P −1 A, tanto pi` u il metodo ha convergenza veloce; • nel caso limite di P = A, si ha ke(l) kA ≤ 0. 4.1.3 Test d’arresto Un primo stimatore `e costituito dal residuo: si arresta cio`e il metodo iterativo quando kr(l) k ≤ tol · kbk Infatti, dalla precedente si ricava ke(l) k ≤ tol · cond(A) kxk Una modifica consiste in kr(l) k ≤ tol · kr(1) k (4.7) che coincide con il precedente nel caso in cui come x(1) venga scelto il vettore di zeri. Capitolo 5 Memorizzazione di matrici sparse Sia A una matrice sparsa di ordine N con m elementi diversi da zero. Esistono molti formati di memorizzazione di matrici sparse. Quello usato da GNU Octave `e il Compressed Column Storage (CCS). Consiste di tre array: un primo, data, di lunghezza m contenente gli elementi diversi da zero della matrice, ordinati prima per colonna e poi per riga; un secondo, ridx, di lunghezza m contenente gli indici di riga degli elementi di data; ed un terzo, cidx, di lunghezza N + 1, il cui elemento i-esimo (i < N + 1) `e la posizione dentro data del primo elemento della colonna i e l’elemento (N +1)-esimo `e il numero totale di elementi diversi da zero incrementato di uno. Per esempio, alla matrice 1 0 0 0 0 2 3 0 A= 4 0 5 6 0 0 0 7 corrispondono i vettori data = [1, 4, 2, 3, 5, 6, 7] ridx = [1, 3, 2, 2, 3, 3, 4] cidx = [1, 3, 4, 6, 8] Talvolta, soprattutto in linguaggi di calcolo con array che iniziano dall’indice 0, gli array ridx e cidx hanno elementi decrementati di uno. In GNU Octave, il formato CCS e l’implementazione del prodotto matrice-vettore sono automaticamente usati dalla function sparse e dall’operatore *, rispettivamente. 20 5.1. ALCUNI COMANDI PER MATRICI SPARSE 5.1 21 Alcuni comandi per matrici sparse • Il comando speye(N) genera la matrice identit`a di ordine N . • Il comando spdiags(v,0,N,N), ove v `e un vettore colonna, genera la matrice diagonale di ordine n avente v in diagonale. Se la dimensione di v `e minore di n, la diagonale viene riempita con zeri posti dopo il vettore v. Se invece la dimensione di v `e maggiore di N , vengono usate solo le prime N componenti di v. Sia V la matrice v11 v21 V = .. . v12 v22 .. . v13 v23 .. . vN 1 vN 2 vN 3 Il comando spdiags(V,-1:1,N,N) genera la matrice v12 v23 0 0 ... 0 v11 v22 v33 0 ... 0 .. ... ... . 0 v v 21 32 . . .. ... ... .. .. ... . 0 . . . 0 vN −2 1 vN −1 2 vN 3 0 ... ... 0 vN −1 1 vN 2 Capitolo 6 Sistemi tridiagonali La risoluzione di sistemi tridiagonali Ax = b con a1 b1 0 A= ... 0 0 c1 0 . . . ... 0 a2 c 2 0 ... 0 .. ... ... ... ... . .. ... ... ... ... . ... ... bn−2 an−1 cn−1 ... ... 0 bn−1 an risulta particolarmente economica. Infatti, nel caso non sia necessario il pivoting, si ha A = LU , ove 1 0 ... ... 0 α1 c1 0 ... 0 β1 1 0 0 α2 c2 . . . . . . 0 0 . . .. ... ... ... . ... ... ... . , U = .. . L=0 . . . . . . . . . . ... .. 0 . . . . . . αn−1 cn−1 0 . . . 0 βn−1 1 0 ... ... 0 αn con ( α 1 = a1 βk−1 = bk−1 /αk−1 , αk = ak − βk−1 ck−1 , k = 2, 3, . . . , n e dunque la fattorizzazione LU costa O(2n) flops. A questo punto si risolvono i due sistemi Ly = b e U x = y, mediante ( y1 = b1 yk = bk − βk−1 yk−1 , k = 2, 3, . . . n 22 23 e ( xn = yn /αn xk = (yk − ck xk+1 )/αk , k = n − 1, n − 2, . . . 1 con un ulteriore costo O(2n) flops. GNU Octave usa automaticamente questo algoritmo per le matrici tridiagonali. Capitolo 7 Metodo di Newton per sistemi di equazioni non lineari Consideriamo il sistema di equazioni non lineari f1 (x1 , x2 , . . . , xN ) = 0 f2 (x1 , x2 , . . . , xN ) = 0 .. . fN (x1 , x2 , . . . , xN ) = 0 che pu`o essere riscritto, in forma compatta, f (x) = 0 . Dato x(1) , il metodo di Newton per calcolare x(r+1) `e J (r) δx(r) = −f (x(r) ) x(r+1) = x(r) + δx(r) (7.1) ove J (r) `e la matrice Jacobiana, definita da (r) Jij = ∂fi (x(r) ) (r) ∂xj . Il criterio d’arresto solitamente usato `e kδx(r) k ≤ tol In Matlab/Octave l’implementazione potrebbe essere: 24 (7.2) 7.1. METODO DI NEWTON INESATTO 25 f = @(x) ... % f J = @(x) ... % jacobiano di f x0 = ... % guess iniziale x = x0; errest = -J(x) \ f(x); while (norm(errest,inf) > Newt_tol) x = x + errest; errest = -J(x) \ f(x); end 7.1 Metodo di Newton inesatto Il metodo di Newton (7.1) richiede il calcolo della matrice Jacobiana e la sua “inversione” ad ogni passo k. Questo potrebbe essere troppo oneroso (O(N 3 ) per un metodo diretto). Una strategia per ridurre il costo computazionale `e usare sempre la stessa matrice Jacobiana J (1) , oppure aggiornarla solo dopo un certo numero di iterazioni, oppure ancora usarne una sua approssimazione costante. In tal modo, per esempio, `e possibile usare la stessa fattorizzazione L(r) U (r) per pi` u iterazioni successive e usarla per risolvere i sistemi lineari 2 (di costo O(N )). Capitolo 8 Esponenziale di matrice Data una matrice quadrata A ∈ RN ×N , si definisce exp(A) = ∞ X Aj j=0 j! Tale serie converge per qualunque matrice A, essendo A un operatore lineare tra spazi di Banach e avendo la serie esponenziale raggio di convergenza ∞. Se A e B sono permutabili (cio`e AB = BA), allora exp(A + B) = exp(A) exp(B) 8.1 Formula delle variazioni delle costanti Data l’equazione differenziale ( y ′ (t) = ay(t) + b(t, y(t)), y(t0 ) = y0 t>0 (8.1) y(t) ∈ R, la soluzione pu`o essere scritta analiticamente mediante la formula delle variazioni delle costanti Z t (t−t0 )a e(t−τ )a b(τ, y(τ ))dτ (8.2) y(t) = e y0 + t0 Infatti, si ha ′ y (t) = ae (t−t0 )a y0 +a Z t e(t−τ )a b(τ, y(τ ))dτ +e(t−t)a b(t, y(t)) = ay(t)+b(t, y(t)) t0 26 8.2. CALCOLO DI exp(A) Si osservi che Z t e (t−τ )a t0 ove 27 t 1 (t−τ )a −ae dτ = − e = a t0 t0 (t−t )a 0 1 e −1 = − 1 − e(t−t0 )a = (t − t0 ) = a (t − t0 )a = (t − t0 )ϕ1 ((t − t0 )a) , 1 dτ = − a Z t (t−τ )a ∞ ez − 1 X z j ϕ1 (z) = = z (j + 1)! j=0 e, analogamente, Z (8.3) t t0 e(t−τ )a (τ − t0 )dτ = (t − t0 )2 ϕ2 ((t − t0 )a) ove ϕ2 (z) = ∞ ez − 1 − z X z j = z2 (j + 2)! j=0 Consideriamo ora un sistema differenziale ( y ′ (t) = Ay(t) + b(t, y(t)), y(t0 ) = y 0 (8.4) t>0 Ancora, la soluzione esplicita pu`o essere scritta come Z t y(t) = exp((t − t0 )A)y 0 + exp((t − τ )A)b(τ, y(τ ))dτ t0 8.2 Calcolo di exp(A) Come per la risoluzione di sistemi lineari, non esiste il modo per calcolare exp(A), ma diversi modi, ognuno adatto a particolari situazioni. 8.2.1 Matrici piene, di modeste dimensioni Questi metodi si applicano, in pratica, a quelle matrici per le quali si usano i metodi diretti per la risoluzione di sistemi lineari. 28 CAPITOLO 8. ESPONENZIALE DI MATRICE Decomposizione spettrale Se la matrice `e diagonalizzabile, cio`e A = V DV −1 , allora exp(A) = V exp(D)V −1 , ove exp(D) `e la matrice diagonale con elementi ed1 , ed2 , . . . , edN . Basta infatti osservare che A2 = (V DV −1 )2 = (V DV −1 )(V DV −1 ) = V D2 V −1 e scrivere exp(A) come serie di Taylor. La decomposizione spettrale di una matrice costa, in generale, O(N 3 ). Si ottiene in GNU Octave con il comando eig. Approssimazione razionale di Pad´ e Si considera un’approssimazione razionale della funzione esponenziale a1 z p−1 + a2 z p−2 + . . . + ap e ≈ , b1 z q−1 + b2 z q−2 + . . . + bq z (8.5) ove bq = 1 per convenzione. Essa `e chiamata diagonale quando p = q. Si pu`o dimostrare che le approssimazioni diagonali sono le pi` u efficienti. Fissato il grado di approssimazione, si sviluppa in serie di Taylor la funzione esponenziale e si fanno coincidere quanti pi` u coefficienti possibile. Per esempio, fissiamo p = q = 2. Si ha allora z2 z3 + + . . . (b1 z + 1) ≈ a1 z + a2 1+z+ 2 6 z2 b1 z + 1 + b1 z 2 + z + + o(z 2 ) ≈ a1 z + a2 2 da cui 1 = a2 b 1 + 1 = a1 b1 + 1 = 0 2 L’approssimazione di Pad´e si estende banalmente al caso matriciale. Considerando sempre il caso p = q = 2, si ha exp(A) ≈ B = (b1 A + I)−1 (a1 A + a2 I) , cio`e B `e soluzione del sistema lineare (b1 A + I)B = a1 A + a2 I. L’approssimazione di Pad´e `e accurata solo quando |z| < 1/2 (o, nel caso matriciale, kAk2 < 1/2). Per la funzione esponenziale esiste una tecnica, chiamata scaling and squaring che permette di aggirare il problema. Si usa infatti la propriet`a j 2 j 2 ez = ez/2 = ez/2 8.2. CALCOLO DI exp(A) 29 Se |z| > 1/2, allora |z|/2j < 1/2 per j > log2 (|z|) + 1. Si calcola dunque j l’approssimazione di Pad´e di ez/2 e poi si eleva al quadrato j volte. Per la funzione ϕ1 vale z 1 ϕ1 (z) = (ez/2 + 1)ϕ1 2 2 Anche l’approssimazione di Pad´e matriciale ha costo O(N 3 ). In GNU Octave si usa una variante di questa tecnica nel comando expm. 8.2.2 Matrici sparse, di grandi dimensioni I metodi visti nel paragrafo precedente ignorano l’eventuale sparsit`a delle matrici. Inoltre, negli integratori esponenziali, non `e mai richiesto di calcolare esplicitamente funzioni di matrice, ma solo funzioni di matrice applicate a vettori, cio`e exp(A)v (`e l’analoga differenza tra calcolare A−1 e A−1 v). Si possono allora usare dei metodi iterativi. Metodo di Krylov Mediante la tecnica di Arnoldi `e possibile, tramite prodotti matrice-vettore, decomporre A in VmT AVm = Hm , ove Vm ∈ Rn×m , VmT Vm = In , Vm e1 = v e Hm `e matrice di Hessenberg di ordine m (con m ≪ n). Allora AVm ≈ Vm Hm e quindi exp(A)Vm ≈ Vm exp(Hm ) ⇒ exp(A)v ≈ Vm exp(Hm )e1 Il calcolo di exp(Hm ) `e fatto mediante l’approssimazione di Pad´e. Il costo ` necessario inoltre della tecnica di Arnoldi `e O(nm2 ) se A `e matrice sparsa. E memorizzare la matrice Vm . Interpolazione su nodi di Leja Se il polinomio pm (z) interpola ez nei ` una nodi ξ0 , ξ1 , . . . , ξm , allora pm (A)v `e una approssimazione di exp(A)v. E buona approssimazione se i nodi sono buoni (non equispaziati, per esempio) ` difficile e se sono contenuti nell’involucro convesso dello spettro di A. E ` conveniente usare stimare a priori il grado di interpolazione m necessario. E la formula di interpolazione di Newton pm−1 (z) = d1 + d2 (z − ξ1 ) + d3 (z − ξ1 )(z − ξ2 ) + · . . . · +dm (z − ξ1 ) · · · (z − ξm−1 ) ove {di }i sono le differenze divise. Tale formula si pu`o scrivere, nel caso matriciale, ! m−1 Y (A − ξi I) v = (A − ξm−1 )wm−1 pm−1 (A)v = pm−2 v + dm wm , wm = i=1 30 CAPITOLO 8. ESPONENZIALE DI MATRICE Dunque, la complessit`a `e O(N m) `e richiesta la memorizzazione di un solo vettore w. Quali nodi usare? I nodi di Chebyshev, molto buoni per l’interpolazione, non possono essere usati, in quanto non permettono un uso efficiente della formula di interpolazione di Newton (cambiano tutti al cambiare del grado). I nodi di Leja sono distribuiti asintoticamente come i nodi di Chebyshev e, dati i primi m − 1, ξm `e il nodo per cui m−1 Y i=1 |ξm − ξi | = max ξ∈[a,b] m−1 Y i=1 |ξ − ξi | , ove l’intervallo [a, b] `e in relazione con lo spettro di A, per esempio [a, b] = σ(A) ∩ {y = 0}. Il primo nodo coincide, solitamente, con l’estremo dell’in` chiaro che l’insieme dei primi m nodi tervallo [a, b] di modulo massimo. E di Leja coincide con l’unione di {ξm } con l’insieme dei primi m − 1 nodi di Leja. Capitolo 9 Esercizi 1. Implemetare le functions [data,ridx,cidx] = full2ccs(A) e [A] = ccs2full(data,ridx,cidx) e le functions che, dati data, ridx e cidx, implementano i prodotti matrice vettore Ax e AT x. 2. Si risolvano 6 sistemi lineari con le matrici di Hilbert di ordine N = 4, 6, 8, 10, 12, 14 (hilb(N)) e termine noto scelto in modo che la soluzione esatta sia il vettore [1, 1, . . . , 1]T usando il comando \ di GNU Octave, il metodo del gradiente precondizionato e il metodo del gradiente coniugato precondizionato. Per questi ultimi due, si usi una tolleranza pari a 10−6 , un numero massimo di iterazioni pari a 2000, il precondizionatore diagonale e un vettore iniziale x(1) di zeri. Si riporti, per ogni N , il numero di condizionamento della matrice, l’errore in norma infinito rispetto alla soluzione esatta e il numero di iterazioni dei metodi iterativi. 3. Risolvere il sistema non lineare ( f1 (x1 , x2 ) = x21 + x22 − 1 = 0 f2 (x1 , x2 ) = sin(πx1 /2) + x32 = 0 con il metodo di Newton (7.1). Si usi una tolleranza pari a 10−6 , un numero massimo di iterazioni pari a 150 e un vettore iniziale x(1) = [1, 1]T . Si risolva lo stesso sistema non lineare usando sempre la matrice Jacobiana relativa al primo passo e aggiornando la matrice Jacobiana ogni r iterazioni, ove r `e il pi` u piccolo numero di iterazioni che permette di ottenere la stessa soluzione con la tolleranza richiesta calcolando solo due volte la matrice Jacobiana. 31 32 CAPITOLO 9. ESERCIZI 4. Si implementi una function [a,b] = padeexp(p) che restituisce i coefficienti dell’approssimazione razionale di Pad´e (8.5) (con p = q) per la funzione esponenziale. Parte 1 BVPs (Problemi ai limiti) 33 Capitolo 10 Introduzione Consideriamo il seguente problema ai limiti (boundary value problem) ′′ ′ u (x) = f (x, u(x), u (x)), x ∈ (a, b) u(a) = ua (10.1) u(b) = u b ove u(x) ∈ R. Le condizioni ai bordi sono di Dirichlet quando viene prescritto il valore della soluzione u(x) e di Neumann quando viene prescritto il valore della derivata della soluzione u′ (x). Si possono avere anche condizioni miste, ad esempio ′′ ′ u (x) = f (x, u(x), u (x)), x ∈ (a, b) u(a) = ua u′ (b) = u′ b Con un’unica notazione si pu`o scrivere ′′ ′ u (x) = f (x, u(x), u (x)), αa u(a) + βa u′ (a) = γa α u(b) + β u′ (b) = γ b b b x ∈ (a, b) Se αa 6= 0 e βa 6= 0 (oppure αb 6= 0 e βb 6= 0) si parla di condizioni di Robin. Quando i valori prescritti ai bordi sono nulli, si parla di condizioni omogenee. 34 Capitolo 11 Differenze finite 11.1 Differenze finite centrate del secondo ordine Sia u ∈ C 3 ([a, b]) e xi = a + (i − 1)h, 1 ≤ i ≤ m, h = (b − a)/(m − 1). Sviluppando in serie di Taylor (resto di Lagrange), si ha h2 ′′ h3 u (xi ) + u(3) (ˆ xi ) 2 6 h3 h2 xi ) u(xi−1 ) = u(xi ) − hu′ (xi ) + u′′ (xi ) − u(3) (˜ 2 6 u(xi+1 ) = u(xi ) + hu′ (xi ) + da cui u(xi+1 ) − u(xi−1 ) (1) − τi 2h 2 (1) xi ) `e l’errore locale (u(3) (ˆ xi ) + u(3) (˜ xi ) = 2u(3) (¯ xi ), per ove τi = h6 u(3) (¯ un opportuno x¯i , per il teorema dei valori intermedi). Analogamente, sia u ∈ C 4 ([a, b]). Si ha (1) u′ (xi ) = ∆u(xi ) − τi = h3 h4 h2 ′′ u (xi ) + u(3) (xi ) + u(4) (ˆ xi ) 2 6 24 h2 ′′ h3 (3) h4 (4) ′ u(xi−1 ) = u(xi ) − hu (xi ) + u (xi ) − u (xi ) + u (˜ xi ) 2 6 24 u(xi+1 ) = u(xi ) + hu′ (xi ) + da cui (2) u′′ (xi ) = ∆2 u(xi ) − τi (2) = u(xi+1 ) − 2u(xi ) + u(xi−1 ) (2) − τi h2 2 (11.1) xi ). Queste approssimazioni della derivata prima e seconda ove τi = h12 u(4) (¯ di chiamano differenze finite centrate del secondo ordine. Il termine “centrate” si riferisce al fatto che i punti xi sono equispaziati e si usano i valori 35 36 CAPITOLO 11. DIFFERENZE FINITE della funzione u(x) in uno stesso numero di punti a sinistra e a destra di xi per ricavare un’approssimazione delle derivate. Il termine “secondo ordine” si riferisce al fatto che l’errore locale `e proporzionale alla seconda potenza del passo di discretizzazione h. Ovviamente sono possibili altri tipi di approssimazione, basati su nodi non equispaziati, non centrate e di ordine diverso (vedi § 11.3). 10 errore derivata seconda stima errore derivata seconda errore derivata prima stima errore derivata prima diff12.m errore in norma infinito 1 0.1 0.01 10 20 50 100 m Figura 11.1: Errori nell’approssimazione delle derivate prima e seconda per la funzione u(x) = sin(3x). In Figura 11.1 si vedono gli errori (in norma infinito) tra la derivata prima e seconda della funzione u(x) = sin(3x) e la relativa approssimazione mediante differenze finite centrate del secondo ordine (asterischi) e le stime h2 /6 · ku(3) k∞ e h2 /12 · ku(4) k∞ (linea continua), rispettivamente, ove h = 2π/(m − 1). In Figura 11.2 si vede invece che per la funzione u(x) = |x|7/2 , l’approssimazione della derivata prima mediante differenze finite centrate ha effettivamente ordine due, mentre quella della derivata seconda no, in quanto non esiste la derivata quarta di u(x) (h = 2/(m − 1)). Una volta scelto il tipo di discretizzazione, invece del problema originale (10.1) si risolve il problema discretizzato 2 ∆ ui = f (xi , ui , ∆ui ), u 1 = ua u = u m b 2≤i≤m−1 11.1. DIFFERENZE FINITE CENTRATE DEL SECONDO ORDINE 37 1 errore derivata seconda errore derivata prima h2 errore in norma infinito 0.1 0.01 0.001 10 20 50 100 m Figura 11.2: Errori nell’approssimazione delle derivate prima e seconda per la funzione u(x) = |x|7/2 . nell’incognita u = [u1 , u2 , . . . , um−1 , um ]T , ove ui+1 − ui−1 2h u − 2ui + ui−1 i+1 ∆ 2 ui = h2 ∆ui = Si tratta dunque di risolvere un sistema di m equazioni (in generale) non lineari nelle incognite ui , 1 ≤ i ≤ m. diff12ns.m 38 CAPITOLO 11. DIFFERENZE FINITE In forma matriciale, ∆u1 ∆u2 ∆u3 .. = . ∆um−1 ∆um ∆ 2 u1 ∆ 2 u2 ∆ 2 u3 = .. 2. ∆ um−1 ∆ 2 um u1 ∗ ∗ ∗ ∗ ∗ ∗ u2 −1 0 1 0 . . . 0 .. .. 1 1 0 . . 0 −1 0 . . . . . . . . . . . . . 0 ... 2h .. 0 . . . 0 −1 0 1 um−1 um ∗ ∗ ∗ ∗ ∗ ∗ u1 ∗ ∗ ∗ ∗ ∗ ∗ u2 1 −2 1 0 . . . 0 . .. 1 0 1 −2 1 0 . .. h2 ... . . . . . . . . . . . . 0 ... 0 . . . 0 1 −2 1 um−1 ∗ ∗ ∗ ∗ ∗ ∗ um ove la prima e l’ultima riga devono essere trattate a parte, solitamente per includere le condizioni al bordo. Le matrici relative alle approssimazione della derivata prima e seconda possono essere costruite con i comandi > toeplitz(sparse(1,2,-1/(2*h),1,m),sparse(1,2,1/(2*h),1,m)); e > toeplitz(sparse([1,1],[1,2],[-2/h^2,1/h^2],1,m)); rispettivamente. 11.2 Convergenza per un problema modello Consideriamo il seguente problema modello (elasticit`a della trave) ′′ −u (x) + q(x)u(x) = g(x), x ∈ (a, b) u(a) = ua u(b) = u b (11.2) con q, g ∈ C 0 ([a, b]), q(x) ≥ 0 per x ∈ [a, b]. La funzione q(x) `e definita dal rapporto P/(E · I(x)) (P la tensione orizzontale, E il modulo di Young e I(x) il momento principale di inerzia) e g(x) `e la densit`a di carico verticale (tipicamente positiva). La soluzione u(x) rappresenta il momento flettente. Vogliamo studiare l’esistenza, l’unicit`a e la regolarit`a della soluzione analitica. 11.2. CONVERGENZA PER UN PROBLEMA MODELLO 11.2.1 39 Unicit` a Se u1 (x) e u2 (x) sono due soluzioni di (11.2), allora z(x) = u1 (x) − u2 (x) soddisfa il problema omogeneo ′′ −z (x) + q(x)z(x) = 0, x ∈ (a, b) z(a) = 0 (11.3) z(b) = 0 Proposizione 3. Se z(x) `e soluzione di (11.3), allora z(x) ≡ 0. Dimostrazione (metodo dell’energia). z(x) ≡ 0 `e certamente una soluzione. Supponiamo, per assurdo, che esista anche z(x) 6= 0 soluzione. Moltiplicando l’equazione per z(x) ed integrando si ha Z b Z b ′′ q(x)z(x)2 dx = −z (x)z(x)dx + 0= a a Z b Z b ′ b ′ 2 = [−z (x)z(x)]a + z (x) dx + q(x)z(x)2 dx = a a Z b Z b q(x)z(x)2 dx z ′ (x)2 dx + = a a Poich´e le funzioni integrande sono non negative, si ha che deve essere necessariamente z(x) ≡ 0, quindi assurdo. Dunque, u1 (x) ≡ u2 (x). 11.2.2 Esistenza Sia z(x) = c1 z1 (x) + c2 z2 (x) la soluzione generale di −z ′′ (x) + q(x)z(x) = 0, con z1 (x) e z2 (x) indipendenti (lo spazio delle soluzioni dell’equazione lineare omogenea ha proprio dimensione due). La soluzione di (11.3) (che corrisponde a c1 = c2 = 0) si ottiene imponendo ( c1 z1 (a) + c2 z2 (a) = 0 c1 z1 (b) + c2 z2 (b) = 0 Poich´e sappiamo che z(x) ≡ 0 `e l’unica soluzione, si ha che la matrice z1 (a) z2 (a) z1 (b) z2 (b) `e non singolare. 40 CAPITOLO 11. DIFFERENZE FINITE La soluzione generale di −u′′ (x) + q(x)u(x) = g(x) `e u(x) = c1 z1 (x) + c2 z2 (x) + s(x) (s(x) soluzione particolare che si ottiene dalla tecnica delle variazioni delle costanti, cio`e supponendo s(x) = c1 (x)z1 (x) + c2 (x)z2 (x), c1 (x) e c2 (x) da ricavare). La soluzione di (11.2) si ottiene imponendo le condizioni al bordo ( c1 z1 (a) + c2 z2 (a) = ua − s(a) c1 z1 (b) + c2 z2 (b) = ub − s(b) cio`e risolvendo un sistema lineare non singolare che ammette dunque (unica) soluzione. 11.2.3 Regolarit` a Proposizione 4. Se q, g ∈ C k ([a, b]), allora u ∈ C k+2 ([a, b]). Dimostrazione. Se q, g ∈ C 0 ([a, b]), poich´e la soluzione u esiste, u′′ `e definita in ogni punto x ∈ [a, b], e dunque u′ esiste (ed `e derivabile). Quindi u ∈ C 0 ([a, b]) e quindi u′′ ∈ C 0 ([a, b]). Dunque u ∈ C 2 ([a, b]). Sia vero adesso l’enunciato per k e siano q, g ∈ C k+1 ([a, b]): poich´e anche u ∈ C k+1 ([a, b]), si ha u′′ ∈ C k+1 ([a, b]) da cui u ∈ C k+3 ([a, b]). Si `e costretti a ridursi ad un problema modello perch´e problemi ai limiti anche molto semplici possono non avere soluzione: si consideri, per esempio, ′′ u (x) + u(x) = 0, x ∈ (0, π) u(0) = 0 u(π) = 1 La soluzione generale `e c1 cos(x) + c2 sin(x), ma non `e possibile imporre le condizioni al bordo. Ci occupiamo adesso di analizzare la convergenza del problema modello discretizzato mediante differenze finite centrate del secondo ordine, che si scrive ui+1 − 2ui + ui−1 + q i ui = g i , 2 ≤ i ≤ m − 1 − h2 u1 = u a um = u b ove qi = q(xi ) e gi = g(xi ). 11.2. CONVERGENZA PER UN PROBLEMA MODELLO 11.2.4 41 Esistenza ed unicit` a per il problema discretizzato Il sistema lineare da risolvere per trovare u = [u1 , u2 , . . . , um−1 , um ]T `e 1 0 ... ... ... 0 u1 ua /h2 −1 2 + q2 h2 −1 0 ... 0 u2 g 2 . .. 1 −1 2 + q3 h2 −1 0 u3 g 3 0 = . . ... ... ... ... .. .. h2 ... 0 0 ... 0 −1 2 + qm−1 h2 −1 um−1 gm−1 um ub /h2 0 ... ... 0 0 1 e pu`o essere semplificato in 1 h2 2 + q 2 h2 −1 h2 −1 2 + q3 .. . .. . 0 0 . . . 0 ... ... 0 ... ... −1 .. . 0 .. . . .. ... .. . .. . 0 ... −1 0 .. . 2 + qm−2 h2 −1 0 .. . 0 0 −1 2 + qm−1 h2 u2 g2 + ua /h2 u g3 3 . . . . . . = . . . .. . um−2 gm−2 um−1 gm−1 + ub /h2 cio`e Au = g (11.4) ove adesso u = [u2 , . . . , um−1 ]T (parliamo in questo caso di discretizzazione a nodi interni ). Proposizione 5. Il sistema lineare (11.4) `e non singolare e dunque ammette un’unica soluzione. Dimostrazione (metodo dell’energia discreto). Dato z = [z2 , z3 , . . . , zm−1 ]T , consideriamo il prodotto z T Az. Si ha 1 [(2 + q2 h2 )z22 − z2 z3 − z3 z2 + (2 + q3 h2 )z32 − z3 z4 + . . . + 2 h 2 + . . . − zm−1 zm−2 + (2 + qm−1 h2 )zm−1 ]= 1 2 = 2 [z22 + (z2 − z3 )2 + (z3 − z4 )2 + . . . + (zm−2 − zm−1 )2 + zm−1 ]+ h m−1 X + qi zi2 ≥ 0 z T Az = i=2 Poich´e si ha una somma di elementi non negativi, l’uguaglianza a 0 si pu`o avere solo quando tutti gli elementi sono nulli e quindi per solo per z nullo. Dunque la matrice A `e definita positiva e quindi non singolare. 42 CAPITOLO 11. DIFFERENZE FINITE 11.2.5 Propriet` a di A ` A `e una matrice simmetrica, definita positiva e diagonalmente dominante. E possibile usare i metodi iterativi, semi-iterativi e diretti senza pivoting per la soluzione del sistema lineare. Inoltre, `e una M -matrice, cio`e i suoi elementi extra-diagonali sono non positivi e la sua inversa ha elementi non negativi (vedi § A.1). 11.2.6 Consistenza Se si sostituisce ui con la soluzione analitica u(xi ), da (11.1) si ottiene u(xi+1 ) − 2u(xi ) + u(xi−1 ) (2) + q(xi )u(xi ) − g(xi ) = −τi , 2 ≤ i ≤ m − 1 − h2 u(x1 ) = ua u(xm ) = ub da cui si deduce che il metodo numerico `e consistente di ordine 2. Definiamo l’errore eh = [e2,h , . . . , em−1,h ]T = [u2 − u(x2 ), . . . , um−1 − u(xm−1 )]T , h = (b − a)/(m − 1). Poich´e A[u2 , . . . , um−1 ]T = g (2) A[u(x2 ), . . . , u(xm−1 )]T = g − τ h (2) (2) (2) ove τ h = [τ2,h , . . . , τm−1,h ]T , si deduce eh = A−1 τ h . Si pu`o concludere che l’errore tende a zero come τ h quando h →? No, perch´e non abbiamo −1 per h → 0. informazioni sul comportamento di A−1 h = A 11.2.7 Stabilit` a Consideriamo due soluzioni relative a dati perturbati g˜ e g¯ . Si ha A˜ u = g˜ A¯ u = g¯ da cui ¯ ) = A−1 (˜ (˜ u−u g − g¯ ) Se si vuole che le perturbazioni sui dati non si ripercuotano in maniera distruttiva sulle soluzioni, occorre che la matrice A−1 sia limitata in norma indipendentemente da h, in particolare per h → 0. Consideriamo la matrice 11.2. CONVERGENZA PER UN PROBLEMA MODELLO 43 Aq=0 corrispondente alla stessa discretizzazione nel caso q(x) ≡ 0. Si ha A − Aq=0 = diag(q2 , . . . , qm−1 ) ≥ 0. Allora −1 −1 A−1 = A−1 ≥0 q=0 − A q=0 (A − Aq=0 )A −1 perch´e Aq=0 e A sono M -matrici. Allora A−1 ≤ A−1 q=0 e quindi kA k∞ ≤ −1 −1 T kA−1 q=0 k∞ . Osserviamo poi che kAq=0 k∞ = kAq=0 [1, . . . , 1] k∞ e che v = T A−1 e la soluzione discreta (approssimata) di q=0 [1, . . . , 1] ` ′′ −v (x) = 1 v(a) = 0 v(b) = 0 la cui soluzione analitica `e v(x) = (x−a)(b−x)/2. Poich´e v (4) (x) ≡ 0 l’errore (2) locale τi , per questo problema, `e nullo e la soluzione discreta coincide, nei nodi, con la soluzione analitica. Dunque −1 T kA−1 q=0 k∞ = kAq=0 [1, . . . , 1] k∞ = max vi = 2≤i≤m−1 = max v(xi ) ≤ max v(x) ≤ 2≤i≤m−1 x∈[a,b] (b − a)2 8 e poich´e kA−1 k∞ ≤ kA−1 q=0 k∞ , si ha la maggiorazione richiesta. Abbiamo dunque mostrato che se si hanno due dati iniziali perturbati, le rispettive soluzioni saranno diverse, ma di poco distanti tra loro, qualunque sia il passo di discretizzazione h. 11.2.8 Convergenza Combinando i risultati di consistenza e stabilit` a, si ottiene, per il problema (11.2) discretizzato mediante differenze finite centrate del secondo ordine, keh k∞ ≤ (b − a)2 h2 (4) ku k∞ 8 12 e dunque l’errore `e proporzionale a h2 , posto che u ∈ C 4 ([a, b]). 44 CAPITOLO 11. DIFFERENZE FINITE 11.3 Altre differenze finite 11.3.1 Su nodi non equispaziati Dati tre nodi xi−1 , xi , xi+1 , con hi−1 = xi − xi−1 e hi = xi+1 − xi , si ha h3 h2i ′′ u (xi ) + i u(3) (xi ) + O(h4i ) 2 6 2 h3 h u(xi−1 ) = u(xi ) − hi−1 u′ (xi ) + i−1 u′′ (xi ) − i−1 u(3) (xi ) + O(h4i−1 ) 2 6 u(xi+1 ) = u(xi ) + hi u′ (xi ) + da cui u(xi+1 ) − u(xi−1 ) 1 h2i − h2i−1 ′′ 1 h3i−1 + h3i (3) u (xi ) = − u (xi ) − u (xi )+ hi−1 + hi 2 hi−1 + hi 6 hi−1 + hi + O(max{h4i−1 , h4i }) ′ Se hi−1 e hi non differiscono troppo (precisamente, se la loro differenza `e O(max{h2i−1 , h2i })), allora l’approssimazione con il rapporto incrementale centrato `e di ordine O(max{h2i−1 , h2i }). Analogamente, si pu`o costruire un’approssimazione della derivata seconda ′′ u (xi ) ≈ u(xi+1 )−u(xi ) i−1 ) − u(xi )−u(x hi hi−1 hi−1 +hi 2 La matrice corrispondente all’approssimazione mediante differenze finite di ordine due della derivata prima con griglia non equispaziata `e (senza tener condo delle condizioni ai bordi) u′ (x1 ) u′ (x2 ) u′ (x3 ) .. . ∗ ∗ 0 ∗ 1 h1 +h2 ∗ 0 0 .. . 0 ∗ −1 h2 +h3 0 1 h2 +h3 h1−1 +h2 ≈ u′ (xm−1 ) u′ (xm ) .. . ... ∗ .. 0 ∗ . .. . −1 hm−2 +hm−1 ∗ ∗ ... .. . .. . 0 ∗ ∗ 0 .. . u(x1 ) u(x2 ) u(x3 ) .. . 0 1 u(xm−1 ) hm−2 +hm−1 u(xm ) ∗ Dati i nodi x (vettore colonna di lunghezza m), `e possibile costruire il vettore [h1 , h2 , . . . , hm−1 ]T con il comando h=diff(x). Allora la matrice, a meno della prima e dell’ultima riga, pu`o essere costruita, direttamente in formato sparso, con i comandi > d = 1./(h(1:m-2)+h(2:m-1)); > spdiags([[-d;0;0],[0;0;d]],[-1,1],m,m) La costruzione della matrice relativa alla derivata seconda `e analoga. 11.4. CONDIZIONI AL BORDO 11.3.2 45 Non centrate ` possibile approssimare la derivata prima e seconda usando i nodi che stanno E solo a sinistra (o a destra) del nodo corrente. Per esempio, u(x2 ) − u(x1 ) −3u(x1 ) + 4u(x2 ) − u(x3 ) + O(h) = + O(h2 ) h 2h u(x ) − 2u(x ) + u(x ) 1 2 3 u′′ (x1 ) = + O(h) = h2 2u(x1 ) − 5u(x2 ) + 4u(x3 ) − u(x4 ) = + O(h2 ) h2 u′ (x1 ) = Ci`o pu`o risultare utile per l’approssimazione ai bordi. 11.3.3 Di ordine pi` u elevato Si possono per esempio costruire differenze finite di ordine quattro centrate u(xi−2 ) − 8u(xi−1 ) + 8u(xi+1 ) − u(xi+2 ) + O(h4 ) 12h −u(xi−2 ) + 16u(xi−1 ) − 30u(xi ) + 16u(xi+1 ) − u(xi+2 ) u′′ (xi ) = + O(h4 ) 12h2 u′ (xi ) = 11.4 Condizioni al bordo L’applicazione delle approssimazioni introdotte porta alla trasformazione del problema differenziale in un sistema di equazioni in generale non lineari F˜ (u) = 0 Tale sistema deve essere opportunamente modificato (o completato) in modo da esprimere le condizioni al bordo. 11.4.1 Condizioni di Robin Le pi` u generali condizioni al bordo che consideriamo sono quelle di Robin, del tipo (per esempio per x = a) αu(a) + βu′ (a) = γ (11.5) ove α, β e γ sono noti. Si pu`o procedere in questo modo: si suppone l’esistenza di un nodo x0 definito come a − h (a − h1 in generale) al quale corrisponde il valore u(a − h) “fantasma” della soluzione approssimato da u0 . A questo 46 CAPITOLO 11. DIFFERENZE FINITE punto si discretizza l’equazione (11.5) con differenze finite centrate di ordine due u2 − u 0 αu1 + β =γ 2h Se β = 0 (e α 6= 0), allora le condizioni al bordo sono di Dirichlet e sono usualmente date nella forma u(a) = ua = γ/α da cui si deve imporre u1 = ua (11.6) Se invece β 6= 0, si ricava u0 u0 = 2h (αu1 − γ) + u2 β (11.7) e questo valore va usato nell’approssimare u′ (x) e u′′ (x), per x = a, nell’equazione differenziale. Se α = 0, si parla di condizioni di Neumann e sono usualmente date nella forma u′ (a) = u′a da cui si deve imporre u0 = −2hu′a + u2 (11.8) Condizioni di Dirichlet Conviene discretizzare, in un primo momento, il problema ai limiti senza tener conto delle condizioni al bordo. Per esempio, la discretizzazione del problema ai limiti ′′ u (x) = 1, x ∈ (a, b) u(a) = ua u(b) = u b senza tener conto delle condizioni al bordo diventa 1 u1 −2 1 0 0 ··· 0 1 −2 1 0 · · · 0 u2 1 . . . . . . . . . . . . .. .. .. 1 . 0 . . ˜= ˜ −b F˜ (u) = Au . − . = 0 . . 2 . . . . . . . . . . . 0 .. .. h .. 0 · · · 0 1 −2 1 um−1 1 1 um 0 ··· 0 0 1 −2 11.4. CONDIZIONI AL BORDO 47 Poi, si correggono le equazioni relative ai nodi al bordo 1 1 1 0 F (u) = Au − b = 2 . h .. 0 0 ua /h2 u1 0 0 0 ··· 0 −2 1 0 · · · 0 u2 1 . . . . . . . . . . . . .. .. .. . . . . − . =0 ... ... ... ... . . 0 . . · · · 0 1 −2 1 um−1 1 ub /h2 um ··· 0 0 0 1 Si vede che la prima riga del sistema F (u) = 0 corrisponde all’equazione (11.6). A questo punto si risolve il sistema (in questo esempio lineare) di equazioni F (u) = Au − b = 0 In questo modo, per`o, la simmetria della matrice A˜ viene persa. Pertanto, non `e pi` u possibile applicare gli appositi metodi per la risoluzione di sistemi lineari simmetrici. Un metodo numericamente equivalente, detto metodo di penalizzazione, `e quello di modificare i soli elementi diagonali della prima e dell’ultima riga inserendo un numero molto grande M M 1 0 0 ··· 0 u1 M ua /h2 1 −2 1 0 · · · 0 u2 1 .. . . . . . . . . . . . . .. .. 1 0 . . . − =0 .. h2 ... . . . . . . . . . . . . 0 ... . 0 · · · 0 1 −2 1 um−1 1 0 ··· 0 0 1 M um M ub /h2 Per poter usare l’algoritmo di Choleski, `e inoltre necessario che la matrice sia definita positiva. Conviene allora considerare il problema −u′′ (x) = −1. Condizioni di Neumann L’espressione trovata per u0 nel caso generale delle condizioni di Robin (11.7) va usata poi in qualunque stencil di discretizzatione. Per esempio, la discretizzazione del problema ai limiti ′′ ′ u (x) − u (x) = 1 u′ (a) = u′a u(b) = u b 48 CAPITOLO 11. DIFFERENZE FINITE u(x) u3 u2 u1 u0 y = u′a (x − x2 ) + u2 h x0 h a = x1 x2 x3 Figura 11.3: Imposizione di una condizione di Neumann sull’estremo sinistro. in x = a sar`a (u2 − 2hu′a ) − 2u1 + u2 u2 − (u2 − 2hu′a ) u0 − 2u1 + u2 u2 − u0 − = − = h2 2h h2 2h 2u2 − 2u1 − 2hu′a = − u′a = 1 h2 da cui 2u2 − 2u1 2u′a + u′a = 1 + h2 h e dunque −2 1 + h 2 1 0 F (u) = Au−b = 2 . h .. 0 0 2 0 −2 1 − h2 .. .. . . .. .. . . ··· 0 ··· 0 0 0 .. . .. . 1 + h2 0 ··· 0 ··· 0 .. .. . . .. . 0 −2 1 − 0 1 u1 u2 .. . .. . − h u m−1 2 um 1+ 2u′a h 1 .. . .. . 1 ub /h2 Anche in questo caso, `e possibile recuperare l’eventuale simmetria di partenza riscalando opportunamente la prima equazione. 11.4.2 Importanza delle condizioni al bordo Spesso si trascura l’importanza di una corretta imposizione delle condizioni al bordo e si pensa che l’influenza delle condizioni riguardi solamente un intorno del bordo. Ovviamente non `e cos`ı: basti pensare all’equazione differenziale −u′′ (x) = 2, x ∈ (−1, 1) + u′a =0 11.5. UN ESEMPIO: L’EQUAZIONE DELLA CATENARIA 49 munita delle condizioni al bordo u(−1) = u(1) = 0 (la cui soluzione `e u(x) = −x2 + 1) oppure ( u(−1) = 0 u′ (1) = 0 (la cui soluzione `e u(x) = −x2 + 2x + 3) oppure u′ (−1) = u′ (1) = 0 (nessuna soluzione) oppure ( u′ (−1) = 2 u′ (1) = −2 (infinite soluzioni u(x) = −x2 + k). 11.5 Un esempio: l’equazione della catenaria Consideriamo l’equazione della catenaria (corda flessibile inestensibile appesa agli estremi) p ′′ u (x) = α 1 + u′ (x)2 , x ∈ (−1, 1) (11.9) u(−1) = 1 u(1) = 1 la cui soluzione analitica `e u(x) = cosh(ax) cosh a − +1 a a e il parametro a dipende dalla lunghezza della corda (vedi Appendice A.5). La discretizzazione mediante differenze finite centrate del secondo ordine `e u1 1 q u2 −u1 2 . 1 + u32h . . . . A . − α =b . q .. m−2 2 1 + um −u um−1 2h 1 um 50 CAPITOLO 11. DIFFERENZE FINITE Si tratta dunque di risolvere il sistema non lineare nell’incognita u p F (u) = Au − α 1 + (Bu)2 − b = 0 ove 1 1 1 0 A = 2 . h .. 0 0 0 0 0 ··· 0 −2 1 0 · · · 0 . . . . . . . . . . . . .. . , ... ... ... ... 0 · · · 0 1 −2 1 ··· 0 0 0 1 e b = [1/h2 − α, 0, . . . , 0, 1/h2 − α]T . 11.5.1 0 −1 1 0 B= 2h ... 0 0 0 0 ... ... 0 1 ... ... ··· ··· 0 0 0 ··· 0 ··· ... ... ... ... −1 0 0 0 0 0 .. . 0 1 0 Iterazioni di punto fisso Si pu`o tentare di risolvere il sistema di equazioni F (u) = 0 mediante iterazioni di punto fisso, che consistono nel risolvere il sistema lineare q (r+1) Au = α 1 + (Bu(r) )2 + b L’applicazione del metodo risulta molto semplice: si pu`o decomporre A nei fattori LU una sola volta e risolvere due sistemi lineari triangolari ad ogni iterazione. La funzione G deve essere una contrazione e ci`o pu`o essere difficile da verificare. Inoltre, la convergenza risulta essere lineare. Per l’esempio della catenaria, comunque, il metodo delle iterazioni di punto fisso converge adeguatamente. 11.5.2 Metodo di Newton Volendo applicare il metodo di Newton (a convergenza quadratica) `e necessario calcolare lo jacobiano di F (u), che risulta essere JF (u(r) ) = A − αD(u(r) )B ove D = (dij (u(r) )), (r) p (Bu )i , i=j dij (u(r) ) = 1 + (Bu(r) )2i 0, i= 6 j A questo punto, l’iterazione del metodo di Newton consiste nella risoluzione 11.6. NORME ED ERRORI 51 1e-3 1 errore h2 catenaria.m 0.8 errore in norma infinito u(x) 0.6 0.4 1e-4 0.2 0 1e-5 -0.2 -1 -0.5 0 x 0.5 1 20 30 40 50 60 m Figura 11.4: Soluzione dell’equazione della catenaria (sinistra, m = 60) e ordine di convergenza (destra). del sistema lineare JF (u(r) ) u(r+1) − u(r) = −F (u(r) ) In generale, lo jacobiano di un funzionale F (u) calcolato in u(r) e applicato a v `e JF (u(r) )v = F (u(r) + εv) − F (u(r) ) dF (r) (u )v = lim ε→0 du ε Come soluzione iniziale si prende solitamente una funzione semplice che soddisfi le condizioni al bordo. 11.6 Norme ed errori Data una funzione u(x) e due diverse discretizzazioni su nodi equispaziati [˜ u1 , . . . , u˜m ] ≈ [u(˜ x1 ), . . . , u(˜ xm )] e [ˆ u1 , . . . , uˆl ] ≈ [u(ˆ x1 ), . . . , u(ˆ xl )], {˜ xi }i ⊂ [a, b], {ˆ xi }i ⊂ [a, b], non ha molto senso confrontare gli errori k[u(˜ x1 ) − u˜1 , u(˜ x2 ) − u˜2 , . . . , u(˜ xm ) − u˜m ]k2 e k[u(ˆ x1 ) − uˆ1 , y(ˆ x2 ) − uˆ2 ,q . . . , u(ˆ xl ) − uˆl ]k2 . Si preferisce usare la norma infinito, oppure la norma kuk2 b−a , che risulta m essere una approssimazione mediante quadratura con formula dei rettangoli della norma in L2 di u(x). Se si devono invece confrontare tra loro le due discretizzazioni, occorre che i nodi siano “intercalati” e bisogna fare attenzione alla falsa superconvergenza (vedi Figura 11.5). Se si calcola una soluzione di riferimento con m ¯ punti di discretizzazione, si ha kum − uk∞ − ku − um¯ k∞ ≤ kum − um¯ k∞ ≤ kum − uk∞ + ku − um¯ k∞ 52 CAPITOLO 11. DIFFERENZE FINITE 10−2 h2 errore rispetto alla soluzione esatta errore rispetto alla soluzione di riferimento fsc.m errore in norma infinito 10−3 10−4 10−5 10−6 102 m 10 103 Figura 11.5: Convergenza e falsa superconvergenza per la risoluzione di u′′ (x) = − sin(x), u(0) = u(π) = 0. da cui kum − uk∞ − ε ≤ kum − um¯ k∞ ≤ kum − uk∞ + ε se ku − um¯ k∞ = ε < kum − uk∞ . Ci`o significa che si pu`o stimare l’errore di um usando una soluzione di riferimento um¯ solo se questa dista poco dalla soluzione analitica e se m ≪ m, ¯ altrimenti la stima dice solo che kum − um¯ k∞ / 2ε. Si ha cio`e l’impressione che la soluzione numerica sia pi` u vicina alla soluzione analitica di quello che dovrebbe, invece `e solo molto vicina a quella di riferimento (per assurdo, se m = m, ¯ kum −um¯ k∞ = 0 6= kum −uk∞ ). Una maniera molto comoda per verificare l’ordine di un metodo si basa sulla seguente osservazione. Siano em˜ e emˆ gli errori corrispondenti a due discretizzazioni con m ˜ +1 e m ˆ + 1 punti. Supponiamo che C m ˜p C = p m ˆ kem˜ k∞ = kemˆ k∞ Si ricava logkem˜ k∞ − logkemˆ k∞ = −p(log m ˜ − log m) ˆ Dunque, in un grafico logaritmico-logaritmico, l’errore kem k∞ si dispone su una retta di pendenza −p (cio`e parallelo alla “retta” m−p ) rispetto a m. 11.7. DERIVATE ED EQUAZIONI DIFFERENZIALI 11.7 53 Derivate ed equazioni differenziali Il calcolo esplicito di derivate e la risoluzione di equazioni differenziali sono problemi ben distinti. Per esempio, se `e vero che il calcolo della derivata di exp(x) tramite rapporto incrementale centrato exp′ (x) ≈ exp(x + h) − exp(x − h) 2h soffre di severi errori di cancellazione per h piccolo, meno problematica `e la risoluzione del problema differenziale ′ u (x) = exp(x), x ∈ (0, 1) u(0) = 1 u(1) = e tramite differenze finite centrate del secondo ordine, in cui `e il numero di condizionamento della matrice ad influire sulla corretta risoluzione del sistema lineare. 10−7 derivata equazione di. ordine 10−8 10−9 10−10 10−11 10−12 10−13 103 104 105 m 106 107 Figura 11.6: Andamento degli errori nel calcolo della derivata di exp(x). In Figura 11.6 `e riportato l’andamento di max2≤i≤m {|(exp(xi + 1/m) − exp(xi −1/m))/(2/m)−exp(xi )|} e max2≤i≤m {|ui −exp(xi )|}, xi = (i−1)/m, i = 1, 2, . . . , m + 1 per valori di m da 10000 a pi` u di 2500000. L’andamento del numero di condizionamento della matrice si comporta come m. derequadiff.m Capitolo 12 Metodo di shooting ` possibile trasformare il problema (10.1) in un sistema differenziale del E primo ordine y ′ (t) = f (t, y(t)), t ∈ (a, b] tramite il cambiamento di variabili t = x, y1 (t) = u(x), y2 (t) = u′ (x), f (t, y(t)) = [y2 (t), f (t, y1 (t), y2 (t)]T . Per quanto riguarda le condizioni iniziali, mentre quella per y1 (t) `e y1 (a) = ua , quella per y2 (t) non `e definita. Si pu`o allora introdurre un parametro s ∈ R e considerare la seguente famiglia di problemi ai valori iniziali ′ y (t) = f (t, y(t)), t ∈ (a, b] y1 (a) = ua (12.1) y (a) = s 2 Dato s, il sistema sopra pu`o essere risolto con un opportuno metodo per problemi ai valori iniziali. Poich´e s `e il valore della derivata prima di u(x), tale metodo di risoluzione prende il nome di shooting. Chiamiamo y1 (t | y2 (a) = s) (da leggersi “valore di y1 in t dato che y2 in a vale s”) la prima componente della soluzione. Si dovr`a ovviamente trovare s¯ tale che y1 (t | y2 (a) = s¯) = u(x), t = x ∈ [a, b]. In particolare, dovr`a essere y1 (b | y2 (a) = s¯) = ub . Introduciamo allora la funzione F (s) = y1 (b | y2 (a) = s) − ub Si tratta di risolvere l’equazione (in generale non lineare) F (s) = 0. 12.1 Metodo di bisezione Dati due valori s1 e s2 per cui F (s1 )F (s2 ) < 0, `e possibile applicare il metodo di bisezione per trovare lo zero di F (s). Poich´e la soluzione di (12.1) `e 54 12.2. METODO DI NEWTON 55 approssimata a meno di un errore dipendente dal passo di discretizzazione temporale, la tolleranza richiesta per il metodo di bisezione dovr`a essere (leggermente) inferiore a tale errore. 12.2 Metodo di Newton Per applicare il metodo di Newton, `e necessario calcolare F ′ (s). Definiamo a tal scopo v(x) = ∂ ∂ u(x | u′ (a) = s) = y1 (t | y2 (a) = s) ∂s ∂s Derivando rispetto a s nel problema ai limiti ′′ ′ u (x) = f (x, u(x), u (x)), u(a) = ua u′ (a) = s x ∈ (a, b) (la cui incognita u(x) `e proprio u(x | u′ (a) = s)) si ha ∂ ′′ ∂ u (x) = f (x, u(x), u′ (x)) ∂s ∂s da cui, scambiando l’ordine di derivazione v ′′ (x) = fu (x, u(x), u′ (x))v(x) + fu′ (x, u(x), u′ (x))v ′ (x), x ∈ (a, b) Per quanto riguarda le condizioni iniziali per v(x), si ha ∂ u(a | u′ (a) = s) = 0 ∂s ∂ ′ v ′ (a) = u (a | u′ (a) = s) = 1 ∂s v(a) = Dunque, per calcolare F ′ (s) = v(b) occorre risolvere il sistema variazionale (lineare in v(x)) ′′ ′ ′ ′ v (x) = fu (x, u(x), u (x))v(x) + fu′ (x, u(x), u (x))v (x), v(a) = 0 v ′ (a) = 1 x ∈ (a, b) 56 CAPITOLO 12. METODO DI SHOOTING In conclusione, per calcolare la coppia F (s) e F ′ (s) in un generico punto s, occorre risolvere il sistema differenziale del primo ordine ai dati iniziali ′ y1 (t) = y2 (t) y2′ (t) = f (t, y1 (t), y2 (t)) y3′ (t) = y4 (t) y ′ (t) = f (t, y (t), y (t))y (t) + f (t, y (t), y (t))y (t) y1 1 2 3 y2 1 2 4 4 y1 (a) = ua y2 (a) = s y3 (a) = 0 y4 (a) = 1 fino al tempo t = b. Quindi F (s) = y1 (b) e F ′ (s) = y3 (b). Poich´e le equazioni per y1′ (t) e y2′ (t) non dipendono da y3 (t) e y4 (t), `e possibile disaccoppiare le prime due componenti dalle seconde due. Una semplificazione del metodo di Newton che non richiede il calcolo di F ′ (s) `e il metodo delle secanti. 12.3 Problema ai limiti con frontiera libera Un caso particolarmente interessante per l’applicazione del metodo di shooting `e quello a frontiera libera (free boundary) ′′ u (x) = f (x, u(x), u′ (x)), u(s) = α u′ (s) = β u(b) = ub x ∈ (s, b) (12.2) ove i valori di u e di u′ sono assegnati in un punto incognito s, s < b. La funzione di cui si deve trovare lo zero `e, in questo caso, F (s) = u(b | u(s) = α, u′ (s) = β) − ub (scriveremo F (s) = u(b | s) − ub per brevit`a). Dati due punti s1 e s2 tali che F (s1 )F (s2 ) < 0, l’applicazione del metodo di bisezione non presenta difficolt`a. Per quanto riguarda il metodo di Newton, il sistema variazionale per ∂ u(x | s + h) − u(x | s) v(x) = u(x | s) = lim h→0 ∂s h 12.3. PROBLEMA AI LIMITI CON FRONTIERA LIBERA 57 `e analogo al caso precedente. L’unica diversit`a `e data dalle condizioni iniziali (in s). Si ha u(s | s + h) − u(s | s) v(s) = lim h→0 h Ora, u(s | s) = α. Poi u(s | s + h) = u(s + h | s + h) − hu′ (s + h | s + h) + O(h2 ) = α − hβ + O(h2 ) Dunque, v(s) = −β. In maniera analoga u′ (s | s + h) − u′ (s | s) = −u′′ (s) h→0 h v ′ (s) = lim ove il valore u′′ (s) si ricava dal problema (12.2) e vale f (s, α, β). Capitolo 13 Equazione di Poisson Di particolare interesse `e l’equazione di Poisson −∇2 u(x) = f (x), x ∈ Ω ⊂ Rd ove ∇2 `e l’operatore laplaciano definito da d X ∂2 ∇ = ∂x2k k=1 2 L’equazione `e solitamente accompagnata da condizioni al bordo di Dirichlet o di Neumann. 13.1 Equazione di Poisson bidimensionale Analizziamo numericamente in dettaglio il caso d = 2 (x = (x, y)) e Ω = [a, b] × [c, d]. 13.1.1 Condizioni al bordo di Dirichlet Consideriamo dapprima il caso con condizioni al bordo di Dirichlet. Dunque −∇2 u(x, y) = f (x, y), (x, y) ∈ [a, b] × [c, d] ⊂ R2 u(a, y) = Da (y) u(b, y) = Db (y) u(x, c) = Dc (x) u(x, d) = D (x) d con le necessarie condizioni di compatibilit`a ai vertici. Introduciamo una discretizzazione xi = a + (i − 1)hx , i = 1, 2, . . . , mx , hx = (b − a)/(mx − 1) 58 13.1. EQUAZIONE DI POISSON BIDIMENSIONALE 59 e yj = c + (j − 1)hy , j = 1, 2, . . . , my , hy = (d − c)/(my − 1). Introduciamo infine la discretizzazione di u(x, y) definita da uk ≈ u(xi , yj ), k = (j − 1)mx + i di cui si vede un esempio in Figura 13.1. La matrice di discretizzazio- u13 u14 u15 u16 u9 u10 u11 u12 u5 u6 u7 u8 u1 u2 u3 u4 Figura 13.1: Numerazione di una griglia bidimensionale ne alle differenze finite centrate del secondo ordine, senza tener conto delle condizioni al bordo, `e data da A = Imy ⊗ Ax + Ay ⊗ Imx ove ⊗ indica il prodotto di Kronecker e 2 −1 1 0 Ax = 2 hx 0 . . . 0 −1 0 2 .. . . .. ... ... ... ... −1 0 ... .. .. .. . . .. 0 ... . . .. −1 0 . . .. 2 −1 0 . . . 0 , 0 −1 2 2 −1 1 0 Ay = 2 hy 0 . . . 0 −1 0 2 .. . . .. ... ... ... ... −1 0 ... .. .. . . .. 0 ... . . .. −1 0 .. . . .. 2 −1 0 . . . 0 0 −1 2 ove Ax ∈ Rmx ×mx e Ay ∈ Rmy ×my . Poi, le righe di indice, diciamo k, corrispondente ad un nodo al bordo vanno sostituite con il vettore della base 60 CAPITOLO 13. EQUAZIONE DI POISSON canonica ek , diviso per h2x + h2y . Il termine noto `e [b1 , b2 , . . . , bmx my ]T , ove f (xi , yj ) se (xi , yj ) `e un nodo interno, k = (j − 1)mx + i Da (yj ) se xi = a, k = (j − 1)mx + i h2x +h2y Db (yj ) se xi = b, k = (j − 1)mx + i bk = h2x +h2y D (x ) se yj = c, k = (j − 1)mx + i h2xc+hi2y Dd (xi ) se yj = d, k = (j − 1)mx + i h2 +h2 x y Alternativamente, si pu`o sostituire il solo termine diagonale delle righe corrispondenti ad un nodo al bordo con un coefficiente M/(h2x + h2y ), M ≫ 1 e moltiplicare per M il corrispondente elemento nel termine noto. Questa procedura permette di assegnare, di fatto, le condizioni al bordo di Dirichlet, mantenendo la matrice A simmetrica. In GNU Octave, la corretta numerazione dei nodi avviene con i comandi > x = linspace(a,b,mx); > y = linspace(c,d,my); > [X,Y] = ndgrid(x,y); e la costruzione della matrice A tramite il comando kron. 13.1.2 Condizioni al bordo miste L’equazione di Poisson non pu`o essere accompagnata solo da condizioni al bordo di Neumann, altrimenti la soluzione `e indeterminata. Consideriamo allora il seguente problema con condizioni al bordo miste −∇2 u(x, y) = f (x, y), (x, y) ∈ [a, b] × [c, d] ⊂ R2 u(b, y) = Db (y) u(x, c) = Dc (x), Dc (b) = Db (c) ∂u − (x, y) = Na (y), x = a, c < y < d ∂x ∂u (x, y) = Nd (x), y = d, x < b ∂y La matrice di discretizzazione alle differenze finite centrate del secondo ordine `e data da A = Imy ⊗ Ax + Ay ⊗ Imx 13.1. EQUAZIONE DI POISSON BIDIMENSIONALE 61 ove 2 −1 1 0 Ax = h2 x 0 . . . 0 0 −2 ... ... 2 −1 0 ... .. . .. . .. . .. . .. . .. . .. 0 ... −1 0 .. ... ... 2 −1 . . 0 . . . 0 , 0 −1 2 2 −1 1 0 Ay = h2 y 0 . . . 0 −1 0 2 .. .. ... ... −1 0 ... . .. . .. . .. . .. 0 ... −1 0 ... ... . .. . . .. . 2 −2 0 . . . 0 0 −1 2 Poi, le righe di indice, diciamo k, corrispondente ad un nodo al bordo su cui sono prescritte condizioni di Dirichlet vanno sostituite con il vettore della base canonica ek , diviso per h2x + h2y . La riga di indice my , corrispondente al nodo di bordo (a, c), va sostituita con [0, . . . , 0, 1] ⊗ 1 1 [−2, 5, −4, 1, 0, . . . , 0] + 2 [0, . . . , 0, −2, 2] ⊗ [1, 0, . . . , 0] 2 hx hy (si pu`o verificare che lo stencil [2, −5, 4, −1]/h2x `e un’approssimazione al secondo ordine della derivata seconda). Il termine noto `e [b1 , b2 , . . . , bmx my ]T , ove se (xi , yj ) `e un nodo interno, k = (j − 1)mx + i f (xi , yj ) Db (yj ) se xi = b, k = (j − 1)mx + i h2 +h2 x bk = y Dc (xi ) 2 2 hx +hy f (xi , yj ) + f (xi , yj ) + 2Na (yi ) hx 2Nd (xi ) hy se yj = c, k = (j − 1)mx + i se xi = a, k = (j − 1)mx + i, j 6= 1, j 6= my se yj = d, k = (j − 1)my + i, i = 6 mx Capitolo 14 Metodi variazionali 14.1 Formulazione variazionale di un problema modello Un filo elastico (con tensione unitaria) sottoposto ad un carico soddisfa, sotto opportune ipotesi di regolarit`a e nel caso di piccole deformazioni, l’equazione ( −u′′ (x) = g(x), x ∈ (0, 1) u(0) = u(1) = 0 (14.1) ove u(x) rappresenta lo scostamento dalla posizione di riposo orizzontale. Supponiamo che il carico sia g(x) = gε (x) ( −u′′ (x) = gε (x), x ∈ (0, 1) u(0) = u(1) = 0 (14.2) ove 0 1 gε (x) = − 2ε 0 0 ≤ x < 21 − ε 1 − ε ≤ x ≤ 21 + ε 2 1 +ε<x≤1 2 La funzione discontinua gε rappresenta la densit`a di carico e il carico totale vale Z 1 gε (x)dx = −1 0 62 14.1. UN PROBLEMA MODELLO 63 La “soluzione” di (14.2) `e 1 1 0≤x≤ −ε − x 2 2 2 1 1 1 ε−1 1 uε (x) = x− −ε≤x≤ +ε + 4ε 2 4 2 2 1 − 1 (1 − x) +ε≤x≤1 2 2 In che senso soluzione? Chiaramente u′′ε (1/2 ± ε) non esiste e quindi non `e vero che −u′′ε (x) = gε (x), x ∈ (0, 1). Cerchiamo dunque una formulazione alternativa che renda sensato il modello per un problema cos`ı semplice e fisico come (14.2). Introduciamo il seguente spazio lineare: V = {v: v ∈ C 0 ([0, 1]), v ′ continua a tratti e limitata, v(0) = v(1) = 0} e il prodotto scalare su V (v, w) = Z 1 v(x)w(x)dx 0 Con il termine “v ′ continua a tratti e limitata” intendiamo che v `e derivabile ovunque eccetto alpi` u un insieme finito di punti e dove `e derivabile v ′ `e continua e limitata. Teorema 4 (Formulazione variazionale). Se u(x) `e la soluzione del problema (14.1), allora u ∈ V e (u′ , v ′ ) = (g, v), ∀v ∈ V Dimostrazione. Sia u soluzione di (14.1). Allora, per ogni v ∈ V , Z 1 ′′ 0 −u (x)v(x)dx = Z 1 g(x)v(x)dx = (g, v) 0 Integrando per parti, Z 1 1 Z −u (x)v(x)dx = −u (x)v(x) + ′′ 0 poich´e v(0) = v(1) = 0. ′ 0 1 u′ (x)v ′ (x)dx = (u′ , v ′ ) 0 (14.3) 64 CAPITOLO 14. METODI VARIAZIONALI Per quanto visto per il problema modello (11.2), se g ∈ C 0 (0, 1), la soluzione di (14.1) esiste ed `e unica. Per quanto appena dimostrato, essa `e soluzione anche di (14.3). Ritornando al problema modello (14.1), ove per`o non facciamo ipotesi su g, la soluzione classica, quella di classe (almeno) C 2 , si chiama soluzione forte del problema (14.1), mentre la soluzione di (14.3) si chiama soluzione debole del problema (14.1). Con il teorema e l’esempio precedenti abbiamo dimostrato che se esiste la soluzione forte, essa `e anche soluzione debole, ma non `e sempre vero il contrario (cio`e pu`o esistere la sola soluzione debole). Questo `e il caso di (14.2), per cui la soluzione debole `e uε ∈ V , visto che Z 1 0 u′ε (x)v ′ (x)dx = Z 1 −ε 2 0 =− =− Z Z u′ε (x)v ′ (x)dx 1 −ε 2 0 1 +ε 2 1 −ε 2 + Z u′′ε (x)v(x)dx − 1 v(x)dx = 2ε Z 1 +ε 2 u′ε (x)v ′ (x)dx 1 −ε 2 1 +ε 2 Z 1 −ε 2 1 +ε 2 1 −ε 2 + u′′ε (x)v(x)dx gε (x)v(x)dx = Z − Z 1 1 +ε 2 Z u′ε (x)v ′ (x)dx = 1 1 +ε 2 u′′ε (x)v(x)dx = 1 gε (x)v(x)dx 0 Qualora si trovi una soluzione debole, ha per`o senso verificare se per caso non sia anche forte. Infatti, se u ∈ V `e soluzione di (14.3) e u ∈ C 2 ([0, 1]) e g `e continua allora 0 = (u′ , v ′ ) − (g, v) = (−u′′ , v) − (g, v) = −(u′′ + g, v) per ogni v ∈ V . Poich´e u′′ +g `e continua, si deduce −u′′ (x) = g(x) per 0 < x < 1. Per quanto visto, la formulazione variazionale (14.3) del problema (14.1) `e in realt`a le pi` u “fisica”: pensando al problema della trave, essa permette di descrivere, per esempio, anche il caso in cui la densit`a di carico g(x) non sia continuo. Basta infatti che sia possibile calcolare (g, v), v ∈ V e dunque basta, per esempio, che g sia continua a tratti. Quindi, in generale, `e possibile come modello per un fenomeno fisico la sola formulazione debole. La soluzione debole, se esiste, `e unica: infatti, se u1 e u2 sono due soluzioni di (14.3), allora (u′1 − u′2 , v ′ ) = 0, ∀v ∈ V e in particolare per v = u1 − u2 . Dunque Z 1 0 (u′1 (x) − u′2 (x))2 dx = 0 e quindi u′1 (x) − u′2 (x) = (u1 (x) − u2 (x))′ = 0. Pertanto u1 − u2 `e costante e siccome u1 (0) − u2 (0) = 0, allora u1 (x) − u2 (x) = 0. 14.1. UN PROBLEMA MODELLO 14.1.1 65 Metodo di approssimazione variazionale Prendiamo un sottospazio Vm di V di dimensione finita. Si cerca allora uˆ ∈ Vm tale che (ˆ u′ , v ′ ) = (g, v), ∀v ∈ Vm (14.4) (metodo di Galerkin). Teorema 5. Il problema (14.4) ha un’unica soluzione. Dimostrazione. Sia {φj }m ˆ(x) ∈ Vm j=1 una base di Vm . Allora, se esiste u soluzione `e m X uˆ(x) = uˆj φj (x) j=1 e il problema (14.4) si riscrive, per i = 1, 2, . . . , m, ! !′ Z 1 m m X X uˆj φj , φ′i = uˆ′ (x)φ′i (x)dx = (φ′j , φ′i )ˆ uj = Au = (g, φi ) 0 j=1 j=1 ove A = (aij ) = (φ′j , φ′i ) e u = [ˆ u1 , . . . , uˆm ]T . Quindi, l’esistenza ed unicit`a di uˆ(x) equivale all’esistenza ed unicit`a della soluzione di un sistema lineare di matrice A. Calcoliamo ora wT Aw per w = [w1 , . . . , wm ]T . Si ha ! m m X X (φ′i , φ′j )wj wT Aw = wi i=1 j=1 da cui, per la linearit`a del prodotto scalare, !′ !′ ! Z m m X X wT Aw = wi φi (x) , wj φj (x) = i=1 j=1 1 0 m X wj φ′j (x) j=1 !2 dx ≥ 0 P e l’unica possibilit`a per avere 0 `e che wj φj (x) sia costante e dunque nullo (poich´e nullo ai bordi). Dunque, A `e definita positiva. La matrice A, che risulta essere simmetrica e definita positiva, si chiama matrice di rigidezza (stiffness matrix) e il vettore (g, φi ) vettore di carico (load vector). Vale poi il seguente risultato: Teorema 6. Se u `e soluzione di (14.3) e uˆ di (14.4), allora ku − uˆk ≤ inf ku − vk v∈Vm ove kvk = p (v ′ , v ′ ). (14.5) 66 CAPITOLO 14. METODI VARIAZIONALI Dimostrazione. Dalle uguaglianze (u′ , v ′ ) = (g, v) ∀v ∈ V e, dunque, ∀v ∈ Vm (ˆ u′ , v ′ ) = (g, v) ∀v ∈ Vm si ricava ((u − uˆ)′ , v ′ ) = 0 per ogni v ∈ Vm . Dunque, se v ∈ Vm , allora v − uˆ ∈ Vm e quindi ((u − uˆ)′ , (u − uˆ)′ ) = ((u − uˆ)′ , (u − v + v − uˆ)′ ) = ((u − uˆ), (u − v)′ ) ≤ ≤ ku − uˆkku − vk (per la disuguaglianza di Cauchy–Schwartz) da cui ku − uˆk ≤ ku − vk, ∀v ∈ Vm e quindi la tesi. Per definizione, uˆ `e allora la proiezione ortogonale della soluzione esatta u sul sottospazio Vm , tramite il prodotto scalare hu, vi = (u′ , v ′ ). Stabilit` a e consistenza La consistenza del metodo di Galerkin discende dal fatto che se u ∈ V , allora (u′ , v ′ ) = (g, v), ∀v ∈ Vm (il metodo si dice fortemente consistente). Per quanto riguarda la stabilit`a, cominciamo ad osservare che se uˆ soddisfa (14.4), allora Z 1 Z 1 p p ′ ′ ≤ 2 ≤ 2 (ˆ 2xˆ u (x)ˆ u (x)dx u ˆ (x)ˆ u (x)dx u , u ˆ ) (ˆ u′ , uˆ′ ) 0 0 per la monotonia degli integrali (x ≤ 1 in [0, 1]) e la disuguaglianza di Cauchy–Schwartz e Z 1 ′ 2xˆ u(x)ˆ u (x)dx = 0 da cui (ˆ u, uˆ) ≤ 2 cio`e p Z 1 1 Z xˆ u (x) dx = uˆ (x)x − 2 0 (ˆ u, uˆ) ′ 1 uˆ2 (x)dx 2 0 0 p p p (ˆ u′ , uˆ′ ) = 2 (ˆ u, uˆ) (ˆ u′ , uˆ′ ) p (ˆ u, uˆ) ≤ 2kˆ uk 14.1. UN PROBLEMA MODELLO 67 Poich´e uˆ soddisfa, in particolare, (ˆ u′ , uˆ′ ) = (g, uˆ) si ricava, suppondendo g a quadrato sommabile, p p p u, uˆ) ≤ 2 (g, g)kˆ uk kˆ uk2 ≤ (g, g) (ˆ da cui kˆ uk ≤ 2 p (g, g) Si conclude osservando che date due perturbazioni della soluzione u˜ e u¯ corrispondenti rispettivamente a g˜ e g¯, allora ((˜ u − u¯)′ , v ′ ) = (˜ g − g¯, v), e pertanto k˜ u − u¯k ≤ 2 p ∀v ∈ Vm (˜ g − g¯, g˜ − g¯) e cio`e che piccole variazioni sui dati producono piccole variazioni sulle soluzioni. Metodo degli elementi finiti (FEM) La scelta di Vm caratterizza il metodo. Da un lato bisogna considerare la regolarit`a della soluzione richiesta. Dall’altro la difficolt`a di assemblare la matrice di rigidezza e di risolvere il sistema lineare. Vediamo un esempio. Introduciamo una discretizzazione dell’intervallo [0, 1] a passo variabile, come φ1 φj−1 h1 x1 φj hj−1 x2 xj−2 xj−1 xj φj+1 hj hm−1 xj+1 xm Figura 14.1: Hat functions in Figura 14.1. Lo spazio Vm `e generato quali sono definite da x−x j−1 , hj−1 φj (x) = xj+1 − x , hj 0, m−1 dalle funzioni di base {φj }j=2 , le xj−1 ≤ x ≤ xj xj ≤ x ≤ xj+1 altrimenti 68 CAPITOLO 14. METODI VARIAZIONALI e 1 , xj−1 < x < xj hj−1 1 φ′j (x) = , xj < x < xj+1 − h j 0, altrimenti Tuttavia, per permettere la trattazione di problemi con differenti condizioni al bordo, consideriamo anche x2 − x , x1 ≤ x ≤ x2 h1 φ1 (x) = 0, altrimenti e − 1, x <x<x 1 2 ′ h1 φ1 (x) = 0, altrimenti e x − xm−1 , xm−1 ≤ x ≤ xm hm−1 φm (x) = 0, altrimenti e φ′m (x) = 1 hm−1 0, , xm−1 < x < xm altrimenti Dunque, nell’approssimazione uˆ(x) = m X uˆj φj (x) j=1 i coefficienti uˆj sono i valori di uˆ nei nodi xj . Il problema (14.4) si riscrive Z 1 uˆ 0 ′ (x)φ′i (x)dx = = m X j=1 m X j=1 uˆj Z 1 0 φ′j (x)φ′i (x)dx uˆj aij = = m X uˆj j=1 Z xi +hi g(x)φi (x)dx xi −hi−1 Z xi +hi xi −hi−1 φ′j (x)φ′i (x)dx = 14.1. UN PROBLEMA MODELLO 69 Siccome il supporto di φj (x) `e [xj−1 , xj+1 ], gli unici elementi non nulli aij sono aii , ai i−1 e ai+1 i = ai i+1 . Per 1 < i < m, 2 2 Z xi Z xi +hi 1 1 1 1 ′ ′ − aii = (φi , φi ) = dx + dx = + hi−1 hi hi−1 hi xi −hi−1 xi Z xi 1 1 1 − ai i−1 = (φ′i−1 , φ′i ) = · dx = − = ai−1 i hi−1 hi−1 hi−1 xi −hi−1 Per i = 1 e i = m, si ha invece 2 Z x1 +h1 1 1 dx = − a11 = h1 h1 Zx1x2 1 1 1 − · dx = − = a12 a21 = h1 h1 h1 x2 −h1 Z xm 1 1 1 am m−1 = − · dx = − = am−1 m hm−1 hm−1 hm−1 xm −hm−1 2 Z xm 1 1 − amm = dx = hm−1 hm−1 xm −hm−1 Per quanto riguarda il calcolo di (g, φi ) si pu`o ricorrere alla formula del punto medio: per 1 < i < m `e Z xi+1 Z xi xi+1 − x x − xi−1 g(x) dx + dx ≈ g(x) gi = (g, φi ) = hi−1 hi xi xi−1 xi−1 + xi hi−1 xi + xi+1 hi ≈g +g 2 2 2 2 Per i = 1 e i = m si ha invece Z x2 x2 − x x1 + x2 h 1 g1 = (g, φ1 ) = g(x) dx ≈ g h1 2 2 x1 Z xm xm−1 + xm hm−1 x − xm−1 dx ≈ g gm = (g, φm ) = g(x) hm−1 2 2 xm−1 L’approssimazione di Z xi xi−1 g(x)φi (x)dx = Z xi g(x) xi−1 x − xi−1 dx hi−1 mediante la formula del punto medio produce un errore 3 ′ hi−1 2g (ξ ) ξ − x i−1 i−1 i−1 ′′ = O(h2i−1 ), ξi−1 ∈ (xi−1 , xi ) + 24 g (ξi−1 ) hi−1 hi−1 70 CAPITOLO 14. METODI VARIAZIONALI (occorre infatti valutare la derivata seconda di g(x)φi (x) in un opportuno punto ξi−1 ). Siccome g(xi−1 ) + g(xi ) xi−1 + xi g = + O(h2i−1 ) = g¯i−1 + O(h2i−1 ) 2 2 e, essendo la formula del punto medio esatta sulle funzioni lineari, Z xi xi−1 + xi hi−1 φi (x)dx = φi hi−1 = 2 2 xi−1 la formula del punto medio viene di solito sostituita dalla formula equivalente (nel senso dell’ordine di approssimazione) Z xi +hi Z xi hi−1 hi φi (x)dx = g¯i−1 φi (x)dx + g¯i gi = (g, φi ) ≈ g¯i−1 + g¯i 2 2 xi xi −hi−1 per 1 < i < m e da g1 = (g, φ1 ) = g¯1 Z x1 +h1 φ1 (x)dx = g¯1 x1 gm = (g, φm ) = g¯m−1 Z h1 2 xm φm (x)dx = g¯m−1 xm −hm−1 hm−1 2 La riga i-esima del sistema lineare risulta dunque essere . .. .. . h i uˆi−1 +¯ g i hi 1 1 0 . . . 0 − hi−1 + h1i − h1i 0 . . . 0 uˆi = g¯i−1 hi−1 hi−1 2 . u ˆ i+1 .. .. . e dunque molto simile (il termine noto `e diverso, anche se dello stesso ordine) ` a quella della discretizzazione con differenze finite del secondo ordine. E importante sottolineare che la similitudine con le differenze finite si ha solo per questo semplice problema modello, per la scelta delle funzioni di base e per la scelta della formula di quadratura. Pertanto, `e naturale aspettarsi, sotto opportune ipotesi di regolarit`a, che l’errore, nella norma indotta dal prodotto scalare, rispetto alla soluzione analitica tenda a zero come h2 , h = maxj hj (e ci`o giustifica, a posteriori, la scelta della formula di quadratura). Si ha infatti, nell’intervallo [xj , xj+1 ] Z Z x x |u′ (x)−(pc1 )u)′ (x)| = (u′′ (s) − (pc1 u)′′ (s))ds = u′′ (s)ds ≤ hj ku′′ k[xj ,xj+1 ] zj zj 14.1. UN PROBLEMA MODELLO 71 (per il teorema di Rolle) e quindi ku − pc1 uk2 = ≤ Z 1 ′ 0 |u (x) − m−1 X j=1 2 (pc1 u)′ (x)|2 dx = m−1 X Z xj+1 j=1 ′′ 2 hj (hj ku k[xj ,xj+1 ] ) ≤ = h maxku′′ k2[xk ,xk+1 ] m−1 X j=1 xj |u′ (x) − (pc1 u)′ (x)|2 dx ≤ hj (h2 maxku′′ k2[xk ,xk+1 ] ) = k k Dunque, usando (14.5), si ha ku − uˆk ≤ h maxku′′ kxj ,xj+1 j Questa `e una stima che coinvolge la derivata prima della funzione. consideriamo ancora l’intervallo [xj , xj+1 ], possiamo scrivere Z x |u(x) − pc1 u(x)| = (u′ (s) − (pc1 u)′ (s))ds ≤ hj · hj ku′′ k[xj ,xj+1 ] xj Se e quindi ku − pc1 uk2L2 = ≤ Z 1 0 |u(x) − m−1 X j=1 pc1 u(x)|2 dx = m−1 X Z xj+1 xj j=1 |u(x) − pc1 u(x)|2 dx ≤ hj (h4 ku′′ k2[xj ,xj+1 ] ) = h4 maxku′′ k2[xk ,xk+1 ] k da cui ku − uˆkL2 ≤ h2 maxku′′ k2[xk ,xk+1 ] j Si noti come nelle stime sopra sia sufficiente che la derivata seconda della soluzione esista in ogni intervallo, ma non sia necessario che esista dappertutto. A questo punto si risolve il sistema lineare, dopo aver opportunamente modificato la matrice e il termine noto per imporre le condizioni al bordo di Dirichlet. Nel caso di condizioni di Neumann (per esempio in u′ (0) = u′0 ), la forma debole del problema `e Z 1 1 Z 1 ′ ′ ′ −ˆ u (x)φi (x) + g(x)φi (x)dx, 1 ≤ i ≤ m uˆ (x)φi (x)dx = 0 0 0 72 CAPITOLO 14. METODI VARIAZIONALI Per i = 1, che `e il caso di interesse, si ha Z 1 Z ′ ′ ′ uˆ (0) + uˆ (x)φ1 (x)dx = 0 1 g(x)φ1 (x)dx 0 Dunque, la prima riga del sistema lineare da risolvere `e Z 1 Z 1 ′ ′ ′ uˆ (x)φ1 (x)dx = −u0 + g(x)φ1 (x)dx 0 0 Da notare che il problema con due condizioni di Neumann non `e ben definito, in quanto se u(x) `e soluzione, allora lo `e anche u(x) + k. Ovviamente, lo spazio Vm pu`o essere costituito da funzioni molto pi` u regolari (per esempio polinomi di grado superiore). Vediamo un approccio pi` u generale all’implementazione del metodo degli elementi finiti. Supponiamo di avere l elementi {ℓj }lj=1 (nel caso unidimensionale, sono gli intervalli) ad ognuno dei quali sono associati due nodi. Con ℓ1 ℓ2 x1 x2 ℓj−1 xj−1 ℓj xj ℓl xj+1 xm Figura 14.2: Nodi (numerati in basso) ed elementi (numerati in alto). riferimento alla Figura 14.2, ove m = l + 1, si ha ℓj,1 = j, ℓj,2 = j + 1, 1≤j≤l che significa che l’elemento ℓj ha associati i nodi xj e xj+1 . Ogni elemento contribuisce all’assemblaggio della matrice di stiffness e del termine noto. Per quanto riguarda la matrice di stiffness, ad ogni elemento ℓj si associa Z 1 φℓj,k ℓj,k = φ′ℓj,k (x)φ′ℓj,k (x)dx = , k = 1, 2 hj ℓ Zj 1 φ′ℓj,k (x)φ′ℓj,3−k (x)dx = − , k = 1, 2 φℓj,k ℓj,3−k = hj ℓj Per quanto riguarda il termine noto, ad ogni elemento ℓj si associa gℓj = g¯j = g(xℓj,1 ) + g(xℓj,2 ) 2 Pertanto si ha • aij = 0, 1 ≤ i, j ≤ m, gi = 0, 1 ≤ i ≤ m 14.2. METODI SPETTRALI 73 • for j = 1, . . . , l for k = 1, 2 aℓj,k ℓj,k = aℓj,k ℓj,k + φℓj,k ℓj,k , gℓj,k = gℓj,k + gℓj aℓj,k ℓj,3−k = aℓj,k ℓj,3−k + φℓj,k ℓj,3−k hj 2 end end 14.1.2 Estensione al caso bidimensionale Tutto quanto detto si estende, in particolare, al caso bidimensionale. Si deve usare la formula di Green Z Z Z 2 ∇ u(x)v(x)dx = − ∇u(x) · ∇v(x)dx + v(s)∇u(s) · ν(s)ds Ω Ω ∂Ω ove ν(s) `e il versore esterno normale a ∂Ω. 14.2 Metodi spettrali Sia u(x) = X uj φj (x) j L’indice algebrico di convergenza `e il pi` u grande k tale che lim |uj |j k < +∞ j→∞ Se tale limite `e finito per ogni k, allora la serie si dice convergere esponenzialmente oppure spettralmente. Significa che |uj | decade pi` u velocemente di ogni potenza negativa di j. Parleremo di metodi spettrali quando useremo un’approssimazione di una serie convergente spettralmente uˆ(x) = m X uˆj φj (x) j=1 al posto di u(x). Quindi, useremo i metodi spettrali quando ci aspettiamo soluzioni molto regolari. Consideriamo una famiglia di funzioni {φj }j ortonormali rispetto al prodotto scalare Z b φj (x)φi (x)w(x)dx = δji a 74 CAPITOLO 14. METODI VARIAZIONALI La formulazione di Galerkin di un problema ai limiti Lu = g, L operatore differenziale lineare, diventa m X j=1 uˆj Z b Lφj (x)φi (x)w(x)dx = a Z b g(x)φi (x)w(x)dx, a 1≤i≤m Nel caso non si possano calcolare analiticamente o con formule di quadratura esatte gli integrali, si ricorre alle formule di quadratura gaussiana (relative alle funzioni φj (x)) a m punti, dando origine al sistema lineare ! m m m X X X Lφj (xn )φi (xn )wn = uˆj g(xn )φi (xn )wn = gˆi , 1 ≤ i ≤ m j=1 n=1 n=1 (14.6) In tal caso si parla di metodi pseudospettrali. I coefficienti uˆj che si trovano risolvendo il sistema lineare si chiamano solitamente soluzione nello spazio spettrale. Dati i coefficienti, si ricostruisce la soluzione nello spazio fisico P u ˆ φ (x). Detta F la matrice j j j √ F = (fij ) = φi (xj ) wj e dati i coefficienti uˆj , si calcola la soluzione fisica quadratura mediante √ uˆ1 w1 uˆ(x1 ) uˆ2 √w2 uˆ(x2 ) = F T .. .. . . √ uˆm wn uˆ(xn ) P j uˆj φj (x) sui nodi di Per quanto riguarda invece i coefficienti gi , essi sono dati da √ gˆ1 g(x1 ) w1 gˆ2 g(x2 )√w2 .. = F .. . . √ g(xn ) wn gˆn Solitamente le funzioni {φj (x)}j sono polinomi ortonormali rispetto alla funzione peso w(x) e in tal caso, ma non solo in questo, F T = F −1 (lo si dimostra calcolando F F T e usando l’equazione (3.1) con pj (x) = φj+1 (x)). La soluzione u(x), per`o, potrebbe non essere efficacemente approssimata da polinomi, per esempio se deve soddisfare particolari condizioni al contorno (tipo vanishing boundary conditions, condizioni al bordo periodiche o altro). Pu`o essere 14.2. METODI SPETTRALI 75 utile allora la decomposizione u(x) ≈ m X j=1 m X p uˆj ϕj (x) uˆj φj (x) w(x) = j=1 La formulazione di Galerkin di Lu = g diventa allora Z b Z b m X p p p uˆj L(φj (x) w(x))φi (x) w(x)dx = g(x)φi (x) w(x)dx, 1 ≤ i ≤ m j=1 a a Ad ogni modo, la differenza sostanzionale con il metodo degli elementi finiti `e che le funzioni di base sono regolari e a supporto globale. Consideriamo ora un caso particolare di fondamentale importanza (per l’analisi numerica in generale). Molte propriet`a risultano comuni anche agli altri metodi pseudospettrali. 14.2.1 Trasformata di Fourier Sia [a, b] un intervallo di R, m > 0 pari e fissato. Consideriamo, per ogni j ∈ Z, ei(j−1−m/2)2π(x−a)/(b−a) √ φj (x) = b−a Allora, Z b φj (x)φk (x)dx = δjk (14.7) a Infatti, se j = k allora φj (x)φk (x) = 1/(b − a), altrimenti ei2π(j−k)(x−a)/(b−a) b−a φj (x)φk (x) = e quindi Z b φj (x)φk (x)dx = a Z 1 0 ei2π(j−k)y (b − a)dy = 0 , b−a poich´e l’integrale delle funzioni sin e cos in un intervallo multiplo del loro periodo `e nullo. La famiglia di funzioni {φj }j si dice ortonormale nell’intervallo [a, b] rispetto al prodotto scalare (φj , φk ) = Z b φj (x)φk (x)dx a 76 CAPITOLO 14. METODI VARIAZIONALI Un risultato utile `e il seguente m X ei(n−1)2π(j−k)/m = mδjk , n=1 1 ≤ j, k ≤ m (14.8) ` ovvio per j = k; altrimenti E m X e i(n−1)2π(j−k)/m = n=1 m−1 X ei2π(j−k)/m n=0 = n = 1 − ei2π(j−k) 1 − cos(2π(j − k)) = =0 i2π(j−k)/m 1−e 1 − ei2π(j−k)/m poich´e −m + 1 ≤ j − k ≤ m − 1. 14.2.2 Trasformata di Fourier discreta Sia u una funzione da [a, b] a C tale che u(a) = u(b). Supponiamo che u si possa scrivere (ci`o `e vero, per esempio, per funzioni di classe C 1 ) come +∞ X u(x) = uj φj (x), j=−∞ uj ∈ C (14.9) Fissato k ∈ Z, moltiplicando entrambi i membri per φk (x) e integrando nell’intervallo [a, b], usando (14.7) si ottiene Z b u(x)φk (x)dx = a Z = +∞ X b a ∞ X uj φj (x)φk (x) dx = j=−∞ uj Z ! b (14.10) φj (x)φk (x)dx = uk a j=−∞ Dunque, abbiamo un’espressione esplicita per uj . Analogamente si vede che Z b 2 a |u(x)| dx = +∞ X |uj |2 j=−∞ (identit`a di Parseval) 14.2. METODI SPETTRALI 77 La prima approssimazione da fare consiste nel troncare la serie infinita. Osserviamo che, definito J = Z \ {1, 2, . . . , m}, 2 2 Z b Z b X m X uj φj (x) dx = uj φj (x) dx = u(x) − a a j=1 j∈J ! ! Z b X X uk φk (x) dx = uj φj (x) = a = X j∈J j∈J k∈J |uj |2 Stimiamo adesso uj : posto λj = i(j − 1 − m/2)2π/(b − a) si ha, per funzioni di √ classe u ∈ C 2 , integrando per parti e tenendo conto che φj (a) = φj (b) = 1/ b − a e che φ′j (x) = λj φ(x) Z Z 1 b ′ 1 uj = u(x)φj (x)dx = − √ (u(b) − u(a)) + u (x)φj (x)dx = λj a λj b − a a Z b 1 1 1 ′ ′ (u(b) − u(a)) − 2 √ (u (b) − u (a)) + 2 u′′ (x)φj (x)dx =− √ λ λj b − a λj b − a j a −2 = O (j − 1 − m/2) b Se anche u′ (a) = u′ (b) e u ∈ C 3 , allora, integrando ancora per parti, si ottiene |uj | = O (|j − 1 − m/2|−3 ) e cos`ı via: in generale, se u ∈ C k e u(l) periodica per l = 1, 2, . . . , k − 2, allora |uj | = O |j − 1 − m/2|−k , j → ∞ Si ha dunque X |uj |2 = |um+1 |2 + |u0 |2 + |um+2 |2 + |u−1 |2 + |um+3 |2 + . . . = j∈J = O (m/2)−2k + O (1 + m/2)−2k + O (2 + m/2)−2k + . . . con |um+1 | termine dominante. Se poi u `e infinitamente derivabile e periodica (cio`e tutte le derivate sono periodiche), allora, fissato k, 0 ≤ lim |uj |j k ≤ lim M |j − 1 − m/2|−(k+1) j k = 0 j→∞ j→∞ La seconda approssimazione da fare `e utilizzare una formula di quadratura per il calcolo di uj . Riportiamo per comodit`a la formula di quadratura 78 CAPITOLO 14. METODI VARIAZIONALI trapezoidale a m+1 nodi equispaziati xn = (b−a)yn +a, ove yn = (n−1)/m, n = 1, . . . , m + 1 per funzioni periodiche: ! Z b m m X X b−a g(x)dx ≈ g(x1 ) + 2 g(xn ) + g(xm+1 ) = h g(xn ) 2m a n=2 n=1 ove h = (b − a)/m. Usando la (14.8), abbiamo mδjk = m X ei(n−1)2π(j−k)/m = n=1 m X ei(j−k)2πyn = n=1 m X ei(j−k)2π(xn −a)/(b−a) = n=1 m X ei(j−1−m/2)2π(xn −a)/(b−a) e−i(k−1−m/2)2π(xn −a)/(b−a) √ √ = = (b − a) b−a b−a n=1 Z b m X φj (x)φk (x)dx = (b − a) φj (xn )φk (xn ) = m a n=1 cio`e la famiglia {φj }m e ortonormale anche rispetto al prodotto scalare j=1 ` discreto m b−aX φj (xn )φk (xn ) (φj , φk )d = m n=1 Applicando la formula di quadratura ai coefficienti (14.10) si ottiene Z b e−i(j−1−m/2)2π(x−a)/(b−a) √ dx = u(x) b−a a Z 1 √ u((b − a)y + a)e−i(j−1)2πy eimπy dy ≈ = b−a uj = ≈ √ 0 m b−a X u(xn )eimπyn e−i(j−1)2πyn = uˆj m n=1 ove x = (b − a)y + a. La funzione (serie troncata di Fourier) uˆ(x) = m X m/2−1 uˆj φj (x) = j=1 X k=−m/2 uˆk+1+m/2 φk+1+m/2 (x) = k=−m/2 m/2−1 = X uˆk+1+m/2 eik2π(x−a)/(b−a) √ b−a 14.2. METODI SPETTRALI 79 `e un polinomio trigonometrico che approssima u(x) ed `e interpolante nei nodi xn . Infatti, usando (14.8), u ˆ(xn ) = m X j=1 = m X j=1 = = 1 m 1 m u ˆj φj (xn ) = ! √ m −i(j−1)2πy b−a X ei(j−1−m/2)2π(xn −a)/(b−a) imπyk k √ u(xk )e e = m b−a m X k=1 m X k=1 u(xk )eimπ(k−1)/m e−imπ(n−1)/m m X e−i(j−1)2π(k−1)/m ei(j−1)2π(n−1)/m = j=1 u(xk )ei(k−n)π m X ei(j−1)2π(n−k)/m = j=1 k=1 1 u(xn )m = u(xn ) . m Si pu`o far vedere poi che 2 Z b m X X uˆj φj (x) dx ≤ 2 |uj |2 u(x) − a j=1 j∈J Si usa spesso considerare allora il doppio del primo termine trascurato (cio`e um+1 ), oppure della somma dei primi termini trascurati come stima di errore. La trasformazione [u(x1 ), u(x2 ), . . . , u(xm )]T → [ˆ u1 , uˆ2 , . . . , uˆm ]T si chiama trasformata di Fourier discreta √ di u e uˆ1 , . . . , uˆm coefficienti di FouT rier di u. Il vettore m · [ˆ u1 , uˆ2 , . . . , uˆm ] / b − a pu`o essere scritto come pro√ dotto matrice-vettore F m[u(x1 )eimπy1 , u(x2 )eimπy2 , . . . , u(xm )eimπym ]T , ove F = (fjn ), fjn e−i(j−1)2πyn √ = φj+m/2 = m xn − a √ h. b−a Alternativamente, si pu`o usare la Fast Fourier Transform (FFT). Il comando 1 fft applicato al vettore [u(x1 )eimπy , u(x2 )eimπy2 , . . . , u(xm )eimπym ]T produ√ ce il vettore m · [ˆ u1 , uˆ2 , . . . , uˆm ]T / b − a, cos`ı come il comando fftshift applicato al risultato del comando fft applicato a [u(x1 ), u(x2 ), . . . , u(xm )]. Dati dei coefficienti vˆj , j = 1, . . . , m, si pu`o considerare la funzione (periodica) m X vˆj φj (x) j=1 80 CAPITOLO 14. METODI VARIAZIONALI La valutazione nei nodi xn , 1 ≤ n ≤ m, porge m X m X ei(j−1−m/2)2π(xn −a)/(b−a) √ = vˆj φj (xn ) = vˆj b−a j=1 j=1 ! m m 1 X i(j−1)2πyn =√ e−imπyn . vˆj e b − a m j=1 vˆˆn = La trasformazione [ˆ v1 , vˆ2 , . . . , vˆm ]T → [vˆˆ1 , vˆˆ2 , . . . , vˆˆm ]T si chiama anti-trasformata di Fourier discreta. Se i vˆj sono i coefficienti di Fourier di una funzione v(x), la propriet`a di interpolazione comporta vˆˆn = v(xn ). Ma, in generale, non `e vero che v(x) = m X vˆj φj (x) j=1 √ m T Il vettore b − a · [vˆˆ1 eimπy1 , vˆˆ2 eimπy2 , . . . , vˆˆm eimπy√ ] /m pu`o essere scritto ′ T come prodotto matrice-vettore F [ˆ v1 , vˆ2 , . . . , vˆm ] / m, ove F ′ denota, come in GNU Octave, la trasposta coniugata di F . Alternativamente, √ il comando ifft applicato al vettore [ˆ v1 , vˆ2 , . . . , vˆm ] produce il vettore b − a · [vˆˆ1 eimπy1 , vˆˆ2 eimπy2 , . . . , vˆˆm eimπym ]/m, mentre, se applicato al risultato del comando ifftshift applicato al vettore [ˆ v1 , vˆ2 , . . . , vˆm ], produce il vettore √ ˆ ˆ ˆ b − a · [vˆ1 , vˆ2 , . . . , vˆm ]/m. √ Da notare che F ′ = F −1 e che, detta D = h·diag(eimπy1 , eimπy2 , . . . , eimπym ), si ha [ˆ u1 , uˆ2 , . . . , uˆm ]T = F D[u(x1 ), u(x2 ), . . . , u(xm )]T e (F D)−1 = D−1 F −1 = (1/h)D′ F ′ = (1/h)(F D)′ . Sul range delle frequenze Con le notazioni attuali la serie troncata di Fourier `e definita come m/2−1 uˆ(x) = X ... k=−m/2 mentre molte volte si vuole calcolare m/2 X ... k=−m/2 ` sufficiente considerare allora la famiglia di funzioni {φj }m+1 con nodi xn = E j=1 (b − a)yn + a, yn = (n − 1)/(m + 1), n = 1, . . . , m + 2. 14.2. METODI SPETTRALI 81 Applicazione ad un problema modello 10−2 ordine 1 ordine 2 ordine 4 ordine 8 errore 10−4 fourier.m 10−6 errore in norma-2 10−8 10−10 10−12 10−14 10−16 10−18 1 10 100 m Figura 14.3: Convergenza spettrale di Fourier per il problema (14.11) rispetto ad una soluzione di riferimento ottenuta con m = 64. Consideriamo la soluzione del problema 1 − u′′ (x) + u(x) = , x ∈ (−π, π) sin x + 2 u(−π) = u(π) (14.11) mediante decomposizione in funzioni di Fourier. Posto a = −π, b = π, g(x) = 1/(sin x + 2), si ha φj (x) = ei(j−1−m/2)2π(x−a)/(b−a) √ b−a ove m `e pari e fissato e, per 1 ≤ k ≤ m, !′′ Z π Z m X − uj φj (x) φk (x)dx + −π j=1 = da cui Z m X − uj j=1 π −π φ′′j (x)φk (x)dx + m X j=1 uj Z π −π Z π m X ! uj φj (x) φk (x)dx = j=1 g(x)φk (x)dx −π π φj (x)φk (x)dx = −π Z π g(x)φk (x)dx −π 82 CAPITOLO 14. METODI VARIAZIONALI Poich´e φ′′j (x) = i(j − 1 − m/2)2π b−a 2 φj (x) = λ2j φj (x) usando l’ortonormalit`a delle funzioni di Fourier e calcolando i coefficienti di Fourier di g(x), si ha −λ2k uˆk + uˆk = gˆk , da cui uˆk = e quindi gˆk , 1 − λ2k u(x) ≈ m X 1≤k≤m 1≤k≤m uˆj φj (x) j=1 In Figura 14.3 si vede la convergenza spettrale del metodo. Da notare che le condizioni al bordo devono essere di tipo periodico: condizioni come ′′ ′ u (x) = f (x, u(x), u (x)), x ∈ (a, b) u(a) = 0 u(b) = 0 sono invece di Dirichlet omogenee. Inoltre, la soluzione del problema deve poter essere periodica (o, almeno, avere pi` u derivate possibili periodiche): per esempio, non possono esserci termini non omogenei non periodici. Costi computazionali e stabilit` a La Fast Fourier Transform di un vettore di lunghezza m ha costo O(m log m), mentre il prodotto matrice-vettore O(m2 ). Tali costi sono per`o asintotici e nascondono i fattori costanti. Inoltre, GNU Octave pu`o far uso di implementazioni ottimizzate di algebra lineare (come, ad esempio, le librerie ATLAS1 o OpenBLAS2 ). In pratica, dunque, esiste un m0 sotto il quale conviene, dal punto di vista del costo computazionale, usare il prodotto matrice-vettore e sopra il quale la FFT. Per quanto riguarda l’accuratezza, in generale la FFT `e pi` u precisa del prodotto matrice vettore. Poich´e la trasformata di Fourier discreta comporta l’uso di aritmetica complessa (anche se la funzione da trasformare `e reale), 1 2 http://math-atlas.sourceforge.net/ http://xianyi.github.com/OpenBLAS/ 14.2. METODI SPETTRALI 83 la sequenza trasformata/anti-trasformata potrebbe introdurre una quantit`a immaginaria spuria che pu`o essere eliminata con il comando real. Anche per la trasformata di Fourier vi possono essere problemi di stabilit`a simili al fenomeno di Runge (qui chiamato fenomeno di Gibbs). Una tecnica per “smussare” (in inglese “to smooth”) eventuali oscillazioni, consiste nel moltiplicare opportunamente i coefficienti di Fourier uˆj per opportuni termini σj che decadono in j, per esempio σj = m 2 + 1 − | m2 + 1 − j| , m +1 2 1≤j≤m Il risultato `e che il coefficiente uˆm/2+1 `e pesato da σm/2+1 = 1, i coefficienti uˆm/2 e um/2+2 sono pesati da m/(m + 2) e cos`ı via fino al coefficiente uˆ1 pesato da 2/(m + 2). Questa scelta corrisponde alle medie di Ces´ aro. Infatti, si sostituisce la serie troncata di Fourier m X uˆj φj (x) j=1 con la media delle troncate m m max{ 2 +1+k,m} 2 X X k=0 uˆj φj (x) +1−k j= m 2 m 2 +1 Si ricorda che se una serie `e convergente, allora il limite delle medie delle sue troncate `e la somma della serie. Valutazione di un polinomio trigonometrico Supponiamo di conoscere i coefficienti uˆj , j = 1, . . . , m e di voler valutare la funzione m X uˆ(x) = uˆj φj (x) j=1 su un insieme di nodi target xk equispaziati, xk = (k − 1)/n, 1 ≤ k ≤ n, n > m, n pari. Si possono introdurre dei coefficienti fittizi Uˆk Uˆk = 0 1≤k≤ Uˆk = uˆk− n−m 2 Uˆk = 0 n−m 2 n−m n−m +1≤k ≤m− 2 2 n−m m− +1≤k ≤n 2 84 CAPITOLO 14. METODI VARIAZIONALI Si avr`a uˆ(xk ) = m X uˆj φj (xk ) = j=1 n X e Uˆj i(j−1−n/2)2π(xk −a)/(b−a) √ j=1 1 n =√ b−a n n X Uˆj ei(j−1)2πyk j=1 ! b−a = e−inπyk Oppure si pu`o costruire la matrice F relativa ai nodi (ci`o funziona anche per nodi non equispaziati). Infine, si pu`o usare la trasformata di Fourier non equispaziata NFFT. 14.3 Metodi di collocazione Si assume comunque uˆ(x) = m X uˆj φj (x) j=1 ove {φj } `e un sistema ortonormale rispetto ad un prodotto scalare, ma si impone poi che l’equazione differenziale Lu = g sia soddisfatta in certi nodi xn . Si ha il seguente risultato interessante: Teorema 7. La soluzione del sistema lineare m X uˆj Lφj (xn ) = g(xn ), 1≤n≤m j=1 (14.12) ove gli {xn } sono i nodi della quadratura gaussiana relativa alla famiglia {φj } `e la stessa del problema di Galerkin m X j=1 uˆj Z b Lφj (x)φi (x)w(x)dx = a Z b g(x)φi (x)w(x)dx a quando si approssimino gli integrali con le formule gaussiane. Dimostrazione. Per ogni i, 1 ≤ i ≤ m, da (14.12), si ha m X j=1 uˆj Lφj (xn )φi (xn )wn = g(xn )φi (xn )wn , 1≤n≤m 14.3. METODI DI COLLOCAZIONE 85 ove i {wn }n sono i pesi di quadratura gaussiana, da cui, sommando su n, ! ! m m m m X X X X Lφj (xn )φi (xn )wn = uˆj uˆj Lφj (xn )φi (xn )wn = n=1 j=1 = j=1 m X n=1 g(xn )φi (xn )wn , n=1 1≤i≤m che `e precisamente la formulazione di Galerkin pseudospettrale (14.6). 14.3.1 Condizioni al bordo Consideriamo il problema Lu(x) = g(x) u(a) = ua ′ u (b) = u′b Con il metodo di collocazione, si ha m X uˆj Lφj (xn ) = g(xn ), j=1 m X uˆj φj (a) = ua j=1 m X uˆj φ′j (b) = u′b 1≤n≤m−2 j=1 Anche in questo caso il metodo di collocazione pu`o essere visto come un metodo di Galerkin pseudospettrale: basta prendere come nodi di collocazione gli m − 2 nodi di quadratura gaussiana. Si ha poi ! m−2 m m−2 X X X Lφ (x )φ (x )w u ˆ = g(xn )φi (xn )wn , 1 ≤ i ≤ m − 2 j n i n n j n=1 n=1 j=1 m X uˆj φj (a) = ua j=1 m X uˆj φ′j (b) = u′b j=1 Alternativamente, si possono usare, come nodi di collocazione, quelli delle formule di quadratura di Gauss–Lobatto (che contengono i nodi al bordo). 86 CAPITOLO 14. METODI VARIAZIONALI Collocazione Gauss–Lobatto–Chebyshev I polinomi di Chebyshev sono definiti da Tj (x) = cos(j arccos(x)), −1 ≤ x ≤ 1 e soddisfano Z 1 −1 ππ Tj (x)Ti (x) √ dx = 2 1 − x2 0 i=j=0 i = j 6= 0 i 6= j (lo si vede con il cambio di variabile x = cos θ e applicando le formule di Werner, oppure integrando per parti due volte). I nodi di (Gauss–)Chebyshev– Lobatto sono xn = cos((n − 1)π/(m − 1)), 1 ≤ n ≤ m. Possiamo allora definire la seguente famiglia di funzioni ortonormali φ1 (x) = r 1 T0 (x), π φj (x) = r 2 Tj−1 (x), π 2≤j≤m Ricordando la formula di ricorrenza tra polinomi di Chebyshev, possiamo scrivere r √ 1 2 , φ2 (x) = x, φ3 (x) = 2xφ2 (x) − 2φ1 (x), φ1 (x) = π π φj+1 (x) = 2xφj (x) − φj−1 (x), 3 ≤ j ≤ m − 1 r Da qui, possiamo calcolare anche la derivata prima e seconda delle funzioni: r 2 , φ′3 (x) = 2φ2 (x) + 2xφ′2 (x), π φ′j+1 (x) = 2φj (x) + 2xφ′j (x) − φ′j−1 (x), 3 ≤ j ≤ m − 1 φ′1 (x) = 0, φ′2 (x) = φ′′1 (x) = 0, φ′′2 (x) = 0, φ′′3 (x) = 4φ′2 (x), φ′′j+1 (x) = 4φ′j (x) + 2xφ′′j (x) − φ′′j−1 (x), 3 ≤ j ≤ m − 1 14.3. METODI DI COLLOCAZIONE Conviene calcolare le matrici φ1 (x1 ) φ2 (x1 ) T0 = .. . φm (x1 ) φ′1 (x1 ) φ′ (x1 ) 2 T1 = .. . φ′m (x1 ) φ′′1 (x1 ) φ′′ (x1 ) 2 T2 = .. . φ′′m (x1 ) 87 φ1 (x2 ) . . . φ1 (xm ) φ2 (x2 ) . . . φ2 (xm ) .. .. . ... . φm (x2 ) . . . φm (xm ) φ′1 (x2 ) . . . φ′1 (xm ) φ′2 (x2 ) . . . φ′2 (xm ) .. .. . ... . ′ ′ φm (x2 ) . . . φm (xm ) φ′′1 (x2 ) . . . φ′′1 (xm ) φ′′2 (x2 ) . . . φ′′2 (xm ) .. .. . ... . ′′ ′′ φm (x2 ) . . . φm (xm ) Consideriamo, a titolo di esempio, il seguente problema modello ′′ −u (x) + q(x)u(x) = g(x) u(−1) = ua u′ (1) = u′ b Il sistema lineare risultante da risolvere per il metodo di collocazione Gauss– Chebyshev–Lobatto (per il momento senza tener conto delle condizioni al bordo) `e u1 q(x1 ) g(x1 ) u2 g(x2 ) q(x2 ) T T T0 .. = .. −T2 + . . . . . q(xm ) um g(xm ) Per imporre le condizioni al bordo, si sostituisce la prima riga della matrice con la prima riga di TT 0 e il primo elemento del termine noto con ua . Poi, l’ultima riga della matrice con l’ultima riga di TT 1 e l’ultimo elemento del termine noto con u′b . Una volta noti i coefficienti uj , si ricostruisce la soluzione nello spazio fisico tramite u(x1 ) u1 u(x2 ) u2 .. = TT 0 .. . . u(xm ) um Capitolo 15 Esercizi 1. Si risolva il problema ai limiti ′′ u (x) = u(x) + x, u(0) = 0 u(1) = 0 x ∈ (0, 1) (15.1) usando il metodo delle differenze finite del secondo ordine. Sapendo che la soluzione esatta `e u(x) = (ex − e−x )/(e − e−1 ) − x, si mostri inoltre l’ordine del metodo mediante un grafico logaritmico-logaritmico dell’errore in norma infinito. 2. Si risolva il problema ai limiti ′′ ′ u (x) + u (x) + u(x) − cos(x) = 0, u(0) = 0 u(π/2) = 1 x ∈ (0, π/2) usando il metodo delle differenze finite del secondo ordine. Si mostri inoltre l’ordine del metodo mediante un grafico logaritmico-logaritmico dell’errore in norma infinito rispetto ad una soluzione di riferimento. 3. Si risolva il problema ai limiti ′′ ′ u (x) + u (x) + u(x) − cos(x) = 0, u′ (0) = 1 u(π/2) = 1 x ∈ (0, π/2) usando il metodo delle differenze finite del secondo ordine. Si mostri inoltre l’ordine del metodo mediante un grafico logaritmico-logaritmico dell’errore in norma infinito rispetto ad una soluzione di riferimento. 88 89 4. Si risolva il problema ai limiti ′′ u (x) = cos(u(x)), u(0) = 0 u(1) = 1 x ∈ (0, 1) usando il metodo delle differenze finite del secondo ordine. 5. Si risolva il problema ai limiti d d − dx (1 + x) dx u(x) = 1, u(0) = 0 u(1) = 0 x ∈ (0, 1) Si mostri inoltre l’ordine del metodo mediante un grafico logaritmicologaritmico dell’errore in norma infinito rispetto alla soluzione esatta. 6. Si risolva il problema ai limiti ′′ ′ u (x) = 20u (x) + u(x), u(0) = 0 u(1) = 1 x ∈ (0, 1) Visto l’andamento della soluzione, si implementi uno schema di differenze finite su nodi non equispaziati secondo una distribuzione di tipo coseno. Si confrontino gli errori rispetto alla soluzione analitica. 7. Si ricavi la relazione di ricorrenza dei polinomi ortonormali nell’inter2 2 vallo [−∞, ∞] rispetto alla funzione peso w(x) = e−α x 8. Noti gli zeri dei polinomi di Legendre e i pesi di quadratura della rispettiva formula gaussiana, si ricavino i nodi e i pesi di una formula gaussiana nell’intervallo [a, b] rispetto al peso w(x) = 1. 9. Si risolva il problema ai limiti (15.1) usando il metodo di collocazione con polinomi di Legendre. Gli N nodi di collocazione in [a, b] e la valutazione dei polinomi di Legendre e delle loro derivate sono dati dalla function [L,x,L1,L2] = legendrepolynomials(N,a,b). Si mostri inoltre l’ordine del metodo mediante un grafico logaritmico-logaritmico dell’errore in norma infinito. Parte 2 ODEs (Equazioni differenziali ordinarie) 90 Capitolo 16 Introduzione Consideriamo il sistema di equazioni differenziali ordinarie (ODEs) ai valori iniziali (initial value problem) con dato iniziale ′ y1 (t) = f1 (t, y1 (t), y2 (t), . . . , yd (t)) y2′ (t) = f2 (t, y1 (t), y2 (t), . . . , yd (t)) .. . ′ yd (t) = fd (t, y1 (t), y2 (t), . . . , yd (t)) y1 (t0 ) = y1 0 y2 (t0 ) = y2 0 .. . yd (t0 ) = yd 0 che pu`o essere riscritto, in forma compatta, ( y ′ (t) = f (t, y(t)), y(t0 ) = y 0 t > t0 (16.1) Assumiamo y 0 ∈ Rd e f : [t0 , +∞) × Rd → Rd globalmente lipschitziana nel secondo argomento kf (t, x) − f (t, y)k ≤ λkx − yk Allora il sistema (16.1) ha un’unica soluzione. 91 ∀x, y ∈ Rd 92 CAPITOLO 16. INTRODUZIONE 16.1 Riduzione in forma autonoma Un sistema in forma non autonoma ( y ′ (t) = f (t, y(t)), y(t0 ) = y 0 t > t0 pu`o essere ricondotto in forma autonoma mediante l’introduzione della variabile yd+1 (t) = t Si giunge a 16.2 ′ y (t) = f (yd+1 (t), y(t)), t > t0 y ′ (t) = 1, t > t0 d+1 y(t0 ) = y 0 yd+1 (t0 ) = t0 Equazioni di ordine superiore al primo Le equazioni differenziali di ordine d del tipo y (d) (t) = f (t, y(t), y ′ (t), . . . , y (d−1) (t)), y(t ) = y0,0 ′ 0 y (t0 ) = y0,1 .. . (d−1) y (t0 ) = y0,d−1 t > t0 (cio`e in cui vengono prescritti i valori iniziali della funzione e delle derivate) si possono ricondurre ad un sistema di ODEs di ordine uno, mediante la sostituzione y1 (t) = y(t) y2 (t) = y ′ (t) .. . yd (t) = y (d−1) (t) dando cos`ı luogo a ( y ′ (t) = f (t, y(t)) y(t0 ) = [y0,0 , y0,1 , . . . , y0,d−1 ]T ove f (t, y(t)) = [y2 (t), y3 (t), . . . , yd (t), f (t, y1 (t), y2 (t), . . . , yd−1 (t))]T Capitolo 17 Metodi ad un passo 17.1 Metodo di Eulero Il metodo di Eulero (o Eulero esplicito, o forward Euler ) si basa sull’approssimazione y(t) − y(t0 ) y ′ (t) ≈ t − t0 f (t, y(t)) ≈ f (t0 , y(t0 )) per cui y(t) ≈ y(t0 ) + (t − t0 )f (t0 , y(t0 )). Pertanto l’approssimazione di y(t) `e ottenuta per interpolazione lineare a partire da (t0 , f (t0 , y(t0 ))), con pendenza f (t0 , y(t0 )). Pu`o essere visto anche come applicazione della formula di quadratura del rettangolo (estremo sinistro) alla soluzione analitica Z t y(t) = y(t0 ) + f (τ, y(τ ))dτ t0 Data la sequenza t0 , t1 = t0 + k, t2 = t0 + 2k, . . . , tn = t0 + nk, . . ., ove k `e il passo temporale (o time step), lo schema numerico che ne risulta `e y n+1 = y n + kf (tn , y n ), y 0 = y(t0 ) n ≥ 0, (17.1) ove y n ≈ y(tn ). In pratica, y n+1 `e la soluzione approssimata al tempo tn + k, mediante un passo del metodo di Eulero, del sistema ( ˜ ′ (t) = f (t, y˜ (t)), t > tn y ˜ (tn ) = y n y Se consideriamo l’intervallo temporale [t0 , t0 + t∗ ] e abbiamo fissato m, indichiamo con y n , n ≤ m, la soluzione approssimata al tempo tn mediante un generico metodo y n+1 = Y n (f , k, y n ) per la soluzione del sistema differenziale (16.1), ove il passo temporale `e k = t∗ /m. 93 94 CAPITOLO 17. METODI AD UN PASSO Definizione 1. La quantit` a y(tn+1 )−Y n (f , k, y(tn )) si chiama errore locale del metodo. Detto in altre parole, esso `e la differenza tra la soluzione esatta al tempo tn+1 e la soluzione approssimata al tempo tn+1 che si otterrebbe applicando il metodo numerico al problema differenziale e supponendo esatta la soluzione al tempo tn . Per il metodo di Eulero, si ha y(tn+1 ) − Y n (f , k, y(tn )) = y(tn+1 ) − y(tn ) − kf (tn , y(tn )) = = y(tn ) + ky ′ (tn ) + O(k 2 ) − y(tn ) − ky ′ (tn ) = O(k 2 ) (17.2) (supponendo y ∈ C 2 ). Poich´e ad ogni passo si commette un errore di ordine O(k 2 ) (che si accumula agli errori prodotti ai passi precendeti) e i passi sono m = t∗ /k, se tutto va bene, anche quando m → ∞ (cio`e k → 0+ ) si ` giustificata commette un errore massimo di ordine t∗ /k · O(k 2 ) = O(k). E allora la seguente Definizione 2. Un metodo y n+1 = Y n (f , k, y n ) `e di ordine p se y(tn+1 ) − Y n (f , k, y(tn )) = O(k p+1 ), k = t∗ /m, per m → ∞, per qualunque f analitica e 0 ≤ n ≤ m − 1. Un metodo di ordine p ≥ 1 si dice consistente di ordine p, o semplicemente consistente. Se y(tn+1 ) − Y n (f , k, y(tn )) = 0 il metodo si dice fortemente consistente. Dunque il metodo di Eulero `e consistente di ordine 1. Si tratta ora di dimostrare che tutto va bene. Nella definizione sopra, al variare di m il significato di tn (e di y n ) cambia, nel senso che y n ≈ y(tn ) = y(t0 + nt∗ /m). Per essere pi` u chiari (ma anche pi` u pesanti) dobbiamo introdurre la notazione y n,m per indicare l’approssimazione di y(tn,m ) = y(t0 + nt∗ /m), osservando che y(tn,m1 ) 6= y(tn,m2 ) se m1 6= m2 . Definizione 3. Il metodo y n+1,m = Y n (f , k, y n,m ) `e convergente se lim max ken,m k = 0 m→∞ 0≤n≤m ove en,m = y n,m − y(tn ). La quantit` a maxn ken,m k si chiama errore globale. ` la Di solito si parla di convergenza, e anche di ordine, per k → 0+ . E ∗ stessa cosa, ma se si fissa k, non `e detto che t /k sia un numero intero. Si pu`o allora considerare il limite lim max ken,m k kn →0 0≤n≤m ove km = t∗ /m. Nel seguito assumeremo comunque sempre che valga la relazione k = t∗ /m. Con questa assunzione, useremo anche le notazioni tn,k = tn,m , y n,k = y n,m e en,k = en,m . 17.1. METODO DI EULERO 95 Teorema 8. Il metodo di Eulero `e convergente. Dimostrazione. Assumiamo f (e dunque y) analitica. Dalle uguaglianze y n+1,k = y n,k + kf (tn,k , y n,k ) (definizione del metodo) 2 y(tn+1,k ) = y(tn ) + kf (tn,k , y(tn )) + O(k ) (errore locale (17.2)) si ricava en+1,k = en,k + k[f (tn,k , y n ) − f (tn,k , y(tn,k )] + | {z } y n+1,k −Y n (f ,k,y(tn )) O(k 2 ) | {z } Y n (f ,k,y (tn,k ))−y(tn+1,k ) da cui, siccome f `e lipschitziana, ken+1,k k ≤ ken,k k + kkf (tn,k , y n,k ) − f (tn,k , y(tn,k )k + ck 2 ≤ ≤ (1 + kλ)ken,k k + ck 2 , c>0 Applicando l’analoga disuguaglianza a en,k si trova ken+1,k k ≤ (1 + kλ)2 ken−1,k k + ((1 + kλ) + 1)ck 2 e dunque ken,k k ≤ (1 + kλ)n ke0,k k + ((1 + kλ)n−1 + . . . + (1 + kλ) + 1)ck 2 = (1 + kλ)n − 1 2 = (1 + kλ)n ke0,k k + ck (1 + kλ) − 1 ∗ Poich´e 1 + kλ < ekλ , (1 + kλ)n < enkλ ≤ emkλ = et λ . Dunque ken,k k ≤ e t∗ λ ke0,k k + et ∗λ −1 ck, λ 1≤n≤m Si assume generalmente che y 0,k = y(t0 ) e dunque ken,k k ≤ et ∗λ −1 ck, λ 0≤n≤m da cui lim max ken,k k = 0 k→0+ 0≤n≤m In particolare, l’errore globale tende a 0 come k, come ci si aspettava. Da notare che l’errore globale dipende anche dall’intervallo di tempo t∗ (anche se la stima ottenuta `e molto pessimistica, generalmente l’errore globale cresce linearmente con l’ampiezza dell’intervallo di tempo). 96 17.2 CAPITOLO 17. METODI AD UN PASSO Metodo dei trapezi Il metodo dei trapezi (o metodo di Crank–Nicolson) si basa sull’approssimazione y(t) − y(t0 ) y ′ (t) ≈ t − t0 1 f (t, y(t)) ≈ (f (t0 , y(t0 )) + f (t, y(t))) 2 Pu`o essere visto anche come applicazione della formula di quadratura del trapezio alla soluzione analitica Z t y(t) = y(t0 ) + f (τ, y(τ ))dτ t0 Data la sequenza t0 , t1 = t0 + k, t2 = t0 + 2k, . . . , tn = t0 + nk, . . ., lo schema numerico che ne risulta `e k y n+1 = y n + (f (tn , y n ) + f (tn+1 , y n+1 )), n ≥ 0, (17.3) 2 y 0 = y(t0 ) ove y n ≈ y(tn ). Indicato con y n+1 = Y n (f , k, y n , y n+1 ) un generico metodo di questo tipo, l’errore locale si ottiene calcolando y(tn+1 ) − Y n (f , k, y(tn ), y(tn+1 )) = k = y(tn+1 ) − y(tn ) − (f (tn , y(tn )) + f (tn+1 , y(tn+1 ))) = 2 2 k k3 k = y(tn )+ky ′ (tn )+ y ′′ (tn )+ y ′′′ (tn )+O(k 4 )−y(tn )− (y ′ (tn )+y ′ (tn+1 )) = 2 6 2 2 3 k k = ky ′ (tn ) + y ′′ (tn ) + y ′′′ (tn ) + O(k 4 )+ 2 6 k k 2 ′′′ ′ ′ ′′ 3 − y (tn ) + y (tn ) + ky (tn ) + y (tn ) + O(k ) = O(k 3 ) 2 2 (supponendo y ∈ C 3 ). Dunque il metodo dei trapezi `e di ordine 2. Rimandiamo la dimostrazione della convergenza del metodo al paragrafo successivo. In Figura 17.1 si vede chiaramente che l’errore (per l’equazione del pendolo linearizzata) decade come k 2 ∝ m−2 e che lo stesso cresce linearmente con l’intervallo di tempo. Entrambi i metodi descritti sono ad un passo (cio`e la soluzione y n+1 dipende esplicitamente solo da y n ). Il metodo dei trapezi `e per`o implicito, cio`e la soluzione y n+1 `e implicitamente definita dall’equazione (in generale non lineare) k k Fn (y n+1 ) = y n+1 − f (tn+1 , y n+1 ) − y n − f (tn , y n ) = 0 2 2 17.3. THETA-METODO 97 100 pendoloperiod.m 10−1 m 10−2 error in infinity norm 4 periodi 3 periodi 10 −3 2 periodi 1 periodo 10−4 m−2 10−5 10−6 200 400 600 800 m Figura 17.1: Errori del metodo dei trapezi per l’equazione del pendolo linearizzata. 17.3 θ-metodo Il θ-metodo `e una generalizzazione dei metodi precedenti e si scrive y n+1 = y n + k[(1 − θ)f (tn , y n ) + θf (tn+1 , y n+1 )], y 0 = y(t0 ) n≥0 (17.4) ` facile verificare che E y(tn+1 ) − Y n (f , k, y(tn ), y(tn+1 )) = = y(tn+1 ) − y(tn ) − k[(1 − θ)f (tn , y(tn )) + θf (tn+1 , y(tn+1 ))] = 1 θ 1 2 ′′ k 3 y ′′′ (tn ) + O(k 4 ) (17.5) − θ k y (tn ) + − = 2 6 2 e dunque il metodo ha ordine due se θ = 21 , e ordine uno altrimenti. In particolare, se y ′′ (t) `e nulla, tale `e l’errore locale per il θ-metodo. E se θ = 12 e y ′′′ (t) `e nulla, tale `e l’errore locale. Si assume θ ∈ [0, 1]. Qual `e il significato dell’errore locale per un metodo implicito? Possiamo considerare il problema differenziale ( y ∗ ′ (t) = f (t, y ∗ (t)), t > tn y ∗ (tn ) = y(tn ) 98 CAPITOLO 17. METODI AD UN PASSO ed approssimare y ∗ (tn+1 ) mediante un passo del θ-metodo. Si ha y ∗n+1 = Y n (f , k, y(tn ), y ∗n+1 ) = y(tn ) + k[(1 − θ)f (tn , y(tn )) + θf (tn+1 , y ∗n+1 )] da cui (usando (17.5)) y(tn+1 ) − y ∗n+1 = kθ[f (tn+1 , y(tn+1 )) − f (tn+1 , y ∗n+1 )]+ 1 θ 1 2 ′′ − θ k y (tn ) + − k 3 y ′′′ (tn ) + O(k 4 ) + 2 6 2 Per il metodo di Eulero (θ = 0), y ∗n+1 = Y n (f , k, y(tn )) e dunque y(tn+1 ) − y ∗n+1 `e l’errore locale per definizione. Altrimenti, posto e∗n+1 = y(tn+1 ) − y ∗n+1 , si ha 1 1 θ ∗ ∗ 2 ken+1 k ≤ kθλken+1 k + − θ ck + − dk 3 2 6 2 Dunque, se 0 < ε < 1 − kθλ (cio`e k `e sufficientemente piccolo), a meno di rinominare le costanti c e d 1 1 θ ∗ 2 ken+1 k ≤ − θ ck + − dk 3 = 2 6 2 = y(tn+1 ) − Y n (f , k, y(tn ), y(tn+1 )) Quindi, anche per uno schema implicito, l’errore locale `e dello stesso ordine della differenza tra la soluzione esatta al tempo tn+1 e la soluzione che si otterrebbe applicando il metodo numerico e supponendo esatta la soluzione al tempo tn . Per questo motivo, con un abuso di linguaggio, spesso si identificano le due cose. Per dimostrare che il θ-metodo converge, introduciamo la seguente funzione (definita implicitamente per θ 6= 0) ψ(t, y) = (1 − θ)f (t, y) + θf (t + k, y + kψ(t, y)) Osserviamo che y n + kψ(tn , y n ) = y n + k[(1 − θ)f (tn , y n ) + θf (tn + k, y n + kψ(tn , y n ))] | {z } | {z } da cui y n + kψ(tn , y n ) = y n+1 Analogamente, y(tn ) + kψ(tn , y(tn )) = y ∗n+1 17.3. THETA-METODO 99 Osserviamo infine che kψ(t, x) − ψ(t, y)k = k(1 − θ)f (t, x) + θf (t + k, x + kψ(t, x))+ − (1 − θ)f (t, y) − θf (t + k, y + kψ(t, y))k ≤ ≤ (1 − θ)λkx − yk + θλkx + kψ(t, x) − y − kψ(t, y)k ≤ ≤ (1 − θ)λkx − yk + θλkx − yk + kθλkψ(t, x) − ψ(t, y)k da cui, se 0 < 1 − kθλ (cio`e k sufficientemente piccolo), kψ(t, x) − ψ(t, y)k ≤ λ kx − yk = Λkx − yk 1 − kθλ Quindi ψ(t, y) `e uniformemente lipshitziana nel secondo argomento. Teorema 9. Il θ-metodo `e convergente. Dimostrazione. Si ha ken+1 k = ky n+1 − y(tn+1 )k = k(y n+1 − y ∗n+1 ) + (y ∗n+1 − y(tn+1 ))k ≤ ≤ ky n+1 − y ∗n+1 k + ky ∗n+1 − y(tn+1 )k ≤ 1 θ 1 2 − θ ck + − dk 3 ≤ ≤ ken k + kkψ(tn , y n ) − ψ(tn , y(tn ))k + 2 6 2 1 1 θ ≤ (1 + kΛ)ken k + dk 3 − θ ck 2 + − 2 6 2 Si conclude adesso esattamente come nel caso del metodo di Eulero. Quindi il θ-metodo `e convergente con ordine uno se θ 6= 12 e ordine due altrimenti. Osserviamo che: • il metodo per θ = 1 si chiama Eulero implicito (backward Euler); • per θ = 13 il metodo `e di ordine uno, ma il termine contenente la derivata terza della soluzione `e annullato. 17.3.1 Risoluzione di un metodo implicito Nel caso implicito (θ 6= 0), ad ogni passo n si deve risolvere un sistema di equazioni in generale non lineari Fn (x) = 0, x = y n+1 , ove Fn (x) = x − kθf (tn+1 , x) − y n − k(1 − θ)f (tn , y n ) La prima idea potrebbe essere quella di applicare il metodo di punto fisso: x(r+1) = g(x(r) ) = kθf (tn+1 , x(r) ) + y n + k(1 − θ)f (tn , y n ) 100 CAPITOLO 17. METODI AD UN PASSO La funzione g soddisfa kg(x) − g(y)k = kkθf (tn+1 , x) − kθf (tn+1 , y)k ≤ kθλkx − yk ed `e una contrazione se 1 (17.6) θλ Dunque, a patto di prendere k sufficientemente piccolo, si pu`o ricavare la soluzione x = y n+1 con il metodo del punto fisso, partendo, per esempio, da x(0) = y n . Il metodo del punto fisso, facile da applicare, ha convergenza lineare ed `e inoltre soggetto ad una restrizione sul passo k che potrebbe essere eccessiva. Per questi motivi `e utile considerare anche il metodo di Newton per la risoluzione del sistema non lineare. La matrice jacobiana associata `e ∂fi (tn+1 , x) Jn (x) = I − kθ ∂xj ij kθλ < 1 ⇒ k < Il calcolo di y n+1 , con y n come valore iniziale, con il metodo di Newton avviene dunque secondo il seguente algoritmo: • r=0 • x(r) = y n • Jn (x(r) )δ (r) = −Fn (x(r) ) • while kδ (r) k > Newt tol x(r+1) = x(r) + δ (r) r =r+1 Jn (x(r) )δ (r) = −Fn (x(r) ) end • y n+1 = x(r) In Matlab/Octave l’implementazione potrebbe essere: f = @(t,y) ... % rhs dell’equazione j = @(t,y) ... % jacobiano di f F = @(tn,yn,t,y) y - k * theta * f(t,y) - yn - k * (1 - theta) * f(tn,yn) J = @(t,y) eye(length(y)) - k * theta * j(t,y) y(:,1) = y0; t = 0; 17.3. THETA-METODO for n = 1:ts y(:,n+1) = y(:,n); errest = -J(t + k,y(:,n + while (norm(errest,inf) > y(:,n + 1) = y(:,n + 1) errest = -J(t + k,y(:,n end t = t + k; end 101 1)) \ F(t,y(:,n),t + k,y(:,n + 1)); Newt_tol) + errest; + 1)) \ F(t,y(:,n),t + k,y(:,n + 1)); La tolleranza Newt tol va presa tenendo conto che si sta comunque commettendo un errore proporzionale a k 2 (trapezi) o addirittura k. Come valore iniziale x(0) , invece di y n si pu`o prendere y n + kf (tn , y n ), che corrisponde a y(tn+1 ) approssimato con il metodo di Eulero e dunque dovrebbe essere un’approssimazione migliore di y n+1 (ma si veda il capitolo 20). Anche altre scelte possono andare bene, a patto di avere convergenza del metodo. 17.3.2 Newton inesatto e passo variabile Nel caso in cui il calcolo e/o la risoluzione dei sistemi lineari con Jn (x(r) ) risulti particolarmente oneroso, si pu`o ricorrere al metodo di Newton inesatto, considerando ad ogni passo la matrice jacobiana costante Jn (x(r) ) ≡ Jn (x(0) ), o, in generale, qualunque modifica della matrice jacobiana. A questo punto, la si pu`o fattorizzare in LU una sola volta per passo temporale e poi risolvere i sistemi con le corrispondenti matrici triangolari. Il metodo di Newton inesatto converge generalmente in maniera lineare e dunque serviranno pi` u iterazioni (ma meno costose) rispetto al metodo di Newton esatto. Per inciso, questo `e il sintomo principale di una matrice jacobiana non corretta. Il numero di iterazioni necessarie alla convergenza dipende (anche) dalla vicinanza della soluzione iniziale x(0) = y n a quella finale y n+1 . Tanto pi` u sono vicine, tante meno iterazioni serviranno, e viceversa. Se in un certo intervallo di tempo la soluzione non varia molto, allora `e plausibile pensare di prendere i successivi passi temporali pi` u grandi. Viceversa, se varia molto, pu`o essere necessario prendere i successivi passi temporali pi` u piccoli. La velocit`a di convergenza del metodo di Newton inesatto `e un indicatore della variazione della soluzione. Il metodo di Newton inesatto a passo variabile potrebbe essere implementato nel seguente modo (θ 6= 0): • r=0 • x(r) = y n • Fn (x(r) ) = x(r) − kn+1 θf (tn+1 , x(r) ) − y n − kn+1 (1 − θ)f (tn , y n ) 102 CAPITOLO 17. METODI AD UN PASSO (r) • Jn (x ) = I − kn+1 θ • Pn Jn (x(r) ) = Ln Un ∂fi (tn+1 ,x(r) ) ∂xj ij • Ln Un δ (r) = −Pn Fn (x(r) ) • while kδ (r) k > Newt tol x(r+1) = x(r) + δ (r) r =r+1 Ln Un δ (r) = −Pn Fn (x(r) ) end • y n+1 = x(r) • if r < rmin then kn+2 = kn+1 ρ else if r > rmax then kn+2 = kn+1 /ρ Dunque, dato il passo temporale kn+1 = tn+1 − tn , il successivo passo temporale kn+2 `e uguale a kn+1 se il metodo di Newton inesatto ha raggiunto la convergenza in un numero di iterazioni r compreso tra rmin e rmax , `e amplificato da un fattore ρ > 1 se il numero di iterazioni `e stato pi` u piccolo di rmin ed `e ridotto dello stesso fattore se il numero di iterazioni `e stato pi` u grande di rmax (ove rmax > rmin ). Ovviamente i valori di ρ, rmin e rmax dipendono dal problema. Bisognerebbe prevedere anche un numero massimo di iterazioni R dentro il ciclo while del metodo di Newton: raggiunto tale numero, il passo corrente kn+1 andrebbe ridotto (per esempio a kn+1 /δ e si dovrebbe procedere nuovamente al calcolo di y n+1 . Nel caso in cui non sia necessario applicare il metodo di Newton (perch´e il problema `e lineare), il numero di iterazioni da considerare potrebbe essere quello necessario ad un metodo iterativo per risolvere i sistemi lineari. 17.3.3 Caso lineare Un caso molto frequente `e quello lineare autonomo a coefficienti costanti ( y ′ (t) = Ay(t) + b y(t0 ) = y 0 con passo di integrazione k costante. In tal caso, il metodo si scrive (I − kθA)y n+1 = (I + k(1 − θ)A)y n + kb 17.4. VERIFICA DELL’IMPLEMENTAZIONE 103 Nel caso implicito, si tratta dunque di risolvere un sistema lineare (non `e necessario quindi il metodo di Newton) di matrice I − kθA ad ogni passo. Pertanto, per problemi di piccola dimensione, `e conveniente precalcolare la fattorizzazione LU della matrice. Altrimenti, si pu`o considerare un metodo thetamlin.m iterativo, ove si scelga come vettore iniziale per il calcolo di y n+1 la soluzione al passo precedente y n . Se il termine b dipende invece dal tempo, allora kb va sostituito, ovviamente, con k(1 − θ)b(tn ) + kθb(tn+1 ). 17.4 Verifica della correttezza dell’implementazione Supponiamo di aver implementato un metodo di ordine p per la soluzione del sistema differenziale ( y ′ (t) = f (t, y(t)) y(t0 ) = y 0 e di volerne testare la corretta implementazione. L’idea `e quella di creare una soluzione artificiale x(t), inserirla nell’equazione e calcolarne il residuo x′ (t) − f (t, x(t)) = g(t) A questo punto, si risolve il sistema differenziale ( y ′ (t) = f (t, y(t)) + g(t) = fˆ (t, y(t)) y(t0 ) = x(t0 ) fino ad un tempo t0 + t∗ fissato, con due discretizzazioni di passo costante k1 = t∗ /m1 e k2 = t∗ /m2 , rispettivamente. Si avranno errori finali em1 ,k1 = ky m1 ,k1 − x(t0 + t∗ )k = Ck1p e em2 ,k2 = ky m2 ,k2 − x(t0 + t∗ )k = Ck2p . Si ha dunque p em2 ,k2 k2 = , em1 ,k1 k1 da cui log em2 ,k2 − log em1 ,k1 = p(log k2 − log k1 ) = −p(log m2 − log m1 ). Dunque, rappresentando in un grafico logaritmico-logaritmico l’errore in dipendenza dal numero di passi, la pendenza della retta corrisponde all’ordine del metodo, cambiato di segno. Tale verifica `e valida anche nel caso di passi non costanti. 104 CAPITOLO 17. METODI AD UN PASSO Nel caso f (t, y(t)) sia particolarmente complicato, invece di calcolare il residuo, si pu`o calcolare una soluzione di riferimento y m, ¯ e poi confrontare ¯ k con essa le soluzioni y m1 ,k1 e y m2 ,k2 , ove m1 , m2 ≪ m. ¯ In questo caso, per`o, si pu`o mostrare solo che il metodo converge con l’ordine giusto ad una soluzione, non necessariamente quella giusta. Capitolo 18 Metodi multistep 18.1 Metodi di Adams–Bashforth Invece di costruire la soluzione y n+1 a partire dalla sola soluzione al passo precedente y n , si pu`o pensare di usare le soluzioni di pi` u passi precedenti. Fissato s numero naturale maggiore di 0 e una discretizzazione dell’intervallo [t0 , t0 + t∗ ] in m passi di ampiezza costante k, data la formula di risoluzione Z tn+s y(tn+s ) = y(tn+s−1 ) + f (τ, y(τ ))dτ (18.1) tn+s−1 l’idea `e quella di sostituire la funzione integranda in (18.1) con il “suo” polinomio interpolatore sui nodi equispaziati tn , tn+1 , . . . , tn+s−1 (tn+j = tn + jk) s−1 X p(τ ) = Lj (τ )f (tn+j , y n+j ) j=0 ove Lj (t) `e il polinomio elementare di Lagrange di grado s − 1 definito da Lj (tn+i ) = δij . Poich´e p(tn+j ) = f (tn+j , y n+j ), 0 ≤ j ≤ s − 1 (e non, ovviamente, p(tn+j ) = f (tn+j , y(tn+j ))), dobbiamo supporre di avere gi`a a disposizione i valori iniziali y n+j ≈ y(tn+j ), 0 ≤ j ≤ s − 1. Si ha dunque Z tn+s p(τ )dτ = tn+s−1 s−1 Z X j=0 tn+s Lj (τ )dτ tn+s−1 f (tn+j , y n+j ) = k s−1 X bj f (tn+j , y n+j ) j=0 da cui il metodo esplicito multistep Adams–Bashforth y n+s = y n+s−1 + k s−1 X j=0 105 bj f (tn+j , y n+j ) (18.2) 106 CAPITOLO 18. METODI MULTISTEP I coefficienti bj non dipendono da n e neanche da k: infatti 1 bj = k = Z 0 Z s−1 tn+s Y tn+s−1 i=0 i6=j s−1 1Y i=0 i6=j τ − tn+i dτ = tn+j − tn+i Z 0 ((s − 1 − i)k + rk) dr = (j − i)k s−1 1Y i=0 i6=j Z 0 tn+s−1 + rk − tn+i dr = tn+j − tn+i s−1 1Y (s − 1 − i + r) dr (j − i) i=0 i6=j Dunque possono essere calcolati una volta per tutte. Calcoliamo l’ordine di tale metodo: come al solito, dobbiamo valutare l’espressione y(tn+s ) − y(tn+s−1 ) − k s−1 X bj f (tn+j , y(tn+j )) j=0 L’ultimo termine `e l’integrale del polinomio q(τ ) di grado s − 1 che interpola f (tn+j , y(tn+j )), 0 ≤ j ≤ s − 1. Dunque, per tn+s−1 ≤ τ ≤ tn+s , kf (τ, y(τ )) − q(τ )k ≤ ky (s+1) (¯ τ )k |(τ − tn ) · . . . · (τ − tn+s−1 )| ≤ | {z } s! s termini ≤ ky (s+1) (¯ τ )k s! s!k s = O(k s ), tn+s−1 ≤ τ ≤ tn+s e quindi y(tn+s ) − y(tn+s−1 ) − k Z tn+s tn+s−1 s−1 X bj f (tn+j , y(tn+j )) = j=0 f (τ, y(τ ))dτ − k Z tn+s tn+s−1 s−1 X bj f (tn+j , y(tn+j )) = j=0 f (τ, y(τ ))dτ − Z tn+s tn+s−1 q(τ )dτ = O(k s+1 ) perch´e un ulteriore fattore k deriva dal fatto che si integra in un intervallo di ampiezza k. Quindi, se anche y n = y(tn ) + O(k s ), 0 ≤ n ≤ s − 1 (queste approssimazioni non possono essere ottenute con il metodo stesso), il metodo `e di ordine s. Calcoliamo esplicitamente i metodi che corrispondono a s = 1 e s = 2. Se s = 1, dobbiamo cercare il polinomio di grado 0 che interpola ` ovviamente p(τ ) ≡ f (tn , y n ) e b0 = 1, quindi f (tn , y n ). E y n+1 = y n + kf (tn , y n ) 18.2. METODI LINEARI MULTISTEP 107 e si ritrova il metodo di Eulero. Nel caso s = 2, il polinomio interpolatore `e p(τ ) = tn+1 − τ τ − tn f (tn , y n ) + f (tn+1 , y n+1 ) k k e dunque 1 b0 = k Z tn+2 tn+1 tn+1 − τ 1 dτ = − , k 2 1 b1 = k Z tn+2 tn+1 τ − tn 3 dτ = k 2 da cui 3k k (18.3) y n+2 = y n+1 − f (tn , y n ) + f (tn+1 , y n+1 ) 2 2 Il valore y 1 pu`o essere ricavato, per esempio, anche con il metodo di Eulero, poich´e si ha, in tal caso, y 1 = y(t1 ) + O(k 2 ). 18.2 Metodi lineari multistep Una semplice generalizzazione del metodo di Adams–Bashforth `e permettere che il metodo sia implicito: y n+s = y n+s−1 + k s X bj f (tn+j , y n+j ) (18.4) j=0 Il caso banale s = 0 d`a y n = y n−1 + kb0 f (tn , y n ) da cui, per b0 = 1, si ottiene una riscrittura del metodo di Eulero implicito. Per s = 1 abbiamo il θ-metodo (b0 = (1 − θ), b1 = θ). Il metodo (18.4) ha ordine massimo s + 1. In tal caso si chiama metodo Adams–Moulton. Una generalizzazione ulteriore `e s X aj y n+j = k j=0 s X bj f (tn+j , y n+j ) (18.5) j=0 con la normalizzazione as = 1. Il metodo `e di ordine p se, come al solito, y n = y(tn ) + O(k p ) e s X j=0 aj y(tn+j ) − k s X j=0 bj f (tn+j , y(tn+j )) = O(k p+1 ) per ogni funzione f analitica e 0 ≤ n ≤ m − s. Siccome la verifica pu`o risultare molto tediosa, risulta utile il seguente 108 CAPITOLO 18. METODI MULTISTEP Teorema 10. Dato un metodo multistep (18.5), definiamo i due polinomi ρ(w) = s X j aj w , σ(w) = j=0 s X bj w j j=0 Allora il metodo `e di ordine p se e solo se esiste c 6= 0 tale che ρ(1 + ξ) − σ(1 + ξ) · ln(1 + ξ) = cξ p+1 + O ξ p+2 per ξ → 0 Prima di vedere la traccia della dimostrazione, proviamo ad applicare il teorema a qualche caso noto. Per il metodo di Eulero si ha ρ(1 + ξ) = ξ e σ(1 + ξ) = 1. Si ha ξ2 ξ−1· ξ− + O(ξ 3 ) 2 = ξ2 + O(ξ 3 ) 2 e dunque il metodo `e di ordine 1, come noto. Per il metodo di Adams– Bashforth (18.3) si ha ρ(1 + ξ) = (1 + ξ)2 − (1 + ξ) = ξ 2 + ξ e σ(1 + ξ) = 3(1 + ξ)/2 − 1/2. Si ha 2 (ξ + ξ) − 1 3 (1 + ξ) − 2 2 5 ξ2 ξ3 4 + − O(ξ ) = ξ 3 + O(ξ 4 ) · ξ− 2 3 12 e dunque il metodo `e di ordine 2, come noto. Traccia della dimostrazione del Teorema 10. Si ha s X j=0 aj y(tn+j ) − k s X bj f (tn+j , y(tn+j )) = j=0 s X aj y(tn + jk) − k s X j=0 ∞ X s X bj y ′ (tn + jk) = j=0 s X ∞ X j iki j iki = aj −k = y (tn ) bj y (i+1) (tn ) i! i! j=0 i=0 j=0 i=0 ! ∞ s ∞ s i i X X X X j k j i−1 k i−1 (i) y (tn ) = aj y(tn ) + y (i) (tn ) −k bj = i! (i − 1)! i=1 j=0 i=1 j=0 ! ! s s s ∞ X X X1 X j i aj − i j i−1 bj k i y (i) (tn ) aj y(tn ) + = i! j=0 j=0 j=0 i=1 (i) 18.2. METODI LINEARI MULTISTEP 109 Dunque l’ordine `e p se e solo se i coefficienti delle potenze fino a p di k sono s nulli, e cio`e se le 2s + 1 incognite {aj }s−1 j=0 e {bj }j=0 soddisfano il sistema lineare s s X X i j aj = i j i−1 bj , i = 0, 1, . . . , p (18.6) j=0 j=0 Da notare che, per i = j = 0, si intende j i = 1. Per finire la dimostrazione, si calcola lo sviluppo in serie di Taylor di ρ(ez ) − σ(ez )z per z → 0 e si osserva che esso `e O(z p+1 ) se e solo se vale (18.6). Posto w = ez , l’ordine `e p se e solo se lo sviluppo di ρ(w) − σ(w) · ln w per w → 1 vale −c(ln w)p+1 + O (ln w)p+2 = c(w − 1)p+1 + O (w − 1)p+2 A questo punto, si pone ξ = w − 1. Non bisogna dimenticare che l’ordine `e p se y(t) `e almeno di classe C p+1 . Pertanto, qualora ci si aspetti una soluzione non regolare, potrebbe non essere adatto un metodo di ordine alto. In realt`a, anche le condizioni (18.6) sono molto utili per determinare l’ordine di un metodo multistep: per esempio, per il metodo lineare multistep (implicito) a due passi y n+2 − 3y n+1 + 2y n = k −5f (tn , y n ) − 20f (tn+1 , y n+1 ) + 13f (tn+2 , y n+2 ) (18.7) = 12 si ha 18.2.1 a0 + a1 + a2 a1 + 2a2 a1 + 4a2 a1 + 8a2 =0 = b0 + b1 + b2 ⇒ ordine (almeno) 1 = 2(b1 + 2b2 ) ⇒ ordine (almeno) 2 6= 3(b1 + 4b2 ) ⇒ ordine 2 Metodi BDF I metodi BDF (Backward Differentiation Formulas) sono metodi multistep impliciti a s passi, di ordine s e con σ(w) = βws . Dato σ(w) e le condizioni d’ordine, si pu`o costruire ρ(w). Poich´e per`o tali metodi sono della forma s X aj y n+j = kbs f (tn+s , y n+s ) j=0 e kbs f (tn+s , y n+s ) ≈ kbs y ′ (tn + sk), conviene cercare una combinazione lineare di y n+j , 0 ≤ j ≤ s che approssimi kbs y ′ (tn+s ). Si procede dunque con 110 CAPITOLO 18. METODI MULTISTEP lo sviluppo in serie di Taylor di y(tn + jk), 0 ≤ j ≤ s, centrato in y(tn + sk). Per esempio, per s = 1, ( y(tn ) = y(tn + k) − ky ′ (tn + k) + O(k 2 ) y(tn + k) = y(tn + k) da cui a1 = 1 e a0 = −1. Dunque, il metodo BDF di ordine 1 `e il metodo di Eulero implicito (backward Euler). Per s = 2 4k 2 ′′ ′ y(t ) = y(t + 2k) − 2ky (t + 2k) + y (tn + 2k) + O(k 3 ) n n n 2 k 2 ′′ ′ y(t + k) = y(t + 2k) − ky (t + 2k) + y (tn + 2k) + O(k 3 ) n n n 2 y(tn + 2k) = y(tn + 2k) da cui 1 a0 = a2 = 1 3 a = −4 a0 + a1 + a2 = 0 1 3 (18.8) − 2a0 − a1 = b2 ⇒ a2 = 1 2a0 + a1 = 0 2 2 b2 = 3 e il metodo `e di ordine 2. In generale, un metodo BDF a s passi pu`o essere scritto nella forma s X 1 j=1 j ∇j y n+s = kf (tn+s , y n+s ) ove ∇0 y n+s = y n+s e ∇j y n+s = ∇j−1 y n+s − ∇j−1 y n+s−1 . In questo modo per`o as 6= 1 per s > 1. I metodi BDF sono gli unici metodi multistep in cui non `e difficile calcolare i coefficienti anche nel caso di passi temporali variabili. Sempre per s = 2, se tn+1 = tn + kn+1 e tn+2 = tn+1 + kn+2 , allora y(tn ) = y(tn + kn+1 + kn+2 ) − (kn+1 + kn+2 )y ′ (tn + kn+1 + kn+2 )+ (kn+1 + kn+2 )2 ′′ + y (tn + kn+1 + kn+2 ) + . . . 2 y(tn + kn+1 ) = y(tn + kn+1 + kn+2 ) − kn+2 y ′ (tn + kn+1 + kn+2 )+ 2 kn+2 y ′′ (tn + kn+1 + kn+2 ) + . . . + 2 y(tn + kn+1 + kn+2 ) = y(tn + kn+1 + kn+2 ) ` 18.3. CONSISTENZA E STABILITA 111 da cui i coefficienti a2 = 1 a0 + a1 + a2 = 0 − a0 (kn+1 + kn+2 ) − a1 kn+2 = b2 kn+2 a 0 (kn+1 + kn+2 )2 + a1 k 2 = 0 2 2 n+2 2 kn+2 a = 0 (kn+1 + 2kn+2 )kn+1 2 a = − (kn+1 + kn+2 ) 1 (kn+1 + 2kn+2 )kn+1 ⇒ a2 = 1 (kn+1 + kn+2 ) b2 = (kn+1 + 2kn+2 ) Va notato per`o che √ il metodo che ne risulta in generale non converge se kn+2 /kn+1 ≥ 1 + 2. E rimane aperto poi il problema di scegliere come cambiare il passo (vedi per`o il paragrafo 17.3.2). Questi metodi risultano particolarmente vantaggiosi quando la valutazione della funzione f `e onerosa, poich´e permettono di raggiungere un ordine elevato con una sola valutazione (nel caso lineare, altrimenti `e necessario valutare f in un ciclo di Newton ad ogni passo temporale). 18.3 Consistenza e stabilit` a Dalle condizioni d’ordine (18.6), si vede che un metodo lineare multistep `e consistente se ρ(1) = 0, ρ′ (1) = σ(1) La consistenza `e una condizione necessaria per la convergenza: infatti, se consideriamo il semplice problema differenziale ( y ′ (t) = 0, t ∈ (0, t∗ ] (18.9) y(0) = y0 una soluzione numerica al passo n = m − s, k = t∗ /m soddisfa a0 ym−s,m + a1 ym−s+1,m + . . . + as ym,m = 0 Se il metodo `e convergente, ym−s+j,m → y(t∗ ), 0 ≤ j ≤ s, per m → ∞ e dunque 0 = a0 ym−s,m +a1 ym−s+1,m +. . .+as ym,m → (a0 +a1 +. . .+as )y(t∗ ) = ρ(1)y(t∗ ) da cui ρ(1) = 0. Lo stesso metodo applicato invece a ( y ′ (t) = 1, t ∈ (0, t∗ ] y(0) = 0 112 CAPITOLO 18. METODI MULTISTEP ammette una soluzione numerica del tipo yn,m = nkα = tn,m α. Infatti, da α(a0 nk + a1 (n + 1)k + . . . + as (n + s)k) = k(b0 + b1 + . . . + bs ) si ricava α[n(a0 + a1 + . . . + as ) + (a1 + 2a2 + . . . + sas )] = α[nρ(1) + ρ′ (1)] = σ(1) Se il metodo `e convergente, allora ρ(1) = 0 e dunque α = σ(1)/ρ′ (1). Siccome la soluzione analitica `e y(t) = t, ym,m → tm,m = t∗ , per m → ∞ e dunque α = 1. La consistenza, per`o, non `e sufficiente ad assicurare la convergenza di un metodo. Consideriamo l’applicazione del metodo a due passi del secondo ordine (18.7) al problema differenziale (18.9) la cui soluzione `e evidentemente y(t) ≡ y0 . Si ha yn+2 − 3yn+1 + 2yn = 0 Prendiamo y1 = y0 + O(k 2 ) = y0 + ck 2 (valore iniziale lecito per un metodo multistep a due passi di ordine due). Allora, y2 = 3y0 +3ck 2 −2y0 = y0 +c3k 2 . Si ha poi y3 = y0 + c7k 2 . In generale, si ha yn = y0 + c(2n − 1)k 2 Dunque, se il numero di passi `e m = t∗ /k, si ha ∗ m y(t ) ≈ ym = y0 + c(2 − 1) t∗ m 2 e facendo tendere m → ∞ (o, equivalentemente, k → 0), si ha ym → ∞. Abbiamo quindi un metodo la cui soluzione numerica diverge facendo tendere il passo temporale a 0 (cio`e proprio l’opposto di quanto dovrebbe succedere). ` proprio un piccolo errore commesso ad un passo (in questo caso al solo E passo y1 ) che si accumula in maniera distruttiva. Per il problema (18.9) consideriamo un metodo ad s passi di ordine p i cui primi valori siano zj = y0 + cθj k p , 0≤j ≤s−1 ove θ `e una radice del polinomio ρ(w) (che d’ora in poi chiameremo caratteristico). Sono valori accettabili, anche per j = 0, in quanto distano O(k p ) dalla soluzione analitica. Ora zs si trova risolvendo s X j=0 aj z j = 0 ` 18.3. CONSISTENZA E STABILITA 113 da cui zs = − ove si `e usato P j s−1 X j=0 aj zj = −y0 s−1 X j=0 aj − ck p s−1 X aj θj = y0 + cθs k p j=0 aj = 0 e ρ(θ) = 0. Per induzione si arriva a provare che zn,k = zn = y0 + cθn k p `e una soluzione di (18.9), con zn,k − y(tn ) = zn,k − y0 = cθn k p . Dunque il metodo `e consistente ma, se vogliamo che si abbia limm→∞ zm,k = limm→∞ zm,t∗ /m = y(t∗ ) = y0 occorre che |θ| ≤ 1. Se θ `e radice multipla di ρ(w), allora `e radice anche di ρ′ (w) e pertanto soddisfa anche ′ ρ (θ) = s X aj jθj−1 = 0 j=0 Allora anche zn,k = zn = y0 + cnθn k p `e una soluzione numerica. Infatti s X j=0 aj zn+j = y0 s X aj + ck p θn j=0 p n s X aj nθj + θn+1 j=0 p n+1 ′ = 0 + ck θ nρ(θ) + ck θ ρ (θ) = 0 s X aj jθj−1 j=0 ! = ed `e generata dai valori iniziali zj = y0 + cjθj k p , 0 ≤ j ≤ s − 1. Se vogliamo che zn,k converga alla soluzione analitica per m → ∞, deve essere |θ| < 1. Se il polinomio caratteristico ha radici semplici θ tali che |θ| ≤ 1 e radici multiple θ tali che |θ| < 1, diremo che il polinomio soddisfa la condizione delle radici. Consideriamo adesso yn = y0 e zn = y0 + cθn k p , θ radice del polinomio caratteristico. Sono entrambe soluzioni consistenti del problema e le seconde sono state generate ammettendo delle perturbazioni δj = cθj k p per i primi s termini. Dunque |zj,k − yj,k | = |δj | ≤ max c|θ|j k p 0≤j≤s−1 mentre le soluzioni distano |zn,k − yn,k | = c|θ|n k p = |θ||zn−1,k − yn−1,k | e se |θ| > 1, tali differenze non sono limitate. Dunque, un insieme di perturbazioni limitate pu`o produrre un insieme di soluzioni non limitate. Allo 114 CAPITOLO 18. METODI MULTISTEP stesso modo, se si considerano le soluzioni yn = y0 e zn = y0 + cnθn k p , θ radice multipla del polinomio caratteristico, si ha |zj,k − yj,k | = |δj | ≤ max cj|θ|j k p 0≤j≤s−1 mentre |zn,k − yn,k | = cn|θ|n k p = |θ| n |zn−1,k − yn−1,k | n−1 ` giustificata allora (in analogia e quindi le soluzioni divergono se |θ| ≥ 1. E con quanto visto al paragrafo 11.2.7) la seguente Definizione 4. Dato un metodo lineare multistep (18.5), siano z in , i = 1, 2, due perturbazioni della soluzione definite da z ij = y j + δ ij , 0≤j ≤s−1 s s X X aj z in+j = k bj f (tn+j , z in+j ) + kδ in+s , 0 ≤ n ≤ m − s j=0 j=0 Se da maxn kδ 1n −δ 2n k ≤ ε segue maxn kz 1n −z 2n k ≤ Cε per k piccolo a piacere, allora il metodo (18.5) si dice (zero-)stabile. Oltre alla consistenza, l’altro ingrediente per avere la convergenza di un metodo `e proprio la stabilit`a. Infatti, posto, come al solito, y ∗n+s + s−1 X j=0 aj y(tn+j ) = k s−1 X bj f (tn+j , y(tn+j )) + kbs f (tn+s , y ∗n+s ) j=0 (e y ∗j = y(tj ), 0 ≤ j ≤ s − 1) l’errore al passo n + s pu`o essere espresso come en+s = y n+s − y(tn+s ) = (y n+s − y ∗n+s ) + (y ∗n+s − y(tn+s )) (18.10) ove il secondo termine `e dell’ordine dell’errore locale e il primo termine tiene conto dell’accumulazione degli errori ai passi precedenti, cio`e delle perturbazioni tra la soluzione esatta e la soluzione numerica ai passi precedenti. Guardando la rappresentazione dell’errore (18.10), si vede che il primo termine (y n+s − y ∗n+s ) `e la differenza tra due particolari soluzioni perturbate z 1n e z 2n corrispondenti a δ 1j = 0, 0 ≤ j ≤ m ` 18.3. CONSISTENZA E STABILITA 115 e δ 2j = y(tj ) − y j , δ 2n+s =− s−1 X bj f (tj+n , z 2j+n ) + j=s−n s−1 X 0≤j ≤s−1 bj f (tj+n , y(tj+n ))+ j=s−n s−1 1 X + aj z 2j+n − y(tj+n ) , k j=s−n δ 2n+s = − + 1 k s−1 X j=0 s−1 X j=0 bj f (tj+n , z 2j+n ) + s−1 X 0≤n≤s bj f (tj+n , y(tj+n ))+ j=0 aj z 2j+n − y(tj+n ) , s+1≤n≤m−s Dunque, perch´e un metodo sia convergente (cio`e l’errore tenda a zero con k), occorre che le perturbazioni della soluzione introdotte ad ogni passo da errori di approssimazione del metodo stesso rimangano limitate (ci`o non fa esplodere la prima parte di (18.10)) e che l’errore locale tenda a zero con k (ci`o fa andare a zero la seconda parte di (18.10)). Abbiamo visto che la condizione delle radici `e necessaria affinch´e perturbazioni limitate generino soluzioni limitate. In realt`a essa `e anche sufficiente. Si ha infatti il seguente teorema fondamentale: Teorema 11 (Equivalenza di Dahlquist). Un metodo lineare multistep con valori iniziali consistenti `e convergente se e solo se `e consistente e stabile (cio`e il suo polinomio caratteristico soddisfa la condizione delle radici). La grande portata di questo teorema `e che il risultato `e valido non solo per il problema modello (18.9). Inoltre, se i valori iniziali approssimano con ordine p le soluzioni analitiche, allora il metodo `e convergente con ordine p. La dimostrazione della sufficienza della consistenza e della condizione delle radici passa attraverso la riscrittura di un metodo multistep come un metodo ad un passo in uno spazio di dimensione maggiore. A quel punto, la dimostrazione procede essenzialmente come nel caso del θ-metodo, introducento una opportuna funzione ψ(t, y), lipschitziana con costante Λ. Si ottiene quindi kE n+1 k ≤ (1 + kΛ)kE n k + ck p+1 in cui il valore 1 deriva dal fatto che il metodo `e stabile. Dalla disuguaglianza sopra si ricava kE n k ≤ (1 + kΛ)n kE 0 k + (1 + kΛ)n − 1 p+1 ck (1 + kΛ) − 1 116 CAPITOLO 18. METODI MULTISTEP 1010 k = 0.125 k = 0.250 k = 0.500 k = 0.625 soluzione esatta msinstabile.m 108 106 104 102 1 0 1 2 3 4 5 t Figura 18.1: Applicazione del metodo (18.7) al problema differenziale y ′ (t) = y(t), y(0) = 1. Il vettore E 0 contiene tutte le differenze dei valori iniziali y j − y(tj ), j = 0, 1, . . . , s − 1 che, anche se non nulle, sono di ordine k p . L’importante `e che ∗ (1 + kΛ)n ≤ et Λ (mentre invece, per esempio, (2 + kΛ)m = 2m (1 + kΛ/2)m = ∗ ∗ 2m (1 + t∗ Λ/(2m))m = 2m [(1 + 1/(2m/(t∗ Λ)))2m/(t Λ) ]t Λ/2 → ∞ per m → ∞, cio`e k → 0). Ritornando al metodo (18.7), si ha che θ = 2 `e radice del polinomio caratteristico e pertanto, il metodo non `e stabile, come si vede anche in Figura 18.1 ove il metodo `e stato applicato al problema differenziale ( y ′ (t) = y(t), t ∈(0, 5] y(0) = 1 Come corollario al teorema precedente, abbiamo che ogni metodo ad un passo `e stabile (perch´e ρ(w) = w − 1) e che i metodi di Adams–Bashforth e Adams–Moulton sono stabili (perch´e ρ(w) = ws − ws−1 ). Esiste un limite superiore per l’ordine di un metodo a s passi, dato dal seguente Teorema 12 (Prima barriera di Dahlquist). Il massimo ordine per un metodo a s passi convergente `e 2⌊(s + 2)/2⌋ se implicito e s se esplicito. Per quanto riguarda i metodi BDF (speciali metodi impliciti) si ha che sono convergenti (cio`e sono stabili) solo per 1 ≤ s ≤ 6. 18.4. INFLUENZA DEGLI ERRORI DI ARROTONDAMENTO 18.4 117 Influenza degli errori di arrotondamento Abbiamo visto che la stabilit`a (assieme alla consistenza) assicura che perturbazioni del tipo kδ n+s , n ≥ 0, permettono ad un metodo di convergere. Tali perturbazioni si generano per approssimazione dei passi precedenti e, per esempio, quando si risolve un sistema (non)lineare per un metodo implicito e si chiede una tolleranza proporzionale a k p se il metodo `e di ordine p. Gli errori di arrotondamento sono per`o di ordine O(1) ed `e del tutto evidente che in aritmetica di macchina non si pu`o in generale pretendere di trovare la soluzione esatta. Vediamo esplicitamente il caso del metodo di Eulero: si avr`a ˜ n+1 = y˜ n + kf (tn , y˜ n ) + εn+1 y e dunque, definito ˜n = y ˜ n − y(tn ) e si ottiene k˜ en+1 k ≤ (1 + kλ)k˜ en k + ck 2 + kεn+1 k, c>0 da cui, per induzione, k˜ en k ≤ ck 2 + ε [(1 + kλ)n − 1] + (1 + kλ)n k˜ e0 k, kλ ove ε = max0≤n≤m kεn k e quindi ε ck ∗ t∗ λ + + et λ k˜ e0 k, k˜ en k ≤ (e − 1) λ kλ 0≤n≤m 0≤n≤m Anche se non `e detto che gli errori di arrotondamento si sommino ad ogni passo (potrebbero anche compensarsi in un certo qual modo), si vede che al tendere di k a 0 l’errore potrebbe esplodere. Pertanto esisterebbe un k ottimale (non eccessivamente piccolo) che minimizza l’errore globale del metodo quando implementato in aritmetica di macchina. Nel caso si usasse un metodo non stabile la situazione sarebbe ancora peggiore, come si vede in Tabella 18.1, ove il metodo (18.7) `e stato applicato al problema (18.9) avendo preso y0 = y1 = 1/3. Il problema nasce dal fatto che y2 = 3y1 − 2y0 , a causa degli errori di arrotondamento, non `e uguale a y1 e y0 . 118 CAPITOLO 18. METODI MULTISTEP y2 y3 y10 y20 y30 y40 y50 y60 y70 y80 y90 y100 3.333333333333334e-01 3.333333333333333e-01 3.333333333333051e-01 3.333333333042297e-01 3.333333035310111e-01 3.333028157552085e-01 3.020833333333335e-01 -3.166666666666666e+01 -3.276766666666667e+04 -3.355443166666666e+07 -3.435973836766667e+10 -3.518437208883166e+13 Tabella 18.1: Primi passi di risoluzione del problema test (18.9) con il metodo (18.7). Capitolo 19 Metodi di Runge–Kutta 19.1 Metodi di Runge–Kutta espliciti I metodi lineari multistep lasciano aperti alcuni problemi. Come calcolare i valori iniziali per i metodi di ordine elevato? Abbiamo visto che il massimo ordine per un metodo ad un passo convergente `e 2 se implicito (lo raggiunge ` possibile modificarlo e renderlo esplicito (e il solo metodo dei trapezi). E dunque di pi` u facile applicazione)? Si possono costruire metodi di ordine elevato e che permettano un passo temporale “adattabile” all’andamento della soluzione? Cominciamo a rispondere alla seconda domanda: una modifica abbastanza ovvia al metodo dei trapezi k y n+1 = y n + (f (tn , y n ) + f (tn+1 , y n+1 )) 2 per renderlo esplicito `e sostituire y n+1 con y n + kf (tn , y n ) cos`ı da avere k y n+1 = y n + (f (tn , y n ) + f (tn+1 , y n + kf (tn , y n )) 2 (19.1) Da un punto di vista “logico”, esso pu`o essere definito come ξ 1 = y n ≈ y(tn ) ξ 2 = y n + kf (tn , ξ 1 ) ≈ y(tn+1 ) k y n+1 = y n + (f (tn , ξ 1 ) + f (tn+1 , ξ 2 )) ≈ y(tn+1 ) 2 Un altro modo di rendere esplicito il metodo dei trapezi `e sostituire la media delle funzioni f con la funzione f valutata nel “punto medio” k k (19.2) y n+1 = y n + kf tn + , y n + f (tn , y n ) 2 2 119 120 CAPITOLO 19. METODI DI RUNGE-KUTTA cio`e ξ 1 = y n ≈ y(tn ) k k ξ 2 = y n + f (tn , ξ 1 ) ≈ y tn + 2 2 k y n+1 = y n + kf tn + , ξ 2 ≈ y(tn+1 ) 2 L’idea generale dei metodi espliciti di Runge–Kutta `e quella, come al solito, di sostituire l’integrale nella formula risolutiva y(tn+1 ) = y(tn ) + Z tn+1 f (τ, y(τ ))dτ tn con una formula di quadratura su nodi tn + cj k, 1 ≤ j ≤ ν nell’intervallo [tn , tn+1 ]. Si giunge quindi a y(tn+1 ) ≈ y(tn ) + k ν X bj f (tn + cj k, y(tn + cj k)) j=1 Si tratta ora di trovare delle approssimazioni ξ j di y(tn + cj k). Si procede iterativamente in questo modo y(tn ) ≈ y n = ξ 1 (⇒ c1 = 0) y(tn + c2 k) ≈ y n + c2 kf (tn , y n ) = y n + a2,1 kf (tn , ξ 1 ) = ξ 2 .. . i−1 X y(t + c k) ≈ y + k ai,j f (tn + cj k, ξ j ) = ξ i n i n j=1 .. . ν−1 X y(tn + cν k) ≈ y n + k aν,j f (tn + cj k, ξ j ) = ξ ν j=1 ν X y n+1 = y n + k bj f (tn + cj k, ξ j ) (19.3) j=1 ove i parametri cj , bj e ai,j sono da determinare in modo da ottenere l’ordine desiderato. Il numero ν indica il numero di stadi. I parametri cj , bj e ai,j si racchiudono di solito nel tableau di Butcher. Se ν = 1, ci si riconduce al 19.1. METODI DI RUNGE–KUTTA ESPLICITI 121 0 c2 c3 .. . (0) a2,1 a3,1 .. . a3,2 .. . ... cν−1 cν aν−1,1 aν,1 aν−1,2 aν,2 ... ... aν−1,ν−2 aν,ν−2 aν,ν−1 b1 b2 ... bν−2 bν−1 bν Tabella 19.1: Tableau di Butcher per metodi di Runge–Kutta espliciti. metodo di Eulero. Per ν = 2, l’ordine si ricava al solito modo y(tn+1 )−y(tn )−kb1 f (tn , y(tn ))−kb2 f (tn +c2 k, y(tn )+a2,1 kf (tn , y(tn ))) = k2 = y(tn ) + ky ′ (tn ) + y ′′ (tn ) + O(k 3 ) − y(tn ) − kb1 y ′ (tn )+ 2 ∂f ∂f ′ 2 (tn , y(tn ))c2 k + (tn , y(tn ))a2,1 ky (tn ) + O(k ) = −kb2 f (tn , y(tn )) + ∂t ∂y k2 = ky ′ (tn ) + y ′′ (tn ) + O(k 3 ) − kb1 y ′ (tn ) − kb2 y ′ (tn )+ 2 ∂f ∂f 2 ′ − kb2 (tn , y(tn ))c2 k − k a2,1 b2 (tn , y(tn ))y (tn ) = ∂t ∂y k 2 ′′ ′ = ky (tn ) + y (tn ) + O(k 3 ) − kb1 y ′ (tn ) − kb2 y ′ (tn )+ 2 ∂f ∂f 2 ′′ − kb2 (tn , y(tn ))c2 k − k a2,1 b2 y (tn ) − (tn , y(tn )) = ∂t ∂t 1 ′ 2 − a2,1 b2 y ′′ (tn )+ = k(1 − b1 − b2 )y (tn ) + k 2 ∂f − k 2 (b2 c2 − a2,1 b2 ) (tn , y(tn )) + O(k 3 ) ∂t Dunque l’ordine `e due se 0 1 0 0 1 2 1 1 2 1 2 1 2 0 2 3 1 2 3 1 4 3 4 Tabella 19.2: Metodi di Runge–Kutta espliciti di ordine 2. 122 CAPITOLO 19. METODI DI RUNGE-KUTTA b1 + b2 = 1 1 (19.4) a2,1 b2 = 2 b2 c2 = b2 a2,1 da cui, per esempio, i metodi di ordine due riportati in Tabella 19.2. I primi due corrispondono ai due metodi visti all’inizio del capitolo e si chiamano, rispettivamente, metodo di Heun e metodo di Eulero modificato. Da notare come non esista, tra le infinite soluzioni, una soluzione che annulla il termine O(k 3 ) (bisognerebbe scriverlo esplicitamente per verificarlo). Lo si pu`o verificare indirettamente, considerando l’equazione ( y ′ (t) = y(t) y(0) = 1 L’applicazione del metodo sopra porge ξ 1 = yn ξ2 = yn + ka2,1 yn y 2 n+1 = yn + kb1 ξ1 + kb2 ξ2 = yn + kb1 yn + kb2 yn + k b2 a2,1 yn da cui, usando le condizioni d’ordine, k2 yn 2 Sostituendo la soluzione analitica in questo schema, si ottiene yn+1 = yn + kyn + y(tn+1 ) − y(tn ) − ky(tn ) − k2 k2 y(tn ) = ek y(tn ) − y(tn ) − ky(tn ) − y(tn ) = 2 2 3 k = y(tn ) + O(k 4 ) 6 e pertanto l’ordine `e 2. Il punto cruciale del calcolo dell’ordine per ν = 2 `e l’uguaglianza tra d f (tn , y(tn )) = dt ∂f ∂f = y ′ (tn ) + k (tn , y(tn )) + k (tn , y(tn ))y ′ (tn ) ∂t ∂y y ′ (tn ) + ky ′′ (tn ) = y ′ (tn ) + k e f (tn + k, y(tn ) + kf (tn , y(tn ))) = f (tn , y(tn ))+ ∂f ∂f (tn , y(tn ))k + (tn , y(tn ))kf (tn , y(tn )) + O(k 2 ) = + ∂t ∂y ∂f ∂f = y ′ (tn ) + k (tn , y(tn )) + k (tn , y(tn ))y ′ (tn ) + O(k 2 ) ∂t ∂y 19.1. METODI DI RUNGE–KUTTA ESPLICITI 123 (a meno di O(k 2 )) in cui le derivate di ordine superiore di y (e quindi di f ) sono sostituite da funzioni di funzioni f . Per ogni ν > 1, il corrispondente sistema non lineare che si ottiene per la determinazione dell’ordine pu`o avere infinite soluzioni. Solitamente si impone l’ulteriore vincolo (non strettamente necessario) i−1 X ai,j = ci , 2≤i≤ν j=1 che forza ξ i ad essere un’approssimazione almeno del primo ordine di y n . Da notare che la condizione ν X bj = 1 j=1 `e necessaria per avere almeno ordine 1 (cio`e la consistenza). Per quanto riguarda la stabilit`a, si pu`o ripetere tutto il ragionamento fatto per il caso dei metodi multistep: si arriva ad osservare che il polinomio caratteristico `e ρ(w) = w − 1 e pertanto tutti i metodi di Runge–Kutta espliciti sono stabili. Ne discende la convergenza. Per quanto riguarda il massimo ordine che si pu`o raggiungere dato il numero di stadi ν, si ha quanto riportato in Tabella 19.3. numero stadi ν massimo ordine p 1 1 2 2 3 3 4 4 5 4 6 5 7 6 8 6 Tabella 19.3: Massimo ordine dei metodi di Runge–Kutta espliciti dato il numero di stadi. Il numero di stadi equivale al numero di valutazioni della funzione f (e dunque al costo del metodo). ` possibile generalizzare i metodi espliciti di Runge–Kutta per ottenere E metodi semiimpliciti e impliciti, i cui tableaux sono riportati in Tabella 19.4. Per tali metodi, l’ordine massimo raggiungibile dato il numero di stadi ν `e p = 2ν. Anche per essi valgolo le condizioni ν X ai,j = ci , j=1 e ν X j=1 1≤i≤ν bj = 1 124 CAPITOLO 19. METODI DI RUNGE-KUTTA c1 c2 c3 .. . a1,1 a2,1 a3,1 .. . a2,2 a3,2 .. . a3,3 ... ... cν−1 cν aν−1,1 aν,1 aν−1,2 aν,2 ... ... aν−1,ν−2 aν,ν−2 aν−1,ν−1 aν,ν−1 aν,ν b1 b2 ... bν−2 bν−1 bν a1,1 a2,1 .. . .. . aν−1,1 aν,1 a1,2 a2,2 .. . .. . aν−1,2 aν,2 ... ... ... ... ... ... ... ... ... ... b1 b2 ... c1 c2 c3 .. . cν−1 cν ... ... a1,ν−1 a2,ν−1 .. . .. . aν−1,ν−1 aν,ν−1 a1,ν a2,ν .. . .. . aν−1,ν aν,ν ... bν−1 bν Tabella 19.4: Tableaux di Butcher per i metodi di Runge–Kutta semiimpliciti (sopra) e impliciti (sotto). Lo schema generale di un metodo di Runge–Kutta si scrive dunque j∗ X ai,j f (tn + cj k, ξ j ), ξ = yn + k i j=1 ν X y = y + k bj f (tn + cj k, ξ j ) n n+1 i = 1, . . . , ν (19.5) j=1 ove j ∗ = i − 1 per gli schemi espliciti, j ∗ = i per gli schemi semiimpliciti e j ∗ = ν per gli schemi impliciti. Il guess iniziale per il calcolo di ξ i `e generalmente y n . ` buona norma, dopo aver definito la matrice A e i vettori c e b del E tableau, controllare che queste condizioni siano soddisfatte, confrontando sum(A,2) con c e sum(b) con 1, al fine di evitare banali errori. Ovviamente, si tratta di condizioni necessarie ma non sufficienti per garantire la corretta implementazione. Ai fini dell’implementazione dei metodi di Runge–Kutta, per evitare di calcolare pi` u volte la funzione f negli stessi punti, si pu`o usare 19.2. METODI DI RUNGE–KUTTA SEMIIMPLICITI 125 lo schema fi = f ∗ tn + ci k, y n + k j X j=1 ν X bj f j y n+1 = y n + k ai,j f j ! , i = 1, . . . , ν j=1 Si ricava da (19.5) ponendo f j = f (tn + cj k, ξ j ) e osservando che f i = P∗ f (tn + ci k, ξ i ) = f (tn + ci k, y n + k jj=1 ai,j f j ), i = 1, . . . , ν. In questo caso, il guess iniziale per il calcolo di f i `e f (tn , y n ). 19.2 Due esempi di metodi di Runge–Kutta semiimpliciti Consideriamo il seguente metodo di Runge–Kutta (semi)implicito k k ξ 1 = y n + f tn + , ξ 1 2 2 k y n+1 = y n + kf tn + , ξ 1 2 di tableau 1 2 (19.6a) (19.6b) 1 2 1 Esso equivale al metodo punto medio implicito ¯ n+1 k yn + y ¯ n+1 = y n + kf tn + , y 2 2 (19.7) infatti, per quest’ultimo vale ¯ n+1 yn + y k = yn + f 2 2 ¯ n+1 k y +y tn + , n 2 2 ¯ n+1 )/2 = ξ 1 e dunque (19.6b) coincide con (19.7). da cui si deduce che (y n + y ` E un metodo di ordine 2 (lo si dimostra a partire da (19.7) con passaggi molto simili a quelli fatti per i metodi di Runge–Kutta espliciti di ordine 2) e in qualche modo simile al metodo dei trapezi. Gode della seguente importante propriet`a: se per y ′ (t) = f (t, y(t)) 126 CAPITOLO 19. METODI DI RUNGE-KUTTA y(t)T y(t) `e costante per ogni t0 e y 0 allora per (19.7) vale y T n+1 y n+1 = T y n y n . Prima di dimostrarlo, osserviamo che la condizione sopra significa e xT f (t, x) = 0 per ogni t e ogni x. y(t)T f (t, y(t)) = 0 = y T 0 f (t0 , y 0 ) cio` Osserviamo infine che la propriet`a `e interessante quando y(t) `e un vettore di dimensione maggiore di uno, altrimenti deve essere f = 0 e dunque banalmente y n+1 = y n . Osserviamo poi che k y n + y n+1 y n+1 − y n = kf tn + , 2 2 e quindi, posto x = (y n + y n+1 )/2, y n + y n+1 T y n + y n+1 T k y n + y n+1 0= = kf tn + , (y n+1 − y n ) 2 2 2 2 da cui la tesi. 3.3 Heun trapezi punto medio implicito symplectic.m y1 (t)2 + y2 (t)2 + y3 (t)2 3.2 3.1 3 2.9 2.8 0 20 40 60 t 80 100 120 Figura 19.1: Evoluzione di y1 (t)2 + y2 (t)2 + y3 (t)2 per il problema (19.8). Consideriamo il seguente problema (equazioni di Eulero per il corpo rigido libero): I2 − I3 ′ y2 (t)y3 (t) y (t) = 1 I2 I3 I3 − I1 (19.8) y2′ (t) = y3 (t)y1 (t) I3 I1 I − I2 y3′ (t) = 1 y1 (t)y2 (t) I1 I2 19.2. METODI DI RUNGE–KUTTA SEMIIMPLICITI 127 y rappresenta il momento angolare e I1 , I2 e I3 sono i momenti principali d’inerzia. Evidentemente |y(t)|2 = y1 (t)2 + y2 (t)2 + y3 (t)2 `e costante. Proviamo a risolvere il sistema con i metodi punto medio implicito, trapezi e Heun (tutti di ordine 2): l’integrazione fino al tempo t∗ = 120 con 300 passi temporali (I1 = 2, I2 = 1, I3 = 2/3, y(0) = [1, 1, 1]T ) produce il grafico in Figura 19.1, in cui si vede che il metodo punto medio implicito conserva “esattamente” la quantit`a |y(t)|2 , a differenza dei metodi dei trapezi e di Heun. Ovviamente bisogna tenere in conto che gli errori di approssimazione (risoluzione del sistema non lineare) non garantiscono l’esatta uguaglianza T yT n+1 y n+1 = y n y n anche per il metodo punto medio implicito. I tre metodi testati sono dello stesso ordine, ma uno produce soluzioni “qualitativamente” migliori. Un metodo di Runge–Kutta di ordine tre `e quello di tableau √ 3+ 3 6 √ 3− 3 6 √ 3+ 3 6 √ − 33 1 2 0 √ 3+ 3 6 (19.9) 1 2 ` interessante perch´e ξ 1 e ξ 2 soddisfano E ξ 1 = y n + a1,1 kf (tn + c1 k, ξ 1 ) ξ 2 = y n + a2,1 kf (tn + c1 k, ξ 1 ) + a2,2 kf (tn + c2 k, ξ 2 ) con a1,1 = a2,2 . Dunque, gli jacobiani dei due sistemi da risolvere sono ∂f = I − ka1,1 (tn + c1 k, x) ∂y ∂f 2 Jn (x) = I − ka1,1 (tn + c2 k, x) ∂y Jn1 (x) Spesso si usa l’approssimazione Jn1 (x) ≈ Jn2 (x) ≈ Jn (y n ) = ∂f I − ka1,1 (tn + (c1 + c2 )k/2, y n ) ∂y e quindi si risolvono entrambi i sistemi non lineari con un metodo di Newton modificato con jacobiano costante e fattorizzato una volta e per tutte. I metodi di Runge–Kutta semiimpliciti in cui il tableau ha diagonale costante si dicono singolarmente (semi)impliciti (singly diagonally implicit). 128 CAPITOLO 19. METODI DI RUNGE-KUTTA Anche il θ-metodo pu`o essere fatto rientrare nella classe dei metodi di Runge–Kutta semiimpliciti: ξ1 = yn ξ 2 = y n + k(1 − θ)f (tn , ξ 1 ) + kθf (tn + k, ξ 2 ) y n+1 = y n + k(1 − θ)f (tn , ξ 1 ) + kθf (tn + k, ξ 2 ) o, in forma implementativa (anche se non si usa in pratica), f 1 = f (tn , y n ) f 2 = f (tn + k, y n + k(1 − θ)f 1 + kθf 2 ) y n+1 = y n + k(1 − θ)f 1 + kθf 2 Dunque, abbiamo risposto anche alla prima domanda all’inizio di questo capitolo. Vediamo ora come rispondere alla terza domanda. 19.3 Metodi di Runge–Kutta embedded Per i metodi ad un passo risulta alquanto facile adottare un passo temporale kn variabile nel tempo (non cos`ı con i multistep, in cui i parametri dipendono dall’avere assunto i passi temporali costanti). In generale, pi` u l’equazione ha un comportamento “lineare”, pi` u i passi possono essere presi grandi. Ma come adattare automaticamente il passo all’andamento della soluzione? Supponiamo di avere due metodi di Runge–Kutta espliciti di ordine p − 1 e p ` chiaro che, rispettivamente, i cui tableaux sono riportati in Tabella 19.5. E dopo aver costruito il primo metodo, con una sola nuova valutazione della funzione f si pu`o costruire il secondo metodo. Una tale coppia di metodi si dice embedded e si scrive di solito un unico tableau, come nella Tabella 19.6. Il fatto che per trovare metodi di Runge–Kutta sia necessario risolvere sistemi non lineari per i coefficienti, rende difficile ma non impossibile trovare coppie di metodi con tali caratteristiche. Consideriamo il sistema differenziale ( ′ ˜ (t) = f (t, y ˜ (t)) y ˜ (tn ) = y (p) y n (p) ove y n `e l’approssimazione di y(tn ) ottenuta con il metodo di Runge–Kutta di ordine p. Si ha allora (p) (p−1) (p) (p−1) p ky n+1 − y n+1 k = ky n+1 − y˜ (tn+1 ) + y˜ (tn+1 ) − y n+1 k ≤ Cn+1 kn+1 , (19.10) 19.3. METODI DI RUNGE-KUTTA EMBEDDED 0 c2 c3 .. . cν−1 0 c2 c3 .. . cν−1 cν a2,1 a3,1 .. . a3,2 .. . ... aν−1,1 b1 aν−1,2 b2 ... ... a2,1 a3,1 .. . a3,2 .. . aν−1,1 aν,1 ˆb1 aν−1,2 aν,2 ˆb2 aν−1,ν−2 bν−2 129 bν−1 ... ... ... ... aν−1,ν−2 aν,ν−2 ˆbν−2 aν,ν−1 ˆbν−1 ˆbν Tabella 19.5: Metodi di Runge–Kutta di ordine p − 1 e p. 0 c2 c3 .. . cν a2,1 a3,1 .. . a32 .. . aν,1 b1 ˆb1 aν,2 b2 ˆb2 ... ... ... ... aν,ν−1 bν−1 ˆbν−1 ˆbν Tabella 19.6: Metodi di Runge–Kutta embedded di ordine p − 1 e p. per un opportuno Cn+1 > 0, ove kn+1 = tn+1 − tn `e il passo di integrazione e p O(kn+1 ) `e l’errore locale del metodo di ordine p − 1. Se si vuole controllare tale errore si pu`o allora richiedere, ad ogni passo, che (p) (p−1) (p−1) ky n+1 − y n+1 k ≤ tola + ky n+1 k · tolr (p) (19.11) (p−1) Se la disuguaglianza non `e soddisfatta, si rifiuta y n+1 (e y n+1 ) e si calcola un nuovo passo di integrazione k˜n+1 minore di kn+1 . Per fare questo, si suppone che valga (p) (p−1) p ky n+1,kn+1 − y n+1,kn+1 k = Cn+1 kn+1 (p) ky n+1,k˜ n+1 (p−1) − y n+1,k˜ n+1 p p k = C˜n+1 k˜n+1 = Cn+1 k˜n+1 p (cio`e C˜n+1 = Cn+1 ) e si impone che l’errore C˜n+1 k˜n+1 valga proprio quanto 130 CAPITOLO 19. METODI DI RUNGE-KUTTA la tolleranza richiesta, ricavando (p−1) tola + ky n+1,kn+1 k · tolr C˜n+1 k˜n+1 = !1/p (p−1) = tola + ky n+1,kn+1 k · tolr (p) (p−1) ky n+1,kn+1 − y n+1,kn+1 k !1/p · kn+1 Se invece la disuguaglianza (19.11) `e soddisfatta, si accetta il passo corrente e per il successivo si suppone che valga (p) (p−1) (p) (p−1) p ky n+1,kn+1 − y n+1,kn+1 k = Cn+1 kn+1 p p ky n+2,kn+2 − y n+2,kn+2 k = Cn+2 kn+2 = Cn+1 kn+2 p (cio`e Cn+2 = Cn+1 ) e, di nuovo, si impone che l’errore successivo Cn+2 kn+2 valga quanto la tolleranza richiesta, ricavando !1/p !1/p (p−1) (p−1) tola + ky n+1,kn+1 k · tolr tola + ky n+1,kn+1 k · tolr kn+2 = = · kn+1 (p−1) (p) Cn+2 ky n+1,kn+1 − y n+1,kn+1 k Evidentemente si `e supposto anche che, se i passi non sono molto diversi (p−1) (p−1) (p−1) tra loro, ky n+1,kn+1 k = ky n+1,k˜ k = ky n+2,kn+2 k. L’espressione trovata `e la n+1 stessa. Per evitare che il passo di integrazione cambi troppo bruscamente, si pu`o adottare una correzione del tipo !1/p (p−1) tola + ky n+1 k · tolr · kn+1 min 2, max 0.6, 0.9 · (p−1) (p) ky n+1 − y n+1 k Vediamo un esempio facile di costruzione di metodi di Runge–Kutta embedded. Innanzitutto, osserviamo che qualunque metodo di Runge–Kutta (in, particolare, quelli di ordine due) richiede la valutazione di f 1 = f (tn , y n ) che `e praticamente tutto ci`o che serve per il metodo di Runge–Kutta di ordine uno, cio`e il metodo di Eulero. Quindi, qualunque metodo di Runge–Kutta di ordine due di tableau 0 c2 a2,1 ˆb1 ˆb2 pu`o essere implementato a passo variabile secondo lo schema (da tn a tn+1 ) • f 1 = f (tn , y n ) (1) (2) • y n+1 = y n + kn+1 f 1 (metodo di Eulero) 19.3. METODI DI RUNGE-KUTTA EMBEDDED 131 • f 2 = f (tn + c2 kn+1 , y n + a2,1 kn+1 f 1 ) (2−1) • en+1 = kn+1 [(ˆb1 − 1)f 1 + ˆb2 f 2 ] (2−1) (1) • IF ken+1 k > tola + ky n+1 ktolr n = n − 1 (time step rifiutato) ELSE (2) (1) (2−1) y n+1 = y n+1 + en+1 END i1/2 h (2−1) (1) · kn+1 • kn+2 = (tola + ky n+1 k · tolr )/ken+1 k • n=n+1 0 1 4 3 8 12 13 1 1 2 1 4 3 32 1932 2197 439 216 8 − 27 9 32 − 7200 2197 −8 7296 2197 3680 513 3544 − 2565 845 − 4104 1859 4104 − 11 40 25 216 0 1408 2565 2197 4104 − 15 16 135 0 6656 12825 28561 56430 9 − 50 2 2 55 Tabella 19.7: Metodo di Runge–Kutta–Fehlberg. Forse il pi` u importante metodo di Runge–Kutta embedded `e il Runge– Kutta–Fehlberg, di ordine (4)5, il cui tableau `e riportato in Tabella 19.7. Capitolo 20 A-stabilit` a Purtroppo la consistenza e la stabilit`a di un metodo non sono sufficienti per avere un buon solutore di qualunque equazione differenziale ordinaria. Consideriamo infatti il seguente problema lineare ( y ′ (t) = λy(t) t > t0 (20.1) y(t0 ) = y0 La soluzione esatta y(t) = eλ(t−t0 ) y0 tende a zero per t → +∞ quando ℜ(λ) < 0. Analizziamo il comportamento del metodo di Eulero per questo problema, supponendo di avere fissato il passo temporale k (e dunque tn = t0 + nk): si ha yn+1 = yn + kλyn = (1 + kλ)yn da cui yn = (1 + kλ)n y0 Si ha lim yn = 0 ⇔ |1 + kλ| < 1 ⇔ 1 + k 2 ℜ(λ)2 + 2kℜ(λ) + k 2 ℑ(λ)2 < 1 n→∞ da cui lim yn = 0 ⇔ k < − n→∞ 2ℜ(λ) |λ|2 (20.2) Dunque, la soluzione numerica ottenuta con il metodo di Eulero ha lo stesso comportamento della soluzione analitica solo se il passo temporale `e sufficientemente piccolo. Altrimenti, la soluzione pu`o essere completamente diversa (limn→∞ |yn | = |y0 | o limn→∞ yn = ∞). Nel caso di Eulero implicito, invece, si ha n 1 yn = y0 1 − kλ 132 133 da cui lim yn = 0 ⇔ |1 − kλ| > 1 ⇔ |1 − kℜ(λ) − kiℑ(λ)| > 1 n→∞ disuguaglianza sempre soddisfatta, poich´e ℜ(λ) < 0. Anche per il metodo dei trapezi la soluzione numerica tende a 0 per n → ∞. Ma non `e vero, in generale, per qualunque metodo implicito. Analizziamo infatti il comportamento generale del θ-metodo per questo problema: si ha yn+1 = yn + (1 − θ)kλyn + θkλyn+1 da cui 1 + (1 − θ)kλ yn = 1 − θkλ Si ha n y0 1 + (1 − θ)kλ < 1 ⇔ |1 + (1 − θ)kλ| < |1 − θkλ| ⇔ lim yn = 0 ⇔ n→∞ 1 − θkλ 0 < (θ2 − (1 − θ)2 )k 2 ℜ(λ)2 − (2θ + 2(1 − θ))kℜ(λ) + (θ2 − (1 − θ)2 )k 2 ℑ(λ)2 da cui lim yn = 0 ⇔ 0 < (2θ − 1)k 2 |λ|2 − 2kℜ(λ) n→∞ Se 2θ − 1 ≥ 0, certamente la disequazione `e soddisfatta. Altrimenti, lim yn = 0 ⇔ k < n→∞ 2ℜ(λ) , (2θ − 1)|λ|2 (2θ − 1 < 0) (20.3) Definizione 5. Dato un metodo numerico y n+1 = Y n (f , k, y 0 , . . . , y n ), la regione di assoluta stabilit`a (o linear stability domain) `e l’insieme dei numeri z = kλ per cui la soluzione di (20.1) soddisfa limn→∞ y n = 0. Con riferimento al θ-metodo, la regione di assoluta stabilit`a del metodo di Eulero `e {z ∈ C : |1+z| < 1}, per Eulero implicito `e {z ∈ C : |1−z| > 1} e per il metodo dei trapezi `e {z ∈ C : ℜ(z) < 0}. Diremo che un metodo `e A-stabile se la sua regione di assoluta stabilit`a contiene C− = {z ∈ C : ℜ(z) < 0}, cio`e se riproduce correttamente il comportamento della soluzione analitica di (20.1) quando ℜ(λ) < 0. Da notare che, indicato con r(kλ) il termine (che dovrebbe essere in modulo minore di 1) 1 + (1 − θ)kλ r(kλ) = 1 − θkλ ` CAPITOLO 20. A-STABILITA 134 4 4 4 2 2 2 0 0 0 -2 -2 -2 -4 -4 -4 -4 -2 0 2 4 -4 -2 0 2 4 -4 -2 0 2 4 Figura 20.1: Regioni di assoluta stabilit`a (bianche) per i metodi di Eulero, Eulero implicito e trapezi. si ha θ − 1 lim |r(kλ)| = kℜ(λ)→−∞ θ Tale limite vale proprio 1 per θ = 1/2. Significa che se ℜ(λ) ≪ 0 oppure k ≫ 0 il metodo dei trapezi potrebbe mostrare qualche problema di instabilit`a. In tal caso, il metodo migliore, da questo punto di vista, `e il metodo di Eulero implicito (θ = 1). In Figura 20.2 vediamo l’applicazione dei due metodi al problema ( y ′ (t) = −2000(y − cos t), t ≤ 1.5 (20.4) y(0) = 0 Se lim |r(kλ)| = 0 kℜ(λ)→−∞ diremo che il metodo `e L-stabile. Per inciso, se λ `e puramente immaginario λ = δi, |yn | → +∞ per Eulero, |yn | → 0 per Eulero implicito e |yn | = 1 = |y(tn )| per il metodo dei trapezi. 20.1 A-stabilit` a dei metodi di Runge–Kutta espliciti Teorema 13. Per un metodo di Runge–Kutta esplicito a ν stadi, si ha yn+1 = r(kλ)yn ⇒ yn = r(kλ)n y0 con r(kλ) polinomio di grado ν in z = kλ. Inoltre, se l’ordine p `e uguale al numero di stadi ν, si ha z2 zp r(z) = 1 + z + + ... + 2! p! ` DEI METODI DI RUNGE-KUTTA ESPLICITI 135 20.1. A-STABILITA 2 Trapezi Eulero implicito Lstability.m 1.5 y(t) 1 0.5 0 -0.5 0 0.5 1 t 1.5 2 Figura 20.2: Metodi dei trapezi e di Eulero implicito per la soluzione di (20.4) con k = 1.5/40. 4 4 4 2 2 2 0 0 0 -2 -2 -2 -4 -4 -4 -2 0 2 4 -4 -4 -2 0 2 4 -4 -2 0 2 4 Figura 20.3: Regioni di assoluta stabilit`a (bianche) per i metodi di Runge– Kutta di ordine p = 2 (ν = 2), p = 3 (ν = 3) e p = 4 (ν = 4). Dimostrazione. Si ha che ξ1 = yn `e un polinomio di grado 0 in z. Supponiamo che ξj sia un polinomio pj−1 (z)yn di grado j −1 in z = kλ per j = 2, 3, . . . , ν − 1: allora ξ ν = yn + k ν−1 X aν,j λξj = yn + kλ j=1 ν−1 X aν,j ξj = pν−1 (z)yn j=1 `e un polinomio di grado ν − 1 in z. Quindi yn+1 = yn + kλ ν X j=1 bj ξj = r(kλ)yn ` CAPITOLO 20. A-STABILITA 136 e dunque r(kλ) `e un polinomio di grado ν in z = kλ. Poi, se l’ordine del metodo `e p, significa che y1 − y(t0 + k) = r(kλ)y0 − y(t0 + k) = O(k p+1 ) Ma y(t0 + k) = ekλ y0 . Quindi r(kλ) − ekλ = O(k p+1 ) e dunque, l’unica possibilit`a per il polinomio di grado p r(kλ) `e zp z2 + ... + r(kλ) = r(z) = 1 + z + 2! p! Dunque, i metodi di Runge–Kutta di ordine p uguale al numero di stadi ν hanno tutti la stessa regione di stabilit`a. In ogni caso, la dimostrazione qui sopra mostra che per un metodo di Runge–Kutta esplicito r(z) `e un polinomio di grado ν (e dunque di grado maggiore di 0). Teorema 14. Nessun metodo di Runge–Kutta esplicito `e A-stabile. Dimostrazione. Si ha lim yn = 0 ⇔ |r(z)| < 1, n→∞ z = kλ ma r(z) `e un polinomio di grado maggiore di 0. Dunque, limx→−∞ r(x) = ∞, x reale. Quindi, certamente esiste z ∈ C− ∩ R tale che |r(z)| > 1 e dunque la regione di assoluta stabilit`a non contiene C− . Per quanto riguarda la regione di assoluta stabilit`a dei due metodi di Runge–Kutta implicito che conosciamo, cio`e il metodo del punto medio implicito (19.7) e il metodo singolarmente semiimplicito (19.9), osserviamo che il primo coincide, per problemi lineari, con il metodo dei trapezi. Pertanto, ha la stessa regione di assoluta stabilit`a. Il secondo `e anch’esso A-stabile (vedi Appendice A.6). 20.2 A-stabilit` a dei metodi lineari multistep Ci limitiamo a riportare alcuni risultati. Teorema 15. Nessun metodo esplicito multistep `e A-stabile. Teorema 16. I metodi BDF ad un passo (Eulero implicito) e a due passi sono A-stabili. Teorema 17 (Seconda barriera di Dahlquist). L’ordine pi` u alto che un metodo multistep A-stabile pu` o raggiungere `e due. 20.3. EQUAZIONI STIFF 20.3 137 Equazioni stiff Se consideriamo il problema ( y ′ (t) = −100y(t), t > 0 y(0) = 1 la condizione (20.3) per il metodo di Eulero impone k < 1/50 = 0.02. D’altra parte, la soluzione analitica del problema per t∗ = 0.4 `e minore di 10−17 (e dunque, trascurabile, nel senso che y(0) − y(t∗ ) = y(0), in precisione doppia). Dunque, con poco pi` u di 20 passi il metodo di Eulero arriva a calcolare adeguatamente la soluzione sino a t∗ . 10300 Eulero espliito Eulero impliito stiff.m 10250 errore in norma innito 10200 10150 10100 1050 100 k < 2/100 10−50 500 1000 2000 2500 m Figura 20.4: Eulero esplicito e Eulero implicito per la soluzione di (20.5) fino al tempo t∗ = 40. Qual `e dunque il problema? Eccolo: −100 0 ′ y(t), t > 0 y (t) = 0 −1 y(0) = 1 1 La soluzione analitica `e e−100t y(t) = e−t (20.5) ` CAPITOLO 20. A-STABILITA 138 e la sua norma infinito `e minore di 10−17 per t∗ = 40. Poich´e per`o per poter calcolare la prima componente serve un passo temporale k < 0.02, sono necessari pi` u di 2000 passi (vedi Figura 20.4), anche se la prima componente diventa trascurabile dopo pochi passi e la seconda non richiederebbe un cos`ı elevato numero di passi. Dunque, anche se il metodo `e convergente e il passo, per esempio, k = 0.1 garantisce un errore locale proporzionale a k 2 = 0.01, il metodo di Eulero non pu`o essere usato con tale passo. Usando il metodo di Eulero implicito sarebbe possibile invece usare un passo piccolo all’inizio e poi, quando ormai la prima componente `e trascurabile, si potrebbe incrementare il passo, senza pericolo di esplosione della soluzione. Per questo semplice problema, sarebbe possibile calcolare le due componenti separatamente. Nel caso generale, per`o, il sistema non `e disaccoppiato. Per l’analisi, ci si pu`o ricondurre, eventualmente in maniera approssimata, ad uno disaccoppiato e ragionare per componenti. Infatti, se A `e una matrice diagonalizzabile, y ′ (t) = Ay(t) ⇔ z ′ (t) = Dz(t) ⇔ z(t) = exp(tD)z 0 ove AV = V D, D = diag{λ1 , λ2 , . . . , λd }, e y(t) = V z(t). Poi y ′ (t) = Ay(t) + b ⇔ z ′ (t) = Dz(t) + V −1 b ⇔ ⇔ z(t) = z 0 + tϕ1 (tD)(Dz 0 + V −1 b) ove λ e − 1 ϕ1 (λ) = λ 1 se λ 6= 0 se λ = 0 Infine (considerando un problema autonomo per semplicit`a e sviluppando in serie di Taylor) y ′ (t) = f (y(t)) ⇔ y ′ (t) ≈ f (y n ) + Jn (y n )(y(t) − y n ) ove Jn `e la matrice jacobiana Jn (y n ) = ∂f (y ) ∂y n e, se Jn `e diagonalizzabile, ci si riconduce al caso precedente. Dunque, si ha sempre a che fare con gli autovalori di Jn (nel caso Jn non sia diagonalizzabile, si ragiona in maniera equivalente con blocchi di Jordan) e il pi` u piccolo di questi `e quello che determina la restrizione massima sul passo temporale. Definizione 6. Un sistema di ODEs (16.1) si dice stiff in un intorno di tn se esiste almeno una coppia di autovalori λ1 , λ2 della matrice jacobiana Jn tali che 20.3. EQUAZIONI STIFF 139 • ℜ(λ1 ) < 0, ℜ(λ2 ) < 0 • ℜ(λ1 ) ≪ ℜ(λ2 ) In pratica, pu`o essere molto difficile capire se un sistema non lineare presenta regioni di stiffness o meno. Altrettanto difficile `e rispondere alla domanda: per un problema stiff, conviene usare un metodo esplicito con ` chiaro che il metodo esplicito `e di passo piccolo o un metodo implicito? E facile implementazione e applicazione, ma richiede molti passi temporali (e vedi 18.4). Il metodo implicito richiede la soluzione ad ognuno dei “pochi” passi di un sistema, in generale, non lineare. 20.3.1 Risoluzione di un metodo implicito per problemi stiff Consideriamo, per semplicit`a, il problema y ′ (t) = Ay(t) con A stiff e simmetrica. La restrizione sul passo per il metodo di Eulero esplicito `e 2 k< ρmax ove ρmax `e il raggio spettrale di A. Applicando il metodo di Eulero implicito e le iterazioni di punto fisso per risolvere l’equazione (per assurdo, poich´e l’equazione da risolvere `e lineare), siccome kAx − Ayk2 ≤ kAk2 kx − yk2 = ρmax kx − yk2 si avrebbe la restrizione (vedi (17.6)) k< 1 ρmax dunque una restrizione ancora pi` u severa. Da questo esempio si deduce che i metodi impliciti per problemi stiff vanno risolti con il metodo di Newton (eventualmente modificato). Capitolo 21 Integratori esponenziali I problemi di assoluta stabilit`a per semplici problemi lineari visti nel capitolo precedente, portano alla ricerca di nuovi metodi. Consideriamo il sistema differenziale ( y ′ (t) = Ay(t) + b, t > 0 y(t0 ) = y 0 La soluzione analitica `e y(t) = exp((t − t0 )A)y 0 + (t − t0 )ϕ1 ((t − t0 )A)b = = y 0 + (t − t0 )ϕ1 ((t − t0 )A)(Ay 0 + b) Infatti y(t0 ) = y 0 e, osservando che d [(t − t0 )ϕ1 ((t − t0 )A)b] = exp((t − t0 )A)b = (t − t0 )Aϕ1 ((t − t0 )A)b + b dt si ha y ′ (t) = A exp((t − t0 )A)y 0 + exp((t − t0 )A)b = = A[exp((t − t0 )A)y 0 + (t − t0 )ϕ1 ((t − t0 )A)b] + b = Ay(t) + b Le funzioni exp e ϕ1 di matrice possono essere approssimate come visto al paragrafo 8. Da questa osservazione, per un problema ( y ′ (t) = Ay(t) + b(t, y(t)), t > 0 y(t0 ) = y 0 il metodo Eulero esponenziale `e y n+1 = exp(kA)y n + kϕ1 (kA)b(tn , y n ) = y n + kϕ1 (kA)(Ay n + b(tn , y n )) 140 141 Proposizione 6. Il metodo di Eulero esponenziale `e esatto se b(y(t)) = b(y 0 ) ≡ b e di ordine uno altrimenti. Dimostrazione. Si ha y n+1 = exp(kA)y n + Z tn+1 exp((tn+1 − τ )A)b(tn , y n )dτ tn Come al solito, inseriamo la soluzione analitica nello schema al posto della soluzione numerica. Ponendo g(t) = b(t, y(t)) e usando la formula di variazioni delle costanti (8.2) y(tn+1 ) − exp(kA)y(tn ) − = exp(kA)y(tn ) + Z tn+1 t Z ntn+1 t Z ntn+1 exp((tn+1 − τ )A)g(tn )dτ = exp((tn+1 − τ )A)g(τ )dτ + exp((tn+1 − τ )A)g(tn )dτ = − exp(kA)y(tn ) − tn Z tn+1 = exp((tn+1 − τ )A)(g(tn ) + g ′ (τn )(τ − tn ) − g(tn ))dτ = tn 2 = k ϕ2 (kA)g ′ (τn ) = O(k 2 ) Si pu`o inoltre dimostrare che il metodo converge (cio`e `e stabile). Poich´e risolve esattamente i problemi lineari, il metodo `e A-stabile e la sua regione di assoluta stabilit`a `e |r(z)| = |ez | < 1 e dunque C− . Proposizione 7. Per un problema lineare, non autonomo ( y ′ (t) = Ay(t) + b(t), t > 0 y(t0 ) = y 0 il metodo esponenziale—punto medio y n+1 = exp(kA)y n + kϕ1 (kA)b(tn + k/2) = y n + kϕ1 (kA)(Ay n + b(tn + k/2)) `e esatto se b(t) ≡ b e di ordine 2 altrimenti. 142 CAPITOLO 21. INTEGRATORI ESPONENZIALI Dimostrazione. Procedendo come sopra, si arriva a Z tn+1 y(tn+1 ) − exp(kA)y(tn ) − exp((tn+1 − τ )A)b(tn + k/2)dτ = tn Z tn+1 = exp((tn+1 − τ )A)b′ (τn + k/2)(τ − (tn + k/2))dτ = t Z ntn+1 = exp((tn+1 − τ )A)b′ (τn + k/2)(τ − tn − k/2)dτ = tn = (k 2 ϕ2 (kA) − k 2 /2ϕ1 (kA))b′ (τn + k/2) = 2 k2I k3A k I k3A 4 4 + + O(k ) − − + O(k ) b′ (τn + k/2) = = 2 6 2 2 = O(k 3 ) Anche in questo caso si pu`o dimostrare che il metodo converge e che `e A-stabile. Dato un problema differenziale in forma autonoma ( y ′ (t) = f (y(t)), t > t0 y(t0 ) = y 0 si pu`o pensare di linearizzarlo ad ogni passo y ′ (t) = Jn y(t) + bn (y(t)) ove ∂f (y ), bn (y(t)) = f (y(t)) − Jn y(t) ∂y n e applicarvi il metodo di Eulero esponenziale. Si arriva cos`ı al metodo di Eulero–Rosenbrock esponenziale Jn = y n+1 = exp(kJn )y n + kϕ1 (kJn )bn (y n ) = y n + kϕ1 (kJn )f (y n ) Il metodo `e di ordine 2 e convergente. Esso richiede di valutare la funzione di matrice ϕ1 (kJn ) ad ogni passo temporale. Gli integratori esponenziali sono particolarmente utili per la risoluzione di problemi stiff (essendo A-stabili). Conviene usare un metodo implicito o un metodo esponenziale? Nel primo caso, `e necessario risolvere sistemi lineari, nel secondo calcolare funzioni di matrici. Per problemi di grosse dimensioni, non `e per niente ovvio quale sia la strategia migliore. In generale, per matrici sparse senza struttura `e pi` u semplice calcolare funzioni di matrici, che non richiedono l’uso di precondizionatori efficaci. Capitolo 22 Esercizi 1. Si consideri il seguente problema differenziale del secondo ordine ai limiti ′′ u (x) − 3 cos(u(x)) = 0, x ∈ (0, 1) u(0) = 0 u(1) = 1 Lo si trasformi in un sistema del primo ordine (t = x, y1 (t) = u(x), y2 (t) = u′ (x)) da risolvere con il metodo di Eulero esplicito e si determini, con una opportuna strategia, quale dovrebbe essere il valore iniziale y2 (0) affinch´e y1 (t) = u(x) sia soluzione del problema originale. 2. Con riferimento alla Figura 22.1, l’equazione del pendolo `e ′′ lϑ (t) = −g sin ϑ(t) ϑ(0) = ϑ0 ϑ′ (0) = 0 p La si risolva con il metodo dei trapezi fino al tempo t∗ = π l/g (assumendo l = 1, ϑ0 = π/4). Si confronti la traiettoria con quella del pendolo linearizzato (sin ϑ(t) ≈ ϑ(t)). Di quest’ultimo, si trovi il numero minimo di passi temporali affinch´e il metodo di Eulero esplicito produca una soluzione al tempo t∗ che dista da ϑ(t∗ ) meno di 10−2 . 3. Si calcoli y(1), ove y ′ (t) = Ay(t), y(0) = [1, . . . , 1]T , con A data da A = 100*toeplitz(sparse([1,1],[1,2],[-2,1],1,10)), usando il θmetodo con θ = 0, 1/2, 1 e diversi passi temporali k = 2−3 , 2−4 , . . . , 2−8 . Si confrontino i risultati con la soluzione di riferimento ottenuta usando θ = 1/2 e k = 2−10 , mettendo in evidenza l’ordine del metodo usato. Si provi anche il valore θ = 1/3, discutendo i risultati ottenuti. 143 144 CAPITOLO 22. ESERCIZI ϑ0 l ϑ(t) m g Figura 22.1: Pendolo 4. Si risolva il sistema di ODEs ′ A (t) = −2a(t)A(t) a′ (t) = A(t)2 + Ω(t)2 − a(t)2 − 1 Ω′ (t) = −2(a(t) + A(t))Ω(t) con dato iniziale (22.1) A(0) = 0.5 a(0) = 2 Ω(0) = 10 con il metodo di Eulero implicito fino ad un tempo finale t∗ = 15, producendo un grafico della quantit`a E(t) = (A(t)2 + a(t)2 + Ω(t)2 + 1)/(2A(t)). Si confrontino le soluzioni ottenute usando 300 o 900 timesteps. 5. Si implementi il metodo di Eulero modificato (secondo tableau in Tabella 19.2) e lo si testi per il sistema differenziale (22.1), producendo il grafico della quantit`a E(t). 6. Si implementino gli altri due metodi di ordine 2 in Tabella 19.2, li si testi per il sistema differenziale (22.1), mettendone in evidenza l’ordine. 145 0 1 2 1 2 1 1 2 1 2 0 0 0 1 1 6 1 3 1 3 1 6 Tabella 22.1: Metodo di Runge–Kutta a 4 stadi. 7. Si implementi il metodo di Runge–Kutta di tableau in Tabella 22.1, determinandone numericamente l’ordine. 8. Si implementi la function relativa ad un generico metodo di Runge– Kutta esplicito con tableau dato da c A bT ove c, A e b sono dati. 9. Si implementi il metodo di Runge–Kutta (embedded) di tableau 0 1 2 1 1 2 −1 2 0 1 1 6 2 3 1 6 e lo si applichi al problema differenziale 22.1. 10. Si implementi il metodo di Runge–Kutta–Fehlberg il cui tableau `e riportato nella Tabella 19.7, e se ne mostri l’ordine. Lo si testi sul sistema differenziale (22.1). 11. Si consideri il problema differenziale ( ′ y (t) = Ay(t) + y(t)2 , t>0 p p T y(0) = [ (2)/2, 1, (2)/2] ove −2 1 0 A = 16 1 −2 1 0 1 −2 146 CAPITOLO 22. ESERCIZI e lo si risolva fino al tempo t∗ = 1 con i metodi di Eulero esplicito, Eulero implicito ed Eulero esponenziale, con diversi passi temporali. Parte 3 PDEs (Equazioni alle derivate parziali) 147 Capitolo 23 Equazioni di trasporto-diffusione-reazione Ci occuperemo in questo capitolo delle equazioni di trasporto-diffusionereazione (advection-diffusion-reaction, ADR). 23.1 Equazione del calore con dati iniziali e condizioni ai bordi Consideriamo la seguente equazione alle derivate parziali ∂ 2u ∂u ∂t (t, x) = ∂x2 (t, x), t > 0, x ∈ (0, L) u(t, 0) = u(t, L) = 0, t > 0 (condizioni ai bordi) u(0, x) = u0 (x), x ∈ (0, L) (condizioni iniziali) (23.1) Supponiamo che u0 (x) verifichi le condizioni di compatibilit` a u0 (a) = u0 (b) = 0. Tale equazione rappresenta, per esempio, l’andamento della temperatura u su una barra di lunghezza L, i cui estremi sono tenuti a temperatura zero, e con una distribuzione iniziale di temperatura u0 (x). 23.1.1 Esistenza di una soluzione Cerchiamo una soluzione a variabili separabili u(t, x) = ψ(t)φ(x) Inserendo tale rappresentazione in (23.1), si deduce ψ ′ (t)φ(x) = ψ(t)φ′′ (x), 148 t > 0, x ∈ (0, L) 23.1. EQUAZIONE DEL CALORE da cui 149 ψ ′ (t) = −K (costante) ⇒ ψ(t) = Ae−Kt ψ(t) Per quanto riguarda φ(x), la soluzione generale `e φ(x) = Be √ −Kx + Ce− √ −Kx Imponendo le condizioni al bordo 0 = φ(0) = B + C 0 = φ(L) = Be √ √ −KL + Ce− √ −KL √ √ √ = B e −KL − e− −KL Se K < 0, allora e −KL − e− −KL > 0 e dunque B = 0 (e anche C). Quindi φ(x) = 0, ma in tal caso ψ(0)φ(x) 6= u0 (x). Se invece K = 0, allora ancora φ(x) = B + C = 0. Se invece K = λ2 > 0, λ > 0, allora φ(x) = B eiλx − e−iλx = 2Bi sin(λx) = B sin(λx) (avendo ridefinito B) e poich´e φ(L) = 0, l’unica possibilit`a non banale `e λ = jπ/L, j numero naturale non nullo. Pertanto, la funzione 2 2 jπ j π x uj (t, x) = exp − 2 t sin L L `e soluzione dell’equazione del calore (e soddisfa le condizioni ai bordi) per ogni j. Quindi, la seguente serie u(t, x) = ∞ X cj uj (t, x) j=1 `e soluzione formale dell’equazione del calore. Per quanto riguarda la condizione iniziale, si deve imporre ∞ X jπ x (23.2) u0 (x) = u(0, x) = cj sin L j=1 Poich´e u0 (x) `e nulla agli estremi, la possiamo prolungare per antisimmetria all’intervallo [−L, L]. Sotto opportune ipotesi, la sua serie di Fourier u¯0 (x) = +∞ X j=−∞ u0 j φj (x) 150 CAPITOLO 23. EQUAZIONI ADR converge in [−L, L]. Poich´e u¯0 (x) `e dispari, con riferimento al paragrafo 14.2.1, Z L Z L −i 2πj(x + L) u¯0 (x)φm/2+1+j (x)dx = √ u0m/2+1+j = dx = u¯0 (x) sin 2L 2L −L −L √ Z jπx −i 2 L u¯0 (x) sin + jπ dx = = √ L L 0 √ Z −i 2 L jπx = √ + jπ dx u0 (x) sin L L 0 e u0 m/2+1−j Z L −i −2πj(x + L) = u¯0 (x)φm/2+1−j (x)dx = √ dx = u¯0 (x) sin 2L 2L −L −L √ Z i 2 L u¯0 (x) sin(jπx/L + jπ)dx = −u0 m/2+1+j = √ L 0 Z L da cui u¯0 (x) = +∞ X u0 m/2+1+j φm/2+1+j (x) = j=−∞ = +∞ X u0m/2+1+j cos(jπx/L + jπ) + i sin(jπx/L + jπ) √ = 2L u0m/2+1+j cos(jπx/L + jπ) + i sin(jπx/L + jπ) √ + 2L j=−∞ = −1 X j=−∞ + +∞ X u0 m/2+1+j j=1 = +∞ X j=1 +∞ X cos(jπx/L + jπ) + i sin(jπx/L + jπ) √ = 2L −u0m/2+1+j cos(jπx/L + jπ) − i sin(jπx/L + jπ) √ + 2L cos(jπx/L + jπ) + i sin(jπx/L + jπ) √ = 2L j=1 √ ∞ X 2 = u0 m/2+1+j √ i sin(jπx/L + jπ) = L j=1 Z ∞ X 2 L jπ jπ = x dx sin x u0 (x) sin L 0 L L j=1 + u0 m/2+1+j 23.1. EQUAZIONE DEL CALORE 151 Confrontanto quest’ultima espressione con (23.2), si deduce 2 cj = L Z L u0 (x) sin 0 jπ x dx L Si potrebbe mostrare adesso che ∞ X j 2π2 jπ u(t, x) = cj exp − 2 t sin x L L j=1 `e soluzione di (23.1) (bisogna poter derivare sotto il segno di serie). Dalla presenza del termine esponenziale negativo nel tempo per ogni componente uj (t, x), si deduce ogni componente tende a zero per t → +∞ (e dunque anche la soluzione), ma con diverse velocit`a dipendenti da un fattore proporzionale a j 2 . L’equazione del calore rappresenta il modello dei fenomeni di diffusione. La diffusione `e il processo mediante il quale la materia (o l’energia) `e trasportata da una parte di un sistema ad un’altra come risultato di moti molecolari random. 23.1.2 Unicit` a della soluzione Introduciamo la seguente quantit`a (energia) E(t) = Z L 0 1 2 u (t, x)dx 2 Si ha dE = dt Z L 0 Z L Z L 2 ∂u ∂ u ∂ 1 2 u (t, x) dx = u dx = u 2 dx ∂t 2 ∂t ∂x 0 0 Integrando per parti e tenendo conto delle condizioni ai bordi, si ha dE =− dt Z L 0 ∂u ∂x 2 dx ≤ 0 Per dimostrare l’unicit`a, consideriamo come al solito il problema omogeneo (corrispondente a (23.1) con u0 ≡ 0. Per tale problema E0 (0) = 0 e quindi 0 ≤ E0 (t) ≤ E0 (0) da cui E0 (t) = 0 per ogni t. Quindi u(t, x) ≡ 0 `e l’unica soluzione del problema omogeneo. Dunque, se u1 (t, x) e u2 (t, x) fossero due soluzioni del problema (23.1), allora u1 (t, x) − u2 (t, x) sarebbe soluzione del problema omogeneo e quindi u1 (t, x) ≡ u2 (t, x). 152 CAPITOLO 23. EQUAZIONI ADR Se u0 (x) ≥ 0, si pu`o dimostrare (principio del massimo debole) che la soluzione rimane non negativa per ogni t (dall’interpretazione fisica, `e ovvio). Infatti, dato ε > 0, si ponga v(t, x) = u(t, x)−εx2 . Allora ∂t v−∂xx v = 2ε > 0. Se il minimo di v(t, x) stesse in (t¯, x¯), 0 < t¯, 0 < x¯ < L, allora ∂t v(t¯, x¯) = 0 (punto critico) e ∂xx v(t¯, x¯) ≥ 0 (punto di minimo). Dunque ∂t v(t¯, x¯) − ∂xx v(t¯, x¯) ≤ 0 assurdo. Quindi, il punto di minimo per v(t, x) sta in Γ = {0} × [0, L] ∪ [0, +∞) × {0, L}. Dunque min u − εL2 ≤ min v = min v ≤ min u Γ Γ e facendo tendere ε → 0, si ottiene min u ≤ min u Γ Poich´e ovviamente vale anche la disuguaglianza opposta, min u = min u = min{min u0 , 0} = 0 Γ 23.2 Metodo di Fourier Per quanto visto, il metodo spettrale basato su approssimazione in serie di Fourier (vedi paragrafo 14.2.1) dovrebbe essere particolarmente adatto alla risoluzione. Detta m X uˆ(t, x) = uˆj (t)φj (x) j=1 la soluzione approssimata, si ha m X uˆ′j (t)φj (x) j=1 = m X uˆj (t)λ2j φj (x) j=1 da cui, per l’ortonormalit`a della famiglia {φj }j , ( uˆ′k (t) = λ2k uˆk (t), 1 ≤ k ≤ m uˆk (0) = uˆ0 k ove λk = i(k − 1 − m/2)2π/(2L) (si deve lavorare infatti del dominio [−L, L], dove si `e prolungata per antisimmetria la funzione u0 (x)) e uˆ0k sono i coeffi√ √ cienti di Fourier discreti di u0 prolungata (si ha i 2 Luˆ0m/2+1+k = (−1)k ck ). Si trova, dunque, uˆk (t) = e−(k−1−m/2) 2 π 2 t/L2 uˆ0 k , 1≤k≤m 23.3. METODO DELLE LINEE 153 da cui poi si ricostruisce uˆ(t, x). Avevamo visto che la decomposizione di Fourier si usa in caso di condizioni al bordo periodiche, mentre per l’equazione del calore sono di Dirichlet nulle. Poich´e per`o il dato iniziale `e la funzione dispari u¯0 (x), allora la soluzione u¯(t, x) dell’equazione del calore nell’intervallo [−L, L] `e pure dispari. Infatti, posto v¯(t, x) = −¯ u(t, −x), si ha ∂¯ v ∂ u¯ (t, x) = − (t, −x) ∂t ∂t 2 ∂ v ¯ ∂ 2 u¯ (t, x) = (− · −) · − (t, −x) ∂x2 ∂x2 inoltre, v¯(t, −L) = v¯(t, L) = 0 e v¯(0, x) = −¯ u(0, −x) = u¯0 (x). Dunque, pure v¯(t, x) soddisfa l’equazione del calore. Ma questa `e unica, quindi v¯(t, x) = −¯ u(t, −x) = u¯(t, x), cio`e u¯(t, x) `e dispari. Quindi, ∂x u¯(t, −x) = ∂x u¯(t, x) e, in particolare, ∂x u¯(t, −L) = ∂x u¯(t, L). Per quanto visto, la serie di Fourier di u¯(t, x) converge (i coefficienti uj (t) decadono a zero almeno come j 2 ) e, poich´e ogni troncata della serie `e dispari e periodica, essa vale zero ai bordi x = −L ed x = L (e, di conseguenza, anche in x = 0: questo fatto non `e vero per l’equazione originaria nel dominio [0, L], poich´e l`ı la soluzione non `e dispari). Dunque, si pu`o usare il metodo di Fourier. Se per`o u¯0 (x) non `e periodica (nel senso che non lo sono le derivate di ordine superiore al primo), allora tale sar`a la soluzione analitica e il metodo di Fourier non sar`a spettralmente convergente. 23.3 Metodo delle linee Il metodo delle linee per la risoluzione di problemi del tipo ∂u ∂ 2u (t, x) = (t, x) + g(u(t, x)) + s(t, x), t > 0, x ∈ (a, b) ∂t ∂x2 + condizioni ai bordi + condizione iniziale (23.3) ove il termine g(u(t, x)) si chiama reazione e il termine s(t, x) sorgente, prevede di discretizzare gli operatori differenziali spaziali con uno dei metodi visti per i problemi con valori ai bordi e poi risolvere il sistema di ODEs che ne risulta con un metodo per problemi ai valori iniziali visti. Assumeremo sempre che la condizione iniziale soddisfi le condizioni ai bordi. Vediamo qualche esempio. 154 CAPITOLO 23. EQUAZIONI ADR 23.3.1 Differenze finite Trascurando per il momento le condizioni ai bordi e usando differenze finite centrate del secondo ordine a passo costante h y1′ (t) y2′ (t) −2 1 1 .. = 2 0 . h ′ . ym−1 (t) .. ′ ym (t) 0 1 0 ... −2 .. . 1 .. ... .. . .. . ... . 1 0 −2 1 0 y1 (t) b1 (t, y1 (t)) .. . y2 (t) b2 (t, y2 (t)) .. . .. + 0 . ym−1 (t) bm−1 (t, ym−1 (t)) 1 ym (t) bm (t, ym (t)) −2 ove yj (t) ≈ u(t, xj ) o, in maniera compatta, y ′ (t) = Ay(t) + b(t, y(t)) = f (t, y(t)) (23.4) (con l’ovvia definizione dei simboli). A questo punto, si sceglie il metodo di integrazione temporale (θ-metodo, multistep, Runge–Kutta, esponenziale). Si tenga presente che il problema (23.4), che si dice semidiscretizzato, `e solitamente un problema stiff. Infatti, la matrice −2 1 0 ... 0 .. 1 −2 . 1 ... ... ... ... ∈ Rm×m 0 0 . . . . . . 1 −2 1 0 ... 0 1 −2 ha autovalori reali negativi λj = −4 sin 2 j π 2m+1 , 1≤j≤m che vengono poi amplificati dal coefficiente 1/h2 . Dunque, con riferimento alla condizione (20.2) per il metodo di Eulero, volendo usare questo metodo per l’integrazione temporale occorrerebbe un passo temporale k minore di (circa) h2 /2. Siccome il metodo di Eulero `e del primo ordine, volendo che l’integrazione temporale non sia meno accurata dell’approssimazione spaziale, `e giusto che il passo temporale sia proporzionale a h2 (cos`ı che l’errore globale sia O(k) + O(h2 ) = O(h2 )). Per ridurre il numero di time steps, si pu`o usare un metodo di ordine pi` u alto, per esempio un metodo di Runge–Kutta esplicito di ordine 2. La restrizione sul time step `e per`o la stessa (vedi la regione di assoluta stabilit`a del metodo in Figura 20.3) del metodo di Eulero. Dunque, ancora k dovrebbe essere proporzionale a h2 /2 (quindi il numero di time steps non diminuisce) e l’errore globale `e ancora O(k 2 ) + O(h2 ) = O(h4 ) + O(h2 ) = O(h2 ). 23.3. METODO DELLE LINEE 23.3.2 155 Condizioni al bordo di Dirichlet Vediamo come imporre una condizione di Dirichlet in x1 = a (eventualmente dipendente dal tempo u(t, a) = y1 (t) = ua (t)) per il problema y ′ (t) = Ay(t) + b(t, y(t)) = f (t, y(t)) Costanti nel tempo Si deve modificare la prima riga di f (t, y(t)) e porla uguale a zero. In tal modo, la prima riga del sistema differenziale risulta essere y1′ (t) = 0 ⇒ y1 (t) = costante = y1 (t0 ) = ua Poich´e il dato iniziale soddisfa sempre le condizioni di compatibilit`a, la prima componente della soluzione assumer`a sempre il valore ua . Variabili nel tempo • metodi espliciti: basta calcolare y n+s e poi modificarne la prima componente, ponendola uguale a ua (tn+s ). Poich´e per`o il problema `e stiff, difficilmente i metodi espliciti sono efficaci, a causa della restrizione sul passo temporale. • metodi impliciti: si deve trovare x = y n+s tale che Fn+s−1 (x) = 0 Pertanto, si deve modificare la prima riga di questo sistema in modo che esprima l’uguaglianza x1 −ua (tn+s ) = 0. Per esempio, avendo scelto il metodo di Eulero implicito, si ha Fn (y n+1 ) = (I − kA)y n+1 − kb(tn+1 , y n+1 ) − y n = 0 e l’imposizione della condizione al bordo avviene, per esempio, ponendo a zero la prima riga di A e la prima componente di b (ci`o pu`o essere fatto una volta per tutte, assieme alle necessarie modifiche allo Jacobiano) e ponendo uguale a ua (tn+1 ) la prima componente di y n . • metodi esponenziali: per i metodi esponenziali visti si ha y n+1 = exp(kA)y n + kϕ1 (kA)bn Se la prima riga di A viene messa a zero, la prima riga di exp(kA) e ϕ1 (kA) `e il primo vettore della base canonica e dunque basta porre il primo elemento di bn uguale a (ua (tn+1 ) − ua (tn ))/k. 156 CAPITOLO 23. EQUAZIONI ADR 23.3.3 Condizioni al bordo di Neumann (costanti) Per quanto riguarda una condizione di Neumann omogenea, per esempio in x = b, si pu`o pensare di introdurre la variabile fittizia ym+1 (t) ≈ u(t, xm+1 ), xm+1 = b + h e imporre che ym+1 (t) = ym−1 (t). L’approssimazione da usare 2 per ∂∂xu2 (t, b) diventa dunque ∂ 2u u(t, xm+1 ) − 2u(t, xm ) + u(t, xm−1 ) (t, b) ≈ = 2 ∂x h2 ym+1 (t) − 2ym (t) + ym−1 (t) 2ym−1 (t) − 2ym (t) = = 2 h h2 In maniera analoga si possono trattare condizioni di Neumann non omogenee (vedi paragrafo 11.4.1). 23.4 Equazione di trasporto-diffusione Consideriamo l’equazione del trasporto (in un dominio non limitato) ∂u (t, x) + c ∂u (t, x) = 0, t > 0, x ∈ R ∂t ∂x u(0, x) = u0 (x) (23.5) ` facile verificare che la soluzione analitica `e u(t, x) = u0 (x − ct), da cui il E ` ovviamente pi` nome dell’equazione. E u fisico considerare un dominio limitato x ∈ (a, b). Nel caso in cui c > 0, ha senso (ed `e necessario) prescrivere un’unica condizione al bordo in x = a. Tale punto si chiama punto di inflow mentre il punto x = b `e detto di outflow. L’equazione di trasporto su un dominio limitato si scrive allora ∂u ∂u (t, x) + c (t, x) = 0, t > 0, x ∈ (a, b), c > 0 ∂t ∂x u(t, a) = 0, t>0 u(0, x) = u0 (x), x ∈ (a, b) con u0 (a) = 0. La soluzione analitica `e u(t, x) = u˜0 (x − ct), ove u˜0 (x) = ( u0 (x) x ∈ [a, b] 0 x<a (23.6) 23.4. EQUAZIONE DI TRASPORTO-DIFFUSIONE 157 Nel caso in cui c < 0, il punto di inflow `e x = b. Se consideriamo, pi` u in generale, l’equazione di trasporto-diffusione ∂u ∂u ∂ 2u (t, x) + c (t, x) = d t > 0, x ∈ (a, b) ∂t ∂x ∂x2 (23.7) + condizioni ai bordi + condizione iniziale ove d > 0, `e lecito aspettarsi che entrambi i fenomeni di diffusione e trasporto si manifestino. Ancora, se u0 (x) ≥ 0, tale rimane la soluzione per ogni t. Ma ci`o `e vero dopo aver discretizzato con il metodo delle linee? Abbiamo i due risultati seguenti. Teorema 18. Dato ( y ′ (t) = f (t, y(t)), y(0) = y 0 t>0 sono equivalenti le seguenti propriet` a: • se y 0 ≥ 0, allora y(t) ≥ 0 per ogni t (il sistema si dice positivo) • dato x, con xi = 0, xj ≥ 0, j 6= i, allora fi (t, x) ≥ 0 Da questo teorema segue, come corollario, il seguente, che pu`o per`o essere dimostrato in maniera diretta. Teorema 19. Un sistema lineare y ′ (t) = Ay(t) `e positivo se e solo se aij ≥ 0 per ogni j 6= i ove A = (aij ). Dimostrazione. Supponiamo che il sistema sia positivo. Allora, se y 0 ≥ 0, si ha y(τ ) ≥ 0. Ma y(τ ) = exp(τ A)y 0 = (I + τ A)y 0 + O(τ 2 ) se τ `e sufficientemente piccolo. Se, per assurdo, a¯i¯j < 0, ¯j = 6 ¯i, allora, preso y 0 = e¯j , ∗ .. . ∗ (I + τ A)e¯j = τ a¯i¯j ← riga ¯i ∗ . .. ∗ 158 CAPITOLO 23. EQUAZIONI ADR e dunque la componente ¯i-esima di exp(τ A)e¯j sarebbe negativa, assurdo. Se invece aij ≥ 0, j 6= i, allora n t exp(tA) = lim I + A ≥ 0 n→∞ n da cui la positivit`a. Tornando all’equazione (23.7), la discretizzazione mediante differenze finite centrate del secondo ordine porge, nei nodi interni, yi′ (t) + c yi+1 (t) − 2yi (t) + yi−1 (t) yi+1 (t) − yi−1 (t) =d 2h h2 I termini extradiagonali della matrice che ne deriva sono c d c d + 2 e − + 2 2h h 2h h che, per avere la positivit`a, devono essere entrambi non negativi, da cui |c|h ≤1 2d La quantit`a Pe = |c|h/(2d) si chiama numero di P´eclet di griglia. La perdita di positivit`a `e solo uno degli effetti del numero di P´eclet di griglia troppo elevato: si possono avere anche oscillazioni spurie, pertanto si chieder`a sempre che il numero di P´eclet di griglia sia minore o uguale a 1. Da notare che la positivit`a del sistema y ′ (t) = Ay(t) non garantisce che qualunque metodo numerico per ODEs la preservi (di certo lo garantisce il metodo esponenziale poich´e esatto e, per il problema di diffusione e trasporto, anche Eulero implicito, vedi A.2). Pertanto, la condizione sul numero di P´eclet di griglia `e solo necessaria per avere una soluzione numerica positiva. 23.4.1 Stabilizzazione mediante diffusione artificiale La restrizione sul passo di discretizzazione data dal numero di P´eclet di griglia potrebbe essere irrealizzabile. Vediamo di stabilizzare lo schema delle differenze finite. Consideriamo, per esempio, l’equazione di trasporto-diffusione ∂u ∂ 2u ∂u (t, x) + c (t, x) = d t > 0, x ∈ (0, 1) ∂x ∂x2 ∂t u(0, x) = x2 (23.8) u(t, 0) = 0 u(t, 1) = 1 23.4. EQUAZIONE DI TRASPORTO-DIFFUSIONE 1.5 1.5 FD upwind 159 FD upwind shema SG soluzione di riferimento FD entrate shema SG soluzione di riferimento FD entrate 1 0.5 0.5 u u peclet.m 1 0 0 -0.5 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1 -0.5 0.9 0.91 0.92 0.93 0.94 0.95 x 0.96 0.97 0.98 0.99 1 x Figura 23.1: Soluzione di (23.8) con diversi schemi di differenze finite, h = 1/125 (sinistra), h = 1/250 (destra) e Eulero esponenziale al tempo t∗ = 0.05. La soluzione di riferimento `e stata ottenuta con differenze finite centrate e h = 1/1000. con c = 10 e d = 0.02. Il numero di P´eclet di griglia, con h = 1/125, vale 2. La risoluzione mediante differenze finite centrate e Eulero esponenziale (esatto nel tempo) produce il grafico blu a sinistra in Figura 23.1. Se consideriamo invece la discretizzazione del primo ordine della derivata prima ∂u ui − ui−1 (t, xi ) ≈ ∂x h (in tale contesto si chiama discretizzazione upwind ), otteniamo il grafico rosso, piuttosto lontano dalla soluzione esatta, ma privo di oscillazioni. Si pu`o infatti vedere che i termini extradiagonali della matrice di discretizzazione sono non negativi. Per tentare di generalizzare (e migliorare l’ordine di accuratezza) questo approccio, scriviamo ui+1 − ui−1 h ui−1 − 2ui + ui+1 ui − ui−1 = − h 2h 2 h2 e quindi approssimare al primo ordine −c ∂ 2u ui − ui−1 ui−1 − 2ui + ui+1 ∂u (t, xi ) + d 2 (t, xi ) ≈ −c +d = 2 ∂x ∂x h h ui+1 − ui−1 ch ui−1 − 2ui + ui+1 = −c +d 1+ 2h 2d h2 significa approssimare al secondo ordine (dunque, meglio) ch ∂ 2 u ∂u (t, xi ) −c (t, xi ) + d 1 + ∂x 2d ∂x2 160 CAPITOLO 23. EQUAZIONI ADR cio`e un’equazione con una diffusione artificiale (aggiuntiva) di coefficiente ch/2. Per questa equazione il numero di P´eclet vale ch 2d 1 + ch 2d = ch Pe = < 1, 2d(1 + Pe) 1 + Pe ∀h e ci`o spiega l’assenza di oscillazioni. Vorremmo trovare una diffusione artificiale che stabilizzi lo schema e preservi l’ordine due delle differenze finite centrate. Cercheremo dunque una funzione φ del numero di P´eclet e sostituiremo d con d(1 + φ(Pe)) in modo che il nuovo numero di P´eclet valga ch 2d(1 + φ(Pe)) La funzione φ(Pe) dovr`a soddisfare: • φ(Pe) ' Pe − 1 (cos`ı il nuovo numero di P´eclet sar`a minore o uguale a 1), ma non troppo grande (altrimenti si introduce troppa diffusione artificiale) • φ(ch/(2d)) = O(h2 ), h → 0 (cos`ı la discretizzazione a differenze finite centrate sar`a di ordine 2) Una scelta possibile `e φ(z) = z − 1 + e−z , φ(z) = z2 + O(z 3 ), 2 z→0 Una scelta migliore `e φ(z) = z − 1 + 2z , 2z e −1 φ(z) = z2 + O(z 4 ), 3 z→0 (da notare che lo schema upwind corrisponde a φ(z) = z). Il risultato corrisponde al grafico magenta in Figura 23.1 e lo schema si chiama di Scharfetter e Gummel. L’esempio usato aveva il coefficiente c positivo: la funzione φ da usare deve essere funzione del numero di P´eclet Pe = |c|h/(2d), in modo da aggiungere diffusione artificiale e non togliere. Per esempio, nel caso upwind con c < 0, φ(Pe) = Pe = −ch/(2d) e pertando la discretizzazione al primo ordine che ne risulta `e −c ∂u ∂ 2u ui+1 − ui ui−1 − 2ui + ui+1 (t, xi ) + d 2 (t, xi ) ≈ −c +d = 2 ∂x ∂x h h ui+1 − ui−1 ch ui−1 − 2ui + ui+1 = −c +d 1− 2h 2d h2 23.4. EQUAZIONE DI TRASPORTO-DIFFUSIONE 23.4.2 161 Elementi finiti Nel caso di discretizzazione spaziale con elementi finiti lineari, la discretizzazione del problema (23.3) porta al sistema di ODEs P y ′ (t) = Ay(t) + g(y(t)) + s(t) (23.9) ove A `e (l’opposta de) la stiffness matrix e P la mass matrix, definita da, Z xj+1 hj−1 + hj φj (x)φj (x)dx = pjj = 3 xj−1 Z xj+1 (23.10a) hj φj (x)φj+1 (x)dx = pj j+1 = pj+1 j = 6 xj mentre, per j = 1 e j = m, Z x2 h1 φ1 (x)φ1 (x)dx = p11 = 3 Zx1x2 h1 φ1 (x)φ2 (x)dx = p12 = 6 x1 Z xm hm−1 pm−1 m = pm m−1 = φm (x)φm−1 (x)dx = 6 xm−1 Z xm hm−1 pmm = φm (x)φm (x)dx = 3 xm−1 (23.10b) Poi, per 1 < i < m, gi = = Z Z xi+1 g xi−1 m X uj φj (x) φi (x)dx = j=1 xi g xi−1 m X ! ! uj φj (x) φi (x)dx + j=1 Z xi+1 g xi m X j=1 ! uj φj (x) φi (x)dx ≈ g(yi−1 ) + g(yi ) hi−1 g(yi ) + g(yi+1 ) hi + 2 2 2 2 Z xi+1 s(t, xi−1 ) + s(t, xi ) hi−1 s(t, xi ) + s(t, xi+1 ) hi + si = s(t, x)φi (x)dx ≈ 2 2 2 2 xi−1 mentre per i = 1 e i = m g(ym−1 ) + g(ym ) hm−1 g(y1 ) + g(y2 ) h1 , gm = 2 2 2 2 s(t, xm−1 ) + s(t, xm ) hm−1 s(t, x1 ) + s(t, x2 ) h1 s1 = , sm = 2 2 2 2 g1 = 162 CAPITOLO 23. EQUAZIONI ADR Usando un metodo esplicito per la risoluzione del sistema differenziale (23.9), `e necessaria l’inversione della matrice di massa. Per tale motivo, si pu`o ricorrere alla tecnica del mass lumping che consiste nel rendere diagonale la matrice P sostituendo ogni sua riga con una riga di zeri e la somma degli elementi originali in diagonale. Tale modifica `e equivalente all’approssimazione degli integrali in (23.10) mediante la formula dei trapezi e dunque non (−1) riduce l’accuratezza del metodo. Infatti, la matrice PL A (PL la matrice di massa con lumping) risulta uguale alla matrice che si ottiene discretizzando con differenze finite centrate del secondo ordine. Usando invece un metodo implicito per la risoluzione del sistema differenziale (23.9), non `e necessaria la tecnica del mass lumping: semplicemente, si devono risolvere sistemi lineari in cui la matrice identit`a `e sostituita dalla matrice di massa. 23.4.3 Errori spaziali e temporali Con il metodo delle linee, `e facile capire cosa contribuisce all’errore spaziale e cosa all’errore temporale. Per esempio, se si usano differenze finite centrate 1 di ordine due, si commette un errore Ch2 , h ∝ m−1 . Questo significa che, qualunque metodo si usi per l’integrazione temporale e con qualunque passo temporale, non `e possibile scendere sotto tale errore. Ci`o `e esemplificato 10−3 m = 200 m = 250 m = 300 erroretemporale.m 10−4 errore 10−5 10−6 10−7 10−8 101 102 passi temporali 103 Figura 23.2: Errore temporale per un numero m di passi spaziali. in Figura 23.2, ove si `e risolto il problema dell’Esercizio 1 con un numero 23.5. ESERCIZI 163 m diverso di passi spaziali e si `e misurato l’errore rispetto alla soluzione analitica. Vale ovviamente anche l’inverso: il metodo scelto per l’integrazione temporale e il numero di passi temporali pone un limite inferiore all’errore rispetto alla soluzione analitica. 23.5 Esercizi 1. Si calcoli la soluzione analitica dell’equazione del calore con sorgente ∂ 2u ∂u (t, x) = (t, x) + 2et sin(x), t > 0, x ∈ (0, π/2) 2 ∂t ∂x u(t, 0) = 0, t>0 ∂u (t, π/2) = 0, t>0 ∂x u(0, x) = sin(x), x ∈ (0, π/2) usando differenze finite del secondo ordine nello spazio e il metodo dei trapezi nel tempo. Si mostrino gli ordini spaziali e temporali della convergenza alla soluzione analitica al tempo t∗ = 1. 2. Per l’esercizio sopra, discretizzato nello spazio tramite differenze finite centrate del secondo ordine con m = 100 nodi, si determini il numero minimo di passi temporali per avere un errore al tempo t∗ = 1 rispetto alla soluzione analitica inferiore a 10−3 , avendo usato nel tempo • il metodo di Eulero • il metodo di Eulero implicito • il metodo dei trapezi • il metodo di Heun • il metodo Runge–Kutta di tableau in Tabella 22.1 3. Si ripeta l’esercizio 1. usando Eulero esponenziale e esponenziale— punto medio nel tempo. 164 CAPITOLO 23. EQUAZIONI ADR 4. Si studi l’andamento della soluzione del problema di trasporto-diffusione-reazione ∂u ∂ 2u ∂u +c = d 2 (t, x) + ρu(u − 1/2)(1 − u), t > 0, x ∈ (0, 1) ∂t ∂x ∂x u(t, 0) = 0, t>0 ∂u (t, 1) = 0, t>0 ∂x u(0, x) = 5x(1 − x)2 , x ∈ (0, 1) al variare dei coefficienti c, d e ρ (partendo da c = 0.8, d = 0.01, ρ = 50). Si usi un metodo implicito nel tempo. Si testi anche il caso di condizioni di Dirichlet omogenee per entrambi i bordi. Parte 4 Appendici 165 Appendice A Alcune dimostrazioni A.1 M -matrici Per dimostrare che la matrice A in (11.4) `e una M -matrice, si procede cos`ı. Dato σ = 1/ max2≤i≤m−1 {2/h2 + qi }, definiamo V = I − σA Innanzitutto V ≥ 0. Ogni autovalore λ di A `e reale positivo e dunque ogni autovalore 1−σλ di V `e minore di 1. Essendo V una matrice non negativa, per il teorema di Perron–Frobenius il raggio spettrale ρ(V ) (che `e non negativo) di V `e un autovalore di V . Pertanto, anch’esso `e minore di 1 (in pratica significa che tutti gli autovalori sono in modulo minori di 1). Allora V `e una matrice convergente (cio`e limm→∞ V m = 0 (vedi Proposizione 1)) e vale ∞ X 1 −1 −1 −1 A = (σA) = (I − V ) = Vm σ m=0 Pertanto, A−1 `e la somma di una serie di matrici non negative. A.2 Positivit` a di Eulero implicito per equazioni di trasporto-diffusione Dato il problema di trasporto-diffusione (23.7) con condizioni al bordo di Dirichlet omogenee, si pu`o considerare una discretizzazione spaziale a nodi interni tale che il problema semidiscretizzato sia y2 (t) y2′ (t) . .. . = A .. ′ ym−1 (t) ym−1 (t) 166 ` DI EULERO IMPLICITO PER TRASPORTO-DIFFUSIONE167 A.2. POSITIVITA con 0 1 0 ... −1 0 1 ... c ... ... ... A=− 2h 0 . . . −1 0 0 . . . 0 −1 −2 0 1 0 d + 2 h 0 1 0 0 1 0 ... 0 −2 1 . . . 0 ... ... ... . . . 1 −2 1 ... 0 1 −2 Mediante il teorema dei dischi di Gershgorin possiamo dire che gli autovalori di A stanno nel disco di centro −2d/h2 e passante per l’origine. Infatti, il raggio dei dischi vale c c d d + + − + 2h h2 2h h2 Siccome, se il numero di P´eclet di griglia `e minore o uguale a 1, |c|/(2h) ≤ d/h2 , allora tale raggio vale 2d/h2 . La matrice “da invertire” per il metodo di Eulero implicito `e I − kA, ove k `e il passo temporale. Gli autovalori di tale matrice stanno nel disco di centro 1 + k2d/h2 e raggio k2d/h2 e sono pertanto diversi da zero. Dunque, per qualunque k la matrice `e invertibile. Prendiamo adesso σ = 1/(1 + k2d/h2 ) e definiamo V = I − σ(I − kA) Si osserva facilmente che V ≥ 0. Poi, La matrice −σ(I − kA) ha autovalori nel disco di centro −1 e raggio σk2d/h2 < 1. Pertanto V ha autovalori nel disco di centro 0 e ρ(V ) < 1. E si conclude come sopra. Dunque la matrice (I − kA)−1 ha elementi non negativi. Lo stesso per la matrice del metodo dei trapezi (I − kA/2)−1 . Ma mentre per Eulero implicito la matrice (I − kA)−1 `e applicata a y n (che si suppone avere elementi non negativi), per il metodo dei trapezi la matrice (I − k/2A)−1 si applica a (I + kA/2)y n . Se il numero di P´eclet `e minore o uguale a 1, i termini extradiagonali di (I + kA/2) sono non negativi, mentre i termini diagonali lo sono solo per 1 − kd/h2 ≥ 0, cio`e k ≤ h2 /d. Per esempio, per il problema di diffusione ut = uxx t > 0, x ∈ (0, 1) 1) = 0 t>0 u(t, 0) = u(t, 0 x ∈ [0, 1/2) u(0, x) = 1 x ∈ [1/2, 1) 0 x=1 discretizzato con nodi interni e h = 1/50, si hanno i risultati in Figura A.1. 168 APPENDICE A. ALCUNE DIMOSTRAZIONI k = h2 , t = 0.2 k = h, t = 0.2 sispos.m 0.5 0.5 trapezi Eulero implicito 0.4 0.4 0.3 0.3 0.2 0.2 0.1 0.1 0 0 -0.1 -0.1 -0.2 trapezi Eulero implicito -0.2 0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1 Figura A.1: Soluzione al tempo t = 0.2 con i metodi dei trapezi e di Eulero implicito, con k = h (sinistra) e k = h2 (destra). Per le matrici di trasporto-diffusione `e possibile dare un’altra stima per lo spettro. Se decomponiamo A nelle sue parti simmetrica AS (diffusione) e antisimmetrica AAS (trasporto) abbiamo che W (A) ⊆ W (AS ) + W (AAS ). Ma le parti simmetrica e antisimmetrica sono normali e dunque il campo dei valori `e l’involucro convesso dello spettro. Per la parte simmetrica, usando i dischi di Gershgorin e il fatto che gli autovalori sono reali, abbiamo che W (AS ) ⊆ [−4d/h2 , 0] (in realt`a 0 si pu`o escludere perch´e la matrice non `e singolare). Per la parte antisimmetrica, usando i dischi di Gershgorin e il fatto che gli autovalori sono puramente immaginari, abbiamo che W (AAS ) ⊆ i[−|c|/(2h), −|c|/(2h)]. Pertanto il campo dei valori W (A) `e contenuto nel rettangolo [−4d/h2 , 0]+i[−|c|/(2h), −|c|/(2h)] e a maggior ragione lo spettro. Se il numero di P´eclet di griglia vale 1, allora tale rettangolo `e il quadrato circoscritto al disco di centro −2d/h2 e passante per l’origine (dunque non si guadagna informazione rispetto ai dischi di Gershgorin della matrice). Altrimenti, tale rettangolo ha intersezione non banale con il disco. A.3. EQUAZIONE DEL FILO ELASTICO A.3 169 Equazione del filo elastico y P~ (x1 ) ~g (x) u(x) α(x) P~ (x2 ) x1 x2 x Figura A.2: Filo elastico sottoposto a carico ~g . L’equazione del filo elastico (14.1) si ricava nel seguente modo. Con riferimento alla Figura A.2, se il filo si trova a riposo significa che la risultante delle forze `e nulla nell’intervallo [x1 , x2 ] e pertanto (trascurando il peso del filo) Z x2 ~ ~ P (x1 ) + P (x2 ) + ~g (x)dx = 0 x1 In un generico punto x nell’intervallo [x1 , x2 ] si ha tan α(x) = u′ (x) da cui u′ (x) sin α(x) = p ≈ u′ (x) 1 + (u′ (x))2 se α(x) `e piccolo e dunque (u′ (x))2 ≪ 1. Proiettando sull’asse y (tenendo conto che α(x) < 0) otteniamo Z x2 −P (x1 ) sin α(x1 ) + P (x2 ) sin α(x2 ) + g(x)dx = 0 x1 da cui Z x2 x1 d (P (x)u′ (x)) dx = − dx Z x2 g(x)dx x1 170 APPENDICE A. ALCUNE DIMOSTRAZIONI Proiettando sull’asse x, si ottiene invece −P (x1 ) cos α(x1 ) + P (x2 ) cos α(x2 ) = 0 Ancora, se α(x) `e piccolo, allora cos α(x) ≈ 1 e dunque P (x1 ) = P (x2 ) ≡ P Pertanto −u′′ (x) = A.4 g(x) P Equazione della trave L’equazione della trave (11.2) sottoposta a carico e trazione, si ricava nel seguente modo. Con riferimento alla Figura A.3, nell’intervallo [x1 , x2 ] l’e- y P~ P~ (x1 ) T~ (x1 ) ~g (x) x1 P~ u(x) α(x) T~ (x2 ) P~ (x2 ) x2 x Figura A.3: Trave elastica sottoposta a carico ~g e trazione P~ . quilibrio delle forze si scrive Z x2 ~ T (x1 ) + ~g (x)dx + T~ (x2 ) + P~ (x1 ) + P~ (x2 ) = 0 x1 Le forze T~ (x) si chiamano sforzi di taglio e rappresenta la componente verticale delle forze di contatto a cui `e soggetto un corpo. Lo sforzo di taglio T~ (x2 ) A.4. EQUAZIONE DELLA TRAVE 171 ha orientamento opposto a T~ (x1 ) in quanto inteso come reazione dell’azione di −T~ (x2 ) in x > x2 . Proiettando sull’asse y, si ottiene Z x2 T (x1 ) − g(x)dx − T (x2 ) − P (x1 ) sin α(x1 ) + P (x2 ) sin α(x2 ) = 0 x1 Come nel caso del filo elastico, si suppone sin α(x) ≈ u′ (x) e dunque Z x2 Z x2 Z x2 d d − g(x)dx + T (x)dx − (P (x)u′ (x)) dx x1 dx x1 dx x1 Proiettando sull’asse x, otteniamo, come nel caso del filo elastico, P (x1 ) = P (x2 ) ≡ P e pertanto −T ′ (x) − g(x) + P u′′ (x) = 0 Il momento flettente µ(x) `e il momento risultante da tutte le forze verticali, e pertanto nell’intervallo [x1 , x], x ≤ x2 Z x Z x − x1 x µ(x) − µ(x1 ) = T (t)dt − g(t)dt 2 x1 x1 ove si `e pensato il carico come una forza concentrata nel baricentro del segmento [x1 , x]. Dividento per (x − x1 ) e facendo tendere x1 a x si ha µ′ (x) = T (x) Per finire, usando il modello di elasticit` a lineare che stabilisce u′′ (x) = µ(x) E · I(x) si arriva a ove −µ′′ (x) + c(x)µ(x) = g(x) c(x) = P E · I(x) Se P = 0, l’equazione `e uguale a quella del filo elastico, ma il significato `e diverso. Per esempio, una trave appoggiata ai bordi (per esempio x = 0 e x = 1) e sotto un carico costante di densit`a 2, soddisfa l’equazione ( −µ′′ (x) = 2, x ∈ (0, 1) µ(0) = µ(1) = 0 172 APPENDICE A. ALCUNE DIMOSTRAZIONI Infatti, per quanto visto, un carico diretto verso il basso ha intensit`a positiva (al contrario del caso del filo elastico) e l’appoggio ai bordi significa che l`ı non c’`e momento flettente. La soluzione `e µ(x) = x(1 − x) e dunque u′′ (x) = 10x(1 − x) (supponendo E · I(x) ≡ 1/10). La trave soddisfa condizioni di Dirichlet, per esempio u(0) = u(1) = 0. Quindi x4 x3 x u(x) = 10 − + − 12 6 12 Un filo elastico sottoposto ad un carico uniforme diretto verso il basso di intensit`a 2 (e tensione unitaria) soddisfa invece ( −u′′ (x) = −2, x ∈ (0, 1) u(0) = u(1) = 0 e dunque u(x) = x(x − 1) A.4.1 Appoggi ottimali per una trave T~ (x) ~q −L −l x −~qL l L −~qL Figura A.4: Appoggi ottimali per una trave. A.4. EQUAZIONE DELLA TRAVE 173 Si vuole determinare dove posizionare gli appoggi a sostegno di una trave omogenea, non in trazione, sottoposta a carico uniforme in modo da minimizzarne la deformazione. Con riferimento alla Figura A.4 e limitandosi a x ≥ 0 per simmetria, lo sforzo di taglio T (x) `e ( − qx, 0≤x<l T (x) = qL − qx, l ≤ x ≤ L da cui il momento flettente 1 1 − qx2 + qLl − qL2 , 0 ≤ x < l 2 2 µ(x) = 1 1 qLx − qx2 − qL2 , l≤x≤L 2 2 in cui le costanti di integrazione sono state scelte per avere un momento continuo e µ(L) = 0. Ora u′′ (x) = µ(x) (assumendo E · I = 1) e si deve imporre la continuit`a di u′ (x) (due condizioni) e il passaggio di u(x) da (l, 0) (due condizioni). Sfruttando ancora la simmetria del problema, si trova q − x4 + 24 u(x) = − q x4 + 24 q q q q q Llx2 − L2 x2 + l4 − Ll3 + qL2 l2 , 0≤x<l 2 4 24 2 4 q 3 q 2 2 q 2 q 2q q Lx − L x + Ll x + l4 − Ll3 + L2 l2 , l ≤ x ≤ L 6 4 2 24 3 4 I punti critici di questa funzione sono x1 = 0 √ x = √6Ll − 3L2 se l ≥ L/2 e x2 < l, cio`e L/2 ≤ l < (3 − 6)L 2 √ √ √ x3 = L − 3 L3 − 3Ll2 se l ≤ x3 ≤ L, cio`e (3 − 6)L ≤ l ≤ 3L/3 x4 = L estremo (per ricavare x3 si aggiunge e toglie qL3 /6 alla derivata del secondo pezzo di u(x)). Valutando u(x) nei punti critici si ottengono quattro funzioni dipendenti da l: occorre stabilire per quale valore di l il massimo del valore assoluto di tali funzioni `e minimo. Aiutandosi con un grafico, si scopre che tale l si ottiene dall’intersezione delle due funzioni corrispondenti a x1 = 0 e x4 = L, per cui l ottimale `e soluzione di q 4 q 3 q 22 l − Ll + L l = 24 2 4 q q q q q 2q q − L4 + L4 − L4 + L2 l2 + l4 − Ll3 + L2 l2 24 6 4 2 24 3 4 174 APPENDICE A. ALCUNE DIMOSTRAZIONI √ √ √ Si ottiene l = ( 3 sin(arctan( 39/5)/3) − cos(arctan( 39/5)/3) + 1)L ≈ 0.5537 · L. Si osservi che la banale derivazione u(4) (x) = µ′′ (x) = −q avrebbe portato al problema (4) x ∈ (−L, L) −u (x) = q, u(−l) = u(l) = 0 u′′ (−L) = u′′ (L) = 0 la cui soluzione forte (cio`e C 4 ), del tutto diversa, `e u(x) = − A.5 q q q 4 q 2 2 x + L x + l 4 − L2 l 2 24 4 24 4 Lunghezza della catenaria L’equazione della catenaria si riferisce alla curva assunta da una corda flessibile e inestensibile appesa agli estremi. Il parametro a presente nell’equazione (11.9) dipende allora solo dalla lunghezza l della corda, data da Z 1 −1 p 1 + (u′ (x))2 dx = 2 sinh a =l a Per risolvere l’equazione in a f (a) = 2 sinh a − al = 0, si pu`o usare il metodo di Newton a partire dal punto a0 soluzione di a30 2 a0 + − a0 l = 0 6 Infatti, f (a) `e convessa e sinh(a) = a + a3 /6 + a5 /5! + O(a7 ) e quindi a < a0 . A.6 A-stabilit` a di un metodo di Runge–Kutta semiimplicito Verifichiamo che il metodo di Runge–Kutta semiimplicito (19.9) `e A-stabile. Applicato al solito problema d`a ξ1 = yn + ka1,1 λξ1 ξ2 = yn + ka2,1 λξ1 + ka2,2 λξ2 y n+1 = yn + kb1 λξ1 + kb2 λξ2 ` DI UN METODO DI RUNGE–KUTTA SEMIIMPLICITO175 A.6. A-STABILITA 10 5 0 -5 -10 -10 -5 0 5 10 Figura A.5: Regione di assoluta stabilit`a (bianca) per il metodo di Runge– Kutta semiimplicito (19.9). e dunque a2,1 z 1 + 1−a1,1 z 1 r(kλ) = r(z) = 1 + b1 z + b2 z 1 − a1,1 z 1 − a2,2 z Quindi, chiedere |r(z)| < 1 `e come chiedere (tenendo conto che a1,1 = a2,2 e che b1 + b2 = 1) |(1 − a1,1 z)2 + z(1 − a1,1 z) + b2 a2,1 z 2 |2 < |(1 − a1,1 z)2 | da cui dividendo per a1,1 e sostituendone il valore 2 2 √ 3 + √3 √ √ √ 3 2 2 − z + (1 − z − 2z + 3 − 3)z + 3 − 3 3 − <0 6 3 Scrivendo ora z come x + iy, si trova √ 4 √ √ √ √ 3y + 2 3x2 y 2 − 24xy 2 + 3x4 − 24x3 + 24 3x2 + (72 3 − 144)x > 0 da cui segue subito che la disuguaglianza `e soddisfatta se x = ℜ(z) < 0. Appendice B Estrapolazione di Richardson Procedendo con gli sviluppi in serie di Taylor per le differenze finite, si trova u′ (xi ) = ∆u(xi ) − h2 (3) u (xi ) + O(h4 ) 6 u′′ (xi ) = ∆2 u(xi ) − h2 (4) u (xi ) + O(h4 ) 12 e, analogamente, Data dunque l’approssimazione uhi di un problema ai limiti mediante differenze finite centrate con passo h che soddisfa u(xi ) = uhi + ci h2 + O(h4 ) 2 h h/2 + O(h4 ) u(xi ) = ui + ci 2 si ha h/2 4ui − uhi = u(xi ) + O(h4 ) 3 176 Appendice C Temi d’esame 29-06-2010 1. Si implementi il metodo di Runge–Kutta definito dal tableau 0 1 2 1 2 1 2 1 2 1 0 0 0 1 3 4 5 32 7 32 13 32 1 − 32 − 12 7 3 7 3 13 6 − 16 3 e se ne determini numericamente l’ordine. 2. Si usi il metodo di Runge–Kutta implementato sopra per determinare numericamente il periodo del pendolo ′′ θ (t) = −g sin(θ(t)), π θ(0) = 3 ′ θ (0) = 0 t>0 e si dica se `e minore, maggiore o uguale al periodo del pendolo linearizzato ′′ θ (t) = −gθl (t), t > 0 l π θl (0) = 3 ′ θl (0) = 0 177 178 APPENDICE C. TEMI D’ESAME 3. Usando differenze finite del secondo ordine per lo spazio e il metodo di Eulero implicito per il tempo si discretizzi il problema di diffusionereazione ∂u 1 ∂2u 1 ∂t (t, x) = 100 ∂x2 (t, x) + 5u(t, x) u(t, x) − 2 (1 − u(t, x)), t > 0, x ∈ (0, 1) u(0, x) = 4x(1 − x), x ∈ (0, 1) u(t, 0) = u(t, 1) = 0, t>0 4. Si mostri che il metodo usato per risolvere i sistemi non lineari e il metodo di Eulero implicito hanno il corretto ordine di convergenza. 20-07-2010 5. Si consideri il metodo implicito ad un passo h 1 y n+1 = y n + hf tn + , (y n + y n+1 ) , 2 2 n≥0 per la soluzione di un problema ai valori iniziali ( y ′ (t) = f (t, y(t)), t > t0 y(t0 ) = y 0 Lo si implementi e lo si applichi al problema autonomo ′ y (t) = y(t)(1 − y(t)), t > 0 y(0) = 1 2 per determinare numericamente l’ordine con cui viene approssimata la soluzione y(t∗ ) al tempo t∗ = 1. 6. Si calcoli la soluzione analitica del problema di diffusione non omogeneo ∂u ∂ 2u (t, x) = (t, x) − (sin t)(−x2 + 2x) + 2 cos t, t ≥ 0, x ∈ (0, 1) 2 ∂t ∂x u(0, x) = −x2 + 2x, x ∈ (0, 1) u(t, 0) = 0, ∂u (t, 1) = 0, ∂x t≥0 t≥0 e si mostri l’ordine di convergenza temporale del metodo Eulero esponenziale per approssimare la soluzione u(t∗ , x) al tempo t∗ = 1. 179 7. Per lo stesso problema, si mostri l’ordine di convergenza temporale del metodo esponenziale—punto medio. 15-09-2010 8. Si consideri il metodo di Runge–Kutta semi-implicito ! i X f i = f tn + ci k, y n + k ai,j f j , i = 1, 2 j=1 y n+1 = y n + k 2 X bj f j j=1 di tableau c1 a1,1 a1,2 c2 a2,1 a2,2 = b1 b2 √ 3+ 3 6√ 3− 3 6 √ 3+ 3 6√ − 33 0 √ 3+ 3 6 1 2 1 2 per la soluzione di un problema ai valori iniziali ( y ′ (t) = f (t, y(t)), t ≥ t0 y(t0 ) = y 0 Lo si implementi per il problema autonomo ′ y (t) = y(t)(1 − y(t)), t ≥ 0 y(0) = 1 2 e si determini numericamente l’ordine con cui viene approssimata la soluzione y(t∗ ) al tempo t∗ = 1. 9. Si applichi il metodo delle linee al problema di diffusione non omogeneo ∂ 2u ∂u (t, x) = (t, x) + (2x − x2 ) cos t + 2 sin t, t ≥ 0, x ∈ (0, 1) 2 ∂t ∂x u(0, x) = 0, x ∈ (0, 1) u(t, 0) = 0, t≥0 u(t, 1) = sin t, t≥0 e si mostri l’ordine di convergenza temporale del metodo Eulero implicito con cui viene approssimata la soluzione u(t∗ , x) al tempo t∗ = 1. 180 APPENDICE C. TEMI D’ESAME 30-09-2010 10. Si risolva mediante il metodo delle differenze finite il problema ai limiti non lineare 1 ′′ u (x) = (32 + 2x3 − u(x)u′ (x)), x ∈ (1, 3) 8 u(1) = 17 43 u(3) = 3 e si confronti il numero di iterazioni necessarie alla convergenza usando il metodo di Newton esatto e un metodo di Newton inesatto (la soluzione analitica `e u(x) = x2 + 16/x). 11. Si applichi il metodo delle linee al problema di diffusione non omogeneo ∂ 2u ∂u (t, x) = (t, x) + 2et sin x, t > 0, x ∈ (0, π/2) 2 ∂t ∂x u(0, x) = sin x, x ∈ (0, π/2) u(t, 0) = 0, ∂u (t, π/2) = 0, ∂x t≥0 t≥0 e si mostri l’ordine di convergenza temporale del metodo Eulero esponenziale con cui viene approssimata la soluzione analitica u(t∗ , x) al tempo t∗ = 1. 01-02-2011 12. Si risolva il sistema di ODEs ′ u (t) = −2v(t)u(t) v ′ (t) = u(t)2 + z(t)2 − v(t)2 − 1 z ′ (t) = −2(v(t) + u(t))z(t) con dato iniziale u(0) = 1 v(0) = 2 z(0) = 15 con il metodo di Crank–Nicolson fino ad un tempo finale t∗ = 1. Presa come soluzione di riferimento quella ottenuta con 1000 passi temporali, si mostri l’ordine del metodo e la corretta convergenza del metodo di Newton. 181 13. Si applichi il metodo delle linee al problema di convezione-diffusionereazione nel dominio (t, x) ∈ [0, 1] × [0, 1] ∂u ∂ 2u ∂u (t, x) = ε (t, x) + (t, x) + ρu(t, x)(u(t, x) − 1/2)(1 − u(t, x)) ∂t ∂x2 ∂x u(0, x) = 10x2 (1 − x)2 + 1/2 ∂u (t, 0) = ∂u (t, 1) = 0 ∂x ∂x (ove ε = 1/100 e ρ = 10) e si mostri l’ordine di convergenza del metodo Eulero esponenziale, avendo preso come soluzione di riferimento quella ottenuta con un passo spaziale e un passo temporale entrambi pari a 1/100. 24-02-2011 14. Si risolva mediante un metodo di shooting il problema ai limiti 1 u′′ (x) = (32 + 2x3 − u(x)u′ (x)), x ∈ (1, 3) 8 u(1) = 17 43 u(3) = 3 Sapendo che la soluzione analitica `e u(x) = x2 + 16/x, si determini sperimentalmente il numero minimo di passi temporali per avere un errore in norma infinito minore di 10−2 . 15. Si applichi il metodo delle linee al problema di diffusione non omogeneo ∂ 2u 5 t x ∂u (t, x) = (t, x) + e sin , 2 ∂t ∂x 4 2 u(0, x) = sin x , 2 u(t, 0) = 0, ∂u (t, π) = 0, ∂x t > 0, x ∈ (0, π) x ∈ (0, π) t≥0 t≥0 e si mostri l’ordine di convergenza temporale del metodo esponenziale punto medio con cui viene approssimata la soluzione analitica u(t∗ , x) al tempo t∗ = 1. 21-06-2011 182 APPENDICE C. TEMI D’ESAME 16. Si risolva il seguente problema differenziale ′′ u (x) + u(x) = 2 cos(x), x ∈ (0, 1] u(0) = 0 u′ (0) = 0 usando un metodo almeno del secondo ordine rispetto al passo di discretizzazione. 17. Si applichi il metodo delle linee al problema di diffusione-reazione ∂u 1 ∂ 2u (t, x) = (t, x) + sin(u(t, x)), t > 0, x ∈ (0, 1) 2 ∂t 100 ∂x u(0, x) = 10x(1 − x)2 , x ∈ [0, 1] u(t, 0) = 0, t≥0 ∂u (t, 1) = 0, t≥0 ∂x usando differenze finite centrate nello spazio e il metodo dei trapezi nel tempo. Si mostri il corretto ordine di convergenza del metodo dei trapezi per l’approssimazione della soluzione al tempo t∗ = 1. 18. Per il problema sopra, si proponga un metodo di Newton modificato per la risoluzione dei sistemi non lineari. Si confrontino i tempi computazionali (con i comandi tic, toc) rispetto al caso di metodo di Newton esatto quando si usino un passo spaziale ed un passo temporale 1 entrambi uguali a 100 . 11-07-2011 19. Si risolva il seguente problema ai limiti 2 ′′ u(x) + 2 − ex , x ∈ (0, 1) u (x) = e u′ (0) = 0 u(1) = 1 ` possibile usando il metodo delle differenze finite di ordine due. E verificare l’ordine di convergenza? Perch´e? 183 20. Si applichi il metodo delle linee al problema di ∂u 1 ∂ 2u (t, x) = (t, x) + cos(u(t, x)), ∂t 50 ∂x2 u(0, x) = 10x2 (1 − x) + 1, ∂u (t, 0) = 0, ∂x u(t, 1) = 1, diffusione-reazione t > 0, x ∈ (0, 1) x ∈ [0, 1] t≥0 t≥0 usando differenze finite centrate nello spazio e il metodo Eulero implicito nel tempo. Si mostri il corretto ordine di convergenza del metodo di Eulero implicito per l’approssimazione della soluzione al tempo t∗ = 1. 15-09-2011 21. La legge oraria (lineare) del moto di un proiettile sottoposto ad attrito viscoso in regime laminare `e ′′ ′′ ′ ′ x (t) = −Bx (t) y (t) = −By (t) − g x(0) = 0 y(0) = 0 x′ (0) = v cos(α) y ′ (0) = v sin(α) 0 0 ove B = b/m, m = 0.5 la massa del proiettile e b = 0.01 il coefficiente d’attrito, g = 9.81 l’accelerazione di gravit`a, v0 = 200 il modulo della velocit`a iniziale e α = π/3 l’angolo di gittata. Determinare, mediante una opportuna strategia, il punto di atterraggio x(T ) del proiettile. 22. Si applichi il metodo delle linee al problema di diffusione-reazione 1 ∂ 2u ∂u = + u(1 − u)(u − 1/2), t > 0, x ∈ (0, 1) ∂t 100 ∂x2 x ∈ [0, 1] u(0, x) = 10x2 (1 − x)2 , ∂u (t, 0) = 0, t≥0 ∂x ∂u (t, 1) = 0, t≥0 ∂x usando differenze finite centrate nello spazio e il metodo dei trapezi nel tempo. Si mostri il corretto ordine di convergenza del metodo dei trapezi per l’approssimazione della soluzione al tempo t∗ = 1. 29-09-2011 184 APPENDICE C. TEMI D’ESAME 23. Si risolva il seguente problema differenziale ′′ 3 3 y (x) = 2y(x) − 6y(x) − 2x , y(1) = 2 y(2) = 5 2 x ∈ (1, 2) mostrando il corretto ordine di convergenza del metodo scelto. 24. Si applichi il metodo delle linee al problema di diffusione non omogeneo ∂ 2u x 5 t ∂u (t, x) = e cos , t > 0, x ∈ (π, 2π) (t, x) + ∂t ∂x2 4 2 u(0, x) = cos x , x ∈ (π, 2π) 2 u(t, π) = 0, t≥0 ∂u (t, 2π) = 0, t≥0 ∂x e si mostri il corretto ordine di convergenza temporale del metodo esponenziale punto medio con cui viene approssimata la soluzione analitica u(t∗ , x) al tempo t∗ = 1. 03-02-2012 25. Si risolva il seguente problema differenziale y ′ (x) ′′ y (x) + x = cos(y(x)) x ∈ (0, 1] y(0) = 1 ′ y (0) = 0 Si descriva esattamente quale metodo `e stato usato e se ne mostri il corretto ordine di convergenza. Si discuta inoltre il caso in cui y(0) = π/2. 26. Si applichi il metodo delle linee al problema di diffusione non omogeneo ∂u ∂ 2u 3 (t, x) = (t, x) + et/2 sin x, t > 0, x ∈ (−π, π/2) ∂t 2 ∂x 2 u(0, x) = sin x, x ∈ (−π, π/2) u(t, −π) = 0, ∂u (t, π/2) = 0, ∂x t≥0 t≥0 185 usando differenze finite nello spazio e l’integratore esponenziale punto medio nel tempo. Si mostri il corretto ordine di convergenza spaziale con cui viene approssimata la soluzione u(t∗ , x) al tempo t∗ = 1. 24-02-2012 27. Si risolva il seguente problema differenziale ai valori iniziali ′ y1 (t) = −2y1 (t)y2 (t) y ′ (t) = y (t)2 − y (t)2 + y (t)2 − 1 1 2 3 2 ′ y3 (t) = −2(y1 (t) + y2 (t))y3 (t) y1 (0) = y2 (0) = y3 (0) = 1 fino al tempo t∗ = 1 usando il metodo Runge–Kutta semiimplicito di tableau 0 1 0 1 2 1 2 1 2 1 2 e se ne calcoli numericamente l’ordine. 28. Si applichi il metodo delle linee al problema di diffusione lineare ∂u x − x2 ∂ 2 u (t, x) = · 2 (t, x), t > 0, x ∈ (0, 1) 2 ∂x ∂t u(0, x) = x2 − x, x ∈ (0, 1) u(t, 0) = 0, t≥0 u(t, 1) = 0, t≥0 usando differenze finite nello spazio e il metodo di Eulero implicito nel tempo. Si mostri il corretto ordine di convergenza temporale con cui viene approssimata la soluzione al tempo t∗ = 1. Qual `e l’ordine di convergenza spaziale? 21-06-2012 29. Dei seguenti due metodi multistep 18 9 2 6 y n+2 + y n+1 − y n = k f (tn+3 , y n+3 ) 11 11 11 11 9 3 6 18 y n+3 − y n+2 + y n+1 − y n = k f (tn+3 , y n+3 ) 11 11 11 11 si dica quale `e consistente e perch´e e se ne determini numericamente l’ordine. y n+3 − 186 APPENDICE C. TEMI D’ESAME 30. Si risolva il problema differenziale di diffusione-trasporto-reazione ∂u ∂u ∂ 2u + c = d + ρu(u − 1/2)(1 − u), t > 0, x ∈ (0, 1) 2 ∂t ∂x ∂x u(t, 0) = 1, t>0 ∂u (t, 1) = 0, t>0 ∂x u(0, x) = (x − 1)2 , x ∈ (0, 1) con d = 0.01, c = 8, ρ = 50, usando differenze finite nello spazio (con passo 1/100) ed un opportuno metodo implicito nel tempo fino al tempo finale t∗ = 0.1, usando il metodo di Newton per la risoluzione dei sistemi non lineari. A cosa sono dovute le oscillazioni vicino al bordo x = 1 al tempo finale? Come si possono eliminare? 05-07-2012 31. Si risolva il seguente problema ai limiti ′′ ′ 2 2x u (x) − u (x) + u (x) = e , u′ (0) = 1 u(1) = e x ∈ (0, 1) con il metodo delle differenze finite. Si verichi il corretto ordine di approssimazione di u′ (0). 32. Si applichi il metodo delle linee al problema di diffusione non omogeneo ∂u ∂ 2u x 2t (t, x) = 4 (t, x) + 3e , cos 2 ∂t ∂x 2 u(0, x) = cos x , 2 ∂u (t, 0) = 0, ∂x u(t, π) = 0, t > 0, x ∈ (0, π) x ∈ (0, π) t≥0 t≥0 e si mostri il corretto ordine di convergenza temporale del metodo esponenziale punto medio con cui viene approssimata la soluzione analitica u(t∗ , x) al tempo t∗ = 1. 10-09-2012 187 33. Dato il sistema differenziale del primo ordine ′ y1 (t) = y2 (t)y3 (t) sin t − y1 (t)y2 (t)y3 (t) ′ 1 y2 (t) = −y1 (t)y3 (t) sin t + y1 (t)y3 (t) 20 1 y3′ (t) = y12 (t)y2 (t) − y1 (t)y2 (t) 20 p si dimostri che m(t) = y1 (t)2 + y2 (t)2 + y3 (t)2 rimane costante nel tempo. Si applichi il metodo con dato iniziale √ di Eulero implicito, ∗ y1 (0) = y2 (0) = y3 (0) = 3/3 fino al tempo t = 1 e si determini sperimentalmente il numero di passi temporali necessari perch´e |m(0)− ˜ m(1)| ˜ ≤ 2 · 10−5 , ove m(t) ˜ `e l’approssimazione di m(t) calcolata sulla soluzione numerica. 34. Si risolva il seguente problema di convezione-diffusione ∂u ∂ 2u ∂u (t, x) = 4 (t, x) − 2 (t, x), t ≥ 0, x ∈ (0, 1) 2 ∂t ∂x ∂x u(0, x) = x2 , x ∈ (0, 1) ∂u (t, 0) = 0, t≥0 ∂x u(t, 1) = 1, t≥0 usando differenze finite del secondo ordine con passo h = 1/50 nello spazio e il metodo di Eulero esplicito nel tempo fino a t∗ = 1. Perch´e serve un passo temporale minore di circa 1/20000 per avere convergenza? Si mostri infine il corretto ordine di convergenza temporale. 24-09-2012 35. Si trovi sperimentalmente l’ordine del seguente metodo di Runge–Kutta semiimplicito 1 2 1 2 1 e si dimostri che equivale al metodo punto medio implicito k y n + y n+1 y n+1 = y n + kf tn + , 2 2 Sugg.: per quest’ultimo si calcoli (y n + y n+1 )/2. . . 188 APPENDICE C. TEMI D’ESAME 36. Si risolva il seguente problema di convezione-diffusione-reazione ∂u ∂ 2u ∂u +c = d 2 (t, x) + ρu2 (1 − u), t ≥ 0, x ∈ (0, 1) ∂t ∂x ∂x u(0, x) = −x2 + 1, x ∈ (0, 1) ∂u (t, 0) = 0, t≥0 ∂x u(t, 1) = 0, t≥0 con d = 0.1, c = 4, ρ = 50, usando differenze finite nello spazio (con passo 1/100) ed un metodo del secondo ordine implicito nel tempo fino al tempo finale t∗ = 0.1, usando il metodo di Newton per la risoluzione dei sistemi non lineari. Si mostri il corretto ordine di convergenza temporale al tempo finale. 06-02-2013 37. Si risolva il seguente problema differenziale s y ′ (x) = 2 − y(x) , x > 0 y(x) y(0) = 0 usando un opportuno metodo implicito. Si mostri il corretto ordine di convergenza con cui viene approssimata la soluzione y(x∗ ) per x∗ = π/2. (Sugg.: y ′ (x) > 0 pertanto y(x) `e crescente e dunque y(x) > 0 per x > 0.) 38. Si risolva il seguente problema di diffusione-trasporto 1 ∂ 2u ∂u ∂u (t, x) = (t, x) − (t, x) + e−t/2 cos(x) t > 0, x ∈ (0, π/2) 2 ∂t 2 ∂x ∂x u(0, x) = sin(x) x ∈ (0, π/2) u(t, 0) = 0 ∂u u(t, π/2) = 0 ∂x t>0 t>0 usando le differenze finite nello spazio e il metodo esponenziale—punto medio nel tempo. Si mostri il corretto ordine di convergenza temporale con cui viene approssimata la soluzione u(t∗ , x) al tempo finale t∗ = 1. 20-02-2013 189 39. Si risolva il problema differenziale ′′ ′ u (x) = −3u (x) + u(x) − 2 sin x + 3 cos x, x ∈ (0, 2π) u′ (0) = 1 u(2π) = 0 mostrando il corretto ordine di convergenza del metodo scelto. 40. Si applichi il metodo delle linee al problema di diffusione-reazione ∂u 1 ∂ 2u (t, x) = (t, x) + sin(u(t, x)), t > 0, x ∈ (0, 1) ∂t 50 ∂x2 u(0, x) = 10x(1 − x)2 , x ∈ [0, 1] u(t, 0) = 0, t≥0 ∂u (t, 1) = 0, t≥0 ∂x usando differenze finite centrate nello spazio con passo h = 1/49. Si mostrino i corretti ordini di convergenza dei metodi Eulero esponenziale e Eulero–Rosenbrock esponenziale con cui viene approssimata una soluzione di riferimento al tempo t∗ = 1. 27-06-2013 41. Si determini analiticamente l’ordine del seguente metodo multistep y n+3 − 18 9 2 6 y n+2 + y n+1 − y n = k f (tn+3 , y n+3 ) 11 11 11 11 Lo si applichi poi al problema y ′ (t) = − 1 y(t) 1 − y(t) , 2 3 y(0) = 1 t>0 e si determini l’errore rispetto alla soluzione analitica 1 y(t) = 3e− 2 t 1 2 + e− 2 t al tempo t∗ = 10, usando 10 passi temporali. (Per i valori iniziali y1 e y2 si usi pure la soluzione analitica.) 190 APPENDICE C. TEMI D’ESAME 42. Si applichi il metodo delle linee al problema di diffusione-trasporto 1 ∂ 2u ∂u ∂u (t, x) = (t, x) + 6 (t, x) t > 0, x ∈ (0, 1) 2 ∂t 100 ∂x ∂x u(0, x) = 5x2 x − 4 , x ∈ [0, 1] 5 ∂u (t, 0) = 0, t≥0 ∂x u(t, 1) = 1, t≥0 usando differenze finite centrate nello spazio con un opportuno passo di discretizzazione spaziale. Si mostri il corretto ordine di convergenza del metodo BDF di ordine 2 al tempo t∗ = 0.1. 18-07-2013 43. Si consideri il seguente problema differenziale ′′ u (x) ′ 10 + 900u (x) + 500(sin(u(x)) + u(x)) = 0, x ∈ (0, 10] u(0) = π ′ u (0) = 0 Lo si risolva con un opportuno metodo esplicito, giustificando la scelta del passo di discretizzazione. 44. Si applichi il metodo delle linee al problema di ∂u 1 ∂ 2u (t, x) = (t, x) + sin(u(t, x)) ∂t 100 ∂x2 u(0, x) = 5x2 (x − 1), ∂u (t, 0) = 0, ∂x u(t, 1) = 0, diffusione-reazione t > 0, x ∈ (0, 1) x ∈ [0, 1] t≥0 t≥0 usando differenze finite centrate nello spazio e il metodo punto medio implicito k y n + y n+1 y n+1 = y n + kf tn + , 2 2 nel tempo. Si mostri il corretto ordine di convergenza temporale per la soluzione al tempo t∗ = 1. 05-09-2013 191 45. Si risolva il seguente problema differenziale 1 y ′′′ (x) + y(x)y ′′ (x) = 0, x ∈ (0, 1) 2 y(0) = 0 y ′ (0) = 0 y ′′ (0) = 10 con un opportuno metodo del secondo ordine implicito. Che valore dovrebbe y ′′ (0) affinch´e risultasse y ′ (1) = 11? 46. Si applichi il metodo delle linee al problema di ∂u 1 ∂ 2u (t, x) = (t, x) + cos(u(t, x)), ∂t 20 ∂x2 u(0, x) = 10x2 (1 − x), ∂u (t, 0) = 0, ∂x u(t, 1) = 0, diffusione-reazione t > 0, x ∈ (0, 1) x ∈ [0, 1] t≥0 t≥0 usando differenze finite centrate nello spazio con passo h = 1/49. Si mostrino i corretti ordini di convergenza dei metodi Eulero esponenziale e Eulero–Rosenbrock esponenziale con cui viene approssimata una soluzione di riferimento al tempo t∗ = 1. 19-09-2013 47. Data la funzione u(x) che soddisfa il seguente problema differenziale (log ≡ loge ≡ ln) 2 2 ′ ′′ u (x) = x u (x) − x2 u(x) + sin(log x), x ∈ (1, 2) u(1) = 1 u(2) = 2 si calcoli quanto vale u′ (2) con almeno 4 cifre significative corrette. 48. Si applichi il metodo delle linee al problema di diffusione-reazione π π 1 ∂ 2u ∂u 2 −2t 2 (t, x) = (t, x) + u (t, x) − e sin (2x), t > 0, x ∈ , ∂t 4 ∂x2 4 2 h i π π u(0, x) = sin(2x), x∈ , 4 2 ∂u π t, = 0, t≥0 ∂x 4 u t, π = 0, t≥0 2 192 APPENDICE C. TEMI D’ESAME usando differenze finite centrate nello spazio e il metodo di Eulero implicito nel tempo. Si mostri il corretto ordine di convergenza temporale con cui viene approssimata la soluzione analitica u(t, x) al tempo t∗ = 1. 11-02-2014 49. Si risolva il seguente problema differenziale ′ y1 (t) = −2y1 (t)y2 (t) y ′ (t) = y1 (t)2 − y2 (t)2 + y3 (t) − 1 2 y 3′ (t) = −4(y1 (t) + y2 (t))y3 (t) √ y1 (0) = 1/2, y2 (0) = 2, y3 (0) = 10 fino al tempo t∗ = 1 usando il metodo Eulero–Rosenbrock esponenziale e se ne mostri l’ordine di convergenza per l’approssimazione di y(t∗ ). 50. Si consideri il seguente problema di diffusione-trasporto π ∂u ∂u ∂ 2u π −t (t, x) + c (t, x) = d 2 (t, x) + c e cos x t > 0, x ∈ (0, 1) ∂t ∂x ∂x 2 2 u(t, 0) = 0 t>0 ∂u (t, 1) = 0 t>0 ∂x π u(0, x) = sin x x ∈ (0, 1) 2 ove c = 150 e d = 4/π 2 e se ne calcoli la soluzione analitica. Usando il metodo dei trapezi nel tempo con passo k = 1/200, si mostri il corretto ordine di convergenza spaziale con cui viene approssimata la soluzione analitica al tempo t∗ = 1 usando la diffusione articiale φU (Pe) corrispondente allo schema upwind e φSG (Pe) corrispondente allo schema Scharfetter–Gummel, ove Pe `e il numero di P´eclet di griglia ch/(2d). 25-02-2014 51. Si risolva il seguente problema differenziale ′′ ′ −x x u (x) + u (x) + e u(x) = e , x ∈ (0, 1) u(0) + u′ (0) = 0 u(1) = 1 con un metodo del secondo ordine. Si verifichi che la condizione al bordo x = 0 `e soddisfatta dalla soluzione numerica. 193 52. Si applichi il metodo delle linee al problema di diffusione-reazione ∂u 1 ∂ 2u (t, x) = (t, x) + cos(u(t, x)) t > 0, x ∈ (0, 1) 2 ∂t 50 ∂x u(0, x) = x(x − 1)2 , x ∈ [0, 1] u(t, 0) = 0, t≥0 ∂u (t, 1) = 0, t≥0 ∂x usando differenze finite centrate nello spazio e il metodo Runge–Kutta di tableau 1 a 2 b (a e b da determinare). Si mostri il corretto ordine di convergenza temporale con cui viene approssimata la soluzione al tempo t∗ = 1. 01-07-2014 53. Si consideri il problema differenziale ( y ′ (t) = λ(y(t) − cos(t)), t > 0 y(0) = 0 con λ = −20. (a) Se ne determini la soluzione analitica. (Sugg.: variazione delle costanti). (b) Si mostri il corretto ordine di convergenza del metodo Runge– Kutta semiimplicito di tableau √ 3+ 3 6 √ 3− 3 6 √ 3+ 3 6 √ − 33 1 2 √ 3+ 3 6 1 2 nell’approssimazione di y(t∗ ), con t∗ = 1. 54. Si consideri il seguente problema di diffusione-reazione ∂u 1 ∂ 2u (t, x) = (t, x) + u2 (t, x) t > 0, x ∈ (0, 1) 2 ∂t 20 ∂x ∂u (t, 0) = 0 t>0 ∂x u(t, 1) = 1 t>0 2 u(0, x) = x 194 APPENDICE C. TEMI D’ESAME Usando il metodo delle linee, si mostri il corretto ordine di convergenza del metodo Eulero–Rosenbrock esponenziale per l’approssimazione di u(t∗ , x), con t∗ = 1. 29-09-2014 55. Si risolva il problema differenziale d2 d − u(x) + (1 − u(x))2 = 0 2 dx dx u(1) = 0 u(2) = 1 2 e si mostri il corretto ordine di convergenza rispetto alla soluzione analitica u(x) = 1 − 1/x. 56. Si risolva il problema differenziale ∂2 ∂ u(t, x) = u(t, x) − 3u(t, x) + x sin(t), ∂t ∂x2 u(0, x) = sin x , 2 u(t, 0) = 0, ∂u (t, π) = 0, ∂x t > 0, x ∈ (0, π) x ∈ (0, π) t≥0 t≥0 con il metodo esponenziale punto medio e se ne mostri il corretto ordine di convergenza al tempo finale t∗ = 1. Parte 5 Bibliografia 195 Bibliografia [1] J. P. Boyd, Chebyshev and Fourier Spectral Methods, DOVER Publications, Inc., 2000. http://www-personal.umich.edu/~jpboyd/BOOK_Spectral2000.html [2] C. Canuto, M. Y. Hussaini, A. Quarteroni, and T. A. Zang, Spectral Methods in Fluid Dynamics, Springer-Verlag, 1986. [3] V. Comincioli, Analisi numerica: metodi, modelli, applicazioni, McGraw– Hill, 1995. [4] E. Hairer and G. Wanner, Solving Ordinary Differential Equations II, Stiff and Differential-Algebraic Problems, Springer, Second Revised Edition, 2002. [5] E. Hairer, S. P. Nørsett, and G. Wanner, Solving Ordinary Differential Equations I, Nonstiff Problems, Springer, Second Revised Edition, 2000. [6] W. Hundsdorfer, Numerical Solution of Advection-Diffusion-Reaction Equations, Lecture notes, Thomas Stieltjes Institute, 2000. http://homepages.cwi.nl/~willem/Coll_AdvDiffReac/notes.pdf [7] A. Iserles, A First Course in the Numerical Analysis of Differential Equations, Cambridge Texts in Applied Mathematics, second ed., 2009. [8] R. J. Leveque, Numerical Methods for Conservation Laws, Lectures in Mathematics, Birkh¨auser, 1992. [9] A. Quarteroni, Modellistica numerica per problemi differenziali, Springer, terza edizione, 2006. 196
© Copyright 2024 Paperzz