Sei sulla pagina 1di 222

Calcolo Numerico

Anno accademico 2003/2004


Docente del corso Dott.ssa A. Sestini

Giacomo Sacchetti
Stefano Ceri
Paolo Filippelli


  
       !"  #
$ $% 
   &$ ' (  !" 
#
$) $* ,+ + * *    & '(  &-  #
15 gennaio 2005


   ! "
$#%!"&'()"* +#%,-/.
-( 0("--
,"1 22 '3 2 ('("4)56#74
2 
89"'4:;4
&)
2<4 9"'
9'4" "/("=2;&) ("/>?@.(""A(09
"'* 'B
"'2"C#ED"2 'GF$HIF
@'5-")J("
2 '98(- 2 "4/8 ";.""!&K(";.9'4* '6L7K* 0
 "5M0'J* '5!"(0
'
2N8(" ' PO Q=R0STU0VW
XT Q
Y
#7K= 0  ";.('=Z J"["\2
8(" 0' ^]_*`0aT=`bTNcVd1Y S*XaT
#e'4;'(<f( g*Z J("["\2hH

Il presente elaborato stato scritto per poter sostenere lesame di Calcolo Numerico,
del corso di laurea in Informatica a Firenze. Esso si basa sugli appunti presi durante le lezioni dellanno accademico 2002/2003.

In copertina: Leonardo Da Vinci ,Uomo Vitruviano, 1490ca.


Il testo stato composto dagli autori mediante LATEX 2 .

Indice

1 Teoria dell errore


1.1 Rappresentazione dei numeri sul calcolatore . . .
1.2 Precisione di macchina . . . . . . . . . . . . . . .
1.3 Operazioni di macchina . . . . . . . . . . . . . .
1.4 Propagazione degli errori . . . . . . . . . . . . .
1.4.1 Errori nelle operazioni aritmetiche di base

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

15
15
17
18
20
21

2 Norme
25
2.1 Norma vettoriale . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.2 Norme matriciali . . . . . . . . . . . . . . . . . . . . . . . . . 26
3 Metodi per la risoluzione di sistemi lineari
3.1 Richiami di Algebra Lineare . . . . . . .
3.2 Sistemi Lineari . . . . . . . . . . . . . .
3.3 Condizionamento di un sistema lineare .
3.3.1 Residuo . . . . . . . . . . . . . .
3.4 Metodi Diretti . . . . . . . . . . . . . . .
3.4.1 Fattorizzazione A = LU . . . . .
3.4.2 Fattorizzazione LDLT . . . . . .
3.4.3 Fattorizzazione P A = LU . . . .
3.4.4 Fattorizzazione A = QR . . . . .
3.5 Metodi iterativi . . . . . . . . . . . . . .
3.5.1 Metodo di Jacobi . . . . . . . . .
3.5.2 Metodo di Gauss-Seidel . . . . .

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

29
29
32
34
36
37
38
45
49
54
64
65
70

4 Equazioni e sistemi non lineari


4.1 Condizionamento del problema . . .
4.2 Metodo di bisezione . . . . . . . . .
4.3 Metodo di Newton . . . . . . . . . .
4.3.1 Metodo di Newton modificato
4.3.2 Metodo delle corde . . . . . .

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

75
76
78
81
84
86

.
.
.
.
.

.
.
.
.
.

INDICE

4.3.3 Metodo delle secanti . . . . . . . . . . . . . . . . . . . 88


4.3.4 Metodo di accelerazione di Aitken . . . . . . . . . . . 90
5 Approssimazione di funzioni
5.1 Polinomio Interpolante di Lagrange . . . . . . . . . . . . . .
5.2 Polinomio Interpolante di Newton . . . . . . . . . . . . . . .
5.3 Condizionamento del problema . . . . . . . . . . . . . . . .
5.4 Errore di interpolazione . . . . . . . . . . . . . . . . . . . .
5.5 Splines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.5.1 Splines cubiche interpolanti nei nodi . . . . . . . . .
5.6 Minimi Quadrati . . . . . . . . . . . . . . . . . . . . . . . .
5.6.1 Condizionamento del problema dei minimi quadrati

.
.
.
.
.
.
.
.

95
97
100
109
112
114
115
122
125

6 Integrazione numerica
6.1 Formule di quadratura interpolatorie . . . . . . .
6.1.1 Formule di quadratura di Newton-Cotes .
6.1.2 Condizionamento del problema . . . . . .
6.1.3 Formule di quadratura composite . . . . .
6.1.4 Formule di quadratura composite adattive

.
.
.
.
.

129
129
130
133
135
139

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

7 Autovalori e Autovettori
145
7.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
7.2 Il metodo delle potenze . . . . . . . . . . . . . . . . . . . . . 146
A Esempi
149
A.1 Condizionamento Sistemi lineari . . . . . . . . . . . . . . . . 149
A.2 Eliminazione di Gauss . . . . . . . . . . . . . . . . . . . . . . 150
A.3 Risoluzione di sistemi lineari fattorizzati A = LU . . . . . . . 153
A.4 Risoluzione di sistemi lineari fattorizzati P A = LU . . . . . . 156
A.5 Risoluzione di sistemi lineari fattorizzati A = LDL T . . . . . 157
A.6 Risoluzione di sistemi lineari fattorizzati con Householder . . 159
A.7 Risoluzione di sistemi lineari fattorizzati con Givens . . . . . . 162
A.8 Risoluzione di sistemi lineari fattorizzati con Jacobi . . . . . . 164
A.9 Risoluzione di sistemi lineari fattorizzati con Gauss-Seidel . . 168
A.10 Metodo di bisezione . . . . . . . . . . . . . . . . . . . . . . . 175
A.11 Metodo di Newton . . . . . . . . . . . . . . . . . . . . . . . . 176
A.12 Metodi di Newton per funzioni con radice multipla nota . . . 178
A.13 Metodo delle corde . . . . . . . . . . . . . . . . . . . . . . . . 179
A.14 Metodo delle secanti . . . . . . . . . . . . . . . . . . . . . . . 181
A.15 Metodo di accelerazione di Aitken . . . . . . . . . . . . . . . . 183
A.16 Interpolazione di Vandermonde . . . . . . . . . . . . . . . . . 184
A.17 Interpolazione di Lagrange . . . . . . . . . . . . . . . . . . . . 186
A.18 Interpolazione polinomiale con base Newton e metodo di Horner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187

INDICE
A.19 Interpolazione polinomiale con base di Newton e metodo di
Neville . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
A.20 Splines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
A.21 Minimi quadrati . . . . . . . . . . . . . . . . . . . . . . . . . .
A.22 Funzioni di riferimento per le formule di Quadratura . . . . .
A.23 Formule di Quadratura di Newton-Cotes : Trapezi e Simpson .
A.24 Formule composite di Newton-Cotes: Trapezi . . . . . . . . .
A.25 Formule composite di Newton-Cotes: Simpson . . . . . . . . .
A.26 Formule adattive di Newton-Cotes: Trapezi . . . . . . . . . .
A.27 Formule adattive di Newton-Cotes: Simpson . . . . . . . . . .
A.28 Autovalori ed Autovettori . . . . . . . . . . . . . . . . . . . .

189
190
195
199
200
203
205
208
211
214

INDICE

Elenco delle figure

1.1 Rappresentazione di F (2, 3, 1, 1) . . . . . . . . . . . . . . . . 16


3.1 Rotazione vettori con matrici di Householder . . . . . . . . . 55
3.2 Rotazione assi con matrici di Givens . . . . . . . . . . . . . . 61
4.1 Tolleranza su f ed errore assoluto . . . . . . . . . . . . . . . . 77
4.2 Problema bencondizionato (a) e malcondizionato (b,c) . . . . 77
5.1 Funzione spline . . . . . . . . . . . . . . . . . . . . . . . . . . 115
5.2 Esempio minimi quadrati . . . . . . . . . . . . . . . . . . . . 123
6.1 Metodo dei trapezi . . . . . . . . . . . . . . . . . . . . . . . . 131
6.2 Metodo di Simpson . . . . . . . . . . . . . . . . . . . . . . . . 132
6.3 Esempio funzione per metodi adattivi . . . . . . . . . . . . . . 139
A.1 bisezione(0.5, 1,0 f esp0 , toll, 100) . . . . . . . . . . . . . . . .
A.2 bisezione(5, 50,0 f mult0 , toll, 100) . . . . . . . . . . . . . . .
A.3 bisezione(1, 5,0 f mult0 , toll, 100) . . . . . . . . . . . . . . . .
A.4 corde(0 f esp0 ,0 df esp0 , toll, 0.5, 1, 1, 250) . . . . . . . . . . . .
A.5 corde(0 f mult0 ,0 df mult0 , T OLL, 2.5, 4, 4, 250) . . . . . . . . . .
A.6 corde(0 f mult0 ,0 df mult0 , T OLL, 2.5, 5, 5, 250) . . . . . . . . . .
A.7 secanti(0 f esp0 ,0 df esp0 , toll, 0.5, 1, 1.1, 1, 100) . . . . . . . . .
A.8 secanti(0 f mult0 ,0 df mult0 , toll, 2, 3.5, 2, 2.1, 100) . . . . . . . .
A.9 secanti(0 f mult0 ,0 df mult0 , toll, 2, 3.5, 2, 3, 200) . . . . . . .
A.10 Interpolazione polinomiale funzione di Runge con Vandermonde, 10 ascisse . . . . . . . . . . . . . . . . . . . . . . . . .
A.11 Interpolazione polinomiale funzione di Runge con Vandermonde, 20 ascisse . . . . . . . . . . . . . . . . . . . . . . . . .
A.12 Interpolazione polinomiale funzione di Runge con Lagrange,
10 ascisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7

177
177
178
180
180
181
182
182
183
185
185
186

ELENCO DELLE FIGURE


A.13 Interpolazione polinomiale funzione di Runge con Lagrange,
20 ascisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
A.14 newtonhorneruni(0 f runge0 , 3, 3, 50, 8) . . . . . . . . . . . .
A.15 newtonhorneruni(0 f runge0 , 3, 3, 50, 16) . . . . . . . . . . . .
A.16 newtonhorneruni(0 f runge0 , 3, 3, 50, 35) . . . . . . . . . . . .
A.17 newtonhornercheby(0 f runge0 , 3, 3, 50, 15) . . . . . . . . . .
A.18 newtonnevilleuni(0 f periodica0 , 10, 10, 100, 15) . . . . . . . .
A.19 newtonnevilleuni(0 f periodica0 , 10, 10, 100, 20) . . . . . . . .
A.20 newtonnevillecheby(0 f periodica0 , 10, 10, 100, 20) . . . . . . .
A.21 spline(0 f runge0 , [5 : 2 : 5], 50) . . . . . . . . . . . . . . . . .
A.22 spline(0 f runge0 , [5 : 1 : 5], 50) . . . . . . . . . . . . . . . . .
A.23 spline(0 f mult0 , [2 : 0.5 : 4], 50) . . . . . . . . . . . . . . . . . .
A.24 spline(0 f mult0 , [2 : 0.25 : 4], 50) . . . . . . . . . . . . . . . . .
A.25 spline(0 f mult0 , [2 : 0.05 : 4], 100) . . . . . . . . . . . . . . . .
A.26 spline(0 f periodica0 , [5 : 2.5 : 5], 100) . . . . . . . . . . . . . .
A.27 spline(0 f periodica0 , [5 : 1.25 : 5], 100) . . . . . . . . . . . . .
A.28 spline(0 f periodica0 , [10 : 2 : 10], 100) . . . . . . . . . . . . .
A.29 spline(0 f periodica0 , [10 : 1 : 10], 100) . . . . . . . . . . . . .
A.30 minimi_quadrati(x, f, 16) . . . . . . . . . . . . . . . . . . . .
A.31 minimi_quadrati(x, f, 8) . . . . . . . . . . . . . . . . . . . .
A.32 minimi_quadrati(x, f, 8) . . . . . . . . . . . . . . . . . . . .
A.33 minimi_quadrati(x, f, 16) . . . . . . . . . . . . . . . . . . . .
A.34 minimi_quadrati(x, f, 30) . . . . . . . . . . . . . . . . . . . .
A.35 minimi_quadrati(x, f, 50) . . . . . . . . . . . . . . . . . . . .
A.36 Formule di quadratura : funzione di riferimento y = e x 1 . .
1
A.37 Formule di quadratura : funzione di Runge y = 1+x
. . . . .
2
A.38 Metodo Trapezi-adattivo con la funzione y = sen(x)
e tollex
3
ranza 1e . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
e tolleA.39 Metodo Trapezi-adattivo con la funzione y = sen(x)
x
5
ranza 1e . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
A.40 Metodo Trapezi-adattivo con la funzione y = e x 1 e tolleranza 1e3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

A.41 Metodo Trapezi-adattivo con la funzione xcos(x)


e tolleranza
x2 +4
3
1e
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
e tolleranza
A.42 Metodo Simpson-adattivo con la funzione sen(x)
x
1e5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
A.43 Metodo Simpson-adattivo con la funzione e x 1 e tolleranza
1e5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

A.44 Metodo Simpson-adattivo con la funzione xcos(x)


e tolleranza
x2 +4
4
1e
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
A.45 Metodo Simpson-adattivo con la funzione di Runge 1+x
2 e
5
tolleranza 1e
. . . . . . . . . . . . . . . . . . . . . . . . . .

186
187
187
188
188
189
189
190
190
191
191
192
192
193
193
194
194
195
196
196
197
197
198
199
200
209
209
210
210
212
212
213
213

ELENCO DELLE FIGURE

1
A.46 Metodo Simpson-adattivo con la funzione di Runge 1+x
2 (diverso
5
intervallo) e tolleranza 1e
. . . . . . . . . . . . . . . . . . . 214

10

ELENCO DELLE FIGURE

Listings

1.1
3.1
3.2
3.3
3.4
3.5
3.6
3.7
3.8
3.9
3.10
3.11
3.12
3.13
3.14
3.15
3.16
3.17
4.1
4.2
4.3
4.4
4.5
4.6
5.1
5.2
5.3
5.4
5.5
5.6
5.7

Precisione di macchina . . . . . . . . . . . . . . . . . . . . .
Risolvi Diagonale . . . . . . . . . . . . . . . . . . . . . . . .
Risolvi Triangolare Inferiore . . . . . . . . . . . . . . . . . .
Risolvi Triangolare Superiore . . . . . . . . . . . . . . . . .
Metodo di triangolarizzazione di Gauss . . . . . . . . . . . .
Risolvi sistema con fattorizzazione A = LU . . . . . . . . .
Risolvi sistema con fattorizzazione A = LDL T . . . . . . . .
Fattorizzazione A = LDLT . . . . . . . . . . . . . . . . . .
Risolvi sistema con fattorizzazione P A = LU . . . . . . . .
Risolvi sistema con fattorizzazione di Householder . . . . .
Fattorizzazione di Householder . . . . . . . . . . . . . . . .
Creazione vettore di Householder . . . . . . . . . . . . . . .
Risolvi sistema con fattorizzazione di Givens . . . . . . . . .
Fattorizzazione di Givens . . . . . . . . . . . . . . . . . . . .
Calcolo della matrice di rotazione di Givens . . . . . . . . .
Scambio degli elementi secondo la matrice di Givens . . . .
Risolvi sistema lineare con metodo di Jacobi . . . . . . . . .
Risolvi sistema lineare con metodo di Gauss-Seidel . . . . .
Metodo di bisezione . . . . . . . . . . . . . . . . . . . . . .
Metodo di Newton . . . . . . . . . . . . . . . . . . . . . . .
Metodo di Newton per radici multiple . . . . . . . . . . . .
Metodo delle corde . . . . . . . . . . . . . . . . . . . . . . .
Metodo delle secanti . . . . . . . . . . . . . . . . . . . . . .
Metodo di Aitken . . . . . . . . . . . . . . . . . . . . . . . .
Risolve il sistema di Vandermonde . . . . . . . . . . . . . .
Creazione matrice di Vandermonde . . . . . . . . . . . . . .
Interpolazione polinomiale con base di Lagrange . . . . . .
Interpolazione polinomiale con base di Lagrange ottimizzata
Interpolazione polinomiale con base di Newton . . . . . . .
Valutazione di un polinomio in un punto . . . . . . . . . . .
Calcolo delle differenze divise . . . . . . . . . . . . . . . . .
11

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

18
32
33
33
44
44
46
47
52
58
59
59
62
63
63
64
68
72
80
83
85
87
89
92
96
97
99
99
104
105
106

LISTINGS

12
5.8
5.9
5.10
5.11
5.12
5.13
5.14
5.15
6.1
6.2
6.3
6.4
6.5
6.6
6.7
6.8
6.9
7.1

Interpolazione polinomiale con Neville . . . . . . . . . . . . .


Calcolo polinomio con Neville . . . . . . . . . . . . . . . . . .
Ascisse di Chebyshev . . . . . . . . . . . . . . . . . . . . . . .
Interpolazione polinomiale con algoritmo di Horner e ascisse
di Chebyshev . . . . . . . . . . . . . . . . . . . . . . . . . . .
Interpolazione polinomiale con algoritmo di Neville e ascisse
di Chebyshev . . . . . . . . . . . . . . . . . . . . . . . . . . .
Spline cubica naturale . . . . . . . . . . . . . . . . . . . . . .
Fattorizzazione matrice tridiagonale . . . . . . . . . . . . . .
Metodo dei minimi quadrati . . . . . . . . . . . . . . . . . . .
Metodo dei trapezi . . . . . . . . . . . . . . . . . . . . . . . .
Metodo di Simpson . . . . . . . . . . . . . . . . . . . . . . . .
Calcolo integrale . . . . . . . . . . . . . . . . . . . . . . . . .
Metodo composito dei trapezi . . . . . . . . . . . . . . . . . .
Metodo composito di Simpson . . . . . . . . . . . . . . . . . .
Metodo dei trapezi adattivo: grafico . . . . . . . . . . . . . .
Metodo dei trapezi adattivo . . . . . . . . . . . . . . . . . . .
Metodo di Simpson adattivo: grafico . . . . . . . . . . . . . .
Metodo di Simpson adattivo . . . . . . . . . . . . . . . . . . .
Calcola lautovalore dominante con il metodo delle potenze .

107
108
110
111
111
117
119
126
132
133
137
138
138
141
142
142
143
148

Introduzione

Nel momento in cui abbiamo la necessit di risolvere con laiuto del computer un problema trovato nella vita reale, sorge la necessit di formalizzarlo
attraverso modelli matematici.
Con la soluzione degli stessi, siamo perci in grado di determinare i
risultati che possono addirittura permetterci la previsione di eventi futuri, o
un analisi accurata del fenomeno formalizzato.
Lo scopo del calcolo numerico dunque quello di garantire il corretto
passaggio dal modello matematico a una plausibile soluzione.
Sono molteplici i casi in cui errori causati da un errato utilizzo di modelli
matematici hanno prodotto gravi danni economici e sociali.

13

14

LISTINGS

Capitolo

Teoria dell errore

della capacit finita dei suoi registri, un calcolatore non in


grado di rappresentare linsieme dei numeri reali. Si pone pertanto
il problema di definire una rappresentazione approssimata di tale
insieme. Infatti ogni procedura allinterno dellelaboratore ricondotta a
lunghe sequenze di operazioni elementari e decisioni logiche, le quali generano, al procedere dei calcoli, una serie di imprecisioni che si ripercuotono
sul risultato finale. L Analisi Numerica deve quindi preoccuparsi di descrivere adeguate procedure per risolvere problemi di svariata natura, considerando tutte le limitazioni imposte dallaritmetica di macchina. In questo
capitolo intendiamo mostrare le metodologie e i concetti sui quali si basa la
teoria dellerrore.

1.1

Causa

Rappresentazione dei numeri sul calcolatore

Scelto un qualunque numero intero > 1, ogni numero non nullo x R


ammette una rappresentazione in base
x = sign(x)

i i

i=1

dove p Z e ogni i tale che 0 i 1. Il numero viene detto base,


p lesponente e gli i sono le cifre della rappresentazione.
Teorema 1.1 (di rappresentazione) Data una base intera > 1 e un qualunque numero reale x diverso da zero, esiste ununica rappresentazione in
base tale che:
1 6= 0
non vi sia un intero k per cui si abbia j = 1, j > k
15

CAPITOLO 1. TEORIA DELL ERRORE

16

Definizione 1.2 Si definisce linsieme dei numeri macchina (floating point)


con t cifre significative, base e range (L, U ), linsieme dei numeri reali definito nel modo seguente:
F (, t, L, U ) = {0}

x R = sign(x) p

t
X

di i

i=1

dove t, sono interi positivi con > 1. Si ha inoltre:


0 di 1 , i = 1, 2, . . .
d1 6= 0 , L p U

Nella precedente definizione solitamente U positivo e L negativo. 1 Consideriamo ad esempio, linsieme F (2, 3, 1, 1), esso formato dai numeri:
(0, 100) 21 , (0, 101) 21 , (0, 110) 21 , (0, 111) 21 ,
(0, 100) 20 ,

(0, 100) 21 ,

(0, 101) 20 ,

(0, 101) 21 ,

(0, 110) 20 , (0, 111) 20 ,

(0, 110) 21 , (0, 111) 21 ,

Se rappresentiamo lungo la retta dei numeri reali i precedenti numeri, no0

1 5 3 7 1 5 3
4 16 8 16 2 8 4

7
8

9
4

Figura 1.1: Rappresentazione di F (2, 3, 1, 1)


tiamo, come mostra la figura 1.1, che tali non sono uniformemente spaziati
fra loro. Analizziamo i motivi per cui si pu verificare che il numero x R
non sia rappresentabile come numero di macchina, cio x
/ F:
lesponente p
/ [L, U ]. Nel caso in cui p < L il numero approssimato
a 0. Tale situazione viene detta di underflow. Se invece p > U allora i
calcoli si arrestano e questa situazione chiamata di overflow.
le cifre di , con i > t, non sono tutte nulle. In tal caso si utilizzano le
operazioni di approssimazione per scegliere un rappresentante di x in
F.
1
Lo standard pi diffuso, lo standard IEEE ha le seguenti specifiche: = 2, t = 52,
e = 10.
Quindi il minimo numero rappresentabile risulta circa 10308 , mentre il massimo circa
10308

1.2. PRECISIONE DI MACCHINA

17

In rappresentazione posizionale un numero x 6= 0 viene denotato con:


x = .d1 d2 . . . dt . . . p
Indichiamo inoltre con f l(x) il numero di macchina corrispondente a x.
Esso ottenuto da x in base o al 
 
 o all   
 .
Troncamento f l(x) = sign(x)(0, d1 d2 . . . dt ) p

f l(x) = sign(x)(0, d1 d2 . . . dt ) p
se dt+1 < /2
Arrotondamento
p
f l(x) = sign(x)(0, d1 d2 . . . (dt + 1)) se dt+1 /2
Definizione 1.3 La quantit |f l(x) x| prende il nome di ! "




Definizione 1.4 La quantit f l(x)x
, se x 6= 0 prende il nome di #
x
$%"&('

Calcoliamo adesso gli errori nei due casi di approssimazione. Per il troncamento si ha:
|f l(x) x| = |sign(x)(0, d1 d2 . . . dt ) p sign(x)(0, d1 d2 . . . dt dt+1 . . .) p | =

= (0, 00 . . . 0dt+1 . . .) p t p


t p
f l(x) x

1t poich
e |x| 1 p


x
|x|

Con larrotondamento invece

|f l(x) x| = |sign(x)(0, d1 d2 . . . t ) p sign(x)(0, d1 d2 . . . dt dt+1 . . .) p | =


1 t p

con t = dt se dt+1 < , t = dt + 1 se dt+1


2
2
2


f l(x) x
1
1t



x
2
Da notare che nel caso dellerrore relativo, questo dovuto solo a t, cardinalit della mantissa.

1.2

Precisione di macchina

Definizione 1.5 Definiamo precisione di macchina


tale che
f l(1 + eps) > 1

Y*),+

il pi piccolo numero

Presentiamo limplementazione Matlab che restituisce il valore di eps:

CAPITOLO 1. TEORIA DELL ERRORE

18





Listing 1.1: Precisione di macchina


[E] = precisione_macchina

2
3
4
5
6
7
8
9

% PRECISIONE_MACCHINA Calcola la precisione di macchina.


%
[E] = precisione_macchina
restituisce in E la
%
precisione di macchina su cui e utilizzato questo
%
algoritmo.
%
%
Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti
%
Fri Jun 18 09:46:15 CEST 2004

10
11
12
13
14

E=1;
% controllo precisione
  (1+E)>1
E=E/2;

15



16

E=2.E;

17

 



"( 2 '"


 (0 * 0'(

'2
 H "Z *F

1.3

Operazioni di macchina

Siano a, b due numeri appartenenti ad un particolare sistema floating point


F (, t, L, U ).
Definiamo:
Somma di macchina a b = f l(a + b)
Differenza di macchina a b = f l(a b)
Prodotto di macchina a b = f l(a b)
Quoziente di macchina a b = f l(a/b)
Dimostriamo ora che se a, b, c F allora
(a b) c 6= a (b c)
| {z } | {z }
yA

yB

Calcoliamo adesso il valore di yA :

yA = f l(f l(a + b) + c) = f l((a + b)(1 + 1A ) + c) =


= [(a + b)(1 + 1A ) + c](1 + 2A ) =
= [a + b + c + 1A (a + b) + 2A (a + b + c) + 1A 2A (a + b)]

1.3. OPERAZIONI DI MACCHINA

19

L errore relativo pertanto (ignorando la quantit 1A 2A (c + b))2 :




yA y 2A (a + b + c) + 1A (a + b)
a+b


= 2A + 1A
y =
a+b+c
a+b+c
Procediamo adesso nel calcolo del valore di y B :
yB

= f l(a + f l(b + c)) = f l(a + (b + c)(1 + 1B )) =


= [a + (b + c)(1 + 1B )](1 + 2B ) =
= [a + b + c + 1B (b + c) + 2B (a + b + c) + 1B 2B (c + b)]

L errore relativo quindi (ignorando come prima lerrore di seconda specie):




yB y 2B (a + b + c) + 1B (b + c)
b+c


= 2B + 1B
y =
a+b+c
a+b+c

4 Esempio 1.6 Siano = 10 e t = 4. Prendiamo a = 0.3124 10 3 ,


b = 0.2631 101 , c = 0.4122 101 ; calcoliamo yA :
a + b = 0.31242631 103 a b = 0.3124 103

(a b) + c = 0.31244122 103 (a b) c = 0.3124 103


Se calcoliamo invece yB otteniamo:
b + c = 0.6753 101 b c = 0.6753 101
a + (b c) = 0.31246753 103 a (b c) = 0.3125 103
Controlliamo i valori dellerrore relativo per entrambi gli algoritmi:


yA y
0.6753 101
3


y = 0.31246753 103 0.21 10


1
yB y
3

= 0.3247 10
y 0.31246753 103 0.11 10

4 Esempio 1.7 Vediamo come si comporta la differenza di quadrati, sempre


con gli stessi valori. Dimostriamo che
(a a) (b b) 6= (a b) (a b)
Come nellesempio precedente, calcoliamo y A e yB con i relativi errori:
yA = f l(f l(a a) f l(b b)) = f l((a a)(1 + 1A ) (b b)(1 + 2A )) =


= a2 (1 + 1A ) b2 (1 + 2A ) (1 + 3A ) =

= (a2 + b2 + a2 1A b2 2A + (a2 b2 )3A )


2

Questa semplificazione ci permessa poich tale prodotto risulta essere pi piccolo della
precisione di macchina eps

CAPITOLO 1. TEORIA DELL ERRORE

20

a2
b2
yA y
= 2

2A + 3A
1A
y
a b2
a2 b 2




yA y
a2
b2

eps 1 +
+
y
|a2 b2 | |a2 b2 |

yB = f l(f l(a + b) f l(a b)) = [(a + b)(1 + 1B )(a b)(1 + 2B )] (1 + 3B ) =


= (a2 b2 )(1 + 1B )(1 + 2B )(1 + 3B ) =

= (a2 b2 )(1 + 1B + 2B + 3B )

yB y
= 1B + 2B + 3B
y


yB y


y 3 eps
 2

2
Abbiamo quindi mostrato che se |a2ab2 | + |a2bb2 | > 2 allora pi conveniente utilizzare lalgoritmo B.

1.4

Propagazione degli errori

In questo paragrafo introduciamo lo studio di come al variare degli algoritmi, gli errori sui dati si ripercuotono sui risultati.
Consideriamo una generica funzione
y = f (x)
e la relativa funzione approssimata sul calcolatore
y = f (
x)
dove x
rappresenta il valore approssimato del punto dove vogliamo calcolare la funzione e y il valore approssimato di questa (in x
).
Sia
x
x
y y
x =
e
y =
x
y
Non sempre vero che x = y , infatti considerando lo sviluppo in serie di
Taylor della funzione f arrestato al primo ordine, si ha:
x x)
f (
x)
= f (x) +f 0 (x)(
|{z} |{z}
y

cio

x x)
y y
= f 0 (x)(
0
y y f (x) x
x
=x
y
f (x) x
0

errore assoluto
errore relativo

(x)
detto coefficiente di amplificazione.
dove x ff (x)

1.4. PROPAGAZIONE DEGLI ERRORI

21

1.4.1 Errori nelle operazioni aritmetiche di base


Somma
z = x
+ y = x(1 + x ) + y(1 + y ) =
= x + y + xx + yy = z + xx + yy
quindi




xx + yy
z z




z = x + y = |z |


|x|
|y|
|z |
max(|x |, |y |)
+
|x + y| |x + y|
Nel caso in cui x e y siano discordi e vicini fra loro otteniamo un grosso
errore e si presenta
il fenomeno detto di cancellazione.

Ad esempio: x + 1 x non facile da trattare senza errori e quindi


risulta pi conveniente trattarlo come:
(x + 1) x
1

x+1+ x
x+1+ x
la quale introduce un errore pi piccolo nel risultato.
Prodotto
z = x
y = x y(1 + x )(1 + y ) =
= xy(1 + x + y + x y )

quindi

Quoziente



z z


z = |x + y + x y |
x (1 + x )
=
y (1 + y )
1
= z(1 + x )
(1 + y )

z = x
/
y=

quindi



z z x y


z = 1 + y

Analizzando la tabella 1.1 si pu notare come tutte le operazioni di macchina risentono della grandezza dei fattori nel calcolo dellerrore assoluto,
cosa che non accade quando consideriamo lerrore relativo. La somma e la

CAPITOLO 1. TEORIA DELL ERRORE

22
Operazione

Err. Assoluto

x+y

|xx + yy |

xy

|xx yy |

xy
x/y

|xy
x + xyy |


x

(

)
y(1+x ) x
y

Err.
Relativo
x

+ y

x+y x x+y y

x
y
xy x xy y
|
x + y |
x y
1+y

Tabella 1.1: Errori nelle principali operazioni aritmetiche


sottrazione possono rendere grande lerrore relativo nel caso in cui i due
termini delloperazione siano molto vicini in valore assoluto. Infatti pu accadere che i denominatori che compaiono nei coefficienti di amplificazione
dellerrore relativo siano molto piccoli in valore assoluto (fenomeno della
cancellazione). La moltiplicazione non amplifica lerrore relativo e comporta un errore assoluto che dipende dallordine di grandezza dei fattori; anche
la divisione non produce amplificazione per quanto riguarda lerrore relativo, mentre lerrore assoluto diminuisce se aumenta (in valore assoluto) il
divisore.
4 Esempio 1.8 Calcoliamo
le radici del polinomio x 2 4x + .

Esse sono date da x1,2 = 2 4 . Consideriamo la radice x = 2 + 4 ,


per essa vale

x() = 2 + 4
quindi se = 4 allora x() = 2.
Introduciamo una perturbazione
su questo dato tale che
= 4 10 6 .

Avremo allora x(
) = 2 + 4 4 + 106 = 2 + 103
Segue che
=
x() =

106

=
= 0.25 106

4
x(
) x()
103
=
= 0.5 103
x()
2

Quindi la perturbazione si amplificata di un fattore nellordine di 10 3


In tutto lelaborato cercheremo di affrontare il problema della propagazione
degli errori nei suoi due aspetti fondamentali: il condizionamento del problema e la stabilit3 degli algoritmi utilizzati. In realt si usa il termine
di condizionamento del problema quando possiamo supporre di operare in
artimetica esatta e vogliamo vedere come la perturbazione sui dati si ripercuota sui risultati. L esempio precedente manifesta chiaramente questa
3

Si definisce condizionamento il comportamento delloperazione esatta in presenza di


dati perturbati. Si dice che un algoritmo stabile quando non produce unamplificazione
eccessiva degli errori sui dati di ingresso.

1.4. PROPAGAZIONE DEGLI ERRORI

23

situazione: al variare del parametro mutava il risultato.


Daltra parte non possiamo sempre solo teorizzare i problemi, ma dobbiamo usare algoritmi di macchina che possono introdurre amplificazioni negli
errori. Abbiamo visto infatti negli esempi, come cambiando semplicemente
lordine dei fattori di una somma, i risultati ottenuti non sono gli stessi.

24

CAPITOLO 1. TEORIA DELL ERRORE

Capitolo

Norme

confrontare i diversi metodi di approssimazione che ci troviamo ad


analizzare spesso utile trovare una misura delle risposte che ci vengono fornite: introduciamo pertanto la definizione di una distanza
fra due punti di uno spazio lineare.

2.1

ER

Norma vettoriale

Definizione 2.1 Unapplicazione definita in uno spazio vettoriale V ed avente


codominio in R chiamata norma vettoriale e si indica con || || se v V :
1. ||v|| 0 ; ||v|| = 0 se e solo se v = 0
2. ||v|| = || ||v|| per ogni R
3. ||v + w|| ||v|| + ||w|| per ogni w V
Definizione 2.2 Sia x Rn allora si definisce come norma , per 1 <
la quantit
!1
n

|xi |
||x|| =
i=1

In particolare definiamo1 :
1

Le figure che accompagnano la definizione delle norme indicano i luoghi dei punti dove
|| || 1

25

CAPITOLO 2. NORME

26



























1

Norma 1

||x||1 =

n
X
i=1

|xi |

        


       
       
        
       

Norma 2

v
u n

uX
|xi |2
||x||2 = xT x = t
i=1

       


       
       
       
       

Norma

||x|| = max |xi |


i=1,...,n

In particolare sempre possibile passare da un tipo di norma allaltra a meno


di una costante.
Proposizione 2.3 Per ogni coppia di norme di vettore ||x||, ||x|| 0 , esistono due
costanti positive m ed M tali che per ogni x R n :
m||x||0 ||x|| M ||x||0

2.2

Norme matriciali

Definizione 2.4 Una funzione di Rnn in R


A ||A||
che verifica le seguenti propriet:
1. ||A|| 0 ; ||A|| = 0 se e solo se A = 0
2. ||A|| = || ||A|| per ogni R
3. ||A + B|| ||A|| + ||B|| per ogni B R nn
4. ||AB|| ||A|| ||B|| per ogni B R nn

2.2. NORME MATRICIALI

27

detta norma matriciale.


Definizione 2.5 La norma definita da
||A|| = sup
x6=0

||Ax||
||x||

viene detta norma matriciale indotta della norma vettoriale || ||.


5 Osservazione 2.6 Dal momento che x R n si pu definire un vettore
x
, possiamo scrivere che
u = ||x||
||A|| = max ||Au||
||u||=1

Definizione 2.7 Una norma di matrice si dice consistente se verifica la condizione


||A x|| ||A|| ||x||
con x R
Teorema 2.8 Ogni norma matriciale soddisfa la condizione
||A B|| ||A|| ||B||
D IMOSTRAZIONE:
Dalla definizione di norma matriciale si ha che
||A B|| = max ||A By|| max ||A|| ||By|| ||A|| ||B||
||y||

||y||=1

2
Definizione 2.9 Si definisce raggio spettrale la funzione:
(A) = max |i |
i=1,...,n

dove i i sono gli autovalori della matrice quadrata A.


Teorema 2.10 Dalle tre norme vettoriali definite in precedenza si ottengono
le corrispondenti norme matriciali indotte:
1. Norma 1
||A||1 = max

j=1,...,n

2. Norma 2
||A||2 =

n
X
i=1

|aij |

q
(AT A)

CAPITOLO 2. NORME

28
3. Norma
||A|| = max

i=1,...,n

n
X
j=1

|aij |

Teorema 2.11 Per ogni norma indotta || || e per ogni matrice quadrata A si
ha:
(A) ||A||
D IMOSTRAZIONE :
Sappiamo che gli autovalori di A si ricavano da
Ax = x
Definiamo y =

x
||x|| .

Abbiamo allora
Ay = y ||A|| ||Ay||

quindi
=1

z}|{
||A|| ||Ay|| = ||y|| = || ||y|| = ||

Capitolo

Metodi per la risoluzione di


sistemi lineari

risoluzione di sistemi lineari uno dei problemi matematici pi significativi. Si presenta infatti spesso nel campo applicativo quando
tali sistemi derivano direttamente dallanalisi dei fenomeni studiati,
oppure anche nel caso in cui i modelli trovati sono di tipo non lineare, dei
quali sovente si studia solo la parte lineare. Siccome i sistemi lineari sono
uno strumento cos importante nella modellazione matematica della realt,
sorge la necessit di implementare algoritmi efficienti (e soprattutto stabili)
per la soluzione di questi. Inoltre, data la variet dei problemi da cui sono
formalizzati i sistemi lineari, ad essa corrisponde un variet di metodi per
risolverli. A maggior ragione esisteranno dei particolari algoritmi che risulteranno efficienti per un specifico tipo di sistemi mentre inefficienti per altri.
Lo scopo dello studio di questi proprio il saper usare l algoritmo corretto
per il sistema considerato. Infatti la bont di un algoritmo dipende: dalla
sua stabilit, dalla sua occupazione di memoria, dal linguaggio usato per
implementarlo, dal tempo di esecuzione su un determinato calcolatore.
In questo capitolo tratteremo di alcuni metodi che ci permettono di calcolare le soluzioni di sistemi lineari. In primo luogo ricorderemo le definizioni
fondamentali di algebra lineare per poi addentrarci nell analisi di problemi
specifici.

3.1

Richiami di Algebra Lineare

Data una matrice A Rnn ed un vettore b Rn , un sistema di n equazioni


lineari in n incognite si pu rappresentare nella forma
Ax = b
29

30

CAPITOLO 3. METODI PER LA RISOLUZIONE DI SISTEMI LINEARI

dove x Rn il vettore delle incognite. Tale sistema ammette ununica


soluzione se e solo se il det(A) 6= 0.
Esistono diversi tipi di matrici, che si differenziano per la tipologia degli
elementi che le compongono, vediamone alcune:
Definizione 3.1 Una matrice Ann si dice diagonale se aii 6= 0 per tutti 1
i n e aij = 0 i 6= j, 1 i, j n. In particolare, si chiama matrice identit
quella matrice diagonale con tutti gli elementi uguali a 1
Definizione 3.2 Una matrice Ann si dice triangolare inferiore (superiore) se
aij 6= 0 i j (i j), 1 i, j n.
La moltiplicazione di due matrici triangolari inferiori (superiori) produce
ancora una matrice triangolare inferiore (superiore). Si noti inoltre che il
determinante di una matrice triangolare dato dal prodotto degli elementi
sulla diagonale principale.
Definizione 3.3 Una matrice di permutazione una matrice identit con
alcune righe (o colonne) scambiate di posizione.
Se pre-moltiplichiamo una matrice di permutazione con una matrice qualsiasi si ottiene uno scambio delle righe, al contrario se post-moltiplichiamo
tale matrice si ottiene uno scambio delle colonne.
Definizione 3.4 La trasposta della matrice A, che si indica con A T , la matrice le cui righe sono le colonne di A (cio a Tij = aji ).
Si noti che (AB)T = B T AT
Definizione 3.5 Una matrice A di dice simmetrica se A T = A
Definizione 3.6 Se A una matrice quadrata e il determinante di A diverso
da zero, allora possiamo definire l inversa di A, indicandola con A 1 , come la
matrice tale che A1 A = AA1 = I i cui elementi sono dati da
cij =

(1)i+j det(Aji )
det(A)

Definizione 3.7 Una matrice A si dice ortogonale se risulta A 1 = AT .


Definizione 3.8 Sia A una matrice simmetrica. A si dice definita positiva se
per ogni vettore x Rn (colonna), non nullo:
xT Ax > 0
Si dice invece semi-definita positiva se
xT Ax 0

3.1. RICHIAMI DI ALGEBRA LINEARE

31

Definizione 3.9 La matrice A si dice singolare se det(A) = 0, non singolare


se det(A) 6= 0
Definizione 3.10 Si definisce sottomatrice principale di ordine k di una matrice n n, con k < n, una matrice del tipo

a11 . . . a1k
. . . a1n

..
..
..
..

.
.
.
.

ak1 . . . akk
akn

..

..
.
.
.

.
.
an1 . . . ank
. . . ann
Definizione 3.11 Si definisce minore principale il determinante di una sottomatrice principale.

Teorema 3.12 Se A simmetrica definita positiva, allora sono simmetriche


definite positive anche tutte le sue sottomatrici principali.
D IMOSTRAZIONE : Scriviamo la matrice A

a11 a12 a1k a1n

..
a21 a22
.

..
..
.
.
.
.
.

..
ak1
akk
.

..
..
..
.
.
.
an1 ann

Per ogni y Rk non nullo, dobbiamo dimostrare che

y T Ak y > 0

Espando il vettore y al vettore x Rn ponendo le componenti ai , con i > k


tutte uguali a zero. Per ipotesi risulta che
xT Ax > 0
ma, la matrice A della forma:
A=

Ak A12
A21 A22

quindi:
 
Ak A12
y
x Ax = (y , 0 )
=
0
A21 A22
 
y
T
T
= (y Ak , y A12 )
= y T Ak y > 0
0
T

32

CAPITOLO 3. METODI PER LA RISOLUZIONE DI SISTEMI LINEARI

3.2

Sistemi Lineari

Il modo pi immediato per definire la soluzione di un sistema lineare Ax = b


calcolare
x = A1 b
tuttavia il calcolo dellinversa di una matrice unoperazione molto costosa 1 .
Tuttavia nel caso in cui A sia una matrice diagonale il calcolo della soluzione
banale, infatti:
bi
i = 1, . . . , n
xi =
aii

&-
2

In questo caso il calcolo ha un costo computazionale pari a n


; dove
&-
2
con
si intendono il numero di operazioni elementari in virgola mobile.





Listing 3.1: Risolvi Diagonale


[x] = risolvi_diagonale(A,b)

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

% RISOLVI_DIAGONALE Risolve il sistema diagonale


%
[x] = risolvi_diagonale(A,b) restituisce le soluzioni
%
del sistema diagonale Ax=b.
%
%
Il parametro A deve essere una matrice diagonale mentre
%
b un vettore la cui dimensione uguale a quella di A
%
%
Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti
%
Thu Jun 24 15:49:43 CEST 2004
[n,m]=    (A);
 n==m
x=b./   (A);

 
 


   

   (Errore: la matrice di input non e quadrata);




Se A triangolare inferiore invece la soluzione data da


bi
xi =

i1
X
j=1

aii

aij xj
i = 1, . . . , n

Calcolando linversa tramite la risoluzione di n sistemi lineari quadrati il costo O(n3 ).


Infatti si esegue una triangolarizzazione con Gauss (O(n3 )) e la risoluzione (O(n2 )) di n
sistemi cos ottenuti
1

3.2. SISTEMI LINEARI



1

33

Listing 3.2: Risolvi Triangolare Inferiore


 
 

[x] = risolvi_triangolare_inferiore(A,b)

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

% RISOLVI_TRIANGOLARE_INFERIORE Risolve un sistema triang. inf.


%
[x] = risolvi_triangolare_inferiore(A,b) restituisce in
%
x le soluzioni del sistema triangolare inferiore Ax=b.
%
%
A deve essere una matrice triangolare inferiore e b un
%
vettore la cui dimensione di riga e uguale a quella
%
di A.
%
%
Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti
%
Mon Sep 13 10:21:24 CEST 2004
[n,m]=  (A);
% controllo se A e quadrata
 n==m
x=   (n,1);
% ciclo sul numero dellequazione
  i=1:n
s=0;
s=s+A(i,1:i1)x(1:i1);
% calcolo liesima incognita
x(i)=(b(i)s)/A(i,i);
 ;

 
 


   

   (La matrice di input non e quadrata);




Nel caso in cui questa sia superiore la soluzione diventa:


bi
xi =


1

n
X

j=i+1

aii

aij xj
i = 1, . . . , n

Listing 3.3: Risolvi Triangolare Superiore


 
 

[x] = risolvi_triangolare_superiore(A,b)

2
3
4
5
6
7
8
9
10
11
12
13

% RISOLVI_TRIANGOLARE_SUPERIORE Risolve un sistema triang. sup.


%
[x] = risolvi_triangolare_superiore(A,b) restituisce in
%
x le soluzioni del sistema triangolare inferiore Ax=b.
%
%
A deve essere una matrice triangolare superriore e b un
%
vettore la cui dimensione di riga e uguale a quella
%
di A.
%
%
Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti
%
Fri Jun 18 10:28:45 CEST 2004

34
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

CAPITOLO 3. METODI PER LA RISOLUZIONE DI SISTEMI LINEARI

[n,m]=    (A);
% controllo se A e quadrata
 n==m
x=   (n,1);
% determino lnesima soluzione
x(n)=b(n)./A(n,n);
  k=2:n
% itero allindietro
i=nk+1;
s=0;
s=s+A(i,i:n)x(i:n);
% calcolo liesima incognita
x(i)=(b(i)s)/A(i,i);
  ;

 
 


   

   (La matrice di input non e quadrata);




&-
2

In entrambi i casi il numero di operazioni dato da n 2


.
Si noti che nel caso in cui la matrice sia ortogonale il calcolo dellinversa
immediato, ma il costo della risoluzione del sistema comunque nellordine
di O(n2 ).
In generale, si ricorre a metodi di varia natura per determinare la soluzione di sistemi. Tali metodi si dividono in:
Metodi diretti : con un numero finito di passi si approssimano le soluzioni.
Utilizzano tutti lidea della eliminazione di Gauss.
Metodi iterativi : costruiscono una successione di vettori {x k } che converge alla soluzione del sistema. Siccome tale procedimento infinito si impone un criterio di arresto per arrivare alle soluzioni con la
precisione voluta.

3.3

Condizionamento di un sistema lineare

Sia dato un sistema lineare Ax = b con det(A) 6= 0. Introduciamo una


piccola perturbazione sui dati, quindi:
(A + A)(x + x) = b + b

(3.1)

Calcolare lerrore relativo consiste nello stabilire una maggiorazione dei


termini
Dati
Risultati
}|
{ z }| {
z
||b|| ||A||
||x||
,
,
||b||
||A||
||x||

3.3. CONDIZIONAMENTO DI UN SISTEMA LINEARE

35

Lemma 3.13 Sia C Rnn e supponiamo che ||C|| < 1, allora I + C una
matrice non singolare e vale che:
1
1 ||C||

||(I + C)1 ||

D IMOSTRAZIONE:
Supponiamo per assurdo che (I + C) sia singolare. Esiste allora almeno una
soluzione x 6= 0 tale che (I + C)x = 0. Quindi:
Cx = Ix

Cx = (1)x

(3.2)

dove il (1) nella (3.2) un autovalore di C. Ma (C) ||C|| e per ipotesi


||C|| < 1, quindi (C) < 1, ma assurdo. Infatti risulterebbe Cx = x e
Bx = x, segue che 1 un autovalore del sistema lineare e quindi (C)
per lo meno uguale a 1 e quindi 1 < 1 assurdo.
Dunque I + C non singolare.
Abbiamo che
(I + C)1 = I C(I + C)1
Allora, passando alle norme
||(I+C)1 || = ||IC(I+C)1 || ||I|| +||C(I+C)1 || 1+||C||||(I+C)1 ||
|{z}
=1

Da cui

||(I + C)1 || ||C|| ||(I + C)1 || 1


(1 ||C||)(||(I + C)1 ||) 1

che la tesi
2
Tornando al problema del condizionamento, vogliamo mostrare che se A
non singolare e ||A|| < 11 , allora:
||A

||x||
<
||x||

||

(A)
1 (A)

||A||
||A||

||A|| ||b||
+
||A||
||b||

dove (A) il numero di condizionamento, cos definito:


(A) = ||A|| ||A1 ||
Dalla definizione di norma matriciale ottengo uninteressante propriet:
1 = ||I|| = ||AA1 || ||A|| ||A1 || = (A)

CAPITOLO 3. METODI PER LA RISOLUZIONE DI SISTEMI LINEARI

36

quindi la quantit
1 (A)

||A||
= 1 ||A1 || ||A|| < 1
||A||

dalla (3.1)
(A + A)x + Ax + Ax = b + b

ma semplificando (infatti Ax = b)

(A + A)x = b Ax

(moltiplicando perA 1 )

(I + A1 A)x = A1 (b Ax)
quindi, per il lemma (3.13)
||(I + A1 A)1 ||

1
=
1 ||A1 || ||A||

1
1 (A)

||A||
||A||

Da cui
x = (I + A1 A)1 A1 (b Ax)
Ottengo allora
||x||

1
1 (A)

||A||
||A||



||A1 || ||b|| + ||A|| ||x||

Dividendo ambo i membri per ||x|| ottengo lerrore relativo:


||x||
||x||

(Sappiamo che
1
=
||b||

||A1 ||
1 (A)

||A||
||A||

1 (A)

||A||
||A||

(A)


||b||
+ ||A|| = (moltiplico e divido per ||A||)
||x||


||b||
||A||

+
||A|| ||x||
||A||

||b|| = ||Ax|| ||A|| ||x|| , quindi passando ai reciproci


1
1
1

quindi)
||Ax||
||A|| ||x||


(A)
||b|| ||A||
+

||b||
||A||
1 (A) ||A||
|
{z
}
||A||
errori relativi
sui dati

3.3.1 Residuo
Vediamo ora una quantit che ci aiuta nellanalisi del condizionamento del
problema

3.4. METODI DIRETTI

37

Definizione 3.14 Sia dato un sistema lineare del tipo Ax = b. Supponiamo


di avere un approssimazione x
della soluzione x del sistema. Il residuo quindi
la quantit2 :
r = A
xb
Vediamo come esprimere lerrore relativo sui risultati di un sistema lineare
in funzione del residuo. Come abbiamo gi visto
||b|| = ||Ax|| ||A|| ||x||
passando ai reciproci si ha
1
1
1
||A||
1

||b||
||A|| ||x||
||b||
||x||
ma dalla definizione (3.14) si ha che
x
= A1 r + A1 b = A1 r + x
Dunque:
x
x = A1 r

cio

||
x x|| = ||A || ||r||
da cui
||r||
||r||
||
x x||
||A1 || ||A||
= (A)
x =
||x||
||b||
||b||
|{z}
residuo
scalato

3.4

Metodi Diretti

Il primo metodo diretto che comunemente viene proposto quello di Cramer.


Con questo metodo le soluzioni sono calcolate nel seguente modo:
xi =

det(Ai )
det(A)

dove Ai la matrice che si ottiene sostituendo alla colonna i-esima il vettore


dei termini noti. Purtroppo il costo di questo metodo fattoriale e quindi
computazionalmente inapplicabile. Dobbiamo quindi cercare dei metodi alternativi per la risoluzione del sistema.
L idea di base scomporre la matrice dei coefficienti A in un prodotto di
matrici: A = A1 A2 . Quindi il sistema lineare Ax = b viene trasformato in
A1 (A2 x) = b = A1 y = b , A2 x = y
| {z }
y

Come vedremo nel seguito del capitolo il residuo spesso utilizzato come criterio
darresto nei metodi iterativi

38

CAPITOLO 3. METODI PER LA RISOLUZIONE DI SISTEMI LINEARI

In questo modo abbiamo ottenuto due sistemi lineari, la cui risoluzione pu


eventualmente avvenire in modo parallelo.
Vogliamo dimostrare che le matrici A 1 , A2 possono essere ricondotte a matrici triangolari, rispettivamente inferiore e superiore, che chiameremo L ed
U ; questo fatto giustificherebbe la ricerca di una fattorizzazione per la matrice iniziale A, visto che i due sistemi lineari ricavati sarebbero risolvibili
molto pi efficacemente.

3.4.1 Fattorizzazione A = LU
Per convenienza computazionale si considera che la matrice L sia rappresentata con gli elementi della diagonale tutti uguali a 1 (rappresentazione
di Doolittle). Il sistema che dobbiamo risolvere adesso il seguente :

Ly = b
Rx = y
A questo punto potremmo chiederci se la fattorizzazione che cerchiamo esiste sempre: vorremmo stabilire se possibile trovarla in tempo finito, o
addirittura potremmo chiederci se unica o ve ne di sono multiple. La
risposta ci viene fornita dal seguente teorema:
Teorema 3.15 Sia A la matrice dei coefficienti del sistema lineare Ax = b
e sia det(A) 6= 0. Allora A ammette una ed una sola fattorizzazione LU sse
det(Ak ) 6= 0 per ogni k = 1, . . . , n 1.
D IMOSTRAZIONE
() Per induzione su n :
Base n = 1, la fattorizzazione ovvia, immediatamente abbiamo
infatti L = [1] , U = [a11 ]
Ipotesi induttiva La tesi vale per n 1
Passo induttivo Si spezza la matrice A in:

An1

d
T
v

dove con v T si indica lultima riga, mentre con d lultima colonna


(ad eccezione per entrambi di ). Per ipotesi induttiva A n1 ha
una fattorizzazione unica Ln1 Un1 . Quindi suppongo

w
Un1
0
Ln1

L=
U =

T
T
u
1
0

Devo provare che uT , w e sono univocamente determinati. Deve valere che :

3.4. METODI DIRETTI

39

a) Ln1 w = d, ma questo vero poich Ln1 ha determinante


diverso da zero, e quindi le soluzioni del sistema lineare sono
uniche (e cio w).
T u = v, con U T
b) uT Un1 = v T = Un1
n1 che ha determinante
diverso da zero e quindi, anche in questo caso, le soluzioni
sono univocamente determinate (u).
c) uT w + = che conosco in quanto ho il valore di u, w e .
() Sappiamo che:

