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(" 'POQ=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.
Indice
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
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
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
75
76
78
81
84
86
.
.
.
.
.
.
.
.
.
.
INDICE
.
.
.
.
.
.
.
.
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
177
177
178
180
180
181
182
182
183
185
185
186
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
1
A.46 Metodo Simpson-adattivo con la funzione di Runge 1+x
2 (diverso
5
intervallo) e tolleranza 1e
. . . . . . . . . . . . . . . . . . . 214
10
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
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
1.1
Causa
i i
i=1
16
x R = sign(x) p
t
X
di i
i=1
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 ,
1 5 3 7 1 5 3
4 16 8 16 2 8 4
7
8
9
4
17
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|
x
2
Da notare che nel caso dellerrore relativo, questo dovuto solo a t, cardinalit della mantissa.
1.2
Precisione di macchina
Y*),+
il pi piccolo numero
18
2
3
4
5
6
7
8
9
10
11
12
13
14
E=1;
% controllo precisione
(1+E)>1
E=E/2;
15
16
E=2.E;
17
'2
H "Z *F
1.3
Operazioni di macchina
yB
19
Questa semplificazione ci permessa poich tale prodotto risulta essere pi piccolo della
precisione di macchina eps
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 |
= (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
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)
21
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
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
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
23
24
Capitolo
Norme
2.1
ER
Norma vettoriale
|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
2.2
Norme matriciali
27
||Ax||
||x||
||y||=1
2
Definizione 2.9 Si definisce raggio spettrale la funzione:
(A) = max |i |
i=1,...,n
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
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
30
(1)i+j det(Aji )
det(A)
31
a11 . . . a1k
. . . a1n
..
..
..
..
.
.
.
.
ak1 . . . akk
akn
..
..
.
.
.
.
.
an1 . . . ank
. . . ann
Definizione 3.11 Si definisce minore principale il determinante di una sottomatrice principale.
..
a21 a22
.
..
..
.
.
.
.
.
..
ak1
akk
.
..
..
..
.
.
.
an1 ann
y T Ak y > 0
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
3.2
Sistemi Lineari
&-
2
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
i1
X
j=1
aii
aij xj
i = 1, . . . , n
33
[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
1
n
X
j=i+1
aii
aij xj
i = 1, . . . , n
[x] = risolvi_triangolare_superiore(A,b)
2
3
4
5
6
7
8
9
10
11
12
13
34
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
[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);
;
&-
2
3.3
(3.1)
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)
Da cui
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||
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||
(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||
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
37
||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
det(Ai )
det(A)
Come vedremo nel seguito del capitolo il residuo spesso utilizzato come criterio
darresto nei metodi iterativi
38
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
w
Un1
0
Ln1
L=
U =
T
T
u
1
0
39
Ak A12
A21 A22
g1 =
0
a21
a11
..
.
an1
a11
in cui (a11 6= 0)
eT1 = (1, 0, . . . , 0)
40
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)
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
1
L1 L1
2 Ln1 U = A
|1
{z
}
L
T
Teorema 3.16 Per un generico intero k, vale luguaglianza L 1
k = (I + g k ek )
41
= (I g k eTk ) (I + g k eTk ) =
.
.
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)
..
.
A(n) x = b(n)
..
..
..
..
.
.
.
.
(k)
A =
..
(k)
(k)
.
0
a
a
kk
kn
..
..
..
..
.
.
.
.
0
(k)
ank
(k)
ann
42
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
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
43
n
X
j=1
|aji |
con j 6= i i = 1, . . . , n
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
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
[A] = gauss(A)
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
%
%
%
%
di riga di A.
Stefano Ceri, Paolo Filippelli, Giacomo Sacchetti
Mon Jun 21 11:28:36 CEST 2004
27
28
29
30
31
32
33
34
35
36
37
x=risolvi_triangolare_superiore(A,b);
38
39
40
41
45
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 .
2
3
4
5
6
7
8
9
10
11
Nota bene : L ed U non sono quelle calcolate in precedenza, bens indicano la generica
fattorizzazione del tipo A = LU
27
28
29
30
31
32
33
34
35
36
38
39
40
41
42
43
44
46
47
50
51
v=risolvi_triangolare_inferiore(A,b);
v=v./d;
v=risolvi_triangolare_superiore(A,v);
45
49
37
48
1
[v]=risolvi_LDLT(A,b)
2
3
4
47
48
5
6
7
8
9
10
11
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
46
47
49
50
51
v=risolvi_triangolare_inferiore(A,b);
v=v./d;
v=risolvi_triangolare_superiore(A,v);
45
48
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)
(1)
(1)
1n
a
11 a
(2)
0 a(2)
a2n
22
(2)
A = .
..
..
..
.
.
.
.
.
(2)
an2
(2)
ann
(2)
cio
A(3)
(1)
11
0
= 0
.
.
.
0
(2)
a
22
0
..
.
a33
..
.
an3
(3)
(3)
(1)
a
1n
(2)
a
2n
(3)
a3n
..
..
.
.
(3)
ann
50
z
}|
{
Ln1 Pn1 Ln2 (Pn1 Pn1 )Pn2 Ln3 (Pn2 Pn1 Pn1 Pn2 )Pn3 . . .
| {z }
| {z }
I
n2
L
n3
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
n1
X
i=1
gi eTi
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
0, 1 1
0, 1 3
= 0, 1 5
a
22
Da cui:
i 0, 1 3 0, 1 1
0, 1 1
A(2) b(2) =
0
0, 1 5 0, 1 5
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
ai+1 i
aii
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
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
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 ) =
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
%
%
%
30
[m,i]= (
(A(k:n,k)));
(m==0)
(matrice non fattorizzabile!);
31
32
33
34
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
54
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
= I ( + )uv t + u (v T u) v T =
| {z }
T
scalare
T
= I ( + v u) uv = H(, u, v)
|
{z
}
(1 v T u) =
=
dove 6=
1
,
vT u
v T u
(3.3)
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
uT
w
x
(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
56
v
vT
vv T
=I 2 T
||v||2 ||v||2
v v
w=
I 2
T
vv
vT v
z }| {
vT x
x =x2
v
vT v
i = 2, . . . , n
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
57
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
Q2 =
1 0
0
..
2
Q
.
(n1)(n1)
0
A(2)
1
0
..
.
..
.
0
(1)
a12
(2)
(1)
a1n
(2)
2 a23 a2n
..
..
0
.
.
..
..
..
.
.
.
(2)
(2)
0
an3 ann
58
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
T
i = Ini+1 2 vi vi
Q
viT vi
vi Rni+1
A(i)
(i1)
(i1)
A12
A11
(i)
ai i+1
0
..
.
ai+1 i+1
..
.
an i+1
(i)
(i)
(i)
ain
..
.
..
.
(i)
ann
2
3
4
5
6
7
8
9
10
11
%
%
59
1
[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
1
v=house(x)
2
3
4
5
6
7
60
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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);
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
quindi
cos = sin b
61
y
y1
x
y1
x1
x1
x2
x1 ,
ma
sin
= tan
cos
allora risulta
1
cos =
1 + b2
quindi
sin = cos b
..
i
cos
sin
..
Qij =
j
sin
cos
..
i
j
1
infatti una matrice identit con quattro elementi modificati nel modo illustrato.
62
..
i1
cos
sin
Qi1 i =
i
sin cos
..
.
1
j = 1, . . . , n
j = 1, . . . , n
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.
2
3
4
5
%
%
%
%
%
%
63
12
13
14
15
[A,b]=fatt_Givens(A,b);
x=risolvi_triangolare_superiore(A,b);
1
[A,b] = fatt_Givens(A,b)
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
1
[c,s]=givens(x1,x2)
2
3
4
5
6
7
8
9
10
11
12
13
14
x2 == 0
c=1; s=0;
(x2)>
(x1)
r=x1./x2; s=1./ (1+r.^2); c=s.r;
64
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
r1=b(1);
r2=b(2);
b(1)=cr1+sr2;
b(2)=sr1+cr2;
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
65
quindi risolviamo
A = DLU =
(D L U )x = b
D
L
U
Dx = (L + U )x + b
(3.6)
k = 0, 1, . . .
(3.7)
Definizione 3.22 Una matrice Ann si dice sparsa se il numero di elementi di A non nulli
proporzionale ad n
66
e pertanto
e(k)
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}
67
i P(Bj )
||Bj v||
||v||
||Bj v||
||v||
|| ||v||
=
=
= || ||B||
||v||
||v||
||v||
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
68
Quindi
X aij
||Bj ||1 = max
ajj < 1
j=1,...,n
i6=j
2
3
4
5
6
%
%
%
%
%
%
%
%
%
%
%
%
%
%
43
44
47
48
42
46
41
45
69
i>= npassi
(Numero di iterazioni superiore al limite);
(La matrice di input non e quadrata);
70
k = 1, 2, . . .
(3.9)
(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)
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
n
X
akj vj +
k1
X
akj vj
j=1
j=k+1
n
X
j=k+1
k1
X
j=1
|akj | |vj |
|{z}
1
k1
n
X
1 X
|akj |
|akj | +
||
j=k+1
j=1
72
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
% 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);
73
74
Capitolo
f : D Rn Q Rm ,
f [f1 , f2 , . . . , fm ]T
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
76
4.1
dove la quantit
1
|f 0 (x)x|
f (
x)
0
f (x)
x
1
x)|
x = |f 0 (x)x| |f (
77
_
x
~x
a)
b)
c)
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 =
78
questa quantit
differisce poco da 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
79
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
80
[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
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)))
53
54
55
56
57
58
59
60
61
62
81
x=c;
% visualizzo la posizione della radice
ezplot(f,[ai,bi]);
4.3
Metodo di Newton
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 )
f 00 (k )
(x xk )2
2!
82
f (xk )
f 00 (k )
+
(x
(x xk )2
x
)
+
k
f 0 (xk )
2!f 0 (xk )
ek+1
Ora,
ek+1
f 00 (k )
=
2!f 0 (xk )
e2k
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)
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 )
1
83
[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
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
84
f (xk )
f 0 (xk )
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
85
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
[x,k]=newton_modif(f,df,toll,innesco,m,npassi)
2
3
4
5
6
7
8
9
10
11
12
86
13
14
15
16
17
%
%
%
%
%
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
87
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
[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
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);
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
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
89
nel caso che le radici siano semplici, altrimenti se le radici sono multiple
tale valore pari ad p = 1.
1
[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
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
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
ek ' c ek1
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
ek+1 ' c ek
Quindi
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 =
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
% 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;
% 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
94
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
n
X
j j (x)
j=0
n
X
j j (xi ) = fi
j=0
95
96
..
..
..
.
.
.
.
..
.
.
.
.
.
.
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
(xi xj )
i>j
i,j=1,...,n
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
97
1
[V]=vandermonde(x)
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
5.1
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
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
i=0
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
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
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
[px]=lagrange(x,f,k)
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
px=px+f(i).p;
2
3
4
5
6
7
8
9
10
%
%
%
%
%
%
%
%
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
5.2
101
..
.
wn (x) =
n1
Y
j=0
(x xj )
k = 0, . . . , n
=0
e deve accadere:
cio An+1 =
fn+1 Pn (xn+1 )
wn+1 (xn+1 )
6= 0
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 )
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
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 )
103
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
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 )]]
n
X
Ai wi (x)
i=0
2
3
4
5
6
7
8
9
10
11
12
13
14
%
%
%
%
105
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
(xtab,px,r,x,y,ko);
ezplot(f,[a,b]);
on;
1
[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
106
[A]=differenzedivise(x,f)
2
3
4
5
6
7
8
9
10
11
12
13
14
(x);
n=
m=
(f);
(n==m)
A=f;
15
16
17
18
19
20
21
A(j)=(A(j)A(j1))./(x(j)x(jk));
22
23
24
25
26
27
28
29
Per far questo calcoliamo il polinomio appena scritto nei punti interni allintervallo {x0 , x1 , . . . , xn } e cio
Pn{x0 ,x1 ,...,xn } (xj ) =
=
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 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
newtonnevilleuni(f, a, b, n, na)
2
3
4
5
6
7
8
108
9
10
11
12
13
14
15
16
17
18
%
%
%
%
%
%
%
%
%
%
19
20
21
22
23
24
25
26
27
28
29
30
31
32
(xtab,px,r,x,y,ko);
ezplot(f,[a,b]);
on;
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
p(j)=px(n);
109
5.3
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
i=0,...,n
x[a,b]
n
X
i=0
n
X
i=0
max |fj fj |
j=0,...,n
n
X
i=0
n
X
i=0
|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
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
(2i + 1)
2n + 2
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.
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
111
newtonhornercheby(f, a, b, n, na)
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
(xtab,px,r,x,y,ko);
ezplot(f,[a,b]);
on;
newtonnevillecheby(f, a, b, n, na)
2
3
4
5
6
112
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
(xtab,px,r,x,y,ko);
ezplot(f,[a,b]);
on;
5.4
Errore di interpolazione
k=0
113
}|
{
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)
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)!
114
n
Y
i=0
|x xi |
Mn+1
(b a)n+1
(n + 1)!
x,y[a,b]
|xy|
5.5
ba
(1 + n )
n
Splines
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
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
116
x xi
xi+1 x
+ Mi+1
hi+1
hi+1
(x xi )3
(xi+1 x)3
+ Mi+1
+ Ai (x xi ) + Bi
6hi+1
6hi+1
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
S 0 (xi )+ = Ai
S 0 (xi )
x [xi , xi+1 ]
5.5. SPLINES
117
(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
M1
d1
2 1 0
...
0
..
..
..
.
2 2 2
.
.
..
.
.
.
.
.
.. ..
..
=
0
.
0
.
..
..
..
..
..
.
.
.
. n2
.
0 . . . 0 n1
2
Mn1
dn1
(F,x,npassi)
2
3
4
5
6
7
8
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).
118
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
41
42
43
44
45
46
47
48
49
50
%
%
%
%
%
%
%
%
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
61
62
5.5. SPLINES
63
64
65
66
67
68
69
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
(xtab,ytab,b,xtab,s,r,x,f,ko);
on;
1
[x] = fatt_trid_ALU_spline(lambda,diagl,n,f)
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
% 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);
120
27
28
f(k+1)=f(k+1)mu(k).f(k);
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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
h1
h1
f1 f 0
M0 M1 +
3
6
h1
hn
fn fn1 hn
Mn +
Mn1
+
3
hn
6
f1 f0 fn fn1
= 6
h1
hn
f1 f0 fn fn1
= 6
h1
hn
=
h1 + h n
h1
hn
5.5. SPLINES
121
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 )
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
122
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
123
x0
x1
x2 x3
x4 x5
x6
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
n
m
X
X
g
fi
= 2
cj j (xi ) k (xi ) = 0
ck
i=0
k = 0, . . . , m
j=0
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
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
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 )
M : M = AT A
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)
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
126
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
2
3
4
5
6
%
%
%
127
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
% 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);
128
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
n
X
wi f (xi )
(6.1)
i=0
p k
dove
En [f ] = In [f ] I[f ]
6.1
130
Pn (x) dx
con Pn (x) =
n
X
fi Li n (x)
i=0
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.
dove
h=
ba
n
i = 0, . . . , n
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)
131
(n)
n
X
i=0
(n)
f (xi )
(6.3)
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
+ 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
132
Otteniamo allora
a+b
ba 1
I2 [f ] =
f (a) + 4f
+ f (b)
2
3
2
(6.4)
x1
x0
x2
(n)
=n
(6.5)
i=0
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
% calcolo lintegrale
x=((ba)/2)(f_a+f_b);
133
[x]=simpson(f,a,b)
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
n
X
wi fi
i=0
quindi
e indichiamo le perturbazioni sui dati con f,
In [f] =
n
X
wi fi
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
134
quindi
n
X
i=0
|wi | =
n
X
wi
i=0
n
X
= h
i=0
= nh =n
ba
= ba
n
se n 8
con (a, b)
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
135
Ij = [yj , yj+1 ]
hj =
yj+1 yj
n
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
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
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
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
(2)
m1
1 X (2)
() =
f (j )
m
j=0
137
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
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
(Il valore dellintegrale calcolato con la primitiva
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)
2
3
4
5
6
7
8
9
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
2
3
4
5
6
7
8
9
10
11
12
% definisco le ascisse
h=(ba)/(2m);
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
140
3E1,2m [f ]
se e soltanto se
1
E1,2m [f ] (I1,2m [f ] I1,m [f ])
3
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)
141
--
=)
f (x) dx
J[,] =
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
[x]=trapezi_adattiva_graph(f,a,b,tol)
2
3
4
5
6
7
8
9
10
11
12
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);
142
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
ezplot(f,[a,b]);
on;
% calcolo lintegrale
fa = (f,a);
fm = (f,(a+b)/2);
143
1
[Idd]=simpson_adattiva(f,a,b,fa,fm,fb,toll)
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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
([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
Autovalori e Autovettori
Q
7.1
UESTO
Introduzione
(7.1)
146
7.2
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)
(0)
n
X
ci x(i)
i=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
(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
147
(k)
y (k)
(k)
yj
= b1 x(1) = v
(1)
v H Av
= 1
vH v
lim
k+
y (k) Ay (k)
H
y (k) y (k)
v H Av
= 1
k+ v H v
= lim
k+
148
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
Appendice
Esempi
Elenchiamo adesso una serie di esempi ottenuti dai codici matlab da noi
preparati.
149
APPENDICE A. ESEMPI
150
52221
62222
5
222122212222
.5 5
222122212222
1
1
11
!
!
2
A.2
Eliminazione di Gauss
$##" *,+*/
/
1
!!0*, /
!
#$ !
151
#
1
12
2
1 1
#
#$ !
1
!!0*, /
!
#$ !
1 1
2 12
2 2
2
221 1
1 2 12
1
21
2
2
1 1
2
12
2 2 1
11 1
1
1
11
11
1 1
1111
11111
12
2
12
2
1
221
1121
#
1
2
11
11121
#
#$ !
APPENDICE A. ESEMPI
152
1 1 2
2 2
1
12 1
1
2
11
2 21
1 2
1
1
1 11
2 12221
2 1
12 1
1 1
1 1 11
1
22 2 1
21 211
1 2 2
122
2 2
2
21
1 2 2 112
121 2 1
11
2
11 2
1
!!0*, /
#"
! !!
( # #" "0'$#
!!
#$
! #
1
2
1
2
2
1
1
1
2
1
153
#
2
1 2
122
1
22
2
2
#$ !
1
1
111111111112
1 222 2
1
2 1 1
212
1
112
12
1 1
1111
1
11
2 2 2 2
22 22 22
22
2
1
1
! *, /
2
!
22222222222222
APPENDICE A. ESEMPI
154
22222222222221
'$ "! $ #
- /
1
! *, /
2
"!#$"% '&"()+*,
-.0/
!
22222222222222
1
! *, /
2
1
1
"!#$"% '&"()+*,
-.0/
!
2
1
1
2
1
155
APPENDICE A. ESEMPI
156
A.4
1
1
! *, /
2
"!#$"% '&"4()+*,
-.0/
!
$##" *,+*/
/
1
1
1
1
1
157
! *, /
1
1
2
2
!
$##" *,+*/
/
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
1
2
2
2
1
2
2
2
2
2
$##" *,+*/
/
1
1
2
2
2
1
1
2
! *
/
2
1
!
2211
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
# # #
#
4()
!0*
#
- /
!
#""!0**,30/ 60/
2
! *, /
1
1
#"
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/
# # #
#
% !
111
1 2
1
1
2
111
1 2
#"
APPENDICE A. ESEMPI
162
111 1 2
122
1
A.7
! *, /
1
%!0*,
-.0/
22222222222222
22222222222221
22222222222221
22222222222221
2
1
1
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
111
2
1 1
11 2 1
#"
#"
APPENDICE A. ESEMPI
164
2
2 1
11 2
1 12
1 2 1
12
1221
11
2 1
2
2
A.8
1
1
1
3
3
2
1
1
1
2
1
! *, /
1
1
2
.3
- "!#$"% '&
3
- /
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
2 2
2
2 21
1 12
1 111
221 2
1
11 1
2 22
2
0
#
!#
.3
- "!#$"% '& #'0*,-.- # !0*'
'$ % #"
3
1
2222222222222
22222222222212
2222222222222
222222222222
222222222222
2222222222222
2222222222221
1 2
1 2
- /- -/
1 1
1
1 2 2
2
22 2
2 1
121 1 2
.3
- "!#$"% '&
-
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
.3
- "!#$"% '&
3
- - /
- /
APPENDICE A. ESEMPI
168
2
!
*
/
1
2
1
2
2
2
'#"$$
.3
- " !#$"% ' &
#'0*
-. -3
- 1
- /
#" !
"!#$"% '&
#'0
$# #
#
'# 0
!
A.9
* /
1
1
1
2
1
1
1
3
3
!
*, /
1
1
2
3
.3
- "!#$"% '&
2222222222 1
2222222222
1
222222222211
2222222222 22
2222222222
2222222222 1
22222222222 2
22222222221
- /
2
1
APPENDICE A. ESEMPI
170
1
1
2 222 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
1 1 11
2
12
1
12
2 1
2
1
1
2
3
.3
- "!#$"% '&
- /- - /
2
222222222222
222222222222
1
2
7
#"
2
1
112 11
2
12
1 2 211
22
2 1
22
2
1 2 2 2
.3
- "!#$"% '&
3
2222222222221
222222222222 1
7
#"
1
2
2 2
- '/
APPENDICE A. ESEMPI
172
1 1
21 1 1
2
2
22
1 1 2
111
.3
- "!#$"% '&
3
!
*
3
2
/
1
2
1
2
2
2
.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
175
.3
- "!#$"% '&
3
2222222222221
22222222222222
2222222222222
7
1
!
'# !
+*,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
177
fesp(x)
1
0.5
0.5
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
10
15
20
25
30
35
40
45
50
APPENDICE A. ESEMPI
178
fmult(x)
0
10
20
30
40
50
60
70
80
90
1
2
x
!!
.3
-
$
-
- #$$+-
- "/
3
!!
1
$
.3
- !! # +* $ -
#" !
#
# $
' # 0
A.12
"((
-
-
- /
"((
.3
- !! # & 0# * $
-
$
- ((
- -
- '/
179
222222222222
!!
.3
-
-
$
- "((- -
- /
3
222222222222
!!
$
.3
- !! # & 0
# +* $ -
#" !
# & 0#
# $
' # 0
* !
.3
- #"
3
-
!
- "((-
-
- /
2
112 2
* !
.3
- #"
-
!
3
$ - "(( -
-
-
-/
.3
- #"
* $ - $ - "((-
- - /
.3
- !! #" * $ -
#" !
"#
# $
' # 0
3
APPENDICE A. ESEMPI
180
fesp(x)
1
0.5
0.5
0.015
0.01
0.005
0.005
0.01
2.5
3.5
181
fmult(x)
0.05
0.04
0.03
0.02
0.01
0.01
2.5
3.5
4.5
* !
.3
- !
-
!
- - - - '/
- - -
- #$$ -
3
2
3
* !
.3
- !
-
!
- #$$ -
- '/
$
.3
-
! * $ - $
.3
- !
* $ -
#" !
!
# $
'# 0
3
22222222222222
- #$$+--
- -
- /
-
-
- #$$+--
- /
APPENDICE A. ESEMPI
182
fesp(x)
1
0.5
0.5
0.02
0.04
0.06
0.08
0.1
0.12
2
2.5
3.5
183
fmult(x)
0.02
0.04
0.06
0.08
0.1
0.12
2
2.5
3.5
+* $
.3
-
-
$
- '2 -
- /
3
21
2
3
#+* $
.3
-
$
- 2-
- /
2
+* $
.3
-
3
11
-
-
$
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
21
22
2
1
2
1
2 1
2
1 2 1
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
10
20
30
40
50
60
5
Polinomio interpolante
Punti di interpolazione
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
x
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
x
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
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
1
0.8
0.6
0.4
0.2
0
0.2
0.4
0.6
0.8
1
10
0
x
10
1
0.8
0.6
0.4
0.2
0
0.2
0.4
0.6
0.8
1
10
0
x
10
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
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
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
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
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
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
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
1
Funzione
Spline
Punti di interpolazione
0.8
0.6
0.4
0.2
0.2
0.4
0.6
0.8
1
5
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
0.8
0.6
0.4
0.2
0.2
0.4
0.6
Funzione
Spline
Punti di interpolazione
0.8
1
10
10
195
3
3
#$
! 1 #
#$ !
1
#
2
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
APPENDICE A. ESEMPI
196
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
3
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
197
0.7
0.6
0.5
0.4
0.3
0.2
0.1
10
15
20
25
30
15
20
25
30
35
APPENDICE A. ESEMPI
198
25
20
15
10
10
15
28
30
32
34
36
38
'# *,3 /
3+
*,3 /
%
'# %*,3 /
3+
*,3 / 3
f (x)
4
12000
10000
8000
6000
4000
2000
0
0
5
x
10
'# *,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
A.23
%$*
!
%$* 0
% -1/
0% - 0/
!
211222
!
!#+ * - -1/
!
21
%$*
!
1
1+x2
% -
/
* -
-
/
2 2 1
!
1
!
2
%$*
!
%$*
% -1/
!
211222
!
!#+ * - -1/
!
21
%$*
1
12
* -
- /
!
!
1
!
!#+ * -
- /
1 1
% - /
202
!
21
21
2
APPENDICE A. ESEMPI
203
$ *
$ *
-
0% -
/
- 1 - -
.
/
$%$#" $$ $ $ #$ # # $ %
2
2 1
$%
$#" $$ $ $ #$ # # '$ # #
2
11 2
# # # # !
% "! '#0 $
$ * - 0% - -
--
/
$%$#" $$ $ $ #$ # # $ %
2
2 1
$%
$#" $$ $ $ #$ # # '$ # #
2
1 21
# # # # !
% "! '#0 $
$ * - 0% - -
--
APPENDICE A. ESEMPI
204
205
$ *
2
/
APPENDICE A. ESEMPI
206
/
$%$#" $$ $ $ #$ # # $ %
1
12
$%
$#" $$ $ $ #$ # # '$ # #
1
2
# # # # !
% "! '#0 $
$ * - 0% -
- - -
207
APPENDICE A. ESEMPI
208
A.26
'# *,3 /
! +
*,3 / 6*,3 /
'& %& +* - - ' -
/
!
12 1 1
'& %
& +* - - ' -
/
!
111222
2
'#
3+
*,3 /
*,3 /
!
/
-1
-
2 1 21
'# *,3 /
*,3
#!0*,3 // 6!'5
/
**,3 /
!
2
122
/
- -
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
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
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
f5(x)
1
0.8
0.6
0.4
0.2
0
0.2
0.4
0.6
0.8
1
10
xcos(x)
x2 +4
e tolleranza
! !#
!
111 212
! !#
!
/
-1 -
2
! !#
!
22
! !#
!
/
-
-
2 2 2
! !#
!
11
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
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
213
f (x)
5
1
0.8
0.6
0.4
0.2
0
0.2
0.4
0.6
0.8
1
10
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
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
A.28
Autovalori ed Autovettori
$##" *,+*/
/
!#" # !0* - /
!#
1
2
*, /
!
21222
1211
*, /
!
21222
1211
2
111
2
111
22
215
APPENDICE A. ESEMPI
216
!#
2
%
$" # *,
- !#
% $
2 1 2
%
$" # *,
- !#
% $
2 122
%
$" # *,
- !#
% $
2 1222
1
%
$" # *,
- !#
% $
2 1222
/
-
'/
-
/
-
- ! /
*, /
!
21222
1211
217
22
2 2
2
1
1
# *,
- !#
% $
21
%
$" # *,
- !#
% $
2 1212 2
%
$" # *,
- !#
% $
2 1222 2
%
$" # *,
- !#
% $
2 1222
/
% $"
/
/
! /
$##" *,+*/
/
2
1
1
*
*, //
2
1
2
#$ ! #
APPENDICE A. ESEMPI
218
!#
1
21
21 2
1
11
1 1
11 22
2
2
1
22 2
*
/
!
2
%
$" # *
- !#+-
/
% $
2 1
2
#
#$ !
Bibliografia
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
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