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.