Ak A12
A21 A22

quindi per ipotesi ! A = LU dunque






0
Lk
Uk U12
L=
U=
L21 L22
0 U22
Visto che A = LU allora vero che det(A) = det(L) det(U ), ma
per costruzione det(L) = 1 quindi det(A) = det(U ). Il precedente
teorema valido anche per le ridotte di entrambe le matrici poich il
det(Lk ) = 1 k.
2
Illustriamo passo per passo come funziona lalgoritmo di fattorizzazione
A = LU , che utilizzando il metodo di eliminazione di Gauss trasforma un
generico sistema lineare in un sistema triangolare equivalente (sempre che
questo sia possibile) in un numero di passi finito.
Indicheremo con A(i) la matrice dei coefficienti del sistema di equazioni
alli-esimo passo.
Inizialmente abbiamo
A(1) = A
Vediamo come passare ad A(2) :
A(2) = L1 A(1)
dove L1 , matrice elementare di Gauss, cos definita
L1 = I g 1 eT1

g1 =

0
a21
a11

..
.

an1
a11

in cui (a11 6= 0)

eT1 = (1, 0, . . . , 0)

infatti eT1 il primo vettore della base canonica, mentre g 1 il vettore di


Gauss al primo passo.

40

CAPITOLO 3. METODI PER LA RISOLUZIONE DI SISTEMI LINEARI

Quindi:

a21

a11

L1 = ...

..
.
aan1
11

0 0
..
.
.
1 ..
. . . . ..
.
. .
0
.. . .
. 1 0
.
0 0 1

L1 A

(1)

(1)

a11

0
=
..
.
0

(1)

a1n

a22
..
.

a2n
..
.

(1)

ann

(1)

an2

(1)

(1)

Segue che, in generale

A(k)

(1)

a11

..
.
=
..
.

..
.
0

(1)

(1)

a1k

a1n

a22
..
.

a2k
..
.

a2n
..
.

(2)

(2)

(2)

0
..
.

akk
..
.

(k)

akn
..
.

(k)

ank

(k)

ann

(k)

Riassumendo:
A(1) = A
A(2) = L1 A(1)
A(3) = L2 L1 A(1)
..
.
A(n) = Ln1 L1 A(1)
dove le matrici Li sono triangolari inferiori invertibili, 1 i n 1. Inoltre
A(n) del tipo
(1)
(1)
a11 a1n

(2)
0 a(2)
a2n
(n)
22

A = .
..
.
.
.
.
.
.
.
.
.
0

(n)

ann

Possiamo anche scrivere che:

1
L1 L1
2 Ln1 U = A
|1
{z
}
L

Vediamo come fatta la matrice L.

T
Teorema 3.16 Per un generico intero k, vale luguaglianza L 1
k = (I + g k ek )

3.4. METODI DIRETTI

41

D IMOSTRAZIONE Per definizione e poich stiamo trattando matrici invertibili


I = Lk L1
k =

= (I g k eTk ) (I + g k eTk ) =

= I g k eTk + g k eTk g k eTk g k eTk = I

infatti il prodotto g k eTk g k eTk = 0 poich y uno scalare, in particolare


| {z }
y

y = 0, dal momento che il k-esimo elemento di g k = 0.


Possiamo allora scrivere che :

L = (I + g 1 eT1 )(I + g 2 eT2 ) . . . (I + g n1 eTn1 )


Consideriamo quindi il primo prodotto:
(I + g 1 eT1 )(I + g 2 eT2 ) = I + g 1 eT1 + g 2 eT2 + g 1 eT1 g 2 eT2
dove lultimo addendo zero (si veda dimostrazione teorema precedente).
Quindi dopo n 1 prodotti abbiamo

.
.
n1

.
X

g k eTk = L =
I+

k=1

1
|
{z
}
parti significative di Gauss

Si ha dunque

A(1) x = b(1)
A(2) x = b(2)
..
.

con b(2) = L1 b
..
.

A(k) x = b(k)
..
.

con b(k) = Lk1 L1 b


..
.

A(n) x = b(n)

con b(n) = Ln1 L1 b

Analizziamo adesso il costo computazionale, ricordando che al k-esimo passo


(1)
(1)
(1)
a11 a1k a1n

0 a(2) a(2) a(2)


2n
22
2k

..
..
..
..

.
.
.
.
(k)

A =
..
(k)
(k)

.
0
a

a
kk
kn

..
..
..
..
.
.
.
.
0

(k)

ank

(k)

ann

CAPITOLO 3. METODI PER LA RISOLUZIONE DI SISTEMI LINEARI

42

Vediamo quanto costa un passo della computazione, infatti A (k+1) = Lk A(k) ,


dove Lk = I g k eTk , cio:

1
..

Lk =

Quindi

A(k+1)

(k+1)

Il calcolo di aij

(k+1)

aij

0
.
..

.
..

(k)
k+1 k
(k)
a
kk

..
.

(k)
a
nk
(k)
a
kk

(1)

a11

.
..

= .
..

.
..

..

(1)

a1k
..
.
..
(k)
. akk
0
..
.

(1)

a1n

(k+1)

ak+1 k+1
..
.
..
.

dato da
(k)

= aij
(k)

= aij

(k)

aik

(k)

akj =

(k)
akk
(k+1)
lik

i, j = k + 1, . . . , n

(k)

akj

Segue che ad ogni passo eseguo 2(n k) 2 operazioni elementari, difatti la


complessit :
n1
X
2(n 1)n(2n 1) 2 3
2
j2 =
= n
6
3
j=1

Questo valore il medesimo anche per la complessit delle altre fattorizzazioni che si basano sul metodo di eliminazione di Gauss, come ad esempio
A = LDLT o P A = LU . Si noti che nellultimo caso il numero di flops da
eseguire ad ogni passo superiore poich deve essere scambiato un numero
di elementi pari a 2(n i).
La fattorizzazione LU sempre possibile per due categorie di matrici:
1. Matrici con diagonale dominante: cio quelle matrici in cui ogni elemento della diagonale maggiore in modulo alla somma dei moduli

3.4. METODI DIRETTI

43

degli elementi della colonna a cui tale elemento appartiene, cio


|aii | >

n
X
j=1

|aji |

con j 6= i i = 1, . . . , n

2. Matrici simmetriche e definite positive, delle quali abbiamo gi mostrato le propriet.


I seguenti teoremi dimostrano rispettivamente le affermazioni precedenti:
Teorema 3.17 Se una matrice A diagonale dominante allora A non singolare
D IMOSTRAZIONE :
Si suppone che A sia singolare per assurdo. Allora esiste un vettore x R n
non nullo tale che Ax = 0. Sia xi la componente di tale vettore di massimo
modulo, cio:
|xi | |xj | j 6= i
Avremo dunque che xi 6= 0.
Consideriamo la i-esima riga:
n
X
j=1

aij xj = 0 aii xi +

aij xj = 0

j6=i

quindi:
aii xi =

X
j6=i

aij xj



X
X

xj

xj X

aij
|aij |
|aii | =
|aij |
xi
xi
j6=i
j6=i
|{z} j6=i
1

ma questo assurdo poich per ipotesi era a diagonale dominante

Teorema 3.18 Sia A una matrice definita positiva, allora A non singolare
D IMOSTRAZIONE: Supponiamo per assurdo che esista un vettore x R n tale
che Ax = 0 (con x non nullo). Pre-moltiplicando per x T ottengo
xT Ax = 0
ma questo assurdo perch per ipotesi A definita positiva.

44

CAPITOLO 3. METODI PER LA RISOLUZIONE DI SISTEMI LINEARI


Listing 3.4: Metodo di triangolarizzazione di Gauss





[A] = gauss(A)

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

% GAUSS Triangolarizza la matrice A.


%
[A] = gauss(A) restituisce la matrice A triangolarizzata
%
con lalgoritmo di Gauss.
%
%
La matrice A deve essere quadrata.
%
%
Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti
%
Mon Jun 21 11:28:36 CEST 2004
[n,m]=    (A);
% controllo se la matrice e quadrata
 n==m
  j=1:n
A(j,j)==0
    (La matrice non e fattorizzabile con Gauss);

 

18

% eliminazione di Gauss
  i=j+1:n
A(i,j:n)= A(i,j:n)A(j,j:n)A(i,j)/A(j,j);

19
20
21
22
23
24
25
26
27

 
 



 

 

   (La matrice di input non e quadrata);




Esempi di gauss.m da pag. 150





Listing 3.5: Risolvi sistema con fattorizzazione A = LU


[x,A] = risolvi_ALU(A,b)

2
3
4
5
6
7
8
9
10
11
12
13
14
15

% RISOLVI_ALU Risolve Ax=b tramite fattorizzazione LU.


%
[x,A] = risolvi_ALU(A,b) restituisce in x le soluzioni
%
del sistema Ax=b, risolvendolo tramite fattorizzazione
%
LU.
%
%
Restituisce inoltre la matrice A
%
modificata, in modo che nella parte triangolare inferiore
%
sia presente la matrice triangolare inferiore L in forma di
%
Doolittle ed in quella superiore si presente una matrice
%
triangolare superiore U.
%
%
La matrice A fornita in input deve essere quadrata
%
e il vettore colonna b deve avere la stessa dimensione

3.4. METODI DIRETTI


16
17
18
19
20
21
22
23
24
25
26

%
%
%
%

di riga di A.
Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti
Mon Jun 21 11:28:36 CEST 2004

[n,m]=  (A);


% controllo se la matrice e quadrata
 n==m
  j=1:n
 A(j,j)==0
   (La matrice non e fattorizzabile con Gauss);



27

% memorizzo nella parte triangolare inferiore di A


% le parti significative di Gauss
A(j+1:n,j)=A(j+1:n,j)./A(j,j);
% eliminazione di Gauss
  i=j+1:n
A(i,j+1:n)= A(i,j+1:n)A(i,j)A(j,j+1:n);
b(i)=b(i)b(j)A(i,j);

28
29
30
31
32
33
34
35



36



37

x=risolvi_triangolare_superiore(A,b);

38
39
40
41

45

 
 


   

   (La matrice di input non e quadrata);




Esempi di risolvi_ALU.m da pag. 153

3.4.2 Fattorizzazione LDLT


Visto che le matrici simmetriche definite positive 3 hanno caratteristiche peculiari, risulta opportuno studiare una fattorizzazione particolarmente vantaggiosa. Partendo dalle considerazioni fatte per la fattorizzazione LU , dimostriamo che possibile trovare una scomposizione pi conveniente che
oltretutto risulta essere unica.
Teorema 3.19 Sia A una matrice simmetrica definita positiva, allora esiste ed
unica la fattorizzazione A = LU , in particolare della forma A = LDL T .
D IMOSTRAZIONE: AT = U T LT , inoltre siccome A simmetrica allora LU = U T LT .

Si noti che la matrice U pu essere scomposta in U = D U


3

Per abbreviazione, a volte, si chiameranno s.d.p.

CAPITOLO 3. METODI PER LA RISOLUZIONE DI SISTEMI LINEARI

46

del tipo
con D = diag (u11 , u22 , . . . , unn ) e U
{z
}
|
uii 6=0

Allora abbiamo4

=
U

u12
u11

1
..
.

u13
u11
u23
u22

..

..

...
...
..
.
..
.

u1n
u11
u2n
u22

..
.

un1 n
un1 n1

