Appunti di Metodi Numerici per l’Ingegneria Davide Cavalca Anno accademico 2006/07 Copyright ©2006,2007 Davide Cavalca. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no FrontCover Texts, and no Back-Cover Texts. A copy of the license is included in the Appendix B, entitled “GNU Free Documentation License”. Copyright ©2006,2007 Davide Cavalca. È dato il permesso di copiare, distribuire e/o modificare questo documento seguendo i termini della GNU Free Documentation License, Versione 1.2 o ogni versione successiva pubblicata dalla Free Software Foundation; senza Sezioni Non Modificabili, senza Testi Copertina, e senza Testi di Retro Copertina. Una copia della licenza è acclusa nell’Appendice B, dal titolo “GNU Free Documentation License”. Hanno contribuito a questo lavoro: • Davide Cavalca: autore originale; • Angelo Stramieri: aiuto nella revisione, diverse correzioni e suggerimenti. Indice Indice iii Elenco delle figure vii Elenco delle tabelle ix 1 Introduzione 1.1 Informazioni sul corso . . . . . . . 1.2 Esempi . . . . . . . . . . . . . . . . 1.2.1 Crescita di una popolazione 1.2.2 Modello preda-predatore . . 1.2.3 Oscillatore armonico . . . . 1.3 Problemi di Cauchy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 1 3 4 4 5 2 Risoluzione di problemi di Cauchy 2.1 Consistenza . . . . . . . . . . . . . . . . 2.2 Stabilità . . . . . . . . . . . . . . . . . . 2.2.1 Stabilità minima e zero-stabilità 2.3 Convergenza . . . . . . . . . . . . . . . . 2.4 A-stabilità . . . . . . . . . . . . . . . . . 2.4.1 Eulero Esplicito . . . . . . . . . . 2.4.2 Eulero Implicito . . . . . . . . . 2.4.3 Crank-Nicholson . . . . . . . . . 2.4.4 Regioni di a-stabilità . . . . . . . 2.5 Riepilogo . . . . . . . . . . . . . . . . . 2.6 Abbattere i costi dei metodi impliciti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 10 13 14 17 17 18 18 19 19 25 25 . . . . . . . . . 29 29 34 35 36 36 39 41 43 47 . . . . . . . . . . . . 3 Interpolazione di funzioni 3.1 Interpolazione polinomiale . . . . . . . . . 3.1.1 Interpolazione polinomiale a tratti 3.2 Approssimazioni con funzioni splines . . . 3.3 Interpolazione di Hermite . . . . . . . . . 3.4 Formule di quadratura interpolatorie . . . 3.4.1 Calcolo dell’errore . . . . . . . . . 3.4.2 Interpolazione lineare composita . 3.4.3 Punti di Gauss . . . . . . . . . . . 3.5 Formule di quadratura in due dimensioni . iii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iv INDICE 3.6 Formule di quadratura adattive . . . . . . . . . . . . . . . . . . . . . 4 Radici di equazioni non lineari 4.1 Metodo di bisezione . . . . . . . . . . . . . . 4.2 Metodi basati su valori di f e/o di f 0 . . . . . 4.2.1 Metodo delle corde . . . . . . . . . . . 4.2.2 Metodo delle secanti . . . . . . . . . . 4.2.3 Metodo di Newton o delle tangenti . . 4.2.4 Test d’arresto . . . . . . . . . . . . . . 4.3 Radici di un sistema di equazioni non lineari 49 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 53 54 55 55 57 59 60 5 Risoluzione di sistemi lineari 5.1 Metodi diretti . . . . . . . . . . . . . . . . . . . . . . . . . 5.1.1 Metodo di eliminazione di Gauss . . . . . . . . . . 5.1.2 Metodo di fattorizzazione di Gauss . . . . . . . . . 5.1.3 Riepilogo . . . . . . . . . . . . . . . . . . . . . . . 5.1.4 Metodo di fattorizzazione di Cholewski . . . . . . 5.1.5 Accuratezza dei risultati . . . . . . . . . . . . . . . 5.2 Metodi iterativi . . . . . . . . . . . . . . . . . . . . . . . . 5.2.1 Metodo di Jacobi . . . . . . . . . . . . . . . . . . . 5.2.2 Metodo di Gauss-Seidel . . . . . . . . . . . . . . . 5.2.3 Convergenza dei metodi iterativi . . . . . . . . . . 5.2.4 Metodi di rilassamento . . . . . . . . . . . . . . . . 5.2.5 Test d’arresto . . . . . . . . . . . . . . . . . . . . . 5.3 Sistemi indeterminati . . . . . . . . . . . . . . . . . . . . . 5.4 Regressione . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4.1 Approssimazione di funzioni con i minimi quadrati 5.5 Metodi iterativi avanzati . . . . . . . . . . . . . . . . . . . 5.5.1 Metodi di discesa . . . . . . . . . . . . . . . . . . . 5.5.2 Metodo del gradiente . . . . . . . . . . . . . . . . . 5.5.3 Metodo del gradiente coniugato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 63 63 64 65 68 69 71 72 72 72 73 74 74 75 80 90 90 91 91 6 Metodi avanzati per problemi di Cauchy 6.1 Metodi multistep . . . . . . . . . . . . . . . . . . . . 6.1.1 Consistenza . . . . . . . . . . . . . . . . . . . 6.1.2 Stabilità . . . . . . . . . . . . . . . . . . . . . 6.2 Metodi di Runge-Kutta . . . . . . . . . . . . . . . . 6.2.1 Consistenza minima . . . . . . . . . . . . . . 6.2.2 Stabilità . . . . . . . . . . . . . . . . . . . . . 6.3 Approssimazione di sistemi di equazioni differenziali 6.4 Riepilogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 93 94 98 100 102 103 103 106 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A Norme di vettore e di matrice 107 A.1 Norme di vettore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 A.2 Norme di matrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 A.2.1 Norme naturali . . . . . . . . . . . . . . . . . . . . . . . . . . 109 INDICE B GNU Free Documentation License B.1 Applicability and definitions . . . . . B.2 Verbatim copying . . . . . . . . . . . B.3 Copying in quantity . . . . . . . . . B.4 Modifications . . . . . . . . . . . . . B.5 Combining documents . . . . . . . . B.6 Collections of documents . . . . . . . B.7 Aggregation with indipendent works B.8 Translation . . . . . . . . . . . . . . B.9 Termination . . . . . . . . . . . . . . B.10 Future revisions of this License . . . v . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 111 113 113 114 115 116 116 116 117 117 Elenco delle figure 1.1 1.2 Diagramma del processo di modellizzazione di un problema fisico. . . Modello di crescita di una popolazione nel tempo . . . . . . . . . . . 2 3 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10 2.11 Discretizzazione dell’intervallo [0, T [ . . . . . . . . . . . . . . . . . . Approssimazione di integrale con (b − a)g(a). . . . . . . . . . . . . . Approssimazione di integrale con (b − a)g(b). . . . . . . . . . . . . . Approssimazione di integrale con la formula dei trapezi. . . . . . . . Sviluppo di Taylor . . . . . . . . . . . . . . . . . . . . . . . . . . . . Punti di stabilità di un pendolo . . . . . . . . . . . . . . . . . . . . . Grafico della soluzione y(t) = e λt del problema modello . . . . . . . Regione di a-stabilità per Eulero Esplicito. . . . . . . . . . . . . . . . Regione di a-stabilità per Eulero Implicito. . . . . . . . . . . . . . . Regione di a-stabilità per Crank-Nicholson. . . . . . . . . . . . . . . Grafico della soluzione y(t) = e −10t del problema modello nel caso di λ = −10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Esempio di caso soglia in EE. . . . . . . . . . . . . . . . . . . . . . . Soluzione del problema modello approssimata con EE nel caso soglia. Soluzione del problema modello approssimata con EE oltre il caso soglia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Grafico della soluzione y(t) = e 10t del problema modello nel caso di λ = 10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Soluzione del problema modello approssimata con EI. . . . . . . . . 7 8 9 10 11 14 15 20 20 20 2.12 2.13 2.14 2.15 2.16 3.1 3.2 3.3 Nodi interpolatori di una generica funzione. . . . . . . . . . . . . . . Polinomi di Lagrange per tre nodi prefissati. . . . . . . . . . . . . . . Interpolazione polinomiale con nodi equispaziati della funzione f (x) = 1 .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1+25x2 3.4 Costruzione dei nodi di Chebishev . . . . . . . . . . . . . . . . . . . 3.5 Esempio di interpolazione polinomiale a tratti. . . . . . . . . . . . . 3.6 Confronto di due interpolazioni polinomiali a tratti per valori diversi di h. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.7 Punti per interpolazione di Hermite . . . . . . . . . . . . . . . . . . 3.8 Spiegazione della formula del punto medio (3.9). . . . . . . . . . . . 3.9 Errore di interpolazione . . . . . . . . . . . . . . . . . . . . . . . . . 3.10 Interpolazione composita con il metodo del punto medio. . . . . . . . 3.11 Interpolazione composita con il metodo dei trapezi. . . . . . . . . . . 3.12 Dominio triangolare di integrazione. . . . . . . . . . . . . . . . . . . vii 21 22 22 23 24 25 29 30 33 34 34 35 36 38 40 41 42 48 viii ELENCO DELLE FIGURE 3.13 Trasformazione geometria del dominio triangolare. . . . . . . . . . . 3.14 Una funzione che necessita di interpolazione adattiva . . . . . . . . . 3.15 Suddivisione dell’intervallo per le formule adattive . . . . . . . . . . 49 50 50 4.1 4.2 4.3 4.4 4.5 4.6 Applicazione del metodo di bisezione . . . . . . . . . . . . . . . . Applicazione del metodo delle corde. . . . . . . . . . . . . . . . . Un esempio in cui il metodo delle corde fallisce. . . . . . . . . . . Applicazione del metodo delle secanti. . . . . . . . . . . . . . . . Applicazione del metodo di Newton. . . . . . . . . . . . . . . . . Dimostrazione del teorema della convergenza di Newton (Teorema . . . . . . . . . . 4.2). 54 55 56 56 57 58 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 5.10 5.11 Distribuzione di punti da interpolare. . . . . . . . . . . . . . . . . . . Regressione lineare della distribuzione di Figura 5.1. . . . . . . . . . Distribuzione di punti da interpolare con delle funzioni sinusoidali. . Rappresentazione grafica della Proprietà 1. . . . . . . . . . . . . . . Grafico della funzione dente di sega sull’intervallo [−2π, 2π]. . . . . . Somme parziali della serie di Fourier per la funzione f (x) = x. . . . Grafico della funzione onda quadra sull’intervallo [−3π, 2π]. . . . . . Approssimazione in serie di Fourier della Delta di Dirac con 41 termini. Grafico della funzione ghirlanda sull’intervallo [−3π, 3π]. . . . . . . . Grafico della funzione campana sull’intervallo [−3π, 3π]. . . . . . . . Schema d’uso della FFT. . . . . . . . . . . . . . . . . . . . . . . . . . 76 77 78 81 83 85 85 86 87 87 90 6.1 6.2 6.3 Andamento di L1 (t). . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Andamento di L2 (t). . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Grafico delle soluzioni del sistema (6.18). . . . . . . . . . . . . . . . 105 Elenco delle tabelle 2.1 Riepilogo dei metodi di approssimazione ad un passo esaminati. . . . 26 3.1 3.2 Calcolo dell’ordine di precisione per alcune formule di quadratura. . Calcolo dell’ordine di precisione per alcune formule di quadratura a due dimensioni. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 5.1 6.1 6.2 Riepilogo degli esempi di approssimazione di funzioni periodiche con serie di Fourier. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 88 Numero di stadi s necessario per ottenere un dato ordine di consistenza per un metodo RK esplicito. . . . . . . . . . . . . . . . . . . . . . . . 103 Riepilogo dei metodi di approssimazione per problemi di Cauchy. . . 106 ix Capitolo 1 Introduzione Questo lavoro è una raccolta di appunti delle lezioni per l’anno 2006/2007 realizzato da uno studente del corso. Questi appunti sono rilasciati sotto licenza GNU FDL: questo significa che chiunque è libero di copiarli, stamparli, modificarli ed estenderli come preferisce. L’unico vincolo imposto è il rilascio di lavori derivati sotto gli stessi termini di licenza dell’opera originale: se create una nuova versione degli appunti aggiornata, ampliata o con delle correzioni siete tenuti a pubblicarla sempre sotto licenza GNU FDL e a mantenere il nome dell’autore iniziale e di chi ha contribuito precedentemente. In questo modo, tutti potranno beneficiare dei vostri miglioramenti. La lista di chi ha contibuito all’opera è presente nella seconda di copertina. Gli appunti sono scritti in LATEX: se create una versione modificata siete tenuti a distribuire i sorgenti aggiornati, in modo che altri possano a loro volta contribuire al lavoro. Il testo completo della licenza è riportato nell’Appendice B; per maggiori informazioni contattate l’autore o fate riferimento a http://www.gnu.org/copyleft/fdl.html. L’autore ringrazia Angelo Stramieri per l’importante contributo nella revisione di questi appunti e le numerose correzioni apportate. Per informazioni sugli appunti ed ottenere il sorgente LATEX del documento, l’autore può essere contattato via email a <[email protected]>. Buono studio! 1.1 Informazioni sul corso • Docente: prof. Donatella Marini <[email protected]> • Sito del corso: http://www.imati.cnr.it/marini/didattica/metodi_num. html • Testo di riferimento: A. Quarteroni, R. Sacco, F. Saleri: Matematica Numerica, Springer Verlag Italia, 2002. 1.2 Esempi Questa sezione raccoglie alcuni esempi di modellizzazione di problemi fisici, che danno un’idea delle possibili applicazioni degli argomenti del corso. 1 2 CAPITOLO 1. INTRODUZIONE problema fisico modello matematico equazioni differenziali (o sistemi di) ordinarie problemi di Cauchy alle derivate parziali (lineari e non) problemi ai limiti Figura 1.1: Diagramma del processo di modellizzazione di un problema fisico. 1.2. ESEMPI 1.2.1 3 Crescita di una popolazione Problema: modellizzare la crescita di una popolazione di animali. Si chiama N (t) il numero di animali presenti al tempo t; si hanno a disposizione il numero medio di nascite b e di morti d per animale per unità di tempo. Il variare della popolazione nel tempo è descritto dall’equazione N (t + Δt) = N (t) + bN (t)Δt − dN (t)Δt; dividendo tutto per Δt si ottiene la legge per ogni intervallo di tempo Δt: N (t + Δt) − N (t) = (b − d)N (t), Δt che spinta al limite per Δt → 0 ci fornisce l’equazione differenziale del processo: N 0 (t) = (b − d)N (t) = r0 N (t), con r0 = b − d tasso di incremento della popolazione. Associando a questa equazione una condizione iniziale si ottiene un problema di Cauchy: ( N 0 (t) = (b − d)N (t) = r0 N (t) N (0) = N0 Questo è uno dei rari casi in cui il problema è risolvibile esattamente e non è quindi N (t) r0 > 0 N0 r0 = 0 r0 < 0 0 t Figura 1.2: Modello di crescita di una popolazione nel tempo necessario ricorrere all’analisi numerica; la soluzione è N (t) = N0 e r0 t . Si noti che ciò vale sono nel particolare caso in cui r0 costante. In generale, infatti, r0 = r0 (t, N ), poiché il tasso di incremento dipende dal tempo e dalla popolazione preesistente. In tal caso il problema non è più risolvibile esattamente ed è necessario ricorrere a soluzioni approssimate. 4 CAPITOLO 1. INTRODUZIONE 1.2.2 Modello preda-predatore Detto anche problema dei conigli e delle volpi. Sono presenti due popolazioni, una di conigli e una di volpi. Chiamo rispettivamente C(t) e V (t) il numero di conigli e di volpi all’istante t. Se non ci fossero volpi, i conigli crescerebbero in modo indefinito (non hanno predatori) riproducendosi liberamente: C 0 (t) = aC(t), a > 0; se invece non ci fossero conigli, le volpi morirebbero di fame (senza prede di cui cibarsi) e tenderebbero ad estinguersi: V 0 (t) = −bV (t), b > 0. Nella realtà le due popolazioni sono interdipendenti: • conigli con volpi: C 0 (t) = aC(t) − αV (t)C(t), α > 0 • volpi con conigli: V 0 (t) = −bV (t) + βC(t)V (t), β > 0 Aggiungendo opportune condizioni iniziali otteniamo un problema di Cauchy: C 0 (t) = (a − αV (t)) C(t) V 0 (t) = (−b + βC(t)) V (t) C(0) = C0 V (0) = V0 Questo sistema, al contrario del precedente, non si può risolvere esattamente: sono necessari metodi numerici per approssimare la soluzione. 1.2.3 Oscillatore armonico Problema: punto materiale di massa m che si muove lungo una corda elastica. Si definiscono la posizione y(t), la velocità y 0 (t) e l’accelerazione y 00 (t). Se sul punto agisce una forza F si ha: F = m · a = m · y 00 (t) Poiché la corda è elastica, essa esercita una forza di richiamo sulla massa: F = −ky(t) Da queste due equazioni si ricava: y 00 (t) = − k y(t), t > 0 m che è un’equazione differenziale del secondo ordine con ∞2 soluzioni. Con le opportune condizioni iniziali ottengo il problema di Cauchy: k 00 y (t) = − m y(t), t > 0 y(0) = y0 y 0 (0) = 0 1.3. PROBLEMI DI CAUCHY 5 Il problema è risolvibile esattamente, la soluzione generale è q q k k y(t) = c cos t + c sin 1 2 m mt y(0) = y0 0 y (0) = 0 Dalle condizioni iniziali si ricava il valore delle costanti y(0) = y0 ⇒ y(0) = c1 = y0 √ y 0 (0) = 0 ⇒ y 0 (0) = c2 cos 0 ed infine la soluzione: k = 0 ⇒ c2 = 0 m s y(t) = y0 cos k t m In questo caso è stato possibile risolvere l’equazione esattamente. Per poter usare dei metodi numerici avremmo dovuto prima trasformare l’equazione differenziale del II ordine in un sistema del I ordine. Questo è facilmente realizzabile ponendo y 0 (t) = v(t) e riscrivendo il tutto come k v 0 (t) = − m y(t) 0 y (t) = v(t) y(0) = y0 v(0) = 0 Si noti che questa operazione non sarebbe stata possibile in presenza di una condizione finale del tipo y(T ) = yT ; in tal caso sarebbe stato necessario risolvere un problema ai limiti. 1.3 Problemi di Cauchy Caso scalare (una equazione in un’incognita): si cerca la soluzione u(t) di ( u0 (t) = f (t, u(t)) u(t0 ) = u0 t ∈ [t0 , T ] Caso vettoriale (sistema): ( U0 (t) = F(t, U(t)) U(t0 ) = U0 t ∈ [t0 , T ] dove U = [U1 , U2 , . . . , Un ]T F = [F1 , F2 , . . . , Fn ]T h U0 = U10 , U20 , . . . , Un0 iT 6 CAPITOLO 1. INTRODUZIONE Esempio: problema dell’oscillatore armonico trattato nella Sezione 1.2.3 in forma vettoriale " # y(t) U(t) = v(t) " # " # v(t) f (t, y(t), v(t)) F(t, U(t)) = 1 = k f2 (t, y(t), v(t)) y(t) −m " y U(0) = 0 0 # Capitolo 2 Risoluzione di problemi di Cauchy ( y 0 (t) = f (t, y(t)) y(t0 ) = y0 t ∈ [0, T ] T < +∞ (2.1) Nella maggior parte dei casi non siamo in grado di scrivere l’espressione analitica della soluzione: abbiamo bisogno di metodi approssimati. Si inizia discretizzando la 0 T ΔT t0 t1 t2 . . . ti . . . tN = T Figura 2.1: Discretizzazione dell’intervallo [0, T [ funzione: fissato un numero N di sottointervalli uguali di [0, T ] di lunghezza h = avremo: T N, t0 = 0 t1 = t0 + h t2 = t1 + h ... tN = tN −1 + h = T. Si va alla ricerca di valori yi : yi ≈ y(ti ) per qualsiasi i; i metodi numerici, infatti, trovano soluzioni approssimate di quelle vere nei diversi intervalli. In ognuno di questi intervalli integro l’equazione differenziale. Iniziamo col primo: Z t1 y 0 (t) dt = Z t1 t0 f (t, y(t)) dt; t0 Per il teorema fondamentale del calcolo integrale si ha Z t1 y(t1 ) = y(t0 ) + f (t, y(t)) dt. t0 7 8 CAPITOLO 2. RISOLUZIONE DI PROBLEMI DI CAUCHY Se potessimo calcolare tt01 f (t, y(t)) dt otterremmo il valore esatto dell’equazione in t1 . Sfortunatamente questo non è possibile nella stragrande maggioranza dei casi: è necessario approssimare o l’integrale o la funzione stessa. Una possibile approssimazione per un generico integrale può essere la seguente: R Z b g(x) dx ≈ (b − a)g(a) (2.2) a Questa formula approssima l’integrale con l’area (col segno) del rettangolo avente g(x) g(a) 0 a b x Figura 2.2: Approssimazione di integrale con (b − a)g(a). per base b−a e per altezza il valore della funzione integranda nel primo estremo. L’approssimazione comporta in generale un errore; è esatta solo per funzioni costanti (polinomi di grado zero). Questo genere di forumule si dicono formule di quadratura e sono alla base dei diversi metodi utilizzati per eseguire le approssimazioni. Applicando la formula al nostro caso nel primo intervallo otteniamo y1 che è definito come l’approssimazione di y(t1 ): y(t1 ) ≈ y(t0 ) + (t1 − t0 ) f (t0 , y(t0 )) = = y0 + hf (t0 , y0 ) =: y1 Procedendo analogamente per il secondo intervallo otteniamo Z t2 y 0 (t) dt = t1 Z t2 f (t, y(t)) dt t1 Z t2 y(t2 ) = y(t1 ) + f (t, y(t)) dt ≈ y1 + hf (t1 , y1 ) =: y2 t1 Andando avanti si costruisce una successione di valori approssimati {y0 , y1 , . . . , yN } ≈ {y(t0 ), y(t1 ), . . . , y(tN )} Avanzando gli errori si accumulano, dando origine ad una soluzione non esatta. Questo avviene poiché durante l’approssimazione degli yi nei diversi punti, ogni yi si porta dietro l’accumulo di approssimazioni delle yN −1 , yN −2 , . . . , yi−2 , yi−1 che concorrono a determinarne il valore. Per migliorare l’approssimazione il più possibile 9 deve essere h → 0; poiché h = questo porta a T N, può in alternativa essere N → ∞. Idealmente, lim yn = y(tn ) n→+∞ Noi vogliamo minizzare l’errore complessivo, quindi deve essere che max |yn − y(tn )| → 0 n Ricapitolando, abbiamo ottenuto una successione così strutturata: y0 dato, yn+1 = yn + hf (tn , yn ) (2.3) per n = 0, 1, 2, . . . , N −1. Questa successione rappresenta una delle tecniche codificate per approssimare un problema di Cauchy. In particolare, questo metodo è detto metodo di Eulero esplicito (EE). Ora proviamo a risolvere il problema con un altra formula, molto simile alla precedente: Z b g(x) dx ≈ (b − a)g(b) (2.4) a Applicandolo al nostro caso nel primo intervallo avremo: g(x) g(b) 0 a b x Figura 2.3: Approssimazione di integrale con (b − a)g(b). y(t1 ) ≈ y(t0 ) + hf (t1 , y(t1 )) ≈ y0 + hf (t1 , y1 ) =: y1 Questa è un’equazione non lineare, poichè y1 è argomento di f . Analogamente per il secondo intervallo: y(t2 ) ≈ y(t1 ) + hf (t2 , y(t2 )) ≈ y1 + hf (t2 , y2 ) =: y2 La successione ottenuta è abbastanza diversa dalla precedente: y0 dato, yn+1 = yn + hf (tn+1 , yn+1 ) (2.5) per n = 0, 1, 2, . . . , N − 1. Questo metodo è detto metodo di Eulero implicito (EI). 10 CAPITOLO 2. RISOLUZIONE DI PROBLEMI DI CAUCHY g(x) g(b) g(a) a 0 b x Figura 2.4: Approssimazione di integrale con la formula dei trapezi. Vediamo un terzo metodo: approssimiamo l’integrale con l’area del trapezio: Z b g(x) dx ≈ a (b − a) [g(a) + g(b)] 2 (2.6) Questa formula, detta formula dei trapezi, è la semisomma delle precedenti. Anche in questo caso commettiamo un errore; abbiamo il valore esatto solo se g(x) è una funzione lineare (polinomio di grado 1). Applicando il metodo al nostro caso in modo analogo al precendente otteniamo questa successione: y0 dato, yn+1 = yn + h [f (tn , yn ) + f (tn+1 , yn+1 )] 2 (2.7) per n = 0, 1, 2, . . . , N − 1. Questo metodo è detto metodo dei trapezi o metodo di Crank-Nicholson (CN). 2.1 Consistenza La consistenza di uno schema permette di valutare quanto bene uno schema adottato riproduca l’equazione che approssima. Riscrivo EE come: yn+1 − yn − f (tn , yn ) = 0 n = 0, 1, . . . , N − 1 h Se applico lo schema alla soluzione esatta trovo un errore y(tn+1 ) − y(tn ) − f (tn , y(tn )) = τn 6= 0 h (2.8) detto errore di troncamento locale, che si esprime come potenza del passo di discretizzazione h. In base a questo si definisce l’errore di consistenza come τ = max |τn | n (2.9) Questo errore è sicuramente diverso da zero; noi vogliamo che sia piccolo. In particolare se τ = chp (p > 0) ⇒ lim τ = 0 h→0 2.1. CONSISTENZA 11 il metodo si dice consistente di ordine p. Al crescere di p migliora la qualità dell’approssimazione prodotta dallo schema. Per mettere in relazione i rapporti incrementali con le derivate ho bisogno delle serie di Taylor. y(t) 0 t̄ − h t̄ t̄ + h t Figura 2.5: Sviluppo di Taylor h2 00 y (t̄) + 2 h2 y(t̄ − h) = y(t̄) − hy 0 (t̄) + y 00 (t̄) − 2 y(t̄ + h) = y(t̄) + hy 0 (t̄) + h3 000 y (t̄) + · · · (multipli dx) 6 h3 000 y (t̄) + · · · (multipli sx) 6 (2.10) (2.11) Dalla (2.10) si trova che y 0 (t̄) = h2 y(t̄ + h) − y(t̄) h 00 − y (t̄) − y 000 (t̄) + · · · h 2 6 che è uguale al rapporto incrementale destro più un errore dell’ordine di h (se y 00 è limitata). L’espressione dell’errore troncato al primo termine è la seguente: errore = y 0 (t̄) − y(t̄ + h) − y(t̄) h = − y 00 (z) h 2 (2.12) con z ∈ [t̄, t̄ + h]. Dalla (2.11) si trova invece y 0 (t̄) = h2 y(t̄) − y(t̄ − h) h 00 + y (t̄) − y 000 (t̄) + · · · h 2 6 dove l’errore è invece errore = h 00 y (z), 2 z ∈ [t̄ − h, t̄] (2.13) In entrambi i casi errore è zero ∀t̄ se y 00 ≡ 0, ovvero se y è una funzione lineare (polinomio di grado 1). Facendo la semisomma dei due sviluppi (2.10) e (2.11) ottengo y(t̄ + h) − y(t̄ − h) h2 000 y 0 (t̄) = − y (t̄) + · · · 2h 6 12 CAPITOLO 2. RISOLUZIONE DI PROBLEMI DI CAUCHY e in questo caso l’errore è errore = − h2 000 y (z) 6 z ∈ [t̄ − h, t̄ + h]. (2.14) Questo errore va con h2 e decresce quindi più velocemente degli altri: l’approssimazione è più precisa, poiché l’errore va a zero se y 000 ≡ 0, ovvero per polinomi di grado 2. Esaminiamo ora la consistenza dei diversi metodi esaminati in precedenza. Per EE si ha tn+1 = tn + h ⇒ t̄ = tn ; gli sviluppi saranno quindi calcolati intorno a tn usando la (2.10). Ricordando che il problema di Cauchy in esame è y 0 (t) = f (t, y(t)), l’errore di troncamento locale è dato da y(tn + h) − y(tn ) − f (tn , y(tn )) = h h h2 n = −y0 (t y 0 (t ) + y 00 (tn ) + y 000 (tn ) + · · · n) = 2 6 h = y 00 (tn ) + O(h2 ). 2 τn = Da τn si può calcolare l’errore di consistenza del metodo: τ EE = max |τn | = n h max y 00 (t) = ch. 2 t∈[0,T ] (2.15) Poiché τ = ch abbiamo p = 1 ⇒ EE è consistente di ordine 1. Infatti, per h → 0 l’errore tende linearmente a 0 con h. Si esegue la stessa analisi per EI: riscritto il metodo yn+1 − yn − f (tn+1 , yn+1 ) = 0, h si applica lo schema alla soluzione esatta per trovare l’errore di troncamento locale. Poiché in questo caso tn+1 = tn + h ⇒ t̄ = tn+1 , gli sviluppi saranno intorno al punto tn+1 usando la (2.11). L’espressione di τn è quindi y(tn+1 ) − y(tn ) − f (tn+1 , y(tn+1 )) = h h h2 n+1 n+1 = y 0 (t ) − y 00 (tn+1 ) + y 000 (tn+1 ) + · · · −y0 (t )= 2 6 h = − y 00 (tn+1 ) + O(h2 ) 2 τn = e si ottiene l’errore di consistenza τ EI = max |τn | = n h max y 00 (t) = ch. 2 t∈[0,T ] (2.16) 2.2. STABILITÀ 13 Poiché τ = ch abbiamo p = 1 ⇒ EI è consistente di ordine 1. Osserviamo infine il comportamento di CN; anche in questo caso si usa il metodo yn+1 − yn 1 − [f (tn , yn ) + f (tn+1 , yn+1 )] = 0 h 2 per poi applicare lo schema alla soluzione esatta e trovare τn . Per CN si ha tn+1 = tn + h ⇒ t̄ = tn e lo sviluppo è intorno a tn usando (2.10). L’espressione dell’errore di consistenza è y(tn+1 ) − y(tn ) 1 0 − y (tn ) + y 0 (tn+1 ) = h 2 h2 h3 1 1 h = y 0 (tn ) + y 00 (tn ) + y 000 (tn ) + y 0000 (tn ) + · · · − y 0 (tn ) − y 0 (tn+1 ) = 2 6 4! 2 2 2 3 1 0 h h h = y (tn ) − y 0 (tn+1 ) + y 00 (tn ) + y 000 (tn ) + y IV (tn ) + · · · 2 2 6 4! τn = Sapendo che lo sviluppo di Taylor della derivata è y 0 (tn+1 ) = y 0 (tn ) + hy 00 (tn ) + h2 000 y (tn ) + · · · 2 la prima parte si può riscrivere come " # 1 h2 1 0 y (tn ) − y 0 (tn+1 ) = −hy 00 (tn ) − y 000 (tn ) + O(h3 ) . 2 2 2 Questo premette di ricavare l’espressione del τn : τnCN = − h2 000 h2 000 h2 y (tn ) + y (tn ) + · · · = − y 000 (tn ) + O(h3 ) 4 6 12 e quindi dell’errore di consistenza del metodo: h2 |y 000 (t)| τ CN = max − y 000 (tn ) = h2 max = ch2 . n 12 12 t∈[0,T ] (2.17) Poiché τ = ch2 abbiamo p = 2 ⇒ CN è consistente di ordine 2; l’errore tende a zero quadraticamente. 2.2 Stabilità La stabilità di un sistema è la sua sensibilità alle variazioni sui dati. Si distingue tra problemi stabili e non stabili. Un sistema è stabile se piccole perturbazioni dei dati comportano piccole variazioni del risultato; al contrario, è instabile se a piccole variazioni corrispondono forti cambiamenti. Un determinato sistema fisico può avere dei punti di stabilità e dei punti di instabilità: si veda ad esempio la Figura 2.6 per l’esempio di un pendolo. Per trattare la stabilità di un problema continuo (su un 14 CAPITOLO 2. RISOLUZIONE DI PROBLEMI DI CAUCHY punto stabile punto instabile Figura 2.6: Punti di stabilità di un pendolo intervallo [0, T ]) del tipo ( y 0 (t) = f (t, y(t)) y(0) = y0 (2.18) si esamina il corrispondente problema perturbato: ( z 0 (t) = f (t, z(t)) + δ(t) z(0) = z0 + δ0 (2.19) Si studia la differenza y − z: se è piccola (ovvero le perturbazioni sono piccole) allora il problema è stabile. Per il caso [0, T ] limitato (T < +∞) (2.18) è stabile se ∀ δ0 , δ(t) : |δ0 | < ε ∧ |δ(t)| < ε ∀ t, ε > 0 ∃ c > 0 indipendente da ε : kz − yk∞ ≤ cε; (2.20) in questo caso si parla di stabilità minima. La definizione fa uso della norma del massimo o norma infinita1 kz − yk∞ = max |z(t) − y(t)| . t∈[0,T ] Se invece l’intervallo è illimitato (T = +∞) è necessaria una condizione aggiuntiva: (2.18) è stabile se vale (2.20) e inoltre si ha lim |z(t) − y(t)| = 0; t→+∞ (2.21) in questo caso si parla di stabilità asintotica o a-stabilità. 2.2.1 Stabilità minima e zero-stabilità Consideriamo il problema modello ( y 0 (t) = λy(t) y(0) = 1 (2.22) 2.2. STABILITÀ 15 e λt λ>0 λ=0 y0 = 1 λ<0 0 t Figura 2.7: Grafico della soluzione y(t) = e λt del problema modello definito su [0, T ] e con λ ∈ R. Questo problema ha una soluzione esatta: y(t) = e λt . Per semplificare la trattazione ipotizzo di perturbare solo la condizione iniziale y(0): ( z 0 (t) = λz(t) z(0) = 1 + δ0 La soluzione del sistema perturbato è invece z(t) = (1 + δ0 )e λt = y(t) + δ0 e λt . Per studiare la stabilità si valuta (per ogni t) la differenza |z(t) − y(t)| = δ0 e λt = |δ0 | e λt Per la (2.20) abbiamo che |δ0 | e λt ≤ ε · e λt Per risolvere la disequazione bisogna esaminare i diversi valori di λ: • caso λ = 0 ⇒ |z(t) − y(t)| ≤ ε ⇒ kz − yk∞ ≤ ε ⇒ stabilità minima con c = 1; • caso λ > 0: se l’intervallo è limitato il massimo di e λt si ha nel punto T ⇒ |z(t) − y(t)| ≤ e λT ε = cε ⇒ stabile con c = eλT ∈ R; se invece l’intervallo è illimitato non si può verificare la stabilità; • caso λ < 0: il massimo di e λt vale 1 ed è nel punto 0; si ha quindi |z(t) − y(t)| ≤ ε ⇒ stabile con c = 1. In conclusione, se l’intervallo è limitato il sistema è stabile ∀ λ; nel caso illimitato, invece, lo è solo per λ < 0 (il caso λ = 0 non è significativo). Quello che vogliamo è che, se il problema in continuo è stabile, lo sia anche lo schema numerico approssimato; per verificare questo si procede nel discreto in modo analogo al continuo. Per creare lo schema si discretizza [0, T ] in N parti con passo n o (h) (h) (h) T (h) h = N e si trova una soluzione approssimata y = y0 , y1 , . . . , yN . La soluzione n (h) (h) (h) del problema perturbato invece è approssimata da z (h) = z0 , z1 , . . . , zN 1 o . Lo Per maggiori informazioni sulle norme di matrice e di vettore fare riferimento all’Appendice A. 16 CAPITOLO 2. RISOLUZIONE DI PROBLEMI DI CAUCHY schema si dice zero-stabile (l’equivalente della stabilità minima per i sistemi discreti) se ∀ δ0 , δ1 , . . . , δN (|δk | < ε) ∃ c indipendente da ε ∧ ∃ h0 > 0 : ∀ h ≤ h0 z (h) − y (h) ∞ ≤ cε (2.23) Valutiamo la stabilità dell’esempio utilizzando EE (2.3): la successione del problema originale è y0 dato, yn = yn−1 + hf (tn−1 , yn−1 ) n = 1, 2, . . . , N mentre quella del problema perturbato z0 = y0 + δ0 dato, zn = zn−1 + h [f (tn−1 , zn−1 ) + δn−1 ] n = 1, 2, . . . , N Si può dimostrare che in generale vale la zero-stabilità (vedi libro). Noi esaminiamo un caso semplificato: ( y 0 (t) = f (t) y(0) = y0 definito come al solito su [0, T ]. In questo caso, le due soluzioni sono rispettivamente yn = yn−1 + hf (tn−1 ) zn = zn−1 + hf (tn−1 ) + hδn−1 Esaminiamo ora la differenza zn − yn = zn−1 − yn−1 + hδn−1 =: en con en errore pari a en = en−1 + hδn−1 = en−2 + hδn−2 + hδn−1 = · · · = e0 + hδ0 + hδ1 + hδ2 + · · · + hδn−1 dove l’errore iniziale è e0 = z0 − y0 = δ0 . Abbiamo quindi |en | ≤ |e0 | + h n−1 X |δj | ≤ ε(1 + nh) ≤ ε(1 + N h) = ε(1 + T ) j=0 =⇒ max |en | = max |zn − yn | ≤ ε(1 + T ) n n Il problema è quindi stabile con c = 1 + T finito. La dimostrazione è analoga per EI e per CN: in entrambi i casi risulta sempre c = 1 + T come per EE. La dimostrazione del caso generale è più laboriosa, poiché comporta la presenza dei termini f (t, ·) che non si cancellano: zn − yn = zn−1 − yn−1 + hδn−1 + h [f (tn−1 , zn−1 ) − f (tn−1 , yn−1 )] |zn − yn | ≤ |zn−1 − yn−1 | + h |δn−1 | + h |f (tn−1 , zn−1 ) − f (tn−1 , yn−1 )| | {z ≤L|zn−1 −yn−1 | } Si ipotizza che f sia Lipshitz sul secondo argomento (l’ipotesi di Lipshitz è meno forte della derivabilità), e risulta |en | ≤ h |δn−1 | + (1 + hL) |en−1 | ; alla fine si arriva ad un’esponenziale, fare riferimento al libro per i dettagli. 2.3. CONVERGENZA 2.3 17 Convergenza La convergenza permette di valutare quanto i valori ottenuti con i vari schemi siano vicini ai corrispondenti valori esatti. Dato uno schema numerico approssimazione di un problema di Cauchy, questo si dice convergente se max yn(h) − y(tn ) ≤ chp n (2.24) dove p > 0 è l’ordine di convergenza. Se p = 1 dimezzando il passo si dimezza l’errore, se p = 2 diventa un quarto. Teorema 2.1 (di Lax). Uno schema numerico è convergente se è consistente e stabile; l’ordine di convergenza p è pari all’ordine di consistenza (nella norma in cui si ha la stabilità). Questo teorema è dimostrabile in generale per tutti gli schemi numerici. Nel nostro caso ne usiamo una versione più specifica e Teorema 2.2. Se uno schema numerico per problemi di Cauchy èzero-stabile (h) consistente di ordine p ⇒ lo schema è convergente di ordine p, con y − y ≤ ∞ chp . Il procedimento da seguire per lo studio di un problema di Cauchy è quindi il seguente: 1. fissare lo schema; 2. studiare la consistenza e scrivere l’errore di consistenza in funzione di h; 3. valutare la stabilità; 4. se ci sono (2) e (3) lo schema è buono e il teorema di Lax (Teorema 2.1) ci garantisce che convergerà alla soluzione esatta con velocità data dall’ordine di convergenza p. 2.4 A-stabilità Nel caso di un intervallo illimitato è necessario studiare la a-stabilità. Esaminiamo il problema modello: ( y 0 (t) = λy(t) y(0) = 1 con t > 0 e λ = a + ib ∈ C. La sua soluzione è y(t) = e λt = e at (cos bt + i sin bt) ed il suo modulo |y(t)| = e at |cos bt + i sin bt| = e at . Verifichiamo la a-stabilità: lim |y(t)| = t→+∞ +∞ 0 1 a>0 a<0 a=0 18 CAPITOLO 2. RISOLUZIONE DI PROBLEMI DI CAUCHY Il problema è a-stabile se Re λ < 0, e in questo caso abbiamo lim |y(t)| = 0. t→+∞ Uno schema è a-stabile se è zero-stabile e inoltre vale lim |yn | = 0 t→+∞ poiché lo schema all’infinito deve comportarsi come la soluzione esatta. 2.4.1 Eulero Esplicito y0 = 1 yn = yn−1 + hλyn−1 = (1 + hλ)yn−1 = (1 + hλ) [(1 + hλ)yn−2 ] = (1 + hλ)2 yn−2 = · · · · · · = (1 + hλ)n y0 = (1 + hλ)n per ogni n. Per vedere se il sistema è a-stabile valuto lim |yn | = lim |1 + hλ|n = 0 ⇔ |1 + hλ| < 1 n→+∞ n→+∞ • caso λ ∈ R− : −1 < 1 + hλ |{z} < 1 ⇒ EE è condizionatamente a-stabile (h deve | {z } 2 ⇒h< |λ| vera essere molto piccolo quando |λ| è grosso); p • caso λ ∈ C (Re λ < 0): si ha |1 + hλ| = |1 + ah + ibh| = (1 + ha)2 + h2 b2 ⇒ ⇒ h |λ|2 < −2 Re λ; in 1 + h2 (a2 + b2 ) + 2ha < 1 ⇒ h(a2 + b2 ) < −2a |{z} | {z >0 } >0 Re λ conclusione h < − 2|λ| 2 . Si vede chiaramente che il caso reale (λ ∈ R− ) ricade nel caso complesso. Si conclude che EE è a-stabile per h : |1 + hλ| < 1, cio`’ per h piccolo. 2.4.2 Eulero Implicito y0 = 1 yn = yn−1 + hλyn (1 − hλ)yn = yn−1 yn−2 yn−1 y0 1 = = ··· = = yn = 2 n 1 − hλ (1 − hλ) (1 − hλ) (1 − hλ)n 1 lim |yn | = = 0 ⇔ |1 − hλ| > 1 n→+∞ limn→+∞ |1 − hλ|n • caso λ ∈ R− ⇒ |1 − hλ| > 1 sempre vera, poiché 1 − hλ > 1; p • caso λ ∈ C (Re λ < 0): |1 − hλ| = |1 − ah − ibh| = (1 − ah)2 + (−bh)2 ⇒ 1 + h2 (a2 + b2 ) − 2ah > 1 ⇒ h(a2 + b2 ) > 2a ⇒ h |λ|2 > 2 Re λ; in conclusione, poichè h > 0 la disuguaglianza è sempre verificata. In conclusione EI è a-stabile ∀ h che soddisfa la disequazione |1 − hλ| > 1, ossia ∀ h > 0 (ricordando che Re λ < 0). 2.4. A-STABILITÀ 2.4.3 19 Crank-Nicholson y0 = 1 h yn = yn−1 + (λyn−1 + λyn ) 2 h h yn = yn−1 + λyn−1 + λyn 2 2 h h 1 − λ yn = 1 + λ yn−1 2 2 (2 − hλ)yn = (2 + hλ)yn−1 yn = 2 + hλ yn−1 = 2 − hλ 2 2 + hλ 2 − hλ 2 + hλ n =0 lim |yn | = lim n→+∞ n→+∞ 2 − hλ 2 + hλ 2 − hλ n yn−2 = · · · = y0 = 2 + hλ 2 − hλ n Questo limite è zero quando il modulo è minore di uno: 2 + hλ 2 − hλ < 1 (2.25) La disequazione, riscrivibile come |2 + hλ| < |2 − hλ| è sempre vera, sia in campo reale sia in campo complesso (ricordare che h > 0), quindi CN è a-stabile ∀ h che soddisfa la (2.25) (ricordando che Re λ < 0). 2.4.4 Regioni di a-stabilità Si definisce una regione di a-stabilità per i sistemi continui A := {λ ∈ C : Re λ < 0} (2.26) e per i rispettivi schemi numerici Ah := hλ ∈ C : lim |yn | = 0 . n→+∞ (2.27) Nel caso ideale Ah = A. La regioni di a-stabilità per EE, visibile in Figura 2.8, è data da AEE h = {hλ ∈ C : |1 + hλ| < 1} . (2.28) Questa regione è descritta nel piano dall’equazione |hλ − (−1)| < 1, che rappresenta un cerchio centrato in (−1, 0) e di raggio 1. Per EI, analogamente, si ha AEI h = {hλ ∈ C : |1 − hλ| > 1} (2.29) che è l’esterno del cerchio di centro (1, 0) e raggio 1; questa regione è visibile in Figura 2.9. Per CN, infine, l’espressione della regione rappresentata in Figura 2.10 è ACN = {hλ ∈ C : |2 + hλ| < |2 − hλ|} h (2.30) 20 CAPITOLO 2. RISOLUZIONE DI PROBLEMI DI CAUCHY Im hλ −1 0 Re hλ Figura 2.8: Regione di a-stabilità per Eulero Esplicito. Im hλ 0 1 Re hλ Figura 2.9: Regione di a-stabilità per Eulero Implicito. Im hλ −1 0 −1 Re hλ Figura 2.10: Regione di a-stabilità per Crank-Nicholson. 2.4. A-STABILITÀ 21 che può essere riscritta come |(hλ) − (−2)| | {z } distanza di hλ da (−2, 0) < |(hλ) − 2| | {z } distanza di hλ da (2, 0) che di fatto è verificata da tutti i punti del semipiano negativo Re − Im. La regione di CN può quindi essere scritta come ACN = {hλ ∈ C : Re hλ < 0} ≡ A h (2.31) e coincide con quella del problema continuo. Ciò significa che il problema approssimato con CN riproduce bene l’originale in continuo. In effetti, dei tre metodi CN è quello che fornisce l’approssimazione migliore. Gli altri due metodi invece soffrono di problemi dovuti alle loro regioni di a-stabilità: AEE è troppo piccola, mentre AEI h h è troppo grande. Esempio (Eulero esplicito). ( y 0 (t) = −10y(t) y(0) = 1 Esaminiamo il problema modello nel caso particolare di λ = −10; la soluzione è y(t) = e −10t e il sistema è a-stabile (Figura 2.11). Studiamo il problema su [0, 1] nel e −10t 1 0 t Figura 2.11: Grafico della soluzione y(t) = e −10t del problema modello nel caso di λ = −10. caso reale per semplicità di trattazione e applichiamo i diversi metodi, a partire da 2 2 EE. EE è condizionatamente a-stabile, e deve essere h < |λ| = 10 = 15 . Si analizza il problema nel caso soglia h = 15 ⇒ hλ = −2: ci troviamo sul bordo della regione di a-stabilità di EE come visibile in Figura 2.12. Si applica il metodo: 22 CAPITOLO 2. RISOLUZIONE DI PROBLEMI DI CAUCHY Im hλ −2 −1 0 Re hλ Figura 2.12: Esempio di caso soglia in EE. yn = yn−1 + hf (tn−1 , yn−1 ) y0 = 1 1 1 y1 = y0 + (−10y0 ) = 1 + (−10) = −1 5 5 1 y2 = y1 + (−10y1 ) = −1 − 2(−1) = 1 5 1 y3 = y2 + (−10y2 ) = 1 − 2(1) = −1 5 1 y4 = y3 + (−10y3 ) = −1(1 − 2) = 1 5 ... La regola è quindi yn = −yn−1 : la soluzione oscilla tra 1 e −1 e il metodo fallisce 2 (Figura 2.13). Osserviamo invece il comportamento con h = 25 > |λ| (fuori dalla yn 1 0 −1 t Figura 2.13: Soluzione del problema modello approssimata con EE nel caso soglia. 2.4. A-STABILITÀ 23 regione di a-stabilità): y0 = 1 2 y1 = y0 + (−10y0 ) = −3y0 5 2 y2 = y1 + (−10y1 ) = −3y1 5 2 y3 = y2 + (−10y2 ) = −3y2 5 2 y4 = y3 + (−10y3 ) = −3y3 5 ... = −3 =9 = −27 = 81 Anche in questo caso la soluzione oscilla, ma le oscillazioni invece di restare costanti diventano sempre più grandi (Figura 2.14). In generale Eulero Esplicito fornisce yn t 0 Figura 2.14: Soluzione del problema modello approssimata con EE oltre il caso soglia. buoni risultati solo se h è abbastanza piccolo. Questo stesso problema non presenta difficoltà con EI e CN. Esaminiamo la soluzione con EI (con h = 25 ): yn = yn−1 + hf (tn , yn ) y0 = 1 2 1 y1 = y0 + (−10y1 ) ⇒ 5y1 = y0 ⇒ y1 = 5 5 1 1 1 2 y2 = y1 + (−10y2 ) ⇒ 5y2 = y1 ⇒ y2 = · = 5 5 5 25 2 1 y3 = y2 + (−10y3 ) ⇒ 5y3 = y2 ⇒ y3 = 5 125 ... La soluzione è yn = n 1 5 che va a zero rapidamente, in modo analogo alla soluzione 24 CAPITOLO 2. RISOLUZIONE DI PROBLEMI DI CAUCHY esatta. Risolvendo con CN si ottiene una convergenza ancora più veloce: yn = yn−1 + h [f (tn−1 , yn−1 ) + f (tn , yn )] 2 y0 = 1 1 1 [−10(y1 + y0 )] ⇒ 3y1 = −y0 ⇒ y1 = − 5 3 1 1 y2 = y1 + [−10(y2 + y1 )] ⇒ 3y2 = −y1 ⇒ y2 = 5 9 1 1 y3 = y2 + [−10(y3 + y2 )] ⇒ 3y3 = −y2 ⇒ y3 = − 5 27 ... y1 = y0 + Esempio (Eulero implicito). ( y 0 (t) = 10y(t) y(0) = 1 In questo caso scegliamo λ = 10; la soluzione è y(t) = e 10t e il sistema è chiaramente instabile (Figura 2.15). Osserviamo il comportamento di EI. Il metodo è stabile per e 10t 1 0 t Figura 2.15: Grafico della soluzione y(t) = e 10t del problema modello nel caso di λ = 10. hλ = 10h > 2 ⇒ h > 15 ; scegliamo h = 35 . y0 = 1 3 1 y1 = y0 + (10y1 ) ⇒ 5y1 = −y0 ⇒ y1 = − 5 5 1 3 y2 = y1 + (10y2 ) ⇒ 5y2 = −y1 ⇒ y2 = 5 25 3 1 y3 = y2 + (10y3 ) ⇒ 5y3 = −y2 ⇒ y3 = − 5 125 ... La soluzione è yn = − 51 yn−1 : produce oscillazioni sempre più piccole fino a convergere a zero (Figura 2.16), un risultato palesemente in contrasto con il comportamento della funzione. Questo metodo non va bene, poiché è “troppo a-stabile” e tende ad 2.5. RIEPILOGO 25 yn 1 0 t −1 Figura 2.16: Soluzione del problema modello approssimata con EI. andare a zero anche quando non dovrebbe. Esaminiamo anche il caso soglia h = 15 : y0 = 1 1 y1 = y0 + (10y1 ) ⇒ y1 = −y0 ⇒ y1 = −1 5 1 y2 = y1 + (10y2 ) ⇒ y2 = −y1 ⇒ y2 = 1 5 1 y3 = y2 + (10y3 ) ⇒ y3 = −y2 ⇒ y3 = −1 5 ... La soluzione è yn = −yn−1 e oscilla tra −1 e 1, come nella Figura 2.13: anche in questo caso non va bene. Questo esempio non avrebbe presentato problemi per CN. 2.5 Riepilogo In Tabella 2.1 è presentato un riepilogo dei tre metodi esaminati. EE, EI e CN sono tutti metodi a un passo poiché yn è sempre funzione solo del valore precedente yn−1 e non di altri punti. Altri tipi di metodi di approssimazione per problemi di Cauchy saranno esaminati nel Capitolo 6. Dei tre metodi, CN fornisce la migliore approssimazione, ma è un metodo costoso, come tutti i metodi impliciti. Al contrario, EE è poco accurato ma costa molto poco. Un metodo è più accurato tanto più è alto il suo ordine di convergenza. In generale i metodi espliciti non sono mai a-stabili, mentre lo sono solo alcuni di quelli impliciti (noi studieremo solo metodi impliciti a-stabili). 2.6 Abbattere i costi dei metodi impliciti Idea: partire da un metodo implicito “accurato” e renderlo esplicito. In questo modo perdiamo sicuramente l’a-stabilità, ma vogliamo mantenere l’accuratezza, cioè lo stesso ordine di convergenza. Partiamo da CN: y0 dato, yn = yn−1 + h [f (tn−1 , yn−1 ) + f (tn , yn )] 2 26 CAPITOLO 2. RISOLUZIONE DI PROBLEMI DI CAUCHY Meto- Tipo do Consistenza Zerostabilità Convergenza Astabilità Regione di a-stabilità EE esplicito τ= O(h) sì sì: O(h) sì se h piccolo cerchio di centro (−1, 0) e raggio 1 EI implicito τ= O(h) sì sì: O(h) sì esterno del cerchio di centro (1, 0) e raggio 1 CN implicito τ= O(h2 ) sì sì: O(h2 ) sì semipiano negativo (coincide con la regione nel continuo) Tabella 2.1: Riepilogo dei metodi di approssimazione ad un passo esaminati. La parte implicita di questo metodo è data dal secondo argomento di f (tn , yn ). Per eliminarla sostituisco yn con la sua approssimazione ỹn calcolata usando EE. Il metodo risultante è detto metodo di Heun ( yn = yn−1 + h2 [f (tn−1 , yn−1 ) + f (tn , ỹn )] ỹn = yn−1 + hf (tn−1 , yn−1 ) (2.32) In questo modo perdo sicuramente la a-stabilità, ma vorrei conservare l’ordine di consistenza O(h2 ) tipico di CN. Per verificarlo calcolo l’errore di troncamento locale in ogni punto: y(tn ) − y(tn−1 ) 1 − [f (tn−1 , yn−1 ) + f (tn , yn−1 + hf (tn−1 , yn−1 ))] = h 2 y(tn ) − y(tn−1 ) 1 0 = − y (tn−1 ) + f tn−1 + h, y(tn−1 ) + hy 0 (tn−1 ) h 2 τn = Bisogna sviluppare in serie il termine f (tn−1 + h, y(tn−1 ) + hy 0 (tn−1 )): è necessario utilizzare gli sviluppi di Taylor per funzioni di due variabili. Cerchiamo una strada alternativa. τn misura l’errore commesso quando sostituisco alle derivate i rapporti incrementali e alle funzioni i valori in certi punti. Per CN si ha τn = h2 y 000 (tn ) che è zero se y 000 (tn ) = 0. Per poter dire che l’errore è di ordine due deve quindi essere τn = 0 per le funzioni con y 000 = 0, ovvero i polinomi di secondo grado (y(t) ∈ P2 ). Un metodo di ordine due integra esattamente l’equazione differenziale (nei punti di suddivisione) quando la sua soluzione è quindi in P2 , ovvero è del tipo y(t) = a + bt + ct2 . Si definisce P2 = span 1, t, t2 ovvero gli elementi di P2 sono le combinazioni lineari di 1, t e t2 . Esaminiamo allora tre problemi di Cauchy derivati da polinomi in P2 e calcoliamo i relativi τn : 2.6. ABBATTERE I COSTI DEI METODI IMPLICITI ( • y(t) = 1 è soluzione di y 0 (t) = 0 y(0) = 1 ; τn = 27 1−1 h − 12 [0 + 0] = 0 ⇒ ok per ordine z }| 0; h ( • y(t) = t è soluzione di y 0 (t) = 1 y(0) = 0 ; τn = { tn − tn−1 h − 12 [1 + 1] = 0 ⇒ ok per ordine 1; ( • y(t) = t2 è soluzione di y 0 (t) = 2t y(0) = 0 ; τn = t2n −t2n−1 h − 21 [2tn−1 + 2tn ] = h z }| { t (t − )(tn +tn+1 ) n n−1 − (tn−1 + tn ) = 0 ⇒ ok per ordine 2. = h Lo schema integra quindi esattamente 1, 1, t2 ⇒ è di ordine due. Si potrebbe verificare se sia di ordine tre calcolando l’errore del problema di Cauchy con soluzione y(t) = t3 , ma è inutile: è impossibile modificare un metodo implicito di ordine due e otterne uno di ordine superiore, può solo peggiorare o restare uguale. Capitolo 3 Interpolazione di funzioni Approssimo f (x) ≈ f˜(x) che deve coincidere con la f (x) in certi punti dati: f (x) ≈ f˜(x) : f˜(xi ) = f (xi ), con x1 , x2 , . . . , xn+1 punti dati. Ogni oggetto di questo tipo si chiama interpolatore, mentre i punti di controllo sono detti nodi di interpolazione. Un interpolatore permette di ricostruire la funzione attraverso i nodi di interpolazione (Figura 3.1). f (x) 0 a = x1 xi b = xn+1 x Figura 3.1: Nodi interpolatori di una generica funzione. 3.1 Interpolazione polinomiale Teorema 3.1. Siano dati n+1 punti distinti x1 , x2 , . . . , xn+1 e n+1 valori associati f (x1 ), f (x2 ), . . . , f (xn+1 ); allora ∃! polinomio Πn (x) di grado ≤ n : Πn (xi ) = f (xi ) con i = 1, 2, . . . , n + 1. Πn (x) è detto polinomio interpolatore di Lagrange per f relativo ai nodi dati; questo è un interpolatore polinomiale. Dimostrazione. Considero lo spazio dei polinomi Pn = span 1, x, x2 , . . . , xn formato da n + 1 oggetti linearmente indipendenti. Per i = 1, 2, . . . , n + 1 si definisce un polinomio Li (x) ∈ Pn : Li (xi ) = 1 ∧ Li (xj ) = 0 ∀ j = 6 i. Ad esempio, dati tre nodi x1 = x2 = x3 = 1, i polinomi corrispondenti, rappresentati in Figura 3.2, sono i seguenti: 29 30 CAPITOLO 3. INTERPOLAZIONE DI FUNZIONI 1 L1 x1 0 L2 L3 x3 x2 x Figura 3.2: Polinomi di Lagrange per tre nodi prefissati. • L1 (x) ∈ P2 : L1 (x1 ) = 1 ∧ L1 (x2 ) = L1 (x3 ) = 0; • L2 (x) ∈ P2 : L2 (x2 ) = 1 ∧ L2 (x1 ) = L2 (x3 ) = 0; • L3 (x) ∈ P2 : L3 (x3 ) = 1 ∧ L3 (x1 ) = L3 (x2 ) = 0. L’espressione generale degli Li (x), detti polinomi caratteristici di Lagrange, è Li (x) = n+1 Y j=1 j6=i x − xj . xi − xj (3.1) Questi n + 1 polinomi costituiscono una base per Pn : Pn = span {L1 (x), L2 (x), . . . , Ln+1 (x)} Infatti, gli Li sono esattamente n + 1 e ognuno di essi ha esattamente grado n: perché siano una base è sufficiente dimostrare che sono linearmente indipendenti, ovvero che vale: n+1 X αi Li (x) = 0 ⇐⇒ αi ≡ 0 i=1 Supponendo per assurdo α1 6= 0, avremmo α1 L1 (x) = − n+1 X αj Lj (x) j=2 che calcolato per x = x1 porta ad ottenere α1 L1 (x1 ) = −α2 L2 (x1 ) −α3 L3 (x1 ) − · · · − αn+1 Ln+1 (x1 ) . | {z } =1 x def | {z } =0 | {z } =0 | {z =0 } Si trova α1 = 0, che è in contrasto con l’ipotesi per assurdo, quindi l’assunto è dimostrato. Si procede analogamente per tutti gli αn fino a dimostrare che sono tutti uguali a zero ⇒ sono tutti linearmente indipendenti ⇒ sono una base per Pn e 3.1. INTERPOLAZIONE POLINOMIALE 31 possono essere quindi usati per esprimere i polinomi in sostituzione dei monomi. È quindi possibile scrivere l’espressione dei polinomi di Lagrange con questa base: Πn (x) = n+1 X f (xi )Li (x). (3.2) i=1 Πn (x) è sicuramente un polinomio di grado al più n; si deve verificare che valga f (xi ) nei nodi. Si trova che: Πn (xk ) = n+1 X i=1 f (xi ) Li (xk ) = f (xk ) Lk (xk ) = f (xk ) | {z } | {z } =1 =1 se k=i =0 se k6=i quindi esiste; deve anche essere unico. Supponiamo per assurdo che non lo sia: avremmo due polinomi interpolatori p(x) e q(x) per f nei nodi x1 , x2 , . . . , xn+1 . Sarà • p(x) ∈ Pn con p(xi ) = f (xi ) per i = 1, 2, . . . , n + 1; • q(x) ∈ Pn con q(xi ) = f (xi ) per i = 1, 2, . . . , n + 1; • w(x) = p(x) − q(x) ∈ Pn con w(xi ) = p(xi ) − q(xi ) = f (xi ) − f (xi ) = 0 per i = 1, 2, . . . , n + 1. w è quindi un polinomio di grado n che si annulla in n + 1 punti distinti ⇒ è identicamente nullo. A parte la dimostrazione formale, questo è intuitivo, poiché un polinomio di primo grado con due zeri (o uno di secondo (parabola) con tre, ecc.) può essere solo una retta coincidente con l’asse delle ascisse. Interpolando si commette un errore, che non sarà mai zero a meno che la funzione non sia essa stessa un polinomio. L’errore si definisce come E(x) = f (x) − Πn (x) e la sua espressione è data dal seguente Teorema 3.2. Data f : [a, b] → R, f ∈ C (n+1) (a, b) e n + 1 nodi x1 , x2 , . . . , xn+1 ∈ [a, b], ∀x ∈ [a, b] ∃ z(x) ∈ [a, b] tale che f (n+1) (z) ωn+1 (x) (n + 1)! (3.3) (x − xi ). (3.4) E(x) = f (x) − Πn (x) = dove ωn+1 (x) = n+1 Y i=1 Se x = xi (ovvero è uno dei nodi interpolatori) l’errore si annulla, in tutti gli altri casi vale la precedente. 32 CAPITOLO 3. INTERPOLAZIONE DI FUNZIONI Dimostrazione. Su t ∈ [a, b] costruisco la funzione g(t) = E(t) − ωn+1 (t) E(x) ωn+1 (x) che è continua con derivate continue fino all’ordine n + 1 (g(t) ∈ C (n+1) (a, b)). La derivata di ordine n + 1 è g (n+1) (t) = E (n+1) (t) − (n+1) poiché Πn E(x) E(x) (n + 1)! = f (n+1) (t) − (n + 1)! ωn+1 (x) ωn+1 (x) (3.5) (n+1) (t) = 0 e ωn+1 (t) = (n + 1)!. g(t) ha n + 2 zeri: per t = x1 si ha E(x) =0 } ωn+1 (x) g(x1 ) = E(x1 ) − ωn+1 (x1 ) | {z } | =0 {z =0 quindi gli zeri sono x1 , x2 , . . . , xn+1 (tutti i nodi). Anche x è uno zero, infatti per t=x E(x) g(x) = E(x) − ωn+1 (x) = 0. ωn+1 (x) Ne consegue che g 0 (t) avrà n + 1 zeri, g 00 (t) n zeri e g (n+1) (t) un solo zero ⇒ ∃ z(x) : g (n+1) (z) = 0. Ponendo t = z nell’espressione (3.5) di g (n+1) (t) calcolata in precedenza abbiamo g (n+1) (z) = f (n+1) (z) − E(x) f (n+1) (z) (n + 1)! = 0 ⇒ E(x) = ωn+1 (x) ωn+1 (x) (n + 1)! Quello che interessa realmente è l’errore massimo: max |f (x) − Πn (x)| = kf − Πn k∞ ≤ maxx∈[a,b] f (n+1) (x) (n + 1)! x∈[a,b] (b − a)n+1 ; le lunghezze dei diversi intervalli sono tutte maggiorate con b − a |ωn+1 (x)| = |(x − x1 ) · (x − x2 ) · · · · · · · (x − xn+1 )| ≤ (b − a) · (b − a) · · · · · (b − a) | {z n+1 volte } ne consegue che kf − Πn k∞ ≤ f (n+1) ∞ (b − a)n+1 . (n + 1)! (3.6) Normalmente al crescere di n l’errore tende ad azzerarsi perché l’approssimazione migliora. Se però i nodi sono equispaziati in certi casi va a infinito. Consideriamo 1 ad esempio la funzione f (x) = 1+x 2 sull’intervallo [−1, 1] e le sue interpolazioni polinomiali con nodi equispaziati. Si vede che, al crescere del numero di nodi, i polinomi approssimano sempre meglio la parte centrale della funzione ma tendono ad oscillare sulle code, con oscillazioni sempre più grandi (Figura 3.3). Questa analisi è dovuta a Runge. 3.1. INTERPOLAZIONE POLINOMIALE 33 Figura 3.3: Interpolazione polinomiale con nodi equispaziati della funzione f (x) = 1 . 1+25x2 34 CAPITOLO 3. INTERPOLAZIONE DI FUNZIONI Per evitare questi problemi si prende una suddivisione dell’intervallo con dei nodi addensati agli estremi (nodi di Chebishev1 ). Per costruire questa suddivisione si prende una semicirconferenza, la si divide in n parti uguali ognuna di lunghezza πn e si proiettano i punti di suddivisione sull’asse orizzonale (Figura 3.4). Questi punti −1 0 1 Figura 3.4: Costruzione dei nodi di Chebishev forniscono una possibile suddivisione per l’intervallo [−1, 1] e la loro espressione analitica è π x ^i = − cos i n con i = 0, 1, 2, . . . , n. L’estensione sull’intervallo [a, b] è xi = 3.1.1 a+b b−a + x ^i . 2 2 Interpolazione polinomiale a tratti Se lavoriamo con dati sperimentali però i nodi sono già fissati e non si può usare la tecnica appena vista. Per poter continuare ad utilizzare un’interpolazione polinomiale in questo caso si applica l’interpolazione nei diversi intervalli della funzione, utilizzando funzioni polinomiali a tratti (Figura 3.5). Dati n + 1 punti x1 , x2 , . . . , xn+1 f (x) 0 a = x 1 x2 x3 x4 x5 = b x Figura 3.5: Esempio di interpolazione polinomiale a tratti. che determinano n sottointervalli I1 , I2 , . . . , In avremo f (x) ≈ f˜(x) : f˜|Ik ∈ P1 1 Matematico russo, Chebishev è una delle possibili traslitterazioni del nome dal cirillico. 3.2. APPROSSIMAZIONI CON FUNZIONI SPLINES 35 con k = 1, 2, . . . , n e f˜(xi ) = f (xi ) per i = 1, 2, . . . , n + 1. Questo metodo è detto interpolazione di Lagrange composita polinomiale a tratti (in questo caso è una lineare a tratti ma potrebbe essere anche di ordine superiore). Anche con questo metodo commettiamo un errore, che va calcolato intervallo per intervallo con la (3.6), ricordando che in questo caso n = 1 (interpoliamo con delle rette): E(x) = f (x) − f˜(x) |Ik |2 max |E(x)| ≤ max f 00 (x) · x∈Ik x∈Ik 2! h2 max |E(x)| ≤ max f 00 (x) · k x∈[a,b] 2! x∈[a,b] f − f˜ ∞ h2 ≤ f 00 ∞ · 2 con h := maxk |Ik | lunghezza dell’intervallo più lungo. Con questo metodo posso rendere l’errore piccolo quanto voglio diminuendo h (Figura 3.6). È possibile f (x) h=b−a h= 0 b−a 5 a b x Figura 3.6: Confronto di due interpolazioni polinomiali a tratti per valori diversi di h. generalizzare questo metodo per tutti i polinomi di grado genericamente s: f (x) ≈ f˜(x) : f˜|Ik ∈ Ps f˜(xi ) = f (xi ) + condizioni aggiuntive f − f˜ ∞ ≤ f (s+1) ∞ h(s+1) (s + 1)! Nella pratica ci si limita solitamente ad approssimazioni lineari o al più quadratiche. 3.2 Approssimazioni con funzioni splines Data una funzione f : [a, b] → R e dati n + 1 nodi x1 , x2 , . . . , xn+1 con n + 1 valori f (x1 ), f (x2 ), . . . , f (xn+1 ) associati, si chiama spline interpolatoria di ordine k la funzione sk (x) tale che sk |Is ∈ Pk ∀ s = 1, 2, . . . , n è tale che sk (xi ) = f (xi ) con i = 1, 2, . . . , n + 1, dove sk ∈ C (k−1) (a, b). Il numero di condizioni necessarie è (k + 1)n − k(n − 1) = n + k: le (k + 1)n servono per determinare sk in ogni intervallo, 36 CAPITOLO 3. INTERPOLAZIONE DI FUNZIONI mentre le k(n − 1) sono per la continuità. Se k = 1 trovo l’interpolazione di Lagrange composita lineare a tratti; per k = 3 invece ho una spline cubica s3 (x) tale che s3 (x)|Is ∈ P3 , s3 ∈ C 2 (a, b) e s3 (xi ) = f (xi ). In questo caso il numero di condizioni necessarie è pari a n + 3. 3.3 Interpolazione di Hermite Si interpolano i valori della funzione e anche quelli di alcune sue derivate; si tratta sempre di un’interpolazione di tipo polinomiale. È più accurata ma anche più costosa. Consideriamo il caso di due punti x1 e x2 con x1 = 6 x2 , f (x1 ) e f (x2 ) dati, f 0 (x1 ) x2 x1 Figura 3.7: Punti per interpolazione di Hermite e f 0 (x2 ) dati (Figura 3.7). Ci sono quattro condizioni da verificare (quattro dof o gradi di libertà): cerco un polinomio p(x) tale che: • p(x1 ) = f (x1 ); • p(x2 ) = f (x2 ); • p0 (x1 ) = f 0 (x1 ); • p0 (x2 ) = f 0 (x2 ). Se le condizioni sono linearmente indipendenti deve essere p(x) ∈ P3 . Cerco un polinomio che soddisfi le condizioni richieste: q(x) (che dovrebbe essere di terzo grado) tale che q(x1 ) = q(x2 ) = 0 e q 0 (x1 ) = q 0 (x2 ) = 0 ⇒ q(x) = 0. Un possibile polinomio che soddisfi le condizioni sarebbe q(x) = α(x − x1 )2 (x − x2 )2 che però è di quarto grado ⇒ @ q(x) ∈ P3 che soddisfi le condizioni ⇒ le condizioni sono linearmente indipendenti. L’espressione di p(x) è complicata da scrivere. Per costruire l’interpolazione di Hermite globale su n + 1 punti si devono soddisfare 2(n + 1) condizioni; il polinomio risultante sarà di grado 2(n + 1) − 1 = 2n + 1. Nella pratica questa tecnica è utilizzabile solo a tratti. 3.4 Formule di quadratura interpolatorie Sono utilizzate per approssimare integrali. L’espressione generale è: Z I f (x) dx ≈ n+1 X i=1 f (xi )ωi (3.7) 3.4. FORMULE DI QUADRATURA INTERPOLATORIE 37 dove gli xi sono i nodi di quadratura mentre gli ωi i pesi della formula di quadratura. Sia f (x) ≈ Πn (x) polinomio interpolatore di Lagrange di grado ≤ n relativo ai nodi dati: Z f (x) dx ≈ Z Πn (x) dx = I Z n+1 X I f (xi )Li (x) dx = I i=1 n+1 X Z f (xi ) Li (x) dx |I i=1 {z ωi (3.8) } Gli Li (x) sono i polinomi caratteristici di Lagrange definiti in (3.1) e costituiscono i pesi ωi per le formule di quadratura di tipo interpolatorio. Approssimando in questo modo si commette un errore. Si definisce l’ordine di precisione di una formula di quadratura come l’ordine massimo dei polinomi integrati esattamente dalla formula. Per le formule di quadratura interpolatorie l’ordine di precisione è sempre ≥ n. Questo parametro dà un indicazione di massima del comportamento della formula con funzioni polinomiali; per avere una valutazione più precisa è necessario esaminare l’errore: Z errore = f (x) dx − formula = ZI Z [f (x) − Πn (x)] dx ≤ I |f (x) − Πn (x)| dx ≤ |I| · max |E(x)| ≤ I | {z I } E(x) dove E(x) è l’errore di interpolazione calcolato con la (3.6). Consideriamo ora diverse formule di quadratura su I = [a, b] con f (x) ≈ Π0 (x) • Π0 (x) = f (a) ⇒ ab f (x) dx ≈ ab f (a) dx = (b − a)f (a). Questo metodo, rappresentato in Figura 2.2, integra esattamente solo i polinomi di grado zero (le costanti) e ha quindi un OdP = 0. Nella pratica è utilizzato solo per costruire il metodo di Eulero Esplicito esaminato a pagina 8. R R • Π0 (x) = f (b) ⇒ ab f (x) dx ≈ ab f (b) dx = (b − a)f (b). Questo metodo integra esattamente solo i polinomi di grado zero (le costanti) e ha quindi un OdP = 0. Nella pratica è utilizzato solo per costruire il metodo di Eulero Implicito esaminato a pagina 9. R • Π0 (x) = f a+b 2 Z b a R ⇒ f (x) dx ≈ Z b f a a+b 2 dx = (b − a)f a+b . 2 (3.9) Questo metodo integra esattamente non solo i polinomi di grado zero, ma anche le rette e ha quindi un OdP = 1. Infatti, come visibile in Figura 3.8, l’integrale di una retta è l’area del trapezio di base minore f (a), base maggiore f (b) e f (a)+f (b) altezza b − a; la formula esaminata (b − a)f ( a+b quindi non 2 ) = (b − a) 2 è altro che l’area del trapezio. Nella pratica questa formula è utilizzata per costruire il metodo di Crank-Nicholson esaminato a pagina 9. 38 CAPITOLO 3. INTERPOLAZIONE DI FUNZIONI f (x) f (b) f ( a+b 2 ) f (a) a+b 2 a 0 x b Figura 3.8: Spiegazione della formula del punto medio (3.9). Se invece si sceglie f (x) ≈ Π1 (x) l’approssimazione utilizza due nodi; scegliamo x1 = a e x2 = b, lavorando sempre sull’intervallo I = [a, b]. Si ha: Π1 (x) = f (x1 ) x − x1 x − x2 +f (x2 ) x1 − x2 x2 − x1 | {z } | {z } L1 (x) Z b f (x) dx ≈ Z b Π1 (x) dx = a a Z b Z f (a) b a−b L2 (x) f (b) b−a (x − b) dx + a f (x) dx ≈ (b − a) a Z b (x − a) dx ⇒ a f (a) + f (b) 2 (3.10) Questa è la formula dell’area del trapezio: la funzione integra correttamente le rette, con OdP = 1 ed è rappresentata in Figura 2.4. Se si utilizza f (x) ≈ Π2 (x) l’approssimazione fa uso di tre nodi; scegliamo x1 = a, x2 = a+b 2 , x3 = b. Si ottiene la formula Z b b−a f (a) + 4f 6 f (x) dx ≈ a a+b 2 + f (b) (3.11) detta formula di Cavalieri-Simpson, che approssima la funzione integranda con delle parabole ed ha OdP = 3. Cerchiamo una metodologia per trovare esattamente l’ordine di precisione di una formula di quadratura. Ricordiamo la definizione dello spazio dei polinomi: n Pn = span 1, x, x2 , . . . , xn o Se la formula integra esattamente i monomi 1, x, x2 , . . . , xn ⇒ sarà esatta ∀ p ∈ Pn ⇒ OdP = n. Si costruisce una tabella analoga alla seguente: f (x) 1 x x2 .. . R f (x) dx 2 0 2 3 .. . formula 3.4. FORMULE DI QUADRATURA INTERPOLATORIE f (x) R 1 x x2 x3 x4 x5 2 0 1 3 2f (0) (punto medio) f (−1) + f (1) (trapezi) (f (−1) + 4f (0) + f (1)) (Cavalieri-Simpson) 2 0 0 6= 32 ⇓ OdP = 1 2 0 2 6= 23 ⇓ OdP = 1 2 5 1 3 (1 + 4 + 1) = 2 1 3 (−1 + 0 + 1) = 1 2 3 (1 + 0 + 1) = 3 1 3 (−1 + 0 + 1) = 1 2 3 (1 + 0 + 1) = 3 0 OdP = 3 2 3 0 f (x) dx 39 0 0 6= 2 5 ⇓ Tabella 3.1: Calcolo dell’ordine di precisione per alcune formule di quadratura. Per comodità si calcolano gli integrali su [−1, 1]: se l’integrazione è esatta su questo intervallo lo sarà anche su [a, b], poiché è possibile passare da uno all’altro con una trasformazione. T x ^ ∈ [−1, 1] → x ∈ [a, b] La trasformazione usata è composta da una traslazione β ed una dilatazione (o compressione) α: x = α^ x+β per x ^ = −1 si ha x = a, per x ^ = 1 si ha x = b, sostituendo: ( a = −α + β b=α+β da cui segue l’espressione analitica della trasformazione x= b−a a+b x ^+ . 2 2 (3.12) Analogamente si definisce una nuova funzione f^(^ x) : [−1, 1] → R tale che f^(^ x) = f (x), dove x = T (^ x). Il calcolo dell’integrale diventa quindi: Z b f (x) dx = a 3.4.1 b−a 2 Z 1 f^(^ x) d^ x. −1 Calcolo dell’errore Z err = I [f (x) − Πn (x)] dx ≤ |I| max |E(x)| I Richiamiamo l’espressione dell’errore di interpolazione (3.3) dimostrata nel Teorema 3.2: ∀ x ∈ I ∃ z(x) : Y f (n+1) (z) n+1 E(x) = (x − xi ) ; (n + 1)! i=1 questa espressione, maggiorata nell’ipotesi di regolarità (punti equidistanziati), ci dà l’errore massimo: (n+1) n+1 f Y max |E(x)| ≤ max |x − xi | . I I (n + 1)! i=1 40 CAPITOLO 3. INTERPOLAZIONE DI FUNZIONI Per calcolare l’espressione della produttoria consideriamo un intervallo I = [a, b] con quattro nodi equispaziati (Figura 3.9): sarà necessario valutare |x − x1 |, |x − x2 |, x a = x1 x2 x4 = b x3 Figura 3.9: Errore di interpolazione |x − x3 | e |x − x4 |. Se x cade nel primo intervallo (tra x1 e x2 ): y(x) = (x − x1 )(x − x2 ) y 0 (x) = 2x − x1 − x2 ⇒ x = Ne consegue che y x1 +x2 2 x1 + x2 2 2 1) = − (x2 −x . Le distanze saranno quindi: 4 |x − x1 | · |x − x2 | ≤ max |y(x)| = I (x2 − x1 )2 h2 = 4 4 |x − x3 | ≤ 2h |x − x4 | ≤ 3h Se avessi n + 1 punti sarebbe |x − xn+1 | ≤ n · h. La produttoria è quindi: n+1 Y |x − xi | ≤ i=1 hn+1 hn+1 (2 · 3 · 4 · · · · · n) = n! 4 4 e l’errore diventa err = |I| max |E(x)| ≤ |I| max I I (n+1) f 4(n + 1) hn+1 . (3.13) Esaminiamo l’espressione dell’errore per le diverse formule: • punto medio: approssima f (x) ≈ f (xM ) = f a+b 2 con un n° nodi: n + 1 = 1, max|f 0 | h, 4 ovvero xM = a+b con h = b − a; in realtà la formula 2 ⇒ err ≤ |I| integra anche le rette: il calcolo dell’errore utilizzando la formula generale non è corretto. Per ottenere una valutazione più accurata studiamo la formula con gli sviluppi di Taylor: f (x) = f (xM ) + (x − xM )f 0 (xM ) + (x − xM )2 00 f (z) 2 con z punto tra x e xM . Sostituendo lo sviluppo nell’integrale si ottiene: Z Z Z 1 err = [f (x) − f (xM )] dx = (x − xM )f 0 (xM ) + (x − xM )2 f 00 (z) ≤ 2 I I | I {z } =0 Z 1 |f 00 | 2 ≤ max f 00 (x − xM )2 dx = |I| max |I| I 2 I 24 |{z} I h2 3.4. FORMULE DI QUADRATURA INTERPOLATORIE 41 con h = b − a = |I|. In questo caso l’errore è zero se la derivata seconda si annulla: la formula è esatta per polinomi di primo grado (rette e costanti quindi). 00 | 2 • trapezi: n + 1 = 2, x1 = a, x2 = b ⇒ err ≤ max|f h ; la formula generale è 8 sostanzialmente corretta, seguendo un procedimento analogo a quello per il punto medio si trova quella esatta: |f 00 | 2 |I| = 2err(pm) 12 |{z} err ≤ |I| max I h2 con h = b − a = |I|. • Cavalieri-Simpson: n + 1 = 3, x1 = a, x2 = a+b 2 , x3 = b ⇒ err ≤ anche qui il calcolo dell’errore è sbagliato; la formula esatta è: err ≤ |I| max I con h = 3.4.2 b−a 2 = IV f 180 max|f 000 | 3 h ; 12 h4 |I| 2 . Interpolazione lineare composita Per ottenere stime migliori devo aumentare il numero di nodi, ovvero il grado dei polinomi: ciò comporta maggiori costi e possibili oscillazioni sgradite. Per ovviare al problema proviamo ad approssimare con una costante a tratti (usando la formula del punto medio). f (x) ≈ f˜(x) f˜(x)|Ik = f (xkM ) con Ik = [xk+1 − xk ] con k = 1, 2, . . . , n e h = maxk |xk+1 − xk |. Si ha (Figura 3.10): f (x) 0 x1 x2 x3 x4 x x5 Figura 3.10: Interpolazione composita con il metodo del punto medio. Z f (x) dx = I n Z X k=1 Ik f (x) dx ≈ n Z X k=1 Ik f (xkM ) dx = n X k=1 |Ik | f (xkM ) 42 CAPITOLO 3. INTERPOLAZIONE DI FUNZIONI L’errore complessivo come al solito è n Z n X X f (x) dx − |Ik | f (xkM ) err = Ik k=1 k=1 se in ogni Ik l’espressione dell’errore è |Ik | maxIk trovo: |f 00 | 2 k| 24 |I | {z } ne faccio la somma e h2 k n Z n Z h n X i X X |f 00 | 2 k [f (x) − Πn (x)] dx ≤ f (x) − f (xM ) dx ≤ |Ik | max h Ik 24 k k=1 Ik k=1 Ik k=1 n 00 00 X ≤ max I |f | 2 |f | 2 h |Ik | = |I| max h I 24 24 k=1 L’unico elemento modificabile è h: più punti si usano migliore diventa l’approssimazione, fermo restanto che in ogni intervallo l’interpolazione è sempre costante. La precisione dell’approssimazione cresce quadraticamente con h; al limite, per h → 0 l’errore si annullerebbe e l’approssimazione sarebbe uguale al valore esatto dell’integrale. Anche il metodo dei trapezi può essere applicato a tratti; si ha f (x) ≈ f˜(x) f˜(x)|Ik = Π1 (x) usando i nodi xk e xk+1 (Figura 3.11). L’errore in questo caso è f (x) x1 0 x2 x3 x4 x x5 Figura 3.11: Interpolazione composita con il metodo dei trapezi. n Z X |f 00 | 2 h [f (x) − Π1 (x)] dx ≤ |I| max I 12 Ik k=1 Si minimizza l’errore diminuendo h quadraticamente; anche qui per h → 0 l’errore si annulla. Utilizzando la formula di Cavalieri-Simpson l’interpolazione a tratti diventa: f (x) ≈ f˜(x) f˜(x)|Ik = Π2 (x) n Z X [f (x) − Π2 (x)] dx ≤ |I| max I Ik k=1 IV f 180 h4 3.4. FORMULE DI QUADRATURA INTERPOLATORIE 43 Per implementare su calcolatore questi tre metodi solitamente si usano delle formule più esplicite: • punto medio composito: Z f (x) dx ≈ I n X hf xkM k=1 • trapezi composita: n f (x1 ) + f (xn+1 ) X f (x) dx ≈ h + f (xk ) 2 I k=2 " Z # • Cavalieri-Simpson: n n X X h f (x) dx ≈ f (x1 ) + 2 f (xk ) + 4 f (xkM ) + f (xn+1 ) 6 I k=2 k=1 " Z 3.4.3 # Punti di Gauss Un altro modo per migliorare l’interpolazione è scegliere in modo opportuno i nodi. Se x1 , x2 , . . . , xn+1 sono punti di Gauss, allora l’ordine di precisione è 2(n+1)−1 = 2n+1 (due volte il numero dei nodi meno uno) ed è il massimo OdP ottenibile con una formula interpolatoria. Definizione 3.1. n + 1 punti sono punti di Gauss se sono gli zeri del polinomio di Legendre di grado n + 1. Definizione 3.2. I polinomi di Legendre sono polinomi definiti su [−1, 1] tali che: ∀ k ≥ 0 L∗k (x) è un polinomio di grado esattamente k e inoltre: Z 1 −1 Z 1 −1 L∗k (x)L∗s (x) dx = 0 con s = 0, 1, 2, . . . , k − 1 (3.14) L∗k (x)L∗k (x) dx = 1 (ad esempio) (3.15) La prima condizione impone l’ortogonalità del prodotto scalare e può essere scritta come (L∗k , L∗s ) = 0 per ogni s < k. Proviamo a costruire alcuni di questi polinomi: • k = 0 L∗0 (x) = cost individuato solo dalla (3.15): Z 1 −1 L∗0 (x)2 dx = 2(cost)2 = 1 ⇒ trovo il valore di cost • k = 1 L∗1 (x) = αx + β uso la (3.14) e il valore di L∗0 trovato al punto precedente: Z 1 0= −1 (L∗1 (x)L∗0 (x)) dx = Z 1 −1 (αx + β) dx = 2β ⇒ β = 0 ⇒ L∗1 (x) = αx Per trovare il valore di α devo usare la (3.15). 44 CAPITOLO 3. INTERPOLAZIONE DI FUNZIONI • k = 2 L∗2 (x) = a0 + a1 x + a2 x2 la (3.14) determina due condizioni: Z 1 Z 1 1 a0 + a1 x + a2 x2 dx = 0 ⇒ a0 = − a2 3 −1 −1 Z 1 Z 1 2 a0 + a1 x + a2 x2 x dx = 0 ⇒ a1 = 0 ⇒ a1 = 0 (L∗2 (x)L∗1 (x)) dx = 0 ⇒ 3 −1 −1 (L∗2 (x)L∗0 (x)) dx = 0 ⇒ Si ha quindi L∗2 (x) = a2 x2 − 1 3 ; per trovare il valore di a2 si usa la (3.15). Si può dimostrare che questi polinomi costituiscono una base per Pn : Pn = span{1, x, x2 , . . . , xn+1 } = | {z } n + 1 monomi = span{ L0 (x), L1 (x), L2 (x), . . . , Ln (x) } = | = {z } n + 1 polinomi caratteristici di Lagrange span{L∗0 (x), L∗1 (x), L∗2 (x), . . . , L∗n (x)}. | {z n + 1 polinomi di Legendre } A questo proposito si veda il seguente Teorema 3.3. {L∗0 (x), L∗1 (x), L∗2 (x), . . . , L∗n (x)} sono una base per Pn . Dimostrazione. I polinomi sono n + 1 oggetti, quindi basta dimostrare che sono P linearmente indipendenti. In particolare, deve valere ni=0 αi L∗i (x) = 0 ⇐⇒ αi ≡ 0 ∀ i; il lato ⇐ è ovvio, quello ⇒ va dimostrato. Supponiamo per assurdo che α0 6= 0: P avremo allora α0 L∗0 (x) = − ni=1 αi L∗i (x). Moltiplicando per L∗0 (x) e integrando troviamo: Z Z n 1 α0 | −1 (L∗0 (x))2 dx = − X i=1 {z = α0 x def (3.15) } | 1 αi −1 L∗i (x)L∗0 (x) dx {z = 0 x def (3.14) } da cui segue α0 = 0 che contraddice l’ipotesi. Si trova analogamente che αi = 0 ∀ i dimostrando quindi il teorema. Il teorema appena dimostrato ha un importante Corollario 3.3.1. R1 ∗ −1 Lk (x)ps (x) dx = 0 per tutti i polinomi di grado s < k. Dimostrazione. Dal teorema precedente discende che tutti Ri polinomi possono Pn 1 ∗ ∗ essere espressi come pn (x) = i=0 βi Li (x). Si ha quindi: −1 Lk (x)ps (x) dx = R1 ∗ R Ps P 1 s ∗ ∗ ∗ r=0 βr −1 Lk (x)Lr (x) dx. Questo integrale è zero −1 Lk (x) [ r=0 βr Lr (x)] dx = per la definizione (3.14) (se s < k, vero per ipotesi). Proviamo ora a calcolare gli zeri di alcuni polinomi di Legendre sull’intervallo di comodo [−1, 1]: • L∗0 (x) = c ha zero radici; • L∗1 (x) = αx ha uno zero in x = 0; • L∗2 (x) = β x2 − 1 3 ha due radici x = ± √13 . 3.4. FORMULE DI QUADRATURA INTERPOLATORIE 45 ^ ∈ [−1, 1] ad un punto in un generico intervallo x ∈ [a, b] si utilizza Per passare da x una trasformazione geometrica x= b−a a+b x ^+ 2 2 Applicando la trasformazioni ai risultati precedenti troviamo: • x ^=0→x= • x ^1 = − √1 3 x ^2 = √1 3 a+b 2 che è il punto medio dell’intervallo; x1 = − √1 · b−a + a+b 2 2 3 → x2 = √1 · b−a + a+b 2 3 2 In effetti il numero di radici di un polinomio di Legendre è regolato dal seguente Teorema 3.4. Il polinomio di Legendre L∗n (x) ha n radici distinte in ]−1, 1[. Dimostrazione. Poiché R1 ∗ −1 Ln (x) dx = R1 ∗ 1 −1 Ln (x) · |{z} ∈P0 dx = 0 per il Corollario 3.3.1, tutti i polinomi di Legendre sono a media nulla e quindi tagliano l’asse delle ascisse almeno una volta ⇒ hanno almeno una radice. Dimostriamo ora che non possono avere meno di n radici. Supponiamo per assurdo che L∗n (x) abbia s radici, con s < n. Siano t1 , t2 , . . . , ts tali radici, avremo: L∗n (x) = s Y (x − ti )pn−s (x) i=1 dove la produttoria è un polinomio di grado s e pn−s (x) 6= 0. Calcoliamo l’integrale Z 1 −1 L∗n (x) s Y (x − ti ) dx, i=1 che è uguale a zero per definizione; sostituendo L∗n (x) nell’integrale con quanto calcolato in precedenza si trova: !2 Z 1 s Y −1 i=1 (x − ti ) pn−s (x) dx; questo integrale è diverso da zero, poiché ( si=1 (x − ti ))2 non è un polinomio di Legendre ⇒ è una contraddizione ⇒ deve essere s = n. Ora è necessario dimostrare che le radici siano distinte (potrebbero esserci radici multiple). Sia per assurdo t1 radice doppia; allora L∗n (x) = (x − t1 )2 pn−2 (x) Q con pn−2 (x) 6= 0. Calcoliamo Z 1 −1 L∗n (x)pn−2 (x) dx = 0 per definizione; sostituendo L∗n (x) nell’integrale con quanto calcolato in precedenza si trova: Z 1 −1 (x − t1 )2 (pn−2 (x))2 dx > 0 46 CAPITOLO 3. INTERPOLAZIONE DI FUNZIONI che è una contraddizione ⇒ t1 non può essere una radice doppia. Si dimostra analogamente lo stesso (sebbene con qualche complicazione aggiuntiva) per tutte le radici multiple ⇒ le n radici sono distinte. Infine, bisogna dimostrare che gli estremi −1 e 1 non sono radici. Supponiamo per assurdo che −1 sia una radice; avremmo allora L∗n (x) = (x + 1)pn−1 (x) con pn−1 (x) 6= 0. Calcoliamo: Z 1 −1 L∗n (x)pn−1 (x) dx = 0 per definizione; sostituendo L∗n (x) nell’integrale con quanto calcolato in precedenza si trova: Z 1 −1 (x + 1) (pn−1 (x))2 dx > 0 che è una contraddizione ⇒ −1 non è una radice. Si procede analogamente per 1 ⇒ gli estremi non sono radici. Queste n radici distinte interne a ]−1, 1[ sono i punti di Gauss della Definizione 3.1. I punti di Gauss permettono di costruire formule di quadratura interpolatorie di grado massimo, come enunciato dal seguente Teorema 3.5. Sia f : [a, b] → R integrabile. Si consideri la formula di quadratura interpolatoria Z b a f (x) dx ≈ Z b Πn (x) dx = a n+1 X Z b f (xi ) Li (x) dx =: a i=1 n+1 X f (xi )ωi . i=1 Se gli n + 1 nodi della formula sono punti di Gauss allora l’ordine di precisione della formula è pari a 2(n + 1) − 1 = 2n + 1 (due volte il numero di nodi meno uno); questo è l’ordine massimo ottenibile con una formula di quadratura interpolatoria. Dimostrazione. Sappiamo per costruzione che Z b err = a f (x) dx − n+1 X f (xi )ωi = 0 i=1 ∀ f ∈ Pn , poiché se f è un polinomio di grado n coincide col suo polinomio interpolatore di grado n. Vogliamo dimostrare che ciò è vero anche ∀ f ∈ P2n+1 . Sia f ∈ P2n+1 : f (x) = pn (x) + qn (x) n+1 Y (x − xi ) i=1 dove la produttoria è un polinomio di grado n + 1. Osservo che f (xi ) = pn (xi ) per 3.5. FORMULE DI QUADRATURA IN DUE DIMENSIONI 47 i = 1, 2, . . . , n + 1. Sostituendo f nell’errore si ha Z b Z b err = n+1 X i=1 n+1 Y i=1 n+1 X (x − xi ) dx − qn (x) pn (x) dx + n+1 Y a a n+1 X f (xi )ωi = Z b = qn (x) (x − xi ) dx− f (xi )ωi = pn (xi )ωi + a i=1 i=1 i=1 Z b n+1 Y (x − xi ) dx qn (x) = a i=1 | {z L∗n+1 (x) } Gli xi , essendo punti di Gauss, sono le radici del polinomio di Legendre di grado n + 1; questo polinomio è integrato tra contro un polinomio di grado n ⇒ è zero per definizione ⇒ err = 0 ∀ f ∈ P2n+1 . Resta da dimostrare che 2n+1 è l’ordine massimo ottenibile. Supponiamo per assurdo che l’ordine sia m > 2n + 1 ⇒ err = 0 ∀ f ∈ Pm : Z b err = f (x) dx − a n+1 X f (xi )ωi = 0 i=1 se f ∈ Pm sarà f (x) = pm (x) + n+1 Y (x − xi )qm−(n+1) (x) i=1 con f (xi ) = pm (xi ) per i = 1, 2, . . . , n + 1. Sostituendo f nell’errore si ha Z b n+1 n+1 Y X err = p (x − xi )qm−(n+1) (x) dx− f(xi )ωi = m (x) dx + a i=1 a i=1 Z b n+1 Y Z b = a i=1 (x − xi )qm−(n+1) (x) dx che è l’integrale di un polinomio di Legendre di grado n + 1 contro un polinomio di grado m−(n+1) = m−n−1 > n (m è almeno 2n+1) ⇒ non vale l’ortogonalità. Dei metodi esaminati in precedenza, solo il punto medio può essere un metodo di Gauss, poiché oltre alle costanti approssima correttamente anche le rette. I metodi dei trapezi e di Cavalieri-Simpson, invece, non possono essere metodi di Gauss poiché utilizzano gli estremi dell’intervallo, che non possono essere punti di Gauss. 3.5 Formule di quadratura in due dimensioni Permettono di calcolare integrali del tipo Z f (x, y) dxdy T dove T è un dominio triangolare come quello di Figura 3.12. Le formule principali sono tre: 48 CAPITOLO 3. INTERPOLAZIONE DI FUNZIONI (x2 , y2 ) M (xM 1 , y1 ) M (xM 2 , y2 ) T (x1 , y1 ) M (xM 0 , y0 ) (x0 , y0 ) Figura 3.12: Dominio triangolare di integrazione. • formula del baricentro (estensione della formula del punto medio in due dimensioni): Z f (x, y) dxdy ≈ |T | f (xB , yB ) (3.16) T con (xB , yB ) baricentro del dominio di coordinate x0 +x1 +x2 y0 +y1 +y2 , 3 3 ; • formula dei vertici (estensione della formula dei trapezi in due dimensioni): Z f (x, y) dxdy ≈ T 2 |T | X f (xi , yi ); 3 i=0 (3.17) • formula dei punti medi Z T 2 |T | X M f (x, y) dxdy ≈ f (xM i , yi ) 3 i=0 (3.18) M con (xM i , yi ) punti medi dei lati. Le prime due formule sono esatte su P1 , la terza su P2 . Per verificare questa affermazione utilizziamo un dominio di comodo e ci riportiamo al caso generale con una trasformazione geometrica (Figura 3.13). x = A^ x+b " # " x a a = 11 12 y a21 a22 #" # " # x ^ b + 1 y^ b2 ( 1. (0, 0) → (x0 , y0 ) ⇒ b1 = x0 b2 = y0 " # " x a a 2. (1, 0) → (x1 , y1 ) ⇒ = 11 12 y a21 a22 #" # " # 1 x + 0 ⇒ 0 y0 ( a11 = x1 − x0 a21 = y1 − y0 3.6. FORMULE DI QUADRATURA ADATTIVE 49 (x2 , y2 ) (0, 1) F T T^ (0, 0) (1, 0) (x1 , y1 ) (x0 , y0 ) Figura 3.13: Trasformazione geometria del dominio triangolare. " # " x x − x0 a12 3. (0, 1) → (x2 , y2 ) ⇒ = 1 y y1 − y0 a22 #" # # " 0 x + 0 ⇒ 1 y0 ( a12 = x2 − x0 a22 = y2 − y0 In conclusione, l’espressione della trasformazione F è " # " x x − x0 x2 − x0 = 1 y y1 − y0 y2 − y0 #" # " x ^ x + 0 y^ y0 # dove il determinante della matrice A è det A = 2 |T |. Per verificare l’ordine di precisione delle formule calcoliamo esattamente gli integrali per i monomi fino al secondo grado sul domino di comodo: Z T^ 1 d^ xd^ y = T^ = 1 2 Z 1−^x Z 1 Z T^ Z 1−^x T^ y^ d^ y= d^ x y^ d^ xd^ y= 0 Z 1 x ^ · (1 − x ^) d^ x= 0 0 0 Z 1 Z d^ y= x ^ d^ x x ^ d^ xd^ y= Z 1 Z 1 (1 − x ^)2 0 0 Z 1−^x Z 1 2 d^ x= 1 6 1 6 1 12 0 0 0 T^ Z 1 Z 1−^x Z Z 1 2 (1 − x ^) 1 y^ d^ y= x ^ x ^ d^ x x ^y^ d^ xd^ y= d^ x= ^ 2 24 0 T 0 0 Z Z 1 Z 1−^x Z 1 (1 − x ^)3 1 y^2 d^ xd^ y= d^ x y^2 d^ y= d^ x= 3 12 0 0 0 T^ Z x ^2 d^ xd^ y= x ^2 d^ x d^ y= x ^2 · (1 − x ^) d^ x= In Tabella 3.2 sono confrontati i valori esatti con le approssimazioni delle diverse formule. 3.6 Formule di quadratura adattive Se uso una formula composita su una funzione come quella di Figura 3.14 normalmente non approssimo bene la prima parte. Dovrei utilizzare una suddivisione uniforme molto più fitta: in questo modo l’approssimazione sarebbe sicuramente accurata, ma con un significativo spreco di risorse, poiché la seconda parte della funzione è praticamente lineare. La soluzione è utilizzare una suddivisione non 50 CAPITOLO 3. INTERPOLAZIONE DI FUNZIONI f (^ x) R 1 1 2 1 6 1 6 1 12 1 24 1 12 x ^ y^ x ^2 x ^y^ y^2 ^ T f (^ x ) d^ x baricentro vertici 1 2 1 6 1 6 1 2 1 6 1 6 ⇓ ⇓ OdP = 1 OdP = 1 punti medi |T^| 3 (1 |T^| 1 3 (2 T | ^| 3 1 3 (4 ^ T | | 3 (0 |T^| 3 + (0 + |T^| 1 2 + 0) = 16 + 21 ) = 16 1 + 0) = 12 1 + 0) = 24 1 + 41 ) = 12 + 1 + 1) = + + (0 + 1 2 1 2 1 4 1 4 1 4 Tabella 3.2: Calcolo dell’ordine di precisione per alcune formule di quadratura a due dimensioni. f (x) b 0 a x Figura 3.14: Una funzione che necessita di interpolazione adattiva uniforme, molto più fitta nella prima parte che nella seconda. Poiché in generale non conosco come è fatta la funzione è necessario utilizzare una formula adattiva che alteri il passo di discretizzazione in funzione di diversi parametri. Lo scopo è ottenere un errore finale piccolo; poiché non posso calcolare a priori il valore di questo errore, devo stimarlo a partire dai valori trovati con le formule di quadratura tradizionali. Analizziamo la costruzione di una formula adattiva a partire dalla formula di Cavalieri-Simpson. Dato un generico intervallo di suddivisione [α, β] di lunghezza h1 α h2 h2 β Figura 3.15: Suddivisione dell’intervallo per le formule adattive h1 (Figura 3.15), si esamina il valore S1 di CS e lo si confronta con il valore esatto R I = αβ f (x) dx. Se l’approssimazione è soddisfacente si passa all’intervallo successivo, 3.6. FORMULE DI QUADRATURA ADATTIVE 51 altrimenti infittisco ulteriormente. Il valore dell’errore sull’intervallo [α, β] è err1 = I − S1 = − (h1 /2)5 IV f (z) 90 con z ∈ ]α, β[. Dividendo l’intervallo ottengo due sottointervalli di lunghezza h2 = h21 su cui applico nuovamente CS; ottengo una nuova soluzione S2 di cui valuto l’errore err2 = I − S2 = − i (h2 /2)5 h IV f (z1 ) + f IV (z2 ) 90 α+β con z1 ∈ ]α, α+β 2 [ e z2 ∈ ] 2 , β[. Ipotizzando che in [α, β] la derivata quarta varii poco, il suo valore in z1 e z2 sarà quasi uguale. Avremo err2 ≈ − 1 h52 IV 1 (h1 /2)5 IV f (z) = − f (z). 16 90 16 90 Per stimare il valore effettivo dell’errore calcolo + S2 = S2 − S1 ≈ − err1 − err2 = I − S1 −I da cui segue immediatamente che err2 ≈ |err2 | ≈ S2 −S1 15 . 15 (h1 /2)5 IV f (z) ≈ 15err2 16 90 Passando ai moduli: 1 |S2 − S1 | 15 Per minimizzare l’errore devo quindi minimizzare la differenza S2 − S1 . Per ogni −S1 | intervallo, se vale |S210 ≤ ε l’approssimazione trovata va bene, altrimenti suddivido ulteriormente l’intervallo e calcolo CS su h3 . In generale, se si vuole che l’errore sia minore di ε dovrà valere per ogni intervallo una condizione del tipo: |S2 − S1 | β−α ≤ε . 10 b−a Capitolo 4 Radici di equazioni non lineari Data una funzione f : [a, b] → R, f ∈ C 0 [a, b], si cerca α ∈ C : f (α) = 0. Si cercano quindi le radici dell’equazione f (x) = 0 in [a, b], con f che in generale è una funzione non lineare. Tutti i metodi di approssimazione per calcolare le radici sono metodi iterativi. Dato un valore iniziale x0 , si costruisce una successione {xk } con k > 0 tale che limk→∞ xk = α. Si dice che un metodo ha ordine di convergenza p se ∃ c > 0 tale che |xk+1 − α| ≤ c, |xk − α|p ∀ k ≥ k0 (tutto questo se la successione converge). Si noti che se p = 1 deve essere per forza c < 1 perché l’errore si riduca da una iterazione alla successiva. In generale, si suddivide [a, b] in tanti intervalli in modo che in ognuno cada sempre una sola radice. Tutti i metodi che esamineremo sono validi nell’ipotesi che f soddisfi il noto Teorema 4.1 (degli zeri). f : [a, b] → R, f ∈ C0 [a, b] : f (a)f (b) < 0 ⇒ ∃ almeno un α ∈ ]a, b[ : f (α) = 0 4.1 Metodo di bisezione Primo passo: a1 = a, b1 = b, x1 = a1 +b1 2 . Per k ≥ 1 valuto ( • f (a1 )f (x1 ) < 0 ⇒ ( • f (x1 )f (b1 ) < 0 ⇒ ak+1 = a1 bk+1 = x1 ; ak+1 = x1 bk+1 = b1 . Al passo k il valore successivo è xk+1 = ak+1 + bk+1 . 2 La procedura per due iterazioni è illustrata in Figura 4.1. Se uno dei due prodotti risultasse esattamente zero abbiamo trovato la radice esatta e l’algoritmo termina. 53 54 CAPITOLO 4. RADICI DI EQUAZIONI NON LINEARI f (x) a α x1 0 x2 b x Figura 4.1: Applicazione del metodo di bisezione In generale il test d’arresto utilizzato termina l’algoritmo se |bk+1 − ak+1 | < ε. Valutiamo la maggiorazione dell’errore: b−a 2 b2 − a2 b−a |x2 − α| ≤ = 2 22 .. . |x1 − α| ≤ |xk − α| ≤ b−a bk − ak = k 2 2 Questo metodo converge sicuramente; non si parla di ordine di convergenza in questo caso poiché ad ogni iterazione l’errore può essere arbitrariamente piccolo o grande. Perché l’errore sia minore di ε deve essere: b−a b−a < ε ⇒ 2k > ⇒ k > log2 (b − a) − log2 ε = c − log2 ε. k 2 ε Valutiamo l’errore in alcuni casi: • per ε = 10−1 si ha log2 ε = − log2 10 ≈ −3, 3 quindi k > c + 3, 3; • per ε = 10−2 si ha log2 ε = −2 log2 10 ≈ −2 · 3, 3 quindi k > c + 2 · 3, 3. Per migliorare l’errore di una cifra decimale servono quindi quattro iterazioni. Questo metodo è piuttosto lento ma ha la garanzia di funzionare sempre. Inoltre, costa estremamente poco, poiché l’unica operazione significativa da eseguire ad ogni iterazione è un confronto di segni. 4.2 Metodi basati su valori di f e/o di f 0 x0 dato, {xk } con k ≥ 1. Si linearizza f intorno al generico xk per trovare il punto successivo. Vicino a xk si approssima f (x) ≈ f (xk ) + qk (x − xk ) = 0 (ci si riporta al 4.2. METODI BASATI SU VALORI DI F E/O DI F 0 55 caso della retta che interseca l’asse delle ascisse) e il generico valore della successione è f (xk ) xk+1 = xk − . qk 4.2.1 Metodo delle corde Approssimo con la retta passante per i punti (a, f (a)) e (b, f (b)): y − f (a) = f (b) − f (a) (x − a) b− a } | {z q Per questo metodo qk = q per tutti i valori di k. Il valore iniziale è x0 dato (x0 = a f (x) a x2 α b x x1 0 Figura 4.2: Applicazione del metodo delle corde. o x0 = b) e xk+1 = xk − b−a f (xk ). f (b) − f (a) (4.1) La procedura per due iterazioni è illustrata in Figura 4.2. Questo metodo non funziona sempre: se f presenta dei massimi o dei minimi si rischia di finire fuori dall’intervallo (Figura 4.3). Quando funziona ha ordine di convergenza p = 1. 4.2.2 Metodo delle secanti Si parte da due punti x−1 e x0 in cui f ha segno diverso (solitamente gli estremi dell’intervallo). Per ogni k si trova la retta passante per (xk−1 , f (xk−1 )) e (xk , f (xk )): y − f (xk−1 ) = f (xk ) − f (xk−1 ) (x − xk−1 ). xk − xk−1 | Dati x−1 = a e x0 = b, si ha {z qk } 56 CAPITOLO 4. RADICI DI EQUAZIONI NON LINEARI f (x) x2 α b x x1 a 0 Figura 4.3: Un esempio in cui il metodo delle corde fallisce. f (x) a 0 x2 x 3 x1 α b x Figura 4.4: Applicazione del metodo delle secanti. 4.2. METODI BASATI SU VALORI DI F E/O DI F 0 xk+1 = xk − xk − xk−1 f (xk ) f (xk ) − f (xk−1 ) 57 (4.2) per k = 0, 1, 2, . . . . La procedura per tre iterazioni è illustrata in Figura 4.4. Come per il metodo precedente, se f presenta dei massimi o dei minimi il metodo potrebbe non funzionare; quando converge si ha p ≈ 1,6. 4.2.3 Metodo di Newton o delle tangenti x0 dato, {xk } con k ≥ 1. Si trovano le rette passanti per (xk , f (xk )) tangenti alla curva: y = f (xk ) + f 0 (xk )(x − xk ). | {z } qk Dato x0 (x0 = a o x0 = b), si ha xk+1 = xk − f (xk ) f 0 (xk ) (4.3) per k = 0, 1, 2, . . . . La procedura per due iterazioni è illustrata in Figura 4.5. Questo metodo è il più rapido, con ordine p = 2, ma richiede delle ipotesi aggiuntive sulla funzione per assicurare la convergenza; nell’esempio in figura, funziona solo ponendo x0 = b. Se si parte da un x0 punto di Fourier (tale che f (x0 )f 00 (x0 ) > 0) allora la f (x) α a x2 x1 b x 0 Figura 4.5: Applicazione del metodo di Newton. convergenza è garantita. Non è detto che partendo da un altro x0 le cose vadano male, ma un punto di Fourier assicura che il metodo convergerà con successo, come enunciato dal seguente Teorema 4.2 (della convergenza di Netwon). Sia f : [a, b] → R tale che: f ∈ C 2 [a, b] (4.4) f (a)f (b) < 0 (4.5) 0 ∀ x ∈ [a, b] (4.6) 00 ∀ x ∈ [a, b] (4.7) f (x) 6= 0 f (x) 6= 0 58 CAPITOLO 4. RADICI DI EQUAZIONI NON LINEARI e sia x0 un punto di Fourier (f (x0 )f 00 (x0 ) > 0). Allora la successione di Newton xk = xk−1 − f (xk−1 ) f 0 (xk−1 ) k = 1, 2, 3, . . . (4.8) converge all’unica radice α dell’equazione f (x) = 0 (f (α) = 0). Inoltre, l’ordine di convergenza è 2, cioè ∃M > 0 : |xk − α| ≤M |xk−1 − α|2 (4.9) Dimostrazione. Le ipotesi (4.4) e (4.5) ⇒ esistenza di almeno una radice; (4.6) ⇒ unicità della radice α. Per dimostrare la convergenza ad α della (4.8) supponiamo, ad esempio, che f (a) < 0 e f (b) > 0, e quindi f 0 (x) > 0 ∀ x e inoltre f 00 (x) > 0 ∀ x. Si ha quindi la situazione raffiguata in Figura 4.6. I punti di Fourier sono tutti i punti f (x) α a x1 b x 0 Figura 4.6: Dimostrazione del teorema della convergenza di Newton (Teorema 4.2). di [α, b]. Scegliamo x0 = b. Dimostreremo che (4.8) è una successione monotona descrescente inferiormente limitata (e quindi ammette limite). Per k = 1 si ha x1 = x0 − f (x0 ) . f 0 (x0 ) Poiché f (x0 ) > 0 e f 0 (x0 ) > 0 ⇒ x1 < x0 . Inoltre, f 00 > 0 ⇒ la tangente alla curva in (x0 , f (x0 )) sta sotto la curva. Quindi taglia l’asse delle x prima della curva ⇒ α < x1 < x0 . Si vede immediatamente che, ∀ k, se xk sta a destra di α (f (xk ) > 0) il successivo xk+1 < xk e poiché f 00 > 0, anche xk+1 > α ⇒ ∀ k α < xk+1 < xk < · · · < x0 . Allora la successione (4.8) ammette limite: ∃ η ∈ [a, b] : lim xk = η k→∞ Passando al limite in (4.8) e usando l’ipotesi (4.4) si ha: η=η− f (η) ⇒ f (η) = 0. f 0 (η) 4.2. METODI BASATI SU VALORI DI F E/O DI F 0 59 L’unicità della radice implica η ≡ α. Dimostriamo ora che la convergenza è quadratica: f 00 (z) 0 = f (α) = f (xk ) + f 0 (xk )(α − xk ) + (α − xk )2 2 con z tra α e xk . Dividendo per f 0 (xk ) si ha: α − xk + | 00 1 f (xk ) 2 f (z) = − (α − x ) k f 0 (xk ) 2 f 0 (xk ) {z α−xk+1 } che porta quindi ad ottenere (∀ k): 1 |f 00 (z)| |α − xk+1 | 2 = 2 |f 0 (x )| ≤ M |α − xk | k con M = 1 max[a,b] |f 00 | . 2 min[a,b] |f 0 | Il punto di partenza x0 è cruciale per la buona convergenza del metodo di Netwon. Come si sceglie x0 quando non è possibile (o è complicato) verificare le ipotesi del teorema? L’errore è dato da |α − xk+1 | ≤ M |α − xk |2 ⇒ |ek+1 | ≤ M |ek |2 ; analizzando il suo comportamento si ha: |e0 | = |x0 − α| |e1 | = |x1 − α| ≤ M |e0 |2 2 |e2 | = |x2 − α| ≤ M |e1 |2 ≤ M M e20 ≤ M 3 |e0 |4 .. . k (M |e0 |)2 |ek | = |xk − α| ≤ M |ek−1 | ≤ · · · ≤ M Poiché si vuole ek → 0 deve essere necessariamente 2 M |e0 | < 1; (4.10) nella pratica, è sufficiente che x0 sia “abbastanza vicino” ad α. 4.2.4 Test d’arresto I metodi esaminati proseguono all’infinito. È necessaria una condizione per decidere quando fermarsi e considerare il risultato ottenuto “abbastanza buono”. Generalmente si usano i seguenti test: 1. Test sulle iterate successive: ad ogni iterazione valuto |xk+1 − xk | < ε; |a| (4.11) se è vero, passo al test 2. Questo test è efficace se |f 0 (α)| < 1 (f è abbastanza piatta). Il termine a denominatore serve per rendere la differenza un numero puro e poterla quindi confrontare con ε; 60 CAPITOLO 4. RADICI DI EQUAZIONI NON LINEARI 2. Test sul residuo: ad ogni iterazione valuto |f (xk+1 )| <ε |f (a)| (4.12) se è vero mi fermo. Questo test lavora bene per f ripide, con f 0 (α) > 1. 4.3 Radici di un sistema di equazioni non lineari È dato il sistema F(x) = 0, con x ∈ D ⊂ Rn : f1 (x1 , x2 , . . . , xn ) = 0 f2 (x1 , x2 , . . . , xn ) = 0 .. . fn (x1 , x2 , . . . , xn ) = 0 Usiamo il metodo di Newton per risolverlo. Nel caso scalare, abbiamo: f (x) ≈ f (xk ) + f 0 (xk )(x − xk ) = 0. ∀k f (x) = 0 Analogamente per un sistema: x(0) dato ∀k F(x) ≈ F(x(k) ) + J F[x(k) ] x − x(k) = 0 dove J F[x(k) ] è la matrice Jacobiana calcolata in x(k) : ∂f1 ∂x1 ∂f2 ∂x1 J F[x(k) ] = ∂fn ∂x1 x(k) x(k) .. . x(k) ∂f1 ∂x2 ∂f2 ∂x2 ∂fn ∂x2 x(k) ··· x(k) ··· .. .. . . x(k) ··· ∂f1 ∂xn ∂f2 ∂xn ∂fn ∂xn x(k) x(k) .. . x(k) L’algoritmo di Netwon per sistemi non lineari si scrive così: (0) dato x J F[x(k) ] δx = −F x(k) k = 0, 1, 2, . . . (4.13) x(k+1) = x(k) + δx Ad ogni iterazione, si deve risolvere un sistema di equazioni lineari con matrice Jacobiana che cambia ad ogni iterazione (costoso!). I test d’arresto utilizzati sono analoghi a quelli del caso scalare e utilizzano una qualche norma di vettore: 1. sulle iterate: 2. sul residuo: (k) x − x(k−1) <ε x(0) (4.14) F x(k) < ε F x(0) (4.15) Capitolo 5 Risoluzione di sistemi lineari Dati un vettore b ∈ Rn e una matrice A ∈ Rn×n si cerca x ∈ Rn tale che Ax = b. La condizione necessaria e sufficiente perché questo sistema abbia un’unica soluzione è che la matrice A sia non singolare, ovvero che det A 6= 0. È equivalente imporre che A sia invertibile, ovvero che ∃ A−1 | A−1 A = I = AA−1 ; in tal caso è possibile trovare la soluzione del sistema “con carta e penna” moltiplicando per A−1 : A−1 Ax = A−1 b ⇒ x = A−1 b. Il calcolo di A−1 in generale è molto costoso, e questa procedura non è di fatto praticabile. Vogliamo valutare i costi della risoluzione del sistema usando un metodo numerico su calcolatore e l’accuratezza del risultato ottenuto rispetto alla soluzione esatta. Esaminiamo il problema con alcune matrici particolari. Matrice A diagonale d11 0 0 0 d 0 22 0 0 d33 A= .. .. .. . . . 0 0 0 ··· ··· ··· .. . 0 0 0 .. . · · · dnn con det A = d11 · d22 · · · · · dnn = 6 0 ⇒ dii = 6 0 ∀ i. Il sistema si riduce quindi a n equazioni indipendenti tra loro: 1 x1 = db11 x2 = b2 d22 .. . bn (5.1) bk dkk (5.2) xn = dnn con la generica soluzione xk = Per calcolare ogni soluzione devo fare una divisione: il costo totale è di n ops (molto basso). 61 62 CAPITOLO 5. RISOLUZIONE DI SISTEMI LINEARI Matrice A triangolare inferiore l11 l 21 l A= 31 .. . 0 ··· ··· ··· .. . 0 0 l22 l32 .. . l33 .. . 0 0 0 .. . ln1 ln2 ln3 · · · lnn con determinante dato da det A = l11 · l22 · · · · · lnn 6= 0 ⇔ lii 6= 0 ∀ i. Per risolvere il sistema si parte dalla prima equazione: x1 = lb111 x2 = b2 −ll2221 x1 x = b3 −l31 x1 −l32 x2 3 (5.3) l33 .. . xn = bn − Pn−1 l x j=1 nj j lnn con generico termine xk = bk − Pk−1 j=1 lkj xj lkk Il costo totale è 1 + 2 + 3 + · · · + n = , k = 1, 2, · · · , n. n(n+1) 2 (5.4) di ordine O(n2 ). Matrice A triangolare superiore u11 u12 u13 0 u 22 u23 0 0 u33 A= .. .. .. . . . 0 0 0 · · · u1n · · · u2n · · · u3n .. .. . . · · · unn Si procede analogamente al caso precedente ma partendo dall’ultima equazione: Pn b1 − j=2 u1j xj x1 = Pun11 b2 − j=3 u2j xj x2 = u22 .. . b −un−1,n xn xn−1 = n−1un−1,n−1 x = bn n (5.5) unn con generico termine xk = bk − Pn j=k+1 ukj xj ukk Il costo totale è come il precedente: , n(n+1) 2 k = n, n − 1, · · · , 1. di ordine O(n2 ). (5.6) 5.1. METODI DIRETTI 63 Per matrici A generiche si potrebbe usare il metodo di Cramer che permette di trovare la soluzione esatta. Le soluzioni del sistema sono gli xi = det Ai det A dove Ai è la matrice A con il vettore dei termini noti al posto della colonna i: aij Ai = b1 b2 .. . aij b n |{z} i Calcolare un singolo determinante è un operazione di costo O(n!); in questo caso devo calcolarne n + 1, quindi il costo totale è n!(n + 1) = (n + 1)!. Se ad esempio n = 20 (un sistema di venti equazioni in venti incognite, quindi piuttosto piccolo), il costo con questo metodo è 21! ops ≈ 5 · 1019 ops. Un calcolatore di media potenza esegue 109 flops; il tempo richiesto per ottenere il risultato è quindi t= 5 · 1019 ops = 5 · 1010 s 109 flops pari a 1585 anni. Usando un calcolatore più potente, in grado di eseguire 1012 flops, si arriva ad una soluzione in “soli” 1,5 anni, un tempo comunque troppo grande. 5.1 Metodi diretti I metodi diretti permettono di arrivare con un numero finito di passi ad una soluzione finale esatta (se si lavora in aritmetica esatta). I metodi indiretti o metodi iterativi, al contrario, raggiungono la soluzione solo come limite di una successione. 5.1.1 Metodo di eliminazione di Gauss Sviluppiamo la trattazione con una matrice A ∈ R3×3 per semplicità; i risultati sono ovviamente validi in generale. Si vuole risolvere il seguente sistema: a11 a12 a13 x1 b1 a21 a22 a23 x2 = b2 a31 a32 a33 x3 b3 Per risolvere il sistema si procede per passi: 1. si elimina x1 da tutte le equazioni tranne la prima, calcolando: a21 a11 a31 III eq − I eq a11 II eq − I eq (5.7) 64 CAPITOLO 5. RISOLUZIONE DI SISTEMI LINEARI Il sistema risultante diventa a11 x1 + a12 x2 + a13 x3 = b1 (1) (1) (1) 0 · x1 + a22 x2 + a23 x3 = b2 (1) (1) (1) 0 · x1 + a32 x2 + a33 x3 = b3 (5.8) espresso in forma matriciale: b1 a11 a12 a13 x1 (1) (1) (1) 0 a22 a23 x2 = b2 (1) (1) (1) x3 b3 0 a32 a33 2. si elimina x2 da tutte le restanti equazioni tranne la seconda, calcolando (1) a32 III eq − II eq ! (1) a22 Il sistema risultante diventa a11 x1 + a12 x2 + a13 x3 = b1 (1) (1) (1) 0 · x1 + a22 x2 + a23 x3 = b2 (2) (2) 0 · x1 + 0 · x2 + a33 x3 = b3 (5.9) espresso in forma matriciale: a11 a12 a13 b1 x1 (1) (1) (1) 0 a22 a23 x2 = b2 (2) (2) x3 0 0 a33 b3 A questo punto si usa il metodo di risoluzione per matrici triangolari. Il costo complessivo è dato da due parti: il costo per l’eliminazione e il costo per la risoluzione di una matrice triangolare superiore: costo = O n3 3 ! + n(n + 1) . 2 La parte più costosa di questo metodo, metodo di eliminazione di Gauss (MEG), è l’eliminazione; ciononostante, questo è il metodo diretto più efficace. Il problema di questo metodo è che se si deve risolvere più volte lo stesso problema variando solo il vettore di termini noti è necessario comunque ricalcolare tutto da zero, con un dispendio significativo di risorse. 5.1.2 Metodo di fattorizzazione di Gauss In generale ogni matrice può essere scritta come il prodotto di due matrici triangolari, una inferiore e una superiore: A = L · U . Il sistema diventa quindi: ( L·U · x} = b ⇒ | {z y Ux = y Ly = b → x (2) → y (1) 5.1. METODI DIRETTI 65 Il sistema va risolto due volte, ognuna con costo n(n+1) , totale n(n + 1). Con questo 2 metodo se cambia b basta ripetere la risoluzione di quest’ultimo sistema, mantenendo le stesse matrici L e U . Le due matrici triangolari si calcolano a partire dal MEG: A(0) = A → A(1) = M1 A(0) 1 M1 = − aa21 11 − aa31 11 0 0 1 0 0 1 A(1) = M1 A(0) → A(2) = M2 A(1) 1 0 0 1 M2 = (1) a32 0 − (1) a22 U =A (2) 0 0 1 = M2 A(1) = M2 M1 A(0) = (M2 M1 ) A M1 e M2 sono matrici triangolari inferiori; il loro prodotto è ancora una triangolare inferiore. L’inversa del loro prodotto sarà tale che M −1 U = A M = M 2 M1 det M = (det M2 ) (det M1 ) = 1 6= 0 ⇒ invertibile 1 M −1 = (M2 M1 )−1 = M1−1 M2−1 = aa21 11 a31 a11 1 0 0 0 1 0 · 0 1 0 0 1 (1) a32 (1) a22 0 0 1 L’algortimo complessivo è A(0) = A A(k) = Mk A(k−1) k = 1, 2, . . . , N − 1 U = A(n−1) = (MN −1 · MN −2 · · · M1 )A = M A L = M −1 = (MN −1 · MN −2 · · · M1 )−1 3 I costi per calcolare L = M −1 e U sono di ordine O n3 , quelli per la risoluzione dei due sistemi triangolari sono n(n + 1). Questo metodo è detto metodo di fattorizzazione di Gauss (MFG). 5.1.3 Riepilogo • MEG: 3 Ax = b → U x = b̃, U matrice triangolare superiore; costo = O n3 + n(n+1) ; 2 • MFG: A = L · U , L matrice(triangolare inferiore con lii = 1, U matrice triangoU x = y II → x lare superiore; LU x = b → ; L = M −1 = (Mn−1 Mn−2 · · · M1 )−1 ; Ly = b I → y costo = O n3 3 + n(n + 1). 66 CAPITOLO 5. RISOLUZIONE DI SISTEMI LINEARI MEG≡MFG; MFG è più conveniente se si devono risolvere tanti sistemi della stessa A e diversi termini noti. Questi metodi richiedono A non singolare e gli elementi pivot 1 non devono mai azzerarsi (è anzi preferibile che siano grandi). Si osservi ad esempio il seguente sistema: 2x1 + x2 − x3 = 2 4x1 + 2x2 + x3 = 7 3x − 2x + x = 4 1 2 3 Questo sistema ha la soluzione x1 = x2 = x3 = 1 e quindi la matrice A è non singolare. Applicando MEG, il primo passo è 2x1 + x2 − x3 = 2 0 · x + 0 · x + 3x = 3 1 2 3 0 · x − 5x + 7x = 1 1 2 3 2 2 −2 Nel secondo passo si deve sostituire la terza equazione con III eq − II eq 05 , che è ovviamente impossibile. Se stessimo risolvendo il sistema manualmente potremmo scambiare la seconda equazione con la terza e MEG potrebbe proseguire. In generale ad ogni passo i bisogna cercare il coefficiente più grande in modulo (il pivot) sulla i-esima colonna e scambiare la sua equazione con quella alla riga i. Questa operazione, detta processo di pivoting sulle righe permette al metodo di funzionare sempre. Teorema 5.1. MEG (o MFG) termina con successo ⇐⇒ tutti i minori principali sono diversi da zero. I minori principali sono tutti i minori costruiti intorno alla diagonale della matrice. Ad esempio, per a11 a12 a13 a21 a22 a23 a31 a32 a33 i minori principali sono h i • a11 (ordine 1); " • # a11 a12 (ordine 2); a21 a22 a11 a12 a13 • a21 a22 a23 (ordine 3, tutta la matrice di partenza). a31 a32 a33 e devono avere tutti determinante non nullo. Se non è così, è necessario usare il pivoting per poter applicare il metodo. Nella pratica si esegue sempre il pivoting, poiché è meno oneroso della verifica di tutti i minori. Alcune classi di matrici verificano automaticamente la CNES e quindi non necessitano di pivoting: 1 (1) (n−1) I pivot sono gli a11 , a22 , . . . , ann per cui si divide nei diversi passi. 5.1. METODI DIRETTI 67 • matrici simmetriche e definite positive: una matrice è simmetrica se concide con la sua trasposta (AT = A); una matrice A simmetrica è anche definita positiva se verifica una delle condizioni seguenti (sono tutte equivalenti tra loro): 1. A ha solo autovalori positivi; 2. xT Ax = (Ax, x) > 0 ∀ x ∈ Rn x 6= 0; inoltre (Ax, x) = 0 ⇐⇒ x = 0; 3. tutti i minori principali sono > 0 (condizione di Sylvester). • matrici a dominanza diagonale stretta: ∀ i |aii | > Pn j=1 |aij |. j6=i Per MFG il processo di pivoting fa uso di una matrice di permutazione P tale che P A = LU ; ne segue: ( P Ax = P b → LU x = P b → Ux = y Ly = P b Data una matrice A ∈ Rn×n , det A 6= 0, è sempre possibile trovare L triangolare inferiore e U triangolare superiore tale che LU = A? Le incognite del problema sono gli elementi lij , uij delle matrici; il numero di incognite è quindi n(n+1) + n(n+1) = 2 2 n2 + n, a fronte di sole n2 equazioni. Poiché ci sono n incognite di troppo è necessario fissarle a priori. Ci sono due possibilità: o si fissa la diagonale di L o quella di U : lii = 1 i = 1, 2, . . . , n → ricado in MFG uii = 1 i = 1, 2, . . . , n → metodo di fattorizzazione di Crout Teorema 5.2. Data una matrice A invertibile e non singolare, A è fattorizzabile nel prodotto LU , L matrice triangolare inferiore con lii = 1 e U matrice triangolare superiore, oppure L matrice triangolare inferiore e U matrice triangolare superiore con uii = 1 ⇐⇒ tutti i minori principali di A sono non nulli. Un’altra classe di matrici con cui il calcolo è semplificato sono le matrici tridiagonali: a1 c1 0 · · · 0 .. .. b . . 2 a2 c2 .. .. A= . . 0 0 b3 . . . . .. . . . . . cn−1 . 0 · · · 0 bn an Una matrice di questo tipo può essere scomposta in due matrici triangolari per poi applicare MFG: 1 β 2 L= 0 . . . 0 ··· .. . 1 . β3 . . .. .. . . ··· 0 0 ··· 0 . . .. . . . . .. . . .. . 0 βn 1 α1 U = 0 0 .. . 0 ··· 0 .. .. . α2 c2 . .. .. .. . . 0 . .. .. .. . . . cn−1 ··· 0 0 αn c1 0 68 CAPITOLO 5. RISOLUZIONE DI SISTEMI LINEARI In questo caso L e U sono bidiagonali, con coefficienti: α1 = a1 b2 α1 β2 c1 + α2 = a2 ⇒ α2 = a2 − β2 c1 .. . β2 α1 = b2 ⇒ β2 = L’algortimo di calcolo pone inizialmente α1 = a1 e per ogni i = 2, · · · , n calcola: bi αi−1 αi = ai − βi ci−1 . βi = I costi di questo metodo modificato sono sensibilmente più bassi: ≈ 2(n − 1) per la fattorizzazione e O(n) per la risoluzione del sistema. 5.1.4 Metodo di fattorizzazione di Cholewski Se A è una matrice simmetrica ∃ L triangolare inferiore e D diagonale tali che LDLT = A; in questo caso i costi sono un po’ più bassi. Se A, oltre ad essere simmetrica, è anche definita positiva, allora ∃!L triangolare inferiore tale che LLT = A, e si ha: ( LT x = y Ly = b Quest’ultimo caso è detto metodo di fattorizzazione di Cholewski (MFC) o delle radici quadrate, e ha costi dimezzati rispetto a MFG: costi = O n3 6 ! + n(n + 1). Esaminiamo il caso di A ∈ R3×3 matrice simmetrica: a11 a12 a13 A = a12 a22 a23 a13 a23 a33 Si cerca una L : LLT = A } | l11 0 0 l11 l12 l13 a11 a12 a13 l21 l22 0 0 l22 l32 = a12 a22 a23 l31 l32 l33 0 0 l33 a13 a23 a33 | {z L }| {z LT {z A } 5.1. METODI DIRETTI 69 Ne segue2 : 2 l11 = a11 l11 = l11 l21 = a12 l21 l11 l31 = a13 l31 √ a11 a11 > 0 a12 = l11 a13 = l11 s 2 2 l21 + l22 = a22 l22 = q 2 = a22 − l21 a2 a22 − 12 = a11 s a11 a22 − a212 a11 Nell’ultimo caso si noti che il termine sotto radice è in realtà il determinante di un minore principale di A: a det 11 a21 5.1.5 a12 = a11 a22 − a212 > 0. a22 Accuratezza dei risultati Usando uno dei metodi diretti precentemente esaminati si dovrebbe ottenere la soluzione x esatta. In realtà, questi metodi sono normalmente implementati su dei calcolatori, che non lavorano in aritmetica esatta, ma commettono errori di approssimazione e troncamento dei risultati; spesso inoltre i dati di partenza (matrice A e vettore b) sono frutto di esperimenti e quindi soggetti ad ulteriori errori. Si vuole verificare che commettendo piccoli errori sui dati gli errori sui risultati sono altrettanto piccoli. La misura dell’errore è data da un rapporto di norme; per maggiori informazioni sul calcolo delle norme fare riferimento all’Appendice A. Consideriamo soltanto una perturbazione sul vettore b: kbk è soggetta ad un errore kδbk piccolo: Ax = b → Ax̃ = b̃ b̃ = b + δb L’errore relativo sul vettore è quindi kδbk < ε. kbk Questo errore dovrebbe comportare un’analoga perturbazione sulla soluzione x̃ = x + δx: kδxk < cε kxk con c > 0 indipendente dalla dimensione n del sistema. Il sistema risultante diventa Ax = b → A (x + δx) = b + δb Ax + Aδx = b + δb Sottraendo la prima e l’ultima equazione si ha Aδx = δb ⇒ δx = A−1 δb √ Più correttamente, nel primo caso si avrebbe l11 = ± a11 ; poiché è del tutto indifferente la scelta della radice assumiamo di prendere sempre quella positiva. 2 70 CAPITOLO 5. RISOLUZIONE DI SISTEMI LINEARI e l’errore sul risultato è kδbk kδxk = A−1 δb ≤ A−1 · kbk · kbk ≤ ε A−1 |||A||| kxk | {z } <ε poiché kbk = kAxk ≤ |||A||| kxk. L’errore relativo è quindi kδxk ≤ |||A||| A−1 ε kxk | {z } k(A) con k(A) detto numero di condizionamento della matrice. Questo valore permette di valutare quanto A è buona da trattare: se è grande (k(A) 1) la matrice si dice mal condizionata ed è difficile da trattare; in altre parole, non è garantito che gli errori sui risultati siano piccoli a fronte di piccole perturbazioni dei dati. Vale sempre k(A) ≥ 1 poiché 1 = |||I||| = A−1 A ≤ A−1 |||A||| = k(A). Se A = AT (matrice simmetrica) è definita positiva si ha k2 (A) = |||A|||2 A−1 = λmax · 2 1 λmin = λmax . λmin Esempio. Si consideri il sistema " 106 0 0 10−6 #" # " x1 106 = x2 10−6 # che ha soluzione esatta x1 = x2 = 1. Il numero di condizionamento in questo caso è k(A) = λmax 106 = −6 = 1012 . λmin 10 Consideriamo un piccolo errore sul vettore b: " 106 b̃ = 2 · 10−6 # le soluzioni del sistema perturbato sono x̃1 = 1 e x̃2 = 2. L’errore su b è abbastanza piccolo: b̃ − b 10−6 ∞ = = 10−12 ; kbk∞ 106 non si può dire altrettanto di quello sulla soluzione: 1 kx̃ − xk∞ = = 1 = k(A)ε kxk∞ 1 che è troppo grande. Se invece si pone " 106 + 10−6 b̃ = 10−6 # 5.2. METODI ITERATIVI 71 le soluzioni sono x̃1 = 1 + 10−12 e x̃2 = 1. Le perturbazioni in questo caso sono coerenti: b̃ − b ∞ kbk∞ kx̃ − xk∞ kxk∞ 5.2 10−6 = 10−12 106 10−12 = = 10−12 . 1 = Metodi iterativi I metodi iterativi non risolvono esattamente il sistema, ma cercano x come limite di una successione di iterate: x = lim x(k) . k→∞ I metodi iterativi che esamineremo sono detti metodi di splitting: si separa (split) la matrice A nella somma algebrica di due matrici: A = M − N . Il sistema esatto diventa: (M − N )x = b Mx − Nx = b Mx = Nx + b h iT Si fissa poi x(0) a piacere (tipicamente si usa x(0) = 0 o x(0) = 1 1 · · · 1 risolve il sistema approssimato M x(k) = N x(k−1) + b ) e si (5.10) per k = 1, 2, . . . . Scelte diverse di M conducono a metodi diversi. In ogni caso la matrice M deve essere invertibile (det M 6= 0) e “facile” da invertire. Chiamando e(k) := x − x(k) l’errore commesso ad ogni iterazione si vuole che lim e(k) = 0. k→∞ Calcolando la differenza tra il sistema esatto e quello approssimato si trova M x − x(k) = N x − x(k−1) =⇒ M e(k) = N e(k−1) ∀k e l’espressione dell’errore diventa per ogni valore di k −1 (k−1) e(k) = M = B 2 e(k−2) = · · · = B k−1 e(1) = B k e(0) | {z N} e (5.11) B dove B := M −1 N è detta matrice di iterazione. Si ha e(k) → 0 ⇐⇒ B k → 0, cioè se B è una matrice convergente ⇐⇒ ρ(B) < 1. 72 5.2.1 CAPITOLO 5. RISOLUZIONE DI SISTEMI LINEARI Metodo di Jacobi Consideriamo il caso M = diag(A) matrice diagonale; N sarà −aij 0 0 N =M −A= .. . −aij 0 Perché N sia invertibile deve necessariamente essere aii 6= 0 per ogni valore di i. Per i = 1, 2, . . . , n si ha (k) xi i−1 n X X 1 (k−1) (k−1) bi − aij xj − aij xj = = aii j=1 j=i+1 (5.12) n X 1 (k−1) . bi − = aij xj aii j=1 j6=i Questo metodo è detto metodo di Jacobi (J). 5.2.2 Metodo di Gauss-Seidel Consideriamo il caso M = tril(A) matrice triangolare inferiore; N sarà −aij 0 N =M −A= 0 .. . 0 0 Perché N sia invertibile deve necessariamente essere aii 6= 0 per ogni valore di i. Per i = 1, 2, . . . , n si ha (k) xi n i−1 X X 1 (k) (k−1) = bi − aij xj − aij xj . aii j=1 j=i+1 (5.13) Questo metodo è detto metodo di Gauss-Seidel (GS). 5.2.3 Convergenza dei metodi iterativi Teorema 5.3. Data una matrice A a dominanza diagonale stretta ⇒ J e GS convergono. Dimostrazione. Ricordiamo la definizione di dominanza diagonale stretta: ∀i |aii | > n X j=1 j6=i |aij | . 5.2. METODI ITERATIVI 73 Nel caso di J si vuole provare che ρ(BJ ) < 1 per ottenere e(k) → 0. Calcolando a − aijii 0 0 BJ = M −1 N = .. . a − aijii 0 si trova che ρ(BJ ) ≤ |||BJ |||∞ = max i=1,n n X j=1 n X aij |bij | = max a < 1. i=1,n ii j=1 j6=i La dimostrazione per GS è più complessa e non viene quindi riportata. Teorema 5.4. Data una matrice A simmetrica (AT = A) e definita positiva ⇒ GS converge. Corollario 5.4.1. Se inoltre A è anche tridiagonale e i due metodi (J e GS) convergono ⇒ GS converge più velocemente, con ρ(BGS ) = [ρ(BJ )]2 . 5.2.4 Metodi di rilassamento Si introduce un parametro ω ∈ R detto parametro di rilassamento per migliorare la convergenza dei metodi iterativi: ciò porta alla creazione di nuovi metodi. (k) JOR (J over relaxation) ∀ k si calcola la generica componente x̃i pone (k) xi (k) = ωx̃i (k−1) + (1 − ω)xi ; con J e si (5.14) per ω = 0 il metodo ovviamente non funziona, mentre per ω = 1 equivale a J. Vale il seguente Teorema 5.5. Se J convege ⇒ JOR converge per 0 < ω ≤ 1. (k) SOR (successive over relaxation) ∀ k si calcola la generica componente x̃i con GS e lo si pone nella (5.14) come per JOR; anche in questo caso, per ω = 0 il metodo non funziona e per ω = 1 equivale a GS. Vale il seguente Teorema 5.6. Se Bω è la matrice di iterazione di SOR ⇒ ρ(Bω ) ≥ |ω − 1| ⇒ SOR diverge per ω < 0 e ω ≥ 2 ⇒ (se SOR converge ⇒ 0 < ω < 2). Teorema 5.7. Se A = AT definita positiva, SOR converge ⇐⇒ 0 < ω < 2. 74 5.2.5 CAPITOLO 5. RISOLUZIONE DI SISTEMI LINEARI Test d’arresto I test d’arresto sono eseguti per decidere quando troncare la successione e considerare abbastanza buono il risultato ottenuto. Il primo test usato è il test sulle iterate: (k) x − x(k−1) ≤ ε. x(k) (5.15) Questo test va bene se la convergenza è abbastanza rapida; se fosse troppo lenta lo scostamento tra le iterate potrebbe essere troppo piccolo il metodo rischierebbe di interrompersi troppo presto. Il secondo test usato è il test sul residuo: (k) r kbk ≤ε (5.16) dove r(k) := Ax(k) − b = 6 0 è detto residuo. Generalmente si esegue (5.15) ad ogni iterazione; se il test ha successo si usa (5.16) per controllare che sia corretta; in tal caso ci si ferma, altrimenti si passa all’iterazione successiva. In questo modo si limitano i costi: calcolare una norma ha costo O(n), mentre eseguire dei prodotti matrice vettore è O(n2 ), un costo comparabile con quello di un’iterazione di J o GS. In effetti, perché convenga usare un metodo iterativo al posto di uno diretto i costi devono essere sensibilmente inferiori: il numero di iterazioni deve essere n3 . 5.3 Sistemi indeterminati Dati un vettore di termini noti b ∈ Rm e una matrice A ∈ Rm×n si cerca x ∈ Rn : Ax = b, con m 6= n. Se m < n si ha un sistema sottodeterminato (poche equazioni e tante incognite): è necessario fissare a priori il valore di m − n incognite e poi risolvere normalmente il sistema. Se invece m n si ha un sistema sovradeterminato del tipo .. . · · · amn .. . . . h i . · · · xn = bm . .. . Un sistema così strutturato può avere una sola, nessuna o infinite soluzioni a seconda di A e b. Ad esempio, il sistema 1 2 " # 3 x1 = 6 2 4 x2 3 6 9 ha infinite soluzioni, poiché tutte le equazioni “dicono la stessa cosa”: tutte sono 1 multipli di x1 + 2x2 = 3. Se nello stesso sistema fosse invece b = 1 nessuna 1 equazione sarebbe soddisfatta e il sistema avrebbe zero soluzioni. 5.4. REGRESSIONE 75 Teorema 5.8. Sia A ∈ Rm×n , con m n. Se A ha rango pieno3 , il sistema normale4 ha un’unica soluzione, detta soluzione del sistema nel senso dei minimi quadrati. T Ax = AT b. La matrice AT A è Dimostrazione. Esaminiamo A il sistema T normale T n×n T T T quadrata (∈ R ), inoltre A A = A A = AT A ⇒ è anche simmetrica. Si ha poi AT Ax, x = (Ax, Ax) = kAxk2 ≥ 0. É noto che kAxk = 0 ⇐⇒ Ax = 0; d’altra parte, x = 0 ⇐⇒ rank(A) = n (teorema di Rouché-Capelli). Per la condizione del prodotto scalare si vede quindi che A è una matrice definita positiva ⇒ il sistema ha un’unica soluzione. Si cerca la soluzione candidata x∗ ∈ Rn : kb − Ax∗ k2 sia minimo. Il corrispondente problema di minimo cerca x∗ ∈ Rn : kb − Ax∗ k2 ≤ kb − Avk2 ∀ v ∈ Rn . Si definisce una funzione vettoriale F (v) := kb − Avk2 = kbk2 + kAvk2 − 2 (b, Av) = kbk2 + (Av, Av) − 2 (b, Av) = = kbk2 + AT Av, v − 2 AT b, v ; F (v) è un oggetto quadratico in v, in particolare un paraboloide (l’equivalente in una dimensione sarebbe una normale parabola): posso trovarne gli estremanti derivandolo attraverso l’operatore gradiente. ∇F = 0 ∇F = 0 + 2AT Av − 2AT b = 0 ⇒ AT Av = AT b I punti estremali di F sono soluzioni di questo sistema lineare, che è il sistema normale: sappiamo che ha un’unica soluzione ⇐⇒ A ha rango pieno. 5.4 Regressione Dati m punti nel piano (x1 , y1 ), (x2 , y2 ), . . . , (xm , ym ) distinti (Figura 5.1), si cerca un polinomio p ∈ Pn : p(xi ) = yi , per i = 1, 2, . . . , n. Se n = m − 1 si può usare l’interpolazione di Lagrange discussa nella Sezione 3.1; in questo caso 100 punti saranno interpolati da un polinomio di grado 99, con tutti i problemi del caso, oscillazioni in primis. Se n m − 1 questa strada non è praticabile e bisogna trovare un’alternativa. Vogliamo studiare l’andamento del fenomeno che i dati rappresentano, per capire come varierà nel futuro: si parla di data fitting dei valori sperimentali. Immaginiamo che esista una retta passante per tutti i punti (caso n = 1): si cerca la r(x) = a1 + a2 x che interpoli i punti dati (r(xi ) = yi ); avremo un sistema del tipo a1 + a2 x1 = y1 a1 + a2 x2 = y2 . .. a +a x =y 1 3 2 m m Il rango di una matrice è l’ordine massimo dei minori non nulli della matrice. Una matrice m × n si dice a rango pieno o rango massimo se rank(A) = min(m, n), ovvero tutti i minori di grado pari alla dimensione minore della matrice sono diversi da zero. 4 Dato un sistema rettangolare Ax = b, si dice sistema normale il corrispondente sistema T A Ax = AT b. 76 CAPITOLO 5. RISOLUZIONE DI SISTEMI LINEARI f (x) y1 x 0 x1 Figura 5.1: Distribuzione di punti da interpolare. con m equazioni e 2 incognite: è un sistema sovradeterminato e può essere risolto nel senso dei minimi quadrati. Il sistema Aa = y in forma matriciale è x1 y1 " # x2 a1 y2 .. a = .. . . 2 . 1 xm ym 1 1 . . . Moltiplicando a sinistra per AT si ottiene il sistema normale (che ha dimensione 2) AT Aa = AT y, con " T m A A = Pm i=1 xi # Pm xi i=1 Pm 2 i=1 xi " P # m y i T A y = Pmi=1 i=1 xi yi Si ottiene il sistema " m Pm i=1 xi # #" # " P Pm m x a y i 1 i i=1 Pm = Pmi=1 2 i=1 xi a2 i=1 xi yi (5.17) La matrice AT A è simmetrica. Se i punti sono distinti la matrice A ha rango pieno (in questo caso rank (A) = 2), ed AT A è anche definita positiva. La retta che si ottiene dalla soluzione del sistema è detta retta di regressione lineare (Figura 5.2). C’è un altro approccio per affrontare il problema. Scegliamo sempre di approssimare i dati con una retta (caso n = 1): r(x) = a1 + a2 x. Si calcola il valore della retta in ogni punto, esaminando la differenza con il valore reale yi : m X [yi − r(xi )]2 . i=1 Tra tutte le possibili rette si cerca quella che rende minima questa differenza; poiché la retta è identificata dai suoi coefficienti a1 e a2 , cerchiamo di minimizzare m X i=1 [yi − (a1 + a2 xi )]2 =: F (a) 5.4. REGRESSIONE 77 f (x) y1 x 0 x1 Figura 5.2: Regressione lineare della distribuzione di Figura 5.1. " # a con a = 1 vettore delle incognite. Si cerca un a ∈ R2 : F (a) ≤ F (b), ∀ b ∈ R2 a2 (problema di minimo). Per risolverlo si devono uguagliare a zero le derivate prime (in questo caso il gradiente, poiché si tratta di una funzione vettoriale): " ∇F = 0 ⇒ ∂F ∂a1 ∂F ∂a2 # " # 0 . 0 = Sviluppando si trova m X ∂F [(yi − (a1 + a2 xi )) (−1)] = 0 =2 ∂a1 i=1 m X ∂F =2 [(yi − (a1 + a2 xi )) (−xi )] = 0 ∂a2 i=1 che porta ad un sistema di due equazioni in due incognite ( P Pm P m a1 + m i=1 yi i=1 a2 xi = P Pi=1 m m 2 = Pm x y a x a x + 2 1 i i=1 i i i=1 i=1 i (5.18) in forma matriciale " #" # " P # Pm m xi a1 yi i=1 i=1 Pm 2 = Pm . m Pm i=1 xi | i=1 xi {z i=1 xi yi a2 } A Questo è lo stesso sistema trovato in precedenza in (5.17). La matrice A è simmetrica; se gli xi sono distinti (come dall’ipotesi) è anche definita positiva ⇒ il sistema ha una sola soluzione; resta da dimostrare che questa soluzione è effettivamente quella minima. Calcoliamo la matrice Hessiana del sistema ∂2F 2 1 ∂a ∂2F ∂a2 a1 H(F ) = ∂2F ∂a1 a2 ∂2F ∂a22 " m = 2 Pm i=1 xi # Pm xi i=1 Pm 2 i=1 xi a meno del fattore 2 è la stessa matrice di (5.17). Il determinante della matrice è det H(F ) = m m X i=1 x2i − "m X i=1 #2 xi ≥ 0. (5.19) 78 CAPITOLO 5. RISOLUZIONE DI SISTEMI LINEARI Teorema 5.9 (di Cauchy-Schwartz). Dati a, b ∈ R ⇒ 2ab ≤ a2 + b2 . Dimostrazione. Vale sempre (a − b)2 > 0, con il caso (a − b)2 = 0 ⇐⇒ a = b. Sviluppando il binomio si ha a2 + b2 − 2ab > 0 ⇒ 2ab < a2 + b2 . Il teorema appena enunciato permette di valutare il determinante per alcuni valori di m. • per m = 2 abbiamo 2 x21 + x22 − (x1 + x2 )2 = 2 x21 + x22 − x21 + x22 + 2x1 x2 = = x21 + x22 − 2x1 x2 = (x1 − x2 )2 ≥ 0 • per m = 3 analogamente 3 x21 + x22 + x23 − (x1 + x2 + x3 )2 = = 2 x21 + x22 + x23 − 2x1 x2 − 2x1 x3 − 2x2 x3 ≥ ≥ 2 x21 + x22 + x23 − x21 − x22 − x21 − x23 − x22 − x23 ≥ 0 Se i punti sono distinti det H(F ) > 0. La soluzione del sistema (5.18) fornisce i coefficienti della retta di regressione, e si ottiene lo stesso risultato del caso precedente. f (x) y1 x 0 x1 Figura 5.3: Distribuzione di punti da interpolare con delle funzioni sinusoidali. Invece di una retta si può usare, ad esempio, la combinazione lineare di due funzioni arbitrarie. Dati m punti nel piano (x1 , y1 ), (x2 , y2 ), . . . , (xm , ym ) distinti (Figura 5.3), si cerca la funzione g(x) = a1 sin x + a2 cos x tale che la differenza Pm 2 i=1 [yi − g(xi )] sia minima. Il problema richiede di minimizzare la funzione F (a) = m X [yi − (a1 sin xi + a2 cos xi )]2 . i=1 Si procede come prima all’annullamento del gradiente: " ∇F = ∂F ∂a1 ∂F ∂a2 # " P # 2 m [(yi − (a1 sin xi + a2 cos xi )) (− sin xi )] i=1 = Pm =0 2 i=1 [(yi − (a1 sin xi + a2 cos xi )) (− cos xi )] e si giunge al sistema " Pm Pm i=1 sin 2x i i=1 sin xi cos xi # " # "P # Pm m sin xi cos xi a1 (sin xi )yi i=1 i=1 Pm . = Pm 2 i=1 cos xi a2 i=1 (cos xi )yi (5.20) 5.4. REGRESSIONE 79 Da qui si ricavano i coefficienti a1 , a2 e la g(x) che approssima i dati nel senso dei minimi quadrati. In tutti i casi le incognite sono i coefficienti della combinazione lineare, mentre la scelta delle funzioni da usare è arbitraria e decisa all’inizio. Si può arrivare a questa soluzione anche utilizzando l’altro metodo. Procediamo ad un’ulteriore generalizzazione, che include i casi esaminati precedentemente. Dati m punti nel piano (x1 , y1 ), (x2 , y2 ), . . . , (xm , ym ) distinti e uno spazio vettoriale SN = span {ϕ1 (x), ϕ2 (x), . . . , ϕN (x)} di dimensione N , si cerca una funzione g(x) ∈ SN tale che la differenza m X [yi − g(xi )]2 i=1 sia minima. Si può vedere che i due esempi precedenti ricadono in questo caso generale: • regressione lineare: N = 2, SN = P1 = span {1, x}; • combinazione di seno e coseno: N = 2, SN = span {sin x, cos x}. Fissato lo spazio vettoriale, l’espressione della g(x) è data g(x) = a1 ϕ1 (x) + a2 ϕ2 (x) + · · · + aN ϕN (x); la funzione da minimizzare è quindi F (a) := m X [yi − (a1 ϕ1 (x) + a2 ϕ2 (x) + · · · + aN ϕN (x))]2 . i=1 L’espressione del gradiente in questo caso è ∂F ∂a1 ∂F ∂a2 ∇F = .. . ∂F ∂aN ∈ RN ; per k = 1, 2, . . . , N , il valore della k-esima derivata è m X ∂F [yi − (a1 ϕ1 (x) + a2 ϕ2 (x) + · · · + aN ϕN (x))] (−ϕk (xi )). =2 ∂ak i=1 Si arriva ad un sistema con N equazioni e N incognite, con Pm i=1 ϕ1 (xi )ϕ1 (xi ) Pm i=1 ϕ2 (xi )ϕ1 (xi ) M = .. . Pm i=1 ϕN (xi )ϕ1 (xi ) Pm ϕ1 (xi )ϕ2 (xi ) Pi=1 m i=1 ϕ2 (xi )ϕ2 (xi ) ··· ··· .. . .. . ϕ (x i=1 N i )ϕ2 (xi ) · · · Pm Pm ϕ1 (xi )ϕN (xi ) i=1 Pm i=1 ϕ2 (xi )ϕN (xi ) ; .. . Pm l’espressione del generico elemento alla riga k e colonna j è Mkj = m X i=1 ϕk (xi )ϕj (xi ). i=1 ϕN (xi )ϕN (xi ) 80 5.4.1 CAPITOLO 5. RISOLUZIONE DI SISTEMI LINEARI Approssimazione di funzioni con i minimi quadrati Data una funzione f (x) definita sull’intervallo [a, b] e uno spazio vettoriale S = span {ϕ1 (x), ϕ2 (x), . . . , ϕN (x)} di dimensione N , si cerca una funzione fN (x) ∈ S tale che Z b [f (x) − fN (x)]2 dx a sia minima. Non è sufficiente che f sia integrabile, deve anche esserlo f 2 . Ad esempio, R1 1 √ 1 per la funzione f (x) = √x , l’integrale 0 2√x dx = x |10 = 1 è definito, mentre f 2 (x) = 1 x sull’intervallo [0, 1] non è integrabile. Si chiama ( 2 L (a, b) := v : [a, b] → R : Z b ) 2 v (x) dx < +∞ a spazio delle funzioni integrabili al quadrato. In questo spazio è possibile definire un analogo della norma euclidea di vettore Z b kvkL2 (a,b) = !1 2 2 v (x) dx a e del prodotto scalare Z b 2 v, w ∈ L (v, w)L2 (a,b) = v(x)w(x) dx; a inoltre, in questo spazio vale ancora la disuguaglianza di Cauchy-Schwarz: |(v, w)| ≤ kvk kwk . Sia f ∈ L2 (a, b), S = span {ϕ1 (x), ϕ2 (x), . . . , ϕN (x)} sottospazioR vettoriale di L2 (a, b) di dimensione finita N , con {ϕj } base ortogonale: (ϕi , ϕj ) = ab ϕi ϕj dx = 0 per tutti gli i 6= j. Si cerca una fN ∈ S tale che Z b [f (x) − fN (x)]2 dx = kf − fN k2 a sia minima. Usiamo la norma al quadrato e non quella normale poiché la prima è facilmente derivabile. La fN è una combinazione lineare delle ϕi (x) della base: fN = N X ai ϕi (x) i=1 dove i coefficienti ai sono le incognite del problema di minimo. Si vuole minimizzare la 2 Z b F (a) := a f (x) − N X aj ϕj (x) dx; j=1 questo oggetto è un funzionale quadratico derivabile, di cui si cerca il min F (a). a∈RN 5.4. REGRESSIONE 81 Come prima bisogna annullare il gradiente; si trova un sistema Aa = b con Z b Akj = a Z b ϕk (x)ϕj (x) dx f (x)ϕj (x) dx. bj = a In generale, la k-esima componente del gradiente (con k = 1, 2, . . . , N ) è ∂F =2 ∂ak Z b a f (x) − N X aj ϕj (x) (−ϕk (x)) dx = 0 j=1 e si ha Z b a {[−f (x)ϕk (x)] + [a1 ϕ1 (x)ϕk (x) + a2 ϕ2 (x)ϕk (x) + · · · + aN ϕN (x)ϕk (x)]} = 0. Poiché la base è ortogonale tutti i termini si annullano tranne quello con gli indici uguali: Z b ak a ϕ2k (x) dx Z b = a f (x)ϕk (x) dx. Il sistema diventa R b 2 a ϕ1 (x) dx .. . Rb 2 a ϕN (x) dx 0 b a1 a f (x)ϕ1 (x) dx R b a2 a f (x)ϕ2 (x) dx . = .. . . . 0 Rb 2 a ϕ2 (x) dx aN R Rb a f (x)ϕN (x) dx e ha come soluzione i coefficienti Rb ak = a f (x)ϕk (x) dx Rb 2 a ϕk (x) dx = (f, ϕk ) . kϕk k2 (5.21) detti coefficienti di Fourier di f . Se {ϕk } è una base ortonormale (kϕk k = 1), allora ak = (f, ϕk )) e valgono le seguenti proprietà. f fN S Figura 5.4: Rappresentazione grafica della Proprietà 1. Proprietà 1. fN è la proiezione di f sullo spazio S, cioè si ha: (f − fN , v) = 0 ∀v ∈ S . Questa proprietà è rappresentata graficamente in Figura 5.4 82 CAPITOLO 5. RISOLUZIONE DI SISTEMI LINEARI Dimostrazione. Per k = 1, 2, . . . , N si ha Z b a [f (x) − fN (x)] ϕk (x) dx = Z b a Z b = a Z b = a f (x) − N X aj ϕj (x) ϕk (x) dx = j=1 f (x)ϕk (x) − N X aj ϕj (x)ϕk (x) dx = j=1 f (x)ϕk (x) dx − ak Z b a ϕ2k (x) dx = 0. Quindi la proprietà essendo vera sulla base, è vera su ogni v ∈ S. Proprietà 2 (Disuguaglianza di Bessel). Dalla proprietà precedente segue che kfN k ≤ kf k (fN essendo la proiezione di f ). Quindi si deduce, usando la definizione dei coefficienti di Fourier: N 2 Z b N N X X X kfN k = ai ϕi = a2i kϕi k2 = (f, ϕi )2 ≤ f 2 (x) dx =: kf k2 ; a i=1 i=1 i=1 2 (5.22) si ottiene una successione monotona crescente superiormente limitata, quindi la serie ∞ X a2i i=1 converge. In generale, se S = PN −1 , si ha una base ortogonale {ϕ1 (x), ϕ2 (x), . . . , ϕN (x)}, dove ∀i vale ϕi ∈ PN −1 , con (ϕi , ϕj ) = 0 per i 6= j. Per semplicità consideriamo [a, b] = [−1, 1]. La costruzione dello spazio procede come di seguito: ϕ1 = c Z 1 ϕ2 = ax + b : 2 −1 ϕ2 (x)ϕ1 (x) dx = 0 ⇒ b = 0; si ha quindi ϕ2 (x) = αx ϕ3 = ax + bx + c : Z 2 −1 ϕ3 (x)ϕ1 (x) dx = 0 ∧ Z 2 −1 ϕ3 (x)ϕ2 (x) dx = 0 ⇒ a 1 ⇒ b = 0 ∧ c = − ; si ha quindi ϕ3 (x) = β x3 − . 3 3 Si ottengono gli N polinomi di Legendre di grado 0, 1, . . . , N −1 (si veda la Definizione 3.2 per maggiori dettagli su questi polinomi). Se la funzione f è periodica è meglio usare funzioni periodiche per approssimarla. Ad esempio, se f è periodica di periodo 2π è meglio approssimarla con seni e coseni. In questo caso un possibile spazio S è il seguente: S = span {1, sin kx, cos kx} = span {1, sin x, cos x, sin 2x, cos 2x, . . . , sin N x, cos N x} per k = 1, N (il primo elemento è 1 = sin 0 + cos 0 quindi k parte da 1), con Rπ dim S = 2N + 1. Questo spazio è ortogonale, infatti ∀k, ∀l valgono −π sin kx dx = 0, 5.4. REGRESSIONE Rπ 83 π cos kx dx = 0, −π sin kx cos lx dx = 0 e così via per tutti gli elementi; inRπ Rπ sin2 kx dx = π = oltre valgono anche k1k2 = −π 1 dx = 2π e ksin kxk2 = −π Rπ 2 2 6 j −π cos kx dx = kcos kxk . Da queste considerazioni segue che (ϕi , ϕj ) = 0 per i = e (ϕi , ϕi ) 6= 0, quindi vale l’indipendenza lineare: lo spazio in esame è effettivamente una base. Sotto queste ipotesi, si definisce la serie di Fourier troncata a N termini la funzione fN : R −π f (x) ≈ fN (x) = a0 + N X (ak cos kx + bk sin kx) (5.23) k=1 dove i coefficienti calcolati con la (5.21) sono 1 π a0 = f (x) dx 2π −π Z π 1 ak = f (x) cos kx dx π −π Z π 1 bk = f (x) sin kx dx. π −π Z (5.24) (5.25) (5.26) Vale il seguente Teorema 5.10. Ogni f ∈ L2 (−π, π) è sviluppabile in serie di Fourier, nel senso che Z π lim [f (x) − fN (x)]2 dx = 0 N →∞ −π ovvero che kf − fN k2 → 0 per N → ∞. Se inoltre f ∈ C 1 (−π, π) si ha fN (x) → f (x) puntualmente; la convergenza è uniforme se f (π) = f (−π). Consideriamo alcuni esempi significativi di approssimazione di funzioni periodiche con serie di Fourier. f (x) −2π −π 0 π 2π x Figura 5.5: Grafico della funzione dente di sega sull’intervallo [−2π, 2π]. Esempio 1 (dente di sega). Si consideri la funzione f (x) = x su [−π, π] e prolungata per periodicità (Figura 5.5); questa funzione presenta dei punti di discontinuità in 84 CAPITOLO 5. RISOLUZIONE DI SISTEMI LINEARI kπ, con k ∈ Z. I coefficienti di Fourier per questa funzione sono 1 π a0 = x dx = 0 2π −π Z π 1 ak = x cos kx dx = 0 π −π Z 1 bk = π ( Z π x sin kx dx = − k2 2 k −π se k pari se k dispari e la sua approssimazione in serie di Fourier è f (x) ≈ fN (x) = 2 sin N x sin x sin 2x sin 3x − + + ··· ± 1 2 3 N dove il segno dell’ultimo termine dipende dalla parità di N (positivo se N è dispari, negativo se N è pari. La funzione fN è continua e molto più facile da manipolare della f (x) da cui deriva. Si può anche scrivere sin x sin 2x sin 3x f (x) = x = 2 − + + ··· 1 2 3 ; l’uguaglianza in questo caso è da intendersi come convergenza puntuale in ogni punto tranne i punti di discontinuità (in cui f “salta”). In Figura 5.6 sono graficate le somme parziali della serie. Si nota che all’aumentare del numero di termini l’approssimazione produce delle oscillazioni indesiderate: si parla di overshoot in caso di sovrastima e undershoot per la sottostima della funzione; questa caratteristica è detta fenomeno di Gibbs. Esempio 2 (onda quadra). La funzione onda quadra è definita su [−π, π] e prolungata per periodicità (Figura 5.7): ( 1 0 f (x) = −π ≤ x ≤ 0 0<x≤π Questa funzione presenta dei punti di discontinuità in kπ, con k ∈ Z. I suoi coefficienti di Fourier sono 1 1 π f (x) dx = 2π −π 2 Z π Z 0 1 1 ak = f (x) cos kx dx = cos kx dx = 0 π −π −π −π Z a0 = 1 bk = π ( Z π f (x) sin kx dx = −π 0 2 − kπ se k pari se k dispari e la sua approssimazione in serie di Fourier è f (x) ≈ fN (x) = 1 2 − 2 π sin x sin 3x sin 5x + + + ··· 1 3 5 . 5.4. REGRESSIONE 85 Figura 5.6: Somme parziali della serie di Fourier per la funzione f (x) = x. f (x) −3π −2π −π 0 π 2π x Figura 5.7: Grafico della funzione onda quadra sull’intervallo [−3π, 2π]. 86 CAPITOLO 5. RISOLUZIONE DI SISTEMI LINEARI Figura 5.8: Approssimazione in serie di Fourier della Delta di Dirac con 41 termini. Esempio 3 (impulso o Delta di Dirac). Funzione f (x) = δ0 (x) definita su [−π, π] e prolungata per periodicità; questa funzione (più propriamente si tratta di una distribuzione) vale zero dappertutto e infinito nell’origine: rappresenta un rettangolo di base nulla e altezza infinita centrato nell’origine. È una funzione fortemente discontinua, che non appartiene neanche a L2 . Gode di un’importante proprietà: data una generica funzione g, l’integrale della Delta per la funzione su tutto R è pari al valore della funzione in zero: Z ∞ −∞ δ0 (x)g(x) dx = g(0). Grazie a questa proprietà possiamo calcolare i valori dei coefficienti di Fourier: 1 π 1 f (x) dx = 2π −π 2π Z 1 π 1 1 f (x) cos kx dx = cos 0 = ak = π −π π π Z 1 π 1 bk = f (x) sin kx dx = sin 0 = 0. π −π π Z a0 = L’approssimazione in serie di Fourier della Delta è δ0 (x) ≈ fN (x) = 1 π 1 + cos x + cos 2x + cos 3x + · · · 2 ed è mostrata in Figura 5.8. Esempio 4 (ghirlanda). f (x) = (x + π)(x − π) definita su [−π, π] e prolungata per periodicità (Figura 5.9); questa funzione è continua. I suoi coefficienti di Fourier 5.4. REGRESSIONE 87 f (x) −3π −2π −π π 2π 3π x 0 Figura 5.9: Grafico della funzione ghirlanda sull’intervallo [−3π, 3π]. sono: bk = 0 ∀k Z π Z 1 π 2 2 1 f (x) dx = (x − π 2 ) dx = − π 2 a0 = 2π −π π 0 3 Z Z 1 π 2 π 2 ak = f (x) cos kx dx = (x − π 2 ) cos kx dx = π −π π 0 4 = 2 cos kπ = k ( 4 k2 se k pari se k dispari − k42 e la sua approssimazione in serie di Fourier: 2 cos x cos 2x cos 3x f (x) ≈ fN (x) = − π 2 + 4 − 2 + − + ··· 3 1 22 32 f (x) −3π −2π −π 0 π 2π 3π x Figura 5.10: Grafico della funzione campana sull’intervallo [−3π, 3π]. Esempio 5 (campana). f (x) = (x − π)2 (x + π)2 definita su [−π, π] e prolungata per periodicità (Figura 5.10); questa funzione è simile alla precedente ma oltre ad essere continua ha anche le derivate prime continue: f ∈ C 1 (−π, π). I suoi coefficienti di Fourier: bk = 0 ∀k Z π Z 1 2 π 2 1 ak = f (x) cos kx dx = (x − π 2 )2 cos kx dx ≈ 3 . π −π π 0 k Gli esempi precedenti sono riassunti in Tabella 5.1. Si vede che più la funzione è regolare, più rapidamente la serie di Fourier converge; da questa proprietà, detta 88 CAPITOLO 5. RISOLUZIONE DI SISTEMI LINEARI Esempio Funzione Continuità 3 1-2 4 5 Delta di Dirac x e onda quadra ghirlanda campana non in L2 discontinue continua C1 Coefficienti di Fourier bk = 0 ak = 0 bk = 0 bk = 0 ak ≈ 1 bk ≈ k1 ak ≈ k12 ak ≈ k13 Tabella 5.1: Riepilogo degli esempi di approssimazione di funzioni periodiche con serie di Fourier. decadimento rapido, segue che bastano pochi termini della serie per approssimare bene la funzione. Infatti: data una funzione f ∈ C 1 , siano ak , bk i suoi coefficienti di Fourier e siano a0k , b0k i coefficienti di Fourier della sua derivata f 0 . Si ha: b0k = Z 1 π π f 0 (x) sin kx dx = −π 1 π f (x) sin kx |−π − π | {z } Z π =0 1 = −k π Z π −π f (x) cos kx dx = −π . f (x) cos kx dx = −kak Dalla disuguaglianza di Bessel (Proprietà 2) applicata a questa situazione N X 2 (b0k )2 ≤ f 0 k=1 ∞ 0 2 2 2 si deduce che ∞ e quindi a2k va a zero k=1 (bk ) converge ⇒ k=1 k ak converge, P∞ 2 2 2 più rapidamente di k . Analogamente si ha che la k=1 k bk converge. Il risultato generale è dato dal seguente P P Teorema 5.11. Se f ∈ C ∞ , allora ∀ r > 0 la serie P 2r 2 pure ∞ k=1 k bk converge. P∞ k=1 k 2r a2 k converge, e così Usando le formule di Eulero è possibile scrivere l’espressione della serie di Fourier in un’altro modo. Dalle relazioni e ikx = cos kx + i sin kx e −ikx = cos kx − i sin kx si ottiene e ikx + e −ikx 2 ikx e − e −ikx sin kx = 2 cos kx = e la (5.23) si può scrivere come f (x) ≈ fN (x) = N X k=−N ck e ikx (5.27) 5.4. REGRESSIONE 89 con ck = 1 2π Z π f (x)e −ikx dx. (5.28) −π I coefficienti ck si possono scrivere anche in funzione degli ak , bk : ak − ibk 2 ak + ibk = . 2 ck = c−k Gli sviluppi di Fourier facilitano i vari conti da eseguire su una funzione. Noti ak , bk i coefficienti a0k , b0k di f 0 sono dati (∀ k) da a0k = kbk b0k = −kak mentre i coefficienti a00k , b00k di f 00 sono (∀ k) a00k = −k 2 ak b00k = −k 2 bk . Un’applicazione degli sviluppi di Fourier è la soluzione di equazioni differenziali. In un’equazione del tipo y 00 (x) − 9y(x) = f (x) y(x) = c1 e 3x + c2 e −3x + yp (x) calcolare yp può essere complicato se f è complicata. Chiamando αk , βk i coefficienti di Fourier di f , si cerca yp (x) = ∞ X ak cos kx + k=0 Da yp00 (x) = − ∞ X P∞ k=0 k 2a k cos kx − (−k 2 − 9)ak cos kx + k=0 ∞ X ∞ X bk sin kx. k=1 P∞ k=1 k 2b k sin kx si ottiene (−k 2 − 9)bk sin kx = k=1 ∞ X k=0 αk cos kx + ∞ X βk sin kx k=1 da cui seguono i valori di αk , βk per ogni k: αk = −(k 2 + 9)ak βk = −(k 2 + 9)bk Nella pratica è comunque dispendioso e faticoso l’uso degli sviluppi di Fourier. Esistono però programmi “black-box” (FFT, acronimo di Fast Fourier Transform) che permettono di ottenere gli N coefficienti di Fourier a partire dai valori della funzione in 2N + 1 punti equispaziati e viceversa (Figura 5.11). Il costo dell’elaborazione con FFT è di O(N log N ) se 2N è una potenza di 2, quindi è piuttosto basso. 90 CAPITOLO 5. RISOLUZIONE DI SISTEMI LINEARI Output Input f (x1 ), f (x2 ), . . . , f (x2N +1 ) FFT a0 , a1 , . . . , aN b1 , b2 , . . . , bN FFT−1 a0 , a1 , . . . , aN b1 , b2 , . . . , bN f (x1 ), f (x2 ), . . . , f (x2N +1 ) Figura 5.11: Schema d’uso della FFT. I punti xi devono essere equispaziati. 5.5 Metodi iterativi avanzati Sono metodi di recente ideazione applicabili a sistemi lineari con matrice A simmetrica e definita positiva. Si vuole risolvere un sistema Ax = b con matrice A simmetrica e definita positiva: il problema è trovare un x∗ ∈ Rn : Ax∗ = b. (5.29) Sia F : Rn → R il funzionale 1 (Av, v) − (b, v) 2 F (v) := ∀ v ∈ Rn (5.30) si ha il seguente risultato Teorema 5.12. Se A è simmetrica e definita positiva, il problema (5.29) è equivalente al seguente problema di minimo: Trovare u ∈ Rn : F (u) = minn F (v) v∈R (5.31) cioè (5.31) ha soluzione unica u ∈ Rn e u ≡ x∗ . Dimostrazione. F è un funzionale quadratico derivabile. Si trova ∇F (v) = h ∂F ∂v1 ∂F ∂v2 ... ∂F ∂vn iT ≡ Av − b; La matrice Hessiana H(F ) = A è definita positiva, quindi ha autovalori positivi ⇒ il funzionale F è convesso (strettamente) ⇒ F ha un minimo unico. Sia u ∈ Rn il punto di minimo. Allora ∇F (u) = 0 ⇒ Au − b = 0 ⇒ u ≡ x∗ per l’unicità della soluzione di (5.29). 5.5.1 Metodi di discesa Si cerca la soluzione x∗ di (5.29) come punto di minimo di F (x)ncon oun metodo iterativo. Partendo da x(0) dato, si costruisce una successione x(k) : x(k) → x∗ (converge alla soluzione del sistema). Dato il vettore di partenza x(0) ∈ Rn (tipicamente x(0) = 0 o x(0) = 1), per ogni k ≥ 1 si pone x(k+1) = x(k) + αk p(k) (5.32) 5.5. METODI ITERATIVI AVANZATI 91 con i parametri αk ∈ R (scalare) e p(k) ∈ Rn (direzione di discesa) da scegliere in modo che F (x(k+1) ) < F (x(k) ). Supponiamo di aver scelto p(k) , cerchiamo αk tale che F (x(k) + αk p(k) ) < F (x(k) ). Sia g(α) := F (x(k) + αp(k) ) F (x(k+1) ) α∈R F (x(k) ), con g(αk ) = e g(0) = deve essere g(αk ) < g(0): si cerca α che minizzi g. Si trova che, essendo g una parabola convessa, ha un minimo nel suo vertice: ∀ k ≥ 0 si ha αk = αopt = b − Ax(k) , p(k) Ap(k) , p(k) r(k) , p(k) = Ap(k) , p(k) >0 (5.33) Per scegliere p(k) si studia l’errore nella norma A. Si trova che, se αk = αopt , l’espressione dell’errore è E(x(k+1) ) = (1 − γk )E(x(k) ). 5.5.2 Metodo del gradiente Per ogni valore di k, si prende come direzione di discesa il residuo: p(k) = r(k) = −∇F (x(k) ). (5.34) L’espressione dell’errore è E(x(k+1) ) = k(A) − 1 k(A) + 1 2 E(x(k) ) che dipende dal condizionamento della matrice. Se A è mal condizionata k(A) 1 e la convergenza di questo metodo è molto lenta. Il costo del metodo del gradiente è quello di un prodotto matrice vettore (ordine O(n2 )) ad ogni iterazione. 5.5.3 Metodo del gradiente coniugato Idea: se αk = αopt , allora ∀ k ≥ 1 si ha r(k) , p(k−1) = 0. Dato p(k−1) si cerca p(k) n o nel piano span r(k) , p(k−1) : p(k) = r(k) + βk p(k−1) (5.35) con βk da scegliere in modo che la riduzione dell’errore sia massima. Si trova che, se βk = − Ap(k−1) , r(k) Ap(k−1) , p(k−1) (5.36) l’espressione dell’errore è p E(x (k) k(A) − 1 )≤4 p k(A) + 1 !2 E(x(k−1) ). Il p numero di iterazioni necessarie per ridurre di ε l’errore iniziale è proporzionale a k(A), mentre nel metodo del gradiente è proporzionale a k(A). Si può dimostrare che il metodo del gradiente coniugato converge in un numero di iterazioni ≤ n, con n dimensione del sistema. Capitolo 6 Metodi avanzati per problemi di Cauchy Riprendiamo la risoluzione di problemi di Cauchy esaminata nel Capitolo 2: dato un problema ( y 0 (t) = f (t, y(t)) t ∈ [t0 , T ] (6.1) y(t0 ) = y0 si vuole approssimare la sua soluzione. Sono stati esaminati diversi metodi (EE, EI, CN, Heun), che nel caso migliore raggiungono un ordine di precisione pari a 2. I metodi trattati sono tutti metodi a un passo, che per costruire ogni valore ui ricorrono soltanto al valore precedente ui−1 . In questo capitolo saranno esaminate due soluzioni alternative al problema: i metodi multistep e i metodi di Runge-Kutta. 6.1 Metodi multistep Un metodo multistep (MS) utilizza i valori in p punti precedenti (un dipende da un−1 , un−2 , . . . , un−p ) per costruire uno schema di ordine p. Questi metodi cercano di limitare il numero di valutazioni della funzione, al costo di mantenere in memoria molti dati. L’espressione generale di un metodo multistep è la seguente: per n = p, p + 1, p + 2, . . . si ha un = p X j=1 αj un−j + h p X βj fn−j + hβ0 fn (6.2) j=1 dove fn−j = f (tn−j , un−j ). La prima parte della formula è una combinazione lineare dei punti in esame, mentre la seconda dei valori della funzione in questi punti. La terza parte, infine, determina il tipo di metodo: 6 0 si ha un metodo implicito, poiché β0 fn = β0 f (tn , un ) dipende dal • se β0 = valore stesso che si sta calcolando; • se β0 = 0 il metodo è invece esplicito. Per costruire dei metodi consistenti sono necessarie delle condizioni su α e β; in particolare, per poter utilizzare un metodo a p passi servono p condizioni iniziali 93 94 CAPITOLO 6. METODI AVANZATI PER PROBLEMI DI CAUCHY u0 = y0 , u1 , u2 , . . . , up−1 , che vanno calcolate con un metodo ad un passo. L’obiettivo finale è ottenere un metodo convergente: perché questo accada è necessario verificarne la consistenza e la stabilità (Teorema 2.1). 6.1.1 Consistenza Come nella Sezione 2.1, si procede calcolando l’errore di troncamento locale: ∀ n si ha P p y(tn ) − pj=1 αj y(tn−j ) X τn = − βj f (tn−j , y(tn−j )); h j=0 in generale τn 6= 0. L’errore di consistenza è dato da τ = max |τn | . n Un metodo è consistente se τ (h) → 0 per h → 0. Se τ = chq (con q > 0), allora MS è consistente di ordine q (si noti che in generale q 6= p). Come per il metodo di Heun (Sezione 2.6), usare gli sviluppi di Taylor per verificare la consistenza è troppo complicato: procediamo all’esame dei polinomi. ( y 0 (t) = 0 y(0) = 1 • per q = 0 lo schema è esatto su y(t) = 1, che è soluzione di ⇒ f (t, y(t)) = 0 e l’errore di troncamento locale è τn = 1− Pp j=1 αj ·1 h − p X βj · 0; j=0 τn = 0 ⇐⇒ vale p X αj = 1; (6.3) j=1 se questa condizione è verificata il metodo è consistente di ordine 0; ( • per q = 1 lo schema è esatto su y(t) = t, che è soluzione di y 0 (t) = 1 y(0) = 0 f (t, y(t)) = 1 e l’errore di troncamento locale è τn = tn − Pp j=1 αj tn−j h − p X βj · 1; j=0 sviluppando tn−j = tn − jh si ha τn = tn − Pp j=1 αj (tn h − jh) − p X βj = j=0 1 z }| { p X P tn − tn αj + h pj=1 jαj p p p X X X j=1 = − βj = jαj − βj ; h j=0 j=1 j=0 ⇒ 6.1. METODI MULTISTEP 95 τn = 0 ⇐⇒ vale p X jαj − j=1 p X βj = 0; (6.4) j=0 se questa condizione è verificata il metodo è consistente di ordine 1. Andando avanti con q = 2, 3, . . . si trovano sempre relazioni sui coefficienti analoghe a (6.3) e (6.4). Esempio (schema del punto medio). un = un−2 + 2hf (tn−1 , un−1 ) (6.5) per n = 2, 3, . . . . Questo schema si ottiene integrando l’equazione differenziale y 0 (t) = f (t, y(t)) su due intervalli, e approssimando con il metodo del punto medio (3.9): Z tn 0 Z tn y (t) dt = tn−2 f (t, y(t)) dt ≈ (tn − tn−2 )f (tn−1 , y(tn−1 )) ≈ 2hf (tn−1 , un−1 ). tn−2 Questo è un metodo MS con p = 2, coefficienti α1 = 0, α2 = 1 e β0 = 0, β1 = 2, β2 = 0. Si noti che i coefficienti verificano le condizioni (6.3) e (6.4) ⇒ il metodo consistente di ordine 1. Volendo verificare se è anche di ordine 2, procediamo come in precedenza. Si considera per q = 2 lo schema è esatto su y(t) = t2 , che è soluzione ( y 0 (t) = 2t di ⇒ f (t, y(t)) = 2t. L’errore di troncamento locale in questo caso è1 y(0) = 0 t t2n − t2n−2 (tn− n−2 )(tn + tn−2 ) − 2tn−1 = − 2tn−1 = 2h 2h = tn + (tn − 2h) − 2(tn − h) = 0 τn = | {z } tn−2 | {z } tn−1 ed il metodo è quindi di ordine 2. Ripendendo la procedura per q = 3 si vede che τn 6= 0 ⇒ il metodo è di ordine 2. Esempio (metodi di Adams). Sono particolari metodi MS (a passo h uniforme) in cui f (t, y(t)) è approssimata con il suo polinomio interpolatore relativo ai p punti precedenti (più eventualmente il punto stesso). Per n = p, p + 1, p + 2, . . . si ha un = un−1 + h p X bj fn−j + hb0 fn (6.6) j=1 a cui vanno aggiunte le p condizioni iniziali u0 , u1 , . . . , up−1 . Per questo metodo α1 = 1 e α2 = α3 = · · · = 0: è verificata la condizione (6.3) e quindi il metodo ha almeno ordine 0. A seconda del valore di b0 distinguiamo due famiglie di metodi di Adams: 1 Se si parte dalla formula generale (6.2), allora risulta τn = si ottiene alla fine τn = 0. 2 t2 n −tn−2 h − 4tn−1 ; in entrambi i casi 96 CAPITOLO 6. METODI AVANZATI PER PROBLEMI DI CAUCHY • per b0 6= 0 si ottengono dei metodi impliciti, detti metodi di Adams-Moulton (AM); • per b0 = 0, invece, i metodi sono espliciti, e sono chiamati metodi di AdamsBashforth (AB). Per i metodi espliciti si usa f ≈ Πp−1 (f ) relativo ai punti tn−1 , tn−2 , . . . , tn−p , mentre per quelli impliciti si ha f ≈ Πp (f ) relativo ai punti tn , tn−1 , tn−2 , . . . , tn−p . In entrambi i casi si procede in modo analogo alla costruzione dei metodi a 1 passo: Z tn 0 Z tn f (t, y(t)) dt ≈ y (t) dt = tn−1 Z tn tn−1 Π(f ) = · · · . tn−1 Per un metodo esplicito, ad esempio, si ha Π(f ) = Πp−1 (t) = p X Li (t)f (tn−i , un−i ), i=1 da cui si ottiene lo schema un = un−1 + p X Z tn f (tn−i , un−i ) Li (t)dt tn−1 i=1 . Confrontando con l’espressione generale (6.6)si vede che i coefficienti bi sono quindi dati da Z tn hbi = Li (t)dt tn−1 . Esaminiamo la costruzione di un metodo AB a due passi (p = 2): per n = 2, 3, . . . si ha un = un−1 + hb1 fn−1 + hb2 fn−2 . (6.7) Questo metodo è ottenuto approssimando f (t, y(t)) ≈ Π1 (t) tale che Π1 (tn−1 ) = f (tn−1 , y(tn−1 )) ≈ f (tn−1 , un−1 ) Π1 (tn−2 ) = f (tn−2 , y(tn−2 )) ≈ f (tn−2 , un−2 ). L’espressione del polinomio Π1 (t) è la seguente: t − tn−1 t − tn−2 fn−1 + fn−2 = tn−1 − tn−2 tn−2 − tn−1 t − tn−2 t − tn−1 fn−1 − fn−2 = L1 (t)fn−1 + L2 (t)fn−2 ; = h h Π1 (t) = Calcolando i valori dei coefficienti b1 , b2 b1 = Z tn t − tn−2 tn−1 b2 = h Z tn t − tn−1 tn−1 h = 3 2 =− 1 2 6.1. METODI MULTISTEP 97 L1 (t) 2 1 0 tn−2 tn−1 tn t Figura 6.1: Andamento di L1 (t). L2 (t) 1 tn 0 tn−2 tn−1 Figura 6.2: Andamento di L2 (t). t 98 CAPITOLO 6. METODI AVANZATI PER PROBLEMI DI CAUCHY si ottiene l’espressione del metodo un = un−1 + h 3 1 fn−1 − fn−2 . 2 2 I metodi a un passo esaminati nel Capitolo 2 possono essere visti come casi particolari dei metodi di Adams. Per p = 1 l’espressione di un metodo esplicito di AB è un = un−1 + hb1 fn−1 ; si approssima f ≈ Π0 (t) = f (tn−1 , un−1 ): Z tn Π0 (t) dt = hfn−1 ⇒ b1 = 1. tn−1 L’espressione del metodo è quindi un = un−1 + hfn−1 che è esattamente il metodo di Eulero esplicito definito nella (2.3). L’analogo metodo implicitodi AM è un = un−1 + hb1 fn−1 + hb0 fn ; in questo caso f ≈ Π(f ) relativo ai punti tn−1 e tn . L’espressione del polinomio Π1 (t) è la seguente: t − tn−1 t − tn fn + fn−1 = tn − tn tn−1 − tn t − tn−1 t − tn = fn − fn−1 = L1 (t)fn + L2 (t)fn−1 ; h h Π1 (t) = e si giunge al metodo di Crank-Nicholson definito nella (2.7). 6.1.2 Stabilità Analogamente a quanto fatto per i metodi a un passo nella Sezione 2.2, distinguiamo due tipi di stabilità: • stabilità minima o zero-stabilità, su un intervallo limitato (T < +∞); • a-stabilità, su un intervallo illimitato (T → +∞). Per la zero-stabilità si costruisce, per n definire o n ogni o h, una successione di valori (h) (h) un del problema reale e una successione zn del problema perturbato. Gli z0 , z1 , . . . , zn sono caratterizzati perturbazioni δ0 , δ1 , . . . , δn , con |δk | < ε per ogni n o n da o (h) (h) k. Date le successioni un , zn lo schema si dice zero-stabile se ∃ h0 > 0, ∃ c > 0 : ∀ h ∈ ]0, h0 ] vale ∀ n (h) zn − u(h) n < cε. Per definire la stabilità asintotica consideriamo il problema modello ( y 0 (t) = λy(t) y(0) = 1 t ∈ ]0, +∞[ (6.8) 6.1. METODI MULTISTEP 99 che ha soluzione esatta y(t) = e λt graficata in Figura 2.7; esaminiamo il caso Re λ < 0 se λ ∈ C, o λ < 0 se λ ∈ R. L’espressione di un metodo MS per questo problema è p X un = αj un−j + hλ j=1 p X βj un−j . (6.9) j=0 Per valutarne la stabilità si cercano le soluzioni di (6.9), ponendo (∀ n) un = rn ; perché il sistema sia stabile deve essere lim |un | = 0 n→∞ e quindi il modulo di r deve essere minore di 1. Sostituendo in (6.9) si ottiene il polinomio rn − p X αj rn−j − hλ j=1 p X βj rn−j = 0 j=0 . Raccogliendo rn−p si ottiene p n−p r r − p X αj rp−j − hλ j=1 p X βj rp−j = 0. j=0 Si trova un polinomio di grado p in r Π(r) := ρ(r) − (hλ)σ(r) = 0 (6.10) detto polinomio caratteristico del metodo multistep. Questo polinomio è diviso in due parti, la prima indipendente e la seconda funzione di hλ: ρ(r) = rp − p X αj rp−j (6.11) j=1 σ(r) = p X βj rp−j . (6.12) j=0 Il polinomio ρ(r) ha p radici rj in C, e, indipendentemente da p, avrà sempre una P radice r0 = 1 detta radice fondamentale (1 − pj=1 αj = 0). Questo polinomio deve verificare alcune condizioni perché il metodo sia a-stabile. Definizione 6.1 (condizione delle radici). Il metodo (6.9) soddisfa la condizione delle radici se tutte le radici di ρ(r) sono contenute nel cerchio centrato nell’origine e di raggio unitario. Inoltre, se una radice cade sul bordo del cerchio deve essere necessariamente una radice semplice. Formalmente, il polinomio ρ(r) ha radici r0 = 1, r1 , r2 , . . . , rp−1 tali che |rj | ≤ 1; se |rj | = 1 allora la radice è semplice (ρ0 (rj ) 6= 0). 100 CAPITOLO 6. METODI AVANZATI PER PROBLEMI DI CAUCHY Definizione 6.2 (condizione forte delle radici). La condizione forte delle radici è verificata se vale la Definizione 6.1 e inoltre l’unica radice sul bordo è quella di consistenza r0 ; in altre parole, tutte le radici tranne quella fondamentale devono essere interne al cerchio: |rj | < 1 per j = 1, 2, . . . , p − 1, con r0 = 1. Definizione 6.3 (condizione assoluta delle radici). Il metodo (6.9) soddisfa la condizione assoluta delle radici se ∃ h0 > 0 tale che, ∀ h ≤ h0 tutte le radici di Π(r) sono in modulo < 1. Teorema 6.1. Se un metodo multistep consistente verifica la condizione delle radici (Definizione 6.1), allora è zero-stabile (e quindi convergente). Abbiamo visto che i metodi a un passo esaminati nel Capitolo 2 sono casi particolari di MS. Per questi metodi il polinomio caratteristico è dato da ρ(r) = r − 1 e quindi la condizione delle radici è sempre soddisfatta. Il Teorema 6.1 ci garantisce quindi che se il metodo è consistente sarà sempre zero-stabile. Per i metodi di Adams si ha ρ(r) = rp − rp−1 ⇒ r0 = 1, r1 = 0 con molteplicità p − 1. Per questi metodo è verificata la condizione forte delle radici, quindi sono zero-stabili. Per il metodo del punto medio (6.5), il polinomio caratteristico è ρ(r) = r2 − 1 ⇒ r0 = 1, r1 = −1: la condizione delle radici è verificata ed il metodo è zero-stabile. La a-stabilità necessita invece della condizione assoluta delle radici. 6.2 Metodi di Runge-Kutta Sono metodi a un passo, che devono mantere in memoria solo il valore precedente, ma per contro fanno più valutazioni della funzione. Si approssima l’integrale della funzione f con delle formule di quadratura di ordine elevato per ottenere un ordine di convergenza alto. L’espressione generale di questi metodi è un+1 = un + h s X bi Ki (6.13) i=1 Ki = f tn + ci h, un + h s X aij Kj (6.14) j=1 con s numero degli stadi (equivale al numero di nodi della formula di quadratura) e Ki che esprime le valutazioni della funzione da approssimare. Un metodo di RungeKutta (RK) è completamente caratterizzato dai suoi coefficienti bi , ci , aij , che sono riassunti nella matrice di Butcher: c1 a11 a12 c2 a21 a22 .. .. .. . . . cs as1 as2 b1 b2 · · · a1s · · · a2s . .. . .. · · · ass · · · bs L’idea alla base di questi metodi è di usare una formula di quadratura di ordine Rt elevato per calcolare tnn+1 f (t, y(t)) dt: si ottiene Z tn+1 y(tn+1 ) = y(tn ) + tn f (t, y(t)) dt ≈ y(tn ) + formula. 6.2. METODI DI RUNGE-KUTTA 101 Ad esempio, usando la formula dei trapezi (2.6), l’integrale diventa Z tn+1 f (t, y(t)) dt ≈ tn h [f (tn , y(tn )) + f (tn+1 , y(tn+1 ))] 2 e si ottiene il seguente metodo: un+1 = un + h [f (tn , un ) + f (tn+1 , un+1 )] . 2 Per questa formula s = 2 (due nodi). I nodi possono essere scritti anche come tn = tn + c1 h e tn+1 = tn + c2 h: i coefficienti c1 = 0 e c2 = 1 dicono dove si trovano i nodi lungo l’asse t (in frazioni di h). Si nota che il metodo trovato è in realtà il metodo di Heun (2.32). Approssimando con il metodo di Eulero esplicito (2.3) un+1 = un + hf (tn , un ), si ottengono K1 = f (tn , un ) = f (tn + c1 h, un ) K2 = f (tn+1 , un+1 ) = f (tn + c2 h, un+1 ) = f (tn + c2 h, un + hK1 ) che inseriti nella formula danno il metodo di Heun in forma RK : un+1 = un + h(b1 K1 + b2 K2 ) (6.15) dove K1 , K2 hanno i valori precedenti e b1 = b2 = 12 . Si può costruire un metodo migliore usando una formula di quadratura di grado più elevato; scegliamo di utilizzare Cavalieri-Simpson (3.11): Z tn+1 f (t, y(t)) dt ≈ tn i hh f (tn , y(tn )) + 4f (tn+1/2 , y(tn+1/2 )) + f (tn+1 , y(tn+1 )) 6 dove tn+1/2 è il punto di mezzo dell’intervallo di integrazione. Il metodo a un passo che si ottiene è un+1 = un + h 1 2 1 f (tn , un ) + f (tn+1/2 , un+1/2 ) + f (tn+1 , un+1 ) ; 6 3 6 questo metodo ha tre nodi (quindi s = 3). I valori di un+1/2 e un+1 (argomenti di f )possono essere calcolati, ad esempio, con Eulero esplicito: h f (tn , un ) 2 ( un + hf (tn , un ) (un passo intero) = h un+1/2 + 2 f (tn+1/2 , un+1/2 ) mezzo passo da tn+1/2 un+1/2 = un + un+1 Per il calcolo di un+1 sono possibili due approcci diversi; scegliendo la seconda strada, si trova K1 un+1 h h h z }| { = un + f (tn , un ) + f (tn+1/2 , un + f (tn , un )) 2 | {z } 2 | {z 2 } K1 K2 e il metodo di RK che si ottiene è un+1 = un + h(b1 K1 + b2 K2 + b3 K3 ) 102 CAPITOLO 6. METODI AVANZATI PER PROBLEMI DI CAUCHY con K1 = f (tn , un ) h h K2 = f (tn + , un + K1 ) 2 2 K3 = f (tn + h, un + hK1 ) e i coefficienti b1 = b3 = 16 , b2 = 23 . L’espressione generale dei Ki secondo la (6.14) è K1 = f tn + c1 h, un + h 3 X a1j Kj con c1 = 0 e a11 = a12 = a13 = 0 j=1 K2 = f tn + c2 h, un + h 3 X a2j Kj con c2 = j=1 K3 = f tn + c3 h, un + h 3 X 1 1 e a21 = , a22 = a23 = 0 2 2 con c3 = 1 e a31 = 1, a32 = a33 = 0. a3j Kj j=1 Tutti i parametri di questo metodo possono Butcher: 0 0 0 1 1 2 2 0 1 1 0 1 6 2 3 essere riassunti nella sua matrice di 0 0 0 1 6 I metodi di Runge-Kutta impliciti sono usati raramente, in quanto molto costosi. Un metodo RK è esplicito se aij = 0 per j ≥ i. 6.2.1 Consistenza minima Si procede in modo analogo ai metodi multistep trattati nella Sezione 6.1.1. ( y 0 (t) = 0 ⇒ f (t, y(t)) = 0, quindi in un metodo RK y(0) = 1 i Ki ≡ 0 ∀ i e l’errore di troncamento locale è • y(t) = 1 è soluzione di τn = s 1−1 X bi Ki = 0 − h i=1 quindi il metodo è consistente di ordine 0; ( y 0 (t) = 1 y(0) = 0 l’errore di troncamento locale è • y(t) = t è soluzione di ⇒ f (t, y(t)) = 1, quindi Ki ≡ 1 ∀ i e s s X X tn+1 −t n τn = − bi = 1 − bi . h i=1 i=1 Ne consegue che τn = 0 ⇐⇒ bi = 1. Questa condizione è sempre vera, P poiché hbi = ωi pesi della formula di quadratura, ed è noto che ωi = h per definizione. Si conclude che i metodi RK sono consistenti di ordine 1. P 6.3. APPROSSIMAZIONE DI SISTEMI DI EQUAZIONI DIFFERENZIALI 103 ordine s 1 1 2 2 3 3 4 4 5 6 6 7 7 9 8 11 Tabella 6.1: Numero di stadi s necessario per ottenere un dato ordine di consistenza per un metodo RK esplicito. Per ordini superiori, si vorrebbe ottenere con s nodi un ordine di almeno s, ma non è sempre così. Teorema 6.2. Un metodo di Runge-Kutta esplicito a s stadi non può avere ordine > s. Inoltre, se s ≥ 5 non può avere ordine s. In Tabella 6.1 sono elencati il numero di stadi necessari per ottenere ordine di consistenza fino a 8. 6.2.2 Stabilità I metodi RK espliciti non sono mai a-stabili, poiché non esistono metodi espliciti a-stabili, ma solo condizionatamente a-stabili. 6.3 Approssimazione di sistemi di equazioni differenziali Si esamina il sistema di equazioni differenziali ( Y0 (t) = F(t, Y(t)) Y(0) (t0 ) = Y(0) t ∈ ]t0 , T [ (6.16) con i vettori iT h Y(t) = y1 (t) y2 (t) · · · yN (t) f1 (t, y1 (t), y2 (t), . . . , yN (t)) f 2 (t, y1 (t), y2 (t), . . . , yN (t)) . F(t, Y(t)) = .. . fN (t, y1 (t), y2 (t), . . . , yN (t)) Per risolvere questo sistema si possono applicare i vari metodi già visti: • Eulero esplicito: Y(n+1) = Y(n) + hF(tn , Y(n) ) con n = 0, 1, 2, . . . ; in forma di sistema (n+1) (n) (n) (n) (n) = u1 + hf1 (tn , u1 , u2 , . . . , uN ) u1 u(n+1) = u(n) + hf2 (tn , u(n) , u(n) , . . . , u(n) ) 2 2 1 2 N . .. (n+1) uN (n) (n) (n) (n) = uN + hfN (tn , u1 , u2 , . . . , uN ) 104 CAPITOLO 6. METODI AVANZATI PER PROBLEMI DI CAUCHY • Eulero implicito: Y(n+1) = Y(n) + hF(tn+1 , Y(n+1) ) con n = 0, 1, 2, . . . ; in forma di sistema (n+1) (n) (n+1) (n+1) (n+1) u1 = u1 + hf1 (tn+1 , u1 , u2 , . . . , uN ) u(n+1) = u(n) + hf2 (tn+1 , u(n+1) , u(n+1) , . . . , u(n+1) ) 2 2 1 2 N .. . (n) (n+1) (n+1) (n+1) (n+1) uN = uN + hfN (tn+1 , u1 , u2 , . . . , uN ) Questo è un sistema non lineare, che può essere risolto in modo approssimato, ad esempio, con il metodo di Newton (Sezione 4.3). Questa operazione piuttosto costosa (va ripetuta ad ogni passo), quindi si preferiscono i metodi espliciti quanto possibile. Per problemi di Cauchy in un’equazione sola, come quelli trattati nel Capitolo 2, i diversi metodi presentano le seguenti caratteristiche: • metodi espliciti: mai a-stabili, accuratezza “bassa”, costi bassi; • metodi impliciti: alcuni a-stabili, accuratezza “buona”, costi elevati. La mancanza di a-stabilità comporta la necessità di usare un passo di discretizzazione h piccolo (altrimenti lo schema non converge); d’altra parte, con entrambi i metodi h deve comunque essere abbastanza piccolo per avere una buona accuratezza. Per questo motivo, la mancanza di a-stabilità non è un problema particolarmente critico per una singola equazione differenziale. Nel caso di sistemi, invece, può presentare dei problemi. Consideriamo il problema modello analogo del (2.22): ( Y0 (t) = AY(t) Y(0) = 1 (6.17) con Re λi < 0, λi autovalori della matrice A. Per semplificare la trattazione consideriamo il seguente Esempio. Consideriamo un’istanza del problema modello 0 y1 (t) = −2y1 (t) + y2 (t) 0 y2 (t) = −100y2 (t) y (0) = y (0) = 1 1 2 con matrice " (6.18) # −2 1 A= . 0 −100 Gli autovalori della matrice sono λ1 = −2, λ2 = −100; poiché Re λi < 0 siamo nel caso del problema modello. Calcoliamo le soluzioni del sistema: y2 (t) è banale y2 (t) = e −100t e sostituita nella prima y10 (t) = −2y1 (t) + y2 (t) = −2y1 (t) + e −100t ; 6.4. RIEPILOGO 105 si procede risolvendo l’equazione omogenea y10 (t) + 2y1 (t) = 0, con soluzione y1om (t) = ce −2t e si cerca una soluzione particolare di y10 (t) + 2y1 (t) = e −100t del tipo y1p (t) = αe −100t . Poichè (y1p )0 (t) = −100αe −100t , sostituendo y1p nella equazione si ha + 2α = −100α e −100t e −100t e −100t 1 si trova il coefficiente α = − 98 . La soluzione è quindi y1 (t) = y1om (t) + y1p (t) = ce −2t − 1 −100t e ; 98 1 per trovare il valore di c si usa la condizione iniziale y1 (0) = 1 ⇒ c − 98 =1⇒c= Concludendo, le due soluzioni sono 99 −2t 1 e − e −100t ≈ e −2t 98 98 y2 (t) = e −100t y1 (t) = 99 98 . (6.19) (6.20) Per poter applicare un metodo esplicito deve essere h < |λ21 | e h < |λ22 | : l’autovalore 1 maggiore è il secondo, quindi h < 50 . Come visibile in Figura 6.3, le due soluzioni y(t) 1 e −2t e −100t 0 t Figura 6.3: Grafico delle soluzioni del sistema (6.18). sono distanziate da diversi ordini di grandezza: e −100t è molto ripida e va a zero quasi subito. Siamo costretti ad usare un passo di discretizzazione molto piccolo, quando in realtà, a parte i primi intervalli, la y2 è quasi zero e non contribuisce alla soluzione; d’altra parte, la y1 è molto meno ripida e può essere approssimata con un passo molto minore. Si tratta di un problema “stiff”, in cui le due soluzioni sono molto diverse e max |λi | min |λi | ; i i problemi di questo tipo si hanno quando la matrice A è mal condizionata (k(A) 1). In questi casi si può usare un metodo implicito dove serve (dove le due soluzioni sono molto diverse) e passare poi ad un metodo esplicito non appena possibile. 106 CAPITOLO 6. METODI AVANZATI PER PROBLEMI DI CAUCHY Metodo Tipo Consistenza EE EI CN Heun AB(p) AM(p) PM E I I E E I E τ τ τ τ τ τ τ ≈ ch ≈ ch ≈ ch2 ≈ ch2 ≈ chp ≈ chp+1 ≈ ch2 Zero-stabilità A-stabilità Convergenza sì sì sì sì sì sì sì no sì sì no no alcuni no ch ch ch2 ch2 chp chp+1 ch2 Tabella 6.2: Riepilogo dei metodi di approssimazione per problemi di Cauchy. La convergenza è intesa in norma infinita. 6.4 Riepilogo In Tabella 6.2 sono riassunti i diversi metodi per risolvere problemi di Cauchy. La convergenza dei diversi metodi è riportata in norma infinito. Per le altre norme si possono trovare relazioni di equivalenza. Ad esempio, per Eulero esplicito con intervalli uniformi (N h = 1), si ha ku − uh k∞ ≤ ch = c N1 . Ricordando le definizioni delle diverse norme, si può scrivere una relazione di equivalenza tra la norma 1 e la norma infinito: kvk1 ≈ N kvk∞ . Se ku − uh k∞ ≈ N1 , allora ku − uh k1 ≈ N N1 = 1. √ Per la norma 2 c’è un’equivalenza analoga: kvk ≈ N kvk∞ . Come prima, si trova 2 √ √ 1 N che ku − uh k2 ≈ N N = N . In generale, se un metodo è tale che ku − uh k∞ ≈ chα = cN −α , allora ku − uh k1 ≈ N · N 1 2 −α ku − uh k2 ≈ N · N =N −α 1−h =N =h 1 −α 2 α−1 =h 0 h = O(1) EE = h0 = O(1) EE h1 = O(h) CN α− 12 = 1 2 h h 1 2 h 32 EE EE CN Appendice A Norme di vettore e di matrice A.1 Norme di vettore Dato un vettore x ∈ Rn una sua norma kxk è una sua qualche misura. Formalmente, si definisce norma un’applicazione kxk : Rn → R+ ∪ {0} che soddisfa le seguenti proprietà: • kxk ≥ 0 con kxk = 0 ⇐⇒ x = 0; • kαxk = |α| kxk, con α ∈ C; • kx + yk ≤ kxk + kyk (disuguaglianza triangolare). Se alla norma è possibile associare un prodotto scalare, vale la disuguaglianza di Cauchy-Schwarz, che è molto utile: |(x, y)| ≤ kxk · kyk . Le tre norme principali sono: kxk∞ = max |xi | i=1,n n X kxk1 = (norma infinito) |xi | (A.1) (norma 1) (A.2) (norma euclidea) (A.3) i=1 kxk2 = n X !1 2 2 |xi | i=1 Di queste tre, l’unica a cui si puo’ associare un prodotto scalare è la norma euclidea, e si ha: (x, y) = n X xi yi =⇒ kxk22 = (x, x). i=1 Due norme kxk∗ e kxk∗∗ si dicono equivalenti se ∃ c1 , c2 > 0 : c1 kxk∗∗ ≤ kxk∗ ≤ c2 kxk∗∗ . 107 108 APPENDICE A. NORME DI VETTORE E DI MATRICE In dimensione finita tutte le norme sono equivalenti; ad esempio: n kxk∞ 1 kxk∞ ≤ kxk1 ≤ |{z} |{z} c2 c1 1 1 kxk∞ ≤ kxk2 ≤ |{z} n 2 kxk∞ |{z} c1 c2 La costante c2 dipende dalla dimensione; se si passa a dimensione infinita (n → ∞) queste relazioni non valgono più. A.2 Norme di matrice Data una matrice quadrata A ∈ Rn×n , si definisce la sua norma, in modo analogo al caso vettoriale, come l’applicazione kAk : Rn×n → R+ ∪ {0} che soddisfa le seguenti proprietà: • kAk > 0 con kAk = 0 ⇐⇒ A = 0; • kαAk = |α| kAk, con α ∈ C; • kA + Bk ≤ kAk + kBk (disuguaglianza triangolare). C’è una quarta proprietà sul prodotto che non è sempre verificata: kABk ≤ kAk kBk ; se una norma verifica questa proprietà è detta sub-moltiplicativa. Esaminiamo un caso in cui non vale. Consideriamo come norma di matrice la seguente kM k = max |mij | i,j e applichiamola alle matrici " 1 1 A=B= 1 1 # Si ha: kAk = kBk = 1 " 1 1 AB = 1 1 #" # " 1 1 2 2 = 1 1 2 2 # kABk = 2 > 1 ⇒ non è sub-moltiplicativa. A.2. NORME DI MATRICE A.2.1 109 Norme naturali Sono norme di matrice definite a partire da norme di vettore (per questo dette anche norme compatibili): kAxk |||A||| := maxn x∈R kxk e verifica le seguenti proprietà (oltre alle tre delle norme di matrici standard): • kAxk ≤ |||A||| kxk (per definizione |||A||| ≥ kAxk kxk ): • |||AB||| ≤ |||A||| |||B|||; la dimostrazione semplice: y z}|{ |||AB||| = maxn x∈R kA Bx k |||A||| kyk |||A||| |||B||| kxk ≤ maxn ≤ maxn = |||A||| |||B||| . x∈R x∈R kxk kxk kxk Si definisce il raggio spettrale della matrice A come ρ(A) = max |λ(A)| = λmax λ (A.4) e vale il seguente Teorema A.1. Per ogni norma naturale di matrice vale ρ(A) ≤ |||A|||. Dimostrazione. Si cerca la coppia (λ, v), λ ∈ C, v 6= 0 tale che Av = λv. Si ha |λ| kvk = kλvk = |||Av||| ≤ |||A||| kvk ; poiché la norma usata è naturale. Ne segue |λ| ≤ |||A||| ∀λ. Una matrice A si dice convergente se lim Ak = 0 (A.5) k→∞ con Ak = A · · · · · A}. Si dimostra che A è convergente ⇐⇒ ρ(A) < 1. | · A {z k volte Le principali norme naturali sono derivate dalle rispettive norme vettoriali: kxk∞ → |||A|||∞ = max i=1,n kxk1 → |||A|||1 = max j=1,n kxk2 → |||A|||2 = q n X j=1 n X |aij | (A.6) |aij | (A.7) i=1 ρ (AT A); (A.8) la norma 2 di matrice è detta anche norma spettrale. Se vale A = AT (matrice A simmetrica) la norma infinita equivale alla norma 1: |||A|||∞ = |||A|||1 110 APPENDICE A. NORME DI VETTORE E DI MATRICE mentre la norma spettrale equivale al raggio spettrale della matrice: |||A|||2 = q ρ (AT A) = q ρ (A2 ) = q [ρ(A)]2 = ρ(A) = max |λ(A)| = λmax . λ Anche calcolo delle norme della matrice inversa è semplificato; come prima, infatti, il−1 −1 vale A ∞ = A 1 e r q q −1 A = ρ (A−T A−1 ) = ρ (A−2 ) = max |λ(A−2 )| = 2 λ r = 1 1 . = max |λ(A−1 )|2 = λ minλ |λ(A)| λmin Appendice B GNU Free Documentation License Version 1.2, November 2002 Copyright ©2000,2001,2002 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The purpose of this License is to make a manual, textbook, or other functional and useful document “free” in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others. This License is a kind of “copyleft”, which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference. B.1 Applicability and definitions This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited 111 112 APPENDICE B. GNU FREE DOCUMENTATION LICENSE in duration, to use that work under the conditions stated herein. The Document, below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as you. You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law. A Modified Version of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language. A Secondary Section is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document’s overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. The Invariant Sections are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none. The Cover Texts are certain short passages of text that are listed, as FrontCover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words. A Transparent copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not “Transparent” is called Opaque. Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LATEX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only. The Title Page means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as B.2. VERBATIM COPYING 113 such, “Title Page” means the text near the most prominent appearance of the work’s title, preceding the beginning of the body of the text. A section Entitled XYZ means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as Acknowledgements, Dedications, Endorsements, or History.) To Preserve the Title of such a section when you modify the Document means that it remains a section “Entitled XYZ” according to this definition. The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License. B.2 Verbatim copying You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section B.3. You may also lend copies, under the same conditions stated above, and you may publicly display copies. B.3 Copying in quantity If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document’s license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard 114 APPENDICE B. GNU FREE DOCUMENTATION LICENSE network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document. B.4 Modifications You may copy and distribute a Modified Version of the Document under the conditions of sections B.2 and B.3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version: A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement. C. State on the Title page the name of the publisher of the Modified Version, as the publisher. D. Preserve all the copyright notices of the Document. E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below. G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document’s license notice. H. Include an unaltered copy of this License. I. Preserve the section Entitled “History”, Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled “History” in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. B.5. COMBINING DOCUMENTS 115 J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the “History” section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. K. For any section Entitled “Acknowledgements” or “Dedications”, Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. M. Delete any section Entitled “Endorsements”. Such a section may not be included in the Modified Version. N. Do not retitle any existing section to be Entitled “Endorsements” or to conflict in title with any Invariant Section. O. Preserve any Warranty Disclaimers. If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version’s license notice. These titles must be distinct from any other section titles. You may add a section Entitled “Endorsements”, provided it contains nothing but endorsements of your Modified Version by various parties–for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version. B.5 Combining documents You may combine the Document with other documents released under this License, under the terms defined in section B.4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original 116 APPENDICE B. GNU FREE DOCUMENTATION LICENSE documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers. The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work. In the combination, you must combine any sections Entitled “History” in the various original documents, forming one section Entitled “History”; likewise combine any sections Entitled “Acknowledgements”, and any sections Entitled “Dedications”. You must delete all sections Entitled “Endorsements”. B.6 Collections of documents You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document. B.7 Aggregation with indipendent works A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an “aggregate” if the copyright resulting from the compilation is not used to limit the legal rights of the compilation’s users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document. If the Cover Text requirement of section B.3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document’s Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate. B.8 Translation Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section B.4. Replacing Invariant Sections with B.9. TERMINATION 117 translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail. If a section in the Document is Entitled “Acknowledgements”, “Dedications”, or “History”, the requirement (section B.4) to Preserve its Title (section B.1) will typically require changing the actual title. B.9 Termination You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. B.10 Future revisions of this License The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/. Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License “or any later version” applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. Addendum: How to use this License for your documents To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page: Copyright ©YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled “GNU Free Documentation License”. 118 APPENDICE B. GNU FREE DOCUMENTATION LICENSE If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the “with . . . Texts.” line with this: with the Invariant Sections being LIST THEIR TITLES, with the FrontCover Texts being LIST, and with the Back-Cover Texts being LIST. If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation. If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.