A = LU = LD U
ma sfruttando la natura simmetrica di A possiamo scrivere
)T = U
T D T LT = U
T DLT
A = AT = (LD U
T una matrice triangolare inferiore, mentre DL T triangolare
dove U
superiore. Quindi,
=U
T DLT
A = LD U
ma per il teorema (3.15) di unicit della fattorizzazione, si ha necessariamente
T
= DLT U
= LT
L=U
,
DU
T DLT si ottiene
Sostituendo infine questa ultima uguaglianza in A = U
A = LDLT
2
Riassumendo: la fattorizzazione LU unica se A non singolare; in pi
se A simmetrica definita positiva allora questa fattorizzazione pu essere
vista come A = LDLT .

Listing 3.6: Risolvi sistema con fattorizzazione A = LDL T




 [v]=risolvi_LDLT(A,b)

2
3
4
5
6
7
8
9
10
11

% RISOLVI_LDLT Risolve il sistema fattorizzando A=LDL^T


%
[x] = risolvi_LDLT(A,b) restituisce le soluzioni del
%
sistema Ax=b utilizzando la fattorizzazione A=LDL^T.
%
%
A deve essere una matrice quadrata e b un vettore con
%
numero di righe pari a quello di A.
%
%
Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti
%
Fri Jun 18 15:49:43 CEST 2004
4

Nota bene : L ed U non sono quelle calcolate in precedenza, bens indicano la generica
fattorizzazione del tipo A = LU

3.4. METODI DIRETTI


12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

[n,m]=  (A);


% controllo che A sia quadrata
 (n==m)
% definisco la diagonale di D
d=   (n,1);
% v_j contiene il prodotto della jesima riga di L
% per la diagonale
v=   (n,1);
  j=1:n
% coefficiente della colonna
% somma parziale di l_jk v_k^j
som=0;
  k=1:j1
v(k)=d(k).A(j,k); % si definisce il vettore v^j
som=som+A(j,k).v(k);



27

% calcolo gli elementi della matrice diagonale


d(j)=A(j,j)som;
 d(j)==0
   (Matrice non fattorizzabile LDL^T)

28
29
30
31

 

32
33

 

34
35
36

38
39
40



41
42
43



44

46
47

50
51



% elemento l_ij della triangolare inferiore


A(i,j)=(A(i,j)som2)./d(j);

% preparo la matrice in forma di Doolittle


A(j,j)=1;

v=risolvi_triangolare_inferiore(A,b);
v=v./d;
v=risolvi_triangolare_superiore(A,v);

45

49

i=j+1:n % i = coefficiente della riga


som2=0; % seconda somma parziale
  k=1:j1
som2=som2+A(i,k).v(k);

 

37

48

 
 


   

   (La matrice A non e quadrata);




Esempi di risolvi_LDLT.m da pag. 157


1

Listing 3.7: Fattorizzazione A = LDL T


 
 

[v]=risolvi_LDLT(A,b)

2
3
4

47

% RISOLVI_LDLT Risolve il sistema fattorizzando A=LDL^T


%
[x] = risolvi_LDLT(A,b) restituisce le soluzioni del

CAPITOLO 3. METODI PER LA RISOLUZIONE DI SISTEMI LINEARI

48
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

%
%
%
%
%
%
%

sistema Ax=b utilizzando la fattorizzazione A=LDL^T.


A deve essere una matrice quadrata e b un vettore con
numero di righe pari a quello di A.
Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti
Fri Jun 18 15:49:43 CEST 2004

[n,m]=    (A);
% controllo che A sia quadrata
 (n==m)
% definisco la diagonale di D
d=   (n,1);
% v_j contiene il prodotto della jesima riga di L
% per la diagonale
v=   (n,1);
  j=1:n
% coefficiente della colonna
% somma parziale di l_jk v_k^j
som=0;
  k=1:j1
v(k)=d(k).A(j,k); % si definisce il vettore v^j
som=som+A(j,k).v(k);

 

27

% calcolo gli elementi della matrice diagonale


d(j)=A(j,j)som;
d(j)==0
    (Matrice non fattorizzabile LDL^T)

28
29
30
31

 

32
33

 

34
35
36



37
38
39
40

 

41
42
43

 

44

46
47

49
50
51

 

% elemento l_ij della triangolare inferiore


A(i,j)=(A(i,j)som2)./d(j);

% preparo la matrice in forma di Doolittle


A(j,j)=1;

v=risolvi_triangolare_inferiore(A,b);
v=v./d;
v=risolvi_triangolare_superiore(A,v);

45

48

i=j+1:n % i = coefficiente della riga


som2=0; % seconda somma parziale
  k=1:j1
som2=som2+A(i,k).v(k);

 
 


   

   (La matrice A non e quadrata);




3.4. METODI DIRETTI

49

3.4.3 Fattorizzazione P A = LU
Il metodo di fattorizzazione A = LU che abbiamo visto in precedenza, seppure decisamente valido, ha un preciso limite al quale non pu ovviare: si
(k)
arresta non appena trova un elemento a kk uguale a zero, cio quando la
matrice ha un minore principale nullo. Ci proponiamo di esaminare in dettaglio un metodo che possa essere applicato con successo ad una matrice
generica: la tecnica del pivoting parziale. Sia A una matrice non singolare,
vediamo passo per passo come funziona lalgoritmo.
Alla prima iterazione si ha
A(1) = A
(1)

(1)

(1)

supponiamo che a11 = 0. Allora j : |aj1 | |ak1 | k = 1, . . . , n. Si noti


che la scelta dellelemento pivot di massimo modulo utile per la stabilit
(1)
dellalgoritmo e inoltre esiste almeno un |a j1 |, altrimenti det(A) sarebbe
uguale a zero.
Scambiamo la prima riga con la j-esima e continuiamo la fattorizzazione
A(2) = L1 P1 A(1)
dove P1 una matrice di permutazione, mentre L 1 la matrice di Gauss al
primo passo, cio

(1)
(1)
1n
a
11 a

(2)
0 a(2)
a2n
22
(2)

A = .
..
..
..
.
.
.
.
.
(2)

an2

(2)

ann
(2)

Anche in questa circostanza potrebbe essere a 22 = 0, ma in tal caso possi(2)


(2)
amo riapplicare il metodo precedente, poich j = 2, . . . , n : |a j2 | |ak2 |
con k = 2, . . . , n. Quindi
A(3) = L2 P2 A(2) = L2 P2 L1 P1 A(1) = L2 P2 L1 P1 A
| {z }
A(2)

cio

A(3)

(1)

11
0

= 0
.
.
.
0

In generale avremo che

(2)
a
22

0
..
.

a33
..
.

an3

(3)

(3)

(1)
a
1n
(2)
a
2n

(3)
a3n
..
..

.
.
(3)
ann

U = A(n) = Ln1 Pn1 Ln2 Pn2 . . . L1 P1 A

CAPITOLO 3. METODI PER LA RISOLUZIONE DI SISTEMI LINEARI

50

Scriviamo adesso la matrice U in maniera pi conveniente, moltiplicando


matrici identit:
I

z
}|
{
Ln1 Pn1 Ln2 (Pn1 Pn1 )Pn2 Ln3 (Pn2 Pn1 Pn1 Pn2 )Pn3 . . .
| {z }
| {z }
I

. . . L1 (P2 P3 . . . Pn1 Pn1 . . . P3 P2 )P1 A

Manteniamo lequivalenza riscrivendo lultima uguaglianza sotto la nuova


forma:
U

Ln1 (Pn1 Ln2 Pn1 )(Pn1 Pn2 Ln3 Pn2 Pn1 ) . . .


{z
} |
{z
}
| {z } |
n1
L

n2
L

n3
L

. . . (Pn1 Pn2 Pn3 . . . P2 L1 P2 . . . Pn1 ) Pn1 . . . P1 A


{z
} | {z }
|
1
L

n1 L
n2 . . . L
1 P A.
Quindi possiamo scrivere U = L
Dobbiamo mostrare che le matrici Li sono ancora triangolari inferiori in forma di Doolittle, infatti sono calcolate pre-moltiplicando e post-moltiplicando
le Li per le stesse matrici di permutazione:
Li = Pn1 . . . Pi+1 Li Pi+1 . . . Pn1 =
(si ricordi che Li = I g i eTi , e dunque sostituendo scriviamo)
= Pn1 . . . Pi+1 (I g i eTi )Pi+1 . . . Pn1 =
= I (Pn1 . . . Pi+1 gi eTi Pi+1 . . . Pn1 )
|
{z
}|
{z
}
gi

eT
i

Segue che in realt facciamo il prodotto delli-esimo vettore di Gauss permutato per il vettore canonico permutato. Infine
Li = I gi eTi
Da cui

1 P A
U =L
L
...L
| n1 n2
{z
}
L1

dove

L1 = I

n1
X

gi eTi

i=1

ma, per il teorema (3.16) possiamo dedurre che


L=I+

n1
X
i=1

gi eTi

3.4. METODI DIRETTI

51

Quindi P A = LU .
Segue che, pre-moltiplicando una matrice di permutazione ad una non
singolare, ottengo ancora una fattorizzazione LU .
4 Esempio 3.20 Consideriamo il sistema
[A|b] =

104 1 1
1
1 2

x=

"

10000
9999
9998
9999

dove x sono le soluzioni esatte


Risolviamo con unapprossimazione di macchina con = 10 e t = 3.
Abbiamo che:
h
i  0, 1 3 0, 1 1 0, 1 1 
(1) (1)
A |b
=
0, 1 1 0, 1 1 0, 2 1
Otteniamo dunque
m2 = f l

0, 1 1
0, 1 3

= 0, 1 5

dove, m2 il moltiplicatore di Gauss al secondo passo 5 quindi


(2)

a
22

= f l(0, 1 1 f l(0, 1 5 0, 1 1 )) = f l(0, 1 1 0, 1 5 ) =


= f l(0, 9999 4 ) = 0, 1 5

b(2) = f l(0, 2 1 f l(0, 1 5 0, 1 1 )) = f l(0, 2 1 0, 1 5 ) =


2
= f l(0, 9998 4 ) = 0, 1 5

Da cui:



i  0, 1 3 0, 1 1
0, 1 1

A(2) b(2) =
0
0, 1 5 0, 1 5

Le soluzioni sono dunque

x
2 = f l

0, 1 5
0, 1 5

= 0, 1 1

x
1 = f l(f l(0, 1 1 f l(0, 1 1 x
2 ))/0, 1 3 ) =
= f l(f l(0, 1 1 0, 1 1 )/0, 1 3 ) = 0

Si noti come in questa circostanza lerrore relativo sia molto alto,


x
=1
5

In generale, alli-esimo passo risulta: mi =

ai+1 i
aii

CAPITOLO 3. METODI PER LA RISOLUZIONE DI SISTEMI LINEARI

52

Vediamo adesso il calcolo dello stesso sistema lineare con la tecnica del
pivoting parziale:

i  0, 1 1 0, 1 1 0, 2 1 
h
(1) (1)
=
P1 A b
0, 1 3 0, 1 1 0, 1 1
Calcoliamo il nuovo moltiplicatore


0, 1 3
(1)
m
2 = fl
= 0, 1 3
0, 1 1
Quindi
(2)

a
22

= f l(0, 1 1 f l(0, 1 3 0, 1 1 )) = f l(0, 1 1 0, 1 3 ) =


= f l(0, 9999 0 ) = 0, 1 1

b(2) = f l(0, 1 1 f l(0, 1 3 0, 2 1 )) = f l(0, 1 1 0, 2 3 ) =


2
= f l(0, 9998 0 ) = 0, 1 1

Il sistema diventa:
h


i  0, 1 1 0, 1 1 0, 1 1 

A(2) b(2) =
0
0, 1 1 0, 1 1

e quindi le soluzioni sono

x
2 = 1 = 0, 1 1
x
1 = f l(f l(0, 2 1 f l(0, 1 1 x
2 ))/0, 1 1 ) =

= f l(f l(0, 2 1 0, 1 1 )/0, 1 1 ) = 0, 1 1

Listing 3.8: Risolvi sistema con fattorizzazione P A = LU




 [x,p,A] = risolvi_PALU(A,b)

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

% RISOLVI_PALU Fattorizzazione PA=LU.


%
[x,p,A] = risolvi_PALU(A,b) restituisce le soluzioni
%
del sistema Ax=b utilizzando la fattorizzazione PA=LU.
%
Restituisce inoltre la matrice A
%
modificata, in modo che nella parte triangolare inferiore
%
sia presente la matrice triangolare inferiore L in forma di
%
Doolittle ed in quella superiore si presente una matrice
%
triangolare superiore U.
%
Infine nel vettore p si memorizzano gli scambi delle
%
righe effettuati.
%
%
La matrice A fornita in input deve essere quadrata
%
e il vettore colonna b deve avere la stessa dimensione
%
di riga di A.

3.4. METODI DIRETTI


17
18
19
20
21
22
23
24
25
26
27
28
29

%
%
%

Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti


Wen Jun 30 09:55:10 CEST 2004

[n,m]=  (A);


p=1:n;
% controllo se la matrice e quadrata
 n==m
  k=1:n1
% metto in m il valore dellelemento massimo e
% in i il suo indice, partendo dallelemento k
% della colonna fino allelemento n della stessa
% in i ho lindice della riga da scambiare

30

[m,i]=  ( 
(A(k:n,k)));
 (m==0)
   (matrice non fattorizzabile!);

31
32
33



34

% normalizzo la posizione dellelemento massimo


i=k1+i;
% eseguo lo scambio delle righe e
% dei termini dei vettori
w=A(k,:);
A(k,:)=A(i,:);
A(i,:)=w;
u=b(k);
b(k)=b(i);
b(i)=u;
u=p(k);
p(k)=p(i);
p(i)=u;
% Aggiorno la matrice con gli elementi corretti:
% negli elementi sotto la diagonale memorizzo la
% matrice parziale L, poi faccio un passo
% delleliminazione di Gauss
A(k+1:n,k)=A(k+1:n,k)./A(k,k);
  j=k+1:n
A(j,k+1:n)=A(j,k+1:n)A(j,k).A(k,k+1:n);
b(j)=b(j)A(j,k).b(k);

35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56



57

60
61
62



x=risolvi_triangolare_superiore(A,b);

58
59

53

 
 


   

   (La matrice di input non e quadrata);




Esempi di risolvi_PALU.m da pag. 156

54

CAPITOLO 3. METODI PER LA RISOLUZIONE DI SISTEMI LINEARI

3.4.4 Fattorizzazione A = QR
Introduciamo adesso un nuovo tipo di fattorizzazione che risulta essere pi
stabile, ma che esegue un numero di operazioni superiore rispetto allLU :
cerchiamo una scomposizione della matrice di partenza nel prodotto fra
una matrice ortogonale Q ed una triangolare superiore R. Questo metodo di fattorizzazione trova riscontro in molte applicazioni quali ad esempio
la ricerca di autovalori o nellalgoritmo dei minimi quadrati. La decomposizione A = QR pu essere ottenuta con differenti tecniche: noi esamineremo le proposte di Householder e Givens. Prima di entrare nei dettagli
implementativi introduciamo alcune definizioni.
Matrici elementari
Definizione 3.21 Una matrice H si dice elementare se definibile attraverso
uno scalare e due vettori u, v Rn , in particolare
H(, u, v) = I uv T

dove uv T una matrice Rnn di rango 1


Enunciamo adesso alcune propriet algebriche interessanti
Date H(, u, v) e H(, u, v), il loro prodotto ancora una matrice
elementare
H(, u, v) H(, u, v) = H(, u, v)
dove = + (v T u)
Infatti

H(, u, v) H(, u, v) = (I uv T )(I uv T ) =

= I ( + )uv t + u (v T u) v T =
| {z }
T

scalare
T

= I ( + v u) uv = H(, u, v)
|
{z
}

Se dovesse risultare 0, per un opportuno ottengo lidentit, cio


H(, u, v) linversa di H(, u, v). Mostriamo come ricavare lopportuno :
+ (v T u) = 0

(1 v T u) =
=

dove 6=

1
,
vT u

v T u

(3.3)

visto che se non lo fosse H(, u, v) sarebbe singolare.

Un caso particolare di matrici elementari sono le matrici di Gauss, che


abbiamo gi visto essere della forma I g i eTi = H(1, g i , ei )

3.4. METODI DIRETTI

55

Matrici di Householder
Le matrici di Householder sono matrici elementari del tipo
H(2, u, u) = I 2uuT
dove u Rn un vettore unitario6 . Data la loro struttura hanno le caratteristiche di essere matrici ortogonali e simmetriche, infatti
(I 2uuT )(I 2uuT ) = I 4uuT + 4u (uT u) uT = I
| {z }
(||u||2 )2 =1

Sono dette anche matrici di riflessione in quanto se applicate ad un vettore


x Rn restituiscono un vettore w Rn tale che le sue componenti sono
in modulo le stesse di x, ma quella ortogonale al vettore u T cambiata di
segno: rappresentano cio la simmetria rispetto alliperpiano che passa per
lorigine ed ortogonale al vettore u (vedi figura 3.1).
Vogliamo adesso dimostrare che dato un vettore x R n possibile deter-

uT

w
x

Figura 3.1: Rotazione vettori con matrici di Householder


minare un vettore unitario u tale che
H(u)x = w, w span{e1 }

(3.4)

dove con span{v1 , . . . , vn } si indica linsieme di tutte le possibili combinazioni lineari dei vi . Nel nostro caso vediamo che il vettore risultante dal
prodotto un vettore che ha tutte le componenti nulle ad eccezione della
prima.
Il vettore unitario u pu essere riscritto come il rapporto fra un generico
6

Con unitario si intende che ||u||2 = 1

56

CAPITOLO 3. METODI PER LA RISOLUZIONE DI SISTEMI LINEARI

vettore v Rn (v 6= 0) e la sua norma ||v||2 . Quindi possiamo riscrivere la


matrice di Householder come
I 2uuT = I 2

v
vT
vv T

=I 2 T
||v||2 ||v||2
v v

Mostriamo, dalla (3.4), come fare per calcolare w:


k

w=

I 2


T

vv
vT v

z }| {

vT x
x =x2
v
vT v

Visto che vogliamo v span{e1 , x}, lo esprimiamo come v = x + e1 .


Calcoliamoci quindi il valore dello scalare :
v T x = xT x + eT1 x = xT x + x1
v T v = xT x + 2 eT1 e1 +2xT e1 = xT x + 2 + 2x1
|{z}
=1

dove con x1 si considera la prima componente del vettore x.


Sostituendo questi valori nellespressione di k definita in precedenza otteniamo che
 T 
v x
xT x + x1
(3.5)
k=
=
vT v
xT x + 2 + 2x1
Quindi w = x 2kv; ma la natura di w tale che abbia tutte le componenti nulle eccetto la prima, di conseguenza consideriamo ora la generica
componente i-esima:
wi = xi 2kvi

i = 2, . . . , n

ma essendo vi = xi + (e1 )i , se andiamo a sostituire otteniamo che


wi = xi 2k(xi + e1 ) = xi 2kxi + (2ke1 )i
= xi 2kxi = xi (1 2k)

poich il fattore (2ke1 )i zero visto che stiamo considerando le componenti dalla seconda alla n-esima.
Affinch queste componenti si annullino, vediamo che devessere k = 12 .
Quindi, utilizzando la formula (3.5) e il valore di k appena trovato, procediamo con il calcolo di :
1
2

xT x + x1
=
xT x + 2 + 2x1
= 2xT x + 2x1 = xT x + 2 + 2x1 =

2 = x T x

= ||x||2

3.4. METODI DIRETTI

57

Notiamo che il vettore v definito a meno di una costante moltiplicativa c,


infatti
cv cv T
vv T
H(u) = I 2 T = I 2 T
v v
cv cv

In questo modo possiamo costruire v tale che la sua prima componente sia
uno, quindi per ottenere questo poniamo c = v11 = x11+ . La componente
i-esima di v sar quindi data da
vi =

xi + (e1 )i
x1 +

Metodo di Householder
Vediamo ora in dettaglio le operazioni che portano alla trasformazione di
una matrice A Rnn in una matrice triangolare superiore.
Alla prima iterazione A(0) = A, mentre il passo successivo dato da A (1) = Q1 A(0) ,
cio

(1)
(1)
1 a12 a1n

..
(1)
0
.
a22
(1)

A = .
..
..
..
.
.
(1)
(1)
0
an2 ann
v vT

dove Q1 = In 2 v1T v1 con v1 indichiamo il vettore di Householder associato


1

alla prima colonna della matrice A(0) .


Alla successiva iterazione otterremo A (2) = Q2 A(1) , che definendo la matrice
Q2 come matrice ortogonale a blocchi, risulta

Q2 =

1 0

0
..
2
Q
.
(n1)(n1)
0

2 = In1 2 v2Tv2 , con v2 vettore di Householder associato alla


dove Q
v v
2

seconda colonna della matrice A(1) . Cos

A(2)

1
0
..
.
..
.
0

(1)

a12

(2)

(1)

a1n

(2)

2 a23 a2n
..
..
0
.
.
..
..
..
.
.
.
(2)
(2)
0
an3 ann

58

CAPITOLO 3. METODI PER LA RISOLUZIONE DI SISTEMI LINEARI

In generale avremo che


" (i1)
#
(i1)
A
A
12
11
A(i1) =
(i1)
0A
A22

Qi =

"

Ii1
0

Qi

dove le dimensioni delle matrici sopra sono espresse nella tabella 3.1.
Nome
A11
A12
A22
0A
Ii1
i
Q

Dimensione
(i 1) (i 1)
(i 1) (i 1)
(n i + 1) (n i + 1)
(n i + 1) (i 1)
(i 1) (i 1)
(n i + 1) (n i + 1)

Tipo
Triangolare superiore
Quadrata
Quadrata
Rettangolare
Diagonale
Quadrata

Tabella 3.1: Tabella dimensioni matrici


Si noti che

T
i = Ini+1 2 vi vi
Q
viT vi

vi Rni+1

Al successivo passo della computazione infine abbiamo:

A(i)

(i1)

(i1)

A12

A11

(i)

ai i+1

0
..
.

ai+1 i+1
..
.

an i+1

(i)

(i)

(i)

ain
..

.
..
.
(i)
ann

Il costo computazionale di questo metodo proporzionale a O(n 3 ) poich si


eseguono n1 flops per preparare un vettore di Householder, ma comunque
n operazioni mat-vec per trovare la fattorizzazione voluta.

Listing 3.9: Risolvi sistema con fattorizzazione di Householder




 [x]=risolvi_householder(A,b)

2
3
4
5
6
7
8
9
10
11

% RISOLVI_HOUSEHOLDER Risolve il sistema con il metodo di


%
householder.
%
[x] = risolvi_householder(A,b) risolve il sistema lineare
%
Ax=b tramite la fattorizzazione di Householder.
%
%
A non deve essere necessariamente una matrice quadrata
%
mentre b deve essere un vettore con
%
numero di righe pari a quello di A.
%

3.4. METODI DIRETTI


12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

%
%

59

Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti


Fri Jul 2 15:49:58 CEST 2004

[n,m]=  (A);


% si controlla la reale possibilita della soluzione del sistema
      (b)==n
c=  (m,n);
[A,b]=fatt_householder(A,b);
% la risoluzione finale usa solo la parte quadrata per poter
% chiamare la funzione risolvi_triangolare_superiore che
% accetta solo matrici quadrate
x=risolvi_triangolare_superiore(A(1:c,1:c),b);

 

   (Il sistema lineare non e risolvibile);



  



1

Listing 3.10: Fattorizzazione di Householder


 
 

[A,b]=fatt_householder(A,b)

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

% FATT_HOUSEHOLDER fattorizzazione di householder


%
Restituisce la matrice A e il vettore
%
b modificati
%
%
La matrice A pu anche non essere quadrata
%
%
Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti
%
Mon Jun 28 13:45:52 CEST 2004
[n, m]=   (A);
  i=1:(  (n,m)1)
% calcolo il vettore di householder
v=house(A(i:n,i));
den = 2./((v)(v));
% si procede moltiplicando il vettore per tutta la
% sottomatrice
A(i:n,i:m) = A(i:n,i:m) (v (v . den A(i:n,i:m)));
% aggiornamento del vettore b
b(i:n) = b(i:n) v (v . den b(i:n));


  



1

Listing 3.11: Creazione vettore di Householder


 
 

v=house(x)

2
3
4
5
6
7

% HOUSE Crea il vettore di Householder.


%
[v]=house(x) restituisce il vettore riga di
%
Householder relativo al vettore x.
%
%
Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti

CAPITOLO 3. METODI PER LA RISOLUZIONE DI SISTEMI LINEARI

60
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

Fri Jun 25 11:46:11 CEST 2004

n=      (x);
alpha=   (x(1)). 
 (x);
% v=zeros(n,1);
% controllo se il vettore e nullo
 (alpha~=0)
% alpha ha lo stesso segno di x(1)

   =x(1)+alpha;
v(1)=1;

v(2:n)=(x(2:n))./    ;

 

v=  


 


(1,n);

Esempi di risolvi_householder da pag. 159

Metodo di Givens
Un metodo analogo al precedente, ma pi indicato per la fattorizzazione di
matrici sparse il metodo di Givens. In questo caso si utilizzano matrici di
rotazione bidimensionali , nello specifico:


cos sin
sin cos
Questa matrice chiamata appunto matrice di rotazione di Givens e, come
vediamo, ortogonale non simmetrica. Viene utilizzata nellalgoritmo per
annullare lultimo elemento di un vettore x R 2 . Cio ad esempio:



 
cos sin
x1
?

sin cos
x2
0
Per ottenere che x2 = 0 deve succedere che sin x1 + cos x2 = 0 e di
conseguenza deduciamo che:
se x2 = 0 allora sin = 0 e quindi cos = 1
se x2 6= 0 allora cos x2 = sin x1 cio
x1
cos
=
sin
x2

Sia b =

x1
x2

ma

cos
= cot
sin

e che |x1 | < |x2 |, segue che


1
sin =
1 + b2

quindi

cos = sin b

3.4. METODI DIRETTI

61
y

y1

x
y1
x1
x1

Figura 3.2: Rotazione assi con matrici di Givens


Nelle considerazioni precedenti abbiamo supposto che |x 1 | < |x2 |, ma se
non fossimo in queste ipotesi? Vediamo quindi se |x 1 | > |x2 |:
sin
x2
=
cos
x1
Sia ora b =

x2
x1 ,

ma

sin
= tan
cos

allora risulta
1
cos =
1 + b2

quindi

sin = cos b

Definiamo infine la generica matrice ortogonale di Givens per la fattorizzazione A = QR:

..

i
cos

sin

..
Qij =

j
sin
cos

..

i
j
1

infatti una matrice identit con quattro elementi modificati nel modo illustrato.

62

CAPITOLO 3. METODI PER LA RISOLUZIONE DI SISTEMI LINEARI

In particolare al generico passo i si sfrutter la matrice di rotazione Q i1 i la


cui struttura :

..

i1

cos

sin

Qi1 i =
i

sin cos

..

.
1

quindi volendo annullare lelemento a ik della matrice A si pre-moltiplica


tale matrice per la matrice di rotazione: Q i1 i A.
In questo modo otteniamo la matrice precedente con le (i 1)-esima e iesima righe modificate:
a
i1,j
a
i,j

= cos ai1,j + sin ai,j

= sin ai1,j + cos ai,j

j = 1, . . . , n

j = 1, . . . , n

Dobbiamo quindi scegliere i valori di sin e cos affinch a ik = 0, quindi in


notazione vettoriale il sistema precedente diventa

 


a
i1,j
cos sin
ai1,j
=
a
i,j
sin cos
ai,j
L obiettivo dellalgoritmo quindi di trasformare la matrice iniziale in una
triangolare superiore annullando un singolo elemento ad ogni iterazione. Il
primo elemento che viene azzerato a n,1 , al secondo passo invece si opera su an1,1 e via di seguito per tutti gli elementi della prima colonna ad
eccezione del primo di questa. Di conseguenza si opera sulla seconda colonna, sempre dalln-esimo
fino al terzo. Notiamo che A (0) = A,

elemento
n(n1)

2
= R. Infatti i passi dellalgoritmo sono
A(1) = Qn1 n A(0) , . . . , A
esattamente il numero di elementi da annullare e cio appunto il numero
.
di elementi della matrice triangolare inferiore (eccetto la diagonale): n(n1)
2
3
In definitiva il costo computazionale proporzionale a O(n ), infatti si eseguono circa 2n3 flops.

Listing 3.12: Risolvi sistema con fattorizzazione di Givens




 [x] = risolvi_Givens(A,b)

2
3
4
5

% RISOLVI_GIVENS Risolve il sistema con il metodo di Givens


%
[x] = risolvi_Givens(A,b) risolve il sistema lineare
%
Ax=b tramite la fattorizzazione di Givens.

3.4. METODI DIRETTI


6
7
8
9
10
11

%
%
%
%
%
%

63

A deve essere una matrice quadrata e b un vettore con


numero di righe pari a quello di A.
Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti
Fri Jun 18 15:49:58 CEST 2004

12
13
14
15

[A,b]=fatt_Givens(A,b);
x=risolvi_triangolare_superiore(A,b);

  





1

Listing 3.13: Fattorizzazione di Givens


 
 

[A,b] = fatt_Givens(A,b)

2
3
4
5
6
7
8
9

% FATT_GIVENS fattorizzazione QR della matrice A


%
con rotazioni di Givens
%
[A,b] = fatt_Givens(A,b)
restituuisce
%
la matrice e il vettore originari modificati
%
%
Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti
%
Wen Jun 23 19:45:17 CEST 2004

10
11
12
13
14
15
16
17
18
19

[n,n] =   (A);


  j=1:n
  i=n:1:j+1
% azzera A(i,j) e modifica opportunamente anche b
 A(i,j)~=0
[c,s]=givens(A(i1,j),A(i,j));
[A(i1:i,j:n),b(i1:i)]=ruota_riga(A(i1:i,j:n),...
b(i1:i),c,s);

20
21
22





1





Listing 3.14: Calcolo della matrice di rotazione di Givens


 
 

[c,s]=givens(x1,x2)

2
3
4
5
6
7
8
9
10
11
12
13
14

% GIVENS Calcola la matrice di rotazione di Givens


%
[c,s]=givens(x1,x2) restiuisce i valori di coseno
%
e seno della matrice di Givens relativa a x1, x2
%
%
Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti
%
Fri Jun 25 14:13:10 CEST 2004

x2 == 0
c=1; s=0;

 

 

(x2)> 
(x1)
r=x1./x2; s=1./   (1+r.^2); c=s.r;

CAPITOLO 3. METODI PER LA RISOLUZIONE DI SISTEMI LINEARI

64
15
16
17
18
19
20

 

r=x2./x1; c=1./   (1+r.^2); s=c.r;

 


 


Listing 3.15: Scambio degli elementi secondo la matrice di Givens




 [A,b]=ruota_riga(A,b,c,s)

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

% RUOTA_RIGA Rotazione matrice con Givens


%
[A,b]=ruota_riga(A,b,c,s) restituisce la matrice
%
A e il vettore b ruotati tramite la
%
premoltiplicazione per una
%
matrice di Givens con parametri c e s.
%
%
Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti
%
Fri Jun 23 14:56:16 CEST 2004
[n,q]=    (A);
  j=1:q
r1=A(1,j); r2=A(2,j);
A(1,j)=cr1+sr2;
A(2,j)=sr1+cr2;



r1=b(1);
r2=b(2);
b(1)=cr1+sr2;
b(2)=sr1+cr2;

 


Esempi di risolvi_givens.m da pag. 162

3.5

Metodi iterativi

Abbiamo finora esaminato metodi diretti per la risoluzione di sistemi lineari, cio metodi che a meno di unapprossimazione di macchina, calcolano
in un numero finito di passi le soluzioni esatte del sistema. Introduciamo
ora invece i metodi iterativi, che generano a partire da una stima iniziale
assegnata una successione {xk } di approssimazioni tale che
lim xk = x

con x
soluzioni del sistema.
In tali metodi non si modifica la matrice dei coefficienti iniziale e dato

3.5. METODI ITERATIVI

65

xk la generazione di xk+1 richiede il calcolo di poche operazioni del tipo


(mat-vec)
A v, v Rn

il cui costo computazionale nellordine di O(n 2 ).


I campi dapplicazione nei quali questi metodi trovano maggiore utilizzo
sono quei sistemi lineari sparsi7 di grandi dimensioni, poich:
I fattori derivanti dalla scomposizione di una matrice sparsa difficilmente sono sparsi.
Il costo computazionale per la fattorizzazione nellordine di O(n 3 ).

3.5.1 Metodo di Jacobi


Dato un sistema lineare
Ax = b
in questo caso consideriamo A del tipo

quindi risolviamo

A = DLU =

(D L U )x = b


D
L

U


Dx = (L + U )x + b

(3.6)

Nei metodi iterativi questultima equazione diventa


Dx(k+1) = (L + U )x(k) + b

k = 0, 1, . . .

dove x(0) lapprossimazione iniziale assegnata.


5 Osservazione 3.23
Possiamo scrivere lequazione (3.6) come
x(k+1) = D 1 (L + U )x(k) + D 1 b

(3.7)

e quindi come condizione necessaria abbiamo a ii 6= 0 per ogni i


Se {xk } convergente allora xk converge a x

Il calcolo di x(k+1) , conoscendo x(k) , richiede unoperazione di tipo mat-vec


7

Definizione 3.22 Una matrice Ann si dice sparsa se il numero di elementi di A non nulli
proporzionale ad n

CAPITOLO 3. METODI PER LA RISOLUZIONE DI SISTEMI LINEARI

66

Convergenza del metodo


Al passo k-esimo lerrore a questa iterazione
e(k) = x
x(k)
risulta chiaro quindi che
lim x(k) = x
lim e(k) = 0

Infine sottraendo la (3.7) dalla (3.6), allora


x x(k) ) +(b b)
D (
x x(k+1) ) = (L + U ) (
| {z }
|
{z
}
e(k+1)

e pertanto

e(k)

e(k+1) = D 1 (L + U ) e(k) e(k) = (Bj )k e(0)


|
{z
}
Bj

dove (Bj )k la matrice di Jacobi alla k-esima iterazione.


La dimostrazione dellimplicazione precedente si fa per induzione su k. Perci fissato allinizio il valore di e (0) otteniamo che
lim e(k) = 0 (Bj )k 0nn

cio lerrore sulle soluzioni via via approssimate tende a zero, per k , se
la matrice di Jacobi al passo k-esimo converge alla matrice quadrata nulla
di dimensione n
Definizione 3.24 Una matrice si dice convergente se e solo se il suo raggio
spettrale8 minore di uno
Consideriamo ora Bj = V 1 V , cio la sua scomposizione in forma canonica di Jordan , con che cos strutturata:

..
=

.
n

mentre con V si indica la matrice le cui colonne sono gli autovettori corrispondenti agli autovalori di .
Quindi Bjk = V 1 k V converge a zero se e soltanto se k converge a zero,
poich lunica matrice che dipende da k. Si noti per che il calcolo del
raggio spettrale di una matrice ha un costo estremamente superiore alla risoluzione del sistema lineare con un metodo diretto; quindi si cercheranno
8

Il raggio spettrale di una matrice A si indica con (A) = maxP(A) ||. Con P(A) si
indica lo spettro di A, cos definito: { C : autovalore di A}

3.5. METODI ITERATIVI

67

maggiorazioni facilmente calcolabili e che siano minori di uno.


Una di queste possibili maggiorazioni ci viene fornita considerando la definizione di matrice a diagonale dominante. Verificare che una matrice di
questo tipo un calcolo semplice, ha un costo relativamente basso e si pu
quindi sfruttare nella seguente proposizione:
Proposizione 3.25 Se A a diagonale dominante in senso forte per righe e/o
per colonne allora (Bj ) < 1
D IMOSTRAZIONE :
Nel caso in cui A sia a diagonale dominante in senso forte per righe allora
||Bj || < 1
e questa maggiorazione sufficiente perch (B j ) sempre pi piccolo di
una qualsiasi norma di Bj (vedi teorema 2.11):
(Bj ) ||Bj || |i | ||Bj ||

i P(Bj )

dove si ricordi che, dato v autovettore corrispondente a


||Bj || = sup
v6=0

||Bj v||
||v||

||Bj v||
||v||
|| ||v||
=
=
= || ||B||
||v||
||v||
||v||

Dato che Bj = D 1 (L + U ), cio

a21
a22
.
.
Bj =
.
.
..
n1
aann
quindi
||Bj ||

aa12
11
0

13
aa11

..

. . . aa1n
11
aa2n
22
..
.
..
..
.
.
0


n
X
aij


= max
aii < 1
i=1,...,n
j=1

Se invece A a diagonale dominante in senso forte per colonne, abbiamo


j .
che Bj = D 1 (L + U ) simile9 a DD 1 (L + U )D 1 = B
9

= S 1 AS detta simiDefinizione 3.26 Sia S una matrice non singolare. La matrice A


A, e la trasformazione corrispondente detta una
le alla matrice A, indicandola con A
trasformazione per similitudine. Inoltre il loro raggio spettrale lo stesso

CAPITOLO 3. METODI PER LA RISOLUZIONE DI SISTEMI LINEARI

68
Quindi



X aij


||Bj ||1 = max
ajj < 1
j=1,...,n
i6=j

Analizziamo adesso i dettagli implementativi di questo metodo:


1. Come criterio darresto potremo fissare una tolleranza toll > |e (k) |,
ma questo non possibile poich non si conoscono le soluzioni esatte.
Utilizziamo pertanto una tolleranza in base al residuo
||r (k) || < toll
dove per residuo si intende la quantit
r (k) = A e(k) = b Ax(k)
2. Un primo algoritmo per la risoluzione del sistema pu essere espresso
in questo pseudo-codice:
Dx(k) = (L + U )x(k1) + b
r (k) = Ax(k) b
se ||r (k) || < toll stop
altrimenti Dx(k+1) = (L + U )x(k) + b
Tuttavia questo modo di procedere non sfrutta al massimo i calcoli gi
eseguiti, pi conveniente il seguente
Dx(k) = (L + U )x(k1) + b
r (k) = b Ax(k)
se ||r (k) || < toll stop
altrimenti x(k+1) = x(k) + D 1 r (k)
Infatti:
x(k+1) = x(k) + D 1 r (k) = x(k) + D 1 (b Ax(k) ) =
= x(k) + D 1 b D 1 (D L U )x(k) =

= x(k) + D 1 b x(k) + D 1 (L + U )x(k) =


= D 1 (L + U )x(k) + D 1 b

Listing 3.16: Risolvi sistema lineare con metodo di Jacobi




 [x,i]=risolvi_jacobi(A,b,x,t,npassi)

2
3
4
5
6

% RISOLVI_JACOBI Risolve il sistema Ax=b con Jacobi.


%
[x,i]=risolvi_jacobi(A,b,x,t) restituisce la
%
soluzione del sistema Ax=b utilizzando il metodo
%
di Jacobi ed i passi risultati necessari.

3.5. METODI ITERATIVI


7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40

%
%
%
%
%
%
%
%
%
%
%
%
%
%



43
44

47
48

La matrice A fornita in input deve essere quadrata


e il vettore colonna b deve avere la stessa dimensione
di riga di A.
Il vettore colonna x rappresenta le soluzioni approssimate
del sistema iniziali, il cosiddetto vettore dinnesco
Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti
Thu Jun 24 15:29:43 CEST 2004



% controllo che A sia quadrata


 (n==m)
r=bAx;
% estraggo la diagonale e ne calcolo linversa
d=1./    (A);
i=0;
t=t 
 (b,2);
   (( 
 (r,2)>=t) && i<=npassi)
% approssimazione soluzione
x=x+(d.r);
% calcolo il residuo
r=b(Ax);
i=i+1;

42

46

Approssima le soluzioni con una tolleranza t,


memorizzandosi il numero di passi effettuati.
In npassi si imposta il massimo numero di iterazioni
consentite

[n,m]=  (A);


  i=1:n
 A(i,i)==0
   (Il sistema non e risolvibile con jacobi.);

41

45

69

 
 



 i>= npassi
   (Numero di iterazioni superiore al limite);

   
   (La matrice di input non e quadrata);


Esempi di risolvi_jacobi da pag. 164

70

CAPITOLO 3. METODI PER LA RISOLUZIONE DI SISTEMI LINEARI

3.5.2 Metodo di Gauss-Seidel


Come per il metodo di Jacobi scompongo la matrice A = D L U e
riscrivo il sistema come
(D L)x = U x + b
(3.8)
segue che la successione che definiremo sar

(D L)x(k+1) = U x(k) + b
x(0) = approssimazione iniziale assegnata

k = 1, 2, . . .

(3.9)

Quindi le soluzioni approssimate sono date da


x(k+1) = (D L)1 U x(k) + (D L)1 b
La precedente formula non conveniente da utilizzare in unimplementazione su calcolatore, poich si fa uso dellinversione di una matrice e di prodotti
matrice per matrice. Unottimizzazione possibile pu essere:
j
X

(k+1)
aji xi

= bj +

i=1

n
X

(k)

aji xi

i=j+1
(k+1)
ajj xj

= bj +

n
X

(k)
aji xi

i=j+1

Da cui
(k+1)
xj

bj +

Pn

(k)
i=j+1 aji xi

ajj

j1
X

(k+1)

aji xi

i=1

Pj1
i=1

(k+1)

aji xi

(3.10)

Il criterio di convergenza si ottiene da


e(k) = x x(k)
quindi sottraendo dalla (3.8) la (3.9) otteniamo
(D L)e(k+1) = U e(k)
dove lultima espressione nota come equazione dellerrore; da essa ricaviamo
e(k+1) = (D L)1 U e(k)
|
{z
}
Bgs

infatti Bgs converge se e solo se (Bgs ) < 1.

Proposizione 3.27 Se una matrice A simmetrica definita positiva allora


(Bgs ) < 1
Proposizione 3.28 Se una matrice A strettamente a diagonale dominante
per righe e/o per colonne allora (B gs ) < 1

3.5. METODI ITERATIVI

71

D IMOSTRAZIONE:
Sia A strettamente a diagonale dominante per righe. Si supponga per
assurdo che P(Bgs ) || 1. Sia P(Bgs ) e consideriamo un
autovettore v corrispondente a tale che ||v|| = 1. Risulta quindi
Bgs v = v
cio
otteniamo pertanto

[(D L)1 U ]v = v
U v = (D L)v

Dv = (U + L)v

Sia vk la componente di v tale che vk = 1 ed allora, considerando solo


la componente k-esima, abbiamo
akk vk =

n
X

akj vj +

k1
X

akj vj

j=1

j=k+1

dalla quale, passando ai valori assoluti e per la disuguaglianza triangolare10 otteniamo


|||akk |

n
X

j=k+1

|akj | |vj | +||


|{z}
1

k1
X
j=1

|akj | |vj |
|{z}
1

Conseguentemente, dividendo per la quantit positiva || si ha


|akk |

k1
n
X
1 X
|akj |
|akj | +
||
j=k+1

j=1

La maggiorazione precedente pu essere ulteriormente rafforzata to1


gliendo il coefficiente moltiplicativo ||
; notiamo inoltre che le due
sommatorie coinvolgono tutti gli elementi della k-esima riga eccetto il
k-esimo e possono essere quindi riscritte nel seguente modo
X
|akk |
|akj |
j6=k

ma questo assurdo, dal momento che contraddice lipotesi iniziale


che A sia matrice a diagonale strettamente dominante per righe. 2
10

Dati due vettori v e w appartenenti ad uno spazio vettoriale V , si definisce


disuguaglianza triangolare la seguente relazione:

||v|| ||w|| ||v + w|| ||v|| + ||w||

72

CAPITOLO 3. METODI PER LA RISOLUZIONE DI SISTEMI LINEARI


Dimostriamo adesso il caso in cui la matrice sia a diagonale strettamente dominante per colonne. La prova analoga e viene omessa per
semplicit.

Ricaviamo quindi che


T
P(Bgs ) P(Bgs
)

da cui segue infine


T
Bgs
= U T (D L)T (D L)T U T = Bgs

e applicando il procedimento analizzato in precedenza si ottiene la tesi

Listing 3.17: Risolvi sistema lineare con metodo di Gauss-Seidel




 [x,k]=risolvi_gauseidel(A,b,x,t,npassi)

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

% RISOLVI_GAUSEIDEL Approssima Ax=b con GaussSeidel


%
[x]=risolvi_gauseidel(A,b,xi,t) restituisce la
%
soluzione del sistema Ax=b utilizzando il metodo
%
di GaussSeidel. Approssima le soluzioni con una tolleranza
%
t, fino ad un massimo di npassi.
%
%
La matrice A fornita in input deve essere quadrata
%
e il vettore colonna b deve avere la stessa dimensione
%
di riga di A.
%
%
Il vettore x rappresenta le soluzione approssimate
%
del sistema iniziali
%
%
Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti
%
Fri Jun 18 17:07:27 CEST 2004
[n,m]=    (A);
% controllo che A sia quadrata
 (n==m)
r=bAx;
k=0;
t=t   (b,2);
   ((   (r,2)>t) && i<=npassi)
% approssimazione soluzione
  i=1:n
x(i)=(b(i)  (A(i,1:i1)x(1:i1))...
 (A(i,i+1:n)x(i+1:n)))/A(i,i);

 

30

% calcolo il residuo
r=bAx;
k=k+1;

31
32
33
34
35
36
37
38
39

 

 
 
k>= npassi
   (Numero di iterazioni superiore al limite);
 
   

3.5. METODI ITERATIVI


40
41

 


73

   (La matrice di input non e quadrata);




Esempi di risolvi_gauseidel.m da pag. 168

74

CAPITOLO 3. METODI PER LA RISOLUZIONE DI SISTEMI LINEARI

Capitolo

Equazioni e sistemi non lineari

risoluzione di sistemi di equazioni di tipo non lineare si presenta


spesso nella modellazione matematica di problemi sperimentali o di
altra natura (per esempio di tipo teorico e non applicativo). Talvolta
non possiamo limitarci a studiare la parte lineare di un problema, ma dobbiamo necessariamente conoscere il comportamento dello stesso al di fuori
dei limiti di linearit. Risulta quindi evidente la necessit di trattare procedimenti che possano trovare le soluzioni dei sistemi non lineari, altrimenti
difficilmente risolvibili con i metodi visti fino ad ora. In questo capitolo, dopo una iniziale considerazione sul condizionamento e sui criteri darresto,
illustreremo in dettaglio alcuni di questi metodi. Vediamo adesso una definizione generale:
Sia f una funzione con dominio D Rn e codominio Q Rm :
A

f : D Rn Q Rm ,

f [f1 , f2 , . . . , fm ]T

e dato un vettore y Rm , si cerca x D tale che

f1 (x1 , . . . , xn ) = y1

f2 (x1 , . . . , xn ) = y2
f (x) = y
..

fm (x1 , . . . , xn ) = ym
Solitamente y assorbito in f e si considera lequazione
f (x) = 0
quindi questo significa cercare gli zeri della funzione f nel dominio D. Per
semplicit considereremo il caso in cui m = n = 1, cio il problema del
calcolo dello zero di una funzione di una variabile.

75

CAPITOLO 4. EQUAZIONI E SISTEMI NON LINEARI

76

4.1

Condizionamento del problema

Prima di analizzare i metodi numerici per la determinazione delle radici


di una funzione, facciamo qualche considerazione sul condizionamento del
problema.
Supponiamo f (x) = 0, cio x il risultato esatto.
Costruiamo una successione {xk } che converge a x e stabiliamo un criterio
di arresto:
f (
x) 0
dove x
il risultato perturbato.
Analizziamo lerrore relativo


x
x

x =
x

utilizzando lo sviluppo in serie di Taylor di primo grado, risulta:


x x)
f (
x) f (x) + f 0 (x)(
Supposto f 0 (x) diverso da zero
(
x x) =
Quindi

dove la quantit

1
|f 0 (x)x|

f (
x)
0
f (x)

x
1


x)|
x = |f 0 (x)x| |f (

il numero di condizionamento del nostro proble-

ma. I maggiori problemi per quanto riguarda il condizionamento si hanno


quando f 0 (x) molto grande in un intorno di x. Infatti nei metodi dovremmo imporre condizioni di arresto tuttaltro che verosimili, situazione
assolutamente non corretta. Un ulteriore caso sfavorevole quello in cui la
funzione piatta in un intorno di x, poich la derivata tende a zero e di
conseguenza lerrore relativo risulta enorme.
Inoltre, non detto che se |f (xk )| < toll(f ) allora sia piccolo anche lerrore,
infatti, come evidente nella figura (4.1), il valore di |f (
x)| relativamente
piccolo, ma la differenza |
x x| non lo altrettanto.
Per essere rigorosi dovremmo allora avere una tolleranza in funzione di
x, cio:
1
|f (
x)| < toll(x)
|f 0 (x)x|
Quindi il criterio di arresto per il residuo sar:


|f (
x)| < f 0 (x)x toll(x)
{z
}
|
toll(f )

4.1. CONDIZIONAMENTO DEL PROBLEMA

77

_
x

~x

Figura 4.1: Tolleranza su f ed errore assoluto


y

a)

b)

c)

Figura 4.2: Problema bencondizionato (a) e malcondizionato (b,c)


Il problema che abbiamo nasce dal fatto che non conosciamo x. Cercheremo
allora di stimare f 0 (x). Da questo segue:


c < toll(f ) < f 0 (
x)
x toll(x)

Il principio appena esposto non applicabile nel caso in cui la molteplicit delle soluzioni sia maggiore di 1 e quindi presentiamo un altro criterio di arresto, pi costoso, ma applicabile in qualsiasi contesto. Definiamo
dunque:
|xk+1 xk | < ck toll(x)
con
ck =

|xk+1 | se xk+1 > toll(x)


1
altrimenti

e dove xk , xk+1 sono due approssimazioni successive di una successione che


converge a x.
Definizione 4.1 Sia {xk } una successione convergente a x. Se esistono un
numero p > 0 e una costante c 6= 0 tale che
|xk+1 x|
=c
k+ |xk x|p
lim

allora p chiamato ordine di convergenza della successione e c chiamata


costante asintotica derrore.

CAPITOLO 4. EQUAZIONI E SISTEMI NON LINEARI

78

Se p = 1 e c < 1 la convergenza si dice lineare.


Se p = 1 e c = 1 si parla di convergenza sublineare.
importante stabilire anche se la convergenza di un metodo locale o
globale.
Convergenza locale vale solo per particolari inneschi, vicini a quelli ottimali
Convergenza globale vale per ogni x 0 appartenente ad un intervallo prefissato
Inoltre si parla di convergenza a:
Passo singolo se xk calcolato solo con xk1 , cio si ha un solo punto
dinnesco
Passo multiplo se xk calcolato con xk1 , xk2 , . . . cio si hanno pi punti
dinnesco
La conoscenza dellordine di convergenza p della successione {x k } pu
farci conoscere qualcosa in pi sullerrore. Infatti:
|xk+1 xk | = |xk+1 + x x xk | = |ek+1 ek |
Siccome ek+1 c epk si ha



p
c e ek = |ek | c ep1 1
k
k
|
{z
}

questa quantit
differisce poco da 1

Quindi, per k abbastanza grande, se p = 1


|xk+1 xk | |ek ||c 1|

4.2

Metodo di bisezione

Sia f una funzione continua in un intervallo chiuso e limitato [a, b]. Inoltre
risulti che f (a)f (b) < 0. Allora esiste un punto x (a, b) tale che f (x) = 0.
Il problema, ora che abbiamo provato lesistenza di x, determinarne il
valore. Assegnamo ai termini a0 e b0 rispettivamente i valori di a, b e calcoliamoci il punto medio di questi, cio
c0 =

a0 + b 0
2

Se c0 il punto che cerchiamo, cio f (c0 ) = 0 il metodo di bisezione si


arresta, altrimenti assegneremo ai termini a 1 , b1 rispettivamente:

4.2. METODO DI BISEZIONE

79

a0 , c0 se f (c0 )f (a0 ) < 0


c0 , b0 altrimenti
In questo modo dimezziamo lampiezza dellintervallo di confidenza. Ripetendo il procedimento creeremo una successione [a i , bi ] che converger a x.
In questo modo siamo sicuri che nellintervallo che considero ho sempre le
radici della funzione.
Un criterio di arresto di questo metodo dato da 1
|f (ci )| < toll(f )
Questo metodo ha convergenza globale, ad ogni passo dimezza lintervallo
(bi+1 ai+1 ) =

1
(bi ai )
2

lerrore quindi:
1
1
1
|ei+1 | = |ci+1 x| (bi+1 ai+1 ) = (bi ai ) = . . . = i+1 (b0 a0 )
2
4
2
converge a zero per i che tende a infinito. Stabiliamo un criterio di arresto
per il calcolo di ci . Si ha
|ei |

1
(b a) < toll(x)
2i

Quindi
2i >

ba
toll(x)

e passando ai logaritmi
i > log 2 (b a) log 2 toll(x)
Come banale verificare il metodo ha convergenza lineare, risulta infatti:
|ei+1 |
1
=
i |ei |
2
lim

In generale un buon metodo per localizzare le radici (poi sono generalmente usati metodi pi veloci e localmente convergenti).
1

N.B.: il calcolo di una funzione in generale la parte pi costosa di un procedimento


iterativo.

CAPITOLO 4. EQUAZIONI E SISTEMI NON LINEARI

80

Listing 4.1: Metodo di bisezione


1





[x,i]=bisezione(a,b,f,toll)

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

% BISEZIONE Trova lo zero di f con il metodo di bisezione


%
[x,k]=bisezione(a,b,f,toll) restituisce in x lascissa
%
del punto in cui si annulla f, con x appartenente
%
allintervallo [a,b].
%
%
f deve avere almeno uno zero in [a,b]
%
%
Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti
%
Fri Jun 21 16:52:18 CEST 2004
   on;

  on;
i=0;
fa=   (f,a);
fb=   (f,b);
%per la parte grafica:
bi=b; ai=a;
% controllo lintervallo
 fa==0
x=a;

 

   
fb==0
x=b;

24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

  ;

 

  ;
% calcolo il punto medio
c=(a+b)/2;
% valuto la funzione
v=   (f,c);
% definisco la tolleranza
fder = (fbfa)/(ba);
tollf= fder.toll.c;



tollx= 
(   (biai)   (toll);

   ((i<=tollx)) && (tollf <= 
v==0
% ho trovato la radice
x=c;
 

 

% imposto lintervallo
(fa.v) < 0
fb=v;
b=c;

42
43
44
45

  

46
47
48
49
50
51
52

 

 

fa=v;
a=c;

c=(a+b)/2;
v=   (f,c);

(v)))

4.3. METODO DI NEWTON


% ridefinisco la tolleranza
fder = (fbfa)/(ba);
tollf= fder.toll.c;
i=i+1;

53
54
55
56



57
58
59
60
61
62

81

x=c;
% visualizzo la posizione della radice
ezplot(f,[ai,bi]);

  (x,   (f,x),rd);

  




Esempi di bisezione.m da pag. 175

4.3

Metodo di Newton

Il metodo di Newton un metodo iterativo a passo singolo. Supposta la


funzione f da studiare continua in un intervallo [a, b], si considera una stima
iniziale x0 della soluzione e si genera una successione {x k }, secondo quanto
segue:
f (x) f (xk ) + f 0 (xk )(x xk )
Posto poi
f (xk ) + f 0 (xk )(xk+1 xk ) = 0
si ha
xk+1 = xk

f (xk )
f 0 (xk )

(4.1)

Dal punto di vista geometrico, xk+1 lintersezione dellasse x con la tangente y = f (xk ) + f 0 (xk )(x xk ) in (xk , f (xk )) alla curva y = f (x).
Il metodo di Newton diverge quando il punto dinnesco x 0 non vicino
alla radice; inoltre detto metodo di iterazione funzionale, poich fatto
grazie al calcolo della funzione al passo precedente.
xk+1 = g(xk )

dove

g(x) = x

f (xk )
f 0 (xk )

Quindi, cercare f (x) = 0 come cercare il punto fisso 2 di unaltra funzione


g correlata a f .
Supposto che il metodo converga, stabiliamo lordine di convergenza:
0 = f (x) = f (xk ) + f 0 (xk )(x xk ) +
2

f 00 (k )
(x xk )2
2!

Si dice che x un punto fisso di una funzione f se x dom(f ) e x = f (x)

CAPITOLO 4. EQUAZIONI E SISTEMI NON LINEARI

82

dove k (min(x, xk ), max(x, xk )). Se divido la precedente equazione per


f 0 (xk ) ottengo:
0=

f (xk )
f 00 (k )
+
(x
(x xk )2

x
)
+
k
f 0 (xk )
2!f 0 (xk )

Quindi, per la (4.1)


f 00 (k )
(x x )2
0 = x xk+1 + 0
| {z } 2!f (xk ) | {z k}
ek

ek+1

Ora,

ek+1
f 00 (k )
=

2!f 0 (xk )
e2k

cio, passando ai valori assoluti





ek+1 f 00 (k )

=

e2 2!f 0 (x )
k
k
Da cui, considerando il limite



ek+1
f 00 (x)

lim 2 = 0
k+ ek
2f (x)

supposto convergente ek . Il metodo quindi converge almeno quadraticamente per radici semplici, mentre per radici multiple la convergenza peggiora (esistono comunque procedimenti per ovviare a questo problema).
Nel caso in cui f abbia radice multipla, cio f della forma:
f (x) = (x x)m v(x)

radici di molteplicit m e v(x) 6= 0

Abbiamo che


f 0 (x) = (x x)m1 m v(x) + (x x)v 0 (x)
|
{z
}
h(x)

Quindi



f (xk )
(xk x)m v(xk )
v(xk )
xk+1 x = xk 0
x = (xk x)
= (xk x) 1
f (xk )
(xk x)m1 h(xk )
h(xk )
Da cui

xk+1 x
v(xk )
=1
xk x
h(xk )

Possiamo quindi portare tutto al limite ed ottenere:


ek+1
v(x)
1
=1
=1
k+ ek
h(x)
m
lim

con m costante positiva non nulla (quindi convergenza lineare).

4.3. METODO DI NEWTON


1

83

Listing 4.2: Metodo di Newton


 
 

[x,k]=newton(f,df,toll,innesco,npassi)

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

% NEWTON Trova lo zero di f con il metodo di Newton


%
[x,k]=newton(f,df,toll,innesco) restituisce in x
%
lascissa del punto in cui si annulla f, con x
%
vicino al punto dinnesco ed in k il numero di
%
passi effettuati dallalgoritmo.
%
%
Il parametro f contiene il nome della funzione
%
da esaminare, df contiene il nome della derivata
%
della funzione f.
%
Il parametro toll rappresenta la tolleranza sulle
%
ascisse.
%
Con npassi si indica il numero di passi imposto
%
come limite
%
%
Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti
%
Fri Jun 23 14:56:16 CEST 2004
xk = innesco;
xk1 = xk (   (f,xk)./   (df,xk));
% fisso la tolleranza

 
(xk1)>toll
ck=xk1.toll;

 

26



27

k=1;

28
29
30
31
32
33
34

ck=toll;

  

(
(xk1xk)>=ck && k <= npassi)
% calcolo lapprossimazione successiva
xk = xk1;
xk1 = xk (   (f,xk)./   (df,xk));
% aggiorno la condizione di arresto

 
(xk1)>toll
ck=xk1.toll;

35

 

36

ck=toll;

37



38

k=k+1;

42


 (k>npassi)
   (Superato limite iterazioni);
 ;

43

x=xk1;

39
40
41

44

  




Esempi di newton.m da pag. 176

84

CAPITOLO 4. EQUAZIONI E SISTEMI NON LINEARI

4.3.1 Metodo di Newton modificato


Mostriamo adesso una variante al metodo appena proposto che, conoscendo la molteplicit della radice, ci permette di avere convergenza pi che
lineare. L espressione per il calcolo della successione viene scritto:
xk+1 = xk m

f (xk )
f 0 (xk )

Dove, per k che tende allinfinito, produce la convergenza


m
1
=0
m
Supponiamo la successione definita dallinnesco x 0 tale che
xk+1 = g(xk )
con g C1 ([a, b]), x0 [a, b] ed in generale xk [a, b] k.
Se xk x per k , allora x = g(x) un punto fisso della funzione g,
quindi per lipotesi di continuit risulta
x = lim g(xk ) = g(x)
k

Teorema 4.2 (di convergenza locale) Sia g C 1 ([x %, x + %]) con % > 0
e x punto fisso di g. Se |x0 x| % e |g 0 (x)| < 1 per ogni x [x %, x + %]
allora:
xk [x %, x + %]

lim xk = x

; xk+1 = g(xk )

D IMOSTRAZIONE :
Sia = max |g 0 (x)| < 1 con x [x %, x + %]. Procedendo per induzione su
k verifichiamo che:
|xk x| k % %
Base k = 0 lipotesi verificata banalmente
Ipotesi induttiva La tesi vale per k 1
Passo induttivo Per definizione di successione e teorema del valor medio
abbiamo
xk x = g(xk1 ) g(x) = g 0 (k1 )(xk1 x)
Passando ai valori assoluti, si ha:
|xk x| = |g 0 (k1 )| |(xk1 x)|
{z
}
|
intorno

Quindi per ipotesi induttiva:

|(xk1 x)| |g 0 (k1 )| (k1 %) = k % %


poich k 0 per k .

4.3. METODO DI NEWTON

85

5 Osservazione 4.3 Se g C1 ([a, b]) e |g 0 (x)| < 1 x [a, b] allora


non possono esistere due punti distinti x 1 , x2 [a, b] che sono punti fissi
di g in [a, b].
D IMOSTRAZIONE :
Per assurdo, se esistessero x1 , x2 [a, b], con x1 6= x2 allora
|x1 x2 | = |g(x1 ) g(x2 )|
poich sono fissi e per il teorema del valor medio risulterebbe che
|x1 x2 | = |g(x1 ) g(x2 )| = |g 0 (k )||x1 x2 |
ma questo assurdo dal momento che |g 0 (k )| < 1

Teorema 4.4 Sia g Cp ([a, b]) con p 2. Sia x [a, b] un punto fisso. Se
g 0 (x) = 0, g 00 (x) = 0, . . . , g (p1) (x) = 0 e g (p) (x) 6= 0
allora % > 0 tale che se |x0 x| % allora la successione {xk } converge con
ordine p
D IMOSTRAZIONE :
In base allo sviluppo di Taylor abbiamo:
xk+1 = g(xk ) = g(x)+g 0 (x)(xk x)+. . .+

g (p1) (x)
g (p) (k )
(xk x)p1 +
(xk x)p
(p 1)!
p!

con |k x| %. Quindi
|xk+1 x|
|g (p) (x)|
|ek+1 |
|g (p) (k )|
= lim
= lim
=
>0
p
p
k |xk x|
k |ek |
k
p!
p!
lim

cio converge proprio con questordine. Se fosse risultato uguale a zero,


allora lordine di convergenza sarebbe stato superiore.
2

1

Listing 4.3: Metodo di Newton per radici multiple


 
 

[x,k]=newton_modif(f,df,toll,innesco,m,npassi)

2
3
4
5
6
7
8
9
10
11
12

% NEWTON_MODIF Trova uno zero con il metodo di Newton modificato


%
[x,k]=newton_modif(f,df,toll,innesco,m) restituisce in x
%
lascissa del punto in cui si annulla f, con x vicino
%
al punto dinnesco.
%
%
Il parametro f contiene il nome della funzione da esaminare,
%
df contiene il nome della derivata della funzione f.
%
Il numero m rappresenta la molteplicit nota della soluzione
%
cercata.
%
Il parametro toll rappresenta la tolleranza sulle ascisse.

CAPITOLO 4. EQUAZIONI E SISTEMI NON LINEARI

86
13
14
15
16
17

%
%
%
%
%

Con npassi si indica il numero di passi imposto


come limite
Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti
Fri Jun 23 14:58:21 CEST 2004

18
19
20
21
22
23
24
25

xk = innesco;
xk1 = xk m.(   (f,xk)./   (df,xk)); % calcolo x_1
% fisso la tolleranza

  (xk1)>toll
ck=xk1.toll;

 

ck=toll;

26



27

k=1;

28
29
30
31
32
33
34

 

(
(xk1xk)>=ck && k<=npassi)
% calcolo lapprossimazione successiva
xk = xk1;
xk1 = xk m.(   (f,xk)./   (df,xk));
% aggiorno la condizione di arresto



(xk1)>toll
ck=xk1.toll;

35

 

36

ck=toll;

37

 

38

k=k+1;

42


 (k>npassi)
   (Superato limite iterazioni);
 ;

43

x=xk1;

39
40
41

44

 


Esempi di newton_modif.m da pag. 178

4.3.2 Metodo delle corde


Un ottimizzazione al metodo di Newton sorge dalla constatazione che ad
ogni passo del metodo tradizionale si calcola il valore della derivata prima
nel punto. Si pu supporre che, a meno di una precisione fissata a priori, il
valore della tangente alla funzione f nei pressi della radice x diventi sempre
pi vicino al valore f 0 (x): lidea quindi quella di non calcolare via via tutte
le tangenti f 0 (xi ), bens prendere la pendenza della retta tangente alla f in
un preciso punto ed utilizzare sempre quel valore. Come si pu ben capire,
lapprossimazione qui introdotta sar tanto migliore quanto pi il punto di
calcolo della derivata si trova vicino alla radice della f . Il nuovo modo di

4.3. METODO DI NEWTON

87

calcolare la successione dato da


xk+1 = xk

f (xk )
m

m 6= 0

Il problema ora consiste nel valutare correttamente il numero m, la pendenza della retta cercata: conveniamo allora di prendere come punto dove
si calcola la tangente il punto dinnesco x 0 , utilizzando dunque f 0 (x0 ) per
il calcolo di ogni valore della successione {x k }. L approssimazione da noi
considerata alleggerisce notevolmente i calcoli da fare, seppur imponendo
che la convergenza di questo metodo sia lineare; tuttavia, facendo maggiore attenzione nella scelta del punto dinnesco si possono avere convergenze
pi rapide.

1

Listing 4.4: Metodo delle corde


 
 

[x,k]=corde(f,df,toll,a,b,innesco,npassi)

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

% CORDE Trova lo zero di f con il metodo delle corde


%
[x,k]=corde(f,df,toll,innesco) restituisce in x lascissa
%
del punto in cui si annulla f, con x vicino al punto
%
dinnesco ed in k il numero di passi effettuati
%
dallalgoritmo.
%
%
Il parametro f contiene il nome della funzione
%
da esaminare, df contiene il nome della derivata
%
della funzione f.
%
Il parametro toll rappresenta la tolleranza sulle
%
ascisse.
%
I parametri a,b sono gli estremi dellintervallo dove
%
visualizzare il grafico.
%
Con npassi si indica il numero di passi imposto
%
come limite
%
%
Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti
%
Sat Jun 26 23:56:16 CEST 2004

21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

ezplot(f,[a,b]);

 on;
   on;
xk = innesco;
fxk =   (f,xk);
% fisso m
m=   (df,xk);
xk1 = xk (   (f,xk)./m);
% fisso la tolleranza

 
(xk1)>toll
ck=xk1.toll;

 


ck=toll;

% visualizzo le corde
  ([xk,xk],[fxk,0],Color,Red);

CAPITOLO 4. EQUAZIONI E SISTEMI NON LINEARI

88
38
39
40
41
42
43
44
45
46
47
48
49
50

   ([xk,xk1],[fxk,0],Color,Red);
k=1;

  (  (xk1xk)>=ck && k <= npassi)
% calcolo lapprossimazione successiva
xk = xk1;
fxk =   (f,xk);
xk1 = xk m.\fxk;
% visualizzo le corde
   ([xk,xk],[fxk,0],Color,Red);
   ([xk,xk1],[fxk,0],Color,Red);
% aggiorno la tolleranza

(xk1)>toll


ck=xk1.toll;

51

 

52

ck=toll;

53

 

54

k=k+1;

58


 (k>npassi)
   (Superato limite iterazioni);
 ;

59

x=xk1;

55
56
57

60

 


Esempi di corde.m da pag. 179

4.3.3 Metodo delle secanti


Il metodo delle secanti unaltra variante al metodo di Newton, che fornisce
una strada alternativa per il calcolo delle radici di una funzione f . un
metodo a passo doppio, cio ha bisogno di due punti dinnesco per il calcolo
delli-esimo valore della successione {x k }. Per calcolare tale valore viene
utilizzata la seguente relazione
xk+1 = xk

xk xk1
f (xk )
f (xk ) f (xk1 )

Come vediamo questo metodo non calcola ogni volta la derivata, n si porta
dietro un valore costante, bens approssima la f 0 con la pendenza della retta
secante la funzione f che passa per i due punti calcolati nelle approssimazioni precedenti. Il metodo delle secanti ha convergenza locale ed il suo
ordine di convergenza3 dato da

1+ 5
p==
1, 618
2
3

dove il cosiddetto rapporto aureo

4.3. METODO DI NEWTON

89

nel caso che le radici siano semplici, altrimenti se le radici sono multiple
tale valore pari ad p = 1.

1

Listing 4.5: Metodo delle secanti


 
 

[x,k]=secanti(f,df,toll,a,b,innesco1,innesco2,npassi)

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

% SECANTI Trova lo zero di f con il metodo delle secanti


%
[x,k]=secanti(f,df,toll,a,b,innesco1,innesco2) restituisce
%
in x lascissa del punto in cui si annulla f, con x
%
vicino ai punti dinnesco ed in k il numero di
%
passi effettuati dallalgoritmo
%
%
Il parametro f contiene il nome della funzione
%
da esaminare, df contiene il nome della derivata
%
della funzione f.
%
Il parametro toll rappresenta la tolleranza sulle
%
ascisse.
%
I parametri a,b sono gli estremi dellintervallo dove
%
visualizzare il grafico.
%
Con npassi si indica il numero di passi imposto
%
come limite
%
%
Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti
%
Fri Jun 23 14:56:16 CEST 2004

21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39

ezplot(f,[a,b]);

 on;
   on;
xk = innesco1;
xk1 = innesco2;
fxk =   (f,xk);
fxk1 =   (f,xk1);
xk2 = xk fxk./(fxk1 fxk).(xk1xk);
% valore calcolato per effettuare il grafico
fxk2 =   (f,xk2);
% visualizzo le secanti
  ([xk1,xk1],[fxk1,0],Color,Black,LineStyle,);
  ([xk1,xk2],[fxk1,fxk2],Color,Red);
% fisso la tolleranza

 
(xk2)>toll
ck=xk2.toll;

 

40



41

k=1;

42
43
44
45
46
47
48
49

ck=toll;

  

(
(xk2xk1)>=ck && k<= npassi)
% calcolo lapprossizione successiva
xk = xk1;
xk1 = xk2;
fxk = fxk1;
fxk1 =   (f,xk1);
xk2 = xk fxk./(fxk1fxk).(xk1xk);
% visualizzo le secanti

CAPITOLO 4. EQUAZIONI E SISTEMI NON LINEARI

90
50
51
52
53
54

   ([xk,xk],[fxk,0],Color,Black,LineStyle,);
   ([xk,xk1],[fxk,fxk1],Color,Red);

% determino la tolleranza

(xk2)>toll


ck=xk2.toll;

55

 

56

ck=toll;

57

 

58

k=k+1;

62


 (k>npassi)
   (Superato limite iterazioni);
 ;

63

x=xk2;

59
60
61

64

 


Esempi di secanti.m da pag. 181

4.3.4 Metodo di accelerazione di Aitken


Il metodo di accelerazione di Aitken consente di rendere pi rapida la convergenza, altrimenti lineare, di metodi iterativi per lapprossimazione degli zeri
di una funzione. Considerando lipotesi di convergenza lineare, supponendo
di ottenere i punti xk1 , xk e xk+1 posso scrivere che
ek+1 ' c ek

ek ' c ek1

dove c detta costante asintotica derrore e dalle quali, dividendo membro a


membro risulta
ek+1
ek
'
ek
ek1
Ricordiamo che in generale ei = |xi x| e sostituendo otteniamo
xk+1 x
xk x
'
xk x
xk1 x
da cui possiamo scrivere
(xk+1 x)(xk1 x) ' (xk x)2
Sviluppando ulteriormente il calcolo otteniamo
xk+1 xk1 x(xk+1 + xk1 ) + x2 ' x2k 2xk x + x2
x(xk+1 + xk1 2xk ) ' xk+1 xk1 x2k

4.3. METODO DI NEWTON

91

Quindi
xk1 (xk+1 2xk + xk1 ) xk1 (xk1 2xk ) x2k
xk+1 xk1 x2k
=
=
xk+1 2xk + xk1
xk+1 2xk + xk1
xk1 (xk+1 2xk + xk1 ) x2k1 + 2xk1 xk x2k
=
=
xk+1 2xk + xk1
x2 2xk1 xk + x2k
(xk1 )2
= xk1 k1
= xk1
=x
k
(4.2)
xk+1 2xk + xk1
2 xk1

x '

Sostanzialmente x
k dovrebbe fornire unapprossimazione migliore della radice, possiamo quindi prenderlo come punto dinnesco per il metodo di
Newton. Quello che si compie nelle varie iterazioni pu essere illustrato
nel seguente schema
1. Con il metodo di Newton si calcolano x 1 e x2 , partendo dallinnesco
x0
2. Si sfruttano i punti appena trovati e si calcola x
1 , con la formula (4.2)
3. Si pone x0 = x
1 e si procede come al punto 1, calcolando x 1 e x2
4. Si costruisce il valore x
2 , e si itera il procedimento
Dimostriamo adesso che effettivamente il metodo di Aitken rende pi veloce
la convergenza di un metodo iterativo, tramite il
Teorema 4.5 Se la successione {xk } converge linearmente a x, allora
x
k x
=0
k xk x
lim

D IMOSTRAZIONE :
Vogliamo dimostrare che ek /ek ha convergenza pi che lineare. Risulta:
x
k x = xk1 x

(xk x + x xk1 )2
xk+1 x 2xk + 2x + xk1 x

cio
ek = ek1

(ek ek1 )2
ek+1 2ek + ek1

Supposto adesso che k sia abbastanza grande, otteniamo


ek ' c ek1

ek+1 ' c ek
Quindi

CAPITOLO 4. EQUAZIONI E SISTEMI NON LINEARI

92

(ek 1c ek )2
(1 1c )2 e2k
1
ek
= ek
=

c
c
c ek 2ek + 1c ek
(c 2 + 1c )ek
h 1 (c 1)2
i
h1 1i
c

= ek
=
e
=0
k
c
c2
c2 2c + 1
c
c

ek =

Quello che questo teorema dimostra che la quantit ek tende a zero pi


velocemente di ek , per k che tende allinfinito; quindi la ricerca delle radici tramite la successione degli {
x i } sar pi rapida di un metodo che, per
ipotesi, convergeva linearmente: abbiamo dunque una convergenza pi che
lineare, cio la tesi provata.
2
Questo metodo pu essere usato inoltre per ripristinare la convergenza quadratica del metodo di Newton nel caso di radici multiple con molteplicit
sconosciuta.





Listing 4.6: Metodo di Aitken


[x,k]=aitken(f,df,toll,innesco,npassi)

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

% AITKEN Trova lo zero di f con Newton accelerato con Aitken


%
[x,k]=aitken(f,df,toll,innesco) restituisce in x
%
lascissa del punto in cui si annulla f, con x
%
vicino al punto dinnesco ed in k il numero di
%
passi effettuati dallalgoritmo.
%
%
Il parametro f contiene il nome della funzione
%
da esaminare, df contiene il nome della derivata
%
della funzione f.
%
Il parametro toll rappresenta la tolleranza sulle
%
ascisse.
%
Con npassi si indica il numero di passi imposto
%
come limite
%
%
Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti
%
Fri Jun 25 09:51:23 CEST 2004

19
20
21
22
23
24
25
26
27
28
29
30
31
32

% calcolo newton
x0=innesco;
hat1=x0 + toll.2;
ck=toll;
hat0=x0;
k=0;

  (  (hat1hat0)>=ck && k<= npassi)
% approssimazione successiva
x1 = x0 (   (f,x0)./   (df,x0));
x2 = x1 (   (f,x1)./   (df,x1));
hat0 = x0;
hat1 = x0 (x0.^2 2.x0.x1+x1.^2)./(x22.x1+x0);
x0 = hat1;

4.3. METODO DI NEWTON


33
34
35
36
37
38
39

% aggiorno la tolleranza

 
(hat1)>toll
ck=hat1.toll;

 


ck=toll;

k=k+1;

43


 (k>npassi)
   (Superato limite iterazioni);
 ;

44

x=hat1;

40
41
42

45

93

  




Esempi di aitken.m da pag. 183

94

CAPITOLO 4. EQUAZIONI E SISTEMI NON LINEARI

Capitolo

Approssimazione di funzioni

problema dellapprossimazione di funzioni riveste unimportanza fondamentale nella matematica applicata, dove spesso e volentieri si pu
avere a che fare con funzioni analiticamente complicate, oppure il cui
comportamento non noto e delle quali conosciamo solamente un insieme
discreto di valori. Sono stati allora trovati dei metodi che ci permettono
di ricostruire landamento di una funzione, a partire dai dati in nostro
possesso; tali procedimenti esistono in diverse varianti, che possono essere
applicate con successo in dipendenza dalla natura dei valori da stimare. In
generale, approssimare una funzione consiste nel cercare, dato un insieme
di coppie (xi , fi ) con i = 0, . . . , n una funzione dello spazio
L

S =< 0 (x), 1 (x), . . . , n (x) >


che interpoli1 questi punti.
Consideriamo inizialmente la funzione
S(x) =

n
X

j j (x)

j=0

cio la combinazione lineare delle applicazioni dello spazio di funzioni S.


Quindi, per i = 0, . . . , n deve risultare
S(xi ) =

n
X

j j (xi ) = fi

j=0

Si pu pensare di risolvere questa equazione come un sistema lineare in cui


= (0 , 1 , . . . , n )T
1

Dallo Zingarelli 1996: [interpolare] calcolare approssimativamente il valore di una


funzione in un punto compreso fra due altri in cui il valore noto, quando non si conosce
lespressione della funzione oppure essa troppo complicata

95

96

CAPITOLO 5. APPROSSIMAZIONE DI FUNZIONI

il vettore delle incognite, la matrice dei coefficienti, detta matrice di


collocazione :

0 (x0 ) 1 (x0 ) . . . n (x0 )

..
..
..

.
.
.

.
..
.
.
.

.
.
.
0 (xn )
...
. . . n (xn )
ed infine f = (f0 , f1 , . . . , fn )T il vettore dei termini noti.
Fissiamo S come lo spazio dei polinomi
S = n =< 1, x, x2 , . . . , xn >
ed in questo caso la matrice di collocazione quella che chiamata matrice di Vandermonde

1 x1 . . . xn1
1 x2
xn2

A= .
..
.
.
.
.
. .
1 xn . . . xnn

Il determinante di questa matrice, supposto x i 6= xj , i 6= j, dato da


det(A) =

(xi xj )

i>j
i,j=1,...,n





Listing 5.1: Risolve il sistema di Vandermonde


[a]=risolvi_vandermonde(x,f)

2
3
4
5
6
7
8
9
10

% RISOLVI_VANDERMONDE Risolve il sistema di Vandermonde


%
[a]=risolvi_vandermonde(x,f) restituisce le soluzioni del
%
sistema di Vandermonde.
%
%
I parametri x e f sono vettori della stessa dimensione.
%
%
Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti
%
Fri Jun 18 15:49:43 CEST 2004

11
12
13

% creo la matrice di Vandermonde


A=vandermonde(x);

14
15
16
17
18

% risolvo il sistema con Householder


a=risolvi_householder(A,f);

 


5.1. POLINOMIO INTERPOLANTE DI LAGRANGE

97

Esempi di risolvi_vandermonde.m da pag. 184


1

Listing 5.2: Creazione matrice di Vandermonde


 
 

[V]=vandermonde(x)

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

% VANDERMONDE Restituisce la matrice di Vandermonde


%
[V]=vandermonde(x) restituisce la matrice di
%
Vandermonde corrispondente al vettore X
%
%
Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti
%
Fri Jun 18 15:49:43 CEST 2004
%
n=      (x);
% creo la matrice n x n
V=   (n);
% riempo la matrice
V(:,1)=ones(n,1);
  j=2:n
V(:,j)=V(:,j1).x(:);



  




Si pu dimostrare, per induzione su n, che esiste unico il polinomio


Pn (x) n interpolante tale che: Pn (xi ) = fi con i = 0, . . . , n. Nella risoluzione del sistema lineare pu nascere un problema se le ascisse sono distinte, ma vicine: infatti il condizionamento peggiora rendendo potenzialmente la matrice singolare. Sappiamo inoltre che la risoluzione di un sistema lineare unoperazione costosa e dipende fortemente dal
condizionamento dei dati.

5.1

Polinomio Interpolante di Lagrange

Per risolvere questo tipo di problema si utilizza la rappresentazione del polinomio in forma di Lagrange.
Questo tipo di polinomi sono quelli della forma:
Li n (x) =

n
Y
(x xj )
(xi xj )

j=0
j6=i

CAPITOLO 5. APPROSSIMAZIONE DI FUNZIONI

98

Analizziamo una propriet fondamentale di L i n (i-esimo polinomio di grado n). Calcolando il polinomio in xk , abbiamo:

n
Y
xk x j
0 se k 6= i
=
Li n (xk ) =
1 se k = i
xi x j
j=0
j6=i

Mostriamo ora come gli Li n siano linearmente indipendenti. Supponiamo


di avere
n
n
X
X
ai Li n (xk ) = 0
ai Li n (x) = 0
allora
i=0

i=0

ma Lk n non si annulla in xk , quindi ak = 0 per ogni k, cio gli Li n sono


linearmente indipendenti; risulta infine
n =< L0 n (x), L1 n (x), . . . , Ln n (x) >

si noti che i vari Li n (x) formano una base dello spazio vettoriale n , detta
base di Lagrange.
Adesso sappiamo che un generico polinomio di grado n pu essere espresso
nella forma di Lagrange
Pn (x) =

n
X

ai Li n (x)

i=0

Per far interpolare il polinomio con i punti considerati in precedenza deve


risultare
n
X
ai Li n (xk ) = fk
k = 0, . . . , n
i=0

ma i valori della sommatoria sono tutti nulli eccetto il k-esimo, cio a k = fk .


Allora
n
X
fi Li n (x)
Pn (x) =
i=0

in questo modo non risolvo alcun sistema lineare perch sono a conoscenza
di tutti i coefficienti.
4 Esempio 5.1 Dobbiamo interpolare i seguenti punti:
xi
-1
0
1

L0 2 (x) =

fi
-3
-1
3

L1 2 (x) =
L2 2 (x) =

P2 (x) =

2
X
i=0

x
x(x 1)
= (x 1)
(1 0)(1 1)
2
(x + 1)(x 1)
= (x + 1)(x 1) = (1 x2 )
(0 + 1)(0 1)
x
x(x + 1)
= (x + 1)
(1 + 1)(1 0)
2

x
x
fi Li 2 (x) = 3 (x 1) 1 + x2 + 3 (x + 1) =
2
2

5.1. POLINOMIO INTERPOLANTE DI LAGRANGE

99

3
= x(x 1 x 1) + x2 1 =
2
= 3x + x2 1
Consideriamo adesso il problema che si ha quando si aggiunge una coppia (xn+1 , fn+1 ) allinsieme delle ascisse dinterpolazione che analizzavamo.
Nel caso della base di Lagrange non possiamo semplicemente aggiungere la
nuova componente alla base, poich dobbiamo ricalcolare nuovamente tutti
i suoi elementi con il nuovo insieme di ascisse di interpolazione. Definiamo
quindi una nuova base che ci permetta di costruire il polinomio interpolante
in modo pi efficiente.


1

Listing 5.3: Interpolazione polinomiale con base di Lagrange


 
 

[px]=lagrange(x,f,k)

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

% LAGRANGE Interpolazione con base di Lagrange.


%
[px]=lagrange(x,f,k) restituisce in px il valore del
%
polinomio interpolante i punti (x_i,f_i) calcolato
%
nel punto k. Il polinomio interpolante e determinato
%
in base di Lagrange.
%
%
Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti
%
Fri Jun 21 16:52:18 CEST 2004
px=0;
n=      (x);
  i=1:n
p=1;
% calcolo il termine L_in di Lagrange
  j=1:n
 j~=i
p=p.(kx(j))./(x(i)x(j));

19



20
21
22
23



px=px+f(i).p;


  


 Listing 5.4: Interpolazione polinomiale con base di Lagrange ottimizzata


 
  [px]=lagrange_ott(x,f,k)

2
3
4
5
6
7
8
9
10

%
%
%
%
%
%
%
%

LAGRANGE_OTT Interpolazione con base di Lagrange ottimizzata.


[px]=lagrange_ott(x,f,k) restituisce in px il valore del
polinomio interpolante i punti (x_i,f_i) calcolato
nel punto k. Il polinomio interpolante e determinato
in base di Lagrange.
Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti
Fri Jun 21 16:52:18 CEST 2004

CAPITOLO 5. APPROSSIMAZIONE DI FUNZIONI

100
11
12
13
14

n=      (x);
% controllo che k non sia un punto da interpolare
(  (x(:) == k)>0)
   (Il punto cercato appartiene ai punti da interpolare);

 

15
16
17
18
19
20

p=ones(n,1);
  i=1:n
  j=1:n
j~=i
p(i)=p(i).(x(i)x(j));

21

23
24
25
26
27
28
29
30

 

 

22



p(i)=f(i)./p(i);

q=1;
s=0;
  i=1:n
a=kx(i);
q=q.a;
s=s+p(i)./a;

31



32

px=q.s;

33

 


Esempi di lagrange.m da pag. 186

5.2

Polinomio Interpolante di Newton

Supponiamo che il polinomio interpolante P n appartenga allo spazio dei


polinomi:

n =< w0 (x), w1 (x), . . . , wn (x) >

5.2. POLINOMIO INTERPOLANTE DI NEWTON

101

dove i wi (x) sono la base di Newton cos definita:


w0 (x) = 1
w1 (x) = x x0
..
.
i1
Y
(x xj )
wi (x) =
j=0

..
.

wn (x) =

n1
Y
j=0

(x xj )

Con questa base dunque il polinomio interpolante pu essere espresso nella


forma:
n
X
Ai wi (x)
Pn (x) =
i=0

Supponiamo di avere ora unulteriore coppia (x n+1 , fn+1 ). Vogliamo che


Pn+1 (x) = Pn (x) +An+1 wn+1 (x)
| {z }
base

Per definizione di w risulta:

Pn+1 (xk ) = Pn (xk ) + An+1 wn+1 (xk ) = f (k)


| {z }

k = 0, . . . , n

=0

e deve accadere:

fn+1 = Pn (xn+1 ) + An+1 wn+1 (xn+1 )


{z
}
|

cio An+1 =

fn+1 Pn (xn+1 )
wn+1 (xn+1 )

6= 0

Diamo ora una definizione pi conveniente di A n+1 .


An+1 =

Pn (xk+1 )
fn+1

=
wn+1 (xn+1 ) wn+1 (xn+1 )

fn+1
n
Y

j=0

(xn+1 xj )

1
n
Y

j=0

(xn+1 xj )

n
X
i=0

n
Y
j=0

fi

(xn+1 xj )

j6=i
n
Y
j=0

j6=i

=
(xi xj )

CAPITOLO 5. APPROSSIMAZIONE DI FUNZIONI

102

fn+1
n
Y

(xn+1 xj )

n
X
fi
1

=
n
Y
(xn+1 xi )
i=0
(xi xj )

j=0

fn+1
n
Y

j=0

j6=i

(xn+1 xj )

n
X
i=0

j=0

j=0

n
X
i=0

(xn+1 xj )

j=0

fi
n
xi xn+1 Y
j=0

n
X
i=0

(xn+1 xj )

j=0

j=0

fi
n+1
Y
j=0

fn+1
n+1
Y

i=0

(xi xj )
1

(xi xj )

(xn+1 xj )

i=0

(xi xj )

j6=i
n
X

fi

n+1
Y
j=0

j6=n+1
n+1
X

j6=i

fn+1
n
Y

j6=i

fn+1
n
Y

fi
n
xn+1 xi Y

(xi xj )

j6=i

fi
n+1
Y
j=0

(xi xj )

j6=i

Definizione 5.2 La definizione del coefficiente k-esimo :


Ak =
dove

k
X

fi
0
w (x )
i=0 k+1 i

wk+1 (x) =

k
Y

(x xj )

j=0
0
wk+1
(x)

k Y
k
X
j=0 i6=j
i=0

(x xi )

I coefficienti Ak sono chiamati differenze divise e talvolta sono rappresentate


come
k
X
fi
f [x0 , . . . , xk ] =
0
wk+1 (xi )
i=0

5.2. POLINOMIO INTERPOLANTE DI NEWTON

103

per indicare differenze divise di ordine k, con k + 1 ascisse.


Vediamone adesso alcune propriet importanti:
1. godono della propriet simmetrica, cio fissati x 0 , x1 , . . . , xn ed un
ordinamento in che una permutazione di {0, 1, . . . , n} si ha
f [x0 , x1 , . . . , xn ] = f [xi0 , xi1 , . . . , xin ]
2. vale la propriet di linearit cio
f [x0 , x1 , . . . , xk ] = g[x0 , x1 , . . . , xk ] + h[x0 , x1 , . . . , xk ]
3. possibile esprimere f [x0 , x1 , . . . , xk ] in funzione di due differenze
divise con k 1 ascisse, cio
f [x0 , x1 , . . . , xk ] =

f [x1 , x2 , . . . , xk ] f [x0 , x1 , . . . , xk1 ]


xk x 0

Forniamo anche la dimostrazione di questultima propriet:


D IMOSTRAZIONE :
Per la definizione di differenza divisa si ha:
f [x0 , x1 , . . . , xk ] =

k
X
i=0

X
fi
fi
=
0
k
wk+1 (xi )
Y
i=0
(xi xj )
j6=i
j=0

quindi
f [x0 , x1 , . . . , xk1 ] =
f [x1 , x2 , . . . , xk ] =

k1
X

fi
0
w (x )
i=0 k i
k
X
fi
0
w (x )
i=1 k+1 i

Segue che
f [x1 , x2 , . . . , xk ] f [x0 , x1 , . . . , xk1 ]
=
xk x 0

X
k1
X

k
1
f
f
i
i

=
=

k
k1
xk x 0
Y

i=1 Y
i=0

(xi xj )
(xi xj )

j6=i
j=1

j6=i
j=0

CAPITOLO 5. APPROSSIMAZIONE DI FUNZIONI

104

X
k
k1
X

fi (xi x0 )
1
fi (xi xk )
=

k
k
xk x 0
Y

i=1 Y
i=0

(x

x
)
(x

x
)
i
j
i
j

j6=i
j=0

j6=i
j=0

k
k
X
1
fi (xi x0 xi + xk ) X
fi

=
k
k
xk x 0
Y
Y
i=0
i=0
(xi xj )
(xi xj )
j6=i
j=0

j6=i
j=0

2
In questo modo si possono calcolare le differenze divise con un algoritmo
ricorsivo, di complessit O(n2 ).
Consideriamo inoltre la seguente ottimizzazione, dato ad esempio:
P3 (x) = a0 + a1 x + a2 x2 + a3 x3 = a0 + x[a1 + x(a2 + a3 x)]
risultando wi+1 (x) = wi (x)(x xi ), otteniamo che
P3 (x) = A0 w0 (x) + A1 w1 (x) + A2 w2 (x) + A3 w3 (x) =
= A0 + A1 (x x0 ) + A2 (x x1 )(x x0 ) + A3 (x x2 )(x x1 )(x x0 ) =
= A0 + (x x0 )[A1 + (x x1 )[A2 + A3 (x x2 )]]

Il calcolo appena effettuato una esemplificazione di come lalgoritmo di


Horner valuti il polinomio interpolante in forma di Newton:
Pn (x) =

n
X

Ai wi (x)

i=0

Listing 5.5: Interpolazione polinomiale con base di Newton




 newtonhorneruni(f, a, b, n, na)

2
3
4
5
6
7
8
9
10
11
12
13
14

% NEWTONHORNERUNI Interpola la f con Horner.


%
newtonhorneruni(f, a, b, n, na) visualizza il polinomio
%
interpolante di Newton calcolato con lalgoritmo di
%
Horner della funzione f.
%
%
I parametri a,b sono gli estremi dellintervallo dove
%
si vuol valutare la funzione.
%
%
Il parametro na rappresenta il numero delle ascisse di
%
interpolazione ed n e il numero di punti per disegnare
%
il grafico del polinomio.
%

5.2. POLINOMIO INTERPOLANTE DI NEWTON


15
16
17
18

%
%
%
%

105

Le ascisse sono equispaziate.


Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti
Fri Jun 21 16:52:18 CEST 2004

19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

% definisco le ascisse e le ord. per disegnare il grafico


xtab=a:(ba)./(n1):b;
% definisco e calcolo i punti da interpolare
x=a:(ba)./(na1):b;
y=   (f,x);
% calcolo le differenze divise
A=differenzedivise(x,y);
% utilizzo horner per calcolarmi i valori del
% polinomio interpolante
px=horner(A,x,xtab);

 on;

  (xtab,px,r,x,y,ko);
ezplot(f,[a,b]);
   on;

  




Esempi di newtonhorneruni.m da pag. 187


1

Listing 5.6: Valutazione di un polinomio in un punto


 
 

[px]=horner(A,x,xtab)

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

% HORNER Calcola il valore del polinomio con Horner.


%
[px]=horner(A,x,xtab) restituisce i valori del
%
polinomio nelle ascisse xtab utilizzando lalgoritmo
%
di Horner.
%
%
Il parametro A sono le differenze divise mentre x
%
sono le ascisse di interpolazione.
%
%
Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti
%
Fri Jun 21 16:52:18 CEST 2004
n=      (A);
m=      (x);
 (n==m)
px(1:     (xtab))=A(n);
  i=n1:1:1
px=A(i)+(xtabx(i)).px;

 



   (Diffenze divise e ascisse devono coincidere in numero);



  



CAPITOLO 5. APPROSSIMAZIONE DI FUNZIONI

106

Listing 5.7: Calcolo delle differenze divise





[A]=differenzedivise(x,f)

2
3
4
5
6
7
8
9
10
11
12
13
14

% DIFFERENZEDIVISE Restituisce le differenze divise


%
[A]=differenzedivise(x,f) restituisce le differenze
%
relative alle coppie (x_i, f_i)
%
%
Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti
%
Fri Jun 18 09:45:10 CEST 2004

  (x);
n=   
m=   
  (f);

(n==m)
A=f;

15

% calcolo le differenze divise utilizzando


% la proprieta che esse possono essere definite
% in funzione di differenze divise con meno ascisse.
  k=1:(n1)
  j=(n):1:(k+1)

16
17
18
19
20
21

A(j)=(A(j)A(j1))./(x(j)x(jk));

22
23
24
25
26
27
28
29

 

 

 

   (Ascisse e ordinate devono corrispondere in numero);



 


La complessit dellalgorimo di Horner dellordine di O = (3n). Un altro


metodo che analizzeremo lalgoritmo di Neville:
Pn{x0 ,x1 ,...,xn } (x)
questo viene scomposto in due polinomi dove si elimina rispettivamente
lultimo e il primo elemento
Pn1{x0 ,...,xn1 } (x)

Pn1{x1 ,...,xn } (x)

allora ci chiediamo se vera la seguente equazione


Pn{x0 ,x1 ,...,xn } (x) =

(x x0 )Pn1{x1 ,...,xn } (x) + (xn x)Pn1{x0 ,...,xn1 } (x)


xn x 0

Per far questo calcoliamo il polinomio appena scritto nei punti interni allintervallo {x0 , x1 , . . . , xn } e cio
Pn{x0 ,x1 ,...,xn } (xj ) =
=

(xj x0 )Pn1{x1 ,...,xn } (xj ) + (xn xj )Pn1{x0 ,...,xn1 } (xj )


=
xn x 0
fj (xj x0 + xn xj )
= fj
j = 1, . . . , n 1
xn x 0

5.2. POLINOMIO INTERPOLANTE DI NEWTON

107

Segue che interpola abbastanza bene per i punti interni, ma non sappiamo
come si comporta considerando gli estremi:
(xn x0 )f0
= f0
xn x 0
(xn x0 )fn
Pn{x0 ,x1 ,...,xn } (xn ) =
= fn
xn x 0
Pn{x0 ,x1 ,...,xn } (x0 ) =

Abbiamo visto quindi che si comporta bene ovunque. Definiamo adesso


alcune notazioni:
Definizione 5.3 Il valore dellunico polinomio di Neville di grado k che
calcolato in x definito come segue
Ti k = Pk{xik ,...,xi } (x) =

(x xik )Ti k1 + (xi x)Ti1 k1


=
xi xik
x xi
= Ti k1 +
(Ti k1 Ti1 k1 )
xi xik

Abbiamo cio ottenuto la definizione del polinomio attraverso un termine sommato ad una correzione dei precedenti, condizione assai preferibile
rispetto alle formule gi viste.
f0
f1
f2
..
.

T0 0
T1 0
T2 0
..
.

fn Tn 0

&
T1 1
&
T2 1

&
T2 2

&
Tn 1

...

&
Tn n

si noti che Ti,k interpola su tutte le ascisse e laggiunta di una nuova ascissa
comporta solo laggiunta di una nuova riga e quindi il costo lineare. Il
costo dellintero algoritmo O(n2 ).


1

Listing 5.8: Interpolazione polinomiale con Neville


 
 

newtonnevilleuni(f, a, b, n, na)

2
3
4
5
6
7
8

% NEWTONNEVILLEUNI Interpola la f con Neville.


%
newtonnevilleuni(f, a, b, n, na) visualizza il polinomio
%
interpolante di Newton calcolato con lalgoritmo di
%
Neville della funzione f.
%
%
I parametri a,b sono gli estremi dellintervallo dove

CAPITOLO 5. APPROSSIMAZIONE DI FUNZIONI

108
9
10
11
12
13
14
15
16
17
18

%
%
%
%
%
%
%
%
%
%

si vuol valutare la funzione.


Il parametro na rappresenta il numero delle ascisse di
interpolazione ed n e il numero di punti per disegnare
il grafico del polinomio.
Le ascisse sono equispaziate.
Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti
Fri Jun 21 16:52:18 CEST 2004

19
20
21
22
23
24
25
26
27
28
29
30
31
32

% definisco le ascisse e le ord. per disegnare il grafico


xtab=a:(ba)./(n1):b;
% definisco e calcolo i punti da interpolare
x=a:(ba)./(na1):b;
y=   (f,x);
% utilizzo neville per calcolarmi i valori del
% polinomio interpolante
px=neville(x,y,xtab);

  on;

  (xtab,px,r,x,y,ko);
ezplot(f,[a,b]);
   on;

 






Listing 5.9: Calcolo polinomio con Neville


[p]=neville(x,f,xtab)

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

% NEVILLE Calcola il valore del polinomio con Neville.


%
[p]=neville(x,f,xtab) restituisce i valori del
%
polinomio nelle ascisse xtab utilizzando lalgoritmo
%
di Neville.
%
%
Le x sono le ascisse di interpolazione, le f le
%
ordinate.
%
%
Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti
%
Fri Jun 21 16:52:18 CEST 2004
n=      (x);
m=      (f);
 (m==n)
  j=1:    (xtab)
px=f;
  i=1:n
  k=n:1:i+1
px(k)=px(k)+(px(k)px(k1)).((xtab(j)x(k))...
./(x(k)x(ki)));

22

 

23
24
25
26

 

 

 

p(j)=px(n);

5.3. CONDIZIONAMENTO DEL PROBLEMA


27
28
29

109

   (Ascisse e ordinate devono corrispondere in numero);



  


Esempi di neville.m da pag. 189

5.3

Condizionamento del problema

Assumiamo che non ci siano perturbazioni sulle ascisse, cio invece che avere le coppie del tipo (xi , fi ) con i = 0, . . . , n si hanno dei dati perturbati
(xi , fi ) con i = 0, . . . , n. Si suppone cio di avere solo errori di misura, di
calcolo dei valori della funzione. In questo modo il polinomio interpolante
espresso, rispettivamente nel caso teorico e in quello perturbato
Pn (x) =

n
X

fi Li n (x)

Pn (x) =

i=0

n
X

fi Li n (x)

i=0

L errore dingresso e di uscita sono quindi dati da:


In = max |fi fi |

Out = max |Pn (x), Pn (x)| = ||Pn (x) Pn (x)||

i=0,...,n

x[a,b]

Quindi usando la formula di Lagrange di prima otteniamo


Pn (x) Pn (x) =

n
X
i=0

(fi fi )Li n (x)

e passando ai valori assoluti, per stimare una maggiorazione, abbiamo


|Pn (x) Pn (x)| =

n
X
i=0

|fi fi |Li n (x)

max |fj fj |

j=0,...,n

n
X
i=0

n
X
i=0

|fi fi ||Li n (x)|

|Li n (x)|

Quindi
max |Pn (x) Pn (x)| max |fj fj | max
j=0,...,n

x[a,b]

n
X
i=0

|Li n (x)|

{z

CAPITOLO 5. APPROSSIMAZIONE DI FUNZIONI

110

dove n detta costante di Lebesgue, un coefficiente che misura una amplificazione dellerrore e dipende dalle ascisse di interpolazione x 0 , . . . , xn .
Studiamo allora il condizionamento del problema in base alle scelte che si
fanno sulle ascisse. stato stimato che il coefficiente di amplificazione n
cresce esponenzialmente scegliendo ascisse uniformemente spaziate, mentre con una scelta pi oculata, per esempio le ascisse di Chebyshev, tale crescita logaritmica, cio estremamente pi lenta.
In particolare, se n :
Ascisse di Chebyshev

n '
n '

Ascisse equispaziate

log n

2n+1
en log n

Vediamo ora come si ottengono le appena citate ascisse di Chebyshev.


Definizione 5.4 Sono definite nellintervallo [1, 1] come segue:
xi = cos

(2i + 1)
2n + 2

Se volessimo tuttavia generalizzare lintervallo di considerazione ad [a, b], la


definizione cambierebbe in
xi =

a+b ba
(2i + 1)
+
cos
2
2
2n + 2

preferibile usare questo tipo di ascisse nei calcoli, ma non sempre possibile poich non sempre siamo a conoscenza di tutti i valori delle f (x i ). Il
calcolo delle ascisse di Chebyshev ha complessit lineare.





Listing 5.10: Ascisse di Chebyshev


[x]=chebyshev(a,b,n)

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

% CHEBYSHEV Calcola le ascisse di Chebyshev


%
[x]=chebyshev(a,b,n) restituisce n ascisse di Chebyshev
%
relative allintervallo [a,b]
%
%
Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti
%
Fri Jun 18 09:45:10 CEST 2004
ab=(a+b)./2;
ba=(ba)./2;
% calcolo le ascisse
i=1:1:n;
x=   (1,n);
x(:)=  (
(1+2.i(:))/(2n+2));
% normalizzo per lintervallo [a,b]
x=ab+ba.x;

 


5.3. CONDIZIONAMENTO DEL PROBLEMA

111

Listing 5.11: Interpolazione polinomiale con algoritmo di Horner e ascisse


di Chebyshev
1

 
 

newtonhornercheby(f, a, b, n, na)

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

% NEWTONHORNERCHEBY Interpola la f con Horner.


%
newtonhornercheby(f, a, b, n, na) visualizza il polinomio
%
interpolante di Newton calcolato con lalgoritmo di
%
Horner della funzione f.
%
%
I parametri a,b sono gli estremi dellintervallo dove
%
si vuol valutare la funzione.
%
%
Il parametro na rappresenta il numero delle ascisse di
%
interpolazione ed n e il numero di punti per disegnare
%
il grafico del polinomio.
%
%
Le ascisse sono determinate con Chebyshev.
%
%
Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti
%
Fri Jun 21 16:52:18 CEST 2004

19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

% definisco le ascisse e le ord. per disegnare il grafico


xtab=a:(ba)./(n1):b;
% definisco e calcolo i punti da interpolare
x=chebyshev(a,b,na);
y=   (f,x);
% calcolo le differenze divise
A=differenzedivise(x,y);
% utilizzo horner per calcolarmi i valori del
% polinomio interpolante
px=horner(A,x,xtab);

 on;

  (xtab,px,r,x,y,ko);
ezplot(f,[a,b]);
   on;

  




Esempi di newtonhornercheby.m da pag. 188

Listing 5.12: Interpolazione polinomiale con algoritmo di Neville e ascisse


di Chebyshev
1

 
 

newtonnevillecheby(f, a, b, n, na)

2
3
4
5
6

% NEWTONNEVILLECHEBY Interpola la f con Neville.


%
newtonnevillecheby(f, a, b, n, na) visualizza il polinomio
%
interpolante di Newton calcolato con lalgoritmo di
%
Neville della funzione f.

CAPITOLO 5. APPROSSIMAZIONE DI FUNZIONI

112
7
8
9
10
11
12
13
14
15
16
17
18

%
%
%
%
%
%
%
%
%
%
%
%

I parametri a,b sono gli estremi dellintervallo dove


si vuol valutare la funzione.
Il parametro na rappresenta il numero delle ascisse di
interpolazione ed n e il numero di punti per disegnare
il grafico del polinomio.
Le ascisse sono determinate con Chebyshev.
Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti
Fri Jun 21 16:52:18 CEST 2004

19
20
21
22
23
24
25
26
27
28
29
30
31
32

% definisco le ascisse e le ord. per disegnare il grafico


xtab=a:(ba)./(n1):b;
% definisco e calcolo i punti da interpolare
x=chebyshev(a,b,na);
y=   (f,x);
% utilizzo neville per calcolarmi i valori del
% polinomio interpolante
px=neville(x,y,xtab);

  on;

  (xtab,px,r,x,y,ko);
ezplot(f,[a,b]);
   on;

 


Esempi di newtonnevillecheby.m da pag. 190

5.4

Errore di interpolazione

Facciamo ora alcune considerazioni sullerrore dinterpolazione, cio come


una funzione pu essere approssimata con il polinomio interpolante. Abbiamo
n
i1
X
Y
Pn (x) =
f [x0 , x1 , . . . , xi ]wi (x) con wi (x) =
(x xk )
i=0

k=0

e queste sono date dalle coppie (xi , fi ) con i = 0, . . . , n e xi 6= xj i 6= j.


L errore di interpolazione dato da
En (x) = f (x) Pn (x)

dove x un punto non compreso nelle ascisse di interpolazione.


Indichiamo con Pn+1 (x) il polinomio interpolante di grado n + 1 ottenuto
con le coppie (xi , fi ) e la coppia (x, f (x)). Abbiamo
Pn+1 (x) = Pn (x) + f [x0 , x1 , . . . , xn , x]wn+1 (x)

5.4. ERRORE DI INTERPOLAZIONE

113

e visto che, per costruzione


Pn+1 (x) = f (x)
segue che
En (x)

}|
{
z
f (x) Pn (x) = Pn+1 (x) Pn (x) = f [x0 , x1 , . . . , xn , x]wn+1 (x)

dove si noti che wn+1 (x) non dipende dalla interpolazione. funzione.
Lemma 5.5 Sia f della classe C n+1 ([a, b]) e (x0 , x1 , . . . , xn , x) [a, b]. Allora
[a, b] tale che
f (n+1) ()
f [x0 , x1 , . . . , xn , x] =
(n + 1)!
E conseguentemente
En (x) =

f (n+1) ()
wn+1 (x)
(n + 1)!

D IMOSTRAZIONE :
Consideriamo la funzione
g(x) = f (x) Pn+1 (x)
Questa si annulla in tutti gli xi ed in x, cio in (n + 2) punti distinti appartenenti allintervallo [a, b]. Quindi
g 0 avr (n + 1) zeri distinti nellintervallo
g 00 avr (n) zeri distinti nellintervallo
.
..
g (n+1) avr uno zero nellintervallo, chiamiamolo
Risulta
(n+1)

0 = g (n+1) () = f (n+1) () Pn+1 () =

= f (n+1) () (n + 1)!f [x0 , x1 , . . . , xn , x]

da cui la tesi.
2
Vediamo la conseguenza di questo teorema: se f sufficientemente regolare
in [a, b], tale che
f (n+1) ()
En (x) =
wn+1 (x)
(n + 1)!
Quindi
||En || = max |En (x)|
x[a,b]

||f (n+1) ||
||wn+1 (x)||
(n + 1)!

CAPITOLO 5. APPROSSIMAZIONE DI FUNZIONI

114

Ma, in base alla regolarit di f ed in base al fatto che


|wn+1 (x)| =
Si ha
||En ||

n
Y
i=0

|x xi |

Mn+1
(b a)n+1
(n + 1)!

che, per n converge a 0.


Nella formula precedente




Mn+1 = max f (n+1)
x[a,b]

una costante che rappresenta un limite superiore alla derivata n + 1-esima


della funzione.
Teorema 5.6 (di Jackson) Sia f C 0 ([a, b]). Risulta


ba
||En (f )|| Mf (1+n ) f,
dove (f, ) =
n

sup |f (x)f (y)|

x,y[a,b]
|xy|

Se f C 1 ([a, b]) allora


|f (x) f (y)| = |f 0 ()| |x y| |f 0 ()| Cf
dove Cf una costante che limita la derivata prima.
Corollario 5.7 Se f C 1 ([a, b]) allora Cf tale che
||En (f )|| Mf Cf

5.5

ba
(1 + n )
n

Splines

Abbiamo visto che nei metodi definiti in precedenza non necessariamente


allaumentare del grado del polinomio interpolante si osserva un miglioramento dellapprossimazione. Anzi, in generale accade proprio il contrario,
infatti aumentano le oscillazioni fra i punti. Sapendo che con la diminuzione dellampiezza dellintervallo lapprossimazione migliora, nasce lidea
di suddividere questo in tanti sotto-intervalli. Questa appunto lidea delle
splines.
Una spline di grado m e nodi (x0 , x1 , . . . , xn ) una funzione polinomiale a
tratti. Essa una funzione del tipo
S : [a, b] R
con a = x0 < x1 < . . . < xn = b. Valgono inoltre le seguenti propriet:

5.5. SPLINES

115

1. S[xi ,xi+1 ] m

i = 0, 1, . . . , n 1

2. S C m1 ([a, b])
m
3. m S
n
m uno spazio di funzioni e indichiamo con linsieme dei nodi,
dove S
n
n
cio la partizione. Una spline si dice lineare se m = 1, quadratica se m = 2
mentre cubica se m = 3.
y

a= x0

x1 x2

x3

x4=b

Figura 5.1: Funzione spline

5.5.1 Splines cubiche interpolanti nei nodi


Siano date (n + 1) coppie (xi , fi ) con i = 0, 1, . . . , n e sia
a = x0 < x1 < . . . < xn1 < xn = b
linsieme dei punti da interpolare. Fisso lo spazio per questo tipo di spline
3 .
con S
n
I gradi di libert2 di una generica linea spezzata sono n(m + 1) visto che in
tutti gli n intervalli si cerca un polinomio di grado m, mentre per una spline
generica diventano n + m, infatti
m
= n(m + 1) m(n 1) = n + m
dimS
n

Questo deriva dal fatto che il polinomio di ogni intervallino della classe
C m1 e dobbiamo imporre delle restrizioni affinch ci sia un raccordo fra i
vari tratti in ognuno di n 1 punti interni. Dunque nel caso di splines cubiche la dimensione dello spazio n + 3. Notiamo che finora abbiamo cercato
2

il numero di condizioni da imporre per determinare univocamente una spline allinterno


di uno spazio di funzioni, sono pari alla dimensione dello spazio

CAPITOLO 5. APPROSSIMAZIONE DI FUNZIONI

116

S(x) = fi dove le x sono le ascisse dinterpolazione e queste sono proprio


n + 1 condizioni. Daltra parte abbiamo appena dimostrato che necessitiamo
di n + 3 condizioni nel caso cubico. Le due condizioni ausiliarie da imporre
saranno stabilite agli estremi dellintervallo.
Introduciamo adesso il concetto di momento (derivata seconda della spline):
Mi = S 00 (xi )
i = 0, 1, . . . , n
Vediamo adesso una proposizione interessante:
p
p1
Proposizione 5.8 Sia Si
con p > 1, allora 0 Si

Quindi la derivata seconda di una spline cubica in un intervallo I i una


funzione lineare, infatti
S 00 (x) = Mi

x xi
xi+1 x
+ Mi+1
hi+1
hi+1

con hi+1 = xi+1 xi

e questo x [xi , xi+1 ] e i = 0, . . . , n 1. Questa equazione lespressione


della retta passante per i due punti (x i , Mi ) e (xi+1 , Mi+1 ). Integrando due
volte si ha
S(x) = Mi

(x xi )3
(xi+1 x)3
+ Mi+1
+ Ai (x xi ) + Bi
6hi+1
6hi+1

e questo sempre x [xi , xi+1 ] e i = 0, . . . , n 1.


Il nostro obiettivo dunque
(

h2
S(xi )
= fi
Mi i+1
= fi
6 + Bi

2
h
S(xi+1 ) = fi+1
Mi+1 i+1
6 + Ai hi+1 + Bi = fi+1
Quindi risolvendo i termini Ai e Bi :
(
h2
Bi = Mi i+1
6 + fi
h
1
Ai = hi+1 (fi+1 Bi ) Mi+1 i+1
6 =

fi+1 fi
hi+1

hi+1
6 (Mi+1

Mi )

Per determinare univocamente la funzione manca solo da raccordare le derivate prime fra intervalli adiacenti in nodi interni. Quindi la derivata prima

S 0 (x) = Ai Mi

(xi+1 x)2
(x xi )2
+ Mi+1
2hi+1
2hi+1

Visto che dobbiamo calcolarla in xi , diventa:


hi+1
Mi
2
hi
= Ai1 + Mi
2

S 0 (xi )+ = Ai
S 0 (xi )

x [xi , xi+1 ]

5.5. SPLINES

117

dobbiamo imporre la giunzione delle splines nel punto x i quindi


fi+1 fi hi+1
hi+1
fi fi1 hi
hi

(Mi+1 Mi )
Mi =
(Mi Mi1 )+ Mi
hi+1
6
2
hi
6
2
per tutti i nodi interni, cio i = 1, . . . , n 1. Riscrivendo questa equazione
otteniamo


fi+1 fi fi fi1
hi Mi1 + 2(hi + hi+1 )Mi + hi+1 Mi+1 = 6

hi+1
hi
dividiamo per hi + hi+1 e poniamo i =
i Mi1 +2Mi +i Mi+1

hi+1
hi +hi+1

e i = 1 i e quindi



6
fi+1 fi fi fi1
=

hi + hi+1
hi+1
hi
{z
}
|

i = 1, . . . , n1

di

Splines Cubiche Naturali

Le spline di questo tipo soddisfano le condizioni:


1. S 00 (x0 ) = 0 M0 = 0
2. S 00 (xn ) = 0 Mn = 0
Ottengo cos un sistema di equazioni di tipo tridiagonale come segue

M1
d1
2 1 0
...
0

..

..
..

.
2 2 2
.
.

..

.
.
.
.
.
.. ..
..
=

0
.
0
.

..
..
..
..
..
.
.
.
. n2
.
0 . . . 0 n1
2
Mn1
dn1

segue che esiste ed unica la soluzione. 3



1

Listing 5.13: Spline cubica naturale


 
 

 
 (F,x,npassi)

2
3
4
5
6
7
8

% SPLINE Disegna la spline cubica interpolante.


%
spline(F,x,npassi) disegna la spline cubica interpolante
%
le coppie (x,F(x)), con x vettore delle ascisse ed f nome
%
della funzione da interpolare.
%
%
Il parametro npassi rappresenta il numero di punti utilizzati
3

N.B. La soluzione esiste unica in quanto la matrice tridiagonale strettamente a diagonale dominante e dunque non singolare, quindi fattorizzabile LU. La complessit
dellalgorimo di risoluzione del sistema tridiagonale O(3n).

CAPITOLO 5. APPROSSIMAZIONE DI FUNZIONI

118
9
10
11
12

%
%
%
%

per disegnare la funzione F.


Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti
Fri Jun 18 09:14:20 CEST 2004

13
14
15

%n il numero naturale corrispondente ad x_n


n=      (x)1;

16
17
18

% ordino il vettore (perche le ascisse mi servono ordinate)


x=    (x);

19
20
21

% imposto gli estremi


a=x(1); b=x(n+1);

22
23
24
25
26
27

% calcolo gli h_i


h=   (n,1);
  i=1:n
h(i)=x(i+1)x(i);



28
29
30

% calcolo lordinata dei punti da interpolare


f(1:n+1)=   (F,x(1:n+1));

31
32
33
34
35
36

% vettore dei termini noti del sistema tridiagonale


d=   (n1,1);
  i=2:n
d(i1)=6.((f(i+1)f(i))/h(i)((f(i)f(i1))/h(i1)));



37
38
39
40
41
42
43
44
45
46
47
48
49
50

%
%
%
%
%
%
%
%

Imposto il sistema tridiagonale:


Nel vettore DIAGL memorizzo la diagonale.
Nel vettore LAMBDA memorizzo la sovradiagonale.
NOTA BENE :
Non passiamo a FATT_TRID_ALU la sottodiagonale MU poich
essa uguale alla sovradiagonale, per la propriet
lambda(i)=mu(i+1),

per ogni i=1...n2

  i=1:n1
lambda(i)=h(i+1);
diagl(i)=2(h(i)+h(i+1));


51
52
53
54

% calcolo i momenti
M=   (n+1,1);
M(2:n)=fatt_trid_ALU_spline(lambda,diagl,n,d);

55
56
57
58
59
60

%Calcolo i coefficienti della spline cubica naturale


  i=1:n
A(i)=(f(i+1)f(i))/h(i)(h(i)/6)(M(i+1)M(i));
B(i)=f(i)h(i)^2/6M(i);



61
62

% Procedo al calcolo dei valori assunti dalla

5.5. SPLINES
63
64
65
66
67
68
69

% spline interpolante nei punti da noi considerati


xtab=a:(ba)/(npassi1):b;
interval=1;
  i=1:npassi
ytab(i)=   (F,xtab(i));
 xtab(i)>x(interval+1)
interval=interval+1;



70

s(i)=((xtab(i)x(interval))^3)M(interval+1);
s(i)=s(i)+((x(interval+1)xtab(i))^3)M(interval);
s(i)=s(i)/(6h(interval));
s(i)=s(i)+A(interval)(xtab(i)x(interval))+B(interval);

71
72
73
74
75

119



76
77
78
79
80

% disegno spline e funzione originale

  (xtab,ytab,b,xtab,s,r,x,f,ko);
   on;

  




Esempi di spline.m da pag. 190


1

Listing 5.14: Fattorizzazione matrice tridiagonale


 
 

[x] = fatt_trid_ALU_spline(lambda,diagl,n,f)

2
3
4
5
6
7
8
9
10
11
12
13

% FATT_TRID_ALU_SPLINE Risolve il sistema triadiagonale.


%
[x] = fatt_trid_ALU(A, f) risolve il sistema tridiagonale
%
Ax=f.
%
%
La matrice A deve essere quadrata.
%
Il vettore LAMBDA rappresenta la sovradiagonale della
%
matrice tridiagonale.
%
La diagonale rappresentata dal vettore DIAGL.
%
%
Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti
%
Fri Jun 18 09:45:10 CEST 2004

14
15
16
17
18

% Determino la sottodiagonale MU, sfruttando il fatto


% che in questo caso sovradiagonale=sottodiagonale.
mu=lambda;

19
20
21
22
23
24
25
26

% triangolarizzazione di Gauss
  k=1:n2
 diagl(k)==0



 

mu(k)=mu(k)./diagl(k);
diagl(k+1)=diagl(k+1)mu(k).lambda(k);

CAPITOLO 5. APPROSSIMAZIONE DI FUNZIONI

120
27
28



f(k+1)=f(k+1)mu(k).f(k);

29
30
31
32
33
34

%Controllo che lultimo elemento della diagonale


% non sia zero.
 diagl(n1)==0





35
36
37
38
39
40
41
42
43

% risoluzione allindietro del sistema


f(n1)=f(n1)./diagl(n1);
  k=n2:1:1
f(k)=(f(k)lambda(k).f(k+1))./diagl(k);



% Metto nel vettore x il risultato.


x=f;

 


Splines Cubiche Periodiche


La funzione da interpolare periodica di periodo [a, b], abbiamo cio
1. S 0 (x0 ) = S 0 (xn )
2. S 00 (x0 ) = S 00 (xn ) M0 = Mn
Esemplificando le condizioni precedenti con i calcoli fatti allinizio del paragrafo, avremo che

h21 M0 +

A0
f1 f0
h1

h1
2 M0
h61 (M1

=
M0 ) =

Mn h2n + An1
cio
fn fn1
hn
hn
6 (Mn Mn1 )
2 Mn +
hn

da cui, moltiplicando per 6 otteniamo che

h1
h1
f1 f 0
M0 M1 +
3
6
h1

2h1 M0 + h1 M1 + 2hn Mn + hn Mn1


hn Mn1 + 2(h1 + hn )M0 + h1 M1

hn
fn fn1 hn
Mn +
Mn1
+
3
hn
6


f1 f0 fn fn1

= 6
h1
hn


f1 f0 fn fn1
= 6

h1
hn
=

con le definizioni di e fatte in precedenza e ricordando che, per la


periodicit delle spline, f0 = fn e h0 = hn , possiamo scrivere


6
f1 f0 f0 fn1
0 Mn1 + 2M0 + 0 M1 =

h1 + h n
h1
hn

5.5. SPLINES

121

in questo modo dovremo risolvere il sistema definito

M0
2
0 0
...
0
0

..
1

2 1
0
.

.
..
.
.
.
.. ..
..
..
0
.

..

..
.
.
.
..
..
..
.

0
.

..
0
n2
2
n2

.
n1 0 . . .
0
n1
2
Mn1

d0
..
.
..
.
..
.
..
.
dn1

La matrice dei coefficienti appena presentata quasi tridiagonale, comunque a diagonale dominante, perci esiste ed unica la soluzione.
Considerazioni finali sulle spline
Supponendo che
H = max(hi )

h = min(hi )

inoltre supponiamo che f C 4 ([a, b]) si ha la seguente stima dellerrore:


H
7
H5
7
||f (x) S(x)|| M4 H 4 = M4
8
h
8
h
dove M4 dipende dalla funzione. Si noti che il rapporto H
h deve rimanere limitato quindi la condizione migliore si presenta nel momento in cui le
ascisse sono uniformemente distribuite, situazione contraria al caso delle
funzioni polinomiali. Inoltre se H 0 allora anche lerrore tenderebbe a 0.
Proposizione 5.9 Le spline cubiche naturali hanno unimportante propriet:
Data una funzione y C 2 ([a, b]) interpolante le coppie (xi , fi ) con i = 0, . . . , n,
si ha
Z xn
Z xn
2
S(x) dx
y(x)2 dx
x0

x0

dove questi integrali delle derivate seconde prendono il nome di indice di Sard
e rappresentano una misura del grado di oscillazione della funzione.
D IMOSTRAZIONE :
Abbiamo che
(x) + (y(x) S
(x))
y(x) = S
Elevando al quadrato entrambi i termini e passando agli integrali
Z xn
Z xn
Z xn 
Z xn
2


2 dx+

y(x)2 dx =
y(x) S(x)
y(x) S(x)
S(x)
dx+2
dx
S(x)
x0

x0

x0

x0

CAPITOLO 5. APPROSSIMAZIONE DI FUNZIONI

122

la disuguaglianza che vogliamo dimostrare risulta vera se lultimo integrale


nullo, cio se4
Z xn




 xn Z xn


S(x) (x) S(x)


dx =
S(x) y(x) S(x) dx = S(x) (x) S(x)
x0

x0

x0

(x0 ) = S
(xn ) = 0 per definizione di spline naturale e quindi il termine
dove S
non integrato si annulla, inoltre S(x) non continua ma costante a tratti
(la derivata terza di una funzione cubica, quindi una costante). Quindi
=
=
=

n1
X Z xi+1
i=0 xi
n1
X



(x) dx =
S(x) (x) S

Si (x)

i=0
n1
X
i=0

xi+1
xi


(x) dx =
(x) S

xi+1

Si (x) (y(x) S(x))
=0
xi

dal momento che y ed S sono interpolanti nei nodi e dunque uguali negli
estremi.
2

5.6

Minimi Quadrati

Mentre con i metodi precedenti cercavamo dei polinomi che passassero esattamente nei punti assegnati, discutiamo adesso il caso in cui si ricerchi una
funzione che approssimi i punti dati. Questa ricerca dovuta al fatto che a
volte abbiamo una enorme quantit di dati, spesso affetti da errore e necessariamente deve venir meno la condizione di passaggio per i punti (x i , fi )
con i = 0, 1, . . . , n.
Consideriamo come spazio delle funzioni
S =< 0 (x), 1 (x), . . . , m (x) >
quello che faremo assumere che m sia molto minore di n.
Quando si parla di approssimazione dei minimi quadrati si vuole definire
una funzione dello spazio vettoriale S
(x) =

m
X

cj j (x)

j=0

Integrando per parti, cio


Z
Z
f (x)g 0 (x) dx = f (x)g(x) g(x)f 0 (x) dx

5.6. MINIMI QUADRATI

123

x0

x1

x2 x3

x4 x5

x6

Figura 5.2: Esempio minimi quadrati


e si vogliono quindi determinare i coefficienti c j in modo che sia minima la
quantit
n
X
min
(fi (xi ))2
c0 ,c1 ,...,cm

i=0

si noti che le distanze fra i punti e la funzione sono elevate al quadrato per
poter amplificare gli errori pi grandi, in questo modo si ottiene unapprossimazione migliore.
Definiamo quindi la funzione dellerrore come g(c 0 , c1 , . . . , cm ) funzione quadratica e cerchiamo di minimizzarla vedendo dove si annulla il gradiente:
g = 0

g
(c0 , c1 , . . . , cm )
ck

k = 0, . . . , m

dove, per definizione

n
m
X
X
g
fi
= 2
cj j (xi ) k (xi ) = 0
ck
i=0

k = 0, . . . , m

j=0

cio, riscrivendo il tutto in forma esplicita


m
n X
X

cj j (xi )k (xi ) =

cj

j (xi )k (xi )

j=0

n
X
i=0

fi k (xi )

k = 0, . . . , m

fi k (xi )

k = 0, . . . , m

i=0

i=0 j=0

m
X

n
X

{z

mkj
m
X
j=0

!
}

mkj cj

n
X
i=0

= bk

{z
bk

k = 0, . . . , m

CAPITOLO 5. APPROSSIMAZIONE DI FUNZIONI

124

che scritto in forma matriciale forma il sistema lineare detto sistema delle
equazioni normali
Mc = b
dove

n
X

fi 0 (xi )

b0
i=0

..
b = ... =
.
n

X
bm

fi m (xi )

c0

c = ...
cm

i=0

vediamo invece adesso come fatta M ,


mkj =

n
X

j (xi )k (xi )

i=0

notiamo che mjk = mkj cio M simmetrica ed inoltre vogliamo che sia
semi-definita positiva.
Definiamo quindi M = AT A dove A viene detta matrice di collocazione e le
sue dimensioni sono (n + 1) (m + 1):

0 (x0 ) m (x0 )
0 (x0 ) 0 (xn )

..
..
..
..
A=
AT =

.
.
.
.
0 (xn )

m (xn )

m (x0 )

m (xn )

Quindi vediamo che M proprio semi-definita positiva, infatti


xT M x = xT AT Ax = (|{z}
Ax )T |{z}
Ax = y T y 0
y

M : M = AT A

supposto che x 6= 0 vorremmo che M fosse definita positiva, cio che


y T y > 0 e y 6= 0.
Supposto questo sistema rettangolare:
Ax = 0
se rg(A) = m + 1, cio A ha rango massimo, allora esiste solo la
soluzione banale x = 0
se rg(A) < m + 1 allora esiste almeno una soluzione non banale
quindi M definita positiva, cio non singolare, quando A ha rango massimo.
Prendiamo la base canonica e fissato lo spazio S come
S =< 1, x, x2 , . . . , xm >

5.6. MINIMI QUADRATI

125

avremo unapprossimazione ai minimi quadrati di tipo polinomiale. In questo caso la matrice di collocazione A sar una generalizzazione della matrice
di Vandermonde

1 x0 x20 . . . xm
0

..
A = ...
.
1 xn x2n . . . xm
n

(n+1)(m+1)

occorre adesso che sia possibile estrarre un sottoinsieme m + 1 di ascisse


distinte affinch il rango della matrice A sia massimo, ma per la struttura
della matrice di Vandermonde subito verificato.

5.6.1 Condizionamento del problema dei minimi quadrati


Nel metodo dei minimi quadrati si hanno dei problemi se le ascisse sono
concentrate in gruppi e quindi a volte pu essere utile effettuare una preanalisi dei dati in ingresso al fine di minimizzare la computazione. Si cerca
comunque una fattorizzazione QR per risolvere meglio il sistema M c = b
precedentemente analizzato. Come prima, vogliamo minimizzare la quantit
2

m
n
X
X
fi
cj j (xi )
(5.1)
min
c0 ,c1 ,...,cm

con

f0

f = ...
fn

quindi

j=0

i=0

{z

g(c0 ,...,cn )

k (x0 )ck

k=0

..
Ac =
.
m
X

k (xn )ck

c0

c = ...
cm

m
X

k=0

m
X

k (x0 )ck
f0

k=0

..
(f Ac) =
.

X
f
k (xn )ck
n
k=0

riscriviamo allora lequazione (5.1) nella forma matriciale:


min ||f Ac||22
c

CAPITOLO 5. APPROSSIMAZIONE DI FUNZIONI

126

Preso un generico vettore v, allora la sua norma 2 elevata al quadrato


||v||22 = v T v. Se consideriamo una trasformazione ortogonale otteniamo
||Qv||22 = (Qv)T (Qv) = v T QT Qv = v T v
quindi estendendo il metodo di Householder a matrici rettangolari otteniamo infine
min ||f Ac||22 = min ||Qf QAc||22
c

cio la matrice QA, dopo n + 1 passi del metodo di Householder, pu essere


scritta nella forma

a11 a1n

..
..

.
.


0
a
mn
= R

0
0
0

..
..
.
.
0

||Ac

f||22

quindi

 
2
R

=
c f
0
2

dove R
! una matrice triangolare superiore e f = Qf , poi spezzandola in

f1
abbiamo che
f2
 

2
 
  2 
R
1  2

R
f
Rc

f






1


=
0 c f = 0 c f =

f2
2
2
2

= ||Rc f1 ||22 + ||f2 ||22

Questultima quantit si deve minimizzare in base a c. Dal momento che


||f2 ||22 una quantit fissa, il calcolo del minimo si fa risolvendo il sistema
lineare
Rc = f1
le cui soluzioni sono uniche poich det(R) 6= 0, infatti il rango di A
massimo. La complessit dellalgoritmo dei minimi quadrati quindi O(n 3 ).





Listing 5.15: Metodo dei minimi quadrati


minimi_quadrati(x,y,n)

2
3
4
5
6

% MINIMI_QUADRATI Risolve il problema dei minimi quadrati.


%
minimi_quadrati(x,y,n) disegna il grafico del problema
%
dei minimi quadrati, relativo alle coppie (x,f), usando
%
un polinomio di grado n.

5.6. MINIMI QUADRATI


7
8
9

%
%
%

127

Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti


Fri Jun 18 09:14:20 CEST 2004

10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

% creiamo il sistema di Vandermonde (m+1)x(n+1)


V=   (lenght(x),n+1);
V(:,1)=1;
  j=1:n+1
V(:,j)=V(:,j1).x(:);



% visualizzo i punti

 on;
   on;

  (x,y,r);
% risolvo il problema tramite householder
p=risolvi_householder(V,y);
k=reverse(p);
a=  (x);
b=   (x);
xi=a:(ba)/1000:b;
g=    (k,xi);

  (xi,g);

  




Esempi di minimi_quadrati.m da pag. 195

128

CAPITOLO 5. APPROSSIMAZIONE DI FUNZIONI

Capitolo

Integrazione numerica

problema dellintegrazione numerica si presenta laddove i metodi analitici per calcolare le primitive non posso essere utili. Pu infatti succedere che non si conosca la primitiva della funzione integranda o che
questultima non sia in forma analitica, bens definita per punti come nel
caso dellanalisi di risultati sperimentali. importante allora avere dei metodi numerici che ci permettano di fornire unapprossimazione dellintegrale
cercato a partire da un numero finito di valori della funzione da integrare.
Supponiamo di voler approssimare
Z b
I[f ] =
f (x) dx
L

per far ci useremo le formule di quadratura, indicate con


In [f ] =

n
X

wi f (xi )

(6.1)

i=0

dove a = x0 < x1 < . . . < xn = b sono i nodi e w0 , w1 , w2 , . . . , wn sono i


pesi. Diremo che In [f ] ha grado di precisione k se risulta
En [p] = 0
En [xk+1 ] 6= 0

p k
dove

En [f ] = In [f ] I[f ]

6.1

Formule di quadratura interpolatorie

Un approccio estremamente frequente nella costruzione della formula di


quadratura In [f ] consiste nellutilizzare la funzione interpolatoria corrispon129

CAPITOLO 6. INTEGRAZIONE NUMERICA

130

dente ad f fissando i nodi come ascisse dinterpolazione:


In [f ] =

Pn (x) dx

con Pn (x) =

n
X

fi Li n (x)

i=0

con Li n (x) base di Lagrange. Si noti che In [f ] ha grado di precisione almeno


uguale ad n, proprio per il fatto che il polinomio interpolante da noi usato,
Pn (x), esiste unico. Con queste considerazioni possiamo dire che
bk+1 ak+1
=
k+1

xk dx =

n
X

wi xki

k = 0, . . . , n

i=0

quindi
In [f ] =

Z bX
n

fi Li n (x) dx =

a i=0

n
X
i=0

fi

b
a

Li n (x) dx
{z
}
wi

i pesi sono univocamente determinati, infatti sono i coefficienti che si ricavano dal sistema che ha per matrice la matrice di Vandermonde, la cui
soluzione unica.
Dobbiamo ora decidere come prendere gli n + 1 punti: li prendiamo allora equispaziati allinterno dellintervallo [a, b], ottenendo un sottoinsieme delle formule di quadratura interpolatorie, le formule di quadratura di
Newton-Cotes.

6.1.1 Formule di quadratura di Newton-Cotes


Scegliamo li-esima ascissa come
xi = a + i h

dove

h=

ba
n

i = 0, . . . , n

Calcoliamo adesso i pesi wi :


wi =

Li n (x) dx =
a

= h

= h

n
nY

j6=i
j=0
n
nY

j6=i
j=0

n
bY

j6=i
j=0

(x xj )
dx =
(xi xj )

cambiando variabile

t=

xa
h

(a + th a jh)
dt =
(a + ih a jh)
(t j)
(n)
dt = hi
(i j)

(6.2)

6.1. FORMULE DI QUADRATURA INTERPOLATORIE

131

(n)

con il coefficiente i che non dipende da h, ma solo da i e n.


(n)
Ricordando dalla (6.1) e scrivendo che w i = hi abbiamo
In [f ] = h

n
X
i=0

(n)

f (xi )

(6.3)

dove la (6.3) chiamata formula di quadratura di Newton-Cotes.


Vediamo adesso qualche esempio di formule di quadratura al variare del
parametro n. Consideriamo in principio n = 1, quindi a = x 0 , b = x1 e
(1)
h = b a. Determiniamo gli i con i = 0, 1:
Z 1
Z 1
t1
1
t2 1
1
(1)
0
=
dt =
(1 t) dt = t = 1 =
0

1
2
2
2
0
0
0
Z 1
Z 1
t0
1
(1)
1
=
dt =
t dt =
2
0 10
0
quindi

ba
[f (a) + f (b)]
2
tale formula detta anche formula dei trapezi, come vediamo infatti dalla
I1 [f ] =

f(x)
f(b)

f(a)





























a

Figura 6.1: Metodo dei trapezi


figura (6.1) descrive larea del trapezio che approssima lintegrale cercato.
Vediamo che cosa accade se consideriamo n = 2, cio h = ba
2 , a = x0 ,
x1 = a+b
e
b
=
x
.
Quindi,
calcolando
i
pesi
2
2

 2
Z 2
Z

1
(t 1)(t 2)
1 2 2
1 t3 3t2
(2)
=
0
dt =

+ 2t =
(t 3t + 2) dt =
(1)(2)
2 0
2 3
2
3
0
0
 3
 2
Z 2

t
4
8
(2)
(t2 2t) dt = + t2 = + 4 =
=
1
3
3
3
0
0

 3

Z 2
Z 2 2
t(t 1)
1 t
t
t2 2 4
1
t
(2)
=
2
dt =
dt =

= 3 1= 3
2

1
2
2
2
3
2
0
0
0

CAPITOLO 6. INTEGRAZIONE NUMERICA

132
Otteniamo allora





a+b
ba 1

I2 [f ] =
f (a) + 4f
+ f (b)
2
3
2

(6.4)

La (6.4) viene detta formula di Simpson.


Il suo significato geometrico viene espresso nella figura (6.2) .













x1

x0

x2

Figura 6.2: Metodo di Simpson


(n)

Vediamo ora una propriet degli ai :


n
X

(n)

=n

(6.5)

i=0





Listing 6.1: Metodo dei trapezi


[x]=trapezi(f,a,b)

2
3
4
5
6
7
8
9

% TRAPEZI Approssima lintergrale con trapezi


%
[x]=trapezi(f,a,b) restituisce lapprossimazione
%
dellintergrale di f in [a,b] fatta con un
%
singolo passo del metodo dei trapezi.
%
%
Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti
%
Sat Jul 17 20:52:25 CEST 2004

10
11
12
13

% valuto la funzione agli estremi


f_a=   (f,a);
f_b=   (f,b);

14
15
16
17
18

% calcolo lintegrale
x=((ba)/2)(f_a+f_b);

 


6.1. FORMULE DI QUADRATURA INTERPOLATORIE



1

133

Listing 6.2: Metodo di Simpson


 
 

[x]=simpson(f,a,b)

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

% SIMPSON Calcola lintegrale con simpson


%
[x]=simpson(f,a,b) restituisce lintegrale di f
%
in [a,b] utilizzando un singolo passo del metodo
%
di Simpson
%
%
Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti
%
Sun Jul 18 10:05:43 CEST 2004
f_a=   (f,a);
f_b=   (f,b);
f_c=   (f,(a+b)/2);
x=((ba)/6)(f_a+4f_c+f_b);

  




Esempi di trapezi.m e simpson.m da pag. 200

6.1.2 Condizionamento del problema


Studiamo ora come gli errori sui dati si ripercuotino sui risultati delle formule di quadratura, quindi ricordiamo che
In [f ] =

n
X

wi fi

i=0

quindi
e indichiamo le perturbazioni sui dati con f,
In [f] =

n
X

wi fi

i=0

Consideriamo allora lerrore nei risultati





n
n

X


X






|wi |[fi fi ]
wi [fi fi ]
In [f] In [f ] =



i=0

i=0

n
X



max [fi fi ]
|wi |

i=0,...,n

(6.6)

i=0

dove la sommatoria della (6.6) indica il numero di condizionamento, chiamiamolo kn . Se i pesi sono tutti positivi possiamo togliere i valori assoluti e

CAPITOLO 6. INTEGRAZIONE NUMERICA

134
quindi
n
X
i=0

|wi | =

n
X

wi

i=0
n
X

= h

ma per la (6.2) risulta


(n)

ma per la (6.5) risulta

i=0

= nh =n

ba
= ba
n

segue che in questo caso kn = b a.


Per le formule di Newton-Cotes si pu dimostrare che
se n 7

allora i wi sono tutti positivi, quindi kn = b a

se n 8

allora il condizionamento degenera, dunque k n >> b a

Analizziamo adesso lerrore nelle formule di Newton-Cotes: se



0 se n dispari
f C n+1+k ([a, b])
con k =
1 se n pari
allora lerrore su f pu essere scritto come
En [f ] = n hn+2+k f (n+1+k) ()

con (a, b)

in generale lerrore non converge sempre per n .


Vediamo adesso alcuni esempi al variare di n:
n = 1 siamo nel caso della formula dei trapezi, impostiamo k = 0, abbiamo
quindi h3 e f 00
n = 2 siamo nella formula di Simpson, impostiamo k = 1, abbiamo quindi
h5 e f (4) .
n = 3 siamo nella formula dei 3/8, detta pulcherrima, non cambia lordine
dellerrore, infatti h5 e f (4) , come in precedenza
Infine scriviamo lequazioni dellerrore 1 nei due casi pi significativi:
E1 [f ] = 1 h3 f (2) (1 )
5 (4)

E2 [f ] = 2 h f

(2 )

(6.7)
(6.8)

1
Per completezza citiamo i primi due valori di che verranno utilizzati nei codici
rispettivamente di trapezi e Simpson:

1 =

1
12

2 =

1
90

6.1. FORMULE DI QUADRATURA INTERPOLATORIE

135

6.1.3 Formule di quadratura composite


Abbiamo visto che nelle formule di quadratura di Newton-Cotes, quando
n > 7 lerrore risulta inaccettabile e il problema malcondizionato. Per
ovviare a questo tipo di inconveniente sono state studiate due soluzioni:
1. si suddivide lintervallo di integrazione
2. si scelgono particolari ascisse che rendono il problema ben condizionato
Nel nostro studio considereremo solo il primo caso, che ci porta in particolare a studiare le formule di quadratura composite. Si divide quindi lintervallo [a, b] in m sottointervalli non necessariamente omogenei per calcolare
quindi lintegrale nelle singole porzioni. Definiamo quindi
j = 0, . . . , m 1

Ij = [yj , yj+1 ]

hj =

yj+1 yj
n

e calcoliamo lintegrale appunto come


Z

f (x) dx =

m1
X Z yj+1
j=0

f (x) dx

yj

Segue che, usando le formule di Newton-Cotes con gli intervalli tutti della
stessa ampiezza otteniamo
In,m [f ] =

m1
X
j=0

hj

n
X

(n)

i f (yj + ihj )

i=0

e di conseguenza
H=

ba
= yj+1 yj
m

j = 0, . . . , m 1 h =

ba
mn

(6.9)

Se invece consideriamo la formula di quadratura composita dei trapezi, indicandola con In,m [f ] = IT [f ], abbiamo che, con h = ba
m e n = 1:
IT [f ] = I1,m [f ] =

m1
1 ba X
(f (yj ) + f (yj+1 )) =

2
m
j=0

m1
X
h
f (a + jh) + f (b)
f (a) + 2
2
j=1

L ultimo caso trattato sono le formule di quadratura composite di Simpson,


dove n = 2 e si necessita di 3 punti per il calcolo dellintegrale. In questo
caso si prendono gli estremi dellintervallino e il loro punto medio, anche se

CAPITOLO 6. INTEGRAZIONE NUMERICA

136

il valore del punto medio calcolato una sola volta: si valuta per il calcolo
dellintegrale fra il primo estremo e il punto medio e poi si riusa la valutazione appena fatta per il calcolo fra il punto medio e il secondo estremo.
Dalla formula generica (6.9), h = ba
2m e il relativo integrale diventa:
m1
h X
IS [f ] =
[f (yj ) + 4f (yj + h) + f (yj+1 )] =
3
j=0

ma riscriviamola meglio ottimizzando la valutazione del punto medio come


precedentemente illustrato

2m1
2m
X
X

h
f
(a
+
jh)
+
2
f (a + jh) + f (b)
f
(a)
+
4

3
j pari
j=1

j dispari
j=1

Torniamo adesso a parlare dellerrore che si introduce con i calcoli.


Per calcolare lerrore in questa circostanza si sommano gli errori commessi
nei singoli intervallini e quindi la (6.7) e (6.8) diventano rispettivamente:
E1,m [f ] = 1

m1
X

h3 f (2) (j ) = 1 H 3

= 1 (b a)H 2
E2,m [f ] = 2

f (2) (j ) =

j=0

j=0

m1
X

m1
X

1
m

m1
X

f (2) (j )

(6.10)

j=0

h5 f (4) (j )

j=0

dove j un punto opportuno compreso in Ij e cambia per ogni intervallo.


Notiamo che nella (6.10), se la funzione di classe C 2 , cio sufficientemente regolare, allora vale il teorema della media:
[a, b] : f

(2)

m1
1 X (2)
() =
f (j )
m
j=0

allora lequazione dellerrore si riscrive infine:

E1,m [f ] = 1 (b a)H 2 f (2) ()


vediamo che se H 0 allora anche lerrore E 1 [f ] 0; cio il grado di
precisione rimane lo stesso della formula precedente, ma adesso lerrore
converge al ridurre dellampiezza dellintervallo.
Analizziamo adesso in dettaglio lerrore per le formule di quadratura composite di Simpson. Sia:
H
h=
2

6.1. FORMULE DI QUADRATURA INTERPOLATORIE

137

e supponiamo che la f sia di classe C 4 , quindi lerrore diventa


E2,m [f ] = 2 h

m1
X
j=0

(4)

m1
1 X (4)
2 4
f (j )
(j ) = H (b a)
32
m
j=0

2 4
H (b a)f (4) ()
=
32
(b a) 4 (4)
=
h f ()
180

adesso il grado di precisione 3, infatti lerrore converge a 0 pi velocemente rispetto al caso dei trapezi.


1

Listing 6.3: Calcolo integrale


 
 

integrali(f,primitiva,a,b,d,toll)

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

% INTEGRALI Funzione comparativa per le formule di quadratura di


%
NewtonCotes.
%
integrali(f,primitiva,a,b,d,toll) restituisce il valore
%
dellintegrale della funzione f calcolato fra a e b, con
%
la tolleranza desiderata ed utilizzando il metodo scelto
%
grazie al parametro d:
%
%
d=
%
1) Trapezicomposita
%
2) Simpsoncomposita
%
%
%
Se si sceglie una formula composita, viene stampato il numero
%
dei sottointervalli.
%
Se si sceglie una formula adattiva, viene stampato un grafico
%
indicativo dellesecuzione del metodo.
%
%
Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti
%
Sun Jul 18 13:00:43 CEST 2004
int=   (primitiva,b)   (primitiva,a);
metod_int=0;
n=0;

(intmetod_int) > toll
   
n=n+1;
switch d
case 1
metod_int=trapezi_composita(f,a,b,n);
case 2
metod_int=simpson_composita(f,a,b,n);
otherwise
   (Attenzione! Parametri errati.);



  (Il valore dellintegrale calcolato con la primitiva

CAPITOLO 6. INTEGRAZIONE NUMERICA

138
38
39
40
41
42
43






(int)
(Il valore dellintegrale calcolato con il metodo
(metod_int)
(ottenuto con un numero di suddivisioni pari a =)
(n)


 






Listing 6.4: Metodo composito dei trapezi


[x]=trapezi_composita(f,a,b,n)

2
3
4
5
6
7
8
9

% TRAPEZI_COMPOSITA Calcola lintegrale con il metodo dei trapezi


%
[x]=trapezi_composita(f,a,b,n) restituisce in x il valore
%
dellintegrale della funzione f calcolato fra a e b,
%
suddividendo tale intervallo in n parti.
%
%
Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti
%
Sat Jul 17 21:19:43 CEST 2004

10
11
12
13
14
15
16
17
18
19

h=(ba)/n;
% creo il vettore delle ascisse
x=a:h:b;
% valuto la funzione nelle ascisse
y=   (f,x);
% calcolo lintegrale
int=(y(1)+y(n+1))/2;
  i=2:n
int=int+y(i);

20



21

x=inth;

22

 


Esempi di trapezi_composita.m da pag. 203





Listing 6.5: Metodo composito di Simpson


[x]=simpson_composita(y,a,b,m)

2
3
4
5
6
7
8
9

% SIMPSON_COMPOSITA Calcola lintegrale con Simpson composita


%
[x]=simpson_composita(y,a,b,m) restituisce il valore
%
dellintegrale della funzione y in [a,b] valutandolo
%
in 2m sottointervalli.
%
%
Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti
%
Sun Jul 18 10:34:20 CEST 2004

10
11
12

% definisco le ascisse
h=(ba)/(2m);

6.1. FORMULE DI QUADRATURA INTERPOLATORIE


13
14
15
16
17
18
19
20
21
22

x=a:h:b;
% valuto la funzione nelle ascisse
f=   (y,x);
% calcolo lintegrale
int=f(1)+f(2m+1);
  i=2:2:2m
int=int+4f(i);


 

i=3:2:(2m1)
int=int+2f(i);

23



24

x=int(h/3);

25

139

  




Esempi di simpson_composita.m da pag. 205

6.1.4 Formule di quadratura composite adattive

Figura 6.3: Esempio funzione per metodi adattivi


Finora abbiamo considerato lampiezza dei sottointervalli sempre uguale, ma possiamo vedere che in alcuni casi questa scelta risulta sbagliata.
Sarebbe quindi pi utile poter considerare una prima partizione iniziale dellintervallo e poi diminuire lampiezza dei sottointervalli in alcune zone della
funzione, magari in corrispondenza di una parte troppo irregolare. In questo modo inoltre dovremmo cercare di riusare i calcoli eseguiti nei punti gi
presi in esame e rendere cos loperazione di rinfittimento poco costosa.
Tuttavia non possiamo diminuire lampiezza dellintervalli a dismisura poich il costo computazionale diverrebbe improponibile.
Ricordiamo adesso lequazione dellerrore nel caso dei trapezi e poi presen-

140

CAPITOLO 6. INTEGRAZIONE NUMERICA

tiamo il caso il cui si raddoppino gli intervalli:


(b a) 2 (2)
Hm f (1 )
12
(b a) 2 (2)
H2m f (2 ) =
E1,2m [f ] =
12
(b a) 1 2 (2)
=
H f (2 )
12 4 m
E1,m [f ] =

supponiamo che f (2) (1 )


= f (2) (2 ), per facilitare i calcoli, pertanto


1
(b a) 2 (2)
Hm f (1 )
1 =
E1,2m [f ] E1,m [f ] =
12
4
3 (b a) 2 (2)
=
Hm f (1 ) =
4 12

(b a) 1 2 (2)
3
H f (2 ) =
12 4 m
{z
}
|
E1,2m [f ]

3E1,2m [f ]
se e soltanto se
1
E1,2m [f ] (I1,2m [f ] I1,m [f ])
3

Facciamo le stesse considerazioni anche per le formule di Simpson:


(b a) 1 4 (4)
H f (1 )
90 32 m
(b a) 1 4 (4)
E2,2m [f ] =
H f (2 ) =
90 32 2m
(b a) 1 1 4 (4)
=
H f (2 )
90 32 16 m
E2,m [f ] =

supponiamo che f (4) (1 )


= f (4) (2 ) pertanto


1
(b a) 1 4 (4)
H f (1 )
1 =
E2,2m [f ] E2,m [f ] =
90 32 m
16


(b a) 1 1 4 (4)
15
H f (2 ) =
90 32 16 m
{z
}
|
E2,2m [f ]

15E2,2m [f ]
se e soltanto se
1
E2,2m [f ] (I2,2m [f ] I2,m [f ])
15

Introduciamo adesso alcune notazioni che sono utili per la spiegazione dellalgoritmo:
N sottointervallo da esaminare (quello ancora da calcolare)

6.1. FORMULE DI QUADRATURA INTERPOLATORIE

141

S sottointervallo gi esaminato nellaccuratezza desiderata (

--

=)

A = [, ] sottointervallo attivo, (quello in esame in questo momento)


Inizialmente si presenta la seguente situazione: N = [a, b], S = e A = N = [ = a, = b].
Indichiamo con
Z

f (x) dx
J[,] =

lapprossimazione che siamo in grado di calcolare di


rore definito come
Z
E[.] = J[,]
f (x) dx

f (x) dx, quindi ler-

Come nel caso precedente lerrore dato dalla somma degli errori commessi
sui singoli sottointervalli.
5 Osservazione 6.1
1
(b a)
I1,2m [f ] = I1,m [f ] +
2
2m


1

2m
X

f (a + jh)

j dispari
j=0

Listing 6.6: Metodo dei trapezi adattivo: grafico


 
 

[x]=trapezi_adattiva_graph(f,a,b,tol)

2
3
4
5
6
7
8
9
10
11
12

% TRAPEZI_ADATTIVA_GRAPH Calcola lintegrale con trapezi adattivo


%
[x]=trapezi_adattiva_graph(f,a,b,tol) restuisce in x
%
il valore dellintegrale della funzione f calcolato fra
%
a e b, con una tolleranza tol e visualizza il grafico.
%
Vengono inoltre stampati i punti corrispondenti agli
%
estremi degli intervalli di interpolazione considerati
%
ad ogni passo.
%
%
Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti
%
Sat Jul 17 22:12:44 CEST 2004

13
14
15
16
17
18
19
20
21

% visualizzo la funzione
ezplot(f,[a,b]);

 on;
% calcolo lintegrale
fa=   (f,a);
fb=   (f,b);
[x]=trapezi_adattiva(f,a,b,fa,fb,tol);

  




Esempi di trapezi_adattiva.m da pag. 208

CAPITOLO 6. INTEGRAZIONE NUMERICA

142





Listing 6.7: Metodo dei trapezi adattivo


[I]=trapezi_adattiva(f,a,b,fa,fb,tol)

2
3
4
5
6
7
8
9
10
11
12

% TRAPEZI_ADATTIVA Calcolo lintegrale con trapezi adattiva


%
[I]=trapezi_adattiva(f,a,b,tol) restuisce in x il valore
%
dellintegrale della funzione f calcolato fra a e b, con una
%
tolleranza tol.
%
%
I parametri fa e fb rappresentano i valori che la funzione
%
assume negli estremi dellintervallo
%
%
Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti
%
Sat Jul 17 22:13:22 CEST 2004

13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

% calcolo lampiezza dellintervallo


h=ba;
fm=   (f,(a+b)/2);
% calcolo I_1
Iu=(h/2)(fa+fb);
% calcolo I
I=0.5(Iu+hfm);
% valuto lerrore

err= 
(IIu)/3;
% stampo i punti considerati

  ([a b],[fa fb],r);


% Se lerrore minore della tolleranza da me voluta finisco,
% altrimenti effettuo le chiamate ricorsive
 err>tol
I=trapezi_adattiva(f,a,(a+b)/2,fa,fm,...
tol/2)+trapezi_adattiva(f,(a+b)/2,b,fm,fb,tol/2);


 






Listing 6.8: Metodo di Simpson adattivo: grafico


[x]=simpson_adattiva_graph(f,a,b,tol)

2
3
4
5
6
7
8
9
10
11
12

% SIMPSON_ADATTIVA_GRAPH Calcola lintegrale con simpson adattivo


%
[x]=simpson_adattiva_graph(f,a,b,tol) restituisce in x
%
il valore dellintegrale della funzione f calcolato fra
%
a e b, con una tolleranza tol e visualizza il grafico.
%
Vengono inoltre stampati i punti corrispondenti agli
%
estremi degli intervalli di interpolazione considerati
%
ad ogni passo.
%
%
Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti
%
Sun Jul 18 11:49:43 CEST 2004

13
14
15
16
17
18

ezplot(f,[a,b]);

  on;
% calcolo lintegrale
fa =   (f,a);
fm =   (f,(a+b)/2);

6.1. FORMULE DI QUADRATURA INTERPOLATORIE


19
20
21

143

fb =   (f,b);


[x]=simpson_adattiva(f,a,b,fa,fm,fb,tol);

  




Esempi di simpson_adattiva.m da pag. 211


1

Listing 6.9: Metodo di Simpson adattivo


 
 

[Idd]=simpson_adattiva(f,a,b,fa,fm,fb,toll)

2
3
4
5
6
7
8
9
10
11
12
13
14
15

% SIMPSON_ADATTIVA Calcola lintegrale con simpson adattivo


%
[Idd]=simpson_adattiva(f,a,b,fa,fm,fb,toll)
%
restituisce il valore
%
dellintegrale della funzione f in [a,b] con tolleranza
%
pari al parametro toll, utilizzando il metodo di Simpson
%
adattivo
%
%
I valori della funzione fa,fm,fb vanno passati al codice,
%
rappresentano rispettivamente il valore nellestremo a,
%
nel punto medio e nellestremo b dellintervallo.
%
%
Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti
%
Sun Jul 18 11:55:43 CEST 2004

16
17
18
19
20

% divido lintervallo
h=(ba)/2;
% Calcolo lintegrale Idu
Idu=(h/3).(fa+4fm+fb);

21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38

% Calcolo lintegrale Idd


h=(ba)/(4);
Idd =fa+fb;
fam =   (f,a+h);
fmb =   (f,a+3h);
Idd=Idd + 4fam + 2fm + 4fmb;
% Trovo lerrore approssimato
Idd = Idd (h/3);

err= 
(IduIdd)/15;

  ([a,a+h,a+2h,a+3h,b],[fa,fam,fm,fmb,fb],r);
% Se lerrore minore della tolleranza da me voluta finisco,
% altrimenti effettuo le chiamate ricorsive
 err>toll
Idd = simpson_adattiva(f,a,(a+b)/2,fa,fam,fm,toll/2)+...
simpson_adattiva(f,(a+b)/2,b,fm,fmb,fb,toll/2);


  


144

CAPITOLO 6. INTEGRAZIONE NUMERICA

Capitolo

Autovalori e Autovettori

Q
7.1

capitolo dedicato ad uno degli argomenti pi importanti


dellalgebra lineare, sia da un punto di vista teorico che applicativo:
autovalori ed autovettori.

UESTO

Introduzione

Definizione 7.1.1 Data una matrice A C nn si dice autovalore di A ogni


numero C tale che il sistema lineare
Ax = x, x Cn

(7.1)

abbia soluzioni x 6= 0; il vettore x detto autovettore associato allautovalore


, intendendo che x ed ogni vettore kx (k C,k 6= 0) rappresentano lo stesso
autovettore.
Ora, in base al teorema di Rouch-Capelli, sappiamo che un sistema lineare
omogeneo ha soluzioni non nulle se e solo se la matrice dei coefficienti
del sistema singolare, e poich il sistema (7.1) equivalente al sistema
omogeneo
(A I)x = 0
segue che gli autovalori di A sono tutti e soli i numeri che soddisfano
lequazione
det(A I) = 0
Dal calcolo di questultima equazione si ottiene:
det(AI) = (1)n n +(1)n1 1 n1 +(1)n2 2 n2 +. . .n1 +n
dove i coefficienti i , i = 1, 2, . . . , n, sono, ciascuno, la somma dei minori
principali di ordine i estratti da A. Il polinomio precedente detto polinomio caratteristico della matrice A e gli autovalori di A coincidono con
145

CAPITOLO 7. AUTOVALORI E AUTOVETTORI

146

le radici dellequazione caratteristica, perci sono n e li indicheremo con


1 , 2 , . . . , n .

7.2

Il metodo delle potenze

Il metodo delle potenze un metodo di tipo iterativo utilizzato per approssimare lautovalore di modulo massimo, che si fonda sul seguente teorema:
Teorema 7.2.1 Sia A Cnn una matrice con autovalori soddisfacenti le
condizioni1
|1 | > |2 | . . . |n |
e sia z (0) Cn un vettore arbitrario. Allora il processo iterativo
y (0) = z (0)
y (k) = Ay (k1)
tale che

y (k)

lim

k+

k = 1, 2, . . .

= v,

(k)

yj

lim

k+

y (k) Ay (k)
y (k)H y (k)

= 1 ,

(k)

dove j un indice per cui yj 6= 0, v lautovettore associato a 1 e y (k) il


trasposto coniugato2 di y (k) .
D IMOSTRAZIONE . La diagonalizzabilit di A implica lesistenza di n autovettori x(i) , i = 1, 2, . . . , n linearmente indipendenti e quindi che il vettore z (0)
possa rappresentarsi nella forma
z

(0)

n
X

ci x(i)

i=1

dove lecito supporre che sia c1 6= 0. Segue che


y (k) = Ak y (0) = Ak (c1 x(1) + . . . + cn x(n) )
k (1)

k (n)

= c1 A x
=

+ . . . + cn A x =
!
n
 k
X
i
(i)
(1)
ci
x
c1 x +
1

c1 k1 x(1)

(7.2)
+ ... +

cn kn x(n)

i=2

e in particolare per ogni indice j,


(k)
yj

(1)
c1 xj

n
 k
X
i
(i)
ci
+
xj
1
i=2

(7.3)

N.B. In questo capitolo con la notazione y (k) intendiamo considerare il vettore y alla
k-esima iterazione
2
vettore traposto e anche coniugato
1

7.2. IL METODO DELLE POTENZE

147

(k)

Scegliendo yj 6= 0, tenendo conto dellipotesi sui moduli degli autovalori e


dividendo membro a membro la (7.2) per la (7.3), si ottiene
lim

y (k)
(k)
yj

= b1 x(1) = v

(1)

dove b1 = 1/xj , perci il vettore v lautovettore associato a 1 , come


afferma la tesi. Si ha quindi
Av = 1 v
e anche
v H Av = 1 v H v
da cui

v H Av
= 1
vH v

infine, tenendo conto dellequazione precedente, si ha


H

lim

k+

y (k) Ay (k)
H

y (k) y (k)

v H Av
= 1
k+ v H v

= lim

per cui dimostrato il teorema.


Il rapporto
 y (k)H Ay (k)

R y (k) = (k)H (k)
y
y

chiamato quoziente di Rayleigh. L algoritmo appena considerato pu dar


luogo a situazioni di overflow/underflow nel caso in cui il valore delle componenti in valore assoluto sia o troppo grande o troppo piccolo. necessaria
allora unoperazione di scaling, applicando a priori diversi tipi di norma di
vettore. Si costruisce pertanto una successione di vettori {z (k) } nel seguente
modo
)
y (k) = Az (k1)
k = 1, 2, . . .
y (k)
z (k) =
k
dove z (0) ancora arbitrario e k una costante di normalizzazione opportuna. Se ad esempio k una componente di massimo modulo di y (k) scelta,
a partire da un certo k, sempre con lo stesso indice, risulta ||z (k) || = 1.
Nelle ipotesi del teorema, si dimostra che


lim z (k) = w
e
lim R z (k) = 1
k+

dove w lautovettore associato a 1 .

k+

148

CAPITOLO 7. AUTOVALORI E AUTOVETTORI

 Listing 7.1: Calcola lautovalore dominante con il metodo delle potenze



 [lambda2]=potenze(A,z,toll)

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

% POTENZE Calcola lautovalore di modulo massimo di A


%
[lambda2]=potenze(A,z,toll) restituisce unapprossimazione
%
dellautovalore di modulo massimo della matrice A,
%
utilizzando il metodo delle potenze.
%
%
Il parametro z e il vettore dinnesco del metodo e toll e
%
la tolleranza richiesta.
%
%
Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti
%
Mon Jul 19 15:26:15 CEST 2004
n=      (A);
% normalizzo il vettore
y1=z/   (z);
% assegnamenti iniziali (valori fittizzi per far partire il ciclo)
lambda1=1;
lambda2=0;

  (  (lambda2lambda1)) > toll
lambda1=lambda2;
y2=y1;
y1=Ay1;
lambda2=((y2)y1);
y1=y1/ 
 (y1);


 


Esempi di potenze.m da pag. 214

Appendice

Esempi
Elenchiamo adesso una serie di esempi ottenuti dai codici matlab da noi
preparati.

A.1 Condizionamento Sistemi lineari




 


 
 

 
 

 



 "!#$"% '&"()+*,


-.0/

    1

222122212222
3 "!#$"% '&"4()+*,
-.0/
3
    

222122212222
5  
62222
5 7
    

149

APPENDICE A. ESEMPI

150
 52221
62222
5

222122212222

 .5 5


    

222122212222

 #" " !0**,  / 6  /


 #"  
    


1   1  11


 #"" !0**,3  / 6  /


 #"  
    



 


 !

 !

2   




A.2

Eliminazione di Gauss

 $##" *,+*  /
 /

 


 


 

 










1








 
 !!0*, /
  !
 
 



 





 

 
 


 
 

 
 

 

 
 




 



 
 





 


 



 





 




 
 










 

 


A.2. ELIMINAZIONE DI GAUSS

 

#$  !

151

 

 # 


  
 
  
   
 

 
1
 


 




 
 

  
          




 

   1 2




 
 2 1 1








   #

#$  !





 

1










 

 !!0*, /

 !

 

#$  !



 

 


 

 
 





















 

 
 

 
 

 

 



 




 




 


 



 



 



 








 

  

 


  1   1

 2  12 

   2 2

 2  221 1 

 1 2  12
   1   21

 2
 2   





 

 

 

 
  1   1

   
 

2  1 2 

  2 2 1   

 11  1
    1

 


 
 



  
 


           
 
           

1

   
 1 1   
1  1 

  1  1   
1111  
11 111

12    2   
    12  
   

 
    2 1

  221 




1121



 
 






 

 




 

 # 

 
 
  
 
 


 1

 

 
  
 


  
 
  
            



 2
    1 1






  1112 1








   #

#$  !












APPENDICE A. ESEMPI

152




 

             

 1   1   2
   2 2 

 1

   12 1 
 1
 2   
 11


 

             
 


  2 2 1  
 
  1  2








1

 1
   1   11
  2   12221
 
 
   

     2 1 
  1 2     1

 

  
  


  1   1 
 1 1  11

1
 22 2 1 
   21   211

  1 2  2

122
   2 2




   




   1   1 


  2       

 2
 21 
  

 1 2 2 112

 121 2   1

   1 1
2  
  
 11 2 






 

 


1













 








 

 
 


 
 

 
 



 
 





 

 

 
 




 

 
 

 !!0*, /
  #"
 !     !!
(    #    #" "0'$#
 !!

 # $  #     


    * ! * " !0* ///
  !
1


 2  
 2
 
 




 
  



1
 1

1
   
 















 1
     


 1

  

 


 

 !!0* /
  !
 
 

#$ 
 !  #  
 
 
 
 


 


 



 





 








 

 



 
 







 








 

 


1


2






 

1


 



 









 







  
2

2

1

1 

1

2  

 

 
1   


A.3. RISOLUZIONE DI SISTEMI LINEARI FATTORIZZATI A = LU






153




   # 

 


 
 


 
  

 
 2 
           

  1  2  
 1 22  

   1  
 22 


 2
  2 




#$  !




 

1  


  
 

  1 
 111111111112

  1 222 2 
 1  


 2  1  1 
 212

  1
 112  
  12

    1 1   
   



 1 111



 


 

 

 

 1
   1 1

  2 2 2 2

22 22 22

 22  

2    

 1  

A.3 Risoluzione di sistemi lineari fattorizzati A = LU




 



 

1













 

 






 ! *,  / 


 
 

 
 
 
 
 2




 "!#$"% '&"()+*,


-.0/

 !
 
 
 
 

22222222222222
 
 
 
 

 

 
 


 
 

 
 

 

 
 




 



 
 





 





 



 



 


 
 











 

 


APPENDICE A. ESEMPI

154

22222222222221

 

 

'$  "! $   #

  !# ! "  ! # !' #  !0* 

- /



 



 


 


1









 
 

 
 

 

 
 


 

 
 




 














 



 
 





 


 



 



 




 
 











 

 


 ! *,  / 


 
 
 
 
 
 
 2




  "!#$"% '&"()+*,
-.0/

 !
 
 
 
 
 
 
 
 
 

22222222222222






 

 


1



















 

 

 
 


 
 

 
 

 

 
 




 



 
 





 


 



 





 




 
 










 

 


A.3. RISOLUZIONE DI SISTEMI LINEARI FATTORIZZATI A = LU

 ! *,  / 


 
 
 
 
 
 
 2




  #" !     "!#$"% '&$


     #    #" "0'$ #   !!
(

 # $  #     


   * ! * " !0*, ///
  !
1



 2
 
 


 



1
 1
   









   1  



 1


 


 !  *,  / 



 
 



 
1


 
1
 "!#$"% '&"()+*,
-.0/

 !

 
 
 
 
 
 

2

 




 
 


 



1



 








1

 





 






2



 


1





 


 


155

APPENDICE A. ESEMPI

156
 
 
 
 

A.4

Risoluzione di sistemi lineari fattorizzati P A =


LU






 

 


1












 






 
 

 
 


 

 
 


 

 
 




 



 
 





 

1












 

 




 



 





 




 
 


 ! *,  / 


 
 
 
 
 
 
 2




  "!#$"% '&"4()+*,
-.0/

 !
 
 
 
 
 
 
 
 
 
 

 $##" *,+*  /
 /

 





 







1














1


A.5. RISOLUZIONE DI SISTEMI LINEARI FATTORIZZATI A = LDL T









 






 
 








 





1

 


1






 









 

 
 


1



157


 
 
 




 ! *,  / 


 
 1
 1

 2



 2

 "!#$"% '&"4()+*,


-.0/

 !

 
 
 
 
 
 
 
 
 
 

A.5 Risoluzione di sistemi lineari fattorizzati A = LDLT


.4

 $##" *,+*  /
 /





2






 














   "


 

 

1



1
1










 




2

 

 
 

 


 



1



 








1

 




 






 








 



 


APPENDICE A. ESEMPI

158




1
  1 

1
 2
  2 2
  1 
 21 2 
2
   

     2
  1 2

 
2
 
  *, /
  !

  12
  * /
  !
 
 


  1 
2

2
2 2  

 2 
   

   2
   1

  2
  1 
  1 12 
  2
 11 221 

 1
      1
    1  1 2

1
     2 
 2
 !  *  / 
2


1


 
21


 
  1
 2
 
 
 3 "!#$"% '&"( ( *
-.0/
3
 
 
 
 
 
 
 
 
 

  2


 21  
2  
  

    


 
     
     
   2 

 


 1

  
  1
   2
2

   
   2
  
 1


2
 2   

 
2



 
 2
  
2

A.6. RISOLUZIONE DI SISTEMI LINEARI FATTORIZZATI CON HOUSEHOLDER159


 

 $##" *,+*  /
 /

 


 



 










 


1

1


 
 
2

2



 

 
2

 







 



1


 






 




1

 
 



 



 



2

 





 
 
 
 











 


 




 ! *  / 



2
 

 1
 




 "!#$"% '&"( ( *


-.0/

 !

 22  11

  2
  
 1  1 11



  21    
  1 1  12 

1
1  2  
 
2   1 
 
      

  
 2 1  1

       2
A.6 Risoluzione di sistemi lineari fattorizzati con Householder

 $##" *,+*  /
 /




 








 


 





 


 






APPENDICE A. ESEMPI

160








1


2







1






 


2
 



 


2



 
 




 
 
 


  

  "!#$"% '& # !  #$  *,


-0/

 
 
 
 
 
 
 
 
 
 

 

#  #  #



#

4()

 3 "!#$"% '&"4()+*,


-.0/
3
 
 
 
 
 
 
 
 
 
 

   !0* 

  #



- /

 !
 #" " !0**,30/ 60/

2

 ! *,  / 




 



1





 


1


 







 



A.6. RISOLUZIONE DI SISTEMI LINEARI FATTORIZZATI CON HOUSEHOLDER161

 #" 
    



 1221


111  1 2 



 1221 


  1  2


  1  2

 
 2 1



      1
 #"
 "  !0** 0 / 60/
 #" 
    


 
 2 

      


 1221 


  1  2


      1

 
 2 

111  1 2 


  1  2


  1  2

111  1 2 
 


 "!#$"% '& %
 !0*,
-.0/
#  #  #



#

% !


 
 
 
 
 
 
 
 
 
 

  " !0**,0/ 60/


 #"

    


111  1 2 


  1  

    1

 
 2 

111  1 2 
  #"

APPENDICE A. ESEMPI

162

  
   
  
  
  


     

    

111 1 2 

 122  

 1

A.7

Risoluzione di sistemi lineari fattorizzati con Givens

 


 
























 


 ! *,  / 


 


 
 
 
 


1

 % !0*,
-.0/

  "!#$"% '&





22222222222222

22222222222221

22222222222221
  
 
 
 

22222222222221
 
 



  

  "!#$"% '& # !  #$  *,


-0/

 

22222222222222

 


 





2











 




1




 












1

 



A.7. RISOLUZIONE DI SISTEMI LINEARI FATTORIZZATI CON GIVENS 163



22222222222222
 
 
 
 

22222222222222
 
 



3 "!#$"% '&"4()+*,


-.0/
3
 
 
 

2222222222222

22222222222222
 
 
 

22222222222222
 



  " !0**,0/ 60/


 #"

    


1
 1   12 

 2 
 2 

 
 1  12  

 
 2   2

 2 122

 
  1

 22 
 1

 2
 122 2

 1
 2 1 1

 2   
 #" "  !0** 0
 / 60 /
 #"  "  !0**,30 / 60 /
 #" 
   



21 2 2  1

  1
12

1221
 22


    11

 
 1    1


      1


22 1111 

 11 1  

2
 1   1 

 11  2  1
 #"  
   

  #"

APPENDICE A. ESEMPI

164

   


   
   
   
    


 
  
   
  


  2



2 1

  11 2

 1 1 2

  1 2 1
12

 1221 

    11

 2  1

   2 

  2 

A.8

Risoluzione di sistemi lineari fattorizzati con Jacobi

 #'0 #  #$$"  1 3


   

    # $  #          -7   
 ! * "  !0*, /  / 
  !
2 *   /
 *   /
 * /
 *  /
 * 
/
 1 * 
/
 2 * 
/
 *   /
 *   /
  *   /
"!#$"% 

 


 



 










 1
 


 



1


 
 
 1




 3
3
















 2
1


 





 

 



 
 


1






 

 




1

 

2


 
 

 


 


 
 

















1
 

A.8. RISOLUZIONE DI SISTEMI LINEARI FATTORIZZATI CON JACOBI 165



 

 
 

 




 ! *,  / 


1

 




 


1

  2


.3
-  "!#$"% '&

3

 #'0 *,-.-30-  1

-  /




2222222222  
 
 
  2

2222222222 
  1

2222222222 
 
 
 1

 
 
 
 

 

 


7

 
  #  !0*  - /
 #" " !0**,30/ 60/
 #"  
    



211 1   1  


    

   1   


 2 2   


 2 1 1 11


 1   


 2  122 1

  2

 
 1  2 2

1   2
 .3
-  "!#$"% '&  #'0 *,-.-30-   
- 0/
3

2222222222221

APPENDICE A. ESEMPI

166
 

2222222222221
 1

2222222222222
 1

222222222222

222222222222

22222222222221
 








 




 #" " !0**,30/ 60/


 #"  
    


 2 2   2

  2  21

   1 12

1   111

 2 21  2

1 
 11    1

 2 22
  

 
  

 
    

  2    


  0  #


       !#
.3
-  "!#$"% '&  #'0 *,-.-  # !0* '
'$ %   #"

3
 1

2222222222222

22222222222212

2222222222222
 

222222222222
 

222222222222

2222222222222

2222222222221


 



 




 #" " !0**,30/ 60/


 #"  
    



     

1  2  1 2


- /-    -  /

A.8. RISOLUZIONE DI SISTEMI LINEARI FATTORIZZATI CON JACOBI 167

  
   
  
   
  
   
     
 


    1 1

1  

 1 2 2


 2 

22 2 




 2  1

 121 1  2

 


 

 .3
-  "!#$"% '&

 #'0 *,


-- 

- 

 

3

22222222222221
  

222222222222 2
 
 

2222222222222

2222222222221

222222222222

22222222222222
 








7




    
 #"  
    


 1
    

  
 1    

 
2 22 1 

  121   


 1   1 


  2 2122

 1
 2  2


    2  2

222  


    

  #"  " !0**,3 0/ 6 0/

.3
-  "!#$"% '&

3

 #'0 *,-.- 

-    -  /

-  /

APPENDICE A. ESEMPI

168

 







 


2
 

 







 ! *  / 




 

 

1

2
1


 



 


 



 




 





 


 





 

2

 




 

 




 



2


2
 













 
 



  
      


     '#" $$    

 .3
-  " !#$"% ' &
 #'0 *
-. -3
-  1
-  /
  #" ! 
 
 "!#$"% '&
#'0
$#      #
   #
    '# 0
 !

A.9



Risoluzione di sistemi lineari fattorizzati con GaussSeidel

   $ #  #$$"  1  3



    # $  #          -7 
   
 ! * "  !0*, /  / 
  !
2 *   /
 *   /
 * /
 *  /
 * 
/
 1 * 
/
 2 * 
/
 *   /
 *   /
"!#$"%  !!

  


A.9. RISOLUZIONE DI SISTEMI LINEARI FATTORIZZATI CON GAUSS-SEIDEL169

 *   /





 


 










 1
 


 



1


 
 
 1








 2
1


 





 

 



 
 


1






 

 




1

 

3
3















 !  *,  / 


1

 




 


1

  2

3

 !  $*,


--3
-  '1

.3
-  "!#$"% '&

 

 




 




2222222222 1

2222222222 
   
 1

22222222221 1

2222222222 22

2222222222 

2222222222 1

22222222222 2

22222222221 

-   /

2


 
 

 


 


 
 

















1
 

APPENDICE A. ESEMPI

170
 


 #" " !0**,30/ 60/


 #"  
    


1   1 


 2 22 2  2


     1

1
 2 1  

 1  
  1 

 1 2

 2212
 2 

1
 2   

  2  1

   2  
 .3
-  "!#$"% '&
 !  $* 
-.-3
-   
-  /


3












222222222222

222222222222
 
  2

222222222222

222222222222 

222222222222 1

222222222222

2222222222222

222222222222
 

 #" " !0**,30/ 60/


 #"  
     


 1 1 11


    

 2 
 

 12  
 

1
     

 
 12  


    2  1

 2   1 


   

 1   
2



3

 ! $* 


-.- #!0* '

.3
-  "!#$"% '&

- /-    -  /

A.9. RISOLUZIONE DI SISTEMI LINEARI FATTORIZZATI CON GAUSS-SEIDEL171





 
  2

222222222222

222222222222
  
  1
 
 
 
 2




7



    
 #"  
    


   

 2
   

  1    


  11 2 1 1

   2 
 12

 
 1 2  211

 
    22 

 
2  1 

 
 22   2

1 2 2 2

  #"  " !0**,3 0/ 6 0/

 


 

 ! $*,


-- -   

 .3
-  "!#$"% '&

3
  
 

2222222222221

222222222222 1
 
 
  
  
 
 








7

    
 #"  
    


    

    1
  2

 
 2 2  

  #"  " !0**,3 0/ 6 0/

- ' /

APPENDICE A. ESEMPI

172

    
      
   
   
 
 
    


 1  1
  21  1 1


  
2 

  2
22

  1 1 2

 11 1


 


 ! $* 


-.- -   
-  /

.3
-  "!#$"% '&

3










 








 




 ! *








 
 

 3


2
 

 




 / 

 

 

1

2
1

 



 



 




 




 



 







 




 




 



2


2

 




 

 

2
 









A.9. RISOLUZIONE DI SISTEMI LINEARI FATTORIZZATI CON GAUSS-SEIDEL173


3















.3
-  "!#$"% '& !  $*
--3
-  '1


3

-   /

 


1
 1    2 

  1    1

2221   2
  111






 

7
1

  
 
  
  
             '#" $

 .3
-  " !#$"% ' & !  $*
--3
-  '1 - 0/
  #" ! 
   "! #$"% '& !  $
$#      #

  #
    ' # 0 !



$   

.4

 $##" *,+*  /
 /





2






 











 

1



1




1

 









 

2

 

 


 




 


1



 



1



 






1

 




 













2



 





 



 

 

 





   "


2







APPENDICE A. ESEMPI

174


1
 
 2

1
21
2
   
 
 
 1
2
2
 



1




2
2


 21  
2  
 

    



 
      
 2
     
    2 
 

 




2

 
 
  *, /
  !

  12
  * /
  !
 
 


  1 
2

2
2 2  

 2 
   

   2
   1

  2
  1 
  1 12 
  2
 11 221 

 1
      1
    1  1 2

1
     2 
 2
 !  *  / 



 
21


 
  1
 2
 
 

 3
3

















 1

  1
   2
2

   
   2
  
 1


2
 2   




 
 2
  
2

A.10. METODO DI BISEZIONE

175

 !  $*


--3
-    -   /

.3
-  "!#$"% '&

3



 
  
 

2222222222221

22222222222222
 
 

2222222222222
  
 






7

 1

A.10 Metodo di bisezione

    ! 
  '#   ! +*,3 /
3+
 *
"
3 / 

  #$$"   
 

 #$$

  
.3
-   !! 0"! '# *   
 


3

- -

 ! 

-  #$ $+- ' /

2   




  !!  

       $ 
  '#     $  *,3 /
  3+
 * 3 /
*,3 /  
 
 
 .3
-   !! 0"!  '# 
 *  
-  -     $ 


3




22222222222 

- 

 

-  /

APPENDICE A. ESEMPI

176

  !! 

 .3
-   !! 0"! '# *  - -    $ 

 

-  

- 0/

3



  !! 

A.11

Metodo di Newton

   ! 
  '#   ! +*,3 /


 3+
 *
"
3 /

       $ 
  '#     $  *,3 /
 *


*,3 / " /
 3+ * 3 /  3+* 3 /
*,3 /  
 
 
 .3
-   !!    #+
 *   !  -   !  -  #$$+- - 0/
 

3


 111   
  !! 
1


.3
-

3

  !!    #+*   ! 

- 

 ! 

-  #$$+-  -  /

 

- 

 ! 

-  #$$+- -   /


2  1  

  !! 

 .3
-   !!    #+*   ! 
3







A.11. METODO DI NEWTON

177

fesp(x)

1
0.5

0.5

Figura A.1: bisezione(0.5, 1,0 f esp0 , toll, 100)


fmult(x)
0.1

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

10

15

20

25

30

35

40

45

Figura A.2: bisezione(5, 50,0 f mult0 , toll, 100)

50

APPENDICE A. ESEMPI

178
fmult(x)
0

10

20

30

40

50

60

70

80

90
1

2
x

Figura A.3: bisezione(1, 5,0 f mult0 , toll, 100)

  !! 



.3
-

  !!    #+*     $ 

  $

 - 

-  #$$+-
- " /

3



  !! 
1



    
  $
  
  
   

 .3
- !!     # +*   $   - 
  #" ! 
 
  #
  # $    
    ' # 0

  

A.12
 "(( 

   

-  
-
-  /

Metodi di Newton per funzioni con radice multipla nota

 

"(( 

 
.3
-   !!    # & 0#  *     $
 

- 

   $ 

- ((
- -

- ' /

A.13. METODO DELLE CORDE


3

179




222222222222 

  !! 


  !!    # & 0# +*     $ 

.3
-

-

   $ 

- "((- -
-  /

3




222222222222 

  !! 



      
   $ 
       
  
   

 .3
- !!     # & 0
 #  +*   $  -
  #" ! 
 
  # & 0# 
  # $    
    ' # 0

A.13 Metodo delle corde




*   ! 

.3
-  #"

3

 

-

  ! 

- "((-

 



 

  

 -
-  /

-  #$$+- '


- - -  /

   

2
  11 2 2






*   ! 

.3
-  #"

-

  ! 

-  #$$+- '


- -
-  /

3

 




  
   $ - "(( -
 - 
- 
- /
 

  
   
 .3
-  #"
 *     $  -    $ - "((-
-  -  /
 .3
- !!   #" *   $  -
  #" ! 
 
"# 
  # $    
    ' # 0

3






APPENDICE A. ESEMPI

180


fesp(x)

1
0.5

0.5

Figura A.4: corde(0 f esp0 ,0 df esp0 , toll, 0.5, 1, 1, 250)


fmult(x)

0.015

0.01

0.005

0.005

0.01
2.5

3.5

Figura A.5: corde(0 f mult0 ,0 df mult0 , T OLL, 2.5, 4, 4, 250)

A.14. METODO DELLE SECANTI

181
fmult(x)

0.05

0.04

0.03

0.02

0.01

0.01

2.5

3.5

4.5

Figura A.6: corde(0 f mult0 ,0 df mult0 , T OLL, 2.5, 5, 5, 250)

A.14 Metodo delle secanti




     *   ! 

.3
-  !

-

 !

 

- -   - - ' /

 

- -  -

-  #$$ - 

3


2      



3



     *   ! 

.3
-  !

-

 !

-  #$$ - 

 

- ' /

    
  $ 
 
 
  
   
 .3
- 
  !    *     $  -     $ 
 .3
-  !  
 *   $  -  
  #" ! 
  !   
  # $    
    '# 0

3

22222222222222

-  #$$+--

- - 
 -  /

 -  
- 

-  #$$+--

-  /

APPENDICE A. ESEMPI

182






fesp(x)

1
0.5

0.5

Figura A.7: secanti(0 f esp0 ,0 df esp0 , toll, 0.5, 1, 1.1, 1, 100)


fmult(x)

0.02

0.04

0.06

0.08

0.1

0.12
2

2.5

3.5

Figura A.8: secanti(0 f mult0 ,0 df mult0 , toll, 2, 3.5, 2, 2.1, 100)

A.15. METODO DI ACCELERAZIONE DI AITKEN

183

fmult(x)

0.02

0.04

0.06

0.08

0.1

0.12
2

2.5

3.5

Figura A.9: secanti(0 f mult0 ,0 df mult0 , toll, 2, 3.5, 2, 3, 200)

A.15 Metodo di accelerazione di Aitken




   +*     $ 

.3
-   

-

   $ 

 

-  '2 -
-  /

3


2 1

2

3




    #+*     $ 

.3
- 

   $

 

-  2-
-  /


2

   +*     $ 

.3
-   

3


11


-

-

   $ 

-  '2 - -  /

APPENDICE A. ESEMPI

184




    #+*     $ 

.3
- 

-

   $ 

-  2 -  -  /

3

 


22222222 1 1




1

A.16

Interpolazione di Vandermonde

  
  

 0#*,3
-  /

 3 


  
*,3 /
  "!#$"% '&"%


 




 1  2



 2 
 2



    12



  2 1  2



   2
   
  

 0#*,3
-  /

 3 


  
*,3 /
  "!#$"% '&"%



  
  

      

 
 
    

  
  
   

   

 
 


2222222221 

 2

2
2 1 

 22


2


 1

2 


  1

   2  1



   2

 

  1 2 1

 


 



  



 



A.16. INTERPOLAZIONE DI VANDERMONDE

185

2
Punti di interpolazione
Polinomio interpolante

1.5

0.5

0.5
5

Figura A.10:
Interpolazione polinomiale funzione di Runge con
Vandermonde, 10 ascisse

 


 1

10

10

20

30

40

50

60
5

Punti da interpolare
Polinomio interpolante

Figura A.11:
Interpolazione polinomiale funzione di Runge con
Vandermonde, 20 ascisse

APPENDICE A. ESEMPI

186

A.17

Interpolazione di Lagrange
2
Polinomio interpolante
Punti da interpolare

1.5

0.5

0.5
5

Figura A.12: Interpolazione polinomiale funzione di Runge con Lagrange,


10 ascisse
10

10

20

30

40

50

60
5

Polinomio interpolante
Punti di interpolazione

Figura A.13: Interpolazione polinomiale funzione di Runge con Lagrange,


20 ascisse

A.18. INTERPOLAZIONE POLINOMIALE CON BASE NEWTON E METODO DI HORNER187

A.18 Interpolazione polinomiale con base Newton e


metodo di Horner
frunge(x)
Polinomio interpolante
Punti di interpolazione
Funzione

1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1

0
x

Figura A.14: newtonhorneruni(0 f runge0 , 3, 3, 50, 8)


frunge(x)
Polinomio interpolante
Punti di interpolazione
Funzione

1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1

0
x

Figura A.15: newtonhorneruni(0 f runge0 , 3, 3, 50, 16)

APPENDICE A. ESEMPI

188

frunge(x)
Polinomio interpolante
Punti di interpolazione
Funzione

1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1

0
x

Figura A.16: newtonhorneruni(0 f runge0 , 3, 3, 50, 35)

frunge(x)
Polinomio interpolante
Punti di interpolazione
Funzione

1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1

0
x

Figura A.17: newtonhornercheby(0 f runge0 , 3, 3, 50, 15)

A.19. INTERPOLAZIONE POLINOMIALE CON BASE DI NEWTON E METODO DI NEVILLE189

A.19 Interpolazione polinomiale con base di Newton


e metodo di Neville
fperiodica(x)
Polinomio interpolante
Punti di interpolazione
Funzione

1
0.8
0.6
0.4
0.2
0
0.2
0.4
0.6
0.8
1

10

0
x

10

Figura A.18: newtonnevilleuni(0 f periodica0 , 10, 10, 100, 15)


fperiodica(x)
Polinomio interpolante
Punti di interpolazione
Funzione

1
0.8
0.6
0.4
0.2
0
0.2
0.4
0.6
0.8
1

10

0
x

10

Figura A.19: newtonnevilleuni(0 f periodica0 , 10, 10, 100, 20)

APPENDICE A. ESEMPI

190
fperiodica(x)
Polinomio interpolante
Punti di interpolazione
Funzione

1
0.8
0.6
0.4
0.2
0
0.2
0.4
0.6
0.8
1

10

0
x

10

Figura A.20: newtonnevillecheby( 0 f periodica0 , 10, 10, 100, 20)

A.20

Splines
1
Funzione
Spline
Punti di interpolazione

0.9

0.8

0.7

0.6

0.5

0.4

0.3

0.2

0.1

0
5

Figura A.21: spline(0 f runge0 , [5 : 2 : 5], 50)

A.20. SPLINES

191

1
Funzione
Spline
Punti di interpolazione

0.9

0.8

0.7

0.6

0.5

0.4

0.3

0.2

0.1

0
5

Figura A.22: spline(0 f runge0 , [5 : 1 : 5], 50)

0.02

0.02

0.04

0.06

0.08

0.1

Funzione
Spline
Punti di interpolazione

0.12

0.14

2.2

2.4

2.6

2.8

3.2

3.4

3.6

3.8

Figura A.23: spline(0 f mult0 , [2 : 0.5 : 4], 50)

APPENDICE A. ESEMPI

192

0.02

0.02

0.04

0.06

0.08

0.1

Funzione
Spline
Punti di interpolazione

0.12

0.14

2.2

2.4

2.6

2.8

3.2

3.4

3.6

3.8

Figura A.24: spline(0 f mult0 , [2 : 0.25 : 4], 50)

0.02

0.02

0.04

0.06

0.08

0.1

Funzione
Spline
Punti di interpolazione

0.12

0.14

2.2

2.4

2.6

2.8

3.2

3.4

3.6

3.8

Figura A.25: spline(0 f mult0 , [2 : 0.05 : 4], 100)

A.20. SPLINES

193

1
Funzione
Spline
Punti di interpolazione

0.8

0.6

0.4

0.2

0.2

0.4

0.6

0.8

1
5

Figura A.26: spline(0 f periodica0 , [5 : 2.5 : 5], 100)

1
Funzione
Spline
Punti di interpolazione

0.8

0.6

0.4

0.2

0.2

0.4

0.6

0.8

1
5

Figura A.27: spline(0 f periodica0 , [5 : 1.25 : 5], 100)

APPENDICE A. ESEMPI

194

1
Funzione
Spline
Punti di interpolazione

0.8

0.6

0.4

0.2

0.2

0.4

0.6

0.8

1
10

10

Figura A.28: spline(0 f periodica0 , [10 : 2 : 10], 100)

0.8

0.6

0.4

0.2

0.2

0.4

0.6
Funzione
Spline
Punti di interpolazione

0.8

1
10

10

Figura A.29: spline(0 f periodica0 , [10 : 1 : 10], 100)

A.21. MINIMI QUADRATI

195

A.21 Minimi quadrati

3 
3

 

 




#$
 ! 1 #  
#$  !

1

 # 

2





    # 


   1 2
    
  '#   *,3 /
3 "
3  
 
 
       '# 
  '#     '# *,3 /
 *,3
#!0*,3 // 6!'5  **,3 " / /
 
 
#$  !


1























1

2



















1

2



0.9

0.8

0.7

0.6

0.5

0.4

0.3

0.2

0.1

0
3

Figura A.30: minimi_quadrati(x, f, 16)

APPENDICE A. ESEMPI

196

0.9

0.8

0.7

0.6

0.5

0.4

0.3

0.2

0.1
3

Figura A.31: minimi_quadrati(x, f, 8)

0.7

0.65

0.6

0.55

0.5

0.45

0.4

0.35

0.3

0.25
10

15

20

25

30

Figura A.32: minimi_quadrati(x, f, 8)

A.21. MINIMI QUADRATI

197

0.7

0.6

0.5

0.4

0.3

0.2

0.1
10

15

20

25

30

Figura A.33: minimi_quadrati(x, f, 16)

15

20

25

30

35

Figura A.34: minimi_quadrati(x, f, 30)

APPENDICE A. ESEMPI

198

25

20

15

10

10

15

28

30

32

34

36

Figura A.35: minimi_quadrati(x, f, 50)

38

A.22. FUNZIONI DI RIFERIMENTO PER LE FORMULE DI QUADRATURA199

A.22 Funzioni di riferimento per le formule di Quadratura

   
  '#   *,3 /
3+
 *,3 / 
 

   
      %
  '#       % *,3 /
 3+
 *,3 / 3


 

f (x)
4

12000

10000

8000

6000

4000

2000

0
0

5
x

10

Figura A.36: Formule di quadratura : funzione di riferimento y = e x 1

   
  '#  *,3 /
  '#    
  6* 
 3 " /
 
 
   
      % 
  '#       %*,3 /
 +
 *,3 /

 

APPENDICE A. ESEMPI

200
f6(x)

1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
5

0
x

Figura A.37: Formule di quadratura : funzione di Runge y =

A.23

Formule di Quadratura di Newton-Cotes : Trapezi e Simpson

%$*    

 !



%$*  0 

  % -1 /



 0% - 0/

    1 


 
   *   - -1 /

2 1 

 !


21122 2
! 
 !#+ *   - -1 /

 !


 2  1 

%$*    

 !

1
1+x2



 % $*    +  %  - 


 /

  % -
/

A.23. FORMULE DI QUADRATURA DI NEWTON-COTES : TRAPEZI E SIMPSON201

 

 
   *  - 
 -
 /

2 2  1

 !

1

     

!   !# +*  - 


-
/

 !

            


2

%$*    

 !



 %$*     

  % -1 /

1  1 


 
   *   - -1 /

2

 !


21122 2
!  
 !#+ *   - -1 /

 !


 2  1 

%$*    

1   12
 
   *   -   -  /

 !



 !

    1
!  
 !#+ *   -   -  /

1 1

  % $*     +  % -   /

  % - /

 % - /

202

 !

21 21 2

APPENDICE A. ESEMPI

A.24. FORMULE COMPOSITE DI NEWTON-COTES: TRAPEZI

203

A.24 Formule composite di Newton-Cotes: Trapezi

    -     0% - - 1 - -  " /


$%$#" $$    $ $ #$ # # $     % 

2 1    1 
$%
 $#"  $$      $ $ #$ # # '$  # #  

2 11  1 
 
#    # #     #   !  % "! '#0
    $  
 1

    $  * 

    -     0% - - 1 - -   /


$%$#" $$    $ $ #$ # # $     % 

2 1    1 
$%
 $#"  $$      $ $ #$ # # '$  # #  

2 1    111
 
#    # #     #   !  % "! '#0
    $  

 1 

    $  * 

  

    $  * 


 -    



 0% -

   /

- 1 - -

.

    
      /
$%$#" $$    $ $ #$ # # $     % 

2
 2  1 
$%
 $#"  $$      $ $ #$ # # '$  # #  

2
 11  2 
#    # #     #   !  % "! '#0  $ 


    $  *  -     0%  -  - 
- -

    
       /
$%$#" $$    $ $ #$ # # $     % 

2
 2  1 
$%
 $#"  $$      $ $ #$ # # '$  # #  

2
 1  21  
#    # #     #   !  % "! '#0  $ 


    $  *  -     0%  -  - 
- -

APPENDICE A. ESEMPI

204

 $  *  -      % - 


 -
 - -    /
$ %$#" $$    $$ #$ # # $     %

2 2  1

$ %
 $#"  $$      $
  $ #$  # # '$ # #  

2 2   2  
#    # #     # !  % "! '#0  $  
 



 

 $  *  -      % -   -  - -   /


$ %$#" $$    $$ #$ # # $     %

 1   12
$ %
 $#"  $$      $
  $ #$  # # '$ # #  


 1 2 1 
#    # #     # !  % "! '#0  $  

 



 $  *  -      % -   -  - -    /


$ %$#" $$    $$ #$ # # $     %

 1   12
$ %
 $#"  $$      $
  $ #$  # # '$ # #  

 2  1 

#    # #     # !  % "! '#0  $  
 1


 

 $  *  -      % -   -  - -   ' /


$ %$#" $$    $$ #$ # # $     %

 1   12
$ %
 $#"  $$      $
  $ #$  # # '$ # #  

 1    2
#    # #     # !  % "! '#0  $  
 2 



 

A.25. FORMULE COMPOSITE DI NEWTON-COTES: SIMPSON

205

A.25 Formule composite di Newton-Cotes: Simpson

    -     0% - - 1 -


-  " /
$%$#" $$    $ $ #$ # # $     % 

2 1    1 
$%
 $#"  $$      $ $ #$ # # '$  # #  

2 11   1 
 
#    # #     #   !  % "! '#0
    $  

    $  * 

    -     0% - - 1 -


-   /
$%$#" $$    $ $ #$ # # $     % 

2 1    1 
$%
 $#"  $$      $ $ #$ # # '$  # #  

2 1  22   
 
#    # #     #   !  % "! '#0
    $  

    $  * 

2

    -     0% - - 1 -


-    /
$%$#" $$    $ $ #$ # # $     % 

2 1    1 
$%
 $#"  $$      $ $ #$ # # '$  # #  

2 1    1 
 
#    # #     #   !  % "! '#0
    $  
 12
    $  * 

    -     0% - - 1 -


-   /
$%$#" $$    $ $ #$ # # $     % 

2 1    1 
$%
 $#"  $$      $ $ #$ # # '$  # #  

2 1    1 
 
#    # #     #   !  % "! '#0
    $  
2
    $  * 

  

 



 

  /

    $  *  -     0%  -  - 


-, -

APPENDICE A. ESEMPI

206

         # $     %


 

$ %
 $#" $$    $$ #$ # # '$ # #  

2            
#    # #     # !  % "! '#0  $  
$ % $#"
$$     $  $ #$  #

2 2  1

 $  *  -      % - 


 -
 - -   /
$ %$#" $$    $$ #$ # # $     %

2 2  1

$ %
 $#"  $$      $
  $ #$  # # '$ # #  

2 22 
 112
#    # #     # !  % "! '#0  $  



 

 $  *  -      % - 


 -
 - -    /
$ %$#" $$    $$ #$ # # $     %

2 2  1

$ %
 $#"  $$      $
  $ #$  # # '$ # #  

2 2  12 1
#    # #     # !  % "! '#0  $  
 

 

 $  *  -      % -   -  - -   /


$ %$#" $$    $$ #$ # # $     %

 1   12
$ %
 $#"  $$      $
  $ #$  # # '$ # #  


   1 
#    # #     # !  % "! '#0  $  

 

 $  *  -      % -   -  - -    /


$ %$#" $$    $$ #$ # # $     %

 1   12
$ %
 $#"  $$      $
  $ #$  # # '$ # #  

 2 2 1
#    # #     # !  % "! '#0  $  


 

A.25. FORMULE COMPOSITE DI NEWTON-COTES: SIMPSON




    
       /
$%$#" $$    $ $ #$ # # $     % 


 1   12
$%
 $#"  $$      $ $ #$ # # '$  # #  


 1    2 
#    # #     #   !  % "! '#0  $  

    $  *  -     0%  -
- -  -

207

APPENDICE A. ESEMPI

208

A.26

Formule adattive di Newton-Cotes: Trapezi

  
  '#   *,3 /
 !  +
 *,3 / 6*,3 /

    '&   %& +*   - - ' -  /
 !

 12 1   1
    '&   %
 &  +*   - - ' -    /
 !

 111222
  2
 

  
  '#  
3+
 *,3 / 
 

 

*,3 /

  '&  %& +*   -

 

 !

  /

-1
-

   


2 1 21

  
  '#  *,3 /
 *,3
#!0*,3 // 6!'5 

 

  /

**,3  /

  '&  %& +*  - 2

 

 !

2   122

  /

-  -

A.26. FORMULE ADATTIVE DI NEWTON-COTES: TRAPEZI

209

f1(x)
0.7

0.6

0.5

0.4

0.3

0.2

0.1

0.1

0.2
1

10

11

12

Figura A.38: Metodo Trapezi-adattivo con la funzione y =


1e3

sen(x)
x

e tolleranza

f (x)
1

0.7

0.6

0.5

0.4

0.3

0.2

0.1

0.1

0.2
1

10

11

12

Figura A.39: Metodo Trapezi-adattivo con la funzione y =


1e5

sen(x)
x

e tolleranza

APPENDICE A. ESEMPI

210

f4(x)
3000

2500

2000

1500

1000

500

0
3

3.5

4.5

5.5
x

6.5

7.5

Figura A.40: Metodo Trapezi-adattivo con la funzione y = e x 1 e tolleranza


1e3

f5(x)

1
0.8
0.6
0.4
0.2
0
0.2
0.4
0.6
0.8
1

10

Figura A.41: Metodo Trapezi-adattivo con la funzione


1e3

xcos(x)

x2 +4

e tolleranza

A.27. FORMULE ADATTIVE DI NEWTON-COTES: SIMPSON

A.27 Formule adattive di Newton-Cotes: Simpson

  &  %&  *   - -  -   0/

!   !#

 !

 




111 212

  &  %&  *    -

!   !#

 !

   /

-1 -

1 21 


2

  &  %&  *    -  2


- 
-   /

!   !#

 !

2 2

  &  %&  *    -   

!   !#

 !

   /

- 
-

    


2 2 2  

  &  %&  *    -  


-  -   0/

!   !#

 !


1 1

211

APPENDICE A. ESEMPI

212

f (x)
1

0.7

0.6

0.5

0.4

0.3

0.2

0.1

0.1

0.2
1

10

11

12

Figura A.42: Metodo Simpson-adattivo con la funzione


1e5

sen(x)
x

e tolleranza

f (x)
4

3000

2500

2000

1500

1000

500

0
3

3.5

4.5

5.5
x

6.5

7.5

Figura A.43: Metodo Simpson-adattivo con la funzione e x 1 e tolleranza


1e5

A.27. FORMULE ADATTIVE DI NEWTON-COTES: SIMPSON

213

f (x)
5

1
0.8
0.6
0.4
0.2
0
0.2
0.4
0.6
0.8
1

10

Figura A.44: Metodo Simpson-adattivo con la funzione


1e4

xcos(x)

x2 +4

e tolleranza

f6(x)

1
0.98
0.96
0.94
0.92
0.9
0.88
0.86
0.84
0.82
0.8

0.5

0.4

0.3

0.2

0.1

0
x

0.1

0.2

0.3

0.4

0.5

Figura A.45: Metodo Simpson-adattivo con la funzione di Runge


tolleranza 1e5

1
1+x2

APPENDICE A. ESEMPI

214
f (x)
6

1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
5

0
x

Figura A.46: Metodo Simpson-adattivo con la funzione di Runge


1
(diverso intervallo) e tolleranza 1e 5
1+x2

A.28

Autovalori ed Autovettori

 $##" *,+*  /
 /

 


 
 






 

 

  



  

  

   
   

  


 
   !#" #  !0*  - /

  !#



 





 



 






 


 
 









 


1


 
 



 






 






 



 
 



2



 



 

A.28. AUTOVALORI ED AUTOVETTORI

 

 


*, /

 !
   2122 2
  12 11   

 1 11 2   2 2


 11 1 

 1 11 2   2  2


 11 1 

  1     


 22 
  1     
 22 

 1  1  
  1 1 

 1  1  
  1 1 
 1   1  
1   
 1   1  
1   
%
 $" #   *,
-    !# -   /
% $ 
   
 2  1 2
%
 $" #   *,
-    !# -    /
% $ 
   
 2 12221  
%
 $" #   *,
-    !# -   /
% $ 
   
 2 122 2
%
 $" #   *,
-    !# -   ! /
% $ 
   
 2 122 2 

 

 

*, /

 !
   2122 2
  12 11   

 1 11 2   2

 1 11 2   2

  1    


  1    

 1  1

 1  1
 1   1 
 1   1 

2
 11 1 
 2
   11 1 

   22 


   22 



    1  1 

    1  1 

  1      

  1      

215

APPENDICE A. ESEMPI

216


  !# $##" *,+*  - /


' /

  !# 


2




 


%
 $" # *,
-    !#
% $
    2  1  2
%
 $" #   *,
-    !#
% $
    2 122  
%
 $" #   *,
-    !#
% $
    2 122 2
 1
%
 $" #   *,
-    !#
% $
    2 122 2 


   /

-

  ' /

-

   /

-



- ! /

 

*, /

 !
   2122 2
  12 11   

 1 11 2   2  2


 11 1 

 1 11 2   2 2


 11 1 

  1     


 22 
  1     
   22 

 1  1 
    1  1 

 1  1 
    1  1 
 1   1  
  1      
 1   1  
  1      
    !#  $##" *,+
 *  - /
' /
   !#


A.28. AUTOVALORI ED AUTOVETTORI

217

2 2



 
2 2
 2
  1
  
 
1

   # *,
-    !#
% $ 
   21  
%
 $" #   *,
-    !#
% $ 
   
 2 1212 2
%
 $" #   *,
-    !#
% $ 
   
 2 122 2  2
%
 $" #   *,
-    !#
% $ 
   
 2 122 2 

  /

 % $"

  /

 /

 ! /

 $##" *,+*  /
 /








2


 










 





 1
 
  1 

 


   *    *, //
  





 

 
 

 

2

 

 


 
 


 




1



 









 







 





 






 


 





  2
#$  !  # 

APPENDICE A. ESEMPI

218


















  !#"+*  - /




  !#
 
 

   1  21
 
 
   

21   2 
 

 1   

  
 11

 
   1  1

 
  11 22
   2 
 
2
   1
 

 2 2 2 
  * /
  !
   2

 
 
 

 
 
 



 

 

 

 

 

 
%
 $" #   *
-    !#+-    /
% $
 2 1 
 2    


























 #








  




#$  !


 












Bibliografia

[1] Paolo Marcellini, Carlo Sbordone: Calcolo, Liguori Editore 1992


[2] Tobias Oetiker, Hubert Partl, Irene Hyna, Elisabeth Schlegl: Una (mica
tanto) breve introduzione a LATEX 2 , 2000
[3] Valeriano Comincioli: Analisi Numerica metodi, modelli, applicazioni.
Ed. McGraw-Hill 1995
[4] Marco Abate: Geometria. Ed. McGraw-Hill 1996
[5] Ferruccio Fontanella, Aldo Pasquali: Calcolo Numerico: metodi e
algoritmi, Pitagora Editrice Bologna 1984
[6] Douglas R. Hofstadter: Gdel, Escher, Bach: uneterna ghirlanda
brillante, gli Adelphi 1990

219

Index

x
, 20
y, 20

globale, 78, 79
locale, 78
passo multiplo, 78
passo singolo, 78
costante di Lebesgue, 110
Cramer
metodo di -, 37

Aitken
metodo di accelerazione di -,
90
algebra lineare, 29
approssimazione di funzioni, 95
condizionamento, 109
splines, 114
arrotondamento, 17
ascisse di Chebyshev, 110
autovalori, 28, 145
autovettori, 145

differenze divise, 102


disuguaglianza triangolare, 71
Doolittle
rappresentazione di -, 38, 50
errore assoluto, 17, 22
errore relativo, 17, 22, 34, 36
errori sui dati, 20
errori sui risultati, 20

base
di Lagrange, 98, 130
di Newton, 101
Bisezione
convergenza, 79
metodi di -, 78

fattorizzazione
A = LDLT , 45
A = LU , 38
teorema di unicit -, 38
A = QR, 54, 125
P A = LU , 49
fenomeno di cancellazione, 21
flops, 32
formule di quadratura, 129
composite, 135
adattive, 139
Newton-Cotes, 135
Simpson, 135
trapezi, 135
grado di precisione, 129
interpolatorie, 129

Chebyshev
ascisse di -, 110
coefficiente di amplificazione, 20
condizionamento, 23
definizione, 22
dei sistemi lineari, 34
integrazione numerica, 133
interpolazione funzionale, 109
minimi quadrati, 125
numero di -, 35
sistemi non lineari, 76
convergenza
220

INDEX
Newton-Cotes, 130, 131
Simpson, 132
trapezi, 131
Gauss
matrice elementare di -, 39
metodo di eliminazione di -,
34, 39
moltiplicatore di -, 51
vettore di -, 39, 50
Gauss-Seidel
convergenza del metodo di -,
70
metodo di -, 70
Givens
matrice di -, 60
metodo di -, 60
gradi di libert, 115
grado di precisione, 129
Horner
algoritmo di -, 104
Householder
matrice di -, 55
metodo di -, 57, 126
indice di Sard, 121
integrazione numerica, 129
condizionamento, 133
numero di condizionamento,
133
Jackson
teorema di -, 114
Jacobi
convergenza del metodo di -,
66
matrice di -, 66
metodo di -, 65
Jordan
forma canonica di -, 66
Lagrange
base di -, 98, 130
polinomio in forma di -, 97

221
Lebesgue
costante di -, 110
matrice
convergente, 66
definita positiva, 30, 70
di collocazione, 96, 124
di permutazione, 30, 49, 51
di rotazione, 60
diagonale, 30
diagonale dominante, 42, 67,
70
elementare, 54
Householder, 55
identit, 30
inversa, 30
Jacobi, 66
ortogonale, 30
riflessione, 55
semi-definita positiva, 30
simile, 67
simmetrica, 30, 70
singolare, 31
sottomatrice principale, 31
sparsa, 65
trasposta, 30
triangolare, 30
Vandermonde, 96, 125, 130
metodi diretti, 37
metodi iterativi, 64
metodo delle corde, 86
metodo delle potenze, 146
metodo delle secanti, 88
metodo di accelerazione di Aitken,
90
minimi quadrati, 122
condizionamento, 125
minore principale, 31, 145
Neville
algoritmo di -, 106
Newton
base di -, 101
metodo delle corde, 86

INDEX

222
metodo delle secanti, 88
metodo di -, 81
metodo di accelerazione di Aitken, 90
modificato, 84
teorema di convergenza locale, 84
Newton-Cotes
formule di quadratura, 130, 131
norma
consistente, 27
indotta, 27
matriciale, 26
vettoriale, 25
numeri macchina, 16
operazioni mat-vec, 65
ordine di convergenza, 77
overflow, 16
pivoting parziale, 49
polinomio
caratteristico, 145
polinomio in forma di Lagrange,
97
precisione di macchina, 17
punto fisso, 81, 84, 85
raggio spettrale, 27, 66
rappresentazione
teorema di, 15
Rayleigh
quoziente di -, 147
residuo, 37, 68
residuo scalato, 37
Rouch-Capelli
teorema di -, 145
Sard
indice di, 121
Simpson
formula di -, 132
sistema delle equazioni normali, 124
sistemi lineari, 30
sistemi non lineari, 75

condizionamento del problema,


76
numero di condizionamento,
76
spettro, 66
splines, 114
cubiche, 115
naturali, 117
periodiche, 120
lineari, 115
quadratiche, 115
stabilit, 22
tolleranza, 68, 76
trapezi
formula dei -, 131
trasposto coniugato, 146
troncamento, 17
underflow, 16
Vandermonde
matrice di -, 96, 125, 130