Sei sulla pagina 1di 982

License

edgt-5-CLI_20110006666311-TX_20110006666311_9788850310319
granted on March 09 2011 to Alister Petrolini

Analisi numerica: metodi, modelli, applicazioni

Autore:
Valeriano Comincioli
Professore ordinario di Analisi Numerica
Universit degli Studi di Pavia
Copyright 2005 APOGEO srl
Socio Unico Giangiacomo Feltrinelli Editore srl
Via Natale Battaglia 12 20127 Milano (Italy)
Telefono: 02-289981 Telefax: 02-26116334
Email apogeo@apogeonline.com
U.R.L.http://www.apogeonline.com
ISBN 88-503-1031-5
Impaginazione elettronica in LATE a cura dellAutore
Copertina di Enrico Marcandalli

Tutti i diritti sono riservati a norma di legge e a norma


delle convenzioni internazionali. Nessuna parte di questo libro
pu essere riprodotta con sistemi elettronici, meccanici
o altri, senza lautorizzazione scritta dellEditore.
Nomi e marchi citati nel testo sono generalmente depositati
o registrati dalle rispettive case produttrici.

Quelli che sinnamoran di pratica sanza scienza,


son come il nocchiere,
chentra in navilio sanza timone o bussola,
che mai ha certezza dove si vada.
(Leonardo)

dedicato a Lucrezia e Sofia

Introduzione

La Matematica `e uno strumento per modellizzare il mondo reale. In forma schematica, un modello `e una
rappresentazione approssimata di un sistema o di un processo, ottenuta sostituendo con semplicazioni,
astrazioni ed analogie al fenomeno reale (il prototipo) un fenomeno in un campo pi`
u familiare. In particolare, in un modello matematico tale rappresentazione `e fatta in termini di variabili, parametri e relazioni
funzionali, che deniscono un problema matematico.
Dal momento che lo scopo della costruzione di un modello `e di illuminare mediante la sua analisi gli
aspetti incogniti del prototipo, condizione necessaria anch`e il modello sia utile `e che esso sia risolubile.
Il signicato preciso di risolubilit`
a varia, naturalmente, a secondo del tipo di modello considerato. Per
un modello matematico la risolubilit`
a signica richiedere, sempre in forma schematica, che il problema
matematico, che denisce il modello, sia:
ben posto: esistenza, unicit`a e stabilit`
a della soluzione. In un insieme di dati reali, il problema ha una ed
una sola soluzione, che varia con continuit`a al variare dei dati. Leventuale non unicit`
a e discontinuit`
a
della soluzione devono essere spiegate alla luce del prototipo.
ben condizionato: a piccole perturbazioni nei dati corrispondono piccole perturbazioni nei risultati;
tali perturbazioni possono essere dovute ad errori sperimentali o ad errori di arrotondamento nella
rappresentazione numerica dei dati.
Le propriet`
a ora evidenziate danno un carattere di adabilit`
a al modello matematico, ma non esauriscono
il signicato di risolubilit`
a. Spesso, infatti, la soluzione del problema matematico non `e data in forma
esplicita o direttamente utilizzabile. In questo caso si presenta per il problema matematico una situazione
analoga a quella che si ha per il problema reale. Per conoscere, cio`e, il comportamento della soluzione
del problema matematico, pu`
o essere necessaria lintroduzione di un nuovo modello, che in questo caso si
congura come una rappresentazione in dimensione nita, ottenuta mediante una discretizzazione del problema continuo. Il fatto che talvolta il modello discreto possa essere interpretato come un modello costruito
a partire direttamente dal prototipo reale, senza, cio`e, il passaggio intermedio del problema continuo, non
cambia la sostanza delle considerazioni che seguono.
Il modello discreto, o modello numerico, presenta una problematica in parte simile a quella vista per il
modello continuo. In particolare, sono ancora propriet`
a necessarie lesistenza, lunicit`a e la stabilit`
a della
soluzione discreta.
Come esempio di riferimento possiamo assumere la risoluzione di un problema ai limiti per un operatore
dierenziale lineare su un dominio ssato, che, come `e noto rappresenta un modello matematico di numerosi
fenomeni sici. Come vedremo meglio nel seguito, discretizzando il dominio e sostituendo le derivate con

iv

Introduzione

opportuni rapporti incrementali, si ottiene come modello discreto la risoluzione di un sistema lineare, per
il quale lesistenza e lunicit`
a della soluzione equivalgono alla non singolarit`
a della matrice dei coecienti
e la stabilit`
a `e data dal condizionamento della matrice stessa.
Tuttavia, sapere che il sistema `e ben posto non basta ancora a rendere il modello numerico utile, ossia
uno strumento di indagine del problema continuo.
Rimangono due questioni da esaminare. La prima riguarda la capacit`
a del modello discreto di descrivere
il modello continuo o il modello reale. In altre parole, riferendoci come illustrazione allesempio precedente,
si tratta di vedere se la soluzione discreta pu`
o essere resa vicina quanto si vuole (in una opportuna distanza)
alla soluzione del problema continuo inttendo opportunamente la reticolazione del dominio. In termini
pi`
u precisi, si tratta di esaminare la convergenza del metodo. Una questione collegata alla convergenza `e
la maggiorazione dellerrore, che fornisce un criterio di scelta di un particolare modello.
La seconda questione importante riguarda il fatto che anche un modello numerico, in generale, non ha
una soluzione esplicita. Nel caso dellesempio precedente, infatti, `e necessario un ulteriore passo: la scelta
di un particolare algoritmo, che risolva eettivamente il sistema lineare. A tale scopo si possono utilizzare
dierenti idee, ad esempio lidea della eliminazione (metodo di Gauss) o lidea delliterazione, che fornisce
la soluzione come limite di soluzioni di sistemi lineari pi`
u semplici. Ciascuna delle idee precedenti pu`
o
essere realizzata in numerosi modi (algoritmi) diversi. La scelta di un particolare algoritmo avverr`
a sia
sulla base delle propriet`
a della matrice (dimensioni, sparsit`
a, condizionamento), che dello strumento di
calcolo a disposizione.
Ultima fase della modellizzazione `e limplementazione dellalgoritmo in un particolare linguaggio su un
determinato calcolatore.
Abbiamo, in questo modo, delineato a grandi tratti lintero cammino della modellizzazione matematica
a partire da un ssato fenomeno reale no alla costruzione di un particolare programma di calcolo.
Nella forma nale il modello matematico diventa un vero strumento di indagine quantitativa, che
permette una sperimentazione su calcolatore. In particolare, confrontando i risultati ottenuti mediante il
modello matematico con i risultati sperimentali che si riferiscono al fenomeno reale, `e possibile analizzare
ladeguatezza del modello matematico introdotto, dando cos` avvio alllusuale processo iterativo dellacquisizione della conoscenza.
In questo processo di conoscenza sono di competenza dellAnalisi Numerica tutte le successive fasi a
partire dalla discretizzazione del problema continuo. Appare evidente, allora, limportanza fondamentale
dellAnalisi Numerica nel processo di modellizzazione del mondo reale.
Lo scopo principale del presente libro, che nasce da una pluriennale pratica didattica e da numerose
esperienze di ricerca pluridisciplinare nellambito della Matematica Applicata, `e di evidenziare, attraverso
lintroduzione e lanalisi dei pi`
u recenti metodi numerici e lo studio di alcune signicative applicazioni, la
potenzialit`
a del calcolo numerico e quindi, in denitiva, dello strumento matematico.
La maggiore dicolt`
a incontrata nella stesura del libro `e dovuta alla assoluta impossibilit`
a di fotografare
un ambiente in piena evoluzione come quello dellAnalisi Numerica attuale. Per ovviare, almeno in parte,
a questa dicolt`
a si `e, in un certo senso, privilegiato il passato come patrimonio acquisito, dando nel
contempo suggerimenti sulle nuove idee ancora in fase di sperimentazione. La bibliograa, volutamente
piuttosta ricca, dovrebbe aiutare ad approfondire e a seguire i nuovi orientamenti.

Le considerazioni precedenti, tratte dallintroduzione al libro: Analisi Numerica Metodi


Modelli Applicazioni (1995, [95]), inquadrano linteresse dellAnalisi Numerica nellambito della
modellizzazione matematica.
In questo senso sono tuttora di attualit`
a, anche se nel frattempo linsegnamento dellAnalisi
Numerica, come di qualunque altra disciplina, ha subito diversi e importanti cambiamenti, a
seguito di innovazioni sostanziali nei corsi di Laurea.
Con riferimento in particolare al corso di Laurea in Matematica, lo studio dellAnalisi Numerica, da corso riservato allindirizzo applicativo, `e divenuto un corso di base per tutti gli
indirizzi.
analisi numerica

c
V.
Comincioli

Introduzione

Una conseguenza di tale fatto, di per s`e positivo, `e stata la diminuzione piuttosto drastica del
tempo dedicato allinsegnamento del corso e la sua collocazione pi`
u anticipata rispetto al passato.
Ne consegue lopportunit`
a di rivedere il materiale didattico e il presente libro rappresenta un
tentativo in questa direzione.
Da un lato vi `e lo sforzo di rendere il testo in buona parte autosuciente, non richiedendo
particolari requisiti, salvo le nozioni elementari di Analisi Matematica e di Geometria.
Daltro lato, la trattazione `e resa pi`
u concreta e incisiva attraverso limplementazione dei
dierenti algoritmi, che permette sia una loro migliore comprensione che una opportuna indagine
della loro validit`
a e applicabilit`
a.
Per limplementazione si `e utilizzato il sistema MATLAB (cfr. link 1), che fornisce sia un
linguaggio ad alto livello che un ambiente interattivo. Una introduzione alle sue caratteristiche e
al suo utilizzo `e contenuta nel Capitolo 1.
In controtendenza rispetto allorientamento attuale e malgrado la riduzione del tempo dedicato allinsegnamento della materia, si `e cercato di sacricare il meno possibile lo spettro degli
argomenti trattati e il loro approfondimento, nella convinzione che un testo universitario debba
essere principalmente uno strumento di riferimento per ampliare le conoscenze e non meramente
una raccolta di appunti per le lezioni.

Pavia, maggio 2005

Valeriano Comincioli

Ogni formola matematica letterale o simbolica sar`


a tanto pi`
u
utile, quanto pi`
u rapidamente porter`
a al risultato numerico richiesto. La matematica moderna ha invece tendenza a divenire
sempre pi`
u astratta. Molti matematici, se hanno da risolvere
numericamente un problema, lo risolvono dapprima in generale
e, giunti alla formola simbolica letterale denitiva, dicono: ora
basta sostituire alle lettere i numeri dati per ottenere il risultato richiesto, ma vi `e da scommettere che molti di essi si
troverebbero imbarazzati nel fare il calcolo numerico eettivo.
Eppure il calcolo numerico `e lutensile per mezzo del quale i principii scoperti mediante la ricerca scientica sono messi in opera
in vista di applicazioni pratiche. Ed ad esso debbono ricorrere
continuamente il navigatore, il geodeta, il mecccanico, lelettricista, lingegnere, il sico, ecc. Quindi ogni semplicazione di
calcolo appporta a ciascuno di questi studiosi un grande sollievo,
ed `e perci`
o utilissima. E non `e da credere che i calcoli numerici
debbano interessare soltanto i ragionieri o i computisti, e non i
matematici.
Infatti molte delle semplicazioni apportate ad essi sono il frutto di un profondo studio teorico delloperazione da eseguirsi, e
quindi fattibili soltanto da matematici di indiscusso valore.
Ugo Cassina (Calcolo Numerico 1928, [74])

analisi numerica

c
V.
Comincioli

vi

Introduzione

Les equations generales de la propagation de la chaleur sont aux differences partielles,


et, quoique la forme en soit tres simple, les methodes connues ne fournissent aucun
moyen general de les integrer; on ne pourrait donc pas en deduire les valeures des
temperatures apr`es un temp determine. Cette interpretation numerique des resultats
du calcul est cepandant necessaires, et cest un degre de perfection quil serait tr`es important de donner `
a toutes les applications de lAnalyse aux Sciences naturelles. On
peut dire que, tant quon ne la pas obtenu, les solutions demeurent incompletes ou
inutiles, et que la verite quon se proposait de decouvrir nest pas moins cachee dans les
formules dAnalyse quelle ne letait dans la question physique elle-meme. Nous nous
sommes attache avec beaucoup de soin et nous sommes parvenu `
a surmonter cette difculte dans toutes les questions que nous avons traitees et qui contiennent les elements
principaux de la Theorie de la chaleur. Il ny a aucune de ces questions dont la solution ne fournisse des moyens commodes et exacts de trouver les valeurs numerique des
temperatures acquises, ou celles des quantites de chaleur ecoulees, lorsquon connait les
valeurs du temps et celles des coordonnees variables. Ainsi lon ne donnera pas seulment les equations dierentielles auxquelles doivent satisfaire les fonction qui exprime
le valeurs des temperatures; on donnera ces fonctions elles-memes sous une forme qui
facilite les applications num
eriques.
J. Fourier, Th
eorie analytique de la chaleur 1822

Constructing models for a slice of reality and studying their properties is really
what science is about. The models the hypotheses, the laws of nature, the
paradigmscan be of a more or less formal character, but they all have the fundamental
property that they try to link observations to some pattern.
L. Ljung, T. Glad

Someone has recently dened an applied mathematician as an individual enclosed in


a small oce and engaged in the study of mathematical problems which interest him
personally; he waits for someone to stick his head in the door and introduce himself by
saying, Ive got a problem. Usually the person coming for help may be a physicist,
engineer, meteorologist, statician, or chemist who has suddenly reached a point in
his investigation where he encounters a mathematical problem calling for an unusual
or nonstandard technique for its solution. It is of considerable importance for the
mathematician to be able to provide practical answer to such questions. By a practical
answer one does not mean a result which is obtained after months of detailed analysis
but, rather, a solution or explanation obtained in a minimum of time. The reply to
questions presented to him may require analysis or merely the ability to furnish a
reference to where one can nd the particular topic discussed.
M. Abramowitz

The solution of the algebraic eigenvalue problem has for long had a particular fascination for me because it illustrates so well the dierence between what might be termed
classical mathematics and practical numerical analysis. The eigenvalue problem has
deceptively simple formulation and the background theory has been known for many
years; yet the determination of accurate solutions presents a wide variety of challenging
problems.
J. H. Wilkinson, The algebraic eigenvalue problem, 1965

Mathematics is not merely the science of number. It is the science of pattern and
structure. Mathematically statements can be encoded in numbers, but numbers as such
are not an end in themselves. Once we wish to harness computation to understand
mathematics, we are compelled to compute numerical results not as an end but as
means to reveal the underlying structure. This has a number of important implications
for the future of computational algorithms.
A. Iserles

analisi numerica

c
V.
Comincioli

INDICE

Introduzione

iii

1 Idee introduttive
1.1 Analisi numerica . . . . . . . . . . . . . . . . . . . . . .
1.1.1
Scopo dellanalisi numerica . . . . . . . . . . . .
1.1.2
Brevi note storiche . . . . . . . . . . . . . . . .
1.2 Principi di fondo . . . . . . . . . . . . . . . . . . . . . .
1.2.1 Iterazione . . . . . . . . . . . . . . . . . . . . . .
1.2.2
Approssimazione locale . . . . . . . . . . . . . .
1.3 Brevi richiami di analisi funzionale . . . . . . . . . . . .
1.3.1 Spazi lineari . . . . . . . . . . . . . . . . . . . . .
1.3.2 Norme . . . . . . . . . . . . . . . . . . . . . . . .
1.3.3 Spazi a dimensione innita . . . . . . . . . . . .
1.3.4 Trasformazioni e operatori . . . . . . . . . . . . .
1.3.5 Importanza della scelta della norma . . . . . . .
1.4 Classicazione dei problemi computazionali . . . . . . .
1.5 Esempi introduttivi di Matlab . . . . . . . . . . . . . . .
1.5.1 Graca mediante Matlab . . . . . . . . . . . . .
1.5.2 Il problema 3x + 1 . . . . . . . . . . . . . . . . .
1.5.3 Numeri primi . . . . . . . . . . . . . . . . . . . .
1.5.4 Metodo Monte Carlo . . . . . . . . . . . . . . . .
1.5.5 Ricorsione . . . . . . . . . . . . . . . . . . . . . .
1.5.6 Ulteriori esempi illustrativi . . . . . . . . . . . .
1.5.7 Strutture dati: array di celle e array di strutture

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

1
1
1
4
5
5
8
11
11
13
13
15
18
18
20
21
28
29
30
31
37
40

.
.
.
.

43
45
46
46
48

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

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

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

2 Analisi degli errori


2.1 Sorgenti di errore . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Rappresentazione dei numeri sul calcolatore . . . . . . . . . .
2.2.1 Rappresentazione dei numeri in dierenti basi . . . . .
2.2.2 Conversione della rappresentazione di un numero reale
vii

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

.
.
.
.

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

.
.
.
.

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

.
.
.
.

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

.
.
.
.

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

.
.
.
.

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

.
.
.
.

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

.
.
.
.

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

.
.
.
.

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

.
.
.
.

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

.
.
.
.

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

.
.
.
.

viii

Indice

2.3
2.4

2.2.3 Numeri macchina; sistema oating-point . . . . .


2.2.4 Operazione di arrotondamento . . . . . . . . . .
2.2.5 Aritmetica in virgola mobile . . . . . . . . . . . .
2.2.6 Propagazione degli errori . . . . . . . . . . . . .
2.2.7 Condizionamento di un problema . . . . . . . . .
2.2.8 Errori, accuratezza, e numero di condizionamento
2.2.9 Tecniche di controllo degli errori . . . . . . . . .
Complementi e Problemi . . . . . . . . . . . . . . . . . .
Esperienze in matlab . . . . . . . . . . . . . . . . . . . .
2.4.1 Propagazione degli errori . . . . . . . . . . . . .
2.4.2 Condizionamento dei polinomi . . . . . . . . . .

3 Elementi di algebra lineare


3.1 Matrici. Denizioni fondamentali . . . . . . . . . . . .
3.1.1 Matrici particolari . . . . . . . . . . . . . . . .
3.1.2 Operazioni su matrici . . . . . . . . . . . . . .
3.1.3 Matrici partizionate . . . . . . . . . . . . . . .
3.1.4 Indipendenza lineare, base e dimensione . . . .
3.1.5 Determinante, inversa e rango . . . . . . . . . .
3.1.6 Matrici elementari . . . . . . . . . . . . . . . .
3.2 Sistemi lineari . . . . . . . . . . . . . . . . . . . . . . .
3.3 Autovalori e trasformazioni per similitudine . . . . . .
3.3.1 Trasformazioni per similitudine . . . . . . . . .
3.3.2 Autovettori a sinistra . . . . . . . . . . . . . .
3.3.3 Riduzione delle matrici . . . . . . . . . . . . .
3.3.4 Fattorizzazione unitaria di una matrice . . . .
3.4 Localizzazione degli autovalori . . . . . . . . . . . . .
3.4.1 Norma di vettore e di matrice . . . . . . . . . .
3.5 I valori singolari e la pseudoinversa . . . . . . . . . . .
3.5.1 Decomposizione in valori singolari SVD . . . .
3.5.2 Applicazioni della SVD . . . . . . . . . . . . .
3.5.3 Pseudoinversa . . . . . . . . . . . . . . . . . . .
3.6 Matrici non negative . . . . . . . . . . . . . . . . . . .
3.6.1 Matrici irriducibili . . . . . . . . . . . . . . . .
3.6.2 Matrici con inverse non negative; M-matrici . .
3.7 Complementi e Problemi . . . . . . . . . . . . . . . . .
3.7.1 Matrici in stechiometria . . . . . . . . . . . . .
3.8 Esperienze con Matlab . . . . . . . . . . . . . . . . . .
3.8.1 Matrix indexing: operazioni su indici di matrici
3.8.2 Matrici particolari . . . . . . . . . . . . . . . .
3.8.3 Operazioni su matrici . . . . . . . . . . . . . .
analisi numerica

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

.
.
.
.
.
.
.
.
.
.
.

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

.
.
.
.
.
.
.
.
.
.
.

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

.
.
.
.
.
.
.
.
.
.
.

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

.
.
.
.
.
.
.
.
.
.
.

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

.
.
.
.
.
.
.
.
.
.
.

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

.
.
.
.
.
.
.
.
.
.
.

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

.
.
.
.
.
.
.
.
.
.
.

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

.
.
.
.
.
.
.
.
.
.
.

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

.
.
.
.
.
.
.
.
.
.
.

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

.
.
.
.
.
.
.
.
.
.
.

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

.
.
.
.
.
.
.
.
.
.
.

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

.
.
.
.
.
.
.
.
.
.
.

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

.
.
.
.
.
.
.
.
.
.
.

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

.
.
.
.
.
.
.
.
.
.
.

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

.
.
.
.
.
.
.
.
.
.
.

51
55
57
61
64
65
70
73
78
79
81

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

83
83
84
85
90
90
94
97
100
102
103
104
105
106
108
110
113
114
118
121
124
125
126
128
132
135
135
140
142

c
V.
Comincioli

Indice

ix

4 Algebra lineare numerica


4.1 Metodi diretti . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.1 Sistemi triangolari . . . . . . . . . . . . . . . . . . . .
4.1.2 Sistemi generali; metodo di Gauss . . . . . . . . . . .
4.1.3 Strategia del pivot . . . . . . . . . . . . . . . . . . . .
4.1.4 Pivoting scalato . . . . . . . . . . . . . . . . . . . . .
4.1.5 Decomposizione LU . . . . . . . . . . . . . . . . . . .
4.1.6 Decomposizione LDMT . . . . . . . . . . . . . . . . .
4.1.7 Metodi di Crout e di Doolittle . . . . . . . . . . . . .
4.1.8 Matrici simmetriche . . . . . . . . . . . . . . . . . . .
4.1.9 Matrici a banda . . . . . . . . . . . . . . . . . . . . .
4.1.10 Matrici sparse . . . . . . . . . . . . . . . . . . . . . . .
4.1.11 Introduzione allupdating . . . . . . . . . . . . . . . .
4.1.12 Fattorizzazione a blocchi . . . . . . . . . . . . . . . . .
4.2 Analisi degli errori; condizionamento e stabilit`a . . . . . . . .
4.2.1 Stabilit`
a degli algoritmi . . . . . . . . . . . . . . . . .
4.2.2 Fattorizzazione A = QR . . . . . . . . . . . . . . . .
4.3 Metodi iterativi . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.1 Metodi di Jacobi, Gauss-Seidel, rilassamento . . . . .
4.3.2 Metodi iterativi a blocchi . . . . . . . . . . . . . . . .
4.3.3 Studio della convergenza . . . . . . . . . . . . . . . . .
4.3.4 Metodo del gradiente coniugato . . . . . . . . . . . . .
4.3.5 Precondizionamento . . . . . . . . . . . . . . . . . . .
4.4 Complementi e Problemi . . . . . . . . . . . . . . . . . . . . .
4.5 Esperienze in Matlab . . . . . . . . . . . . . . . . . . . . . . .
4.5.1 Decomposizione LU di matrici tridiagonali . . . . . . .
4.5.2 Eliminazione di Gauss con pivoting completo . . . . .
4.5.3 Eliminazione senza pivoting . . . . . . . . . . . . . . .
4.5.4 Eetto del condizionamento sullalgoritmo di soluzione
4.5.5 Minimi quadrati . . . . . . . . . . . . . . . . . . . . .
4.5.6 Metodo qr . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
di un sistema
. . . . . . . .
. . . . . . . .

. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
lineare
. . . .
. . . .

147
152
155
156
161
165
166
167
168
169
171
176
179
181
183
193
194
201
201
207
208
213
217
222
236
236
238
239
239
240
241

5 Autovalori e autovettori
5.1 Condizionamento del problema degli autovalori
5.2 Metodo delle potenze . . . . . . . . . . . . . . .
5.2.1 Iterazione inversa . . . . . . . . . . . . .
5.2.2 Deazione . . . . . . . . . . . . . . . . .
5.2.3 Metodo di Lanczos . . . . . . . . . . . .
5.3 Metodi di trasformazione per similitudine . . .
5.3.1 Metodo di Jacobi . . . . . . . . . . . . .
5.3.2 Metodo di Householder . . . . . . . . .
5.3.3 Metodo di Givens . . . . . . . . . . . .
5.3.4 Matrici non simmetriche . . . . . . . . .
5.3.5 Matrici tridiagonali simmetriche . . . .
5.3.6 Metodo QR . . . . . . . . . . . . . . . .

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

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

245
246
247
250
250
250
253
254
258
259
260
261
263

analisi numerica

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

c
V.
Comincioli

Indice

5.4
5.5
5.6
5.7

Problema degli autovalori generalizzato . . . . . . . . . .


Decomposizione SVD . . . . . . . . . . . . . . . . . . . . .
Complementi e Problemi . . . . . . . . . . . . . . . . . . .
Esperienze in Matlab . . . . . . . . . . . . . . . . . . . . .
5.7.1 Esempio di matrice con autovalori malcondizionati
5.7.2 Esempio di Wilkinson . . . . . . . . . . . . . . . .
5.7.3 Metodo QR . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

265
267
269
275
275
276
277

6 Approssimazione di funzioni
6.1 Interpolazione . . . . . . . . . . . . . . . . . . . . . . . . . .
6.1.1 Interpolazione mediante polinomi . . . . . . . . . . .
6.1.2 Errore di troncamento nella interpolazione . . . . . .
6.1.3 Costruzione del polinomio di interpolazione . . . . .
6.1.4 Convergenza del polinomio di interpolazione . . . . .
6.1.5 Problema generale di interpolazione lineare . . . . .
6.1.6 Interpolazione mediante funzioni razionali . . . . . .
6.1.7 Interpolazione inversa . . . . . . . . . . . . . . . . .
6.1.8 Interpolazione mediante spline . . . . . . . . . . . .
6.1.9 Approssimazione di Bezier . . . . . . . . . . . . . . .
6.2 Problema generale di approssimazione . . . . . . . . . . . .
6.2.1 Norma euclidea. Minimi quadrati . . . . . . . . . . .
6.2.2 Polinomi ortogonali . . . . . . . . . . . . . . . . . .
6.2.3 Norma del massimo. Approssimazione di Chebichev
6.3 Calcolo numerico delle derivate . . . . . . . . . . . . . . . .
6.3.1 Studio dellerrore di troncamento . . . . . . . . . . .
6.3.2 Inuenza degli errori di arrotondamento . . . . . . .
6.4 Introduzione alle funzioni Wavelet . . . . . . . . . . . . . .
6.4.1 Dallanalisi di Fourier allanalisi wavelet . . . . . . .
6.4.2 Le wavelets di Haar . . . . . . . . . . . . . . . . . .
6.4.3 Trasformata di Fourier . . . . . . . . . . . . . . . . .
6.4.4 Trasformata wavelet e analisi tempo-frequenza . . .
6.4.5 Formule di inversione . . . . . . . . . . . . . . . . .
6.4.6 Costruzione di wavelets . . . . . . . . . . . . . . . .
6.4.7 Fast wavelet transform (FWT) . . . . . . . . . . . .
6.4.8 Denoising di immagini con wavelet . . . . . . . . . .
6.4.9 Compressione di immagini . . . . . . . . . . . . . . .
6.5 Complementi e Problemi . . . . . . . . . . . . . . . . . . . .
6.6 Esperienze in matlab . . . . . . . . . . . . . . . . . . . . . .
6.6.1 Polinomi . . . . . . . . . . . . . . . . . . . . . . . . .
6.6.2 Polinomio di interpolazione . . . . . . . . . . . . . .

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

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

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

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

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

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

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

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

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

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

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

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

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

278
279
280
282
284
291
293
295
297
298
307
313
316
320
325
328
330
330
332
338
346
351
356
360
363
374
377
381
383
399
399
402

7 Equazioni non lineari e ottimizzazione


404
7.1 Caso unidimensionale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
7.1.1 Metodo di bisezione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
7.1.2 Metodo regula falsi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
analisi numerica

c
V.
Comincioli

Indice

7.2

7.3
7.4

7.5

7.6

7.7
7.8

xi

7.1.3 Metodo di Newton . . . . . . . . . . . . . . . . . . . . . .


7.1.4 Metodo di Newton in pi`
u dimensioni . . . . . . . . . . . .
7.1.5 Studio della convergenza del metodo di Newton . . . . . .
7.1.6 Metodo di Newton e radici multiple . . . . . . . . . . . .
7.1.7 Alcune applicazioni del metodo di Newton . . . . . . . . .
7.1.8 Modiche del metodo di Newton . . . . . . . . . . . . . .
7.1.9 Radici di polinomi . . . . . . . . . . . . . . . . . . . . . .
7.1.10 Sensitivit`
a delle radici di un polinomio . . . . . . . . . . .
Metodi di punto sso . . . . . . . . . . . . . . . . . . . . . . . . .
7.2.1 Aspetti computazionali . . . . . . . . . . . . . . . . . . .
7.2.2 Accelerazione della convergenza . . . . . . . . . . . . . .
Sistemi dinamici discreti . . . . . . . . . . . . . . . . . . . . . . .
Programmazione lineare . . . . . . . . . . . . . . . . . . . . . . .
7.4.1 Trasformazione di problemi LP nella prima forma primale
7.4.2 Problema duale . . . . . . . . . . . . . . . . . . . . . . . .
7.4.3 Seconda forma primale . . . . . . . . . . . . . . . . . . . .
7.4.4 Alcuni esempi applicativi . . . . . . . . . . . . . . . . . .
7.4.5 Metodo del simplesso . . . . . . . . . . . . . . . . . . . .
7.4.6 Risoluzione di sistemi lineari inconsistenti . . . . . . . . .
Metodi di ottimizzazione . . . . . . . . . . . . . . . . . . . . . . .
7.5.1 Ottimizzazione unidimensionale . . . . . . . . . . . . . . .
7.5.2 Ottimizzazione in pi`
u dimensioni . . . . . . . . . . . . . .
7.5.3 Metodo SOR . . . . . . . . . . . . . . . . . . . . . . . . .
7.5.4 Minimi quadrati non lineari . . . . . . . . . . . . . . . . .
Introduzione ai problemi di controllo . . . . . . . . . . . . . . . .
7.6.1 Formulazione di un problema di controllo . . . . . . . . .
7.6.2 Forme diverse di un controllo ottimo . . . . . . . . . . . .
7.6.3 Metodo della programmazione dinamica . . . . . . . . . .
7.6.4 Principio del minimo di Pontryagin . . . . . . . . . . . . .
Complementi e Problemi . . . . . . . . . . . . . . . . . . . . . . .
Esperienze con Matlab . . . . . . . . . . . . . . . . . . . . . . . .
7.8.1 Funzioni matlab per trovare minimi e zeri di una funzione
7.8.2 Applicazioni varie . . . . . . . . . . . . . . . . . . . . . .

8 Integrazione numerica
8.1 Formule di NewtonCotes . . . . . . . . . . . . .
8.1.1 Convergenza delle formule di quadratura .
8.1.2 Formule composte . . . . . . . . . . . . .
8.2 Formule di Gauss . . . . . . . . . . . . . . . . . .
8.2.1 Formule di Lobatto . . . . . . . . . . . . .
8.2.2 Formule di quadratura di Gauss-Kronrod
8.3 Formule adattive . . . . . . . . . . . . . . . . . .
8.3.1 Formula di Simpson adattiva . . . . . . .
8.4 Formule di estrapolazione . . . . . . . . . . . . .
8.5 Dicolt`
a nellintegrazione numerica . . . . . . .
analisi numerica

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

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

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

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

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

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

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

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

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

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

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

412
417
419
422
422
423
427
431
436
443
444
448
450
455
456
457
458
460
462
464
465
471
483
485
488
495
498
499
511
536
570
570
573

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

578
585
588
588
591
593
594
595
596
597
600

c
V.
Comincioli

xii

Indice

8.6
8.7
8.8

Integrali multipli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602


Complementi e Problemi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606
Esperienze in Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621

9 Equazioni dierenziali
9.1 Aspetti introduttivi . . . . . . . . . . . . . . . . . . . .
9.1.1 Denizione di soluzione . . . . . . . . . . . . . .
9.1.2 Curve soluzioni e campi di direzioni . . . . . . .
9.1.3 Problemi ai valori iniziali . . . . . . . . . . . . .
9.2 Alcuni modelli . . . . . . . . . . . . . . . . . . . . . . .
9.3 Metodi numerici . . . . . . . . . . . . . . . . . . . . . .
9.3.1 Metodo di Eulero . . . . . . . . . . . . . . . . . .
9.3.2 Inuenza degli errori di arrotondamento . . . . .
9.3.3 Metodi di sviluppo in serie . . . . . . . . . . . .
9.3.4 Metodi di Runge-Kutta . . . . . . . . . . . . . .
9.3.5 Metodo di Eulero implicito e formula dei trapezi
9.3.6 Metodi di Runge-Kutta-Fehlberg . . . . . . . . .
9.3.7 Metodi a pi`
u passi . . . . . . . . . . . . . . . . .
9.3.8 Convergenza dei metodi lineari a pi`
u passi . . . .
9.3.9 Stabilit`
a per passo ssato . . . . . . . . . . . . .
9.3.10 Sistemi di equazioni del primo ordine . . . . . . .
9.3.11 Metodo di Cowell-Numerov . . . . . . . . . . . .
9.4 Equazioni sti . . . . . . . . . . . . . . . . . . . . . . . .
9.4.1 Metodi numerici . . . . . . . . . . . . . . . . . .
9.4.2 Sistemi altamente oscillatori . . . . . . . . . . . .
9.5 Problemi ai limiti . . . . . . . . . . . . . . . . . . . . . .
9.5.1 Alcuni modelli . . . . . . . . . . . . . . . . . . .
9.5.2 Metodo shooting . . . . . . . . . . . . . . . . . .
9.5.3 Metodo alle dierenze . . . . . . . . . . . . . . .
9.5.4 Metodo degli elementi niti . . . . . . . . . . . .
9.5.5 Problema degli autovalori . . . . . . . . . . . . .
9.6 Equazioni integrali . . . . . . . . . . . . . . . . . . . . .
9.7 Equazioni con ritardo . . . . . . . . . . . . . . . . . . .
9.7.1 Introduzione ai metodi numerici . . . . . . . . .
9.8 Equazioni alle derivate parziali . . . . . . . . . . . . . .
9.8.1 Propagazione delle onde . . . . . . . . . . . . . .
9.8.2 Approssimazione numerica . . . . . . . . . . . .
9.8.3 Equazioni non lineari . . . . . . . . . . . . . . . .
9.8.4 Equazione delle onde . . . . . . . . . . . . . . . .
9.8.5 Equazione della diusione . . . . . . . . . . . . .
9.8.6 Equazione di Laplace . . . . . . . . . . . . . . .
9.8.7 Metodi spettrali . . . . . . . . . . . . . . . . . .
9.9 Complementi e Problemi . . . . . . . . . . . . . . . . . .
9.10 Esperienze in Matlab . . . . . . . . . . . . . . . . . . . .
9.10.1 Periodo del pendolo non lineare . . . . . . . . . .
analisi numerica

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

626
626
628
629
629
633
643
644
650
651
652
657
662
666
669
673
674
675
677
684
685
686
687
690
693
698
707
709
716
719
722
723
725
729
732
738
744
770
773
833
833

c
V.
Comincioli

Indice

xiii

9.10.2 Problema ai limiti non lineare . . . . . . . . .


9.10.3 Equazioni di Volterra . . . . . . . . . . . . .
9.10.4 Equazioni con ritardo . . . . . . . . . . . . .
9.11 Alcune applicazioni con matlab . . . . . . . . . . . .
9.11.1 Accrescimento di una popolazione strutturata
9.11.2 Studio dellazione di un farmaco . . . . . . .
9.11.3 Cinetica di un antibiotico . . . . . . . . . . .
9.11.4 Routines fornite da Matlab . . . . . . . . . .
9.11.5 Un esempio di utilizzo . . . . . . . . . . . . .
9.11.6 Equazioni a derivate parziali . . . . . . . . .
9.11.7 Un esempio di applicazione . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

836
838
841
843
844
846
848
850
860
862
864

10 Analisi numerica parallela


10.1 Esempi introduttivi . . . . . . . . . . . . . . . . . . . . . . .
10.2 Sistemi di calcolo paralleli . . . . . . . . . . . . . . . . . . .
10.2.1 Operazioni aritmetiche pipelining . . . . . . . . . . .
10.2.2 Sistemi di calcolo parallelo e loro classicazione . . .
10.3 Modelli e misure di complessit`a . . . . . . . . . . . . . . . .
10.3.1 Elementi di teoria dei gra . . . . . . . . . . . . . .
10.3.2 Rappresentazione di un algoritmo parallelo mediante
10.3.3 Misure di complessit`a . . . . . . . . . . . . . . . . .
10.3.4 Esempi . . . . . . . . . . . . . . . . . . . . . . . . .
10.4 Parallelizzazione di metodi iterativi . . . . . . . . . . . . . .
10.4.1 Iterazioni di tipo Gauss-Seidel . . . . . . . . . . . .
10.5 Comunicazione nei sistemi paralleli . . . . . . . . . . . . . .
10.5.1 Alcuni tipi di topologie di networks . . . . . . . . . .
10.6 Sincronizzazione negli algoritmi paralleli . . . . . . . . . . .
10.6.1 Algoritmi sincroni . . . . . . . . . . . . . . . . . . .
10.6.2 Algoritmi asincroni . . . . . . . . . . . . . . . . . . .

. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
un grafo
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .

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

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

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

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

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

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

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

865
. 866
. 873
. 873
. 875
. 876
. 877
. 878
. 880
. 883
. 887
. 889
. 892
. 893
. 895
. 896
. 897

A Matlab toolbox
A.1 Bioinformatics toolbox . . .
A.2 Image Acquisition Toolbox
A.2.1 Overview . . . . . .
A.2.2 Key Features . . . .
A.3 Image Processing Toolbox .
A.3.1 Overview . . . . . .
A.3.2 Key Features . . . .
A.4 Communications Toolbox .
A.5 Control System Toolbox . .
A.6 Curve Fitting Toolbox . . .
A.7 Financial Toolbox . . . . .
A.8 Fuzzy Logic Toolbox . . . .
A.9 Optimization Toolbox . . .
A.10 PDE Toolbox . . . . . . . .

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

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

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

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

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

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

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

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

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

analisi numerica

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

899
899
901
901
901
901
901
901
902
902
902
903
903
904
904

c
V.
Comincioli

xiv

Indice

A.11 Statistics Toolbox . . . . . . . . . .


A.12 Wavelet Toolbox . . . . . . . . . . .
A.13 The Symbolic Math Toolboxes . . .
A.14 Genetic Algorithm and Direct Search
A.14.1 Key features . . . . . . . . .
A.15 Distributed Computing Toolbox 1 .
A.15.1 Key features . . . . . . . . .

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

904
904
905
905
905
905
905

B Introduzione agli spazi di Sobolev


B.1 Richiami sulle distribuzioni . . . . . . . . . . .
B.1.1 Derivazione nel senso delle distribuzioni
B.2 Spazio di Sobolev H 1 () . . . . . . . . . . . . .
B.2.1 Alcune propriet`
a dello spazio H 1 () . .
1
B.2.2 Funzioni di H () nulle su . . . . .
B.2.3 Un risultato di traccia . . . . . . . . .
B.2.4 Applicazioni del teorema di traccia . . .
B.2.5 Un risultato di compattezza . . . . . . .
B.3 Spazi di Sobolev H m () . . . . . . . . . . . . .
B.3.1 Risultati di regolarit`
a . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

907
907
909
910
911
912
913
914
914
915
915

C Equazioni dierenziali. Tecniche analitiche


C.1 Separazione delle variabili . . . . . . . . . . . . . .
C.2 Equazione lineare del primo ordine . . . . . . . . .
C.3 Equazione di Bernoulli . . . . . . . . . . . . . . . .
C.4 Equazione di Riccati . . . . . . . . . . . . . . . . .
C.5 Equazione omogenea . . . . . . . . . . . . . . . . .
C.6 Equazione esatta . . . . . . . . . . . . . . . . . . .
C.7 Equazione di Clairaut . . . . . . . . . . . . . . . .
C.8 Equazioni lineari del secondo ordine . . . . . . . .
C.8.1 Equazioni lineari non omogenee particolari
C.8.2 Sistemi dierenziali lineari del primo ordine
C.8.3 Equazioni lineari di ordine n . . . . . . . .
C.9 Trasformata di Laplace . . . . . . . . . . . . . . . .
C.9.1 Propriet`
a della trasformata di Laplace . . .
C.9.2 Applicazioni della trasformata di Laplace .
C.10 Serie di Fourier . . . . . . . . . . . . . . . . . . . .
C.10.1 Equazione della diusione . . . . . . . . . .
C.10.2 Equazione delle onde . . . . . . . . . . . . .

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

916
916
917
919
920
921
923
924
926
928
929
932
934
938
941
946
950
952

Bibliograa

analisi numerica

. . . . .
. . . . .
. . . . .
Toolbox
. . . . .
. . . . .
. . . . .

955

c
V.
Comincioli

The mainspring of numerical analysis


is the entire aquifer of mathematics, pure and applied.

A. Iserles

CAPITOLO

1
Idee introduttive

In questo capitolo, a carattere introduttivo, si cerca inizialmente di chiarire, attraverso esempi,


il signicato dellespressione fare dellanalisi numerica.
Successivamente, si evidenziano, in maniera schematica, i principi che fanno da supporto e da
lo conduttore ai vari problemi e metodi dellanalisi numerica. In questo obiettivo si inseriscono
pure i brevi richiami di analisi funzionale che, oltre fornire un linguaggio unicatore, `e strumento
ecace di sviluppo di nuove teorie.
Segue, inne, un tentativo di classicazione dei problemi numerici con lo scopo di individuare
e caratterizzare i diversi livelli di dicolt`
a presenti nella loro risoluzione.

1.1

Analisi numerica

Naturalmente, la questione di che cosa sia lanalisi numerica 1 potrebbe essere trattata in maniera
pi`
u adeguata alla ne del volume e, soprattutto, dopo aver fatto dellanalisi numerica.
Pu`
o essere, comunque, di qualche utilit`
a, almeno come introduzione, fare alcune considerazioni.

1.1.1

Scopo dellanalisi numerica

Un modo per comprendere il carattere di una disciplina `e di esaminarne gli obiettivi, che possono
essere enunciati in forme diverse, ma equivalenti nella sostanza. Ad esempio, si pu`o dire che
obiettivo principale dellanalisi numerica `e
trovare gli algoritmi che risolvono un problema matematico
nel minimo tempo
con la massima accuratezza.
In altra forma si ha la seguente caratterizzazione
arte di dare una risposta numerica ad un problema matematico
analisi
=
mediante un calcolatore automatico digitale.
numerica
Analizziamo, in particolare, gli elementi di questultima denizione.
1

o calcolo numerico; calcolo dal latino calculus: pietruzza (da calce, pietra calcare).

Idee introduttive

Risposta numerica
Esempio 1.1 Consideriamo il seguente problema: data lequazione algebrica
P (x) = x2 + 2bx + c = 0
con b, c reali e b2 > c, dimostrare che essa ammette due radici reali.
Per la sua risoluzione possiamo seguire i seguenti due dierenti metodi.
1. metodo non costruttivo, per riduzione allassurdo. Supponiamo che non esistano soluzioni reali;
allora, essendo P (x) una funzione continua, si ha: P (x) > 0 o P (x) < 0 x ; ma
P (b) = b2 2b2 + c < 0,

P (|x|) > 0 per x grande.

2. metodo costruttivo. Come `e ben noto, si ha


x2 + 2bx + c = (x + b)2 b2 + c = 0
da cui
x = b


b2 c,

oppure x =

b2 c

Nel secondo metodo, a dierenza del primo, si fornisce anche una procedura per il calcolo eettivo (numerico) delle soluzioni, cio`e un algoritmo. Come abbiamo messo in evidenza, la formula risolutiva pu`
o essere
scritta in due modi diversi, che risultano equivalenti dal punto di vista teorico, ma non dal punto di vista
numerico 2 .
Naturalmente, lalgoritmo precedente non `e lunico disponibile; in realt`
a esso `e specico del particolare
problema considerato. Pi`
u in generale, come vedremo nel seguito, per calcolare le radici di un polinomio
o di una funzione non lineare esistono numerosi altri metodi di tipo iterativo: ad esempio, il metodo delle
tangenti, delle secanti, ecc.

Necessit`
a di una risposta numerica
Lesempio precedente `e particolare in quanto la risposta numerica pu`
o essere data in forma esplicita. Questa non `e chiaramente la situazione generale. Vediamo, a questo proposito, due esempi.
Il primo illustra la impossibilit`
a di avere sempre risposte analitiche; il secondo esamina in che
senso una soluzione analitica pu`
o non essere numerica.
Esempio 1.2 Dinamica di una popolazione cellulare.
Esaminiamo il modello matematico dellaccrescimento di una popolazione, ad esempio di cellule, nellipotesi che il tasso di accrescimento sia una costante (modello di Malthus). Indicando con y(t) una
misura della quantit`
a di cellule allistante t si ha il seguente sistema dinamico
 
y (t) = y(t)
y(0) = y0 ,
y0 > 0
la cui soluzione analitica `e data, come `e noto, da: y(t) = y0 et .
Consideriamo, ora, il problema di calcolare nota la quantit`
a di popolazione in due istanti dierenti,
ad esempio in t = 0 e t = t, con t > 0. Il problema equivale, naturalmente, a risolvere la seguente equazione
in

y0 et = y(t)
2

Ad esempio, in corrispondenza a b = 90.995, c = 1.82, su un calcolatore in semplice precisione (4 bytes,


cfr. il successivo Capitolo 2) si ottiene, con la prima formula x1 = 182 , x2 = 0.01000214, mentre con la seconda:
x1 = 181.9611 , x2 = 0.01. La soluzione vera `e data da: x1 = 182, x2 = 0.01.
analisi numerica

c
V.
Comincioli

1.1 Analisi numerica

la cui soluzione pu`


o essere espressa nella seguente forma analitica

y(t)
1
= log
y0
t
Supponendo di poter calcolare la funzione logaritmo, la forma precedente `e di tipo esplicito, in quanto non
richiede ulteriori algoritmi.
Supponiamo, ora, che laccrescimento avvenga in presenza di emigrazione o immigrazione con velocit`
a
d. Lequazione della dinamica del modello si trasforma, allora, nella seguente
y  (t) = y(t) + d
per la quale `e ancora possibile calcolare la soluzione analitica y(t). Tuttavia, il problema del calcolo di
supposti noti: d, y(0), t, y(t) si trasforma ora nellequazione non lineare seguente
d

et y(t) = (et 1) + y0

e diversamente dal caso precedente non `e pi`


u possibile una esplicitazione in termini di funzioni elementari.
Naturalmente il problema si complica ulteriormente se anziche il modello di Malthus (valido solo in
prima approssimazione) si adottano modelli strutturalmente pi`
u signicativi, che tengano conto ad esempio
dei fenomeni di sovraollamento, con conseguenti termini non lineari nellequazione della dinamica o con
possibilit`
a di eetti non istantanei (equazioni con ritardo).

Esempio 1.3 Problema dierenziale ai limiti.


Lequazione di Bessel

d2 y
dy
+ (x2 2 )y = 0
+x
(1.1)
dx2
dx
trova diverse applicazioni in problemi di matematica applicata, in particolare in problemi ai limiti relativi
a cilindri circolari retti, o la propagazione di onde elettromagnetiche in conduttori circolari.
` noto che se non `e un intero, due soluzioni indipendenti dellequazione (1.1) sono J (x) e J (x)
E
dove


x
(1)k
( )+2k
J (x) =
k! ( + k + 1) 2
x2

k=0

Si tratta di una soluzione dal punto di vista analitico di tipo esplicita, ma certamente non ancora in forma
conveniente per il calcolo numerico. Per renderla tale sono necessarie, in particolare, delle indicazioni
sulla rapidit`a di convergenza della serie e delle maggiorazioni dellerrore che si commette approssimando
la somma della serie con una particolare somma parziale.

Arte
Per risolvere un determinato problema matematico vi possono essere diversi algoritmi. Inoltre
lo stesso algoritmo applicato a problemi diversi pu`
o comportarsi in maniera diversa. Nei capitoli successivi si esamineranno numerosi esempi di situazioni di questo tipo. Come introduzione
suggeriamo, ad esempio, la lettura di Moler, Van Loan [300].
La scelta di un particolare algoritmo per la risoluzione di un determinato problema `e il risultato, come vedremo, di unanalisi del problema e di unanalisi comparativa dei vari algoritmi, sulla
base del loro costo e della loro accuratezza.
Una componente importante per una scelta ottimale `e lintuizione anata dallesperienza.
In questo senso, trovare lalgoritmo che risolva nel minimo tempo e con la massima precisione
un problema matematico pu`
o essere, a ragione, considerato unespressione artistica.
analisi numerica

c
V.
Comincioli

Idee introduttive

Uso del calcolatore


La disponibilit`
a di calcolatori programmabili, potenti e adabili `e tra i maggiori responsabili dello
sviluppo del calcolo numerico; essa `e una componente imprescindibile nel progetto di un algoritmo.
Legata ad aspetti tecnici in continuo sviluppo (velocit`
a, capacit`a di memoria, possibilit`a di uso
interattivo, di lavoro in parallelo . . . ), pu`
o suggerire nuovi orientamenti, rendere obsoleti alcuni
metodi, rivalutarne altri.

Figura 1.1 Collocazione dellanalisi numerica nel processo di matematizzazione di un problema reale.

1.1.2

Brevi note storiche

La storia dellanalisi numerica `e in realt`a quella della matematica, in quanto la matematica nasce
per dare una risposta numerica a problemi reali.3
3

Alcuni dati: circa 1650 A.C., in un papiro egiziano (papiro Rhind di Ahmes) un metodo per trovare le radici
di una semplice equazione (regula falsi ) (cfr. [76], p. 88); metodo di esaustione introdotto da Archimede (287
212 A.C.) per il calcolo de lunghezze, aree e volumi di gure geometriche (cfr. [128], Ch. 2): quando utilizzato
per trovare approssimazioni `e decisamente nello spirito della moderna integrazione numerica ed `e un precursore
importante del calcolo di I. Newton e G. Leibniz.
Un impulso importante allo sviluppo dei procedimenti numerici `e stata lintroduzione del calcolo da parte di
Newton e Leibniz, dal momento che esso ha portato alla costruzione di modelli matematici per lo studio della realt`
a
sica, in particolare delle scienze siche, ma anche dellingegneria, della medicina e delleconomia. Tali modelli non
possono usualmente essere risolti in maniera esplicita, e quindi sono necessari metodi numerici per ottenere delle
soluzioni approssimate.
Newton in particolare ha introdotto per risolvere una variet`
a di problemi diversi metodi, alcuni dei quali portano
attualmente il suo nome. Seguendo Newton, molti dei giganti della matematica del 18-mo e 19-mo secolo hanno
dato importanti contributi alla soluzione numerica dei problemi matematici: L. Eulero (17071783), J.L. Lagrange
(17361813) e K.F. Gauss (1777-1855).
analisi numerica

c
V.
Comincioli

1.2 Principi di fondo

Durante i secoli questo aspetto `e stato talvolta sovrastato da una concezione pi`
u losoca della
matematica, ma ogniqualvolta si `e avuto un avvicinarsi della matematica alle scienze applicate,
si `e avuto insieme un risveglio di interesse alla costruzione e allo studio di algoritmi.
In eetti, il grande interesse attuale allanalisi numerica `e dovuto da una parte, come gi`a
detto, alla disponibilit`
a di idonei strumenti di calcolo, ma anche allidea sempre pi`
u convinta, che
la Matematica `e un utile strumento per lo studio del mondo reale.
In questo senso lanalisi numerica `e un aspetto della matematica applicata.
In Figura 1.1 `e delineato in sintesi il cammino della ricerca, a partire dai dati sperimentali ,
verso la costruzione di teorie e lo sviluppo di modelli . Lanalisi numerica si presenta in tale
contesto come lanello decisivo (il linguaggio) per la possibilit`a di una validazione quantitativa di
un modello e quindi di una verica delle teorie.
Per notizie riguardanti la storia di alcuni classici metodi numerici si veda, ad esempio, Cassina
[74], Goldstine [168], [169], Metropolis et al. [284], Edwards [128], Nash [310], Chabert [76].
In bibliograa sono riportate numerose opere introduttive allanalisi numerica. Per brevit`
a,
ci limitiamo qui a segnalarne alcune, divenute ormai classiche; in particolare, Dahlquist, Bj
orck
[105], Forsythe et al. [144], Hamming [189], Henrici [196], Householder [209], Isaacson, Keller
[216], Milne [293], Ostrowski [325], Ralston, Rabinowitz [351], Richtmyer, Morton [358], Stoer,
Bulirsch [388], Varga [414], Wilkinson [429], [431], Wilkinson, Reinsch [430], Wendro [422],
Young, Gregory [441].

1.2

Principi di fondo

In maniera schematica si possono distinguere nellanalisi numerica i seguenti due aspetti


Metodologia, che tratta, in particolare, la costruzione di algoritmi specici, la loro ecienza,
limplementazione per un particolare calcolatore.
Analisi, che studia i principi di fondo, le stime degli errori, la convergenza dei metodi.

Il primo `e un aspetto pi`


u pratico, mentre il secondo `e pi`
u teorico, di base. Nella risoluzione
numerica di un problema i due aspetti, in generale ambedue presenti, si integrano a vicenda.
In questo paragrafo daremo una breve panoramica dei principi di fondo dellanalisi numerica.
Si tratta, in realt`
a, di una anticipazione, in quanto essi verranno ripresi e approfonditi nel seguito,
ma tale anticipazione pu`o essere utile come lo conduttore di una materia che altrimenti potrebbe
sembrare frammentaria.

1.2.1

Iterazione

In modo generale, lidea delliterazione indica la ripetizione di un processo semplice per migliorare la stima della soluzione di un problema pi`
u complicato.
Diamo una illustrazione dellidea mediante due particolari applicazioni.
Zero di una funzione
Il calcolo dello zero di una funzione f (x), R R, pu`
o essere ricondotto, in vari modi, alla ricerca
del punto sso di una trasformazione g(x); si ponga, ad esempio: g(x) = x + kf (x), k reale = 0.
Scelte meno semplici ma pi`
u utili di g(x) saranno introdotte nel seguito.
analisi numerica

c
V.
Comincioli

Idee introduttive

Il problema si trasforma, allora, nel calcolo del numero reale tale che
= g()

(1.2)

Unidea per il calcolo del punto sso consiste nel cercare di migliorare una stima iniziale x0 ,
mediante un procedimento iterativo del tipo seguente ed illustrato in Figura 1.2
x+1 = g(x ),

= 0, 1, 2,

(1.3)

Naturalmente, anche il procedimento sia utile occorre che siano vericate alcune condizioni.
In particolare, la successione x deve rimanere nel dominio di denizione della funzione g(x) e
convergere al punto sso . Per essere, poi, conveniente, la convergenza non deve essere troppo
lenta. In Figura 1.2 sono rappresentati i quattro possibili comportamenti. In maniera intuitiva
si vede che, se la funzione g(x) `e derivabile, si ha convergenza quando `e vericata la condizione
u in generale, come vedremo nel seguito, quando la funzione g(x) `e una contrazione).
|g (x)| < 1 (pi`
u
La velocit`
a di convergenza dipende da quanto `e piccola la funzione |g (x)| nel punto sso (pi`
in generale, la costante di contrazione).

Figura 1.2 Metodo iterativo per il calcolo del punto sso.


Lanalisi del metodo, per ora soltanto intuitiva, `e servita a mettere in luce alcuni criteri utili
per la scelta della funzione g(x). Vale la pena sottolineare che, se il problema di partenza `e la
ricerca di uno zero della funzione f (x), la funzione g(x) deve essere scelta. Un altro aspetto di
cui tenere conto, in tale scelta, `e il costo (in termini di operazioni elementari) del calcolo di g(x).
Il costo complessivo risulta, infatti, dal costo di ogni iterazione per il numero delle iterazioni e
quindi `e il risultato sia della velocit`a di convergenza che del costo per ogni valutazione di g(x).
Osservazione 1.1 Il metodo (1.3) pu`o essere generalizzato in diverse direzioni. Da un lato si pu`o
considerare il punto unito come intersezione di due curve (x), g(x), con (x) non necessariamente data
dalla retta y = x, e considerare, quindi, il procedimento iterativo
(x+1 ) = g(x ),

= 0, 1, 2, . . .

Naturalmente la funzione dovr`


a, per quanto riguarda il problema del calcolo degli zeri, essere pi`
u
semplice della funzione f (x).
analisi numerica

c
V.
Comincioli

1.2 Principi di fondo

Unaltra generalizzazione consiste nel tenere memoria di pi`


u termini della successione {x }, considerando procedimenti a pi`
u passi deniti nel modo seguente
x+1 = G(x , x1 , x2 , , xr+1 )
Per tali metodi si pone il problema di dare r stime iniziali; ma in generale, a parit`
a di velocit`
a di convergenza
essi risultano pi`
u economici, in termini di numero di operazioni, dei metodi a un passo. Essi realizzano,
infatti, un migliore sfruttamento della memoria.

Vediamo, ora, una classica applicazione del procedimento iterativo (1.3).


Esempio 1.4 Calcolo della radice quadrata.

o essere scritta nella forma x = g(x) ad esempio nei due modi seguenti
Lequazione x2 = c, con c > 0, pu`
1
c
x=
x+
(1.4)
2
x
c
x=
(1.5)
x

Nel caso dellequazione (1.4) si ha: g  () = 0, mentre per lequazione (1.5) si ha: g  () = 1, ove = c.
Nel primo caso si ha convergenza, mentre nel secondo la successione oscilla alternativamente fra x0 e
c/x0 .
` interessante vedere la rapidit`
E
a di convergenza nel primo caso. Assumendo ad es. c = 2 e x0 = 1.5
mediante il seguente programma in doppia precisione (8 bytes)

c=2.; xt=sqrt(c);
x=1.5;
while (abs(x-xt)>=1.e-14)
x=(x+c/x)/2;
[x,xt]
end

si ottengono i risultati riportati in Tabella 1.1.

1
2
3
4

x
1.416666666666667
1.414215686274510
1.414213562374690
1.414213562373095

2
1.414213562373095
1.414213562373095
1.414213562373095
1.414213562373095

Tabella 1.1 Risultati delliterazione di Newton.


Da essa si ricava linformazione che la convergenza `e di tipo quadratico, cio`e se x ha t cifre esatte,
o facilmente vericare che il metodo iterativo basato
allora x+1 ha almeno 2t 1 cifre esatte. Si pu`
sulla trasformazione (1.4) non `e altro che il metodo delle tangenti, o metodo di Newton (vedi Figura 1.3)
applicato allequazione: f (x) = x2 c = 0. Come vedremo nel seguito, la convergenza quadratica `e una
caratteristica del metodo di Newton quando le radici sono distinte.

Problema dierenziale a valori iniziali


Un problema dierenziale a valori iniziali del tipo
 
y (x) =f (x, y)
y(x0 )=y0
analisi numerica

(1.6)
c
V.
Comincioli

Idee introduttive

Figura 1.3 Illustrazione del metodo di NewtonRaphson.


pu`
o essere trasformato nella seguente equazione integrale equivalente
 x
f (t, y(t))dt
y(x) = y0 +
x0

per la quale `e possibile applicare un procedimento iterativo del tipo visto in precedenza. In eetti,
posto, ad esempio: y0 (x) = y0 si costruisce la successione di funzioni {y (x)} calcolando
 x
y+1 (x) = y0 +
f (t, y (t))dt
(1.7)
x0

Sotto opportune ipotesi di regolarit`


a sulla funzione f (x, y) (lipschitziana in y) , si ha che la
successione converge alla soluzione del problema a valori iniziali e, quindi, il procedimento pu`o
essere di tipo costruttivo. Osserviamo, comunque, che per essere veramente tale `e ancora necessario
un metodo numerico per il calcolo dei successivi integrali.

1.2.2

Approssimazione locale

Lidea dellapprossimazione locale consiste nel sostituire ad una funzione complicata, cio`e non
calcolabile direttamente, una funzione pi`
u semplice. Il signicato preciso del termine semplice
dipende dal contesto, cio`e dalluso che di tale funzione viene fatto. Le procedure pi`
u comuni per
ottenere questo tipo di approssimazione sono basate su uno sviluppo in serie troncato oppure su
una operazione di interpolazione.
Sviluppo in serie
Consideriamo, ad esempio, il problema del calcolo della soluzione del seguente sistema non lineare
F (x) = 0

(1.8)

ove F : Rn Rn .
A partire da una stima della soluzione, che indichiamo con x0 , cerchiamo un vettore Rn
tale che
F (x0 + ) = 0
analisi numerica

(1.9)
c
V.
Comincioli

1.2 Principi di fondo

A tale scopo, supponendo la funzione F (x) sucientemente regolare, sviluppiamo la funzione F in


serie intorno al punto x0 . Arrestandoci al termine di primo grado, si ottiene il seguente problema
approssimato
F (x0 ) + F  (x0 ) = 0
che, essendo di tipo lineare, `e in generale pi`
u facilmente risolubile del problema originario.
Naturalmente, avendo trascurato nello sviluppo in serie i termini di grado superiore al primo, il
vettore `e, in generale, solo una approssimazione della soluzione del sistema (1.9). Per migliorare

la precisione si pu`o utilizzare la precedente idea delliterazione, sostituendo a x0 il valore x0 + .


Interpolazione
Lidea dellinterpolazione consiste nel sostituire ad una funzione f (x) denita su un intervallo (a, b)
un polinomio P (x), che assume gli stessi valori della funzione f (x) in punti pressati dellintervallo
di denizione, detti punti di collocazione.
Unidea pi`
u generale consiste, data una suddivisione dellintervallo, nel sostituire alla funzione
f (x) una funzione polinomiale a tratti, cio`e una funzione denita su ogni tratto della suddivisione
come un polinomio di un grado pressato.
Come vedremo pi`
u dettagliatamente nel seguito, in particolari situazioni, come ad esempio in
problemi relativi allo smoothing di dati sperimentali o allapprossimazione di soluzioni di equazioni dierenziali, linterpolazione mediante polinomi a tratti presenta dei vantaggi di migliore
adattabilit`
a rispetto alla interpolazione con lo stesso polinomio su tutto lintervallo.
La procedura di interpolazione `e di base per costruire numerosi algoritmi. Vediamo alcuni
esempi.
Esempio 1.5 Approssimazione di un integrale. Per approssimare lintegrale:

I=

f (x)dx
a

di una funzione f (x), di cui non `e nota una primitiva, si pu`


o sostituire alla f (x) una funzione, pi`
u semplice
rispetto alloperazione di integrazione. Utilizzando lidea dellinterpolazione, si sostituisce alla funzione f (x)
il polinomio interpolatore relativo a un insieme di punti (i nodi) dellintervallo (a, b) oppure un polinomio
a tratti relativo alla suddivisione introdotta dai nodi.

Figura 1.4 Formula dei trapezi.


analisi numerica

c
V.
Comincioli

10

Idee introduttive

Introducendo, ad esempio, una suddivisione dellintervallo (a, b) in parti uguali, con passo h = (b
a)/n, n , intero 1, e utilizzando i polinomi a tratti di primo grado, si ottiene come approssimazione la
nota formula dei trapezi, illustrata in Figura 1.4 e denita nel modo seguente
n1
1
I
T (h) := h
(fi + fi+1 )
2 i=0

(1.10)

Supponendo la funzione f (x) sucientemente regolare, ad esempio f C 2 , vedremo successivamente che


T (h) I = O(h2 )

(1.11)

Cio`e, lerrore `e un innitesimo del secondo ordine per h 0.

Per avere maggiore accuratezza con meno lavoro di quello richiesto dalla formula dei trapezi,
si possono seguire le seguenti due idee
1. approssimare localmente la funzione f (x) mediante polinomi di grado pi`
u elevato o scegliere
opportunamente i nodi.
2. calcolare la formula dei trapezi per dierenti valori di h e allora estrapolare per h = 0.

Esaminiamo, in particolare, la seconda idea.


Supponiamo di aver calcolato la formula (1.10) per 2h e h. Allora, ricordando la (1.11),
abbiamo i seguenti risultati
T (2h) I
k(2h)2
T (h) I
k(h)2
ove k `e indipendente da h. Considerando le equazioni precedenti come un sistema nelle due
incognite I, k, si ha in particolare
1
I
T (h) + (T (h) T (2h))
3
In questo modo, trattando il simbolo di
come se fosse un simbolo di uguaglianza, si `e ottenuto
per lintegrale un valore pi`
u accurato. Eettivamente, come vedremo successivamente, ci`o `e
vero per h sucientemente piccolo, cio`e asintoticamente.
Il procedimento ora seguito, di cui lasciamo come esercizio linterpretazione graca, `e noto come
metodo di estrapolazione.
Il suo interesse numerico sta nel fatto che per ottenere il nuovo valore non si `e pi`
u calcolata la
formula (1.10), che, contenendo il calcolo della funzione f (x), rappresenta, in generale, la parte
pi`
u costosa del procedimento.
Naturalmente lidea non si limita a questo particolare caso, ma trova applicazione, come
vedremo, in numerose altre situazioni.
Esempio 1.6 Problemi dierenziali ai limiti. Consideriamo il seguente problema ai limiti
y  (x) + (x)y = f (x),
y(a) = y(b) = 0
analisi numerica

(x) 0 x (a, b)

(1.12)
(1.13)
c
V.
Comincioli

1.3 Brevi richiami di analisi funzionale

11

Vedremo successivamente che una formulazione del problema equivalente alla precedente `e la seguente
 

 
 b
b
b
1
2
2
z dx +
(x)z dx
zf (x) dx
(1.14)
min
z
2
a
a
a
ove il minimo `e preso su tutte le funzioni z(x) che sono di quadrato sommabile su (a, b) insieme alle derivata
prima e nulle in a e b.
Unidea per approssimare la soluzione di (1.12), (1.13) consiste nellintrodurre una reticolazione dellintervallo (a, b) e nellapprossimare localmente la derivata seconda mediante dei rapporti incrementali.
Per il problema nella forma (1.14), si pu`
o, invece, approssimare lo spazio di funzioni in cui si cerca il
minimo mediante uno spazio di funzioni a dimensione nita (ad esempio lo spazio delle funzioni polinomiali
a tratti).
Naturalmente, si pone anche qui il problema dellaccuratezza della soluzione approssimata, che nel caso
della formulazione in termini di derivate, `e legata alla precisione con cui si approssima la derivata (errore di
discretizzazione locale) e nel caso della formulazione (1.14) alla distanza tra lo spazio delle funzioni continue
e quello delle funzioni discrete (errore di interpolazione).

1.3

Brevi richiami di analisi funzionale

Lanalisi funzionale fornisce insieme uno strumento eciente per lo sviluppo di nuove teorie e la
possibilit`
a di estrarre le idee essenziali con un linguaggio preciso ed elegante.
Per questo motivo, in questo paragrafo verr`
a fatta una rapida rassegna dei principali concetti,
rinviando per una pi`
u adeguato approfondimento ad esempio a Brezis [60], Milne [294], Yosida
[439], Zeidler [442].

1.3.1

Spazi lineari

Denizione 1.1 Sia X = {x, y, z, . . .} un insieme e K = {, , , . . .} un campo di scalari. Sia denita unoperazione di somma tra due qualunque elementi di X ed unoperazione di
moltiplicazione scalare tra ciascun elemento di K e ciascun elemento di X in modo tale che
(i) x X, y X x + y X
(ii) x X, K x X
(iii) x + y = y + x
(iv) (x + y) + z = x + (y + z)
(v) Esiste un elemento 0 X tale che x + 0 = x per ogni x X
(vi) Per x X esiste un unico elemento, chiamato lopposto di x e denotato con x, tale che
x + (x) = 0
(vii) (x) = ()x
(viii) (x + y) = x + y
(ix) ( + )x = x + x
(x) 1x = x

Allora X `e detto spazio lineare sul campo K.


Nel caso in cui K `e il campo dei numeri reali X `e detto uno spazio lineare reale. Nel seguito,
salvo avviso contrario, considereremo, in particolare, spazi lineari reali.
analisi numerica

c
V.
Comincioli

12

Idee introduttive

Esempio 1.7 Vi sono numerosi esempi di spazi lineari di interesse nella matematica applicata e nellanalisi numerica
(a) Lo spazio Rn dei vettori ad n componenti, con lusuale denizione di addizione e moltiplicazione
per uno scalare.
(b) Lo spazio delle funzioni m-volte continuamente dierenziabili su un intervallo della retta reale
[a, b], denotato con C (m) ([a, b]). Laddizione e la moltiplicazione per uno scalare `e intesa nel
senso usuale, cio`e per punti.
(c) Lo spazio Lp () delle funzioni a potenza p-ma sommabile su un insieme misurabile Rn , n
1.
(d) Lo spazio lp delle successioni di numeri reali {xi } tali che:

|xi |p <

i=1

(e) Lo spazio dei polinomi Pn di grado n.

Denizione 1.2 Siano x1 , x2 , . . . xn elementi ssati di un spazio lineare X sul campo K. La


somma
1 x1 + 2 x2 + + n xn
con i K `e chiamata una combinazione lineare degli elementi xi . Gli elementi xi sono detti
linearmente indipendenti se i K si ha la seguente implicazione
1 x1 + 2 x2 + + n xn = 0 1 = 2 = = n = 0
altrimenti si dicono linearmente dipendenti.
Denizione 1.3 Se esistono n elementi x1 , x2 , . . . , xn di uno spazio lineare X linearmente indipendenti, e ogni insieme di n + 1 elementi di X `e linearmente dipendente, allora n `e la dimensione
di X, denotata con dim(X). Se per ogni n > 0 esistono n elementi linearmente indipendenti in
X, allora X `e detto di dimensione innita.
Denizione 1.4 Un insieme di n elementi x1 , x2 , . . . , xn linearmente indipendenti di uno spazio
X `e chiamata una base per X se ogni x X pu`
o essere espresso come una combinazione lineare
degli elementi xi , i = 1, 2, . . . , n.
Esempio 1.8 {1, x, x2 , . . . , xn } `e una base per lo spazio Pn dei polinomi di grado n.
Esempio 1.9 Lo spazio delle funzioni continue C 0 ([a, b]) ha dimensione innita.
Esempio 1.10 Rn ha come base linsieme di vettori {e1 , e2 , . . . , en }, ove:
ei = ( 0, 0, ,
0,
1,
0,
, 0
1, 2, , i 1, i, i + 1, , n

Si dimostra facilmente il seguente risultato:


Teorema 1.1 Uno spazio lineare X `e di dimensione nita n se e solo se ha una base di n
elementi.
Inoltre, ogni insieme di elementi x1 , x2 , . . . , xn di X genera uno spazio di dimensione nita,
chiamato lo spazio generato da tali elementi e indicato con span(x1 , x2 , . . . , xn ).
analisi numerica

c
V.
Comincioli

1.3 Brevi richiami di analisi funzionale

1.3.2

13

Norme

Analizzando i metodi di approssimazione `e necessario spesso confrontare o misurare la dierenza


fra le varie risposte. Si tratta, pertanto, di introdurre una distanza tra due punti di uno spazio
lineare.
Denizione 1.5 Uno spazio lineare X `e detto normato se esiste una applicazione: X R+ ,
chiamata norma e indicata usualmente con x, tale che
(i) x 0, per ogni x X.
(ii) x = 0 se e solo se x = 0.
(iii) x = || x, per ogni x X, K.
(iv) Per ogni x, y X, vale la disuguaglianza triangolare
x + y x + y

Il numero x y denisce una distanza tra i punti x e y.


Osservazione 1.2 Una seminorma `e unapplicazione: X R+ , indicata talvolta con |x|, che soddisfa le
condizioni (i), (iii), (iv). Si dice che |x| `e non triviale se e solo se |x| > 0 per almeno un elemento x X.

Osservazione 1.3 Nel linguaggio della matematica astratta lintroduzione di una norma comporta lintroduzione nello spazio lineare di una topologia che permette di generalizzare i concetti geometrici di intorno, convergenza, ecc. Per denire la distanza tra due punti si potrebbe utilizzare la nozione pi`
u generale di
metrica e considerare gli spazi metrici, anziche gli spazi normati. Tuttavia, la maggior parte dei problemi
in analisi numerica pu`
o essere discussa adeguatamente nel contesto degli spazi lineari normati.

Successivamente si esamineranno in particolare le norme di vettore e di matrice.

1.3.3

Spazi a dimensione innita

Estendiamo ora lidea di base ad uno spazio a dimensione innita.


Denizione 1.6 Un insieme di elementi x1 , x2 , . . . di uno spazio normato X `e detto chiuso (o
completo) in X se per ogni x X e  > 0 esiste un n e un insieme di scalari 1 , 2 , . . . , n tali
che
n

i xi  
x
i=1

Se linsieme {xi } `e chiuso in X e linearmente indipendente (cio`e, tutti i sottoinsiemi niti sono
linearmente indipendenti), allora si dice che {xi } `e una base per X.
Uno spazio `e detto separabile se possiede una base numerabile (o nita). Sono gli spazi pi`
u
interessanti dal punto di vista numerico e nel seguito considereremo, in particolare, spazi che
vericano tale propriet`a.
analisi numerica

c
V.
Comincioli

14

Idee introduttive

Spazi di Banach e di Hilbert


Denizione 1.7 Una successione {xn } in uno spazio lineare normato `e detta successione di
Cauchy se
lim lim xn+p xn  = 0

(1.15)

n p

Denizione 1.8 Uno spazio lineare normato X `e detto completo se ogni successione di Cauchy
in X converge a un elemento in X. Uno spazio normato completo `e detto spazio di Banach.
 Esercizio 1.1 Dimostrare che ogni spazio lineare normato a dimensione nita `e completo.
 Esercizio 1.2 Dimostrare che lo spazio C([a, b]) non `e completo rispetto alla norma

x =

1/2
x2 (t) dt

Fornire un controesempio.

Denizione 1.9 Sia X uno spazio lineare reale. Su di esso `e denito un prodotto scalare se ad
ogni x, y X `e associato un numero reale, denotato usualmente con (x, y), tale che
1. (x, x) 0 e se (x, x) = 0 x = 0.
2. (x, y) = (y, x).
3. (x, y) = (x, y).
4. (x + y, z) = (x, z) + (y, z).

Se si pone
x = (x, x)1/2
si ottiene uno spazio normato. Se X risulta completo allora viene detto spazio di Hilbert.
Ricordiamo, lasciando la dimostrazione come esercizio, la seguente utile disuguaglianza.
Proposizione 1.1 (Cauchy-Schwarz) Dato uno spazio lineare X dotato di un prodotto scalare (, ),
si ha per ogni x, y X:

|(x, y)| (x, x)(y, y) = x y
Langolo tra due elementi x, y `e denito da
= arccos

(x, y)
x y

Due elementi x, y sono ortogonali se = /2, cio`e se (x, y) = 0. Un elemento x `e detto ortogonale
a un sottospazio di X se
(x, ) = 0 .
Lelemento z = (x, y)x/(x, x) `e la proiezione ortogonale di y su x; il vettore y z `e ortogonale a
x.
Si lascia come esercizio la dimostrazione della seguente propriet`a.
analisi numerica

c
V.
Comincioli

1.3 Brevi richiami di analisi funzionale

15

Proposizione 1.2 Per ogni x, y in uno spazio dotato di prodotto scalare si ha la seguente uguaglianza, detta legge del parallelogramma
x + y2 + x y2 = 2x2 + 2y2

(1.16)

Se
x + y = x + y
allora x e y sono linearmente dipendenti e se inoltre x = y, allora x = y.

1.3.4

Trasformazioni e operatori

Sia S1 un sottoinsieme di uno spazio lineare X e S2 un sottoinsieme di uno spazio lineare Y .


Una trasformazione da S1 in S2 `e denita assegnando una regola che associa ad ogni elemento
di S1 un unico elemento di S2 . Chiamiamo operatore la rappresentazione di una trasformazione.
Lequazione
Tx = y
indica che loperatore T trasforma lelemento x S1 in un elemento y S2 . Linsieme di tutti gli
elementi per i quali T `e denito `e il dominio di T , denotato con D(T ). Linsieme degli elementi
y = T x per x D(T ) `e limmagine o range di T , denotato con R(T ).
La trasformazione `e suriettiva su S2 se R(T ) = S2 ; iniettiva se T x1 = T x2 x1 = x2 .
Per una trasformazione iniettiva `e denita una trasformazione da R(T ) in D(T ) tale che
y R(T ) esiste un unico x con T x = y; loperatore che rappresenta tale trasformazione `e
chiamato linverso di T e denotato con T 1 .
Le operazioni di addizione di operatori e di moltiplicazione per uno scalare si deniscono in
modo ovvio; se T1 e T2 hanno un dominio comune X e `e uno scalare allora per ogni x X si ha
(T1 + T2 )x = T1 x + T2 x,

x X

(T )x = (T x)
Se T1 e T2 sono due operatori tali che R(T2 ) `e contenuto in D(T1 ), allora possiamo denire il
prodotto T1 T2 ponendo
(T1 T2 )x = T1 (T2 x)
Naturalmente, non vale in generale la propriet`
a commutativa, cio`e, in generale, T1 T2 = T2 T1 .
Se un operatore T `e invertibile, allora
T 1 T = I,

T T 1 = I,

(I = identit`
a)

Per gli operatori che non hanno inversa si pu`


o introdurre un un concetto meno restrittivo.
Denizione 1.10 Se esiste un operatore TL1 tale che
TL1 T = I
allora esso `e chiamato inverso a sinistra di T . Analogamente TR1 `e detto inverso a destra se:
T TR1 = I
analisi numerica

c
V.
Comincioli

16

Idee introduttive

Si lascia come esercizio la dimostrazione delle seguenti propriet`a.


1. Se esiste sia linverso a sinistra che linverso a destra, allora essi coincidono con linverso.
2. Se esiste TR1 , allora T `e suriettiva su Y e lequazione T x = y ha almeno una soluzione x = TR1 y.
3. Se esiste TL1 , allora T `e iniettiva. Se lequazione T x = y ha una soluzione, allora tale soluzione
`e unica, data da x = TL1 y.

 Esercizio 1.3 Mostrare che loperatore d/dx : C 1 ([a, b]) C([a, b]) `e suriettivo ma non iniettivo.
Quali sono gli operatori inversi a destra di tale operatore?

Denizione 1.11 Un operatore L `e detto lineare se il suo dominio `e uno spazio lineare e se
L(x + y) = Lx + Ly
per tutti gli x, y D(L) e tutti gli scalari , .
Denizione 1.12 Un operatore T : X Y , con X, Y spazi lineari normati, `e detto limitato se
e solo se esiste una costante c < tale che
T x1 T x2  cx1 x2 ,

x1 , x2 X.

(1.17)

Il valore (T ) = inf c `e la limitazione delloperatore T su X.


Osservazione 1.4 Per semplicit`a di notazioni qui e nel seguito, quando non si presentano situazioni
di equivoco, si utilizza la medesima notazione per indicare sia la norma in X che in Y , anche se le due
possono, in generale, essere diverse.
Per gli operatori lineari si pu`o dimostrare il seguente risultato.
Proposizione 1.3 Sia L un operatore lineare e limitato da X in Y . Allora
(L) =

Lx
Lx
= sup
xX,x=0 x
x=1 x
sup

(1.18)

Linsieme di tutti gli operatori lineari e limitati da uno spazio lineare X in uno spazio lineare
Y `e esso stesso uno spazio lineare, con le denizioni di operazione di addizione e moltiplicazione
per uno scalare introdotte in precedenza. Esso viene indicato usualmente L(X, Y ).
Per un operatore lineare, anziche di limitazione delloperatore si parla usualmente di norma,
denita quindi da
L = sup Lx
x=1

 Esercizio 1.4 Si consideri loperatore integrale T : C([0, 1]) C([0, 1]) denito da


(T x)(t) =

K(t, s)x(s) ds
0

ove K(t, s) `e una funzione continua di t e s. Dimostrare che la norma di operatore indotta dalla norma del
massimo `e la seguente
 1
T  = max
|K(t, s)| ds.
0t1

1

|x(t)| dt `e la seguente
 1
|K(t, s)| dt
T 1 = max

e che la norma indotta dalla norma 1, cio`e x1 =

0s1

analisi numerica

c
V.
Comincioli

1.3 Brevi richiami di analisi funzionale

17

Denizione 1.13 Un operatore T `e continuo in x se per ogni successione {xn } convergente a x


si ha
lim T xn T x = 0
n

Lasciamo come esercizio il seguente risultato.


Proposizione 1.4 Un operatore lineare L `e continuo nel dominio di denizione se e solo se `e
continuo in 0 e se e solo se esso `e limitato.
Per operatori non lineari, invece, si ha che la limitatezza implica la continuit`a ma non il viceversa
(dare controesempi). Per una funzione di variabile reale la condizione (1.17) signica la continuit`a
di Lipschitz, che `e una condizione pi`
u forte della continuit`
a ordinaria.
 Esercizio 1.5 Se L `e un operatore lineare, mostrare che R(A) `e uno spazio lineare. Mostrare con
esempi che questo non `e necessariamente vero per un operatore nonlineare.

Ricordiamo inne il seguente importante risultato.


Teorema 1.2 (BanachSteinhaus) Siano X e Y due spazi di Banach e {Ti }, i I, una famiglia
(non necessariamente numerabile) di operatori lineari e continui da X in Y . Se
sup Ti x <

x X

iI

allora
sup Ti L(X,Y ) <
iI

In altre parole esiste una costante c tale che


Ti x c x

x X, i I

Il risultato precedente `e anche noto come principio della limitatezza uniforme (principle of uniform
boundedness): da una stima puntuale si ottiene una stima uniforme.

Figura 1.5 Successione fk (x).

analisi numerica

c
V.
Comincioli

18

Idee introduttive

1.3.5

Importanza della scelta della norma

Terminiamo questa panoramica di nozioni di analisi funzionale richiamando lattenzione sullimportanza di unopportuna scelta della norma in uno spazio lineare. A tale scopo, consideriamo il
seguente esempio.
Sia k 1 un numero assegnato, destinato a tendere a +. Deniamo per ogni k la seguente
funzione sullintervallo [0, 3]

1
2

k(k2 x 1),
per 2 x 2

k
k
2
3
fk (x) =
k(k2 x 3), per 2 x 2

k
k

0,
altrove.
Indicando con  p la norma nello spazio Lp (a, b), si possono dimostrare facilmente i seguenti
risultati, che mostrano il diverso comportamento della successione, per k , a secondo della
norma utilizzata
 3
1
fk (x)1 :=
|fk (x)| dx = 0
k
0
 3

1/2
2
2
|fk (x)| dx
=
fk (x)2 :=
3
0
fk (x) := max |fk (x)| = k
x[0,3]

1.4

Classicazione dei problemi computazionali

Come ogni classicazione, anche quella che ora presenteremo, non ha lo scopo, del resto impossibile, di catalogare in forma precisa i vari tipi di problemi numerici, quanto piuttosto di fornire un
quadro macroscopico di riferimento per quanto riguarda le dierenti dicolt`
a e quindi le dierenti
tecniche.
In forma schematica e facendo riferimento alle notazioni del paragrafo precedente, possiamo
rappresentare un problema numerico nella forma seguente
Tx = y

(1.19)

ove x X, y Y ; X, Y sono spazi lineari e T `e un operatore : X Y . Si possono distinguere i


seguenti tre tipi di problemi, in ordine crescente di dicolt`
a.
1. Il problema diretto. Dato x e T , determinare y. Problemi di questo tipo sono, ad esempio: il
calcolo del valore di una funzione assegnata, per un valore ssato della variabile indipendente; il
calcolo di un integrale denito. Nel secondo esempio linput `e la funzione integranda e linsieme
di integrazione mentre T `e loperatore di integrazione.
2. Il problema inverso. Dato T e y, determinare x. Esempi sono: la risoluzione di un sistema di
equazioni; la risoluzione di un problema dierenziale a valori iniziali o ai limiti. Nel caso, ad
esempio, della risoluzione di un sistema lineare Ax = b, si conosce loutput b, loperatore A e si
vuole conoscere linput x.
analisi numerica

c
V.
Comincioli

1.4 Classicazione dei problemi computazionali

19

Figura 1.6 Rappresentazione schematica di un problema numerico.


` in sostanza, il problema
3. Problema di identicazione. Dato una famiglia di x e y, trovare T . E,
della costruzione di un modello matematico.

` opportuno sottolineare che problema diretto non signica necessariamente assenza di diE
colt`
a numeriche. Nel seguito studieremo ad esempio lapprossimazione di una funzione mediante
funzioni pi`
u semplici (ad esempio, polinomi ), cio`e calcolabili con un numero nito di operazioni.
Tale approssimazione `e la base per la costruzione di algoritmi per il calcolo di funzioni non elementari e per arontare il problema dellintegrazione e della derivazione. Le questioni numeriche
che si pongono per un problema diretto riguardano lo studio degli errori di troncamento e della
convergenza, nonche della stabilit`
a degli algoritmi proposti.
Il problema inverso rappresenta, anche per le sue importanti applicazioni, il problema centrale nellanalisi numerica. In alcuni casi particolari esso pu`
o essere ricondotto a un problema
diretto. Si pensi ad esempio alla formula risolutiva di un sistema lineare mediante il calcolo dellinversa, oppure alle formule per lintegrazione di particolari equazioni dierenziali ordinarie (ad
esempio lineari), alle funzioni di Green per certe equazioni dierenziali ellittiche. La conoscenza delloperatore inverso pu`
o essere interessante dal punto di vista teorico e, talvolta, anche dal
punto di vista pratico, per evidenziare il comportamento qualitativo della soluzione. Tuttavia,
dal punto di vista numerico, cio`e per una valutazione quantitativa, essa non `e necessariamente
di aiuto. Nel caso, ad esempio, di un sistema lineare il calcolo dellinversa della matrice non `e
sempre lo strumento numerico pi`
u adatto per il calcolo della soluzione.
Il problema di identicazione, il pi`
u ambizioso dei tre tipi di problemi, in generale presenta
le pi`
u grosse dicolt`
a. Analizziamo come esempio una situazione particolare che si inquadra
nella teoria dellapprossimazione. Supponiamo che una funzione sia data solo per punti, cio`e in
forma tabellare e che si voglia conoscere i valori della funzione in punti diversi da quelli dati. Il
problema `e, quindi, quello di approssimare una funzione sulla base della conoscenza di alcuni suoi
valori, che possono essere, ad esempio, dati sperimentali . Chiaramente, il problema pu`
o non avere
soluzione unica, a meno che non si restringa opportunamente la classe delle funzioni ammissibili
e si precisi il senso di vicino, mediante la scelta di una particolare norma. Quando gli spazi X
e Y sono a dimensione innita, si pu`o assumere come approssimazione di T una combinazione
nita di elementi di una base, ad esempio una combinazione di polinomi. Il problema `e in questo
modo ricondotto alla ricerca di un numero nito di parametri (gradi di libert`
a ), che usualmente
vengono calcolati minimizzando una opportuna misura dello scarto tra i dati del problema e quelli
forniti dalla approssimazione di T . Si ha, quindi, in denitiva un problema di programmazione
matematica, che sar`a trattato nel seguito.
Un approccio, concettualmente simile, ma con evidenti dicolt`a aggiuntive, pu`o essere adottato nella situazione pi`
u generale quando, anziche una funzione, loperatore incognito T `e un
analisi numerica

c
V.
Comincioli

20

Idee introduttive

problema dierenziale, integrale, alle dierenze, ecc. In questo caso loperatore T , viene stimato
con operatori semplici, ad esempio lineari. Si costruisce cio`e un modello matematico. Solitamente nel modello sono presenti dei parametri, in generale con un signicato sico, chimico, ecc.
La loro funzione `e quella di adattare il modello approssimato ai dati sperimentali. Il loro calcolo
comporta, quindi, come abbiamo visto in precedenza, la risoluzione di problemi di ottimizzazione. Una volta calcolati i parametri si tratta di vedere se il modello corrispondente `e adeguato
` questo un punto estremamente
a descrivere il fenomeno corrispondente ai dati sperimentali. E
delicato del processo di modellizzazione, che comporta, in particolare, una scelta signicativa dei
dati sperimentali.
In denitiva, per quanto riguarda laspetto numerico, i problemi di identicazione richiedono
la risoluzione (eventualmente iterata) di problemi di tipo diretto o inverso e, in particolare, di
problemi di ottimizzazione.

1.5

Esempi introduttivi di Matlab

Condizione indispensabile per imparare ad usare Matlab (link 1) `e poter disporre su calcolatore
di una sua versione (meglio se versione 6, o versioni successive).
Mediante le istruzioni
>> help
>> help help
>> demo

si possono apprendere rapidamente le nozioni e le istruzioni di base, che saranno quindi supposte
note per il seguito. Come un qualunque altro linguaggio, vale sempre il principio che il modo
migliore per apprenderlo `e usarlo!
In questo libro lambiente Matlab `e utilizzato principalmente come strumento utile per implementare e analizzare i metodi e gli algoritmi numerici. Allo stesso scopo possono, naturalmente,
essere utilizzati altri ben noti linguaggi di programmazione (Fortran, C,. . . ).
Per comodit`
a, in questo capitolo a carattere introduttivo vengono evidenziate, mediante alcune
semplici applicazioni, dierenti caratteristiche e possibilit`a di Matlab (per una introduzione pi`
u
organica si veda ad esempio [309]).
Ad esempio, il seguente segmento di programma
% simbolo utilizzato per commenti
u=rand(1,2000000); v=rand(2000000,1);% generazione di due vettori random
t=cputime; %inizializza il tempo di cpu
tic
% altro modo di valutare il tempo di esecuzione
p=u*v;
% prodotto scalare
toc
% chiude tic e mostra il tempo impiegato in secondi
cputime-t
% tempo di esecuzione in secondi
----------t=cputime; tic
p=0;
for i=1:2000000 %
p=p+u(i)*v(i); % prodotto scalare eseguito componente per componente
end
%
toc; cputime-t
analisi numerica

c
V.
Comincioli

1.5 Esempi introduttivi di Matlab

21

evidenzia il fatto che Matlab `e un linguaggio vettoriale: pu`


o operare direttamente su matrici e in
maniera decisamente pi`
u conveniente che componente per componente. Nel seguito vedremo altri
esempi illustrativi di tale stile di programmazione.

1.5.1

Graca mediante Matlab

Un altro aspetto interessante di Matlab `e la possibilit`a di ottenere facilmente dei graci.


Si consideri ad esempio il seguente script, ossia una successione di istruzioni in Matlab (scritte
mediante, ad esempio, MATLAB Editor/Debugger, leditore implementato nel sistema) e salvato
come un le matlab, ossia nome.m.
% Script File: SinePlot
% grafico della funzione sin(2*pi*x) con accuratezza crescente
close all % chiude tutte le figure esistenti
for n = [4 8 12 16 20 50 100 200 400]
x = linspace(0,1,n); % costruisce una suddivisione in n parti uguali di [0,1];
% x vettore riga
y = sin(2*pi*x);
% y vettore dei valori della funzione in x
plot(x,y)
% grafico
title(sprintf(Plot di sin(2*pi*x) con n = %3.0f punti ,n))
pause
% arresto momentaneo dellesecuzione; premere un tasto per ripartire
end

Il seguente script per la stessa funzione produce una tabella di valori.


% Script File: SineTable
clc % Clear command window: annulla i precedenti comandi
% sulla finestra dei comandi di Matlab
n = 21;
x = linspace(0,1,n);
y = sin(2*pi*x);
disp( )
disp( k
x(k)
sin(x(k)))
disp(------------------------)
for k=1:21
deg = (k-1)*360/(n-1);
disp(sprintf( %2.0f
%3.0f
%6.3f
,k,deg,y(k)));
end
disp( );
disp(x(k) `
e dato in gradi.)
disp(sprintf(Un grado = %5.3e radianti,pi/180))

Ulteriori esemplicazioni sono fornite dai seguenti script.


% Script File: Poligoni
% grafici di alcuni poligoni regolari
close all
theta = linspace(0,2*pi,361);
c = cos(theta); s = sin(theta);
k=0;
for lati = [3 4 5 6 8 10 12 18 24]
passo = 360/lati;
k=k+1;
analisi numerica

c
V.
Comincioli

22

Idee introduttive

subplot(3,3,k)
plot(c(1:passo:361),s(1:passo:361))
axis([-1.2 1.2 -1.2 1.2])
axis equal
end

La gura (cfr. Figura 1.7) ottenuta pu`


o essere salvata in un le di diverso formato (.bmp, .jpg,
.ps, .eps,. . . ) e utilizzata per la stampa.

Figura 1.7 Alcuni poligoni regolari.

% grafico(efficiente)di un cerchio
close all
x = linspace(0,1,200);
y = sqrt(1 - x.^2);
plot(x,y)
axis square equal
hold on
plot(x,-y); plot(-x,y); plot(-x,-y)
hold off

 Esercizio 1.6 Se
x=linspace(0,2*pi,100),
y=sin(x); z=exp(-x);

scrivere un segmento di programma in matlab per tracciare il graco della funzione ex sin(x) sullintervallo
[0, 4] senza ulteriori calcoli delle due funzioni.

Colore parametrico
analisi numerica

c
V.
Comincioli

1.5 Esempi introduttivi di Matlab

23

co=[y g m r];
x=0:0.1:1;
A=[];
figure
for m=1:3
y=sin(2*m*pi*x);
A=[A;y];
col=co(m);
h=plot(x,y,col);
hold on
end
figure
k=plot(x,A)
legend(k,1,2,3,-1)
axis square
% spirale di Archimede
a=1;
theta=0:pi/60:2*pi; rho=a*theta;
polar(theta,rho);
grid
title(spirale di Archimede, \rho= a \theta)
function[xt,yt]=rot2d(t,x,y)
% rotazione (con centro lorigine) di un oggetto bidimensionale rappresentato
% da due vettori riga x e y. Langolo di rotazione t `
e dato in gradi. I vettori
% trasformati sono dati in xt e yt.
t1=t*pi/180;
r=[cos(t1) -sin(t1); sin(t1) cos(t1)];
x=[x x(1)]; y=[y y(1)];
hold on; grid on; axis equal
fill(x,y,b)
z=r*[x;y];
xt=z(1,:); yt=z(2,:);
fill(xt,yt,r)
title(sprintf(rotazione piana di %3.2f gradi,t))
hold off
---% ad esempio:
x=[1 2 3 2]; y=[3 1 2 4];
[xt,yt]=rot2d(75,x,y)
%rappresentazione grafica di una funzione
f=(2*x-sqrt(2))*sin(2*x);
fplot(f,[-1,2])
xlabel(x);ylabel(f(x))
title(Rappresentazione grafica di una funzione)
hold on
g=exp(x)*cos(x);
fplot(g,[-1 2], r)
legend(f(x)=(2x-sqrt(2)) sin(2x), g(x)=e^x cos(x))

Il seguente
programma visualizza in maniera geometrica il metodo di Newton per lapprossimazione di 2.
analisi numerica

c
V.
Comincioli

24

Idee introduttive

Figura 1.8 Esempio di rappresentazione graca.


% radice2.m
% Visualizza 4 iterazioni della costruzione geometrica della radice di due
A=2;
x(1)=1;
for k=1:4
x(k+1)=0.5*(x(k)+A/x(k)); %metodo di Newton
subplot(2,2,k);
% successivi sottografici
xp=[0 x(k) x(k) 0 0];
yp=[0 0 A/x(k) A/x(k) 0];
fill(xp,yp,y);
% riempimento del rettangolo con colore y(ellow)
xlabel(sprintf(x(%d)=%4.3f,k,x(k)));
axis([0 A 0 A]); % definizione degli assi
axis(square); % help axis
end

I risultati ottenuti sono rappresentati in Figura 1.9.


Il seguente script esamina gracamente la bont`
a dellapprossimazione di una funzione mediante
una funzione razionale fratta.
----------% Script File: ExpPlot
% Esamina la funzione
%
f(x) = ((1 + x/24)/(1 - x/12 + x^2/384))^8
% come una approssimazione di exp(x) sullintervallo [0,1].
close all
x = linspace(0,1,200);
num
= 1 + x/24; denom = 1 - x/12 + (x/384).*x; quot = num./denom;
y = quot.^8;
plot(x,y,x,exp(x))
err=norm(y-exp(x),inf) %distanza nella norma del massimo

analisi numerica

c
V.
Comincioli

1.5 Esempi introduttivi di Matlab

25

Figura 1.9 Costruzione geometrica della radice di 2.


Graca in 3D
% illustra le varie possibilit`
a di rappresentazione grafica in 3D
[x,y]=meshgrid(-2:0.1:2, -2:0.1:2); % x y matrici
clf
f=x.*exp(-x.^2-y.^2); % definisce la funzione z=f(x,y)
z=eval(f); % calcola la funzione in x, y)
surf(x,y,z)
pause
colorbar
pause
mesh(x,y,z)
pause
meshc(x,y,z)
pause
surfc(x,y,z)
pause
pcolor(x,y,z)
pause
surf(x,y,z,gradient(z))
pause
contour(x,y,z)
pause
plot3(x,y,z)

% superficie parametrica
[r,theta]=meshgrid(0:0.1:2,0:0.1:6*pi)
x=r.*cos(theta);
y=r.*sin(theta);
z=theta;
surf(x,y,z)
analisi numerica

c
V.
Comincioli

26

Idee introduttive

function cones(alpha)
% 3-D di un cono con semiangolo alpha
% provare alpha=0.5236
[X,Y]=meshgrid(-10:0.5:10, -10:0.5:10);
Z=-sqrt(X.^2+Y.^2)/tan(alpha);
i=find(Z<Z(1,21));
for n=i
Z(n)=Z(1,21);
end
subplot(1,2,1)
mesh(X,Y,Z), axis(equal)
t=[\alpha= num2str(alpha) radians];
title(t);
subplot(1,2,2)
contour3(Z),axis(equal)

Il risultato del successivo script `e rappresentato in Figura 1.10.


N = 10; % numero di incrementi. Provare ad aumentare.
z = linspace(-5,5,N);
radius = sqrt(1+z.^2);
% provare con altre funzioni
theta = 2*pi*linspace(0,1,N);
X = radius*cos(theta);
Y = radius*sin(theta);
Z = z(:,ones(1,N));
surf(X,Y,Z)
axis equal

Figura 1.10 Esempio di rappresentazione graca.

mesh non strutturate (non equidistanti)

analisi numerica

c
V.
Comincioli

1.5 Esempi introduttivi di Matlab

x=[-2 -1 0 1 2 -2 -1
y=[ 0 0 0 0 0 1 1
tri=delaunay(x,y); %
%
%
z=x+y;
trimesh(tri,x,y,z)

27

0 1 2 -2 -1 0 1 2];
1 1 1 2 2 2 2 2];
tri `
e una matrice 3 per M (ordine di x e y)
che contiene le informazioni per generare i triangoli
ogni riga contiene gli indici dei tre vertici

Dimostrazione della possibilit`


a di eseguire animazioni
Si vuole visualizzare le oscillazioni di una molla di forma elicoidale. Le equazioni parametriche
della curva sono
d
d
y = sin p;
z=p
x = cos p;
2
2
dove d `e il diametro dellelica. Per simulare le oscillazioni di ampiezza A e frequenza angolare
si modica lequazione di z nel modo seguente
z = (1 + A cos((t 1)))p
ove t `e la variabile temporale.
p=0:pi/60:8*pi;
d=2;A=0.2;T=5;
omega=2*pi/T;
t=0;
%plot del frame di riferimento
x=d*cos(p)/2; y=d*sin(p)/2;
z=(1+A*cos(omega*(t-1)))*p;
plot3(x,y,z)
pause
M=moviein(6);
for t=1:6 %memorizza i movie
x=d*cos(p)/2; y=d*sin(p)/2;
z=(1+A*cos(omega*(t-1)))*p;
plot3(x,y,z)
axis([-1 1 -1 1 0 10.0*pi]);
M(:,t)=getframe;
end
pause
movie(M,10) %esegue lanimazione per dieci volte
%superficie
[x,y]=meshgrid(-pi:0.1:pi);
f=sin(x).*y/5*cos(t);
nframes=20;
tt=linspace(0,2*pi,nframes);
figure(1);clf
Mv=moviein(nframes);
for n=1:nframes
t=tt(n);z=eval(f);surf(x,y,z);
axis([-pi pi -pi pi -1 1]);
Mv(:,n)=getframe;
end
movie(Mv,4);

analisi numerica

c
V.
Comincioli

28

1.5.2

Idee introduttive

Il problema 3x + 1

Dato un intero positivo x1 si denisce una successione {xk , k = 1, 2, . . .} nel seguente modo

se xk `e pari
xk /2
xk+1 =
3xk + 1 se xk `e dispari
Ad esempio, se x1 = 7, si ha la successione
7, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1, 4, 2, 1, . . .
La successione diventa ciclica quando raggiunge il valore 1. Si hanno diverse questioni interessanti
la successione raggiunge sempre la situazione ciclica?
se n `e il pi`
u piccolo indice tale che xn = 1, come si comporta n come funzione del valore iniziale
x1 ?
vi sono dei pattern interessanti nella successione?
Ne seguito si costruisce uno script che pu`o aiutare nellindagine precedente4 .
% Script File: UpDown
% genera un vettore colonna x(1:n) di interi positivi
% dove x(1) `
e richiesto come input e
%
x(k+1) = x(k)/2
if x(k) is even.
%
x(k+1) = 3x(k)+1
if x(k) is odd.
% Il valore di n `
e o 500 (soglia fissata ad arbitrio)
% oppure il primo indice per il quale si ha x(n) = 1
x = zeros(500,1);
x(1) = input(valore iniziale (intero positivo): );
k = 1;
while ((x(k) ~= 1) & (k < 500))
if rem(x(k),2) == 0
x(k+1) = x(k)/2;
else
x(k+1) = 3*x(k)+1;
end
k = k+1;
end
n = k;
x = x(1:n);
clc
disp(sprintf(x(1:%1.0f) = \n,n))
disp(sprintf(%-8.0f,x))
[xmax,imax] = max(x);
disp(sprintf(\n x(%1.0f) = %1.0f `
e il massimo.,imax,xmax))
density = sum(x<=x(1))/x(1); %sum(x<=x(1)) `
e il numero delle componenti
%in x che sono minori o uguali a x(1)
disp(sprintf( La densit`
a e
` %5.3f.,density))
4
Il problema posto da L. Collatz nel 1937, in connessione allo studio di gra orientati, `e anche noto come
algoritmo di Hasse, problema di Kakutani, congettura di Thwaites, problema di Syracuse, problema di Ulam. Si
hanno serie indicazioni che non esista nessun altro ciclo oltre quello semplice 4-2-1. Il problema della convergenza
`e comunque tuttora aperto. cfr. link 10, link 11.

analisi numerica

c
V.
Comincioli

1.5 Esempi introduttivi di Matlab

29

close all
figure
plot(x)
title(sprintf(x(1) = %1.0f, n = %1.0f,x(1),n));
figure
plot(-sort(-x))
title(successione in ordine crescente.)
I = find(rem(x(1:n-1),2)==1);
if length(I)>1
figure
plot((1:n),zeros(1,n),I+1,x(I+1),I+1,x(I+1),*)
title(massimi locali)
end
% Script File: RunUpDown
% memorizza i risultati nel file UpDownOutput.
while(input(altro esempio? (1=si, 0=no)))
diary UpDownOutput
UpDown
diary off
disp( )
if (input(memorizzare? (1=si, 0=no))~=1)
delete UpDownOutput
end
end

 Esercizio 1.7 Sia {xi } la successione up/down con x1 = m e g(m) lindice del primo xi che `e uguale
a uno. Tracciare il graco di g per m = 1 : 200.

1.5.3

Numeri primi

function p=primi(N)
% Ricerca dei primi <= N
% p=primi(N)
% con N>=11
% (Semplice implementazione crivello di Eratostene)
r=13;
p=[2 3 5 7 11];
i=5; %i conta lattuale numero di primi
while r<=N
s=2;
while p(s)*p(s)<=r & rem(r,p(s))>0
s=s+1;
end
if rem(r,p(s))>0
i=i+1;
p(i)=r;
end
r=r+2;
end

analisi numerica

c
V.
Comincioli

30

1.5.4

Idee introduttive

Metodo Monte Carlo

---------------% Script File: Dice


% simula 1000 lanci di una coppia di dadi.
close all
First = 1 + floor(6*rand(1000,1));
Second = 1 + floor(6*rand(1000,1));
Throws = First + Second;
hist(Throws, linspace(2,12,11));
title(Outcome of 1000 Dice Rolls.)

Calcolo approssimato di
Si considera un cerchio di centro lorigine e di raggio 1. Il quadrato `e il bersaglio di successivi
colpi con uguale probabilit`a. Il rapporto tra larea del quadrato circoscritto (= 4) e larea del
cerchi (= ) `e allora approssimato dalla frazione di colpi sul cerchi e il totale dei colpi
numero di colpi entro il cerchio

4
numero totale dei colpi
% Script File: Darts
% stima di pi usando bersagli random
close all
rand(seed,.123456)
NIn = 0;
PiEstimate = zeros(500,1);
for k=1:500
x = -1+2*rand(100,1);
y = -1+2*rand(100,1);
NIn = NIn + sum(x.^2 + y.^2 <= 1);
PiEs(k) = (NIn/(k*100))*4;
end
plot(PiEs)
title(sprintf(stima mediante Monte Carlo di Pi = %5.3f,PiEs(500)));
xlabel(centinaia di tentativi)

Metodo di Archimede Il metodo di Archimede per il calcolo del numero `e basato sul calcolo
del perimetro di una successione di poligoni inscritti in una circonferenza di diametro d assegnato.
Dato un poligono di n lati inscritto in una circonferenza di diametro d, si ha

2
, l = d sin
=
n
2
Il perimetro del poligono `e dato da pn = n l e quindi

pn = n d sin
n
Tenendo conto che limx0 sin x/x = 0, si ha
lim pn = d

ninf

analisi numerica

c
V.
Comincioli

1.5 Esempi introduttivi di Matlab

31

Figura 1.11 bersagli.


for k=2:6
n=2^k;
errore1=abs(n*sin(pi/n)-pi);
fprintf(%2d \t %5.4e\n,n,errore1);
end
4
3.1317e-001
8
8.0125e-002
16
2.0148e-002
32
5.0442e-003
64
1.2615e-003

Dai risultati si intuisce una convergenza quadratica, ossia al raddoppio di n corrisponde una
riduzione di 4 dellerrore (En = O(1/n2 )).
 Esercizio 1.8 Implementare una simulazione per stimare il volume di {(x1 , x2 , x3 , x4 ) : x21 + x22 + x23 +
x24 1}, la sfera unitaria nello spazio a 4 dimensioni.

1.5.5

Ricorsione

Illustriamo con alcuni esempi la possibilit`a di utilizzare in matlab la procedura di ricorsione.


Permutazioni
function y=rndprm1(x)
% permutazione random utilizzando un for loop
% x=[x1 x2 ...] o x=c1c2..., xi numeri, ci caratteri
[m,n]=size(x);
if m> 1
error(rndprm accetta solo vettori riga)
end
y=[];
l=n;
for i=1:n
analisi numerica

c
V.
Comincioli

32

Idee introduttive

Figura 1.12 Approssimazione di tramite un poligono inscritto nella circonferenza (metodo di Archimede).

i=1+fix(l*rand);
xs=x(i);
y=[y,xs]; %aggiunge xs al vettore y
x(i)=[]; %toglie x(i) dal vettore
l=l-1;
end
--------function y=rndprm1(x)
% permutazione random utilizzando un while loop
[m,n]=size(x);
if m> 1
error(rndprm accetta solo vettori riga)
end
y=[];
l=n;
while l>0
i=1+fix(l*rand);
xs=x(i);
y=[y,xs];
x(i)=[];
l=l-1;
end
--------function y=rndprm(x)
% permutazione random utilizzando una ricorsione
%x=[x1 x2 ...] o x=c1c2..., xi numeri, ci caratteri
[m,n]=size(x);
if m> 1
error(rndprm accetta solo vettori riga)
end
if n<=1
y=x;
else i=1+fix(n*rand);
xs=x(i);
x(i)=[];
analisi numerica

c
V.
Comincioli

1.5 Esempi introduttivi di Matlab

33

z=rndprm(x);
y=[z,xs];
end

Numeri di Fibonacci
f1 = 1,

f2 = 2

fn = fn1 + fn2

function f=fibonacci(n)
% genera i primi n elementi della sequenza di Fibonacci
f=zeros(n,1);
f(1)=1; f(2)=2;
for k=3:n
f(k)=f(k-1)+f(k-2);
end
--------% provare
% n=40; f=fibonacci(n);
% f(2:n)./f(1:n-1)
--------function f=fibnum(n)
% calcola lelemento n-mo della sequenza di Fibonacci
if n<=1
n=1;
else
f=fibnum(n-1)+fibnum(n-2);
end
---------% provare tic, fibnum(24), toc
---------% formula esplicita
phi=(1+sqrt(5))/2;
format long e
n=(1:20);
f=(phi.^(n+1)-(1-phi).^(n+1))/(2*phi-1)

Frattali
%Iterated Function System
z=0+0*i;
s=(1+i)/2;
for j=1:30000
p=floor(2*rand)+1;
if p==1
z=s*z+1;
else
z=s*z-1;
end
x(j)=real(z);
y(j)=imag(z);
end
analisi numerica

c
V.
Comincioli

34

Idee introduttive

plot(x,y,.)
axis equal
axis off

Figura 1.13 Iterated Function System.

function gasket(Pa,Pb,Pc,level)
%GASKET Sierpinski gasket mediante ricorsione.
%
PA, PB and PC vettori a due componenenti
%
che definiscono i vertici del tiangolo
%
LEVEL livello di ricorsione
% Ad esempio PA=[0 0]; PB=[1 0]; PC=[0.5 1];
if level == 0
% riempi il triangolo con vertici Pa, Pb, Pc.
fill([Pa(1),Pb(1),Pc(1)],[Pa(2),Pb(2),Pc(2)],[0.5 0.5 0.5]);
hold on
else
% Ricorsione
gasket(Pa,(Pa+Pb)/2,(Pa+Pc)/2,level-1)
gasket(Pb,(Pb+Pa)/2,(Pb+Pc)/2,level-1)
gasket(Pc,(Pc+Pa)/2,(Pc+Pb)/2,level-1)
end
axis(equal,off)

Si toglie successivamente linterno del triangolo con vertici corrispondenti ai punti di mezzo.
Provare con level=0 e level=1, ecc. (porre successivamente level off).
Fiocco di neve di Kock
% Koch Curve, fiocco di neve
function cfkoch(n)
s=get(0,ScreenSize);
set(gcf,Position,[0 0 s(3) s(4)-70],Color,[0 0 0])
if (n==0)
x=[0;1];
analisi numerica

c
V.
Comincioli

1.5 Esempi introduttivi di Matlab

35

Figura 1.14 Sierpinski gasket.

y=[0;0];
line(x,y,Color,w);
good_axis
set(gcf,Nome,curva di Koch: Initiator (n=0))
else
levelcontrol=10^n;
L=levelcontrol/(3^n);
l=ceil(L);
kline(0,0,levelcontrol,0,l);
good_axis
if(n==1)
set(gcf,Nome,curva di Koch: Generator (n=1))
else
N=num2str(n);
NN=strcat(curva di Koch , n=,N);
set(gcf,Nome,NN)
end
end
-----function good_axis
axis equal
set(gca,Visible,off)
----function plotline(a1,b1,a2,b2)
x=[a1;a2];
y=[b1;b2];
line(x,y,Color,w);
------function kline(x1,y1,x5,y5,limit)
length=sqrt((x5-x1)^2+(y5-y1)^2);
if(length>limit)
x2=(2*x1+x5)/3;
y2=(2*y1+y5)/3;
x3=(x1+x5)/2-(y5-y1)/(2.0*sqrt(3.0));
y3=(y1+y5)/2+(x5-x1)/(2.0*sqrt(3.0));
analisi numerica

c
V.
Comincioli

36

Idee introduttive

x4=(2*x5+x1)/3;
y4=(2*y5+y1)/3;
% ricorsione
kline(x1,y1,x2,y2,limit);
kline(x2,y2,x3,y3,limit);
kline(x3,y3,x4,y4,limit);
kline(x4,y4,x5,y5,limit);
else
plotline(x1,y1,x5,y5);
end

Felce, fern
La felce `e generata da trasformazioni ripetute di un punto nel piano. Se x `e un vettore di
componenti x1 , x2 vi sono quattro dierenti trasformazioni della forma
x Ax + b
con dierenti matrici A e vettori b (trasformazioni ani).
La trasformazione pi`
u frequentemente utilizzata `e la seguente




0.85 0.04
0.0
A=
,
b=
0.04 0.85
1.6
Tale trasformazione accorcia e ruota di un bit il vettore e aggiunge 1.6 alla seconda componente.
Ripetute applicazioni della trasformazione muove il punto in su e a destra. Ogni tanto si sceglie
in maniea random una delle altre tre trasformazioni che hanno leetto di muovere il punto nella
sottofelce inferiore sulla destra, e rispettivamente sulla sinistra, oppure sul gambo.
function fern
%FERN implementazione MATLAB del Fractal Fern
%
Michael Barnsley, Fractals Everywhere, Academic Press, 1993.
%
il programma `
e eseguito fino allo stop
shg
clf reset
set(gcf,color,white,menubar,none, ...
numbertitle,off,name,Fractal Fern)
x = [.5; .5];
h = plot(x(1),x(2),.);
darkgreen = [0 2/3 0];
set(h,markersize,1,color,darkgreen,erasemode,none);
axis([-3 3 0 10])
axis off
stop = uicontrol(style,toggle,string,stop, ...
background,white);
drawnow
p = [ .85 .92 .99 1.00];
A1 = [ .85 .04; -.04 .85]; b1 = [0; 1.6];
A2 = [ .20 -.26; .23 .22]; b2 = [0; 1.6];
A3 = [-.15 .28; .26 .24]; b3 = [0; .44];
A4 = [ 0
0 ;
0
.16];
cnt = 1;
analisi numerica

c
V.
Comincioli

1.5 Esempi introduttivi di Matlab

37

tic
while ~get(stop,value)
r = rand;
if r < p(1)
x = A1*x + b1;
elseif r < p(2)
x = A2*x + b2;
elseif r < p(3)
x = A3*x + b3;
else
x = A4*x;
end
set(h,xdata,x(1),ydata,x(2));
drawnow
cnt = cnt + 1;
end
t = toc;
s = sprintf(%8.0f points in %6.3f seconds,cnt,t);
text(-1.5,-0.5,s,fontweight,bold);
set(stop,style,pushbutton,string,close,callback,close(gcf))

1.5.6

Ulteriori esempi illustrativi

---------------% uso della feval


fun=[cos; sin; log];
k=input(numero funzione: );
x=input(valore di ingresso: );
feval(fun(k,:),x)

function y=haa(x,j,k)
% wavelet haar
n=length(x);
t=(2^j)*x-k;
jm=2^(j/2);
y=zeros(size(x));
I=find(t>0 & t<0.5);
y(I)=jm;
II=find(t>=0.5 & t<1);
y(II)=-jm;

Esempio di utilizzo del switch statement


x=ceil(10*rand);
switch x
case {1,2}
disp(probabilit`
a = 20%)
case {3,4,5}
disp(probabilit`
a = 30%)
otherwise
disp(probabilit`
a = 50%)
end

analisi numerica

c
V.
Comincioli

38

Idee introduttive

Figura 1.15 Wavelet di Haar.


%menu2.m
%help menu
scelta=menu(scegli una figura piana, triangolo,quadrato,...
pentagono,cerchio,stop);
t=linspace(pi/2,5*pi/2,361);
switch scelta
case 1
lati=3;
case 2
lati=4;
case 3
lati=5;
case 4
lati=360;
otherwise
close all
return
end
angolo=360/lati;
x=cos(t(1:angolo:361));
y=sin(t(1:angolo:361));
fill(x,y,r);
axis([-1 1 -1 1]);
axis(square);
clear scelta;
menu2

%try... catch
try
z
catch
disp(z non e definita)
end
analisi numerica

c
V.
Comincioli

1.5 Esempi introduttivi di Matlab

39

z=0;
try
z
catch
disp(z non e definita)
end

Istruzione persistent
function a= perman
persistent b
if b>=1;
b=1+b;
else
b=[b 1];
end
a=b;

Il parametro di uscita a conta il numero di accessi alla funzione perman. Listruzione persistent
permette di ritenere in memoria la variabile b. Dierisce dallistruzione global per il fatto che le
variabili persistent sono note solo alla funzione nella quale sono dichiarate.
Media Aritmetica-Geometrica
La media aritmetica-geometrica M (a, b) (AGM(a,b), agm(a,b)) di due numeri a e b `e denita nel
modo seguente
a0 = a,
an+1

b0 = b
an + bn
=
,
2

bn+1 =

an bn

function M=arigeo(a,b)
% a,b vettori dello stesso ordine
while any(abs(a-b) > 1.e-10)
an=(a+b)/2;
bn=sqrt(a.*b);
a=an;b=bn;
end
M=b;
%%%% variante ottimizzata
function M=arigeo(a,b)
I=find(abs(a-b)>1.e-12);
while ~isempty(I)
an(I)=(a(I)+b(I))/2;
bn(I)=sqrt(a(I).*b(I));
a(I)=an(I);b(I)=bn(I);
I=find(abs(a-b)>1.e-12)
end
M=b;

analisi numerica

c
V.
Comincioli

40

Idee introduttive

Figura 1.16 Media aritmetica-geometrica M (a, b) per a a, b 200.


Le successioni an , bn sono monotone e limitate, inoltre si ha
an+1 bn+1
Tenendo conto che

bn <


1
an 2 an bn + bn
= (an + bn ) an bn =
2
2

an si ha
1
an+1 bn+1 < (an bn )
2

La Figura 1.16 mostra M (a, b) per a a, b 200.


[x,y]=meshgrid(0:01:200,0:01:200);
z=arigeo(x,y);
[c,h]=contourf(z,20);clabel(c,h);colorbar

Tra i vari risultati interessanti relativi allalgoritmo della media aritmetica-geometrica ricordiamo la possibilit`a di calcolare gli integrali ellittici.

1.5.7

Strutture dati: array di celle e array di strutture

Array di celle
Una array di celle (cell array) `e una array nella quale gli elementi sono celle (cells), ossia
contenitori di matrici, testi, vettori di numeri complessi, ecc.
A(1,1)={rand(2)}; A(1,2)={text};
A(2,1)={rand(5)}; A(2,2)={2+3i};
------analisi numerica

c
V.
Comincioli

1.5 Esempi introduttivi di Matlab

41

Figura 1.17 cellplot.


A = [2x2 double]
text
[5x5 double]
[2.0000+
A{1,1}
ans =0.9501
0.6068
0.2311
0.4860
------celldisp(A)
A{1,1} = 0.9501
0.6068
0.2311
0.4860
A{2,1} = 0.8913
0.4447
0.7621
0.6154
0.4565
0.7919
0.0185
0.9218
0.8214
0.7382
A{1,2} = text
A{2,2} = 2.0000 + 3.0000i
------cellplot(A) %cfr. figura

3.0000i]

0.1763
0.4057
0.9355
0.9169
0.4103

0.8936
0.0579
0.3529
0.8132
0.0099

0.1389
0.2028
0.1987
0.6038
0.2722

Array di strutture
Il signicato di una array di strutture (structure array) `e illustrato dai seguenti esempi
A=struct(d,16,m,23,s,47)
A = d: 16
m: 23
s: 47
A.d
ans = 16
A.m
ans = 23
--------s = struct(strings,{{hello,yes}},lengths,[5 3])
s = strings: {hello yes}
lengths: [5 3]
s.lengths
ans = 5
3
analisi numerica

c
V.
Comincioli

42

Idee introduttive

s.lengths(2)
ans = 3

Mentre per le array di celle `e possibile accedere ai dati contenuti in base alla posizione che
occupano, con le array di strutture `e possibile ai dati anche attraverso i loro nomi. Questa
caratteristica consente di creare e utilizzare i database che contengono tipi di dati dierenti (per
esempio, un elenco di clienti con i loro indirizzi e numeri di telefono).
Esempio 1.11 Il seguente m-le fstru calcola il valore, il gradiente e la matrice hessiana della funzione
f (x) = (x1 1)2 + x1 x2
e li memorizza in una struttura
function fx=fstru(x)
fx.Value=(x(1)-1).^2+x(1).*x(2);
fx.Gradient=[2*(x(1)-1)+x(2); x(1)];
fx.Hessian=[2 1; 1 0];

Ad esempio
>> x=[2;1];
>> fx=fstru(x)
fx =
Value: 3
Gradient: [2x1 double]
Hessian: [2x2 double]
>> whos
Name
Size
Bytes Class
fx
1x1
428 struct array
x
2x1
16 double array
Grand total is 12 elements using 444 bytes
>> fx.Gradient
ans =3
2
>> fx.Hessian
ans =2
1
1
0

 Esercizio 1.9 Creare una structure array che contiene i fattori di conversione delle unit`a di massa,
forza e lunghezza fra sistema metrico SI e quello anglosassone.
Utilizzare larray per calcolare:
il numero di metri in 24 piedi (feet)
il numero di piedi in 65 metri
il numero di libbre (pound) equivalente a 18 newton
il numero di newton equivalente a 5 libbre
il numero di chilogrammi in 6 slug (slug `e lunit`a di massa che subisce unaccelerazione di 1 piede/sec2
quando `e sottoposta alla forza di una libbra)
il numero di slug in 15 chilogrammi

analisi numerica

c
V.
Comincioli

Errors, like straws, upon the surface ow;


He who would search for pearls must dive below.

John Dryden, All for love, 1677

CAPITOLO

2
Analisi degli errori

In questo capitolo esamineremo in particolare gli errori relativi alluso di uno strumento di calcolo:
la loro origine, la propagazione, e alcune tecniche per la loro valutazione. Ci`
o `e in analogia a
quanto avviene quando si usa in laboratorio uno strumento di misurazione: le misure ottenute
hanno senso soltanto se `e nota la sensibilit`
a , cio`e la capacit`a di discriminazione, dello strumento.
Un calcolatore numerico `e in grado di rappresentare soltanto un numero nito di cifre; ne consegue la possibilit`a che un numero reale introdotto nel calcolatore venga approssimato; le operazioni elementari eseguite su tali numeri possono, a loro volta, produrre risultati non rappresentabili
esattamente nel calcolatore. Pertanto, quando un algoritmo 1 viene eseguito su un calcolatore, si
ha in generale una successiva creazione e propagazione di errori. Tali errori sono comunemente
chiamati errori di arrotondamento, dal nome di una tecnica usuale per rappresentare i numeri
reali sul calcolatore.
Il risultato prodotto dallalgoritmo dierisce, quindi, in generale dal risultato esatto, cio`e da
quel risultato ideale che si potrebbe ottenere operando con tutte le cifre richieste. Senza unidea,
pi`
u precisamente una maggiorazione della dierenza dei due risultati, il risultato numerico pu`
o
essere del tutto illusorio. Infatti, esso pu`
o dipendere dal numero di cifre usate e/o dallordine in
cui vengono eettuate le operazioni (cio`e dal particolare algoritmo utilizzato).
Nel seguito, per esaminare lorigine degli errori si analizzeranno brevemente alcune tecniche usuali di rappresentazione dei numeri reali su un calcolatore numerico, in modo da denire
linsieme dei cosiddetti numeri macchina. Successivamente si deniranno per tali numeri le operazioni elementari, cio`e le operazioni macchina e si studier`
a il loro comportamento rispetto alla
propagazione degli errori. Si analizzer`
a quindi, pi`
u in generale il comportamento, rispetto agli
errori, di una successione di operazioni macchina, cio`e di un algoritmo. Importanti, in questo
contesto, saranno i concetti di stabilit`
a di un algoritmo e di condizionamento di un problema. A
queste considerazioni premetteremo alcune notazioni e semplici denizioni ed una classicazione
pi`
u generale degli errori che si possono commettere quando si modellizza un problema reale.
1

Per il seguito, chiameremo algoritmo una successione nita di operazioni elementari, quale ad esempio la
successione di istruzioni in un particolare linguaggio di programmazione, che indica in maniera precisa, senza
ambiguit`
a, come calcolare la soluzione (output) di un problema a partire da valori iniziali assegnati (input). La
parola algoritmo `e derivata dal nome del matematico persiano Abu Jafar Mohammed ibn Musa al-Khowarizm
(c. 825; Khowarizm `e attualmente la citt`
a russa di Khiva), autore del libro Kitab al jabr wal-muqabala, da cui il
termine algebra.

43

44

Analisi degli errori

Alcune notazioni
Se a e b sono due numeri reali assegnati
a  b signica a molto pi`
u grande di b; il signicato preciso di molto pi`
u grande dipende
dal contesto.
a b, signica a approssimativamente uguale a b; anche qui il signicato preciso dipende
dal contesto e dalla precisione usata.
Simboli di Landau Consideriamo due funzioni f, g denite su un intervallo I della retta reale
R, con g(x) = 0 per x I.
1. Si dice che f `e di ordine O grande rispetto a g per x che tende a x0 I, quando esiste una
costante C > 0 e un > 0, tali che


 f (x) 


 g(x)  C
per ogni x I con x = x0 e |x x0 | < . Si scrive f (x) = O(g(x)) per x x0 .
2. Si dice che f `e di ordine o piccolo rispetto a g per x che tende a x0 , quando per ogni costante
C > 0 esiste un > 0 tale che


 f (x) 


 g(x)  C
per ogni x I con x = x0 e |x x0 | < . Si scrive f (x) = o(g(x)) per x x0 .
Ad esempio, se f (x) `e una funzione continua sullintervallo [0, 1] con f (0) = 0, allora f (x)= o(1)
per x 0. Se f (x) `e derivabile con derivata f  (x) continua su [0, 1], e quindi tale che |f  (x)| C
per una costante C conveniente, si ha f (x) = O(x) per x 0.
Ricordiamo alcune propriet`a dei simboli di Landau.
(1) f (x) = KO(g(x)) f (x) = O(g(x)), per ogni K R;
(2) f (x) = O(g1 (x)) e g1 (x) = O(g2 (x)) f (x) = O(g2 (x));
(3) f1 (x) = O(g1 (x)), f2 (x) = O(g2 (x)) f1 (x) f2 (x) = O(g1 (x) g2 (x));
(4) f (x) = O(g1 (x) g2 (x)) f (x) = g1 (x) O(g2 (x)).
Analoghe propriet`a valgono per il simbolo o.
Se a
`e un valore approssimato del numero reale a, si denisce
Errore assoluto la quantit`
a a
a.
Errore relativo la quantit`
a (
aa)/a, se a = 0. Usualmente lerrore relativo `e dato in percentuale;
ad esempio, 5% signica che lerrore relativo `e 0.05.
Lerrore pu`
o essere, naturalmente, sia positivo che negativo. In generale, tuttavia, si `e interessati
ad una sua limitazione positiva. La notazione a = a
 indica allora che |
a a|  e  rappresenta
una limitazione dellerrore. Ad esempio, a = 0.7136 0.0013 signica 0.7123 a 0.7149.
Ricordiamo, tuttavia, che nella valutazione statistica degli errori si utilizza la notazione a = a

per indicare lerrore standard o altre analoghe misure della deviazione dal valore medio.
analisi numerica

c
V.
Comincioli

2.1 Sorgenti di errore

45

Nel caso in cui a rappresenti un vettore o una matrice, come misura dellerrore assoluto, e rispettivamente relativo, si pu`o assumere 
a a, e rispettivamente 
a a/a, ove   rappresenta
una opportuna norma di vettore o di matrice.

Se la limitazione dellerrore in a
`e inferiore a 12 10t , con t intero ssato, allora si dice che a
ha t cifre decimali corrette. Ad esempio, 0.001234 0.000004 ha cinque cifre decimali corrette,
mentre 0.001234 0.000006 ne ha quattro. Nel primo caso si dice anche che la stima ha tre cifre
signicative (osserviamo che gli zeri iniziali non sono contati), mentre nel secondo caso si hanno
due cifre signicative.
Il numero delle cifre corrette d`
a una idea della grandezza dellerrore assoluto, mentre il numero
delle cifre signicative fornisce una idea della grandezza dellerrore relativo.

2.1

Sorgenti di errore

I risultati numerici possono essere inuenzati da diversi tipi di errori . Pu`


o essere di interesse
una loro classicazione schematica, anche allo scopo di individuare quali di essi sono di maggior
interesse per il seguito.
1. Semplicazioni introdotte nel modello Sono gli errori dovuti al fatto che, ad esempio, il
modello `e supposto di tipo lineare, oppure si suppongono trascurabili alcune grandezze siche.
In questo caso si parla di adeguatezza del modello.
2. Errori nei dati I dati di un problema sono il risultato, in generale, di misurazioni, che
possono essere inuenzate da errori sistematici e/o da errori random. Gli errori sistematici sono
gli errori che dipendono dalla sensibilit`a dello strumento di misurazione. Gli errori random, invece,
sono dovuti al vericarsi in concomitanza di eventi imprevedibili.
La conoscenza o, pi`
u realisticamente, una stima degli errori nei dati `e importante per il calcolo
numerico. Da essa, infatti dipende, come vedremo, la scelta della precisione e dei test di arresto
da utilizzare nella implementazione degli algoritmi.
Mentre la stima degli errori sistematici non `e di competenza specica dellanalisi numerica,
la stima degli errori random pu`
o essere ottenuta mediante opportune tecniche statistiche, in
particolare mediante il metodo dei minimi quadrati.
3. Errori di arrotondamento nei dati e nei calcoli Sono gli errori introdotti nella rappresentazione dei numeri sul calcolatore. Essi sono loggetto principale di studio del presente
capitolo.
4. Errori di troncamento Sono gli errori che si introducono quando un procedimento innito
`e approssimato mediante un procedimento nito. Per esempio, quando una derivata viene approssimata mediante un rapporto incrementale o un integrale mediante una formula di quadratura.
Lo studio di questo tipo di errori costituir`a loggetto principale dei capitoli successivi. Nellelenco
precedente non sono stati incluse altre ovvie possibili cause di errore: ad esempio, gli errori umani
di disattenzione in calcoli manuali, di introduzione dati, nonche gli errori che uno strumento di
calcolo, software o hardware, pu`
o commettere.
analisi numerica

c
V.
Comincioli

46

2.2

Analisi degli errori

Rappresentazione dei numeri sul calcolatore

In questo paragrafo analizzeremo alcune tecniche di rappresentazione dei numeri reali su un calcolatore. Si tratta di unanalisi schematica, ma suciente per evidenziare gli aspetti essenziali di
interesse per il calcolo numerico.

2.2.1

Rappresentazione dei numeri in dierenti basi

In notazione posizionale a base 10 un simbolo come 67041 rappresenta il seguente numero intero
67041 = 6 104 + 7 103 + 0 102 + 4 101 + 1 100
I simboli 0 1 2 3 4 5 6 7 8 9 sono le cifre arabiche o decimali . Pi`
u in generale, nel sistema decimale
un numero intero positivo N viene espresso nella seguente forma
N = dn 10n + dn1 10n1 + + d0 100
e rappresentato con il simbolo
N = dn dn1 d1 d0
ove le cifre dn , dn1 , , d1 , d0 sono numeri interi compresi tra zero e nove.
Non vi `e una ragione intrinseca per usare la base 10. In realt`
a, in altre civilt`
a si `e fatto uso
di basi diverse, ad esempio le basi 12, 20, 60. Nei calcolatori numerici, nei quali le cifre vengono
rappresentate mediante stati sici, `e conveniente rappresentare i numeri in un sistema a base 2,
detto sistema binario 2 , nel quale le cifre si riducono ai due simboli 0, 1, detti anche bit (= binary
digit).
In un sistema avente come base un generico intero > 1 si ha la rappresentazione
N = (dn dn1 d1 d0 ) = dn n + dn1 n1 + + d1 1 + d0 0

(2.1)

u piccolo di 10, per


ove di , dette cifre (o digit), sono interi compresi tra 0 e 1. Se `e pi`
indicare le di si usano ancora le cifre decimali. In caso contrario, si devono introdurre ulteriori
simboli; ad esempio, in base 16 le cifre sono 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F e sono dette
` interessante osservare che se `e una potenza n-ma di 2, per rappresentare le
cifre esadecimali. E
cifre in tale base bastano n bits; ad esempio, per = 24 le quaterne (0000)2 , (0001)2 , (0010)2 , . . .,
(1111)2 corrispondono alle cifre esadecimali. Questo permette un immediato passaggio dalla base
2 alla base 2n .
La scelta di una particolare base `e legata, in particolare, allo strumento di calcolo, tenendo
conto del fatto che pi`
u piccola `e la base e pi`
u lunga risulta la stringa di cifre per rappresentare
lo stesso numero. Al contrario, il numero di cifre necessarie `e pi`
u piccolo quanto pi`
u `e grande la
base. Per un esempio illustrativo si veda la Tabella 2.1.
2
La notazione in base 2 pare essere stata usata per la prima volta nel 1605 da Harriot; tuttavia, la data di
origine della numerazione binaria `e comunemente fatta risalire allanno 1703 nel quale Leibnitz pubblic`
o un lavoro
completo sullaritmetica in base 2. Lutilizzo di una base 12 fu suggerito da Pascal (1658). La notazione posizionale
oggi utilizzata nella rappresentazione dei numeri `e fatta risalire ai babilonesi, che usavano la base 60, ancora oggi
utilizzata nelle misure del tempo e degli angoli. Lintroduzione in Europa della notazione posizionale in base 10
`e accreditata agli arabi (intorno agli anni 1000), che perfezionarono una notazione gi`
a diusa in India. La sua
diusione `e merito particolare di Leonardo Pisano (detto Fibonacci) con il suo Liber Abaci (1202).

analisi numerica

c
V.
Comincioli

2.2 Rappresentazione dei numeri sul calcolatore

base
2
4
8

100011111
10133
437

47

base
12
16
32

1BB
11F
8V

Tabella 2.1 Rappresentazione in dierenti basi del numero (287)10 .


Fissato ora un numero intero maggiore di 1, rappresentiamo nella base un numero reale
qualunque x.
Ricordiamo il seguente importante risultato.
Teorema 2.1 Dato un intero > 1, un numero reale x diverso dallo zero pu`
o essere espresso in
forma univoca nella seguente forma
x = sign(x)(d1 1 + d2 2 + d3 3 + ) p = sign(x)m p

(2.2)

ove sign(x) = 1 se x > 0, sign(x) = 1 se x < 0, p `e un numero intero e le cifre d1 , d2 , d3 , . . .


vericano le condizioni
(i) 0 di 1
(ii) d1 = 0 e le di non sono tutte uguali a 1 a partire da un indice in poi.
Il numero m = d1 1 + d2 2 + d3 3 + viene detto comunemente la mantissa di x e p la
parte esponente; il numero p `e detto anche caratteristica di x. Grazie al fatto che d1 = 0, si ha
che il numero reale m soddisfa alla seguente condizione
1
m<1

(2.3)

Utilizzando la notazione posizionale, un numero x R, con x = 0, pu`


o, allora, essere rappresentato
nella seguente forma
x = (.d1 d2 d3 . . .) p
(2.4)
che `e anche chiamata rappresentazione normalizzata. La rappresentazione pi`
u usuale di tipo misto
corrisponde a porre x = (0.00 . . . 0d1 d2 d3 . . .) , se p 0 e x = (d1 d2 d3 . . . dp .dp+1 dp+2 . . .) , se
p > 0. Il numero zero `e rappresentato dal simbolo 0.
+
0
1

0
0
1

1
1
10

0
1

0
0
0

1
0
1

Tabella 2.2 Addizione e moltiplicazione in base 2.


Per le operazioni aritmetiche sui numeri rappresentati in una base > 1, valgono le stesse regole
e propriet`
a formali note per laritmetica in base 10; naturalmente, si devono usare nuove tavole
delladdizione e della moltiplicazione. In Tabella 2.2 sono riportate come esempio quelle relative
alla base = 2.
analisi numerica

c
V.
Comincioli

48

Analisi degli errori

2.2.2

Conversione della rappresentazione di un numero reale

La conversione di un numero in base alla forma decimale pu`


o essere ottenuta direttamente
dallespressione (2.2) operando in aritmetica decimale. La procedura `e illustrata dal seguente
esempio
(257)8 = 2 82 + 5 8 + 7 = (2 8 + 5) 8 + 7 = 17510
Sottolineiamo il modo nidicato (nested) con il quale si `e calcolato il valore del polinomio di
secondo grado per il valore 8 della variabile indipendente; con tale procedura, nota nel caso di un
generico polinomio come algoritmo di Horner-Runi 3 , sono richieste solo 2 moltiplicazioni.
In modo analogo si procede per un numero frazionario. Si esamini il seguente esempio.
(.257)8 = 2 81 + 5 82 + 7 83 =


7
( + 5)/8 + 2 /8 = (5.875/8 + 2)/8 = 2.734375/8 = (0.341796875)10
8
Loperazione inversa, cio`e il passaggio dalla rappresentazione decimale alla rappresentazione in
una generica base > 1 `e illustrata nei seguenti esempi.
Esempio 2.1 Fornire la rappresentazione in base 16 e in base 2 del numero a1 = (0.1)10 .
Il risultato pu`
o essere ottenuto facilmente ricordando che
0.1 =

24i + 24i1

i=1

Procedendo comunque in maniera generale, si ha che la rappresentazione in base 16 del numero a1 ha la


seguente forma
d2
d1
d3
+ 2 + 3 +
a1 = (0.1)10 =
16 16
16
ove 0 di < 16. Moltiplicando ambo i membri della relazione precedente per 16, si ottiene
16a1 = (1.6)10 = d1 +
da cui d1 = 1 e
a2 = (0.6)10 =

d3
d2
+
+
16 162

d3
d2
d4
+
+
+
16 162 163

Iterando la procedura, si ha
d4
d3
+ 2 +
16 16
e quindi d2 = 9 e a3 = (0.6)10 e il risultato diventa periodico. Pertanto (0.1)10 = (0.19999 )16 . Poiche
(1)16 = (0001)2 e (9)16 = (1001)2 , si avr`a in denitiva
16a2 = (9.6)10 = d2 +

(0.1)10 = (0.19999 )16 = (0.0001 1001 1001 )2


Lesempio evidenzia il fatto importante che un numero reale pu`o avere una rappresentazione nita in una
particolare base e innita in altre.
3

Il metodo `e stato introdotto in maniera indipendente da P. Runi (1804) e da W. G. Horner (1819) [208];
in eetti il metodo era noto cinque secoli prima ai cinesi (Chin Chiu-Shao: Su-shu Chiu-chang (Nove sezioni di
matematica, 1247)), che lo indicarono come metodo celestiale.
analisi numerica

c
V.
Comincioli

2.2 Rappresentazione dei numeri sul calcolatore

49

Esempio 2.2 Fornire la rappresentazione in base 8 del numero (375)10 .

Partendo dalla uguaglianza (375)10 = d0 + d1 8 + d2 82 + e dividendo ambo i membri per 8, si ha


46 +

d0
7
=
+ d1 + d2 8 +
8
8

Uguagliando le parti intere, e rispettivamente le parti frazionarie, si ottiene d0 = 7 e


(46)10 = d1 + d2 8 + d3 82 +
Dividendo ancora per 8 si ottiene
5+

6
d1
=
+ d2 + d3 8 + . . .
8
8

da cui d1 = 6 e 5 = d2 + d3 8 + d4 82 +
Inne, dividendo per 8, si ha
d2
5
+ d3 + d4 8 +
0+ =
8
8
e quindi d2 = 5 e d3 = d4 = = 0. Pertanto (375)10 = (d2 d1 d0 )8 = (567)8

Le procedure descritte negli esempi precedenti corrispondono ai seguenti algoritmi generali.


Se x `e un numero reale con 0 < x < 1 e rappresentato nel sistema decimale, le prime k cifre
di nella rappresentazione in una base > 1 possono essere calcolate iterativamente nel seguente
modo, ove Int(x) signica la parte intera di x.
Algoritmo 1.1 Calcolo delle prime k cifre nella rappresentazione in una base > 1 di un
numero x, con 0 < x < 1, rappresentato in base 10 .
p = 1; (determinazione dellesponente)
while Int(x) = 0 do
x = x;
p=p1
end;
i = 0; (determinazione delle cifre di )
repeat
i = i + 1;
di = Int(x);
x = (x di )
until i = k;
La rappresentazione in base di un numero intero positivo x, rappresentato in base decimale,
pu`
o essere ottenuta col seguente algoritmo, ove mod(x, ) indica il resto della divisione fra gli
interi x e .
Algoritmo 1.2
in base 10 .

Rappresentazione in base > 1 di un numero intero x positivo rappresentato

c0 = x ; i = 1
repeat
i =i+1
analisi numerica

c
V.
Comincioli

50

Analisi degli errori

di = mod(ci , )
ci+1 = Int(ci /)
until ci+1 = 0
k=i
Si ha quindi: x = dk k + dk1 k1 + + d1 + d0
In denitiva, la rappresentazione in base di un numero reale positivo x pu`
o essere fatta nel
modo seguente. Si pone x = x1 + x2 , dove x1 = Int(x), x2 = x x1 < 1. La rappresentazione
si ottiene, allora, applicando ad x2 lAlgoritmo 1.1 e ad x1 lAlgoritmo 1.2. Considerando ad
esempio, il numero x = 238.75 si ha x1 = 238, x2 = 0.75, da cui x1 = (EE)16 , x2 = (0.C)16 e,
quindi 238.75 = (EE.C)16 .
Conversione di un numero da base 10 a base qualunque
Calcolo delle prime k cifre nella rappresentazione in base 2 di un numero x, con 0 < x < 1,
rappresentato in base 10.
function [p,d]=bas10to2(x,k)
% in forma normalizzata: d=mantissa; p=caratteristica
% =2^p(d(1)*2^(-1)+d(2)*2^(-2)....)
% esempio: x=0.1, k=12
p=1;
while fix(x)==0
x=2*x;
p=p-1;
end
i=0;
while i<=k
i=i+1;
d(i)=fix(x);
x=2*(x-d(i));
end
d=num2str(d);

Rappresentazione in base B > 1 di un numero intero N positivo rappresentato in base 10.


function a=convint(N,B)
% funzione che converte un numero da base 10 a base qualunque
% a: vettore contenente le cifre del numero convertito
%N: numero intero da convertire
% B: base in cui si deve convertire
k=0;
while (N~=0) & (k<=100)
k=k+1;
a(k)=rem(N,B);
N=fix(N/B);
end
a=fliplr(a);
a=num2str(a);

 Esercizio 2.1 Rappresentare in base 10 i seguenti numeri (11101110)2, (745)8 , (E7)16 , (0.C8)16 .

analisi numerica

c
V.
Comincioli

2.2 Rappresentazione dei numeri sul calcolatore

51

 Esercizio 2.2 Eseguire le operazioni elementari sulle seguenti coppie di numeri


(1011100)2, (10001010)2
(1F A)16 , (43E0)16
vericando lesattezza delle operazioni dopo aver fornito la rappresentazione in base 10 dei numeri.

 Esercizio 2.3 Dare la rappresentazione in base 2, 8, 16 dei seguenti numeri: 487., 0.97, 2.654,
543.625.
Convertire la rappresentazione (C3C.35)16 di un numero in base 16 nella sua rappresentazione in base 8.
 Esercizio 2.4 Siano t2 e t10 , rispettivamente la lunghezza della mantissa nella rappresentazione
binaria e decimale di un intero n. Mostrare che
Int(t10 / log10 2) 3 t2 Int(t10 / log10 2) + 1

 Esercizio 2.5 Scrivere e testare un sottoprogramma per convertire interi nella forma ottale (base 8) e
binaria e un sottoprogramma per convertire frazioni decimali in forma ottale e binaria. Usare i due sottoprogrammi per la costruzione di un programma che legga numeri decimali e stampi la loro rappresentazione
ottale e binaria.

2.2.3

Numeri macchina; sistema oating-point

A causa della sua capacit`a nita, un calcolatore non `e in grado di rappresentare tutto linsieme
dei numeri reali. Si pone pertanto il problema di denire, per ogni x rappresentato nella forma
(2.2), una sua rappresentazione approssimata nel calcolatore. Si tratta, in sostanza, di un fatto
tecnico, ma con importanti implicazioni nel calcolo numerico.
A tale scopo possono essere utilizzate dierenti idee; nel seguito analizzeremo, in particolare,
un metodo divenuto ormai usuale per il calcolo scientico e noto come sistema oating-point o virgola mobile. Esso, in forma schematica, permette la rappresentazione di un ampio intervallo della
retta reale con una distribuzione uniforme degli errori relativi. Lampiezza eettiva dellintervallo
dipende dal particolare calcolatore su cui la procedura `e implementata4 .
Naturalmente, limplementazione reale su singoli calcolatori del sistema oating-point pu`
o
dierire nei dettagli da quella ideale qui presentata. La nostra analisi ha il solo scopo di evidenziare
gli aspetti che sono importanti per le implicazioni nel calcolo numerico.
Denizione 2.1 Si denisce insieme dei numeri macchina (oating-point) con t cifre signicative, base e range (L, U ), linsieme dei numeri reali denito nel modo seguente
t



p
F(, t, L, U ) = {0}
x R = sign(x)
di i

(2.5)

i=1
4

La possibilit`
a di rappresentare un ampio intervallo della retta reale `e importante nelle applicazioni scientiche,
in quanto le costanti siche possono dierire per vari ordini di grandezza; ad esempio, per la massa di un elettrone
a della luce c 2.998 1010 cm/sec.
si ha m0 9.11 1028 g, e per la velocit`
analisi numerica

c
V.
Comincioli

52

Analisi degli errori

ove t, sono interi positivi con 2. Si ha inoltre


0 di 1,
d1 = 0,

i = 1, 2, . . .

(2.6)

LpU

(2.7)

Usualmente U `e positivo e L negativo.


In rappresentazione posizionale un numero macchina x = 0 viene denotato con
x = .d1 d2 . . . dt p
La maggior parte dei calcolatori ha la possibilit`a di operare con lunghezze diverse di t, a cui
corrispondono, ad esempio, la semplice e la doppia precisione.
` importante osservare che linsieme F non `e un insieme continuo e neppure innito. In eetti,
E
lasciando come esercizio la dimostrazione, si ha che la cardinalit`a di F `e data dal numero 2(
1) t1 (U L + 1) + 1.
Osserviamo, inoltre, che i numeri dellinsieme F sono ugualmente spaziati tra le successive
potenze di , ma non su tutto lintervallo. Per vedere meglio questo fatto importante, analizziamo
lesempio illustrato in Figura 2.1, che corrisponde ai seguenti dati = 2, t = 3, L = 1, U = 2.

Figura 2.1 La parte positiva del sistema oating point relativo a = 2, t = 3, L = 1, U = 2.


Si tratta di 33 numeri, compreso lo zero. Sono tutti i numeri che possono essere rappresentati
u piccolo numero positivo
nella forma 0.1d2 d3 2p , con di cifre binarie (cfr. Tabella 2.3) Il pi`
.100(1)

.101(1)

.110(1)

.111(1)

1/4

5/16

6/16

7/16

.100(0)

.101(0)

.110(0)

.111(0)

1/2

5/8

6/8

7/8

.100(1)

.101(1)

.110(1)

.111(1)

5/4

6/4

7/4

.100(2)

.101(2)

.110(2)

.111(2)

5/2

6/2

7/2

Tabella 2.3
u grande `e dato da 0.111 22 = 7/2. Con tale
dellinsieme `e dato da 0.100 21 = 1/4, mentre il pi`
sistema si possono pertanto rappresentare numeri reali positivi compresi nellintervallo [1/4, 7/2].
Pi`
u in generale, per un sistema oating point generico si possono rappresentare i numeri reali
positivi compresi nellintervallo [ 1 L , (1 t ) U ]. Naturalmente per i numeri negativi si
ragiona in modo simmetrico.
analisi numerica

c
V.
Comincioli

2.2 Rappresentazione dei numeri sul calcolatore

53

Nella Figura 2.2 `e schematizzata una possibile rappresentazione interna ad un calcolatore


dellinsieme dei numeri macchina, caratterizzato da = 2, t = 24, U L + 1 = 256. Il primo
gruppo di otto bit (byte) determina, nella rappresentazione in base 2, il valore della caratteristica;
per essa si utilizza, in generale la rappresentazione in traslazione, in modo che la congurazione
nulla corrisponda allesponente L. Il bit successivo determina il segno (ad esempio positivo se il
bit `e 0, negativo se il bit `e 1). Il gruppo successivo di 23 bit contiene le cifre d2 , d3 , . . . , d24 della
mantissa; nella rappresentazione normalizzata in base 2, si ha d1 = 1 e quindi non `e necessario
memorizzare il primo bit della mantissa. La lunghezza della congurazione considerata `e di 32
bit (4 byte). Per la precisione doppia tale lunghezza diventa di 8 bytes.
Nelle macchine con aritmetica a base 16 linsieme dei numeri macchina `e dato da F(16, 6, 64, 63)
per la precisione semplice e F(16, 14, 64, 63) per la precisione doppia. Tenendo conto che ogni
cifra `e rappresentata da mezzo byte, si pu`
o vedere che, anche in questo caso, occorrono 32 bit per
rappresentare un numero macchina, mentre in precisione doppia occorrono 64 bits.

Figura 2.2 Rappresentazione di un numero macchina.


Vediamo, ora, come rappresentare un numero reale positivo x, dato nella forma (2.2) in un
sistema di numeri macchina F(, t, L, U ). Si possono presentare i seguenti casi
1. Il numero x `e tale che L p U e di = 0 per i > t; allora x `e un numero macchina ed `e
rappresentato esattamente.
2. La caratteristica p non appartiene allintervallo [L, U ]. Il numero non pu`
o essere rappresentato
esattamente. Se p < L, come ad esempio 1/8 nellinsieme di Figura 2.1, si dice che si verica
un underow ; solitamente si assume come valore approssimato del numero x il numero zero.
Alcuni compilatori, tuttavia, in presenza di questa situazione danno un avvertimento (warning); in particolari situazioni, infatti, lintroduzione di questi errori pu`
o portare a situazioni
inaccettabili.
Se p > U si verica un overow e solitamente non si eettua nessuna approssimazione, ma il
sistema di calcolo d`
a un avvertimento pi`
u drastico, come ad esempio, larresto del calcolo.
3. La caratteristica p appartiene allintervallo [L, U ], ma le cifre di , per i > t, non sono tutte nulle.
In questo caso si pone il problema di scegliere un suo rappresentante in F. Tale operazione
viene indicata comunemente come operazione di arrotondamento (rounding), anche se in realt`
a
possono essere utilizzate tecniche di tipo diverso.
Osservazione 2.1 (Lo standard 754 IEEE per i numeri Floating Point)
Nel 1980, i principali costruttori di elaboratori elettronici, producevano calcolatori che utilizzavano i
numeri oat, ognuno con un proprio formato numerico e con proprie convenzioni di calcolo; tra questi,
ricordiamo lANSI Fortran (5 bytes), il formato BCD (esadecimale, 6 Bytes). La necessita di dover scambiare dati tra elaboratori diversi, insieme alla necessit`
a di denire uno standard di calcolo per il Floating
analisi numerica

c
V.
Comincioli

54

Analisi degli errori

Point unico e soprattutto esente da errori, port`


o allistituzione da parte di IEEE di una commissione che
studiasse una piattaforma di riferimento comune valida per i costruttori di hardware. Nel 1985 divenne
operativo lo Standard 754 IEEE per i numeri in virgola mobile, e i maggiori costruttori tra cui Intel,
Motorola, SPARC e MIPS adottarono questo standard per i loro processori matematici.
Nel seguito ci limiteremo a dare le nozioni di base, rinviando ad esempio a link 12, [326] per un
approfondimento.
Lo Standard denisce quattro formati numerici, divisi in due gruppi, basic e extended, ognuno dei
quali con due lunghezze, single e double.
Lorganizzazione del formato single precision basic `e mostrato nella Figura 2.3.

f
8

31

Figura 2.3 Basic format, single precision.


I componenti sono il segno (un bit), lesponente e (otto bit), e la frazione f (23 bit); in totale 32 bit.
Il valore v di un numero oating point x `e
1. Se e = 255 e f = 0, allora v `e NaN (Not-a-Number).
2. Se e = 255 e f = 0, allora v = (1) .
3. Se 0 < e < 255, allora v = (1) (1.f ) 2e127 .
4. Se e = 0 e f = 0, allora v = (1) (0.f ) 2126 (unnormalized, denormalized).
5. Se e = 0 e f = 0, allora v = (1) 0 (zero).
Il caso normale `e 3.
Ad esempio, i numeri 1, 4.125, e -0.09375 = -3/32 sono memorizzati nel seguente modo
0 | 0 1 1 1 1 1 1 1 | 0 0 0 0 0 0 0 . . . .
0 | 1 0 0 0 0 0 0 1 | 0 0 0 0 1 0 0 . . . .
1 | 0 1 1 1 1 0 1 1 | 1 0 0 0 0 0 0 . . . .

0
0
0

Il pi`
u grande e il pi`
u piccolo numero positivo rappresentabili sono rispettivamente xmax = 2127 (2
223 ) 3.40 1038 e xmin 2126 1.18 1038 e la cardinalit`
a (numeri normalizzati) `e data da 224 254
4.26 109
Una ragione per lintroduzione dellentit`
a NaN `e di rendere pi`
u agevole loperazione di debugging.5
Quando viene eseguita una operazione non valida (ad esempio 0/0), o quando `e utilizzata una variabile
non inizializzata, il risultato dovrebbe essere un NaN, che contiene una informazione. In molti casi, non `e
necessario terminare lesecuzione di un programma quando si esegue una operazione non valida.
Per lungo tempo era pratica comune porre il risultato uguale a zero quando loperazione forniva un
underow. Lo standard IEEE denisce lopzione gradual underow (caso 4).
I dettagli del formato extended single precision (utilizzata per limplementazione delle operazioni) sono
lasciati al costruttore, con il vincolo minimale che vi sia un bit segno , almeno 32 bit nella frazione e un
esponente che deve soddisfare
L e U, L 1023, U 1024
5

the term bug originated in 1947 at Harward during he days of the Mark computer. The project was proposed and
run by strong-willed Howard Aiken who continually emphasized reliability and speed. The electro-mechanical Mark
II computer as experiencing inexplicable malfunctions. Finally, a researcher opened the cabinet and there, lodged
between two relay contacts, was a dead moth. Grace Hopper, who later became instrumental in the development of
COBOL, retrieved the moth and pasted in her logbook, alongside a notation about the bug that caused the trouble.
analisi numerica

c
V.
Comincioli

2.2 Rappresentazione dei numeri sul calcolatore

55

Il formato basic double precision `e denito in maniera analoga al formato single precision. Il segno `e
un bit, lesponente e 11 bit, e la frazione f `e 52 bit, in totale 64 bit. Si ha
xmax = (2 252 ) 21024 1.80 10308

xmin = 21022 2.23 10308

e la cardinalit`
a (numeri normalizzati) `e data da 253 2046 1.84 1019 .
Le implementazioni dello standard IEEE forniscono le operazioni di addizione, sottrazione, moltiplicazione, divisione e radice quadrata, e le conversioni binario-decimale. Eccetto che per le conversioni, tutte le
operazioni forniscono un risultato che `e uguale al numero arrotondato del risultato corretto (ossia, ottenuto
con precisione innita).

2.2.4

Operazione di arrotondamento

Sia x un numero reale positivo dato nella forma (2.2), diverso dallo zero e tale che p [L, U ].
Denotiamo con (x) il numero macchina, cio`e (x) F, che si ottiene in uno dei modi seguenti
Troncamento: (x) = tronc(x) = p

p
Arrotondamento: (x) = tronc

t
i
i=1 di
t+1
i
i=1 di

1
+ t
2

La denizione si adatta in maniera ovvia quando x `e negativo.


Osserviamo che, se dt+1 < /2 allora le due operazioni danno i medesimi risultati, altrimenti essi dieriscono di pt . Nelloperazione di arrotondamento si pu`o vericare un overow ;
nellesempio di Figura 2.1, si ha ad esempio (15/4) = 4.
Sottolineiamo il fatto che nella sostituzione di x con (x) si ha lorigine degli errori di ar` importante, quindi, stabilire una stima, cio`e una maggiorazione della quantit`
rotondamento. E
a
x (x). In questa direzione abbiamo il seguente risultato.
Proposizione 2.1 Sia x un numero reale rappresentato in base



di i p , d1 = 0, p [L, U ]
x=
i=1

Allora, se non si verica una situazione di overow, si ha la seguente maggiorazione




 (x) x 

 k 1t


x

(2.8)

ove si ha k = 1 nel caso del troncamento (chopping)e k = 1/2 nel caso di arrotondamento
(rounding).
Dimostrazione. Considerando ad esempio il caso dellarrotondamento, si ha
|(x) x|

1 t p

2

Ricordando che, dal fatto che d1 =


 0, si ha m 1 , si ottiene


1 t p
1 t
 (x) x 

 2 2 = 1 1t


x
|m| p
1
2
analisi numerica

c
V.
Comincioli

56

Analisi degli errori

Si osservi che nella situazione di underow lerrore relativo, che `e del 100% poiche (x) = 0, non
soddisfa alla maggiorazione (2.8).
La quantit`
a eps = k 1t `e detta precisione macchina nel ssato sistema oating point. La
sua importanza numerica `e data dalla seguente caratterizzazione: eps `e il pi`
u piccolo numero
macchina positivo tale che
(1 + eps) > 1
(2.9)
Se, ad esempio, = 10, t = 8, si ha, nel caso di arrotondamento, eps = 5 108 , da cui
x = 1 + eps = 1.00000005 = 0.100000005 101
con x
/ F; pertanto
(x) = 1.0000001 > 1
Al contrario, (1.00000004) = 1.
In sostanza, su un calcolatore che utilizza una particolare rappresentazione oating point, non
ha senso cercare approssimazioni di numeri con precisione relativa inferiore alla corrispondente
precisione macchina eps.
A partire dalla propriet`a (2.9), `e possibile calcolare eps attraverso software.
Osserviamo, inne, che un modo equivalente, e pi`
u utile nelle considerazioni che seguiranno,
di esprimere (2.8) `e il seguente
(x) = x(1 + ),

con || eps

(2.10)

% alcuni risultati relativi relativi al sistema floating point


close all;clc
% p = pi`
u piccolo intero positivo tale che 1+1/2^p = 1.
% p=53; 2^(-53)=u (unit roundoff); 2^(-52)=eps (machine precision, epsilon)
x=1; p=0; y=1; z=x+y;
while x~=z
y=y/2;
p=p+1;
z=x+y;
end
disp(sprintf(p = %2.0f pi`
u piccolo intero positivo tale che 1+1/2^p = 1.,p))

>> 2^(-52)
ans = 2.2204e-016
>> 2^(-53)
ans = 1.1102e-016
--------1==eps+1
ans = 0
>> 1==eps1+1
ans =1
a=1+(eps1+1.e-31);
a-1
%=eps per larrotondamento
%= 0 se eps1+1.e-32
analisi numerica

c
V.
Comincioli

2.2 Rappresentazione dei numeri sul calcolatore

57

Figura 2.4 Unit roundo e machine precision.

% q = pi`
u piccolo intero postivo tale che 1/2^q = 0. %q=1075
x=1; q=0;
while x>0
x=x/2;
q=q+1;
end;
disp(sprintf(q = %2.0f is the smallest positive integer so 1/2^q = 0.,q))
% r = smallest positive integer so 2^r = inf.
x=1; r=0;
while x~=inf
x=2*x;
r=r+1;
end
disp(sprintf(r = %4.0f is the smallest positive integer so 2^r = inf.,r))

2.2.5

Aritmetica in virgola mobile

Sullinsieme dei numeri macchina, che rappresenta una approssimazione dellinsieme dei numeri
reali, si devono ridenire le operazioni aritmetiche. Si tratta, cio`e, di introdurre una aritmetica
di macchina.
Il risultato di unoperazione aritmetica, anche nel caso in cui gli operandi sono numeri macchina, pu`
o non essere un numero macchina per due motivi: si ha una situazione di underow o
di overow, oppure il risultato ha un numero di cifre superiore alla precisione t. Per il seguito
consideriamo in particolare questa seconda eventualit`a.
Siano, pertanto, x, y due numeri appartenenti ad un particolare sistema oating point F(, t, L, U )
e il risultato di unoperazione aritmetica con operandi x, y sia tale che p [L, U ]. Introduciamo,
allora le seguenti denizioni di operazione macchina o operazioni oating point
x y = (x + y),
analisi numerica

x  y = (x y),

x  y = (x y),

x  y = (x/y)
c
V.
Comincioli

58

Analisi degli errori

Analogamente si procede per la denizione di altre operazioni, che possono essere considerate
elementari, come, ad esempio, loperazione di estrazione di radice quadrata, il calcolo delle funzioni trigonometriche, del logaritmo. La denizione data di operazione macchina `e naturalmente
semplicata e pu`
o non corrispondere a delle situazioni reali, solitamente pi`
u sosticate, ma essa
`e, tuttavia, suciente per la nostra analisi.
Lerrore relativo, introdotto da una operazione macchina pu`
o essere calcolato utilizzando
la maggiorazione (2.8). Indicando con il simbolo  una qualunque delle operazioni macchina
precedenti e corrispondente alloperazione aritmetica , si ha
x  y = (x y)(1 + )

con

|| eps

(2.11)

La formula (2.11) pu`


o essere riscritta in modi diversi, alcuni dei quali possono suggerire unutile
interpretazione degli errori di arrotondamento. Si consideri, come esempio, la seguente
(x + y) = x(1 + ) + y(1 + )

(2.12)

Lequazione (2.12) dice, in sostanza, che loperazione di somma macchina pu`


o essere interpretata
come la somma aritmetica esatta dei due numeri: x(1 + ), y(1 + ), che rappresentano delle
perturbazioni dei numeri dati x, y.
Losservazione ora fatta rappresenta una prima semplice applicazione di una tecnica pi`
u generale per lo studio della propagazione degli errori di arrotondamento. Per lidea su cui si basa, tale tecnica `e detta analisi allindietro, o backward analysis, e il suo studio verr`
a ripreso
successivamente.
` importante osservare che per le operazioni in virgola mobile gran parte delle propriet`
E
a
dellaritmetica nel campo reale possono non essere pi`
u valide. In particolare, ad esempio si ha
x y = x,

se |y| <

eps
|x|

Inoltre, le operazioni macchina possono non vericare la propriet`


a associativa e la propriet`
a
distributiva.
Analizziamo, come esemplicazione, il seguente calcolo eseguito in aritmetica di macchina
denita da = 10, t = 8.
Esempio 2.3 Dati i numeri macchina
a :=

0.23371258 104

b := 0.33678429 102
c := 0.33677811 102
Si ha
(I) (a b) c = 0.33678452 102  0.33677811 102
= 0.64100000 103
(II) a (b c) = 0.23371258 104 0.61800000 103
= 0.64137126 103
Il risultato esatto `e dato da a + b + c = 0.641371258 103 .
analisi numerica

c
V.
Comincioli

2.2 Rappresentazione dei numeri sul calcolatore

59

Il calcolo (II) fornisce come risultato il numero (a + b + c), cio`e un risultato ottimale nellaritmetica
di macchina ssata. Il risultato ottenuto con (I) ha, invece, soltanto tre cifre signicative esatte, con un
errore relativo 5.78 102. Vediamone le cause.
In ambedue i calcoli si `e eettuata una sottrazione di due numeri con lo stesso segno e vicini, cio`e con
un certo numero di cifre signicative uguali. Nel calcolo (II) ci`o `e avvenuto nelloperazione b c, mentre
in (I) si `e vericato quando il risultato di (a b) `e stato sommato a c. In situazioni di questo genere si
verica una cancellazione, cio`e le cifre comuni spariscono, con conseguente introduzione di quantit`
a spurie 6 ,
ad esempio zeri. Il risultato delloperazione, avendo un numero di cifre inferiore rispetto agli addendi, `e
rappresentabile esattamente, cio`e `e un numero macchina. Tuttavia, mentre nel secondo caso loperazione
`e stata innocua, nel primo ha prodotto un grosso errore.
La dierenza tra i due casi `e la seguente. Nel secondo la cancellazione `e avvenuta tra i numeri di
partenza, che per ipotesi sono supposti non aetti da errore; nel primo caso, invece, uno degli addendi,
precisamente il termine a b `e un valore arrotondato di a + b. Osserviamo, anche, che i due numeri a e b
hanno ordine di grandezza diverso e nella somma il numero a contribuisce soltanto con le prime tre cifre,
mentre le altre vanno perse nellarrotondamento e, quindi, non compaiono pi`
u nel risultato nale. Una
`
situazione di questo tipo, in cui si verica una perdita di cifre, `e anche indicata come eetto smearing. E
praticamente la perdita di cifre che viene amplicata dalloperazione di cancellazione.
Per una panoramica di disastri causati dagli errori di arrotondamento in situazioni reali (the patriot
missile failure, the sinking of the Sleipner A oshore platform, the explosion of the Ariane 5 ), si veda il
link 13.

Figura 2.5 Rappresentazione degli errori relativi corrispondenti al calcolo in doppia precisione (eps
2.2 1016) di e10 mediante due diversi algoritmi.

Dallesempio precedente si ricava, in particolare, il fatto che la propriet`


a associativa pu`
o
non essere valida per loperazione di somma numerica. Inoltre, lesempio ha evidenziato nella
cancellazione una situazione delicata. A questo proposito possiamo riassumere le considerazioni precedenti osservando che loperazione di cancellazione non `e una operazione pericolosa in se
stessa; lo pu`o diventare quando viene eseguita su numeri arrotondati (pi`
u in generale approssimati), in quanto amplica gli errori contenuti nei dati. Sottolineiamo il fatto che, in sostanza, `e
proprio la cancellazione la causa principale di instabilit`
a (cio`e dellamplicazione eccessiva degli
6

Il termine spurio qui sta a signicare mancanza di informazione.

analisi numerica

c
V.
Comincioli

60

Analisi degli errori

errori) negli algoritmi. Come esemplicazione, in Figura 2.5 sono rappresentati gli errori relativi
corrispondenti al calcolo di e10 mediante due dierenti algoritmi basati sullutilizzo del seguente
sviluppo in serie
x2 x3 x4
ex = 1 + x +
+
+
+ ...
2!
3!
4!
Pi`
u precisamente, nellalgoritmo I si pone nello sviluppo precedente x = 10 e si calcolano per
n 0 le seguenti somme parziali
sn = 1 10 +

102
10n
+ (1)n
2!
n!

Nella gura `e rappresentata quindi la funzione n |sn e10 |/e10 . I risultati sono ottenuti in
doppia precisione, corrispondente alla precisione macchina eps 2.2 1016 .
Nellalgoritmo II si pone x = 10 e si approssima il valore e10 , per ogni n 0, nel seguente modo
e10

1
=
e10
1 + 10 +

1
102
2!

+ +

10n
n!

Come si vede, i risultati pi`


u accurati sono quelli ottenuti mediante lalgoritmo II, nel quale non sono presenti cancellazioni. I risultati ottenuti mediante lalgoritmo I si stabilizzano
per n 59 sul valore 4.539992976248485 105 , mentre il valore esatto a 16 cifre `e dato da
4.539992962303128 105 .
x=-10; exx(1)=1; ex(1)=1;
for i=2:60
ex(i)=ex(i-1)*x/(i-1); exx(i)=(-1)^(i-1)*ex(i);
end
for i=1:60
sex(i)=sum(ex(1:i)); sexx(i)=1./(sum(exx(1:i)));
end
ii=1:60;
rex=abs((sex-exp(-10))/exp(-10)); rexx=abs((sexx-exp(-10))/exp(-10));
semilogy(ii,rex,ii,rexx)

Come ulteriore esemplicazione, la Figura 2.6 rappresenta il graco della funzione (x 1)6 ,
calcolata in doppia precisione mediante lo sviluppo x6 6x5 + 15x4 20x3 + 15x2 6x + 1.
Osserviamo che lerrore relativo, ad esempio nel punto x = 1.005, `e del 25%.
--------------% Script File: Zoom
% Plots (x-1)^6 vicini a x=1 a differenti scale
close all
k=0;n=100;
for delta = [.1 .01 .008 .007 .005 .003 ]
x = linspace(1-delta,1+delta,n);
y = x.^6 - 6*x.^5 + 15*x.^4 - 20*x.^3 + 15*x.^2 - 6*x + ones(n,1);
k = k+1;
subplot(2,3,k)
plot(x,y,x,zeros(1,n))
axis([1-delta 1+delta -max(abs(y)) max(abs(y))])
end
analisi numerica

c
V.
Comincioli

2.2 Rappresentazione dei numeri sul calcolatore

61

Figura 2.6 Graco della funzione x6 6x5 + 15x4 20x3 + 15x2 6x + 1 calcolata in doppia precisione.
 Esercizio 2.6 I seguenti numeri sono dati in un calcolatore a base 10 e precisione t = 4
(a) 0.4523 104,

(b) 0.2115 103,

(c) 0.2583 101

Eseguire le seguenti operazioni, e indicare lerrore nel risultato, supponendo di arrotondare


1. (a) + (b) + (c)
2. (a)/(c)

3. (a) (b) (c)


4. (a)(b)/(c)

 Esercizio 2.7 Dare esempi che mettano in evidenza il fatto che la maggior parte delle leggi, valide
per le operazioni elementari nel campo dei numeri reali, possono non essere pi`
u valide nellaritmetica
oating-point.

2.2.6

Propagazione degli errori

Conoscere come gli errori si propagano attraverso i calcoli `e senza dubbio un elemento importante nella valutazione dei risultati ottenuti, ma ugualmente interessante `e il contributo che tale
conoscenza pu`o dare alla pianicazione dei calcoli e degli esperimenti.
Introduciamo le idee e i risultati principali attraverso alcuni esempi particolari.
Se x1 = 4.62 0.02 e x2 = 2.84 0.03, calcoliamo una limitazione dellerrore corrispondente
al calcolo di x1 x2 .
Poiche il massimo valore di x1 `e dato da 4.64 e il minimo valore di x2 `e dato da 2.81, si ha che
il massimo valore di x1 x2 `e dato da 4.64 2.81 = 1.83. Procedendo in maniera analoga, si trova
che il minimo valore di x1 x2 `e dato da 4.60 2.87 = 1.73. Pertanto si ha 1.73 x1 x2 1.83,
da cui
x1 x2 = 1.78 0.05
Pi`
u in generale, se x1 = x
1 1 , x2 = x
2 , si ha
x
1 1 (
x2 + 2 ) x1 x2 x
1 + 1 (
x2 2 )
2 (1 + 2 ) x1 x2 ) x
1 x
2 + (1 + 2 )
x
1 x
1 x
2 (1 + 2 )
x1 x2 = x
analisi numerica

c
V.
Comincioli

62

Analisi degli errori

In maniera del tutto analoga si ottiene


1 + x
2 (1 + 2 )
x1 + x2 = x
Procedendo per induzione, si pu`
o dimostrare il seguente risultato per un numero arbitrario di
termini.
Proposizione 2.2 Nella addizione e nella sottrazione, la limitazione sullerrore assoluto nel
risultato `e la somma delle limitazioni sugli errori negli operandi.
Naturalmente (e fortunatamente!) la limitazione ottenuta con il procedimento precedente pu`o essere una sovrastima dellerrore attuale, in quanto non si `e tenuto conto di eventuali compensazioni
negli errori.
Consideriamo ora la propagazione degli errori relativi nel calcolo di y = x1 x2 , nellipotesi
che xi = 0 e y = 0. Se ri , i = 1, 2 sono gli errori relativi sui dati, possiamo scrivere
x
i = xi (1 + ri )

(2.13)

e quindi
x
1 x
2 = x1 (1 + r1 ) x2 (1 + r2 ) = (x1 x2 ) + x1 r1 x2 r2
da cui

x1
x2
y y
=
r1
r2
y
y
y

ove y = x
1 x
2 . Il risultato ottenuto mostra che gli errori relativi nei dati possono essere
` la situazione della
amplicati nel risultato quando si esegue la dierenza tra due numeri vicini. E
cancellazione che abbiamo esaminato nel paragrafo precedente. Quando `e possibile, `e opportuno,
quindi, riscrivere le formule in maniera da evitare il vericarsi di cancellazioni. Come semplice
illustrazione, si consideri il calcolo della seguente espressione
y = sin(1 + x) sin(1)
per |x|  1. Ad esempio, per x = 0.0123 e operando con arrotondamento alla terza cifra, si
ottiene il valore y = 0.006, mentre il valore esatto arrotondato alla terza cifra `e dato da 0.00658.
Utilizzando note regole trigonometriche, si pu`o riscrivere lespressione data nel seguente modo,
analiticamente equivalente

x
x
cos 1 +
y = sin
2
2
In questa forma si ottiene come risultato numerico il valore 0.00654.
Esaminiamo, inne, la propagazione degli errori relativi nelle operazioni di prodotto e divisione. Dati due numeri x1 , x2 come in (2.13), abbiamo
2 = x1 (1 + r1 )x2 (1 + r2 ) = x1 x2 (1 + r1 )(1 + r2 )
x
1 x
Lerrore relativo nel prodotto `e quindi dato da
(1 + r1 )(1 + r2 ) 1 = r1 + r2 + r1 r2 r1 + r2 ,
analisi numerica

se |r1 |  1, |r2 |  1
c
V.
Comincioli

2.2 Rappresentazione dei numeri sul calcolatore

63

Per esempio, se r1 = 0.02, r2 = 0.01, allora lerrore relativo nel prodotto `e 0.0098 0.01.
Procedendo in maniera analoga, si trova per lerrore relativo nel quoziente x1 /x2
r1 r2
1 + r1
1=
r1 r2 ,
1 + r2
1 + r2

se

|r1 |  1, |r2 |  1

o quindi concludere che 1 + 2 `e


Se i sono le limitazioni per gli errori relativi nei dati xi , si pu`
una limitazione sia di |r1 + r2 | che di |r1 r2 | e pertanto si ha il seguente risultato.
Proposizione 2.3 Nella moltiplicazione e nella divisione la limitazione dellerrore `e maggiorata
dalla somma delle limitazioni degli errori negli operandi.
Vediamo una interessante applicazione del risultato precedente. Supponiamo che per il calcolo
a x1 sia nota con una accuratezza assegnata, mentre x2
dellespressione y = x1 x2 la quantit`
sia da calcolare. Consideriamo, allora, il problema pratico di stimare laccuratezza con la quale
valutare la quantit`
a x2 , tenendo presente che, in generale, maggiore accuratezza signica maggiore
dicolt`
a nel calcolo (ad esempio, la richiesta di strumenti pi`
u precisi, eccetera).
Dal risultato precedente abbiamo la seguente risposta al problema. Dal momento che la
limitazione sullerrore relativo in y `e uguale alla somma delle limitazioni sugli errori relativi in x1
e in x2 , non `e conveniente cercare una valutazione di x2 molto pi`
u accurata di quella di x1 .
I risultati precedenti possono essere generalizzati nel seguente modo. Supponiamo di avere un
generico problema denito da y = (x), con

1 (x1 , . . . , xn )

..
1
: D Rm , (x) =
, C (D)
.
m (x1 , . . . , xn )
i xi (risp. x := x
x)
Sia x
un valore approssimato di x. Indichiamo, allora, con xi := x
). Lerrore relativo relativo a x
i `e
lerrore assoluto relativo a x
i (rispettivamente relativo a x
denito dalla quantit`
a
x
i xi
, se xi = 0
xi :=
xi
Se indichiamo con y := (
x) il risultato corrispondente a x
, sviluppando in serie con arresto ai
termini del primo ordine, si ha
x) i (x)
yi := yi yi = i (

(
xj xj )

j=1

n

i (x)
xj ,
xj

i (x)
xj

(2.14)

i = 1, . . . , m

j=1

Le quantit`
a i (x)/xj indicano come lerrore sulla componente xj del dato si amplica sulla
componente yi del risultato.
Se yi = 0 per i = 1, . . . , m e xj = 0, per j = 1, . . . , n, si ha la seguente formula per gli errori
relativi
n

xj i (x)
y i
x j
(2.15)
i (x) xj
j=1

I numeri (xj /i )i /xj danno una indicazione sulla amplicazione degli errori relativi e sono
chiamati numeri di condizionamento del problema.
analisi numerica

c
V.
Comincioli

64

Analisi degli errori

2.2.7

Condizionamento di un problema

Dato un problema matematico possiamo, in maniera schematica, distinguere, per quanto riguarda
la propagazione degli errori , il comportamento del problema e il comportamento di un particolare
algoritmo utilizzato per risolvere tale problema. Nel primo caso, facendo lipotesi ideale di essere
in grado di risolvere esattamente il problema, si `e interessati a vedere come eventuali perturbazioni sui dati del problema si trasmettono sui risultati. Per caratterizzare un problema rispetto
a questo tipo di comportamento si utilizza comunemente il termine di condizionamento. Pi`
u
precisamente, si parla di problema bencondizionato (o malcondizionato) a seconda che nel particolare contesto le perturbazioni sui dati non inuenzino (o inuenzino) eccessivamente i risultati.
Nel caso di un algoritmo, per indicare il suo comportamento rispetto alla propazione degli errori
`e pi`
u usuale il termine di stabilit`
a . Si dir`
a quindi algoritmo stabile (o instabile) un algoritmo
nel quale la successione delle operazioni non amplica (o amplica) eccessivamente gli errori di
arrotondamento.
La distinzione tra il condizionamento di un problema e la stabilit`
a di un algoritmo `e importante
perche, mentre per un problema bencondizionato `e possibile, in generale, trovare algoritmi stabili,
per un problema malcondizionato pu`
o essere opportuna una sua riformulazione. Molti problemi
importanti nella scienza e nellingegneria sono problemi inversi; ossia, dato un sottoinsieme D di
uno spazio lineare normato F1 , uno spazio lineare normato G e una trasformazione A : G F1 ,
si cerca per un elemento f D di calcolare u G tale che
Au = f
Tale problema `e chiamato ben posto secondo Hadamard (correctement pose )7 quando sono soddisfatte le seguenti tre condizioni
(1) Esistenza. Per ogni f D, esiste un elemento u G tale che Au = f .
(2) Unicit`
a . Vi `e al pi`
u un elemento u tale che tale che Au = f .
(3) Continuit`
a . La trasformazione f u `e continua.
Un problema che non `e ben posto `e detto mal posto.
Esempio 2.4 (Equazione della diusione allindietro) Posto I = (0, 1), consideriamo il problema del
calcolo di u(x, t) che verica lequazione
ut = uxx

per (x, t) I R

con condizioni
ai limiti nulle e condizione iniziale u(, 0) = f . Sia F1 = G = L2 (I). Posto, per ogni t R e

uj (x) = 2 sin(jx), con j intero positivo


2 2
D = Dt = f F1 :
|(f, uj )|2 e2j t <

j=1

Sur les probl`emes aux derivees partielles et leur signication physique, Princeton Univ. Bull. 13, 4952(1902).
Si veda anche J. Hadamard, Lectures on the Cauchy Problem in Linear Partial Dierential Equations, Dover, New
York, 1952.
analisi numerica

c
V.
Comincioli

2.2 Rappresentazione dei numeri sul calcolatore

65

allora per ogni f D


St f =

(f, uj )ej

2 t

uj

j=1

`e la soluzione del problema al tempo t.


2 2
Se t < 0, ossia si cerca di risolvere il problema allindietro, si vede che, poiche St uj = ej t uj per
tutti gli interi j, loperatore St non `e limitato, ossia non esiste una costante M tale che
sup

kSf k M

f D,kf k1

Essendo lineare, loperatore S non `e neppure continuo e il problema della diffusione allindietro `e mal
condizionato.

Illustreremo ora i concetti precedenti mediante alcuni esempi.

2.2.8

Errori, accuratezza, e numero di condizionamento

Per una funzione assegnata f (x), supposta di regolarit`a come richiesta dal contesto e di cui si
vuole calcolare lo zero, il valore calcolato f(x) differisce usualmente dal valore esatto
f(x) = f (x) + e(x)
Lerrore e(x) `e dovuto a differenti sorgenti. Pu`o essere, ad esempio, dovuto agli errori di arrotondamento, nel qual caso esso si comporta in maniera irregolare. Contestualmente, pu`o essere
presente un errore di troncamento nel calcolo della funzione f (x). Anche se lerrore e(x) `e incognito, e quindi non `e possibile prevedere esattamente il suo effetto sul calcolo dello zero della
funzione f (x), `e ugualmente importante studiare il problema dellaccuratezza con la quale `e possibile calcolare lo zero della funzione approssimata, in quanto tale studio pu`o dare utili indicazioni
sugli algoritmi da scegliere nei casi concreti e su quale precisione macchina utilizzare nel calcolo.
Sia x uno zero di f , e supponiamo di conoscere una limitazione  sulla grandezza dellerrore,
ossia
|e(x)| 

 e(x) 
Se x1 `e un punto per il quale f (x1 ) > , allora
1 ) = f (x1 ) + e(x1 ) f (x1 )  > 0
f(x
2 ) `e negativa
1 ) ha lo stesso segno di f (x1 ). In maniera analoga, se f (x2 ) < , allora f(x
ossia, f(x
come f (x2 ), e per il teorema sulle funzioni continue si ha uno zero tra x1 e x2 . Pertanto, quando

|f (x)| >  i valori di f(x)


danno informazioni corrette sulla locazione dello zero della funzione.
Sia [a, b] lintorno pi`
u grande del punto x per il quale
x [a, b] |f (x)| 
Dentro lintervallo [a, b] i valori di f(x) non possono dare informazioni utili per il calcolo della
radice, in quanto essi possono essere positivi, o negativi, o nulli indipendentemente dal segno di
f (x).
Lintervallo [a, b] `e un intervallo di incertezza per lo zero x : si conosce che x `e in esso, ma
non vi `e possibilit`a (con la precisione utilizzata) di diminuire ulteriormente la sua ampiezza. Un
algoritmo `e stabile quando `e in grado di fornire lintervallo [a, b].
analisi numerica

c
V.
Comincioli

66

Analisi degli errori

eps

eps

Figura 2.7 Radice mal condizionata e rispettivamente ben condizionata.


Lampiezza dellintervallo di incertezza dipende dal problema particolare considerato. Quando
`e piccolo, si dice che il problema `e ben condizionato. Un algoritmo stabile risolver`a quindi
accuratamente un problema ben condizionato. Viceversa, quando [a, b] `e grande il problema `e
mal condizionato. Nessun algoritmo, anche stabile, `e in grado di fornire una soluzione accurata
per un problema mal condizionato. Lunica possibilit`
a di aumentare laccuratezza consiste nella
diminuzione dellerrore e(x).
Un numero che quantica il grado di mal condizionamento di un problema `e chiamato un
numero di condizionamento. Cerchiamo tale numero per il problema della ricerca della radice
della funzione f nellipotesi che f  (x ) = 0.
Dallapprossimazione
f (x) f (x ) + f  (x )(x x ) = f  (x )(x x )
si ricava che |f (x)|  quando |f  (x )(x x )|  . Pertanto

|x x |  
|f (x )|


[a, b] x



, x + 

|f (x )|
|f (x )|

Ne segue che il numero 1/|f  (x )| fornisce una indicazione di quanto lerrore `e amplicato nella
soluzione, e fornisce quindi un numero di condizionamento del problema della ricerca della radice:
quando la derivata `e grande il problema `e bencondizionato, mentre `e piccola il problema `e mal
condizionato (per una illustrazione si veda Figura 2.7).
Esempio 2.5 Per il calcolo dei seguenti integrali, per n=1,2,. . .

In =
analisi numerica

xn
dx
x+5
c
V.
Comincioli

2.2 Rappresentazione dei numeri sul calcolatore

67

si pu`
o utilizzare la seguente formula ricorrente
In + 5In1 =

1
n

(2.16)

che risulta dalla seguente osservazione


 1 n1
 1
 1 n
1
x + 5xn1
x
(x + 5)
In + 5In1 =
dx =
dx =
xn1 dx =
x+5
x+5
n
0
0
0
Osservato che il valore di I0 pu`
o essere calcolato analiticamente mediante la formula
 5

1
dx
I0 =
= ln(x + 5) 0 = ln 6 ln 5 0.1823
x
+
5
0
si possono calcolare i successivi valori di In , n = 1, 2, . . . ponendo
In =

1
5In1
n

Osservando che che la formula ricorrente (2.16) pu`o essere riscritta nella seguente forma
In1 =

1
In

5n
5

(2.17)

si ha un algoritmo iterativo alternativo. Naturalmente, non `e possibile conoscere il valore esatto di In per
n 1; possiamo, tuttavia, stimare tale valore per n sucientemente grande osservando che la successione
In tende a zero.
function [VI, VIN]=cinte(n)
%
I0=log(6/5); I0n=0;
VI(1)=I0; VIN(n+1)=I0n;
for i=1:n
Iin=(1/(n-i+1)-I0n)/5;
I1=1/(i)-5*I0;
VI(i+1)=I1;
VIN(n-i+1)=Iin;
I0=I1; I0n=Iin;
end
--------function y=fp1(x,n)
y=x.^n./(x+5);
--------n=26;
[vi vin]=cinte(n);
for i=1:n+1;
Q(i)=quad(@fp1,0,1,[],[],i-1);
end
[vi,vin, Q,Q-vi, Q-vin]
ans =
0.1823
0.0884
0.0580
0.0431
0.0343

0.1823
0.0884
0.0580
0.0431
0.0343

analisi numerica

0.1823
0.0884
0.0580
0.0431
0.0343

0.0000
-0.0000
0.0000
-0.0000
0.0000

0.0000
-0.0000
0.0000
-0.0000
0.0000

c
V.
Comincioli

68

0.0285
0.0243
0.0212
0.0188
0.0169
0.0154
0.0141
0.0130
0.0120
0.0112
0.0105
0.0099
0.0094
0.0087
0.0092
0.0042
0.0264
-0.0866
0.4764
-2.3401
11.7405
-58.6639

Analisi degli errori

0.0285
0.0243
0.0212
0.0188
0.0169
0.0154
0.0141
0.0130
0.0120
0.0112
0.0105
0.0099
0.0093
0.0088
0.0084
0.0080
0.0076
0.0073
0.0070
0.0065
0.0077
0

0.0285
0.0243
0.0212
0.0188
0.0169
0.0154
0.0141
0.0130
0.0120
0.0112
0.0105
0.0099
0.0093
0.0088
0.0084
0.0080
0.0076
0.0073
0.0070
0.0067
0.0065
0.0062

-0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
-0.0000
0.0000
-0.0000
0.0002
-0.0007
0.0038
-0.0188
0.0939
-0.4694
2.3468
-11.7340
58.6701

-0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
-0.0000
0.0000
-0.0000
0.0002
-0.0012
0.0062

La ragione di quanto ottenuto va ricercata nel fatto che lerrore di arrotondamento  commesso nel
calcolo di I0 , che `e dellordine di 5 105 , `e moltiplicato per 5 nel calcolo di I1 , che ha quindi un errore
di 5. Allora lerrore in I2 `e 25, e via di seguito. A questi errori vanno aggiunti naturalmente quelli
commessi nei vari passi del calcolo.

Figura 2.8 Graco della funzione x20 /(x + 5).


Possiamo, pertanto, concludere che lalgoritmo precedente non `e di interesse pratico, almeno per n
grande. Esso rappresenta un esempio di instabilit`
a numerica.
Nel secondo algoritmo lerrore commesso sul valore I26 , assunto uguale a zero viene successivamente
diviso per 5. Si tratta quindi di un algoritmo stabile.

Vediamo ora alcuni esempi di problemi malcondizionati.


Esempio 2.6 Calcolo delle radici dellequazione
(x 2)2 = 106 ,

ossia: P (x, ) := x2 4x + = 0, = 4 106

Per = 4, le radici sono coincidenti: x1 = x2 = 2, mentre per = 4 106 , che corrisponde a una
perturbazione relativa del termine noto di 106 , si hanno le radici 2 103 . La perturbazione relativa nei
dati si `e quindi amplicata nei risultati di un fattore 103 .
analisi numerica

c
V.
Comincioli

2.2 Rappresentazione dei numeri sul calcolatore

69

Esempio 2.7 Risoluzione del sistema lineare




+
+

6x1
61.5x1

61.5x2
630.55x2

=
=

7.259
74.4843

(2.18)

Il sistema (2.18) rappresenta il sistema delle equazioni normali corrispondente al seguente problema dei
minimi quadrati. Pi`
u precisamente, date le coppie di punti
i
f (i )

10.0
1.000

10.1
1.200

10.2
1.25

10.3
1.267

10.4
1.268

10.5
1.274

si cercano x1 , x2 , che minimizzano la funzione


$
%2
f (i ) x1 x2 i
i

Ponendo uguali a zero le derivate rispetto a x1 , x2 , si ottiene il sistema (2.18).


La soluzione esatta `e data da x1 = 3.44952372, x2 = 0.45457142. Supponendo di rappresentare il
sistema in una aritmetica oating-point decimale con t = 4, si ha: (630.55) = 630.6, (74.4843) = 74.48.
La soluzione esatta del sistema cos` perturbato `e la seguente
x1 = 2.218222217, x2 = 0.3344444
Un errore relativo di 104 nei dati ha prodotto un errore relativo dellordine dellunit`
a nei risultati. Sottolineiamo che ci`o `e dovuto esclusivamente al problema e non ad un metodo numerico o ad una particolare
aritmetica oating-point utilizzata nei calcoli.
Il sistema lineare (2.18) `e quindi un esempio di problema malcondizionato. Nel successivo Capitolo
4 introdurremo una misura del condizionamento (numero di condizionamento (A)) di una matrice A in
corrispondenza alla risoluzione di un sistema lineare. In queso caso si ha = 3.105 , ossia un numero molto
grande
` interessante osservare che se come base dei polinomi, anziche 1, , si utilizza la seguente: 1, 10,
E
si ottiene al contrario un sistema bencondizionato per lo stesso insieme di dati. In questo caso, quindi, una
riformulazione opportuna del problema ha migliorato il suo condizionamento.

Esempio 2.8 Approssimazione mediante funzioni esponenziali. Si tratta di un problema importante in


diverse applicazioni, in particolare la chimica, la biologia, la sica, dove si hanno fenomeni corrispondenti
a reazioni con costanti di velocit`a dierenti. Il seguente esempio, attribuito a Lanczos, mostra come il
problema della determinazione numerica, a partire da dati sperimentali, dei parametri di una combinazione
di funzioni esponenziali pu`
o essere un problema estremamente malcondizionato. Infatti, le seguenti tre
funzioni
f1 (x) = 0.0951 ex + 0.8607 e3x + 1.5576 e5x
f2 (x) = 0.305 e1.58x + 2.202 e4.45x
f3 (x) = 0.041 e0.5x + 0.79 e2.73x + 1.68 e4.96x
nellintervallo 0 x 1.2 danno risultati che coincidono nelle prime due cifre signicative; in eetti, si
ha max0x1.2 |f1 (x) f2 (x)| = 0.0064, max0x1.2 |f1 (x) f3 (x)| = 0.0055, max0x1.2 |f2 (x) f3 (x)| =
0.0093. Come conseguenza, si ha che se i dati sperimentali sono noti a due cifre, non ha praticamente
signicato considerare il problema della identicazione dei parametri con questo tipo di funzioni.

analisi numerica

c
V.
Comincioli

70

Analisi degli errori

 Esercizio 2.8 Studiare la propagazione dellerrore nel calcolo delle seguenti espressioni

(1) x(x + 3) + 3; (2) (x + 1)2 (x + 1); (3) x2 x;

x y
x+ y
(5)
; (6)
, x, y > 0
x+ y
x y


(4) ( x2 + 1 x)x

 Esercizio 2.9 Dato il sistema lineare

a11 x1 + a12 x2 = b1
a21 x1 + a22 x2 = b2

considerare la soluzione x = [x1 , x2 ]T come funzione dei coecienti aij R e dei termini noti bi , i = 1, 2; j =
1, 2. Calcolare quindi i numeri di condizionamento di tale problema, cercando condizioni sucienti anche
il problema sia ben condizionato.

 Esercizio 2.10 Calcolare la distanza focale f di una lente usando la formula


1 1
1
= +
f
a b
ove a = 32 1 mm e b = 46 1 mm. Fornire una stima dellerrore.

2.2.9

Tecniche di controllo degli errori

Lanalisi eettuata nei paragra precedenti `e unanalisi di tipo in avanti (forward analysis), nel
senso che esamina e segue gli errori mentre vengono introdotti e propagati. Essa pu`
o essere
utilizzata per chiarire i concetti e trattare algoritmi semplici. Tuttavia, per un tipico algoritmo
numerico, in cui il numero dei passi intermedi `e in generale alto, tale tipo di analisi pu`o divenire
impraticabile. Per questo motivo possono essere utili altre idee. Vediamone le principali.
Analisi allindietro (backward analysis)
Lidea deriva dallosservazione che unoperazione macchina pu`
o essere interpretata come una operazione esatta su operandi perturbati. Pi`
u in generale, nellanalisi allindietro (backward analysis),
si cerca di trovare le perturbazioni sui dati che riproducano, operando con aritmetica esatta, i risultati calcolati. In sostanza, in questo tipo di analisi gli eetti degli errori di arrotondamento
commessi durante il calcolo vengono idealmente trasferiti sui dati iniziali. In questo modo per
una stima dellerrore si possono utilizzare i risultati relativi al condizionamento di un problema.
Naturalmente, la dicolt`
a principale nellapplicazione del metodo consiste nel riuscire a ricavare
delle stime signicative degli errori. Una applicazione interessante dellidea verr`
a indicata nel
seguito a proposito della risoluzione di un sistema lineare con il metodo di eliminazione.
Vediamo ora un caso particolare, ma ugualmente interessante.
Esempio 2.9 Consideriamo il problema del calcolo di un prodotto di n numeri reali:
x1 x2 . . . xn . Si ha
(x1 x2 xn ) = x1 x2 (1 + 2 )x3 (1 + 3 ) xn (1 + n )
analisi numerica

c
V.
Comincioli

2.2 Rappresentazione dei numeri sul calcolatore

71

ove |i | eps, i = 2, 3, . . . , n. Ne segue


| (x1 x2 xn ) x1 x2 xn | = |x1 x2 xn |
ove  = |(1 + 2 )(1 + 3 ) (1 + n ) 1| e quindi  (1 + eps)n1 1. Assumendo ad esempio che
(n 1) eps < 0.1, si ha
((n 1) eps)2
+
(1 + eps)n1 < e(n1) eps = ((n 1) eps) +
2!

(n 1) eps 2
(n 1) eps
+(
) +
< (n 1) eps 1 +
2
2

0.05
< (n 1) eps 1 +
< 1.06(n 1) eps
1 0.05
e quindi:  < 1.06(n 1) eps.

Uso delle perturbazioni sperimentali


Lidea `e semplice, anche se pu`o essere talvolta eccessivamente costosa: si esegue il calcolo pi`
u volte
a partire da diversi dati perturbati (ad esempio, generati in forma random) e usando precisioni
diverse (semplice, doppia, quadrupla ecc.).
Questa analisi pu`o fornire utili informazioni non solo per stimare gli errori, ma anche per
capire meglio il problema. Una dicolt`
a nellapplicazione dellidea pu`
o consistere nel riuscire a
pianicare in maniera ottimale le esperienze, ma questa `e una dicolt`a comune nella validazione di
un qualsiasi modello e pu`
o essere superata combinando una conoscenza approfondita del problema
ad una buona dose di intuizione.
Controllo automatico degli errori: aritmetica dellintervallo
Un modo per controllare in maniera automatica, cio`e mediante il calcolatore stesso, gli errori di
arrotondamento, consiste nel mantenere solo quelle cifre che sono ritenute signicative, utilizzando
la cosiddetta aritmetica oating non normalizzata: in pratica non si introducono gli zeri spuri .
Lidea presenta alcuni aspetti negativi, quale ad esempio il fatto che, conservando meno cifre, gli
errori commessi nelle operazioni, sono in generale pi`
u larghi. Per questi motivi, dopo la proposta,
che risale al 1962, lidea non ha avuto molto successo. Per un approfondimento si veda ad esempio
Sterbenz [381].
Unaltra idea per controllare automaticamente laccuratezza dei calcoli `e lanalisi dellintervallo sviluppata in particolare da Moore [302]. In essa si cerca di fornire una limitazione allerrore
assoluto commesso in un algoritmo a causa degli arrotondamenti e degli errori nei dati.
Il principio su cui si basa il metodo consiste nellassociare ad un numero reale a, anziche un
numero macchina, un intervallo denito da numeri macchina, cio`e
a a
:= [a , a ],

a , a F (insieme dei numeri macchina)

Le operazioni macchina sono allora denite come operazioni tra intervalli. Una generica operazione
tra intervalli si denisce come il pi`
u piccolo intervallo, con estremi dati da numeri macchina,

c = a
b tale che
, b b}
c {a b| a a
analisi numerica

c
V.
Comincioli

72

Analisi degli errori

Ad esempio nel caso della somma, si ha


[c , c ] = [a , a ]  [b , b ]
c := max{t F | t a + b }, c := min{t F | t a + b }
Analogamente per la moltiplicazione (assumendo ad es. a > 0, b > 0)
[c , c ] = [a , a ]  [b , b ]
c := max{t F| t a b }, c := min{t F| t a b }
Tale aritmetica pu`o essere implementata facilmente sul calcolatore, anche se, chiaramente, con un
maggiore tempo di calcolo (ma non necessariamente per i calcolatori a pi`
u processori).
I risultati cos` ottenuti, sono degli intervalli, che contengono la soluzione esatta. Tuttavia,
anche il metodo sia ecace occorre che lintervallo ottenuto per i risultati sia il pi`
u stretto
possibile, altrimenti la stima degli errori `e troppo pessimistica.
Lesempio, che segue, illustra questo aspetto del metodo.
Esempio 2.10 Il problema `e il calcolo di y = (x) = x3 3x2 + 3x che risolviamo con due diversi
algoritmi.
Algoritmo 1. Mediante lo schema di Horner: ((x 3)x + 3)x si ha
u := x 3; v := u x; w := v + 3; y := w x
Supponiamo che il valore x sia dato come intervallo:x x = [0.9, 1.1]. Si ha allora (0.9) =
0.999, (1.1) = 1.001.
Utilizzando laritmetica dellintervallo e mantenendo nel calcolo tutte le cifre signicative, si
ha
y = [0.621, 1.419]
che risulta largo rispetto al vero intervallo [0.999, 1.001].
Daltra parte operando in virgola mobile a 2 cifre si ottiene y = 0.99 sia per x = 0.9 che per
x = 1.1.
Algoritmo 2. Trasformiamo il problema nella forma
y = (x) = 1 + (x 1)3
In questo caso laritmetica dellintervallo fornisce la stima
y = [0.999, 1.001]
che risulta decisamente pi`
u signicativa di quella ottenuta con lalgoritmo precedente. In
aritmetica oating-point a 2 cifre si ottiene y = 1.0 sia per x = 0.9 che per x = 1.1.

Lesempio suggerisce la seguente conclusione. Per una applicazione conveniente della aritmetica
dellintervallo pu`
o essere opportuna una ristrutturazione degli algoritmi e quindi, in generale nuovi
algoritmi. Per un approfondimento si veda ad esempio Moore [302].
analisi numerica

c
V.
Comincioli

2.3 Complementi e Problemi

73

Analisi statistica degli errori


In questo tipo di analisi si assume che lerrore relativo  causato dallarrotondamento durante
le operazioni elementari, sia una variabile random a valori nellintervallo [ eps, eps]. Si tratta,
chiaramente di una ipotesi di comodo, in analogia a quanto viene fatto per lesperimento del lancio
di una moneta, il cui risultato potrebbe essere previsto conoscendo tutte le condizioni siche
di contorno che hanno dato origine al lancio. Si assume inoltre che gli errori di arrotondamento
dovuti alle dierenti operazioni siano delle variabili random indipendenti .
Indicando con  il valore medio e con 2 la varianza della distribuzione, si ha
2 = E( E())2 = E(2 ) (E())2 = 2 2
Se per semplicit`a assumiamo che la distribuzione sia di tipo uniforme sullintervallo [ eps, eps],
si avr`
a
 eps
1
1
 := E() = 0, 2 =
t2 dt = eps2 =: 2
2 eps eps
3
In realt`a la media e la varianza possono dipendere dal calcolatore particolare usato e quindi
dovrebbero essere valutate sperimentalmente.
Il risultato x di un algoritmo `e esso stesso una variabile casuale con valore medio x e varianza
x2 , con
x2 = E(x E(x))2 = E(x2 ) (E(x))2 = x2 2x
La varianza d`
a unidea della adabilit`
a del risultato, nel senso che pi`
u `e piccola la varianza,
pi`
u accurato `e il risultato. La stima ottenuta pu`
o essere, come nel metodo precedente, troppo
pessimistica se lalgoritmo non `e strutturato opportunamente.
Per studiare la propagazione degli errori di arrotondamento si possono utilizzare le seguenti
formule, che valgono per variabili x, y indipendenti
xy = x y
2
xy
= 2 x2 + 2 y2

xy = x y
2
xy
= x2 y2 + 2x y2 + 2y x2

Per una giusticazione di tali formule e per un approfondimento del metodo si rinvia a Sterbenz
[381].

2.3

Complementi e Problemi

Problema 2.1 Trovare i numeri di condizionamento delle seguenti funzioni e determinare i


valori di x per i quali il calcolo delle corrispondenti funzioni `e malcondizionato.
1) x 1;
2) exp(x);
3) ln(|x|);
4) sin x;
5) (x2 + 1)1/2 |x|;
analisi numerica

c
V.
Comincioli

74

Analisi degli errori

Soluzione. Ricordiamo, in particolare, che il numero di condizionamento relativo nel calcolo di una
funzione y = f (x), supposta derivabile, `e dato dalla quantit`
a
cond(f (x)) = x

f  (x)
f (x)

In modo equivalente si pu`o scrivere cond(f (x)) = d(ln y)/d(ln x); inoltre, se cond(f (x)) `e il numero di
condizionamento di y = f (x), allora il numero di condizionamento della funzione inversa x = f 1 (y) `e dato
da 1/ cond(f 1 (y)). Ad esempio, il numero di condizionamento della funzione y = xn `e dato da n, mentre
il numero di condizionamento di y 1/n `e 1/n.
Il numero di condizionamento relativo alla funzione x 1 `e dato da |x/(x 1)|. Ad esempio, per
x compresi nellintervallo (0.999, 1.001) il numero di condizionamento `e maggiore di 1000. Supponiamo,
sempre come esemplicazione, che un valore esatto x
= 1.00098 sia introdotto come 1.00100, con un errore
relativo, quindi, dellordine di 2 105 . Il risultato nel calcolo di x 1, in corrispondenza al valore
approssimato di x
, `e dato da 1.00 103 , mentre il valore esatto `e dato da 0.98 103 . Pertanto, nel
risultato si ha un errore relativo dellordine di 2 102 .
La funzione exp(x) ha come numero di condizionamento x e quindi il suo calcolo `e malcondizionato
per |x|  1 e ben condizionato per |x|  1.
Il numero di condizionamento di ln |x| `e dato da 1/ ln |x| e quindi il calcolo della funzione `e malcondizionato per |x| 1.
Per la funzione sin x il numero di condizionamento `e x cotg(x) che indica un malcondizionamento per
|x| n(n 1 intero) e |x|  1 e un bencondizionamento per |x| (n 1/2). Supponiamo ad esempio
che x = 3.01 con arrotondamento sulla terza cifra 1. Lerrore assoluto `e pertanto minore di 0.005 e lerrore
relativo minore di 0.005/x 0.0016. Poiche il numero di condizionamento vale 22.7, si ha che lerrore
relativo trasmesso dalloperazione `e limitato da 0.038.
Per la funzione del caso 5) si trova come numero di condizionamento x(x2 + 1)1/2 e pertanto il suo
calcolo non `e mai malcondizionato ed `e ben condizionato per |x| 0.

Problema 2.2 Se f (x) `e il prodotto di k funzioni f1 (x)f2 (x) fk (x), mostrare che il numero di
condizionamento di f (x) `e la somma dei numeri di condizionamento di ogni fattore: cond(f (x)) =
k
j=1 cond(fj (x)).
Soluzione. Se y = f (x), si ha ln |y| =

k
j=1

ln |fj (x)|. Allora

d(ln |y|) d(ln |fj (x)|)


=
=
cond(fj (x))
d(ln |x|) j=1 d(ln |x|)
j=1
k

cond(f (x)) =

Consideriamo la seguente applicazione del risultato precedente. Si vuole calcolare


f (x) = (x + 1) (x + 2) (x + 20)
nel punto x = 20.1. In questo caso si ha: fj (x) = x + j e cond(fj (x)) = x/(x + j) per j = 1, 2, . . . , 20.
Allora
20
20


1
1
= 20.1
= 269.32
cond(f (x)) = x
x
+
j
20.1
+j
j=1
j=1

Problema 2.3 Le seguenti espressioni sono calcolate per |x|  1


1) (1 + 2x)1 (1 x)(1 + x)1
analisi numerica

c
V.
Comincioli

2.3 Complementi e Problemi

75

2) (1 + x2 )1/2 (1 x2 )1/2
3) sin(1 + x) sin(1)

Riformulare opportunamente le espressioni in modo da evitare il fenomeno della cancellazione.


Soluzione. La funzione 1) pu`o essere riscritta nella seguente forma
2x2
(1 + 2x)(1 + x)
Ad esempio, per x = 0.0123 e operando con arrotondamento alla terza cifra, si ha nel caso dellespressione 1)
come risultato 0.002. Nella forma modicata si ha 0.000294. Il risultato esatto alla terza cifra signicativa
`e 0.000292.
La funzione 2) pu`
o essere pi`
u opportunamente riscritta come
2x2
(1 + x2 )1/2 + (1 x2 )1/2
Inne la funzione 3) pu`
o essere trasformata, utilizzando note formule trigonometriche (in particolare il
risultato: sin(a + b) sin(a b) = 2 sin b cos a) nella seguente funzione
2 sin

x
2


x
cos 1 +
2

Operando come in precedenza sul valore x = 0.0123 si ottiene per la funzione nella forma 3) il risultato
0.006, mentre per la funzione trasformata si ha 0.00654 e il risultato esatto arrotondato alla terza cifra `e
0.00658.

Problema 2.4 Data lequazione quadratica


y 2 + 2py q = 0
considerare il calcolo numerico della radice
y = p +

p2 + q

Soluzione. Consideriamo dapprima il condizionamento del problema, supponendo cio`e che le operazioni
indicate siano eseguite esattamente. Consideriamo pertanto la funzione

y = (p, q) := p + p2 + q,
p, q R
Utilizzando lanalisi del primo ordine, calcoliamo
p

y
= 1 + 
=
,
2
p
p +q
p2 + q

= 
q
2 p2 + q

Per quanto riguarda lerrore relativo abbiamo allora il seguente risultato



p
q
p
p + p2 + q
p + 
q = 
p + 
q
y 
p2 + q
2y p2 + q
p2 + q
2 p2 + q
analisi numerica

c
V.
Comincioli

76

Analisi degli errori

Dal momento che





p


 1,

 p2 + q 



 p + p2 + q 


 
 1, per q > 0
 2 p2 + q 

il problema risulta bencondizionato quando q > 0 e malcondizionato quando q p2 .


Consideriamo ora due algoritmi diversi per il calcolo della funzione y = (p, q) nel caso in cui il problema
sia bencondizionato. Supporremo quindi p > 0, q > 0. In questo caso per lerrore inerente, denito da


(0) y := |D(x)| |x| + |y| eps
(0)

ove ad esempio |x| = [|x1 |, . . . , |xn |]T , abbiamo: y := (0) y/|y| 3 eps. Supporremo inoltre p  q.
Algoritmo 1:

s := p2
t := s+ q
u := t
y := p + u

Dal momento che p  q, si verica una cancellazione nel calcolo di y = p + u. Come conseguenza,lerrore
di arrotondamento generato durante il calcolo in aritmetica oating point della radice quadrata ( t) pu`
o
essere eccessivamente amplicato. Se poniamo


( t) = t(1 + ), || eps u :=  t =  p2 + q


abbiamo che il contributo di tale errore allerrore in y `e dato da

p2 + q
u

=

y
p + p2 + q
1 
= (p p2 + q + p2 + q) = K 
q
Dal momento che p, q > 0, il fattore di amplicazione K ha la seguente limitazione inferiore
K>

2p2
>0
q

che `e grande, per il fatto che, per ipotesi, p  q. In conclusione lalgoritmo proposto non `e , per 
tali valori
di p, q, numericamente stabile, in quanto linuenza dellerrore di arrotondamento del termine p2 + q `e
(0)
superiore in ordine di grandezza allerrore inerente y .
Algoritmo 2: s := p2
t := s+ q
u := t
v := p + u
y := q/v
In questo caso il calcolo di v := p + u non causa cancellazione e si pu`
o vedere facilmente che il fattore di
amplicazione dellerrore di arrotondamento generato nel calcolo di p2 + q risulta in modulo minore di
1 e pertanto lalgoritmo `e numericamente stabile.
Consideriamo il seguente esperimento numerico eettuato in precisione macchina eps = 2.2204 E16 e
per p=4.999999999995 E+4, q=1. E2.
algoritmo 1
algoritmo 2
valore esatto
analisi numerica

1.00000761449337 E7
1.00000000000000 E7
1.00000000000000 E7
c
V.
Comincioli

2.3 Complementi e Problemi

77

Problema 2.5 Analizzare la propagazione degli errori di arrotondamento nel calcolo del prodotto
scalare di due vettori x, y Rn
s := 0
for k = 1 : n
s = s + xk y k
end
Soluzione. Indicando con (xT y) il valore calcolato di xT y, si vuole fornire una stima dellerrore
| (xT y) xT y|


Posto
sp =


xk yk

k=1

si ha: s1 = x1 y1 (1 + 1 ) con |1 | eps e per p = 2, . . . n


sp = (sp1 + (xp yp ))
= (sp1 + xp yp (1 + p ))(1 + p ),

|p |, |p | eps

Si mostra allora facilmente che


n

(xT y) = sn =

xk yk (1 + k )

k=1

| (x y) x y|
T

|xk yk | |k |

k=1

ove
(1 + k ) = (1 + k )

n
&

(1 + j ), 1 = 0

j=k

Per fornire una maggiorazione signicativa si utilizza il seguente risultato.


'n
Proposizione 2.4 Se (1 + ) = k=1 (1 + k ), con |k | eps e n eps 0.01, allora || 1.01 n eps.
Applicando tale risultato, si ottiene
| (xT y) xT y| 1.01 n eps |x|T |y|
ove, ad esempio, |y| indica il vettore con componenti |yi |. Si ha quindi che lerrore relativo nel calcolo di
(xT y) pu`
o essere grande quando
|xT y|  |x|T |y|
Osserviamo che nella pratica un modo usuale di operare consiste nellutilizzare la doppia precisione per
accumulare i prodotti scalari. Pi`
u precisamente, se x, y sono due vettori oating point con precisione t,
allora nellalgoritmo la somma parziale s `e costruita in un registro che opera in lunghezza 2t. Dal momento
che la moltiplicazione di due numeri oating point di lunghezza t pu`
o essere memorizzata esattamente in una
variabile a doppia precisione, si generano errori di arrotondamento soltanto quando s viene rappresentata
in semplice precisione. In questo caso si ha
(xT y) = xT y(1 + ),

analisi numerica

eps

c
V.
Comincioli

78

2.4

Analisi degli errori

Esperienze in matlab

In MATLAB per la rappresentazione dei numeri o delle variabili numeriche si hanno a disposizione
diversi tipi di dati.
Per default MATLAB utilizza la rappresentazione in oating-point con doppia precisione, ossia
con lunghezza 64 bits ed esegue operazioni utilizzando laritmetica in doppia precision.
Oltre la doppia precisione MATLAB fornisce altri tipi di dati che richiedono meno memoria
della doppia, ossia
single Single-precision oating-point numbers: lunghezza 32 bits
int8 and uint8 Signed and unsigned integers: lunghezza 8 bits
int16 and uint16 Signed and unsigned integers: lunghezza 16 bits
int32 and uint32 Signed and unsigned integers: lunghezza 32 bits
x=1;tol=0.00001
while x > tol
x=x-0.2
end
--------x=1; % ciclo infinito!!!
while x ~=0
x=x-0.2
end
---------function x=psqrt(x,n) %n=70 x=0.5; 1.5
for i=1:n
x=sqrt(x);
end
for i=1:n
x=x^2;
end
for i=1:14000
x(i)=1/i;
end
y=fliplr(x);
sum(x)-sum(y)
%%i=1:14000
%%x=1./i;
---------% esempio di Kahan
% In aritmetica esatta f/e = 0/0:
disp( )
echo on
h = 1./2.; x = 2./3. - h; y = 3./5. - h;
e = (x+x+x) - h; f = (y+y+y+y+y)-h;
z = f/e;
echo off
disp(sprintf(\nz = %10.5f,z))
analisi numerica

c
V.
Comincioli

2.4 Esperienze in matlab

79

>> tan(tan(tan(atan(atan(atan(1e50))))))
ans =
1.633123935319537e+016

Unequazione pu`
o essere semplicata algebricamente, ma pu`o non essere cancellata numericamente!
A=[17 5; 1.7 0.5]
b=[22; 2.2]
A\b
ans =-1.0588
8.0000

Il sistema ammette lovvia soluzione x1 = x2 = 1!.


function y = roundoff(number,decimal_places)
% arrotonda uno scalare o una matrice a un numero
% specificato di decimali
[INeg,JNeg] = find( number<0 ); %numeri negativi
if ~isempty(INeg)
IndNeg = sub2ind(size(number),INeg,JNeg);
Number = abs(number);
else
Number = number;
end
decimals = 10.^decimal_places;
y1 = fix(decimals * Number + 0.5)./decimals;
if ~isempty(INeg)
y1(IndNeg) = -y1(IndNeg);
end
y = y1;

2.4.1

Propagazione degli errori

Esempio 2.11 Consideriamo il comportamento della soluzione della seguente equazione alle dierenze
xk+1 =

9
1
xk xk1 ,
4
2

x1 =

1
,
3

x2 =

1
12

(2.19)

che ha come soluzione la successione decrescente


xk =

41k
,
3

k = 1, 2, . . .

x(1)=1/3; x(2)=1/12;
for i=3:28
x(i)=(9/4)*x(i-1)-(1/2)*x(i-2);
end
y=log2(x); plot(y)
analisi numerica

c
V.
Comincioli

80

Analisi degli errori

Figura 2.9 Soluzione calcolata dellequazione (2.19).


In Figura 2.9 `e indicato il graco della successione log2 xk , ove xk `e calcolata iterativamente mediante
la formula (2.19) in MATLAB. Inizialmente il graco diminuisce linearmente con pendenza 2, come
dovrebbe essere per una funzione proporzionale a (1/4)k . Tuttavia, al punto k = 20 il graco inverte il
comportamento e incomincia a aumentare con pendenza uno. Vediamone il motivo.
Lequazione (2.19) ha le seguenti due soluzioni principali

k
1
4

e 2k

zk =


k
1
+ 2k
4

zk rappresenta, al variare di e la soluzione generale di (2.19). La soluzione particolare considerata


corrisponde a scegliere = 0 e = 4/3. Comunque, a causa degli errori di arrotondamento non `e
realmente nullo e dopo un certo numero di iterazioni il contributo del termine 2k diventa dominante.
Supponiamo per semplicit`a che gli errori siano commessi soltanto allinizio del calcolo e che successivamente i calcoli siano eseguiti esattamente. Pi`
u precisamente, supponiamo che
x1 =

%
1 $ +0
4 + 256
3

a cui corrispone la soluzione generale


xk =

x2 =

%
1 $ 1
4 + 255
3

%
1 $ 1k
4
+ 2k57
3

Ricordiamo che in aritmetica IEEE 64-bit la precisione macchina `e 252 . Il punto di cambiamento del
comportamento della successione `e dato da 41k = 2k57 , ossia 3k = 59.

%%% z_n+1=(10/3)z_n-z_n-1
%%% z_0=1; z_1=1/3;
z(1)=1;z(2)=1/3;
for i=3:80
z(i)=(10/3)*z(i-1)-z(i-2);
end
semilogy(z)

analisi numerica

c
V.
Comincioli

2.4 Esperienze in matlab

81

Problema 2.6 Scrivere un le.m per calcolare le radici dellequazione di secondo grado
x2 2bx + c = 0
per b = (10 + 1)/2 e c = 10 e = 2, 7, 12, 17. Le radici esatte sono 10 , 1.
function [x1,x2,x22]=secgra(al)
b=(10^al+1)/2;
c=10^al;
x1=b+sqrt(b^2-c); x2=b-sqrt(b^2-c);
x22=c/x1;

%derivata
a=input(input a: );
h=logspace(-1,-16,16);
dh=(sin(a+h)-sin(a))./h;
err=abs(dh-cos(a));
format long e
[h,err]

%calcolo dellesponenziale come limite


e=exp(1);
disp(sprintf(n \t\t\t f(n) \t\t\t Errore));
for k=0:2:16
n=10^k; fn=(1+1/n)^n;
errore=abs(e-fn);
fprintf(%2.1e\t %11.10f\t %e\n,n,fn,errore);
end

2.4.2

Condizionamento dei polinomi

p(x) = (x 1)(x 2) (x 6) = x6 21x5 + 175x4 735x3 + 1624x2 1764x + 720


Se il coeciente di x2 `e posto uguale a 1623 si ottiene un polinomio con le radici
6.2062
4.5680 + 0.7336i
4.5680 0.7336i
2.3329 + 0.1464i
2.3329 0.1464i
0.9919
mentre se `e posto uguale a 1625 si otttengono le radici
5.7037 + 0.3852i
5.7037 0.3852i
3.3566 + 0.6398i
3.3566 0.6398i
1.8707
1.0086
analisi numerica

c
V.
Comincioli

82

Analisi degli errori

80
1625
60

40

1624

20

-20
1623
-40

-60
0

Figura 2.10 Dipendenza delle radici di un polinomio dai coecienti.


In Figura 2.10 sono rappresentati i tre polinomi.
r=1:6; p=poly(r);
pl=p; pl(5)=1623;
x=0.8:0.1:6.295;
y=polyval(p,x); yl=polyval(pl,x);
xx=[0.8 7]; yy=[0 0];
pll=p; pll(5)=1625;
yll=polyval(pll,x);
plot(xx,yy,x,y,x,yl,x,yll); hold
xt=[1 2 3 4 5 6]; yt=[0 0 0 0 0 0];
plot(xt,yt,o)

To road to wisdom?
Well, its plain and simple to express:
err
and err
and err again
but less
and less
and less.

Piet Hein Grooks, 1966

analisi numerica

c
V.
Comincioli

Linear algebra allows and even encourages a very satisfying


combination of both elements of mathematics abstraction and application.

G. Strang

CAPITOLO

3
Elementi di algebra lineare

Questo Capitolo contiene in forma essenziale e concreta i risultati e le idee dellalgebra lineare che
sono di particolare interesse nella costruzione e nellanalisi degli algoritmi numerici.

3.1

Matrici. Denizioni fondamentali

Una matrice 1 A `e un insieme di m n numeri reali (o complessi) ordinati secondo lo schema

a11
a21
..
.

a12
a22
..
.

A=
ai1 ai2

..
..
.
.
am1 am2

a1n
a2n
..
.
ain
..
.

amn

Si pu`
o abbreviare, scrivendo A = (aij ) (oppure A = [aij ]), per i = 1, 2, . . . , m, j = 1, 2, . . . , n. La
notazione A Rmn (rispettivamente A Cmn ) signica che la matrice ha m righe e n colonne
di elementi reali (rispettivamente complessi). Se m = n, allora si dice che A `e una matrice
quadrata di ordine n. Nel seguito faremo riferimento usualmente a matrici con elementi reali,
indicando, quando si ritiene di interesse, lestensione dei risultati al caso delle matrici ad elementi
complessi.
Un vettore colonna x = [xi ], i = 1, 2, . . . , n `e una matrice che consiste di una sola colonna. Si
1

Il termine matrice (matrix) pare sia stato utilizzato per la prima volta da Sylvester (1850). Lo sviluppo della
teoria delle matrici `e legato ai nomi di Hamilton (1853), Cayley (1854) e successivamente Laguerre, Hermite e
Frobenius.

83

84

Elementi di algebra lineare

ha quindi

x1

x = ...
xn

Linsieme di tutti i vettori colonna a n componenti reali (rispettivamente complessi) costituisce


lo spazio euclideo Rn (rispettivamente lo spazio Cn ).

Figura 3.1 Un vettore in R3 .


Un vettore x Rn pu`
o essere identicato con un punto dello spazio a n-dimensioni, assumendo
le componenti xi come coordinate del punto. Come illustrazione, in Figura 3.1 `e rappresentato
geometricamente il seguente vettore in R3

3
x= 1
4
Data una matrice A Rmn , `e talvolta utile vedere le colonne della matrice come vettori colonna.
In tale contesto si pu`o scrivere A nella seguente forma
A = [a1 , , aj , , an ]
ove aj Rm rappresenta la colonna j-ma.

3.1.1

Matrici particolari

Una matrice diagonale `e una matrice del tipo

d1 0 0
0 d2 0

D= .
.
.. . .
..
. ..
.
0

= diag(d1 , d2 , . . . , dn )

dn

a, o
Se d1 = d2 = = dn = a, la matrice `e detta matrice scalare. In particolare, la matrice unit`
matrice identit`
a , In , o semplicemente I, `e denita da In = diag(1, 1, . . . , 1); cio`e I = (ij ), dove
ij `e il simbolo di Kronecker: ij = 0, per i = j, ij = 1 per i = j.
analisi numerica

c
V.
Comincioli

3.1 Matrici. Denizioni fondamentali

85

Una matrice di permutazione P `e una matrice che si ottiene dalla matrice identit`
a I con scambi
di righe (o di colonne); pertanto, in ogni riga e ogni colonna P ha un solo elemento diverso dallo
zero e uguale a 1.
Una matrice triangolare `e una matrice della forma

u11 u12 u1n


l11 0 0
0 u22 u2n
l21 l22 0

oppure
U
=
L= .
..

.
.
..
..
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
ln1 ln2

lnn

unn

L `e detta triangolare inferiore e U triangolare superiore.


Una matrice di Hessenberg (superiore) `e una matrice quasi triangolare, pi`
u precisamente della
forma

h11 h12 h13

h1n
h21 h22 h23

h2n

..
..

.
H = 0 h32 h33
.

..
..
..
..
..
.
.
.
.
.
0
0
0 hnn1 hnn
In maniera analoga, si denisce una matrice di Hessenberg inferiore.

3.1.2

Operazioni su matrici

Due matrici A, B Rmn sono dette uguali , e si scrive A = B, se aij = bij per i = 1, 2, . . . , m, j =
1, 2, . . . , n.
Il prodotto A di una matrice A per uno scalare , ossia un elemento di R o di C, `e la matrice
di elementi (aij ).
La somma di due matrici A, B Rmn `e la matrice C Rmn di elementi cij = aij + bij , per
i = 1, 2, . . . , m e j = 1, 2, . . . , n. Lelemento neutro rispetto alla somma in Rmn `e dato dalla
matrice i cui elementi sono tutti uguali a zero. Per il seguito, in assenza di possibilit`a di equivoci,
tale matrice verr`a indicata semplicemente con lo zero.
Il prodotto (righe per colonne) di due matrici A Rmp e B Rpn `e la matrice C Rmn con
elementi
p

aik bkj i = 1, 2, . . . , m; j = 1, 2, . . . , n
cij =
k=1

Sottolineiamo che il prodotto righe per colonne `e denito solo se il numero delle colonne di A `e
uguale al numero delle righe di B. Si verica facilmente che per ogni matrice A Rmn si ha
Im A = A,

AIn = A

La moltiplicazione fra matrici gode della propriet`


a associativa e di quella distributiva rispetto
alladdizione
A(BC) = (AB)C,

A(B + C) = AB + AC,

(B + C)D = BD + CD

mentre, in generale, si ha AB = BA, e quindi la moltiplicazione non `e commutativa. In eetti,


la possibilit`
a di denire la matrice AB non implica necessariamente quella della matrice BA, e
analisi numerica

c
V.
Comincioli

86

Elementi di algebra lineare

viceversa. Inoltre, anche quando i prodotti sono ambedue deniti, essi possono dierire tra loro,
come mostra il seguente semplice esempio.








2 1
1 0
1 0
2
1
A=
, B=
AB =
, BA =
0 0
1 0
0 0
2 1
` interessante osservare che le somme e i prodotti di matrici triangolari, ad esempio triangolari
E
superiori, sono ancora matrici triangolari dello stesso tipo, ossia le matrici triangolari costituiscono
una famiglia chiusa rispetto alloperazione di somma e di prodotto.
Osservazione 3.1 Se A Rmn e x Rn , il prodotto
y = Ax
denisce una trasformazione da Rn in Rm . Dal momento che per ogni coppia di vettori x, w Rn e ogni
coppia di scalari , , si ha A(x + w) = Ax + Aw, la trasformazione x Ax `e lineare. Viceversa,
o essere rappresentata da una matrice
si pu`
o mostrare che ogni trasformazione lineare da Rn in Rm pu`
A Rmn . Il prodotto di due matrici corrisponde allora alla matrice associata alla trasformazione che
risulta dalla composizione di due trasformazioni lineari.
Osserviamo, ancora, che dal punto di vista concettuale e computazionale, ha interesse la seguente
interpretazione del prodotto di una matrice A Rmn per un vettore x Rn
y = Ax =

xi ai

i=1

Il vettore y Rm risulta una combinazione lineare delle colonne ai della matrice A. Ad esempio, se



1
3
1 2
A=
, x= 2
1 1
6
3


si ha
Ax = 1

3
1


+2

1
1


+3

2
6


=

1
17

Si denisce matrice trasposta AT (o A , notazione utilizzata in matlab) di una matrice A la


matrice che si ottiene dalla matrice A per scambio delle righe con le colonne. Gli elementi aTij
della matrice AT sono, pertanto, dati dagli elementi aji , per i = 1, 2, . . . , m, j = 1, 2, . . . , n. Se la
matrice A `e ad elementi complessi, si denisce la matrice trasposta coniugata A (denotata anche
AT , ponendo aij = aji , ove aji `e il coniugato del numero complesso aji . Ad esempio, si ha

A=

2 i 3 2 + 2i
i
4i
1


,

2 + i i
4i
A = 3
2 2i 1

Una matrice A Cnn viene detta hermitiana quando A = A; nel caso di una matrice ad
elementi reali la propriet`a si riduce a AT = A e la matrice viene detta simmetrica. Ricordiamo,
inoltre, che una matrice A Cnn viene detta normale quando A A = AA . Una matrice
hermitiana `e ovviamente un caso particolare di matrice normale. Nel seguito, vedremo altri
analisi numerica

c
V.
Comincioli

3.1 Matrici. Denizioni fondamentali

87

esempi di matrici normali, insieme a propriet`


a interessanti delle matrici hermitiane, o in particolare
simmetriche, e delle matrici normali.
Per la trasposta di un prodotto, si ha la seguente propriet`
a
(AB)T = BT AT
con un analogo risultato per la trasposta coniugata.
Se x `e un vettore colonna, xT `e allora un vettore riga. Se x e y sono due vettori colonna con
n elementi reali, il prodotto di matrice
T

x y=

xi yi

i=1

`e detto prodotto scalare (o dot, interno) tra i due vettori, e generalizza la moltiplicazione tra
scalari. Per indicare il prodotto scalare si usa anche la notazione (x, y). Nel caso di vettori
x, y Cn , si ha
n

xi yi
(x, y) = x y =
i=1

Rm

Rn ,

Se x
ey
nel modo seguente

si chiama prodotto esterno tra i due vettori la matrice xyT Rmn denita

xy =

x1 y n
x2 y n
..
.

xm y1 xm y2

xm yn

x1 y1
x2 y1
..
.

x1 y2
x2 y2
..
.

Osserviamo che ogni colonna di xyT `e un multiplo di x, e ogni riga `e un multiplo di yT . In


maniera analoga si denisce per x Cm e y Cn il prodotto esterno xy . Come illustrazione,
dati i vettori

x = [1, i, i]T , y = [i, 1, i]T ,


i = 1

si ha
x y = 1,

i
1 i
xy = 1
i
1
1 i 1

Il prodotto interno fra vettori gode delle seguenti propriet`a


1. x x R, e 0, = 0 se e solo se x = 0;
2. x y = y x;
3. x (y) = x y

per C;

4. x (y + z) = x y + x z per x, y, z Cn .

a x2 = xT x `e detta lunghezza euclidea del vettore x; un vettore la


Se x Rn , la quantit`
cui lunghezza euclidea `e uguale a 1 viene detto normalizzato. Il seguente risultato fornisce una
interessante interpretazione del prodotto scalare. Se x, y Rn , si ha
xT y = x2 y2 cos
analisi numerica

c
V.
Comincioli

88

Elementi di algebra lineare

Figura 3.2 Angolo fra due vettori.


ove denota langolo tra i due vettori (cfr. Figura 3.2 per una rappresentazione in R2 ).
Se A `e una matrice ad m righe aTi , (1 i m) di lunghezza p e B `e una matrice contenente
o essere anche denito come la
n colonne bj della stessa lunghezza p, allora il prodotto AB pu`
T
matrice C ad elementi cij = ai bj , per (1 i m, 1 j n).
Matrici denite positive Una matrice simmetrica (hermitiana) A si dice denita positiva
quando si ha xT Ax > 0 per tutti i vettori reali x = 0 (x Ax > 0, x Cn = 0).
Ad esempio, la matrice hermitiana


3 i
A=
i 3
`e denita positiva. Infatti, per ogni x = [x1 , x2 ]T = 0 risulta

x Ax = [x1 , x2 ]

3 i
i 3



x1
x2


= 3x1 x1 ix1 x2 +ix1 x2 +3x2 x2

= (x1 ix2 )(x1 +ix2 )+2(x2 ix1 )(x2 +ix1 ) = |x1 ix2 |2 +2|x2 ix1 |2 > 0
Chiamando sottomatrice principale di ordine i di una matrice A la matrice che si ottiene eliminando ni righe e le corrispondenti ni colonne, si ha il seguente risultato importante.
Proposizione 3.1 Se una matrice A Cnn `e denita positiva, anche tutte le sue sottomatrici
principali sono denite positive.
Da tale risultato si ha, in particolare, che gli elementi aii di una matrice A denita positiva sono
reali e positivi. Nel seguito vedremo altre propriet`a delle matrici hermitiane denite positive in
relazione alle nozioni di determinante e di autovalore.
Ortogonalit`
a Quando per due vettori x, y Rn si ha xT y = 0, si dice che i due vettori sono
ortogonali. Se, in aggiunta, si ha xT x = yT y = 1, allora i due vettori sono detti ortonormali. I
vettori non nulli x(1) , x(2) , . . . , x(m) sono ortogonali se (x(i) )T x(j) = 0 per i = j. A partire da un
insieme di vettori ortogonali si pu`
o costruire un insieme di vettori ortonormali ponendo
y(i) = 
analisi numerica

x(i)
(x(i) )T x(i)
c
V.
Comincioli

3.1 Matrici. Denizioni fondamentali

89

Una matrice quadrata Q Rnn si dice ortogonale se QT Q = I, ossia se le colonne sono vettori
normalizzati e ortogonali (brevemente, ortonormali). Vedremo nel seguito che per una matrice
ortogonale si ha pure QQT = I, ossia che pure le righe sono vettori ortonormali.
Analogamente, una matrice U Cnn `e detta unitaria se U U = I. Rileviamo che una matrice
unitaria `e un caso particolare di matrice normale.
Le matrici ortogonali (e le matrici unitarie) hanno un ruolo importante nel calcolo numerico.
Uno dei motivi di tale importanza `e il seguente risultato.
Proposizione 3.2 La moltiplicazione di un vettore mediante una matrice ortogonale Q preserva
la lunghezza del vettore, ossia per ogni vettore x Rn si ha
Qx2 = x2

(3.1)

Inoltre, mantiene il prodotto interno


(Qx)T (Qy) = xT y
per ogni x, y Rn .
La dimostrazione `e immediata, in quanto
(Qx)T (Qy) = xT QT Qy = xT I y = xT y
e la (3.1) si ottiene prendendo x = y.
Nel seguito vedremo due importanti classi di matrici ortogonali, ossia le matrici di rotazione,
o di Givens, e le matrici di riessione, o di Householder. Un esempio semplice di matrice di
rotazione `e la seguente.




cos sin
cos sin
T
Q=
, Q =
sin cos
sin
cos
Il prodotto di tale matrice per un vettore x ha come risultato la rotazione del vettore di un angolo
pressato , mentre il prodotto per la matrice QT ruota il vettore di un angolo . Un altro

esempio di matrici ortogonali `e dato dalle matrici di permutazione. Si ha ad esempio






0 1
0 1
P=
, PT =
1 0
1 0

(3.2)

In questo caso particolare P coincide con PT , ma in generale le due matrici sono dierenti. Il caso
(3.2) rappresenta, anche, un esempio semplice di matrice di riessione. Il vettore Px corrisponde
allimmagine speculare di x attraverso la retta x2 = x1 .
analisi numerica

c
V.
Comincioli

90

3.1.3

Elementi di algebra lineare

Matrici partizionate

In particolare nella risoluzione di sistemi lineari, `e utile pensare a una matrice come composta di
matrici di ordine inferiore

A11 A12 A1n


A21 A22 A2n

A= .
..
..
..
..
.
.
.
Am1 Am2

Amn

ove Aij `e una matrice Rpi qj . Usualmente le matrici diagonali Aii sono quadrate. In questo
caso m = n, pi = qi , i = 1, 2, . . . , n. Per matrici partizionate nello stesso modo, le operazioni
possono essere eseguite formalmente trattando i blocchi come scalari. Ad esempio
C = AB,

Cij =

Aik Bkj

k=1

Se Aij = O per i = j, allora A `e chiamata matrice diagonale a blocchi. In modo analogo, si


deniscono le matrici tridiagonali a blocchi .

3.1.4

Indipendenza lineare, base e dimensione

Indipendenza lineare I vettori x(1) , x(2) , . . . , x(n) Rm , con n m si dicono linearmente


indipendenti se dalla condizione
n

i x(i) = 0, i R
i=1

segue che i = 0, per i = 1, . . . , n. In caso contrario, i vettori assegnati sono linearmente


dipendenti . In questo caso il vettore zero pu`
o essere scritto come una combinazione lineare non
triviale dei vettori dati (cfr. per una illustrazione in R2 la Figura 3.3). Quando i vettori x(i) sono
le colonne ai di una matrice A Rmn , si ricava che la dipendenza lineare delle colonne di A `e
equivalente alla condizione
Az = 0 per un vettore z = 0
(3.3)
e che la indipendenza lineare delle colonne di A `e equivalente alla condizione
Az = 0 z = 0
analisi numerica

(3.4)
c
V.
Comincioli

3.1 Matrici. Denizioni fondamentali

91

Figura 3.3 (a) Vettori linearmente dipendenti. (b) Vettori linearmente indipendenti.
Sia S un insieme di vettori dello spazio Rm . Si dice che S `e un sottospazio di Rm se, per ogni
scalare e
x, y S x + y S
(3.5)
Tale propriet`a implica che ogni sottospazio deve contenere il vettore zero.
Linsieme di tutti i vettori che sono combinazioni lineari delle colonne di una matrice A Rmn
`e chiamato lo spazio colonna, o spazio immagine di A, e sar`a indicato per il seguito con la notazione
o essere espresso nella
R(A). Lo spazio immagine, che sottolineiamo `e un sottospazio di Rm , pu`
seguente forma
R(A) = {y Rm | y = Ax, x Rn }
Base Dato un sottospazio S di Rm , k vettori {x(i) }, i = 1, . . . , k costituiscono una base di S se
ogni vettore z S pu`
o essere espresso, in maniera unica, come combinazione lineare dei vettori
della base
k

z=
i x(i)
i=1

Una base `e, quindi, un insieme di vettori linearmente indipendenti che genera (span) lo spazio S.
I numeri i sono le coordinate del punto x Rm rispetto alla base ssata.
Una base di Rm particolarmente importante `e la base canonica, formata dai vettori
ei = [0, . . . , 0, 1, 0, . . . , 0]T ,
i

i = 1, 2, . . . , m

che sono le colonne della matrice identit`a di ordine m.


Dimensione Si pu`
o dimostrare che tutte le basi di un sottospazio hanno lo stesso numero di
elementi; tale numero, indicato con dim(S), `e detto dimensione del sottospazio e esprime il numero
dei gradi di libert`
a del sottospazio. Ad esempio, lo spazio Rm ha dimensione m, e ogni insieme di
m vettori linearmente indipendenti di Rm costituisce una base di Rm .
Ricordiamo il fatto importante che in un sottospazio di dimensione k, nessun insieme di pi`
u di
k vettori pu`
o essere linearmente indipendente e nessun insieme di meno di k vettori pu`
o generare
lo spazio.
Siano S e T due sottospazi di Rm . La somma
X = S + T := {x = s + t | s S, t T }
analisi numerica

c
V.
Comincioli

92

Elementi di algebra lineare

e lintersezione S T sono ancora sottospazi. Per le loro dimensioni vale la seguente relazione
dim(S + T ) = dim S + dim T dim(S T )
da cui segue che
max{dim S, dim T } dim(S + T ) min{dim S + dim T , m}
max{0, dim S + dim T m} dim(S T ) min{dim S, dim T }
Se S T = {0}, il sottospazio X = S + T `e detto somma diretta di S e T e viene usualmente
indicato con S T . In questo caso si ha
dim X = dim S + dim T
e gli elementi x di X possono essere espressi univocamente con la somma
x = s + t,
Proiezione ortogonale

s S, t T

Sia S un sottospazio di Rm . Il sottospazio


S := {u Rm | uT v = 0 per ogni v S}

`e detto sottospazio ortogonale a S. Si hanno le seguenti relazioni


S S = {0}
S S = Rm
dim S = m dim S
o essere espresso in maniera univoca come somma
Ne segue che ogni vettore x Rm pu`
x = s + t,

s S, t S

(3.6)

Il vettore s `e detto proiezione ortogonale di x su S.


Come illustrazione, consideriamo in R3 il sottospazio S generato dal vettore x(1) = [0, 0, 1]T ,
ossia linsieme di tutti i vettori con le prime due componenti nulle. La sua dimensione `e 1.
Lo spazio S `e costituito dai vettori con la terza componente nulla ed `e generato dai vettori
x(2) = [1, 0, 0]T e x(3) = [0, 1, 0]T ed ha dimensione 2. La relazione (3.6) `e allora illustrata in
Figura 3.4.
Se, data una matrice A Rmn , indichiamo con N (A), il nucleo della matrice A, o spazio nullo,
cio`e linsieme dei vettori che vericano Ax = 0
N (A) = {x Rn | Ax = 0}
si ha che N (A) e lo spazio R(AT ), cio`e lo spazio generato dalle righe della matrice A, sono
sottospazi ortogonali di Rn . Supponiamo, infatti, che w sia un vettore in N (A) e v in R(AT ).
Allora, Aw = 0, ed inoltre esiste un vettore x tale che v = AT x. Quindi
wT v = wT (AT x) = (wT AT )x = (Aw)T x = 0T x = 0
analisi numerica

c
V.
Comincioli

3.1 Matrici. Denizioni fondamentali

93

Figura 3.4 Proiezione ortogonale di x su S.


Analogamente, si dimostra che lo spazio N (AT ) e lo spazio R(A) sono sottospazi ortogonali di
Rm . Come conseguenza si hanno le seguenti relazioni
dim(R(AT )) + dim(N (A)) = n

(3.7)

dim(R(A)) + dim(N (A )) = m

(3.8)

Il numero dim(R(AT )) viene detto rango di A; tale nozione verr`a riconsiderata nel seguito, ove
mostreremo che dim(R(AT )) = dim(R(A)).
Basi ortonormali Fra le basi di Rm sono particolarmente importanti le basi ortonormali, nelle
` importante osservare che a partire
quali, cio`e, gli elementi della base sono vettori ortonormali. E
da una qualunque base `e possibile costruire una base ortonormale, come `e mostrato dal seguente
procedimento, noto come procedimento di Gram-Schmidt.2
Proposizione 3.3 (Gram-Schmidt) Se i vettori x(1) , . . . , x(k) Rm , con k m, sono k vettori
linearmente indipendenti, i vettori y(1) , . . . , y(k) , costruiti nel seguente modo
y(1) = 

z(1) = x(1) ,
z(i) = x(i)

i1

$
j=1

z(1)
(z(1) )T z(1)

%
(y(j) )T x(i) y(j) ,

y(i) = 

z(i)
(z(i) )T z(i)

per i = 2, . . . , k, sono ortonormali.


2

Tale procedimento sembra potersi attribuire anche a Laplace e Cauchy (1836).


Jorgen Pedersen Gram, nato a Nustrup, Danimarca nel 1850 e morto a Copenaghen nel 1916, ha lavorato
nellambito del calcolo delle probabilit`
a, dellanalisi numerica e della teoria dei numeri.
Erhard Schmidt, nato a Dorpat, Germania (ora Tartu, Estonia) nel 1876 e morto a Berlino nel 1959, ha lavorato
principalmente nel campo delle equazioni integrali, degli spazi di Hilbert e della topologia.
analisi numerica

c
V.
Comincioli

94

Elementi di algebra lineare

Il risultato, che pu`


o essere dimostrato facilmente per induzione, `e alla base della possibilit`a di
decomporre una matrice data A Rmn , con le colonne linearmente indipendenti, nel prodotto
di una matrice ortogonale Q Rmm e di una matrice triangolare R Rmn . A partire da tale
decomposizione `e possibile risolvere in maniera numericamente stabile i sistemi malcondizionati.

3.1.5

Determinante, inversa e rango

Sia A una matrice quadrata di ordine n. Il determinante 3 di A, denotato usualmente con la


notazione det(A), `e denito da

det(A) :=
(1)t(j) a1 j1 a2 j2 an jn
(3.9)
j

ove t(j) `e il numero di inversioni nella permutazione j = (j1 , j2 , . . . , jn ) e j varia su tutte le n!


permutazioni degli interi 1, 2, . . . , n. La formula (3.9) `e lestensione al caso di n generico delle
formule note per matrici di ordine n = 2 e n = 3
n=2:

det(A) = a11 a22 a12 a21

n=3:

det(A) = a11 a22 a33 + a12 a23 a31 + a13 a21 a32
a12 a21 a33 a11 a23 a32 a13 a22 a31

Osserviamo che il calcolo del determinante mediante la denizione (3.9) richiede la formazione di
n! prodotti, ognuno dei quali richiede n1 moltiplicazioni, per un totale di n! addizioni e (n1)n!
moltiplicazioni. Tuttavia, come vedremo nel capitolo successivo, il determinante di una generica
matrice di ordine n pu`
o essere ottenuto con un numero di addizioni e di moltiplicazioni dellordine
di n3 /3. Questo risultato `e possibile grazie allutilizzo delle seguenti propriet`a del determinante.
Se due colonne (o due righe) sono uguali il valore del determinante `e nullo.
Il valore del determinante rimane immutato se si aggiunge a una riga (colonna) unaltra riga
(colonna) moltiplicata per uno scalare.
Il determinante di una matrice triangolare `e uguale al prodotto degli elementi sulla diagonale
principale.
Se si scambiano due righe (colonne), il determinante cambia di segno.
Si ha: det(A) = det(AT ), det(A ) = det(A).
det(AB) = det(A) det(B) (regola di Binet).
Il determinante di una matrice pu`
o essere espresso in maniera ricorsiva mediante la regola di
Laplace. Indicata con Aij la sottomatrice quadrata di ordine n 1 ottenuta dalla matrice A
eliminando la ima riga e la jma colonna, per un qualunque indice di riga i si ha

a11
se n = 1
det(A) =
n
i+j
aij det(Aij ) se n > 1
j=1 (1)
3
Il termine determinante `e stato introdotto per la prima volta nel 1812 da Cauchy, grazie al quale i determinanti
diventarono di uso comune nella ricerca matematica. In precedenza, il concetto di determinante, come grandezza
che caratterizza una matrice, fu introdotto da Cramer (1750) e sviluppato da Vandermonde (1771) e da Laplace
(1772) (che utilizzava il termine di risultante).

analisi numerica

c
V.
Comincioli

3.1 Matrici. Denizioni fondamentali

95

Il termine (1)i+j det(Aij ) `e detto cofattore dellelemento aij . Si chiamano, inoltre, minori i
determinanti delle sottomatrici quadrate che si ottengono ssando in maniera qualunque uno
stesso numero di righe e di colonne.
Ricordiamo la seguente interessante caratterizzazione, nota come criterio di Sylvester 4 , delle
matrici denite positive mediante i determinanti delle sottomatrici principali.
Teorema 3.1 (Criterio di Sylvester) Una matrice simmetrica A di ordine n `e denita positiva se e
solo se
det(Ak ) > 0,

k = 1, 2, . . . , n

ove Ak `e la matrice principale di ordine k, cio`e la matrice formata dalle prime k righe e k colonne
della matrice A.
Dal risultato precedente si ricava in particolare la seguente maggiorazione.
Teorema 3.2 Per una matrice A simmetrica denita positiva di ordine n, si ha
|aij |2 < aii ajj ,

i, j = 1, 2, . . . , n

e quindi il massimo elemento di A si trova sulla diagonale.


Ricordiamo, inne, che il determinante di una matrice A `e uguale al volume del parallelepipedo
in n dimensioni i cui spigoli corrispondono alle righe della matrice A (cfr. per n = 2 la Figura 3.5).
Il risultato `e ovvio quando le righe della matrice sono ortogonali. In tale caso, infatti, il
prodotto AAT `e una matrice diagonale con gli elementi sulla diagonale forniti dai quadrati li2
delle lunghezze delle righe. Dalle propriet`a del determinante si ha allora
l12 l22 ln2 = det(AAT ) = (det A) (det AT ) = (det A)2
Il segno di det(A) indica lorientamento dellinsieme delle coordinate. Il caso generale si riconduce
al caso ortogonale, applicando alle righe della matrice il procedimento di ortogonalizzazione di
GramSchmidt.

Figura 3.5 Il det(A) fornisce larea del parallelogramma.


4

James Joseph Sylvester (1814-1897).

analisi numerica

c
V.
Comincioli

96

Elementi di algebra lineare

Inversa Una matrice quadrata A di ordine n `e detta non singolare quando per essa si ha
det(A) = 0.
Una matrice B quadrata di ordine n, `e una inversa di A se
AB = BA = I
in tal caso si scrive B = A1 , e la matrice A si dice invertibile. Il determinante fornisce un test
per linvertibilit`
a della matrice; si ha, infatti, il seguente importante risultato.
Teorema 3.3 Una matrice quadrata `e invertibile se e solo se essa `e non singolare.
Ricordiamo che viene chiamata matrice aggiunta di A la matrice adj(A) di ordine n, il cui elemento
(i, j)-mo `e dato da
(1)i+j det(Aji )
ove Aji `e la sottomatrice ottenuta da A cancellando la riga j-ma e la colonna i-ma. Mediante
la matrice aggiunta si pu`o fornire la seguente formula esplicita (di interesse, usualmente, solo
teorico) per linversa di una matrice non singolare
A1 =

1
adj(A)
det(A)

(3.10)

Rango Il rango di una matrice A Rmn pu`


o essere denito come lordine massimo dei minori
non nulli della matrice. Esso viene denotato usualmente con la notazione r = rank(A).
Una matrice A `e di rango completo quando rank(A) = min(m, n); in caso contrario viene detta
a rango deciente (rank-decient).
Limportanza della nozione di rango risiede nel fatto che il rango di una matrice A rappresenta
il numero massimo delle colonne, e quindi anche delle righe, della matrice A che sono linearmente
indipendenti . Il rango di A `e quindi la dimensione di R(A) (e ugualmente di R(AT )), lo spazio
lineare generato dalle colonne (rispettivamente, le righe) di A.
Si ha il seguente importante risultato (cfr. (3.7)), valido per una matrice rettangolare qualunque
rank(A) + dim(N (A)) = n
In particolare, quando m = n e A `e una matrice non singolare, allora rank(A) = n, N (A) = {0}.
 Esercizio 3.1 Vericare che il determinante della matrice di Vandermonde Vn (x1 , x2 , . . . , xn ) denita

da

Vn =

`e dato da

'

1j<in (xi

1
x1
x21
..
.

1
x2
x22
..
.

1
xn
x2n
..
.

xn1
1

xn1
2

xn1
n

xj ).

 Esercizio 3.2 Dimostrare che se A, B sono non singolari, allora


det(A1 ) = (det(A))1
(AB)1 = B1 A1
analisi numerica

c
V.
Comincioli

3.1 Matrici. Denizioni fondamentali

97

 Esercizio 3.3 Mostrare che


1. una matrice ortogonale A `e invertibile e che det(A) = 1 e A1 = AT
2. Se n = 2, tutte le matrici ortogonali hanno una delle due forme




cos sin
cos
sin
,
sin
cos
sin cos

 Esercizio 3.4 Una matrice A Rnn `e idempotente se A2 = A. Mostrare che una matrice idempotente `e singolare, a meno che essa sia la matrice identit`a.

 Esercizio 3.5 Sia A = I + B, con B Cnn `e una matrice triangolare in senso stretto, ossia bii =
0, i = 1, 2, . . . , n. Si dimostri che la matrice A `e invertibile e che
A1 = I B + B2 + (1)k Bk ,

ove k n 1

 Esercizio 3.6 Vericare che se x Rn e y Rm il prodotto esterno xyT `e una matrice di rango uno.

3.1.6

Matrici elementari

La maggior parte degli algoritmi relativi al trattamento delle matrici e alla risoluzione dei sistemi lineari
sono basati su successive moltiplicazioni di matrici elementari H(, u, v), della forma seguente.
H(, u, v) = I u vT
dove `e uno scalare e u, v sono vettori Rn . La matrice uvT `e una matrice Rnn di rango 1.
Una propriet`
a interessante di tali matrici `e la seguente
H(, u, v) H(, u, v) = H(, u, v)
ove
= + (vT u)
Se = 0, allora H(, u, v) `e linversa di H(, u, v); cio`e
=

vT u 1

Quando vT u = 1/, il denominatore `e zero e H(, u, v) `e singolare.


Lespressione dellinversa di H(, u, v) ha come conseguenza la possibilit`a di calcolare direttamente
leetto sullinversa di una modica della matrice mediante una matrice di rango 1.
Scrivendo, infatti
B = A uvT = A(I A1 uvT )
si ha che la matrice tra parentesi `e una matrice elementare della forma H(1, A1 u, v). Quindi linversa di
B `e data da


A1 uvT
1
(3.11)
B = I T 1
A1
v A u1
= A1

A1 uvT A1
vT A1 u 1

(3.12)

Il risultato ora ottenuto `e noto come formula di ShermanMorrison.


Consideremo nel seguito alcuni casi importanti di matrici elementari.
analisi numerica

c
V.
Comincioli

98

Elementi di algebra lineare

Matrici di Gauss
Le matrici utilizzate nei metodi di eliminazione sono denite da
H(1, mi , ei ) = I mi eTi : Mi
ove
mTi = (0, . . . , 0, mi+1 i , . . . , mn i )
e ei `e la componente i-ma della base canonica di Rn .
La pre-moltiplicazione di A con Mi ha leetto di sottrarre da ogni riga r (r = i + 1, . . . , n) la riga i
moltiplicata per mri ; ogni colonna di A `e interessata indipendentemente dalle altre.
Se si assume, per ogni j ssato, con i j n
mri =

arj
aij

r = i + 1, i + 2, . . . , n

allora vengono azzerati gli elementi (i + 1, j), (i + 2, j), . . . , (n, j).


Le matrici Mi vengono utilizzate nei metodi di eliminazione congiuntamente con le matrici elementari
Iii denite da
Iii = I (ei ei )(ei ei )T
La pre-moltiplicazione con Iii scambia le righe i e i .
Linversa della matrice Mi `e data da
= I + mi eTi
M1
i
che `e ancora una matrice di tipo Mi . Si ha anche
Mi Mj = (I mi eTi )(I mj eTj ) = I mi eTi mj eTj (j i)
Ne segue che la matrice
1
1
T
T
M1
1 M2 Mn1 = I + m1 e1 + + mn1 en1

`e una matrice triangolare inferiore con elementi mij e 1 sulla diagonale principale.

Matrici di Householder
Le matrici di Householder (o trasformate di Householder) sono matrici elementari del tipo
H(2, u, u) = I 2uuT
ove u Rn `e un vettore assegnato di lunghezza unitaria u2 = 1.
Si tratta di matrici ortogonali e simmetriche. Vengono anche indicate come matrici di riessione, in
quanto rappresentano la simmetria rispetto alliperpiano passante per lorigine e ortogonale al vettore u
(cfr. Figura 3.6).
Osservazione 3.2 Nel caso di vettori in Cn , si denisce la matrice H = I 2uu , che `e hermitiana e
unitaria se e solo se u22 = u u = 1.
Dal punto di vista numerico le matrici di Householder sono importanti in quanto possono essere
utilizzate per annullare in maniera numericamente stabile elementi specicati in una matrice o in un
vettore.
Per una trattazione pi`
u dettagliata rinviamo al Paragrafo successivo 4.5.6.
analisi numerica

c
V.
Comincioli

3.1 Matrici. Denizioni fondamentali

99

Figura 3.6 Trasformata di Householder.


Trasformazioni di Givens
Le trasformazioni di Givens corrispondono a correzioni di rango due della matrice identit`a e permettono,
rispetto alle trasformazioni di Householder, di operare in maniera pi`
u selettiva sugli elementi di una matrice.
Risultano, pertanto, di particolare interesse nel trattamento delle matrici sparse.
Le trasformazioni di Givens sono, in sostanza, matrici di rotazione della forma

J(i, k, ) =

..
.
c
..
.

s
..
.

..
.
s
..
.
c
..
.

i
k

ove: c = cos , s = sin , con angolo ssato. Si tratta evidentemente di matrici ortogonali.
La premoltiplicazione mediante J(i, k, ) corrisponde a una rotazione di gradi nel piano delle coordinate (i, k). Infatti, se x Rn e y = J(i, k, )x, allora
yi = cxi + sxk
yk = sxi + cxk
yj = xj ,

j = i, k

Da queste formule si ricava la possibilit`a di trasformare a zero lelemento di indice k, prendendo


xi
;
c=  2
xi + x2k

xk
s=  2
xi + x2k

Ad esempio se x = [1, 2, 3, 4], si ha J(2, 4, )x = [1, 20, 3, 0]T , quando cos() = 1/ 5 e sin() = 2/ 5.
Osserviamo che il calcolo di c e s pu`
o essere eettuato in forma numericamente stabile, mediante il seguente
algoritmo.
Algoritmo 3.1 (trasformata di Givens) Dato x Rn e gli indici 1 i < k n, lalgoritmo calcola c, s tali
che la componente k-ma del vettore y = J(i, k, )x sia nulla.
analisi numerica

c
V.
Comincioli

100

Elementi di algebra lineare

If xk = 0
then
c := 1 and s := 0
else
if |xk | |xi |
then

t := xi /xk , s := 1/ 1 + t2 , c := st
else

t := xk /xi , c := 1/ 1 + t2 , s := ct
Lalgoritmo richiede 4 ops e una sola radice quadrata. Langolo non viene esplicitamente calcolato.
Quando si premoltiplica per la matrice J(i, k, ) una matrice A Rmn , solo le righe i e k risultano
modicate attraverso il seguente algoritmo.
Algoritmo 3.2 (premoltiplicazione) Data A Rmn , c = cos(), s = sin(), e gli indici 1 i < k n, la
matrice A = J(i, k, )A `e data da
For j = 1, . . . , n
aij := c aij + s akj
akj := s aij + c akj
Lalgoritmo richiede 4n ops.

3.2

Sistemi lineari

La risoluzione di un sistema lineare consiste nella ricerca


cui componenti risolvono le seguenti equazioni lineari

a11 x1 + a12 x2 + +

a21 x1 + a22 x2 + +

..
..

.
.
x
+
a
x
a

i1 1
i2 2 + +

.
..

..

am1 x1 + am2 x2 + +

di un vettore x = [x1 , x2 , , xn ]T , le
a1n xn = b1
a2n xn = b2
..
..
.
.
ain xn = bi
..
..
.
.

(3.13)

amn xn = bm

che in forma matriciale si scrivono


Ax = b

(3.14)

con A chiamata matrice dei coecienti e b vettore dei termini noti. Pi`
u precisamente, (3.13) `e
detto un sistema lineare di m equazioni in n incognite. Se b = 0, il sistema `e detto omogeneo,
e ammette sempre almeno la soluzione nulla. Se rank(A) = r < n, allora il sistema omogeneo
Ax = 0 ha (n r) soluzioni linearmente indipendenti.
Indicando con aj la colonna jma della matrice A, il sistema (3.13) pu`o essere scritto nella
seguente forma
b = x1 a1 + x2 a2 + + xn an
(3.15)
che esprime il vettore termine noto come combinazione lineare dei vettori colonna di A.
Dalla rappresentazione (3.15) si vede che la condizione di risolubilit`
a del sistema `e la seguente
b R(A)
analisi numerica

c
V.
Comincioli

3.2 Sistemi lineari

101

ove, come abbiamo visto in precedenza, R(A) `e lo spazio generato dalle colonne di A.
In altra forma, si ha che il sistema `e risolubile quando rank( [A, b] ) = rank(A), ove con [A, b]
si indica la cosiddetta matrice aumentata, ottenuta aggiungendo alle colonne di A il vettore b.
Lunicit`
a della soluzione equivale a richiedere che N (A) = {0}, ossia che si abbia dim(N (A)) =
0.
Se m = n = r, allora R(A) = Rn e pertanto il criterio di risolubilit`
a `e soddisfatto per
qualunque vettore b. In questo caso la soluzione `e univocamente determinata e pu`o essere espressa
come x = A1 b. Utilizzando la formula (3.10) si ottiene la seguente rappresentazione esplicita
della soluzione
adj(A) b
x = A1 b =
det(A)
Tale risultato `e usualmente scritto sotto una forma equivalente,
tale regola la componente j-ma di x = A1 b `e data da

a11 a12
det(Bj )
..
..
xj =
, ove Bj = .
.
det(A)
an1 an2

nota come regola di Cramer 5 . In


b1
..
.
bn

a1n
..
.
ann

La matrice Bj `e ottenuta sostituendo alla colonna j-ma di A il vettore b.


Lapplicazione del metodo di Cramer a un sistema lineare con matrice dei coecienti generica
richiede (n + 1)(n 1)n! moltiplicazioni.6
function x = cramer(A,b)
%CRAMER Risolve un sistema lineare mediante la regola di Cramer
% x = CRAMER(A,b) risolve il sistema quadrato A*x = b.
if det(A) == 0
error(matrice `
e singolare)
end
[n,n] = size(A);
for j = 1:n
B = A;
B(:,j) = b;
x(j) = det(B)/det(A);
end
x = x;

Se il criterio di risolubilit`
a `e soddisfatto, ma rank(A) = r < n, allora le soluzioni del sistema
formano uno spazio vettoriale di dimensione nr.
Osservazione 3.3 Il teorema fondamentale dellalgebra lineare `e spesso stabilito nella forma di Fredholm: per ogni A e b, uno ed uno solo dei seguenti sistemi ha soluzione
Ax = b,

oppure

AT y = 0, yT b = 0

In altre parole, o b `e nello spazio colonna R(A) oppure vi `e un y in N (AT ) tale che yT b = 0.
5

Gabriel Cramer (1704, Ginevra 1752, Bagnol-sur-Ceze, Francia). I suoi contributi originali riguardano lo
studio delle curve algebriche: Introduction a lanalyse des lignes courbes algebriques, 1750, che contiene in una
Appendice il metodo di risoluzione dei sistemi lineari, ora noto come regola di Cramer.
6
Ad esempio per risolvere un sistema con n = 20 mediante uno dei computer attualmente (anno 2003) pi`
u
veloce (NEC Earth Simulator, per lo studio dei mutamenti del clima) con velocit`
a: 35 teraops = 35 1012
moltiplicazioni al secondo sono richiesti circa 0.879 anni!
analisi numerica

c
V.
Comincioli

102

3.3

Elementi di algebra lineare

Autovalori e trasformazioni per similitudine

Sia A una matrice quadrata di ordine n ad elementi reali o complessi.


Denizione 3.1 Si chiama autovalore7 di A un numero C per il quale esiste un vettore
u Cn , non nullo, chiamato autovettore destro di A tale che
Au = u
Lo spettro di A, indicato usualmente con Sp(A), `e linsieme degli autovalori della matrice A. Il
raggio spettrale di A `e dato dal seguente numero
(A) = max |i |
1in

Osserviamo che un autovettore `e denito a meno di un fattore moltiplicativo. In eetti, se = 0,


allora Au = u `e equivalente a A(u) = (u).
Quando Sp(A), la matrice A I `e di rango strettamente inferiore a n. La matrice `e
invertibile se e solo se 0
/ Sp(A).
Denizione 3.2 Si dice polinomio caratteristico della matrice A il seguente polinomio di grado
n
pA () = det(A I)
(3.16)
Le radici del polinomio caratteristico sono gli autovalori di A. La matrice ha, pertanto, n autoa k, si dice che lautovalore `e di molteplicit`
a
valori in C; se `e uno zero di pA di molteplicit`
algebrica k.
Dalla denizione segue immediatamente che gli autovalori di una matrice A diagonale o triangolare sono uguali agli elementi sulla diagonale principale. In eetti, la matrice A I `e ancora
diagonale o triangolare e quindi il suo determinante `e dato dal prodotto degli elementi sulla
diagonale principale.
Sviluppando det(A I), si ottiene
det(A I) = a0 n + a1 n1 + + an
in cui
a0 = (1)n ,

ai = (1)ni i , i = 1, . . . , n
$ n%
e i `e la somma dei determinanti delle i sottomatrici principali di A di ordine i.
Lasciamo come esercizio dimostrare che il polinomio caratteristico della seguente matrice

p1 p2 pn1 pn
1
0
0
0

0
1
0
0
(3.17)

...

7
La nozione di autovalore appare per la prima volta nel secolo XVIII in relazione alla teoria delle equazioni
dierenziali lineari omogenee a coecienti costanti (Lagrange, 1762; studio del moto di un sistema a n parametri in
prossimit`
a di una posizione di equilibrio). Nellambito della teoria delle matrici la nozione di autovalore si sviluppa
ad opera di Cauchy (1829), Sylvester (1851) e Hamilton (1853). Per indicare lautovalore e lautovettore si `e usato
per lungo tempo i termini latent root e latent point, che derivano dal fatto che se u `e un autovettore di A, allora Au
`e sovrapposto a u. I termini eigenvalue e eigenvector sono mutuati da termini in tedesco Eigenwert e Eigenvektor ,
che letteralmente signicano valore proprio e vettore proprio.

analisi numerica

c
V.
Comincioli

3.3 Autovalori e trasformazioni per similitudine

103

`e dato da
(1)n [n p1 n1 pn ]
` importante osservare
La forma (3.17) `e nota come matrice di Frobenius 8 (o companion matrix ). E
che una generica matrice pu`o essere ricondotta alla forma di Frobenius mediante trasformazioni
che lasciano inalterati gli autovalori della matrice. Tali trasformazioni sono dette trasformazioni
per similitudine e saranno analizzate nel paragrafo successivo.
Per terminare, ricordiamo il seguente classico risultato.
Teorema 3.4 (Cayley-Hamilton)

Sia A Cnn e sia pA () il suo polinomio caratteristico. Allora


pA (A) = 0

ove lo zero a secondo membro indica la matrice di ordine n con tutti gli elementi nulli.
Come esemplicazione, si consideri la seguente matrice

2 1 1
A= 1 2 1
1 1 2
il cui polinomio caratteristico `e dato da ( 1)2 ( 4).
Ricordiamo che viene detto polinomio minimo di A il polinomio di grado minimo, e con
coeciente di grado massimo uguale a 1, che `e annullato da A. Nellesempio precedente si
verica che il corrispondente polinomio di grado minimo `e dato da 2 5 + 4.

3.3.1

Trasformazioni per similitudine

Sia S una matrice non singolare. Allora la matrice A = S1 AS `e detta simile alla matrice A e la
trasformazione corrispondente `e detta una trasformazione per similitudine. Le trasformazioni per
similitudine corrispondono ad un cambiamento di base in Cn . Abbiamo il seguente importante
risultato.
Proposizione 3.4 Le matrici simili hanno lo stesso polinomio caratteristico.
Dimostrazione. Se A `e una matrice simile a A, si ha
pA () = det(A I) = det(S1 AS S1 S)
= det(S1 ) det(A I) det(S)
da cui pA () = pA ().
8

Georg Ferdinand Frobenius (1849-1917).


Arthur Cayley, nato a Richmond, Inghilterra nel 1821 e morto a Cambridge nel 1895, ha lavorato nel campo
delle matrici come strumento per costruire la teoria della meccanica quantistica.
A Sir William Rowan Hamilton, nato a Dublino nel 1805 e morto nel 1865, sono dovuti importanti risultati nella
sica matematica e nella teoria dei quaternioni.
9

analisi numerica

c
V.
Comincioli

104

Elementi di algebra lineare

Gli autovalori sono, pertanto, indipendenti dalla base nella quale la matrice `e rappresentata;
da qui anche il loro interesse10 .
Un autovettore v di A si ricava da un autovettore u di A mediante la trasformazione v =
S1 u.
Lasciamo come esercizio dimostrare che
det(A) =

n
&

i ,

i=1

i=1

aii =

i=1

ove la quantit`a tr(A) := ni=1 aii `e detta traccia di A. Come il determinante, anche la traccia `e
indipendente dalla base.
Nella successiva proposizione sono raccolti alcuni importanti risultati relativi agli autovalori
di operazioni su matrici.
Proposizione 3.5 Se Au = u, allora si hanno i seguenti risultati
(A I)u = ( )u
k

(3.18)

A u= u
1
A1 u = u,

P (A)u = P ()u,

(3.19)
se A `e invertibile
per ogni polinomio P

(3.20)
(3.21)

La dimostrazione `e lasciata come esercizio.

3.3.2

Autovettori a sinistra

Dalluguaglianza

det(A I) = det(A I) = det(A I)

si ottiene che gli autovalori di A sono i coniugati degli autovalori di A.


Gli autovettori di A vericano, per denizione
A v = v,

v = 0,

per Sp(A)

Prendendo laggiunto dei due membri si ha


v A = v
Il vettore v `e detto autovettore a sinistra di A.
Per una matrice hermitiana si ha che gli autovalori sono reali e gli autovettori rispettivamente a sinistra
e a destra coincidono.
Teorema 3.5 Sia ui un autovettore della matrice A corrispondente allautovalore i . Sia vj un autovettore a sinistra corrispondente allautovalore j .
Allora, se i = j , si ha
(ui , vj ) = 0
(3.22)
10

Se C `e una generica matrice non singolare, gli autovalori di A e CT AC sono, in generale, dierenti. Tuttavia,
la trasformazione A CT AC, detta trasformazione per congruenza e corrispondente al cambiamento di variabili
x = Cy, mantiene la simmetria; in eetti, si pu`
o mostrare che le due matrici A e CT AC hanno lo stesso numero
di autovalori positivi, lo stesso numero di autovalori negativi e lo stesso numero di autovalori nulli. Tale risultato
`e noto come legge di conservazione dei numeri inerziali (Sylvesters law of inertia). Mentre le trasformazioni simili
conservano gli autovalori, le trasformazioni per congruenza conservano solo il segno degli autovalori.
analisi numerica

c
V.
Comincioli

3.3 Autovalori e trasformazioni per similitudine

105

La dimostrazione `e lasciata come esercizio.


Dal teorema precedente, si ha, in particolare che se A `e una matrice hermitiana, allora gli autovettori
corrispondenti a due autovalori distinti sono ortogonali.

3.3.3

Riduzione delle matrici

Una matrice A si dice diagonalizzabile, se esiste una matrice non singolare S tale che la trasformata
per similitudine di A: S1 AS `e una matrice diagonale D. Poiche
S1 AS = D

AS = SD

si ha che le colonne della matrice S sono autovettori di A. Lasciamo come esercizio la ricerca di
un esempio di matrice non diagonalizzabile.
Le matrici diagonalizzabili possono essere caratterizzate mediante i loro autovettori nel seguente modo.
Teorema 3.6 Una matrice A di ordine n `e diagonalizzabile se e solo se A possiede n autovettori
linearmente indipendenti.
Ricordando che
Proposizione 3.6 Gli autovettori associati ad autovalori distinti sono linearmente indipendenti.
si ricava la seguente condizione suciente.
Corollario 3.1 Una matrice `e diagonalizzabile, se i suoi autovalori sono distinti.
Per le matrici non diagonalizzabili ricordiamo il seguente risultato.
Proposizione 3.7 (Forma di Jordan) Una matrice A quadrata di ordine n `e simile a una matrice
della forma
(3.23)
J = diag(J1 , J2 , . . . , Jp )
ove ogni Ji `e una matrice quadrata di ordine ri della forma

i
1
0 0
0
1
0

.
.. ... 0
Ji = 0
0

i 1
0
0
0
0 i
e

p
i=1 ri

= n.

La matrice (3.23) `e chiamata la forma canonica di Jordan. Come caso particolare di (3.23) si ha
per p = n e ri = 1, i = 1, . . . , n la forma diagonale. Allaltro estremo si ha il caso corrispondente
a
a p = 1 e r1 = n. Un blocco Ji ha i come autovettore di molteplicit`a algebrica ri ; la molteplicit`
geometrica di i , cio`e la dimensione dello spazio lineare generato dagli autovettori corrispondenti
a i `e data dal numero dei blocchi che compaiono nella matrice J e relativi allo stesso autovalore
i .
analisi numerica

c
V.
Comincioli

106

Elementi di algebra lineare

Come esercizio lasciamo il calcolo della molteplicit`a geometrica


seguenti matrici

0 0
1 0 0
0 1
0 0 0

B=
A=
0 0
0 0 1 ;
0 0 0
0 0 0

degli autovalori relativi alle

0
0

Attraverso gli autovettori di una matrice `e possibile caratterizzare la commutativit`


a del prodotto
di due matrici nel seguente modo.
Teorema 3.7 Una condizione necessaria e suciente anche due matrici A, B dello stesso
ordine e diagonalizzabili, commutino, `e che esista una base formata da autovettori per entrambe.
La dimostrazione `e lasciata come esercizio.

3.3.4

Fattorizzazione unitaria di una matrice

Fra le trasformazioni per similitudine hanno una particolare importanza quelle ottenute mediante
una matrice unitaria, o ortogonale. In eetti, il teorema successivo mostra che `e possibile mediante
una trasformazione unitaria ricondurre una qualsiasi matrice a una forma triangolare superiore.
Teorema 3.8 (Forma normale di Schur) Data una matrice A Cnn , esiste una matrice unitaria
U e una matrice triangolare superiore T tali che
A = UTU

(3.24)

Gli elementi sulla diagonale principale di T sono gli autovalori della matrice A.
La dimostrazione pu`o essere ottenuta per induzione (cfr. ad esempio Lancaster e Tismenetsky
[253]).
Attraverso le trasformazioni unitarie `e possibile caratterizzare le matrici normali nel seguente
modo. Ricordiamo che una matrice A `e detta normale se A A = AA . Le matrici hermitiane,
unitarie, e antihermitiane (A = A) sono esempi di matrici normali.
Teorema 3.9 Una matrice A Cnn `e normale se e solo se esiste una matrice unitaria U tale
che
(3.25)
A = UDU
ove D `e la matrice diagonale formata dagli autovalori della matrice. In particolare, una matrice normale `e diagonalizzabile ed i suoi autovettori corrispondenti ad autovalori distinti sono
ortogonali.
Nel caso in cui la matrice A `e normale e ad elementi reali, il teorema precedente si estende nel
senso che la matrice U `e ortogonale e D `e una matrice diagonale a blocchi di ordine 1, o 2, in
corrispondenza, rispettivamente ad autovalori reali e ad autovalori complessi coniugati. Nel caso
particolare di matrici simmetriche la D `e una matrice diagonale.
Come corollario si hanno i seguenti risultati
Una matrice hermitiana `e diagonalizzabile. I suoi autovalori sono reali e gli autovettori
corrispondenti ad autovalori distinti sono ortogonali.
analisi numerica

c
V.
Comincioli

3.3 Autovalori e trasformazioni per similitudine

107

Una matrice antihermitiana `e diagonalizzabile. I suoi autovalori sono immaginari puri e gli
autovettori corrispondenti ad autovalori distinti sono ortogonali.
Una matrice unitaria `e diagonalizzabile. I suoi autovalori hanno modulo 1. Gli autovettori
corrispondenti ad autovalori distinti sono ortogonali.
Una matrice hermitiana `e denita positiva (semidenita positiva) se e solo se tutti i suoi
autovalori sono strettamente positivi (nonnegativi).
Dai risultati precedenti si ricava, in particolare, una utile interpretazione geometrica delle
matrici denite positive. Sia A una matrice simmetrica denita positiva e Q la matrice le cui
colonne sono date dagli autovettori di A normalizzati a 1. Si ha, quindi, A = QQT , con
matrice diagonale degli autovalori. Allora, la rotazione y = QT x produce la somma di quadrati
xT Ax = xT QQT x = yT y = 1 y12 + + n yn2
Si vede, quindi che lequazione
xT Ax = 1
descrive un ellissoide con centro
 nellorigine e i cui assi sono nelle direzioni degli autovettori.
I semiassi hanno lunghezza 1/ j . Come illustrazione, in Figura 3.7 `e rappresentata lellisse
corrispondente alla seguente matrice denita positiva


2 1
A=
1
2
per la quale si ha xT Ax = 2x21 2x1 x2 + 2x22 = 1. Gli autovalori sono dati da 1 = 1 e 2 = 3,
mentre gli autovettori hanno la direzione delle bisettrici.

Figura 3.7 Rappresentazione dellellisse xT Ax = 2x21 2x1 x2 + 2x22 = 1.


Se gli autovalori i di una matrice hermitiana sono disposti in ordine decrescente
1 2 n
analisi numerica

c
V.
Comincioli

108

Elementi di algebra lineare

si pu`o dimostrare facilmente il seguente risultato, noto anche come teorema di CourantFischer
x Ax
,
0=xC
x x

x Ax
0=xC
x x

n = min n

1 = max n

3.4

(3.26)

Localizzazione degli autovalori

Il problema della localizzazione degli autovalori riguarda la determinazione di regioni del piano complesso
contenenti gli autovalori di una matrice data. Risultati di questo tipo sono utili sia per il calcolo numerico
degli autovalori che per evidenziare le propriet`
a di alcune matrici.
Ricordiamo a questo proposito due risultati, noti come teoremi di Gershgorin e Hadamard.
Teorema 3.10 (Primo teorema di GershgorinHadamard) Sia A una matrice quadrata di ordine n. Per
ogni k = 1, 2, . . . , n, consideriamo il disco Dk del piano complesso denito da
n

|z akk |

|akj |

(3.27)

j=1
j=k

Gli autovalori di A appartengono allunione degli n dischi Dk , cio`e

n


Dk

k=1

Dimostrazione. Sia un autovalore e u un autovalore associato tale che


max |ui | = |uk | = 1

1in

La componente kma delluguaglianza Au = u si scrive


( akk )uk =

|akj |

j=1
j=k

Poiche si ha |uj | |uk | = 1, prendendo il modulo nelluguaglianza precedente si ottiene


| akk | = |

akj uj |

j=1
j=k

|akj | |uj |

j=1
j=k

|akj |

j=1
j=k

Quindi Dk e da questo il risultato del teorema.


function [C,R] = Gershg(A)
% [C,R]=Gershg(A)
% Disegna Cerchi di Gershgorin insieme agli autovalori
% della matrice A nel piano complesso
% C centri dei cerchi
% R raggi dei ceerchi
d = diag(A);
% centri
c_real = real(d);
% parte reale
c_imag = imag(d);
% parte immaginaria
B = A - diag(d);
% elementi fuori dalla diagonale d
analisi numerica

c
V.
Comincioli

3.4 Localizzazione degli autovalori

109

[m, n] = size(A);
r = sum(abs(B));
% Raggi dei cerchi
C = [c_real(:) c_imag(:)]; % Salva i centri
t = linspace(0,2*pi,200); % discretizzazione per il grafico
co = cos(t);
si = sin(t);
[v,d] = eig(A);
d = diag(d);
% autovalori
figure
h = plot(real(d),imag(d),or); % disegno autovalori
hold on ; grid on ; axis equal ;
xlabel(Parte Reale)
ylabel(Parte Immaginaria)
set(h,LineWidth,1.5)
for i=1:n
x = c_real(i) + r(i)*co;
y = c_imag(i) + r(i)*si;
h2= plot(x,y);
set(h2,LineWidth,1.2)
end
hold off
title(Cerchi di Gershgorin e autovalori di una matrice);

Corollario 3.2 Se lunione M1 di k cerchi di Gershgorin `e disgiunta dallunione M2 dei rimanenti n k,


allora k autovalori appartengono a M1 e n k autovalori appartengono a M2 .
Per la dimostrazione si considera la famiglia di matrici
A(t) = D + t(A D),

0t1

ove D = diag(aii ). Si applica quindi il teorema precedente su A(0), utilizzando poi un ragionamento di
continuit`a.

Figura 3.8 Esempi di cerchi di Gershgorin.

analisi numerica

c
V.
Comincioli

110

Elementi di algebra lineare

Osservazione 3.4 Poiche gli autovalori di AT sono i medesimi della matrice A, applicando il teorema
precedente alla matrice AT si ottiene una nuova regione. Gli autovalori di A appartengono alla intersezione
delle due regioni.

Il secondo risultato, la cui dimostrazione `e leggermente pi`


u impegnativa `e il seguente.
Teorema 3.11 (Secondo teorema di GershgorinHadamard) Sia A una matrice di ordine n, irriducibile. Se un autovalore `e situato sulla frontiera della riunione dei dischi, allora tutti i cerchi Dk
passano per .

3.4.1

Norma di vettore e di matrice

Una applicazione Rn R+ , `e chiamata norma, indicata usualmente con x, quando verica le seguenti
condizioni
(i) x 0, per ogni x Rn .
(ii) x = 0 se e solo se x = 0.
(iii) x = || x, per ogni x Rn , R.
(iv) Per ogni x, y Rn , vale la disuguaglianza triangolare
x + y x + y
Il numero x y denisce allora una distanza tra i punti x e y.
Un esempio di norma in Rn `e fornito dalla cosiddetta norma p, denita, per 1 p < , nel modo
seguente
 n
1/p

|xi |p
(3.28)
xp =
i=1

Per p = 2 si ha la usuale norma euclidea; per p = 1 la norma corrispondente `e anche nota come norma di
Manhattan.
Nel caso p = si ha la norma del massimo, detta anche norma di Chebichev , denita da
x = max |xi |

(3.29)

1in

Ad esempio, se x = [1, 2]T si ha


x1 = 3,

x2 =

5,

x = 2

Per p = 1 e p = , non ci sono problemi a mostrare che le propriet`a richieste dalla denizione di di norma
sono vericate. Per 1 < p < la propriet`
a triangolare diventa


n

i=1

1/p
|xi + yi |

 n

i=1

1/p
|xi |

 n

1/p
|yi |

i=1

nota anche come disuguaglianza di Minkowski.


Se A `e una matrice simmetrica di ordine n e denita positiva, si pu`o denire una norma di vettore
ponendo

1/2

aij xi xj
xA :=
i,j

analisi numerica

c
V.
Comincioli

3.4 Localizzazione degli autovalori

111

Figura 3.9 Le sfere unitarie Sp e SA relative alla norma  p e alla norma  A .


In Figura 3.9 sono rappresentate le sfere unitarie in R2 corrispondenti a dierenti tipi di norme.
Osserviamo che una norma di vettore `e una funzione continua in Rn e che per ogni coppia di norme di
vettore, x, x , esistono due costanti positive m e M tali che per ogni x Rn
mx x M x
In altre parole, in Rn , per n ssato, le norme sono tra di loro equivalenti.
x=(1:4)/5
norm1=norm(x,1)
norm2=norm(x)
norminf=norm(x,inf)
x=0.2000 0.4000 0.6000 0.8000
norm1=2.0000
norm2=1.0954
norm3=0.8000

Norma di matrice
Una matrice quadrata di ordine n pu`
o essere considerata un vettore in uno spazio di dimensione n2 (avendo
ssata una convenzione relativamente allordine degli elementi). Allora, per denire una norma di matrice,
potremmo utilizzare la denizione data per un vettore. Tuttavia, per le applicazioni conviene restringere
ulteriormente la denizione. In particolare, date due matrici quadrate di ordine n A e B, `e utile porre
nella denizione la seguente condizione
(v)

AB A B

` da sottolineare che non tutte le norme di vettore vericano la condizione (v); si consideri, ad esempio
E




1 1
1 2
A=B=
,
C = AB =
0 1
0 1
Si ha
max |ci,j | = 2
i,j

max |ai,j | = max |bi,j | = 1


i,j

i,j

Per riassumere, possiamo chiamare norma di matrice unapplicazione: A A, che verica condizioni
analoghe alle condizioni (i), (ii), (iii), (iv) date nella denizione di norma di vettore, con laggiunta della
precedente condizione (v). Un modo naturale, geometrico, di denire una norma di matrice, che verica le
condizioni precedenti, `e il seguente.
analisi numerica

c
V.
Comincioli

112

Elementi di algebra lineare

Sia   una norma ssata di vettore. Deniamo norma naturale (o norma indotta dalla norma di
vettore) della matrice A la quantit`
a
Ax
(3.30)
A sup
x=0 x
Poiche per ogni x = 0 si pu`
o denire u = x/x, sicche u = 1, la denizione (3.30) `e equivalente alla
seguente
A = max Au = Ay,
y = 1
u=1

Per denizione se I `e la matrice identit`a e   `e una norma naturale, allora I = 1.


Osserviamo che per una norma denita come in (3.30) si ha il seguente risultato
Ax A x

(3.31)

Pi`
u in generale, quando una norma di matrice verica la condizione (3.31) si dice che essa `e consistente
(o compatibile) con la corrispondente norma di vettore. La norma naturale `e, in sostanza, la pi`
u piccola
norma consistente con una assegnata norma di vettore.
Lasciamo come esercizio mostrare che la denizione (3.30) verica le propriet`
a (i)(v).
Vediamo, ora, quali sono le norme naturali di matrice che corrispondono alle norme p di vettore per
p = 1, 2, . Indichiamo con aij , i, j = 1, 2, . . . , n gli elementi della matrice A.
Proposizione 3.8 La norma di matrice indotta dalla norma del massimo (p = ) `e la seguente
A = max
i

|aij |

(3.32)

j=1

cio`e la massima tra le somme dei moduli delle righe.


In maniera analoga, si dimostra che
A1 = max
j

|aij |

i=1

cio`e A1 = AT  .


Consideriamo ora la norma 2, corrispondente alla norma euclidea di vettore. Si ha il seguente risultato.
Proposizione 3.9 La norma 2 di matrice, corrispondente alla norma euclidea di vettore, pu`
o essere
calcolata nel modo seguente
,
(3.33)
A2 = (AT A)
Per tale motivo la norma A2 `e nota anche come norma spettrale. Nel caso particolare di una matrice
simmetrica la norma spettrale coincide con il raggio spettrale della matrice.
Fra le norme che sono state introdotte si hanno le seguenti relazioni

1
A A2 nA
n

1
A1 A2 nA1
n
max |aij | A2 n max |aij |
i,j
i,j

A2 A1 A
analisi numerica

c
V.
Comincioli

3.5 I valori singolari e la pseudoinversa

113

Una norma di matrice che non `e subordinata ad una norma di vettore `e la norma di Frobenius (o di
Schur11 ), denita per una matrice A Rmn nel modo seguente
1/2

m
n


1/2
AF =
a2ij
= tr(AT A)
i=1 j=1

La norma di Frobenius `e essenzialmente la norma euclidea della matrice considerata come un vettore di
` interessante osservare che la norma di Frobenius `e compatibile con la norma di vettore
mn componenti. E
euclidea; si ha, infatti
Ax2 AF x2

Matrici convergenti
Per studiare la convergenza di procedure iterative `e utile stabilire quando per una matrice A si ha la
convergenza a zero delle successive potenze, cio`e
lim Am = 0

(3.34)

In questo caso si dice che la matrice `e convergente. Per stabilire la convergenza di una matrice si hanno le
seguenti condizioni.
Teorema 3.12 I seguenti risultati sono equivalenti.
(a) A `e convergente
(b) limm Am  = 0, per una norma di matrice
(c) (A) < 1
Una condizione suciente, in generale non necessaria, ma importante nelle applicazioni, `e la seguente.
Corollario 3.1 A `e convergente se per una particolare norma di matrice si ha
A < 1

3.5

I valori singolari e la pseudoinversa

Per una matrice rettangolare la nozione di autovalore perde di signicato. Una nozione pi`
u generale e che
presenta interesse numerico in relazione al rango di una matrice e al suo condizionamento `e la nozione di
valori singolari12 . Dal punto di vista teorico `e pure interessante una estensione del concetto di inversa di
una matrice, la cosiddetta pseudoinversa, che pu`
o anche essere denita a partire dai valori singolari.
In questo paragrafo richiameremo le idee essenziali relativamente a questi due concetti, che hanno assunto dal punto di vista numerico unimportanza notevole, in particolare per quanto riguarda la risoluzione
dei problemi malcondizionati. Per un approfondimento si rinvia ad esempio Golub e Van Loan [172].
11

Friedrich Heinrich Schur (1856-1932).


Il termine valore singolare `e collegato al fatto che mediante tali quantit`
a `e possibile misurare la distanza di una
matrice dallinsieme delle matrici singolari.
12

analisi numerica

c
V.
Comincioli

114

3.5.1

Elementi di algebra lineare

Decomposizione in valori singolari SVD

Data una matrice arbitraria A Cmn , la matrice A A `e una matrice hermitiana semidenita
positiva poiche x (A A)x = Ax22 0, per ogni x Cn . I suoi autovalori 1 2 n
0 possono pertanto essere espressi nella forma k = k2 , con k 0. I numeri 1 n 0
sono chiamati i valori singolari di A.
Sostituendo in (3.26) alla matrice A la matrice A A, si ottiene
Ax2
=: A2 ,
0=xC
x2

1 = max n

Ax2
0=xC
x2

(3.35)

1
n

(3.36)

n = min n

In particolare, se m = n e A `e non singolare, si ha


1
= A1 2 ,
n

2 (A) =

Ricordiamo anche la seguente relazione


A2E = 12 + 22 + + p2 ,

(Norma di Frobenius)

ove p = min(m, n).


Il seguente teorema fornisce una interessante interpretazione del pi`
u piccolo valore singolare
n di una matrice quadrata A; tale valore `e, in sostanza, la distanza di A dalla matrice singolare
pi`
u vicina.
Teorema 3.13 Siano A e E due matrici Rnn e siano 1 2 n 0 i valori
singolari della matrice A. Allora
(i) E2 n se A + E `e singolare;
(ii) esiste una matrice E con E2 = n , tale che A + E `e singolare.
Dimostrazione. Se A + E `e singolare, si ha un vettore x = 0 tale che (A + E)x = 0. Allora da (3.35)
si ha
n x2 Ax2 =  Ex2 E2 x2
da cui n E2 . La propriet`
a (ii) `e evidente se n = 0, dal momento che in questo caso la matrice `e gi`a
singolare. Supponiamo quindi n > 0. Da (3.35) si ha che esistono due vettori u, v tali che
Au2 = n ,
v:=

1
Au,
n

u2 = 1
v2 = 1

Denendo la matrice E = n vu , si ha (A + E)u = 0, cio`e la matrice A + E `e singolare; inoltre


E2 = n max v2
x=0

analisi numerica

|u x|
= n
x2

c
V.
Comincioli

3.5 I valori singolari e la pseudoinversa

115

Osservazione 3.5 Si consideri ad esempio la seguente matrice




1/ 0
0 

Il determinante `e uguale a 1, mentre 1 = 1/, 2 = . Per  0 il rango della matrice tende a 1; come
si vede 2 `e una misura conveniente della decienza del rango. Un caso pi`
u generale `e dato dal seguente
esempio di Wilkinson.13
Si consideri la matrice triangolare superiore B di ordine n denita da

1 se i = j
1 se i < j
bij =

0 se i > j
La matrice ha rango n. Se, tuttavia lelemento di indici (n, 1) viene perturbato della quantit`
a  = 22n ,
4
la matrice diventa di rango n 1. Il valore singolare n di B assume il valore 0.917 . . . 10 per n = 15 e
0.296 105 per n = 20. Al crescere di n la matrice B `e sempre pi`
u vicina ad una matrice di rango n1. Tale
comportamento non si vede dagli elementi sulla diagonale principale, e quindi anche dal determinante, che
vale sempre 1. Osserviamo anche che il numero di condizionamento 2 (A) = 1 /n , calcolato, ad esempio,
per n = 20, ha il valore 3.99 106.

Una generica matrice A Cmn pu`


o essere trasformata con matrici unitarie in una forma
diagonale formata dai valori singolari.
Teorema 3.14 (SVD) Sia A una matrice arbitraria Cmn . Allora esiste una matrice unitaria (ortogonale se A `e reale) U Cmm (rispettivamente, Rmm ) e una matrice unitaria
(ortogonale se A `e reale) V Cnn (rispettivamente, Rnn ) tali che
A = UV


con
=

D 0
0 0

(A = UVT se A `e reale)

(3.37)


,

D = diag(1 , 2 , , r ),

1 2 r > 0.

Il numero r dei valori singolari diversi dallo zero `e il rango della matrice A.
La decomposizione (3.37) viene chiamata la SVD (singular value decomposition) della matrice
A14 . Il teorema pu`o essere dimostrato per induzione su m e n; si veda ad esempio Golub e Van
Loan [172].
Le matrici U, V, hanno il seguente signicato. Le colonne di U (rispettivamente di V)
rappresentano gli autovettori della matrice AA (rispettivamente di A A).
Linterpretazione geometrica dei valori singolari `e la seguente. Supponendo ad esempio che A
sia reale, si ha che essa trasforma la sfera unitaria in Rn (denita da x2 = 1), nellinsieme dei
13
James Hardy Wilkinson, nato a Strood, Kent, Inghilterra nel 1919, morto a Londra nel 1986, ha ottenuto
importanti risultati nel campo dellalgebra lineare numerica. Ha sviluppato in particolare lidea della backward
error analysis per lo studio della stabilit`
a degli algoritmi.
14
La decomposizione ai valori singolari `e stata introdotta indipendentemente da Beltrami (1873) e da Jordan
(1874) nel caso di matrici quadrate. La tecnica fu estesa alle matrici rettangolari negli anni 30 da Eckart e Young.
Come tecnica numerica il suo utilizzo risale agli anni 60. Il termine valore singolare pare sia stato introdotto da
Weyl (1949) nello studio di alcune relazioni fra gli autovalori e i valori singolari di una matrice.

analisi numerica

c
V.
Comincioli

116

Elementi di algebra lineare

vettori y = Ax, che deniscono un ellissoide di dimensione r nello spazio Rm . I valori singolari
sono le lunghezze degli assi dellellissoide. Il numero di condizionamento `e legato alleccentricit`
a
dellellissoide. In termini di trasformazioni lineari, la SVD si interpreta nel modo seguente. Per
ogni trasformazione lineare A : Rn Rm , esistono due basi ortonormali v1 , v2 , . . . , vn in Rn e
u1 , u2 , . . . , um in Rm tali che Avi = i ui per i = 1, 2, . . . , r e Avi = 0 per i = r + 1, . . . , n.
 Esercizio 3.7 Si dimostri che i valori singolari di A e di A sono uguali.
 Esercizio 3.8 Si dimostri che se A `e una matrice Cnn allora
| det(A)| =

n
&

i=1

Un risultato interessante che generalizza il Teorema 3.13, `e il seguente.


Teorema 3.15 Sia A una matrice Cmn e sia
A = UV
la sua decomposizione in valori singolari, ove
1 2 r > r+1 = = p = 0,

p = min(m, n)

e sia k un intero r = rank(A). Posto


Ak =

i ui vi

i=1

si ha
min
rank(B)=k

A B2 = A Ak 2 = k+1

Il teorema, per la cui dimostrazione si veda ad esempio Golub e Van Loan [172], dice in sostanza
che il pi`
u piccolo valore singolare positivo di A `e la distanza, nella norma 2, di A dallinsieme
di tutte le matrici a rango deciente. Esso permette, quindi, di stimare lerrore che si commette
quando la matrice A, a seguito di approssimazioni, viene sostituita con una matrice di rango k.
Esempio 3.1 Supponiamo che gli elementi della seguente matrice

1.02 2.03 4.20


A = 0.25 0.51 1.06
1.74 3.46 7.17

corrispondino ai valori di misurazioni sperimentali soggette ad errori di grandezza, ad esempio, inferiori o


uguali a 0.015. La matrice A ha la seguente decomposizione in valori singolari

0.5015 0.1871 0.8447


9.5213
0
0
A = UVT = 0.1263
0.9817 0.1424
0 0.0071
0
0.8559 0.0352
0.5160
0
0 0.0023

0.2135 0.9422
0.2582
0.4247 0.1485 0.8931
0.8798
0.3003
0.3685
analisi numerica

c
V.
Comincioli

3.5 I valori singolari e la pseudoinversa

117

Dal punto di vista teorico, la matrice A ha rango 3; comunque, per il Teorema 3.15, vi `e una matrice di
rango 2 che dista, nella norma 2, solo di 0.0023 e una matrice di rango 1 che dista solo di 0.0071, e gli
elementi di tali matrici sono entro gli errori sperimentali relativi alla matrice A. In conclusione, possiamo
soltanto dire che il rango di A `e almeno 1, ed inoltre `e ragionevole sostituire A con la matrice di rango 1
pi`
u vicina.

1.0193 2.0280 4.2011


0.0007
0.0020 0.0011
0.0020
A1 = 1 u1 v1T = 0.2567 0.5107 1.0580 , AA1 = 0.0067 0.0007
1.7395 3.4610 7.1696
0.0005 0.0010
0.0004

La capacit`a della decomposizione in valori singolari di fornire informazioni su come ottenere


approssimazioni, di rango inferiore, di una matrice assegnata, `e utile in molteplici applicazioni.
Segnaliamo, ad esempio, il suo utilizzo negli algoritmi di compressione dei dati, in particolare
nella codica di immagini (trasformata di Karhunen-Loeve. Come esemplicazione e in termini
schematici, supponiamo che B sia la matrice che denisce i livelli di grigio (blackness matrix )15 .
Mediante la decomposizione in valori singolari si vede se una approssimazione di rango inferiore
Br = 1 u1 v1T + + r ur vrT
pu`
o rappresentare adeguatamente limmagine. In caso aermativo, la matrice Br pu`
o essere
codicata mediante 2r vettori ui e vi e r numeri i . Se ad esempio `e adeguato r = 5, per una
matrice B di dimensioni 1000 1000 sar`a suciente memorizzare 2 5 1000 + 5 = 10 005 valori
anziche 1 000 000, con un risparmio di quasi il 99%.
Osservazione 3.6 Come si `e visto i quadrati dei valori singolari sono, in sostanza, gli autovalori delle

matrici A A, AA . Nel caso particolare in cui la matrice A `e hermitiana e denita positiva, i valori
singolari sono anche gli autovalori e gli autovettori sono dati dalle colonne di V. In generale, comunque,
non vi `e una relazione semplice tra gli autovalori e i valori singolari.
In teoria, si potrebbe pensare di calcolare i valori singolari risolvendo il problema degli autovalori per la
o portare a una perdita di accuratezza, come `e illustrato
matrice hermitiana A A, ma questa procedura pu`
dal seguente esempio.

1 1

A =  0 , || < eps, eps = precisione macchina


0 
Come prodotto A A si ha
A A =

1 + 2
1

1
1 + 2

2 + 2 , 2 = ||. Nellaritmetica oating-point, con precisione eps,




1 1
(A A) =
1 1

i cui autovalori sono 1 = 2, 2 = 0, e 2 non concorda, nella precisione macchina usata, con 2 .
Una procedura numerica pi`
u stabile consiste nel ridurre, mediante trasformazioni ortogonali di tipo
Householder, la matrice A ad una matrice bidiagonale e nellapplicare a questa il metodo QR (algoritmo
di Golub e Reinsch).

che ha come valori singolari: 1 =


invece di A A si ha

15

Ogni foto pu`


o essere discretizzata decomponendo limmagine in quadrettini e assegnando un livello di grigio ad
ogni quadrettino. Imponendo, ad esempio, una griglia di 1000 1000 su una foto e assegnando un livello di grigio
da 0 a 10, si ha una matrice blackness di 1 000 000 interi per ogni foto.
analisi numerica

c
V.
Comincioli

118

3.5.2

Elementi di algebra lineare

Applicazioni della SVD

Nel seguito, per semplicare le notazioni, supporremo le dimensioni della matrice tali che m n; questo
del resto corrisponde alla maggior parte delle applicazioni della SVD allanalisi dei dati sperimentali, nelle
quali aij rappresenta la i-ma osservazione della variabile j-ma. Supporremo inoltre A reale.

Sistemi lineari generali


La decomposizione in valori singolari permette di esaminare in maniera numericamente pi`
u conveniente le
nozioni di consistenza di un sistema lineare, di unicit`a delle soluzioni, e pi`
u in generale di dimensione dello
spazio delle soluzioni del sistema.
Sia A una matrice Rmn , con m n e rango r, e sia b un vettore dello spazio Rm . Il problema che
consideriamo `e la soluzione del sistema lineare
Ax = b

(3.38)

Usando la SVD di A, il sistema (3.38) diventa


UVT x = b
da cui
z = d
T

ove z = V x e d = U b. Il sistema di equazioni z = d `e diagonale e quindi pu`


o essere studiato
facilmente. Si ha infatti
j zj = dj ,
0zj = dj ,
0 = dj ,

se j n e j =
 0
se j n e j = 0
se j > n

Il secondo insieme di valori `e vuoto se r = n e il terzo `e vuoto se n = m.


Le equazioni risultano consistenti, cio`e esiste una soluzione se e solo se dj = 0 quando j = 0 o j > n.
Se r < n, allora le zj associate con un j nullo possono assumere un valore arbitrario. Ritornando alle
variabili x = Vz, questi valori arbitrari servono a parametrizzare lo spazio di tutte le possibili soluzioni x.
o essere scritta
Siano uj e vj le colonne di U e V. Allora la decomposizione SVD pu`
Avj = j uj ,

j = 1, 2, . . . , n.

Se j = 0, allora Avj = 0 e vj `e nello spazio nullo di A, cio`e in N (A), mentre se j = 0, allora uj R(A).
Si pu`
o pertanto dare una descrizione completa dello spazio nullo e dello spazio immagine, nel modo
seguente. Sia V0 linsieme delle colonne vj per le quali j = 0, e V1 le rimanenti colonne vj . Analogamente,
sia U1 linsieme delle colonne uj per le quali j = 0, e U0 le rimanenti colonne uj , incluse quelle con j > n.
Vi sono r colonne in V0 , n r in V1 e in U1 e m n + r in U0 . Inoltre
1. V0 `e una base ortonormale per N (A).
2. V1 `e una base ortonormale per N (A) .
3. U1 `e una base ortonormale per R(A).
4. U0 `e una base ortonormale per R(A) .
Lasciamo come esercizio la esemplicazione dei risultati precedenti relativamente alla seguente matrice

1 6 11
2 7 12

A=
3 8 13
4 9 14
5 10 15
analisi numerica

c
V.
Comincioli

3.5 I valori singolari e la pseudoinversa

119

e ad esempio, b = [5 5 5 5 5]T e b = [4 5 5 5 5]T .


La SVD di A `e la seguente

35.127
0
0
0.355 0.689
0.541
0.193
0.265

0.399 0.376 0.802 0.113


0.210
0
2.465 0

0.160 0.587 0.656


0
0
0
A = 0.443 0.062

0.487
0.251 0.079
0.742 0.378
0
0
0
0.531
0.564
0.180 0.235
0.559
0
0
0

0.202
0.890
0.408
0.517
0.257 0.816
0.832 0.376
0.408

Problema dei minimi quadrati lineari


Nel problema dei minimi quadrati lineari, unestensione del problema precedente, si cerca un vettore x che
minimizza la lunghezza euclidea del vettore residuo
r = Ax b

(3.39)

Brevemente, lorigine del problema, che `e anche noto come problema della regressione lineare, `e la seguente.
Sono date m coppie di valori
i = 1, . . . , m
(3.40)
(ti , yi ),
e si suppone che esista una relazione funzionale t y(t) tale che
yi = y(ti )
Si vuole, quindi, approssimare la funzione y(t) mediante la seguente combinazione lineare di n funzioni j ,
con n m
(3.41)
y(t) (t) := x1 1 (t) + x2 2 (t) + + xn n (t)
Osserviamo che nelle applicazioni i valori yi rappresentano usualmente delle rilevazioni sperimentali corrispondenti a diversi valori della variabile t. La funzione y(t) non `e, quindi, nota a priori e la funzione (t)
denita in (3.41) rappresenta una ipotesi, o pi`
u precisamente un modello matematico, mediante il quale si
vuole conoscere, in particolare, landamento del fenomeno, che si sta studiando, per valori della variabile t
diversi da ti . Quando, invece, la la funzione y(t) `e nota a priori, la (t) rappresenta una approssimazione
di y(t) mediante le funzioni j (t), che vengono scelte nellambito di classi di funzioni semplici, quali ad
esempio i polinomi algebrici o trigonometrici.
I valori xj , j = 1, . . . , n, i cosiddetti parametri del modello matematico, vengono scelti in maniera da
minimizzare16 una distanza, opportunamente denita, tra i valori calcolati (ti ) e i dati yi , per i = 1, . . . , m.
In particolare, il metodo dei minimi quadrati corrisponde a minimizzare la distanza euclidea.
Se introduciamo la matrice A (nota anche come matrice design) di componenti
aij = j (ti )

(3.42)

e indichiamo con b e x i vettori di componenti yi e xj , il problema precedente pu`o essere interpretato come
la ricerca di un vettore x Rn che risolve il seguente problema di minimo
minn

xR
16

ri2

(3.43)

i=1

Loperazione di ricerca ottimale dei parametri `e nota come procedura di tting.

analisi numerica

c
V.
Comincioli

120

Elementi di algebra lineare

ove ri rappresentano le componenti del vettore residuo corrispondente al seguente sistema sovradeterminato
Ax = b

(3.44)

Il problema pu`o avere pi`


u soluzioni quando le funzioni base i (t) sono linearmente dipendenti sui dati
o anche essere la conseguenza di errori sperimentali e di arrotondamento ed `e la
ti ; questa situazione pu`
causa del possibile malcondizionamento del problema dei minimi quadrati.
Un modo per risolvere (3.43) consiste nello scrivere la condizione necessaria per lesistenza del minimo,
cio`e nel porre uguali a zero le derivate di r2 rispetto a xj ; si ottiene in questo modo il seguente sistema
lineare
(3.45)
AT Ax = AT b
usualmente chiamato sistema delle equazioni normali. Si tratta di un sistema di n equazioni in n incognite.
La matrice dei coecienti AT A `e simmetrica, e nel caso in cui la caratteristica di A sia n (che corrisponde
al caso in cui le funzioni base i (t) siano linearmente indipendenti), `e pure denita positiva. Per la sua
risoluzione si hanno, quindi, a disposizione vari metodi, in particolare, come vedremo pi`
u avanti, il metodo
di Cholesky.
Tuttavia, osservando che il condizionamento della matrice A viene peggiorato 17 nel calcolo di AT A,
possono talvolta essere pi`
u opportuni, per motivi di stabilit`
a numerica, quei metodi che permettono il
calcolo della soluzione x, senza la costruzione esplicita della matrice AT A.
Una possibilit`
a, in questo senso, `e oerta dalla la SVD di A. Infatti, dal momento che le matrici
ortogonali conservano la distanza, si ha
r2 = UT (AVVT x b)2 = z d2
ove z = VT x e d = UT b. La SVD quindi, riduce il problema generale dei minimi quadrati a un problema
relativo a una matrice diagonale. Il vettore z che fornisce il minimo di r2 `e dato da
dj
,
se j =
 0
j
zj = arbitrari, se j = 0

zj =

La trasformazione x = Vz risolve il problema originario. Se la matrice A ha rango minore di n, la soluzione


non `e unica. In questo caso `e possibile aggiungere unulteriore condizione. Si pu`o ad esempio denire come
soluzione del problema dei minimi quadrati, il vettore x di minima lunghezza. Tale vettore pu`
o essere
ottenuto, ponendo
zj = 0,
se j = 0
Osservazione 3.7 Lintroduzione del metodo dei minimi quadrati `e legata a problemi astronomici, in
particolare la determinazione dellorbita di Cerere, un asteroide tra Marte e Giove. La paternit`
a del metodo
`e allorigine di una disputa tra Gauss e Legendre. Nel 1805 appare il lavoro Nouvelles methodes pour la
determination des orbites des cometes di A.M. Legendre contenente in unappendice una descrizione del
methode des moindre quarres. La chiarezza di tale lavoro insieme ad esempi numerici fanno conoscere il
metodo in tutta la comunit`
a scientica. Nonostante il lavoro di Legendre, Gauss chiama, nel suo famoso
trattato Theoria motus corporum celestum, pubblicato nel 1809, il metodo come mio principio, di cui ho
fatto uso gi`
a a partire dal 1795. Legendre, allora, protesta in una lunga lettera a Gauss: je nai jamais
appelle principium nostrum un principe quun autre avait publie avant moi. Gauss non rispose mai a
Legendre, ma ricord`
o ad altri lesistenza di uno scritto criptato nel suo diario del giugno 17, 1798.
17

Si ha, infatti 2 (AT A) = (2 (A))2 .

analisi numerica

c
V.
Comincioli

3.5 I valori singolari e la pseudoinversa

3.5.3

121

Pseudoinversa

Data una matrice A Rmn , viene detta matrice pseudoinversa 18 di A lunica matrice A+ Rnm che
verica le seguenti condizioni
1. AA+ A = A
2. A+ AA+ = A+
3. AA+ `e simmetrica
4. A+ A `e simmetrica
Si verica, facilmente, che nel caso di una matrice A quadrata e non singolare si ha A+ = A1 . Inoltre,
se A `e rettangolare e di rango n (n m), allora A+ = (AT A)1 AT , mentre se m n e il rango di A `e
m, allora A+ = AT (AAT )1 . Negli altri casi non ce una procedura semplice per il calcolo della matrice
pseudoinversa. Un metodo generale consiste nellutilizzo della SVD di A. Si ha, infatti
A+ = V+ UT

(3.46)

ove la matrice + `e la pseudoinversa della matrice . Si verica facilmente che la + `e la matrice diagonale
Rnm ad elementi j+ , con

1 se j = 0
+
j
j =

0, se j = 0
Dimostreremo, ora, che la soluzione del problema dei minimi quadrati pu`
o essere espressa nella forma
x = A+ b.

Figura 3.10 Soluzione secondo i minimi quadrati.


Siano N (A), R(A), rispettivamente lo spazio nullo e lo spazio immagine della matrice A; con N (A) ,
R(A) , indichiamo i corrispondenti spazi lineari ortogonali.
18

Uno studio sistematico del concetto di inversa generalizzata `e stato iniziato da Moore nel 1920. Un nuovo
impulso a tale argomento `e dovuto a Penrose nel 1955, da cui anche lattuale nome di pseudoinversa secondo
Moore-Penrose.
analisi numerica

c
V.
Comincioli

122

Elementi di algebra lineare

Indichiamo con P la matrice Rnn , che proietta Rn su N (A) e con P la matrice Rmm che
proietta Rm su R(A), cio`e
P = PT = P2 , Px = 0
T
2
P = P = P , Py = y

x N (A)
y R(A)

Per ogni b R(A) vi `e un unico x1 N (A) , che soddisfa Ax1 = b, cio`e vi `e una trasformazione univoca
f : R(A) Rn , con
Af (b) = b, f (b) N (A) , b R(A)
Infatti, dato b R(A), vi `e un vettore x, che soddisfa b = Ax; quindi b = A(Px + (I P)x) = APx =
Ax1 , dove x1 = Px N (A), poiche (I P)x N (A). Inoltre se x1 , x2 N (A) , con Ax1 = Ax2 ,
ne segue che x1 x2 N (A) N (A) = {0}, che implica x1 = x2 . La trasformazione f `e ovviamente
lineare.
La trasformazione composta f P : y Rm f (Py) Rn `e denita, dal momento che Py
R(A); essendo, inoltre, lineare, essa `e rappresentata da una matrice Rnm . Lasciamo come esercizio la
dimostrazione che tale matrice verica le condizioni di Moore-Penrose, e quindi che essa coincide con la
matrice pseudoinversa A+ di A. Osserviamo, anche, che A+ A `e il proiettore ortogonale P e analogamente
che AA+ coincide con P. Si pu`
o allora dimostrare il seguente risultato.
Teorema 3.16 Il vettore x+ = A+ b soddisfa a
Ax b2 Ax+ b2
Ax b2 = Ax+ b2 ,

x = x

(3.47)
(3.48)

x2 > x 2

ossia il vettore x+ `e, tra le soluzioni del problema dei minimi quadrati, quella di minima lunghezza euclidea.
Dimostrazione.
3.10)

Per il fatto che AA+ `e il proiettore ortogonale su R(A) si ha x Rn (cfr. Figura


Ax b = u v
u := A(x A+ b) R(A), v := (I AA+ )b = b Ax+ R(A)

Di conseguenza x Rn
Ax b22 = u22 + v22 v22 = Ax+ b22
e Ax b2 = Ax+ b2 ha luogo precisamente se Ax = AA+ b. Per un tale x, poniamo
x = x+ + (x x+ ),

x+ N (A)

Si ha A(x x+ ) = Ax AA+ b = 0, quindi x x+ N (A); pertanto


x22 = x+ 22 + x x+ 22 > x+ 22

Regolarizzazione di un sistema lineare


Dato il sistema lineare Ax = b, con A Rmn e b Rm , e con soluzione nel senso dei minimi quadrati
x+ = A+ b, supponiamo che il termine noto b sia perturbato mediante il vettore b Rm . In corrispondenza, si ha da risolvere il sistema A(x+ x) = b + b, da cui x = A+ b. Si ha, allora, la seguente
maggiorazione
x2 A+ 2 b2 = r1 b2
analisi numerica

c
V.
Comincioli

3.5 I valori singolari e la pseudoinversa

123

ove r rappresenta il minimo valore singolare di A. Daltra parte, dalla relazione x+ = A+ b si ricava
AA+ b2 = Ax+ 2 (cfr. (3.35)) 1 x+ 2 . In denitiva, si ha la seguente maggiorazione dellerrore
relativo
b2
1
x2

(3.49)
x+ 2
r AA+ b2
La maggiorazione (3.49) suggerisce lassunzione del quoziente 1 /r come numero di condizionamento
2 (A) della matrice A nei riguardi della soluzione del sistema lineare Ax = b mediante i minimi quadrati.
La denizione precedente di numero di condizionamento suggerisce come costruire problemi che approsu precisamente, si
simino il problema di minimo dato min Ax b2 , e che siano meglio condizionati. Pi`
pu`
o procedere nel seguente modo. Data la decomposizione A = UVT , si costruisce la matrice diagonale
r = diag(1 , 2 , . . . , , . . .) ponendo
 1
se

:=
0
altrimenti
ove > 0 `e un parametro da scegliere opportunamente. In altre parole il passaggio da a r comporta
leliminazione dei valori singolari piccoli. Di conseguenza, anziche considerare la soluzione x+ = A+ b,
+
+
+ T
+
e chiamata la eettiva
si considera lapprossimazione x+
r = Ar b, ove Ar := Vr U . La matrice Ar `
pseudoinversa di A e, per quanto abbiamo detto in precedenza, il corrispondente problema `e meglio
condizionato. Si pu`
o mostrare che la matrice A+
r verica le seguenti condizioni
+
T
A+
r A = (Ar A) ,

+ T
AA+
r = (AAr ) ,

+
+
A+
r AAr = Ar

AA+
r A A2
Leliminazione dei valori singolari piccoli `e chiamata una regolarizzazione del problema. Naturalmente,
il processo migliora il condizionamento, ma introduce un errore nel metodo. Vi sono altre possibilit`a
per regolarizzare un problema malcondizionato. Segnaliamo in particolare un metodo dovuto a Tichonov
(1963) che corrisponde a smorzare linuenza dei valori singolari piccoli.

 Esercizio 3.9 Dimostrare che le matrici A e A hanno gli stessi valori singolari.
 Esercizio 3.10 Dimostrare che se A Cnn , allora
| det(A)| =

n
&

i=1

 Esercizio 3.11 Dimostrare che A A `e denita positiva se e solo se le colonne di A sono linearmente
indipendenti, ossia se A ha rango massimo.

 Esercizio 3.12 Calcolare la SVD e la pseudoinversa delle seguenti matrici


1. un vettore v Cn ,
2. una matrice nulla Cmn ,
3. una matrice a rango 1, A = xy , x Cm , y Cn .

analisi numerica

c
V.
Comincioli

124

Elementi di algebra lineare

 Esercizio 3.13 Se A Cmn ; B Cnr , sono due matrici di rango massimo, dimostrare che
(AB)+ = B+ A+
Tale relazione pu`
o non essere valida quando una delle due matrici non `e di rango massimo. Ad esempio, se



2
2
1
1
A = 2 2 , B =
2
3
1
1
allora
(AB)+ =

3.6

1
[2, 2, 1],
3

B+ A+ =

1
[2, 2, 1]
30

Matrici non negative

Un vettore x Rn , o una matrice A Rmn , `e non negativa se tutte le componenti sono non negative,
ossia se xi 0, i = 1, . . . , n, o aij 0, i = 1, . . . , m; j = 1, . . . , n. Nel caso in cui le componenti sono tutte
strettamente positive, il vettore x o la matrice A `e detta positiva. Per indicare le matrici non negative
(positive), si user`a la notazione A 0 (rispettivamente A > 0). Di conseguenza la notazione x y, o
A B, signicher`
a x y 0, rispettivamente A B 0. Inne, con |A| si indicher`
a la matrice che ha
come elementi i valori assoluti degli elementi della matrice A.
Un esempio importante di matrici non negative `e dato dalle matrici stocastiche o matrici di Markov .
Ricordiamo che gli elementi di tali matrici rappresentano delle probabilit`a, e quindi sono non negativi;
inoltre, si ha che le somme di tutte le colonne sono uguali a 1, ossia ni=1 aij = 1, j = 1, . . . , n.
Per le matrici A di Markov, con A > 0 si ha il seguente importante risultato che introduce linteresse
numerico delle matrici positive.
, con
Proposizione 3.10 Se A `e una matrice stocastica positiva, allora esiste un unico vettore positivo x
(0)
n
n
(0)
i = 1, tale che per ogni vettore non negativo x
con i=1 xi = 1, la successione denita nel
i=1 x
modo seguente
x(k+1) = Ax(k) , k = 0, 1, . . .
verica
,
x(k) x

per k

La dimostrazione di tale risultato `e basata sul seguente risultato relativo al raggio spettrale (A) delle
matrici positive.
Proposizione 3.11 (Perron) Sia A una matrice positiva di ordine n. Allora, (A) `e un autovalore semplice di A, e tutti gli altri autovalori sono minori in modulo di (A). Inoltre, `e possibile prendere un
autovettore corrispondente a (A) positivo.
Da tale risultato si ricava che per le matrici positive lautovalore di modulo massimo `e sempre reale.
Il risultato di Perron pu`
o essere esteso alle matrici non negative che hanno la propriet`a della irriducibilit`
a , e che analizzeremo nel successivo paragrafo.
I risultati di base di Perron e Frobenius sulle matrici non negative risalgono ai primi anni del900, ma
largomento ha conosciuto negli ultimi anni un risveglio di interesse, a causa delle molte applicazioni delle
matrici non negative nellanalisi numerica, nella probabilit`
a e nella statistica, nei modelli economici, e in
molti altri tipi di modelli matematici.
analisi numerica

c
V.
Comincioli

3.6 Matrici non negative

3.6.1

125

Matrici irriducibili

Una matrice A Rnn `e detta riducibile se vi `e una matrice permutazione P tale che


A11 A12
T
PAP =
0
A22

(3.50)

ove A11 e A22 sono sottomatrici quadrate. Una matrice `e irriducibile se essa `e non riducibile.
Naturalmente, una matrice ad elementi tutti diversi da zero `e irriducibile; daltra parte una matrice
con tutta una colonna o riga nulla `e riducibile. In eetti, il concetto di riducibilit`
a non `e connesso con la
grandezza o il segno degli elementi di una matrice, ma dipende solo dalla disposizione degli elementi nulli.
Questa idea `e alla base dellutilizzo del grafo orientato associato alla matrice.
Il grafo orientato di una matrice Rnn `e ottenuto congiungendo n punti (vertici) P1 , . . . , Pn mediante
una linea orientata da Pi a Pj , se aij = 0, per i = j. Ricordiamo che un grafo orientato `e fortemente
connesso se per ogni coppia di punti distinti Pi e Pj vi `e un cammino orientato da Pi a Pj . Si ha allora il
seguente risultato.
Proposizione 3.12 Una matrice A Rnn `e irriducibile se e solo se il grafo orientato relativo a A `e
fortemente connesso.
Ad esempio (cfr. Figura 3.11), la matrice

2
A= 1
0
`e irriducibile, mentre sono riducibili le matrici

1 0 1
B = 1 0 2 ,
1 0 0

1 0
2 1
1 2

0
C= 1
2

0 0
1 1
2 2

Figura 3.11 Gra relativi alle matrici A,B,C.


Per le matrici non negative e irriducibili si ha il seguente risultato che contiene il precedente risultato
di Perron come caso particolare.
analisi numerica

c
V.
Comincioli

126

Elementi di algebra lineare

Teorema 3.17 (Perron-Frobenius) Sia A una matrice Rnn non negativa e irriducibile. Allora il raggio
spettrale (A) `e un autovalore semplice di A e un autovettore associato pu`
o essere preso positivo. Inoltre,
se A ha almeno una riga con tutti gli elementi diversi dallo zero allora ogni altro autovalore di A `e tale
che || < (A).
Per una dimostrazione si veda ad esempio Ortega [321]; essa sfrutta il seguente interessante risultato.
Lemma 3.1 Se B `e una matrice Rnn irriducibile non negativa con elementi diagonali positivi, allora
Bn1 > 0.
Come illustrazione del risultato di Perron-Frobenius,

0
A= 0
1

si consideri la seguente matrice

1 0
0 1
0 0

che, come si verica facilmente, `e irriducibile. I suo autovalori corrispondono alle radici dellequazione

a 1 e (1 i 3)/2. I tre autovalori hanno quindi


caratteristica 3 1 = 0, cio`e alle radici cubiche dellunit`
modulo uguale a 1, ma lautovalore 1 `e semplice e ad esso corrisponde lautovettore [1, 1, 1]T .

3.6.2

Matrici con inverse non negative; M-matrici

Una matrice A Rnn `e ad inversa non negativa se essa `e invertibile e A1 0. Un esempio di condizioni
che assicurano che una matrice A `e a inversa non negativa, `e dato dal seguente risultato.
Teorema 3.18 Sia A una matrice Rnn con elementi diagonali positivi e poniamo D = diag(a11 , . . . , ann ).
Supponiamo che B = D A 0 e (D1 B) < 1. Allora esiste A1 ,con A1 0. Inoltre, se A `e
irriducibile, allora A1 > 0.
Per le matrici non negative o ad inversa non negativa vi sono diversi risultati di tipo confronto.
Proposizione 3.13 Se A B sono matrici Rnn con inverse non negative, allora A1 B1 .
Dimostrazione. Da A1 (A B) 0 si conclude che A1 B I. Quindi, (I A1 B)B1 0, che `e
equivalente a A1 B1 .
Proposizione 3.14 Se 0 A B, allora (A) (B)
Vediamo ora una classe importante di matrici a inversa positiva.
Denizione 3.3 Una matrice A Rnn `e una M-matrice se aij 0, i, j = 1, . . . , n, i = j, e A1 0.
Una M-matrice simmetrica `e detta matrice di Stieltjes19 .
Posto A = D B, ove D `e la matrice diagonale costituita dagli elementi sulla diagonale principale di A e
B `e la matrice degli elementi fuori dalla diagonale, si ha
I = (D B)A1 = DA1 BA1
Tale risultato mostra che gli elementi di D sono positivi, in quanto BA1 0. In eetti, si pu`
o dimostrare
il seguente risultato.
19

Thomas Jan Stieltjes (1856-1894).

analisi numerica

c
V.
Comincioli

3.6 Matrici non negative

127

Proposizione 3.15 Una matrice reale A di ordine n con elementi fuori dalla diagonale non positivi `e una
M-matrice se e solo se A ha elementi positivi sulla diagonale e (D1 B) < 1.
Esempio 3.2 Sia A la seguente matrice tridiagonale

a1 b 1

..
c1 a 2
.
A=

.
.
..
..

cn1

bn1
an

(3.51)

ove
ai > 0, i = 1, . . . , n,

bi < 0, ci < 0,

i = 1, . . . , n 1

(3.52)

e
a1 + b1 > 0,

an + cn1 > 0,

ai + bi + ci1 0, i = 2, . . . , n 1

(3.53)

Matrici di tale forma sono alla base di diversi modelli applicativi (in particolare, come vedremo nel seguito,
nella risoluzione di problemi dierenziali mediante i metodi alle dierenze nite).
Si pu`
o dimostrare che nelle ipotesi (3.52), (3.53) la matrice (3.51) `e una M-matrice, con A1 > 0.
Come applicazione delle Mmatrici esaminiamo la seguente situazione. Supponiamo che in un sistema
lineare Ax = b, il vettore b sia dato con approssimazione, ad esempio b1 b b2 . Se A `e una M-matrice,
si ha allora la seguente stima della soluzione: A1 b1 A1 b = x A1 b2 .
Una condizione suciente anche una matrice sia una M-matrice `e fornita dalla propriet`a di predominanza diagonale, denita nel seguente modo.
Denizione 3.4 Una matrice A Rnn `e diagonalmente dominante se
n

|aij | |aii |,

i = 1, . . . , n

(3.54)

j=1, j=i

e strettamente diagonalmente dominante se in (3.54) si ha la disuguaglianza stretta per tutti gli indici
i. Inne, la matrice `e irriducibilmente diagonalmente dominante se essa `e irriducibile, diagonalmente
dominante, e la (3.54) ha luogo con disuguaglianza stretta per almeno un indice i.
Relativamente a tale classe di matrici si ha il seguente importante risultato.
Teorema 3.19 Una matrice A Rnn , strettamente o irriducibilmente diagonalmente dominante, `e
invertibile.
Dimostrazione. Considerando ad esempio il caso in cui A `e strettamente diagonalmente dominante,
supponiamo che esista un x = 0, tale che Ax = 0. Sia |xm | = max1jn |xj |. Allora |xm | > 0 e la
disuguaglianza


amj xj | |xm |
|amj |
|amm ||xm | = |
j=m

j=m

contraddice la stretta dominanza diagonale. In maniera analoga si procede quando A `e irriducibilmente


diagonalmente dominante.
Abbiamo inoltre la seguente propriet`
a.
Teorema 3.20 Se una matrice A Rnn , strettamente o irriducibilmente diagonalmente dominante, `e
tale che aij 0, i = j e aii > 0, i = 1, . . . , n, allora A `e una M-matrice.
analisi numerica

c
V.
Comincioli

128

Elementi di algebra lineare

Per una dimostrazione si veda ad esempio Ortega [321].

 Esercizio 3.14 Vericare che una matrice tridiagonale `e irriducibile se e solo se gli elementi della
sopra- e sotto-diagonale sono diversi dallo zero.

 Esercizio 3.15 Mostrare che se A `e una matrice non negativa e irriducibile, allora An1 `e positiva.

3.7

Complementi e Problemi

Problema 3.1 Dimostrare che il determinante della matrice tridiagonale

b1 c1
a2 b2 c2

a3 b3
c3

Jn =

..
..
..

.
.
.

an1 bn1 cn1


an
bn
pu`
o essere calcolato mediante la seguente relazione ricorrente
det(J0 ) = 1, det(J1 ) = b1
det(Jn ) = bn det(Jn1 ) an cn1 det(Jn2 )
Soluzione. Sviluppando secondo lultima riga si ottiene
det(Jn ) = bn det(Jn1 ) an det(n )
ove la matrice n `e ottenuta sopprimendo in Jn la riga e la colonna contenente lelemento an

b 1 c1

a2 b 2
c2

..

.
n =

b
c
a
n3
n3
n3

an2 bn2
an1 cn1
Sviluppando secondo lultima colonna si ottiene
det(n ) = cn1 det(Jn2 )
da cui il risultato richiesto.

Problema 3.2 Se A `e una matrice simmetrica denita positiva, dimostrare che


det(A + xxT ) = (xT A1 x) det(A) + det(A)
per ogni vettore x.
analisi numerica

c
V.
Comincioli

3.7 Complementi e Problemi

129

Soluzione. Il caso x = 0 `e ovvio. In caso contrario, poiche per ipotesi la matrice A `e simmetrica
denita positiva, esiste una matrice ortogonale U tale che A = UT U, ove `e la matrice diagonale degli
autovalori della matrice A. Posto R = UT 1/2 U, si ha
det(A + xxT ) = det(A) det(R) det(I + A1 xxT ) det(R)1
= det(A) det(I + yyT ),

con y = R1 x

La matrice yyT `e simmetrica e quindi diagonalizzabile. Essendo di rango uno (con immagine costituita
dai vettori proporzionali a y), ha come nucleo un sottospazio di dimensione (n 1). Dal momento che
tr(yyT ) = yT y, si ha che yT y `e un autovalore semplice associato allautovettore y. Se ne ricava che lo
spettro della matrice (I + yyT ) `e formato dai numeri: (1 + yT y, 1, . . . , 1) e quindi
det(I + yyT ) = 1 + yT y = 1 + xT R1 R1 x = 1 + xT A1 x

Problema 3.3 Esaminare le seguenti questioni


(1) Sia A Rnn una matrice con elementi in modulo inferiori a una costante M > 0 assegnata
|aij | M,

1 i, j n

Dare una condizione suciente su M anche la serie


somma (I A)1 .

m
m0 A

sia convergente e abbia come

(2) Mostrare mediante un esempio che la condizione suciente trovata al punto (1) non `e una
condizione necessaria.
(3) Si vuole calcolare linversa della matrice

0.98
0.02
0.08
0.93

0.04
0.01

0.02 0.03
0.07
0.04

0
0.04
0
0.08 0.07 0.03

0.97 0.07 0.04

0
1.03
0
0
0.08
1.01

scrivendola sotto la forma I A, ove tutti gli elementi di A sono piccoli, e utilizzando la serie
m
m0 A . Si vuole ottenere ciascun elemento della matrice inversa con un errore inferiore a
0.01. Si vuole quindi conoscere a quale valore di m occorre troncare la serie.
Soluzione. Anche la serie

converga e abbia per somma (I A)1 `e necessario e suciente


che (A) < 1, ove (A) indica il raggio spettrale di A. Daltra parte per ogni norma di matrice si ha
(A) A. Considerando ad esempio la norma A , si ha
m
m0 A

|aij | M,

i, j A = max

1in

|aij | n M

j=1

Pertanto la condizione
M<
`e una condizione suciente anche la serie
analisi numerica

1
n

m
m0 A

(3.55)

converga e abbia somma (I A)1 .


c
V.
Comincioli

130

Elementi di algebra lineare

Un esempio per il quale la serie m0 Am converge, ma non `e vericata la condizione (3.55), `e fornito
dalle matrici A nilpotenti, cio`e dalle matrici per le quali si ha Ap = 0 per un certo p 1. Ad esempio
per n = 2





M
M
1+M
M
1
A=
; (I A) =
= I + A (=
Am )
M M
M
1M
m0

Un altro esempio, che lasciamo sviluppare come esercizio, `e fornito dalle matrici diagonali.
Nel calcolo richiesto al punto (3) si ha M = 0.08 < 1/5 e quindi la serie m0 Am converge. Osservando
che, se ap `e un elemento di Ap si ha
|ap | np1 M p
ne deriva che ogni elemento rp di
|rp |

mp

Am verica la seguente maggiorazione

(0.4)p1 0.08
M p np1
=
= 0.13 (0.4)p1 < 0.01
1 nM
0.6

` suciente quindi calcolare I + A + A2 + A3 .


se p = 4. E

Problema 3.4 Analizzare dal punto di vista della riducibilit`


a le seguenti matrici

0
0
A1 =
0
1

0
0
A3 =
0
1

0
0
1
0

1
0
0
0

1
0
0
1

0
1
0
0

0
1

0
0

0
0

1
0

0
0
A2 =
1
0

1
0
A4 =
0
1

0
0
0
1

1
0
0
0

1
0
0
0

0
1
0
0

0
1

0
0

0
0

1
0

Soluzione.

Una condizione necessaria e suciente anche una matrice A Rnn sia irriducibile `e che per ogni coppia ordinata (i, j) di elementi di {1, 2, . . . , n} si possa trovare una successione
aik1 , ak1 k2 , . . . , akp j di elementi non nulli di A.
Nel caso della matrice A1 consideriamo la successione a13 , a32 , a24 , a41 , a13 , a32 , a24 di elementi uguali a
1. Qualunque sia la coppia (i, j) esiste una sottosuccessione che soddisfa la denizione precedente. Quindi
A1 `e irriducibile.
Per A2 consideriamo la coppia (1, 2). Si ha che a1k1 = 0 implica k1 = 3 e a3k2 = 0 implica k2 = 1.
Quindi non `e possibile trovare una successione a1k1 , ak1 k2 , . . . , akp k2 di elementi diversi dallo zero; pertanto,
la matrice A2 `e riducibile.
La matrice A3 `e irriducibile in quanto basta considerare la successione a12 , a23 , a34 , a41 , a12 , a23 , a34 di
elementi uguali a 1.
In modo analogo si vede che la matrice A4 `e irriducibile.
In termini della teoria dei gra si ha che una condizione necessaria e suciente anche una matrice
A Rnn sia irrriducibile `e che il suo grafo associato sia fortemente connesso, cio`e per ogni coppia di nodi
(i, j) vi sia un cammino orientato da i a j. Lasciamo come esercizio lo studio dei gra relativi alle matrici
considerate.

analisi numerica

c
V.
Comincioli

3.7 Complementi e Problemi

131

Problema 3.5 Sia


A=

A11 A12
A21 A22

una matrice quadrata decomposta a blocchi. Mostrare che se A11 `e invertibile allora
det(A) = det(A11 ) det(A22 A21 A1
11 A12 )
Soluzione. Essendo A11 invertibile, si pu`o scrivere


A=

A11
A21

A12
A22

I
A21 A1
11

0
I

 

A11
0

A12
(A22 A21 A1
11 A12 )

In questo modo il calcolo `e ricondotto a quello del determinante di matrici triangolari a blocchi. Per tali
matrici `e suciente sviluppare secondo la colonna contenente il blocco degli zeri.

Problema 3.6 Mostrare che se A Cmn `e una matrice di rango r, essa pu`
o essere rappresentata nella forma
A = BC
a di tale rappresentazione.
ove B Cmr e C Crn , ambedue di rango r. Discutere lunicit`
Soluzione. Possiamo assumere, senza perdita di generalit`a, che la sottomatrice principale A11 di ordine
r sia non singolare. In caso contrario, infatti, `e possibile trovare due matrici di permutazione P1 e P2 tali
1
che P1 AP2 abbia tale propriet`a e se P1 AP2 = BC allora A = (P1
1 B)(CP2 ).
Dimostriamo allora la seguente uguaglianza






I
A11 A12
A11 A12
=
A=
A21 A22
A21 A1
11
In eetti, lunico punto da dimostrare `e che A21 A1
11 A12 = A22 . A tale scopo osserviamo che, dal momento
che il rango della matrice A `e r e le prime r righe sono indipendenti, le rimanenti m r righe possono
essere rappresentate come combinazioni lineari delle prime. Questo equivale a dire che esiste una matrice
Z C(mr)r tale che
 


Z A11 A12 = A21 A22
da cui si ricavano le uguaglianze: ZA11 = A21 e ZA12 = A22 che esprimono il risultato richiesto. Sottolineiamo che i due fattori trovati sono di rango r, in quanto la prima matrice ha il blocco I di ordine r e la
seconda, che ha r righe, include A11 .
Per quanto riguarda lunicit`
a della rappresentazione, osserviamo che se B, C sono due fattori di A,
allora sono tali anche le due matrici BQ e Q1 C per ogni matrice Q Crr non singolare.
Ricordiamo, comunque, il seguente risultato. Data una particolare decomposizione BC, la pseudoino essere espressa nella seguente forma
versa A+ della matrice A pu`
A+ = C (CC )1 (B B)1 B
che non dipende dalla particolare scelta della fattorizzazione A = BC. Ricordiamo che C indica la
trasposta coniugata di C. Il vettore x = A+ b rappresenta la soluzione nel senso dei minimi quadrati del
sistema sottodeterminato Ax = b.

Problema 3.7 Trovare la pseudoinversa di un vettore colonna.


analisi numerica

c
V.
Comincioli

132

Elementi di algebra lineare

Soluzione. Sia a Cm un vettore non nullo. Per il calcolo della pseudoinversa A+ della matrice

A = a Cm1 , consideriamo la sua decomposizione in valori singolari A = UV . A questo proposito,


ricordiamo che i quadrati dei valori singolari sono gli autovalori della matrice AA Cmm , mentre le
colonne della matrice U corrispondono agli autovettori normalizzati della stessa matrice e quelle della
matrice V agli autovettori normalizzati della matrice A A.
Osserviamo che la matrice aa `e una matrice di ordine m i cui autovalori sono dati da {a a, 0, . . . , 0}.
Dal momento che (aa )a = a(a a), si ha che lautovettore di aa corrispondente
a a a `e il vettore a.

Questo signica che la prima colonna della matrice unitaria U `e data da a/ a a. Come vedremo, non
servono altre informazioni su U.
Poiche [a a] `e una matrice 1 1 possiamo assumere V = [1]. Si ha allora




a a, 0, 0, . . . , 0 ,
+ = 1/ a a, 0, 0, . . . , 0
=
Avremo pertanto
A+ = V+ U =

3.7.1

1
a
a a

Matrici in stechiometria

Una reazione chimica `e una trasformazione di certe sostanze (reagenti) in altre sostanze (prodotti di reazione) conservativa rispetto ai tipi di atomi ed ai numeri di atomi di ciascun tipo20 . Una reazione chimica
comporta quindi variazioni in quantit`
a delle diverse sostanze in rapporti ssati.
Assumendo come esempio illustrativo la reazione di ossidazione dellammoniaca (NH3 ) con ossigeno
molecolare (O2 ) con produzione di ossido di azoto (NO) e acqua (H2 O), per schema stechiometrico della
reazione si intende la notazione simbolica
4 NH3 + 5 O2 4 NO + 6 H2 O
ove i numeri che precedono le formule chimiche, detti numeri (o coecienti) stechiometrici, sono i minimi
interi (positivi) che esprimono nel modo pi`
u semplice e comodo possibile luguaglianza dei numeri di atomi
di ciascun tipo tra linsieme dei reagenti e quello dei prodotti. I numeri stechiometrici sono tali che i
rapporti tra (ad esempio) il primo di essi e ciascuno degli altri tre, ossia: 45 , 44 , 46 , individuano (in valore
assoluto) i rapporti fra la variazione in quantit`
a di NH3 e le rispettive variazioni di O2 , NO e H2 O.
La determinazione dei numeri stechiometrici di uno schema di reazione, chiamata operazione di bilanciamento, pu`
o essere ottenuta mediante dierenti metodi. Nel seguito illustreremo su un esempio particolare
una procedura basata sullutilizzo dellalgebra lineare.

(i) Dato il seguente schema di reazione non bilanciato


Pb (N3 )2 + Cr (MnO4 )2 Cr2 O3 + MnO2 + Pb3 O4 + NO
ove gli atomi di azotidrato di piombo e di permanganato di cromo si combinano dando origine a quattro
prodotti: ossido di cromo, diossido di manganese, tetrossido di piombo, e ossido di azoto, si cercano gli
interi u, v, w, x, y e z tali che u molecole di azotidrato di piombo pi`
u v molecole di permanganato di cromo
producono esattamente w molecole di ossido di cromo, x molecole di diossodo di manganese, y molecole di
tetrossido di piombo, e z molecole di ossido di azoto, ossia
u Pb (N3 )2 + v Cr (MnO4 )2 w Cr2 O3 + x MnO2 + y Pb3 O4 + z NO

(3.56)

20
e, se alla reazione chimica partecipano specie ioniche, rispetto alla carica elettrica. Esempi di reazioni implicanti
specie ioniche sono le reazioni tra sostanze allo stato disciolto in un solvente polare ed in particolare nellacqua; in
eetti in tale ambiente di reazione molti composti inorganici esistono, almeno parzialmente, sotto forma di specie
ioniche.

analisi numerica

c
V.
Comincioli

3.7 Complementi e Problemi

133

A tale scopo, i cinque elementi in gioco nella reazione: Pb, N, Cr, Mn, O, possono essere considerati come
vettori linearmente indipendenti dello spazio euclideo R5 . In particolare, essi possono essere associati ai
vettori unitari ei , i = 1, . . . 5 nel seguente modo
Pb
N
Cr
Mn
O
La reazione (3.56) pu`
o essere allora


+v
0
u

0
0

e1
e2
e3
e4
e5

[1, 0, 0, 0, 0]T
[0, 1, 0, 0, 0]T
[0, 0, 1, 0, 0]T
[0, 0, 0, 1, 0]T
[0, 0, 0, 0, 1]T

descritta dalla seguente equazione vettoriale

0
3
0
0
0
1
0
0
0
0

1
= w 2 + x 0 + y 0 + z 0
0
0
1
0
2
4
2
3
8
1

(3.57)

che rappresenta un sistema lineare omogeneo di cinque equazioni nelle sei incognite u, v, w, x, y, z.
Il problema del bilanciamento `e allora ricondotto a quello della ricerca di opportune soluzioni intere del
sistema sottoderminato (3.57). Ponendo per il momento u = 1, si ottiene il seguente sistema ridotto

1
v
0 0 0 3 0
0 0 0 0 1 w 6

1 2 0 0 0 x = 0

2 0 1 0 0 y 0
0
z
8 3 2 4 1
che ha come soluzione il vettore [44/15, 22/15, 88/15, 1/3, 6]T . Assumendo allora u = 15, si ottengono i
numeri stechiometrici cercati
u = 15, v = 44, w = 22, x = 88, y = 5, z = 90
Osserviamo che la risolubilit`a del sistema ridotto corrisponde al fatto che la reazione `e a stechiometria
univoca. Il metodo `e illustrato da ulteriori esempi.

(ii) Per bilanciare lo schema di reazione


u Ca(H2 PO4 )2 + v Ca(OH)2 x Ca3 (PO4 )2 + y H2 O
posto
Ca = e1 ; H = e2 ; P = e3 ; O = e4
si ottiene lequazione vettoriale

1
1
4
2

u
2 +v 0
8
2

3
0

0
2
= x

2 +y 0
8
1

da cui, posto u = 1 e trascurando la quarta equazione,

3 0 1
0 2 2
2 0
0

il seguente sistema ben posto


1
x
y = 4
2
v

che ha la soluzione [1, 4, 2]. Pertanto lo schema bilanciato `e il seguente


Ca(H2 PO4 )2 + 2 Ca(OH)2 Ca3 (PO4 )2 + 4 H2 O
analisi numerica

c
V.
Comincioli

134

Elementi di algebra lineare

(iii) Per bilanciare lo schema di reazione


u P2 I4 + v P4 + wH2 O x PH4 I + y H3 PO4
posto
P = e1 ; I = e2 ; H = e3 ; O = e4
si ottiene lequazione vettoriale

2
4
u
0
0

+v 0 +w

da cui, posto u = 1, il seguente sistema

1
1

4
0

0
= x

2
1

1
1
0
1
+y
3
4
0
4

ben posto

1 4
0
x
y
0
0
0

3
0 2 v
4
0 1
w

2
4

=
0
0

che ha la soluzione [4.0, 3.2, 1.3, 12.8]. Assumendo u = 10, si ha il seguente schema bilanciato
10 P2 I4 + 13 P4 + 128 H2 O 40 PH4 I + 32 H3 PO4

(iv) Per bilanciare lo schema di reazione


u C2 H5 Cl + v NaPb x (C2 H5 )4 Pb + y NaCl + z Pb
descrittivo del processo industriale di produzione del piombo tetraetile, additivo antidetonante delle benzine, posto
C = e1 ; H = e2 ; Cl = e3 ; Na = e4 ; Pb = e5
si ottiene lequazione vettoriale

2
5

u
1
0
0

+v

0
0
0
1
1

da cui, posto u = 1, il seguente sistema ben

8 0
20 0

0 1

0 1
1 0

= x

8
20
0
0
1

+y

0
0
1
1
0

+z

0
0
0
0
1

posto
0
0
0
0
0
0
0 1
1 1

2
x
5

z = 1

0
v
0

che ha la soluzione [0.25, 1, 0.75, 1]. Pertanto lo schema bilanciato `e il seguente


4 C2 H5 Cl + 4 NaPb (C2 H5 )4 Pb + 4 NaCl + 3 Pb
analisi numerica

c
V.
Comincioli

3.8 Esperienze con Matlab

135

(v) Consideriamo, inne, il seguente schema di reazione (non bilanciato)


u HClO3 x HClO4 + y Cl2 + z O2 + t H2 O
Posto
H = e1 ; Cl = e2 ; O = e3
si ottiene lequazione vettoriale

1
1
0
0
2
u 1 = x 1 + y 2 + z 0 + t 0
3
4
0
2
1

Se si pone u = 1, si ottiene il seguente sistema


x, y, z, t

1 0 0
1 2 0
4 0 2

lineare omogeneo di tre equazioni nelle quattro incognite

x
2
y
0
z
1
t

= 1

Essendo la caratteristica della matrice dei coecienti uguale a 3, le soluzioni costituiscono uno spazio
lineare di dimensione 1. Dal punto di vista chimico, signica che nello schema dato sono mascherati due
schemi di reazione indipendenti, ciascuno implicante almeno una sostanza in meno che nellaltro. Come
esemplicazione, si hanno i seguenti possibili schemi bilanciati
5 HClO3 3 HClO4 + Cl2 + O2 + H2 O
8 HClO3 4 HClO4 + 2 Cl2 + 3 O2 + 2 H2 O
11 HClO3 5 HClO4 + 3 Cl2 + 5 O2 + 3 H2 O

3.8

Esperienze con Matlab

Le matrici sono i dati sui quali opera MAT(trix)LAB(oratory). Vi sono quindi diverse operazioni
sulle matrici messe a disposizione gi`a compilate (builded). La loro conoscenza `e importante per
massimizzare lecienza dellesecuzione di programmi matlab.
In questo paragrafo richiameremo attraverso esemplicazioni alcune di tali operazioni.

3.8.1

Matrix indexing: operazioni su indici di matrici

v=[16 5 9 4 2 11 7 14];
v(3)
% estrae il terzo elemento
ans = 9
-----v([1 5 6]) % estrae il primo, il quinto e il sesto elemento
ans = 16
2
11
-----v(logical([1 0 0 0 1 1 0 0])) % logical subscription
ans = 16
2
11
-----v(3:7)
% estrae gli elementi dal terzo fino al settimo
ans = 9
4
2
11
7
-----analisi numerica

c
V.
Comincioli

136

Elementi di algebra lineare

m=[-1 2 1 -1]
m>0
ans = 0
1
1
0
m(m>0)
ans = 2
1
-----v([2 5])= v([5 2]) % scambia tra loro il secondo e il quinto elemento
v = 16 2 9 4 5 11 7 14

Pi`
u in generale per una matrice a due indici
A=rand(3)
A = 0.9501
0.4860
0.4565
0.2311
0.8913
0.0185
0.6068
0.7621
0.8214
A([1 3],:)=A([3 1],:) % scambia tra loro la prima e la terza riga
A = 0.6068
0.7621
0.8214
0.2311
0.8913
0.0185
0.9501
0.4860
0.4565

Ritornando al vettore v originario


v2=v([5:8 1:4]) % estrae e scambia tra loro le due met`
a del vettore
v2 = 2
11
7
14
16
5
9
4
-----v(end) % estrae lultimo elemento
ans = 14
-----v(5:end) % estrae gli elementi dal quinto fino allultimo.
ans = 2
11
7
14
-----v(2:end-1)
ans = 5
9
4
2
11
7
-----v(1:2:end) % estrae gli elementi di indice dispari
ans = 16
9
2
7
-----v(end:-1:1) % inverte lordine degli elementi
ans =
14
7
11
2
4
9
5
16
% Il risultato pu`
o essere ottenuto (pi`
u rapidamente) mediante la % funzione
fliplr(v)

v([2 3 4])=[10 15 20] % sostituisce alcuni elementi di v


v = 16
10
15
20
2
11
7
14
-----v([2 3 ])=30 % sostituisce il secondo e il terzo elemento con 30
v = 16
30
30
20
2
11
7
14

Matrici a due indici


A=magic(4)
A = 16
2
5
11
analisi numerica

3
10

13
8
c
V.
Comincioli

3.8 Esperienze con Matlab

137

9
7
6
12
4
14
15
1
-----A(2,4) % estrae lelemento nella riga 2 e colonna 4
ans = 8

Pi`
u generalmente
A(2:4, 1:2)
ans =5
11
9
7
4
14
A(3,:) % estrae la terza riga; : `
e una short-hand notazione per 1:end
ans = 9
7
6
12
A(:,end) % estrae lultima colonna
ans =13
8
12
1

Supponiamo che si vogliano estrarre diversi elementi, ad esempio di indici (2,1), (3,2), (4,4).
Lespressione A([ 2 3 4], [1 2 4]) non funziona. Infatti
A([ 2 3 4], [1 2 4])
ans =5
11
8
9
7
12
4
14
1

Lo scopo pu`o essere ottenuto utilizzando il linear indexing degli elementi della matrice.
Ricordando che Matlab memorizza A in un vettore procedendo per colonne, si ha ad esempio
A(14) %lo stesso che A(2,4)
ans = 8
A([6 12 15])
ans = 11
15
12

Gli indici lineari corrispondenti agli indici (2,1), (3,2), (4,4) possono essere ottenuti nel seguente
modo
idx=sub2ind(size(A),[2 3 4],[1 2 4])
idx = 2
7
16

e quindi in denitiva gli elementi richiesti sono


A(idx)
ans = 5

Per estrarre da una matrice data una particolare diagonale o delle sottomatrici triangolari
superiori o inferiori si veda
help diag
help triu
help tril
analisi numerica

c
V.
Comincioli

138

Elementi di algebra lineare

Problema 3.8 Porre alcuni elementi di una matrice a zero. Ad esempio, data la matrice
A =

1
5
7

2
5
9

3
6
8

4
5
3

si vuole ottenere la matrice nella quale tutti gli elementi sono posti a zero salvo lelemento
massimo in ogni riga, ossia la matrice
0
0
0

0
0
9

0
6
0

4
0
0

Soluzione. Lo scopo pu`o essere ottenuto nel seguente modo compatto


[Y,I]=max(A,[],2) % Y elementi massimi su ogni riga
Y = 4
6
9
I = 4
3
2
B=zeros(size(A));
B(sub2ind(size(A),1:length(I), I))=Y
B = 0
0
0
4
0
0
6
0
0
9
0
0

Problema 3.9 Creare una matrice con elementi


[2,3; 5,6;8,9; 11,12;...]

Soluzione.
x=1:51;
x=reshape(x,3,length(x)/3);
A=x(2:3,:)

Costruire matrici con righe uguali

(utili ad esempio nella graca 3D)

n=5;
J = 1:n;
J = J(ones(n,1),:) %Tonys Trick
J = 1
2
3
4
5
1
2
3
4
5
1
2
3
4
5
1
2
3
4
5
1
2
3
4
5
analisi numerica

c
V.
Comincioli

3.8 Esperienze con Matlab

139

-----u=[10 11 12];
u=u(ones(5,1),:)
u = 10
11
12
10
11
12
10
11
12
10
11
12
10
11
12

-----A=magic(3)
8
1
6
3
5
7
4
9
2
A(:,ones(1,3))
ans= 8
8
8
3
3
3
4
4
4
>> A(:,ones(1,2))
ans= 8
8
3
3
4
4

logical indexing Per estrarre gli elementi della matrice A=magic(4) che sono maggiori di 12,
si pu`o procedere nel seguente modo
A(A>12) % equivalente a A(find(A>12))
ans=16
14
15
13
A>12
ans= 1
0
0
1
0
0
0
0
0
0
0
0
0
1
1
0

Per sostituire tutti gli elementi NaN di una matrice B con zero si usa
B(isnan(B))=0

Per eliminare gli elementi ridondanti (uguali) in un vettore, basta osservare che quando un
vettore `e sorted (ordinato), gli elementi ridondanti sono adiacenti, e creano un elemento nullo nel
vettore di del vettore dato.
x=sort(x(:));
difference=diff([x;max(x)+1]);
count=diff(find([1;difference]));
y=x(find(difference)); %trova elementi non nulli

Ricordiamo che il numero di volte che si presentano NaN e inf sono calcolati nel seguente
modo
analisi numerica

c
V.
Comincioli

140

Elementi di algebra lineare

sum(isnan(x(:)));
sum(isinf(x(:)));

Problema 3.10 Come trovare lindice (di colonna) dellultimo elemento non nullo in ogni riga
di una matrice assegnata; ossia, data ad esempio la matrice
X=[0 9 7 0 0 0
5 0 0 6 0 3
0 0 0 0 0 0
8 0 4 2 1 0]

come ottenere il vettore


j =[ 3
6
0
5];

primo metodo
m=size(X,1); % numero delle righe
j=zeros(m,1);
for i=1:m
k=find(X(i,:) ~= 0);
if length(k)
j(i)=k(end);
end
end

secondo metodo
m=size(X,1);
j=zeros(m,1);
for i=1:m
k=[0 find(X(i,:) ~=0)];
j(i)=k(end);
end

terzo metodo
j=sum(cumsum((X(:,end:-1:1) ~=0),2) ~=0,2)

3.8.2

Matrici particolari

Ricordiamo la costruzione di alcune matrici particolari utilizzate in diversi contesti.


analisi numerica

c
V.
Comincioli

3.8 Esperienze con Matlab

141

Matrice di Hilbert (con interesse nellambito dei minimi quadrati ed esempio di matrice
malcondizionata per la risoluzione di un sistema lineare)
% matrice di Hilbert a_ij =1/(i+j-1)
% primo metodo (pi`
u efficiente in termini di esecuzione)
J = 1:n;
J = J(ones(n,1),:);
I = J;
E = ones(n,n);
H = E./(I+J-1);
-----% secondo metodo (pi`
u efficiente in termini di memoria)
A=zeros(n,n);
for i=1:n
for j=i:n
A(i,j)=1/(i+j-1);
A(j,i)=A(i,j);
end
end

Matrice di Vandermonde

(con interesse nel problema di interpolazione)

% matrice di Vandermonde x=[x1 x2 ... xn]


% primo metodo
j=[0:n-1];
for i=1:n
V(i,j+1)=x(i).^j;
end
% secondo metodo: x vettore colonna
V(:,1)=ones(n,1);
for j=2:n
V(:,j)=x.*V(:,j-1);
end

Matrici tridiagonali
tridiagonale.

I seguenti due comandi sono equivalenti e costruiscono una matrice

-triu(tril(ones(4,4),1),-1)+3*eye(4,4)
------diag(ones(3,1),-1)+diag(2*ones(4,1),0)-diag(ones(4,1),1)
ans= 2
-1
0
0
-1
2
-1
0
0
-1
2
-1
0
0
-1
2

Una costruzione pi`


u generale `e fornita dalla seguente funzione
function T = tridiag(n, x, y, z)
%TRIDIAG matrice tridiagonale (sparsa)
%
TRIDIAG(X, Y, Z) is the tridiagonal matrix with subdiagonal X,
%
diagonal Y, and superdiagonal Z.
%
X and Z must be vectors of dimension one less than Y.
analisi numerica

c
V.
Comincioli

142

Elementi di algebra lineare

%
%
%
%
%
%
%
%

Alternatively TRIDIAG(N, C, D, E), where C, D, and E are all


scalars, yields the Toeplitz tridiagonal matrix of order N
with subdiagonal elements C, diagonal elements D, and superdiagonal
elements E.
This matrix has eigenvalues (Todd 1977)
D + 2*SQRT(C*E)*COS(k*PI/(N+1)), k=1:N.
TRIDIAG(N) is the same as TRIDIAG(N,-1,2,-1), which is
a symmetric positive definite M-matrix (the negative of the
second difference matrix).

%
%
%
%
%

References:
J. Todd, Basic Numerical Mathematics, Vol. 2: Numerical Algebra,
Birkhauser, Basel, and Academic Press, New York, 1977, p. 155.
D.E. Rutherford, Some continuant determinants arising in physics and
chemistry---II, Proc. Royal Soc. Edin., 63, A (1952), pp. 232-241.

if nargin == 1, x = -1; y = 2; z = -1; end


if nargin == 3, z = y; y = x; x = n; end
x = x(:); y = y(:); z = z(:); % assicura che i vettori siano colonna.
if max( [ size(x) size(y) size(z) ] ) == 1
x = x*ones(n-1,1);
z = z*ones(n-1,1);
y = y*ones(n,1);
else
[nx, m] = size(x);
[ny, m] = size(y);
[nz, m] = size(z);
if (ny - nx - 1) | (ny - nz -1)
error(Dimensioni dei vettori non corrette.)
end
end
% T = diag(x, -1) + diag(y) + diag(z, 1); % per matrici non sparse.
n = max(size(y));
T = spdiags([ [x;0] y [0;z] ], -1:1, n, n);

3.8.3

Operazioni su matrici

Data una matrice A di dimensione (m,n) e un vettore x di dimensione, si vuole calcolare il


prodotto
n

y = Ax
yi =
aij xj , i = 1, 2, . . . , m
j=1

In Matlab il prodotto `e eseguito dalloperazione matriciale


y=A*x

A solo scopo didattico vediamo dierenti modi per implementare il prodotto di matrice per
vettore.
Un primo modo `e fornito dalla seguente funzione
analisi numerica

c
V.
Comincioli

3.8 Esperienze con Matlab

143

function y = MatVecR0(A,x)
% y = MatVecRO(A,x)
% Calcola i prodotto matrice-vettore y = A*x (via saxpys, ossia per righe)
% A `
e una m-per-n matrice e x `
e un m-vettore colonna
[m,n] = size(A);
y = zeros(m,1);
for i=1:m
y(i) = A(i,:)*x;
end

Per sviluppare un algoritmo colonna-orientato consideriamo il seguente caso illustrativo

 
1 2
17 28
1
2
23
7
y = Ax = 3 4
= 3 7 4 8 = 7 3 + 8 4 = 53
8
5 6
57 68
5
6
83
In altre parole, y `e una combinazione lineare delle colonne di A con coecienti dati dagli elementi
di x. Allora la precedente funzione pu`
o essere riorganizzata nel seguente modo
function y = MatVecC0(A,x)
% y = MatVecCO(A,x)
% calcolo di y = A*x (via saxpy, ossia colonna-orientato)
[m,n] = size(A);
y = zeros(m,1);
for j=1:n
y = y + A(:,j)*x(j);
end

Prodotto di matrici Se A e B sono due matrici di dimensione rispettivamente (m,p) e (p,n),


il prodotto C = AB `e denito da
cij =

aik bkj

1 i m, 1 j n

k=1

In altre parole, ogni elemento di C `e il prodotto scalare di una riga di A e una colonna di B. In
Matlab il prodotto `e eseguito dalloperazione matriciale
C=A*B

Anche qui per motivi didattici segnaliamo i seguenti quattro dierenti modi di implementare
il prodotto di matrici.
function C = MatMatDot(A,B)
% C = MatMatDot(A,B)
% prodotto matrice-matrice C =A*B (via prodotti scalari)
% A: m-per-p, B: p-per-n
[m,p] = size(A); [p,n] = size(B);
C = zeros(m,n);
for j=1:n
analisi numerica

c
V.
Comincioli

144

Elementi di algebra lineare

% Calcola j-ma colonna di C.


for i=1:m
C(i,j) = A(i,:)*B(:,j);
end
end
-----------------function C = MatMatSax(A,B)
% C = MatMatSax(A,B)
% prodotto matrice-matrice C = A*B (via saxpys)
% A: m-per-p, B: p-per-n
[m,p] = size(A); [p,n] = size(B);
C = zeros(m,n);
for j=1:n
% Calcola j-ma colonna di C.
for k=1:p
C(:,j) = C(:,j) + A(:,k)*B(k,j);
end
end
------------------function C = MatMatVec(A,B)
% C = MatMatVec(A,B)
% prodotto matrice-matrice C = A*B (via prodotti matrice-vettori)
% A: m-per-p, B: p-per-n
[m,p] = size(A); [p,n] = size(B);
C = zeros(m,n);
for j=1:n
% calcola la colonna j-ma di C.
C(:,j) = C(:,j) + A*B(:,j);
end
-----------------function C = MatMatOuter(A,B)
% C = MatMatOuter(A,B)
% prodotto matrice-matrice C = A*B (via prodotto esterno)
% A: m-per-p, B: p-per-n
[m,p] = size(A); [p,n] = size(B);
C = zeros(m,n);
for k=1:p
% Aggiunge nel prodotto esterno k-mo
C = C + A(:,k)*B(k,:);
end

Lultima modalit`
a `e illustrata dal seguente esempio



1 2
1 
2 
10 20
60 80


3 4 10 20 = 3 10 20 + 4 30 40 = 30 60 + 120 160
30 40
5 6
5
6
50 100
180 240

analisi numerica

c
V.
Comincioli

3.8 Esperienze con Matlab

145

Matrici sparse
Come illustrazione della possibilit`
a di operare su matrici sparse, consideriamo il seguente esempio.
Esempio 3.3 (Automa cellulare di Fredkin)
Un automa cellulare21 `e denito da

un reticolo di celle elementari interagenti tra loro;


una variabile di stato che assume un certo valore in ogni cella;
un sistema di intorni per le celle (ossia `e specicato un sistema di celle adiacenti);
un insieme di regole che determina lo stato della cella in base al valore attuale della cella stessa e delle
celle nellintorno.
Partendo da un istante iniziale t0 = 0 e da una congurazione iniziale (valore degli stati delle celle),
levoluzione del sistema `e determinata dal calcolo ad ogni istante discreto del tempo t = 1, 2, . . . dello stato
delle celle in base alle regole dellautoma cellulare. Lautoma cellulare di Fredkin (1970) ha una geometria

Figura 3.12 Automa cellulare di Fredkin: generazione corrispondente alla 95-ma iterazione.
(del reticolo di celle) bidimensionale quadrata. Lintorno relativo ad una determinata cella `e composto
dalle quattro celle adiacenti nelle direzioni nord, sud, est, ovest: se la cella ha coordinate (i, j) allora si
considerano le celle con indici (i 1, j), (i + 1, j), (i, j 1), (i, j + 1). Se la somma degli stati delle celle
dellintorno `e zero, oppure `e un numero pari il nuovo stato `e zero altrimenti `e uno.
function fredkin(itera)
%
Versione MATLAB dellautoma cellulare di Edward Fredkin (1970)
%
Il reticolo e quadrato con condizioni al bordo periodiche.
%
Ogni cella puo essere in soli due stati possibili
%
indicati con 0 e 1. Solo le celle nello stato 1 sono
21

Le prime ricerche su tale tipo di modelli risalgono a Von Neumann e Ulam con lobiettivo di costruire un sistema
semplice capace di riprodursi come un organismo vivente. Uno dei pi`
u automi cellulari, il gioco life introdotto da
J.H. Conway, `e denito da regole biologiche: le cellule nascono, vivono o muoiono in dipendenza della densit`a della
popolazione locale di cellule. Recentemente gli automi cellulari sono stati utilizzati per modellizzare sistemi sici
(insiemi frattali).
analisi numerica

c
V.
Comincioli

146

Elementi di algebra lineare

%
visualizzate.
%
Regola di transizione:
%
1. si calcola la somma dei valori degli stati
%
nelle quattro celle piu vicine (in direzione nord, ovest,
%
sud, est rispetto alla cella attuale)
%
--%
| n |
%
---|--- --%
| w | c | e |
%
--- --- --%
| s |
%
--%
2. se la somma e pari il nuovo stato cella cella c
%
sara zero, altrimenti sara 1
%
itera: numero iterazioni; se omesso vale 110
if nargin < 1, itera=110; end;
m = 101;
X = sparse(m,m);
figure(Name,Evoluzione automa cellulare di Fredkin,Color,white,...
DoubleBuffer,on,Visible,off,NumberTitle,off)
p = -5:5;
kx=floor(m/2);
ky=kx;
X(kx+p,ky+p)=1;
[i,j] = find(X);
figure(gcf);
plot(i,j,.,Color,blue,MarkerSize,12);
axis([0 m+1 0 m+1]);
axis off
% Calcolo somma quattro celle vicine
n = [m 1:m-1]; % nord
e = [2:m 1];
% est
s = [2:m 1];
% sud
w = [m 1:m-1]; % ovest
for k=1:itera
N = X(n,:) + X(s,:) + X(:,e) + X(:,w);
X = rem(N,2) ~= 0;
[i,j] = find(X);
plot(i,j,.,Color,blue,MarkerSize,12);
axis([0 m+1 0 m+1]);
axis off
drawnow
end

The purpose of numerical analysis


is insight, not numbers.

R.W. Hamming, 1962

analisi numerica

c
V.
Comincioli

The study of mathematics, like the Nile,


begins in minuteness, but ends in magnicence.

C. Colton (1820)

CAPITOLO

4
Algebra lineare numerica

Oggetto principale di questo capitolo `e la risoluzione numerica dei sistemi lineari , ossia dei
problemi che possono essere formulati nella seguente forma.
Problema 4.1 Dato un vettore b Rm e una matrice A = [aij ], i = 1, 2, . . . , m; j = 1, 2, . . . , n
ad elementi reali, si cerca un vettore x Rn tale che

a11 x1 + a12 x2 + + a1n xn = b1

a21 x1 + a22 x2 + + a2n xn = b2

..
..
.. ..

.
.
. .
(4.1)
Ax = b

x
+
a
x
+

+
a
x
a

i1 1
i2 2
in n = bi

..
..
.. ..

.
.
. .

am1 x1 +am2 x2 + +amn xn = bm


Osserviamo che se Dr e Dc sono due matrici diagonali non singolari, il sistema (4.1) `e equivalente
al seguente
(4.2)
(Dr ADc )(D1
c x) = Dr b
ossia i due sistemi hanno la medesima soluzione. La matrice Dc corrisponde allintroduzione
di dierenti scale nella misura delle componenti del vettore incognito x, mentre la matrice Dr
corrisponde ad una operazione di scalatura dei termini noti.
` opportuno sottolineare che lequivalenza tra i sistemi (4.2), al variare delle matrici diagonali
E
o non essere vericata in aritmetica di calcolatore. In altre parole, quando si applica
Dc e Dr , pu`
lo stesso algoritmo numerico a due dierenti formulazioni, i risultati numerici ottenuti possono
dierire tra loro. Si pone, quindi, il problema della ricerca di matrici di scalatura che siano
ottimali, nel senso che la corrispondente soluzione numerica si discosti il meno possibile da quella
esatta. Il problema verr`
a trattato nel seguito nellambito dello studio del condizionamento del
sistema lineare (4.1).
La risoluzione dei sistemi lineari `e di fondamentale importanza nella matematica applicata.
In eetti, come vedremo nei successivi capitoli del presente volume, i sistemi lineari, da una parte
costituiscono lo strumento di base per la formulazione di numerosi modelli matematici e dallaltra rappresentano una tappa fondamentale per la risoluzione iterativa dei modelli non lineari.
147

148

Algebra lineare numerica

Rinviando, quindi, agli altri capitoli per ulteriori esemplicazioni signicative, esamineremo, ora,
alcune situazioni classiche.

Esempio 4.1 Circuiti elettrici. Consideriamo il circuito elettrico illustrato in Figura 4.1. Le resistenze
sono indicate in ohm e il voltaggio applicato al generico nodo i `e rappresentato da Vi volt . Lintensit`
a di
corrente che uisce dal nodo i al nodo j `e indicata con Iij ampere. Per ottenere la dierenza di potenziale
tra due nodi, si applicano le seguenti due leggi.
(a)

La legge di Ohm, che mette in relazione lintensit`a di corrente che uisce in una resistenza con la
dierenza di potenziale agli estremi

Iij =

Vi Vj
Rij

(b)
La legge di Kirchho , che stabilisce che la somma algebrica di tutte le correnti che entrano in un
nodo deve essere uguale a zero.

Figura 4.1 Un esempio di rete elettrica.


Osserviamo che la resistenza R36 `e calcolata mediante la relazione
1
3
1 1
2
R36 =
= + =
R36
1 2
2
3
analisi numerica

c
V.
Comincioli

Algebra lineare numerica

149

Applicando allora le due leggi precedenti successivamente ai nodi 2, 3, . . . , 7 si ottengono le seguenti


equazioni
nodo 2
nodo 3
nodo 4
nodo 5
nodo 6
nodo 7

V7 V2
V3 V2
+
3
1
V6 V3
V2 V3
I23 + I63 + I43 =
+
3
2/3
V5 V4
V3 V4
+
=0
I34 + I54 =
1
2
V6 V5
V4 V5
I45 + I65 =
+
=0
2
1
V3 V6
V5 V6
I56 + I36 + I76 =
+
1
2/3
V2 V7
V6 V7
+
I67 + I27 + I87 =
4
1

I32 + I72 + I12 =

da cui il seguente sistema lineare

11V2 2V3
6V7

2V
+
17V

6V

9V

2
3
4
6

2V3 + 3V4 V5
V4 + 3V5 2V6

6V
4V5 +11V6 V7

V6 + 9V7
4V2
con la seguente matrice dei coecienti

A=

40 V2
=0
2
V4 V3
+
=0
1
+

V7 V6
=0
4
0 V7
+
=0
1

= 120
=0
=0
=0
=0
=0

11 2
0
0
0 6
2 17 6
0 9
0
0 2
3 1
0
0
0
0 1
3 2
0
0 6
0 4 11 1
4
0
0
0 1
9

Si vede facilmente che `e possibile scalare le righe in maniera tale che la matrice che ne risulti sia simmetrica;
in altre parole, esiste una opportuna matrice diagonale D tale che D A `e simmetrica. Si pu`o anche vedere
che A `e irriducibile e a predominanza diagonale (stretta per almeno una riga) ed `e, pertanto, invertibile.
Osservando, inoltre, che gli elementi fuori dalla diagonale hanno tutti lo stesso segno, che risulta contrario
a quello degli elementi sulla diagonale, si ha che A `e una M-matrice, ossia la matrice inversa A1 ha
elementi non negativi. Ne segue che la soluzione del sistema `e, come sicamente ragionevole, non negativa.
Nel caso particolare che stiamo considerando, si ottiene, con il metodo di eliminazione che esamineremo
nel seguito, la seguente soluzione

V2
19.3991
V3 15.7940

V4 15.6223
=

V=
V5 15.2790

V6 15.1073
V7
10.3004

Esempio 4.2 Analisi di strutture. In Figura 4.2 `e mostrato un esempio di struttura statica bidimensionale (un telaio). Le forze F rappresentano tensioni e compressioni agenti sulle aste che compongono
analisi numerica

c
V.
Comincioli

150

Algebra lineare numerica

la struttura. Le reazioni esterne H2 , V2 e V3 sono forze corrispondenti allinterazione della struttura con
il supporto. Nellesempio rappresentato in gura si suppone che il nodo 2 sia vincolato, e quindi possa
trasmettere al supporto forze con componenti sia orizzontali che verticali. Si suppone, invece, che il nodo
3 possa scivolare sul supporto, in modo che la struttura possa trasmettere solo forze verticali.

Figura 4.2 Forze in una struttura in condizioni statiche.


Consideriamo, ora, il problema del calcolo delle forze Fi , i = 1, 2, 3 e H2 , V1 e V3 , quando nei nodi della
struttura vengono applicate delle forze esterne Ei , i = 1, 2, 3. Indichiamo rispettivamente con Ei,h e Ei,v
le componenti orizzontali e verticali delle forze Ei . Studiando il sistema in condizioni statiche, si ha che
in ciascun nodo la somma delle componenti orizzontali delle forze agenti in quel nodo, e rispettivamente
delle componenti verticali, deve essere nulla (legge di equilibrio). Si hanno allora le seguenti relazioni, nella
scrittura delle quali si `e seguita la convenzione che le forze dirette verso destra e verso lalto sono positive.

nodo 1

nodo 2

nodo 3

F1 cos 30 + F3 cos 60 + F1,h = 0


F1 sin 30 F3 sin 60 + F1,v = 0
F1 cos 30 + F2 + H2 + F2,h = 0
F1 sin 30 + V2 + F2,v = 0
F2 F3 cos 60 + F3,h = 0
F3 sin 60 + V3 + F3,v = 0

Si ha, quindi, il seguente sistema lineare

cos 30
sin 30
cos 30
sin 30
0
0

0
cos 60
0 sin 60
1
0
0
0
1 cos 60
0
sin 60

0
0
1
0
0
0

0
0
0
1
0
0

0
0
0
0
0
1

F1
F2
F3
H2
V2
V3

F1,h
F1,v
F2,h
F2,v
F3,h
F3,v

(4.3)

A dierenza della matrice relativa allesempio precedente, la matrice dei coecienti del sistema (4.3) non `e a
predominanza diagonale. Facciamo, anzi, osservare che il minore principale di ordine 2 `e nullo. Questo fatto
comporta, come vedremo nel seguito, lutilizzo nellapplicazione del metodo di sostituzione di opportune
permutazioni delle righe o delle colonne (metodo pivotale). Si pu`
o vericare, tuttavia, che il determinante
della matrice dei coecienti `e uguale a 1.0 e quindi che la matrice `e invertibile, con matrice inversa data
analisi numerica

c
V.
Comincioli

Algebra lineare numerica

da

A1

151

0.8660 0.5000
0.2500
0.4330
0.5000 0.8660
1.0000
0.
0.4330
0.2500
0.4330
0.7500

0.
0.
0.
1.0000
0.
0.

0.
0.
0.
0.
1.0000 0.
0.
0.
0.
0.
1.0000 0.
1.0000
0.
0.
0.
0.
1.0000

La conoscenza della matrice inversa permette di calcolare le forze in corrispondenza a dierenti carichi
esterni. Osserviamo, infatti, che la struttura `e completamente caratterizzata dalla matrice A (detta anche
matrice stiness), mentre, il vettore dei termini noti fornisce il carico dovuto alle forze esterne. Ad esempio,
nella situazione illustrata in Figura 4.2, nella quale le forze esterne sono tutte nulle, salvo la forza verticale
nel nodo 1 rivolta verso il basso e uguale a -500 (il segno meno segue dalla convenzione fatta in precedenza),
si ha come vettore dei termini noti b = [0, 500, 0, 0, 0, 0]T , a cui corrisponde la soluzione

F1
250.0000
F2
216.5064

F3

= A1 b = 433.0127

H2

0.

V2
125.0000
375.0000
V3
Concludiamo, osservando che i singoli elementi della matrice inversa hanno un importante signicato
applicativo. Ciascuno di essi, infatti, rappresenta la variazione in unincognita dovuta a una variazione
unitaria in uno dei carichi esterni. Ad esempio, lelemento a1
21 indica il cambiamento della seconda incognita
(F2 ) dovuto a una variazione unitaria nel carico esterno F1,h . In particolare, la presenza di elementi nulli
nella matrice inversa signica che certe incognite non sono inuenzate dal carico; ad esempio, a1
13 = 0
signica che F1 non `e inuenzata da variazioni nel carico F2,h (come `e naturale, dal momento che il nodo
2 `e vincolato).

Esempio 4.3 Modello economico di Leontief . Consideriamo una economia basata su n industrie, ognuna
delle quali produce un singolo prodotto. Per produrre il proprio prodotto, ogni industria ha bisogno, come
accade usualmente nella realt`a, di certe quantit`a di prodotti forniti da altre industrie, ed eventualmente
anche del proprio prodotto. Si pensi, come esemplicazioni alla industria automobilistica, o a una industria
di hardware di calcolatori.
Indichiamo con aij lunit`
a di prodotto dellindustria i richiesto per la produzione di unit`
a di materiale prodotto dallindustria j. Le costanti aij sono dette i coecienti tecnici. Indichiamo, inoltre, con
a di materiali prodotti dalle n industrie durante un ciclo ssato (ad esempio, un
x1 , x2 , . . . , xn le quantit`
anno) di produzione.
La quantit`
a totale di materiale prodotto i viene in parte consumato dalle altre industrie, e in parte va
a soddisfare le domande dei consumatori. Si ha, pertanto, il seguente bilancio
xi = ai1 x1 + ai2 x2 + + ain xn + di ,

i = 1, 2, . . . , n

ove di `e la domanda per il prodotto i. Introducendo la matrice A=[aij ] e i vettori x, d, di componenti xi ,


e rispettivamente di , i = 1, 2, . . . , n, il modello di produzione `e descritto dal seguente sistema lineare
(I A)x = d

(4.4)

I metodi numerici per la risoluzione dei sistemi lineari possono essere, in maniera schematica,
raggruppati nel modo seguente
analisi numerica

c
V.
Comincioli

152

Algebra lineare numerica

Metodi diretti , ossia i metodi che, in assenza di errori di arrotondamento, forniscono la soluzione
in un numero nito di operazioni. Tali metodi utilizzano, in sostanza, lidea della eliminazione
di Gauss, e pi`
u in generale, lidea della fattorizzazione della matrice A nel prodotto di due
matrici pi`
u semplici (triangolari o ortogonali).
Metodi iterativi, nei quali la soluzione `e ottenuta come limite di una successione di soluzioni di
sistemi lineari pi`
u semplici. Nella risposta fornita da un metodo iterativo `e, quindi, presente
usualmente un errore di troncamento.
Nei metodi iterativi, a dierenza che nei metodi diretti, la matrice dei coecienti non viene
modicata. In tali metodi, quindi, `e possibile sfruttare pi`
u opportunamente la presenza di elementi
nulli nella matrice dei coecienti. In eetti, i metodi iterativi hanno un particolare interesse per
la risoluzione di sistemi a grandi dimensioni e con matrici sparse, ossia matrici per le quali il
numero degli elementi che possono essere diversi dallo zero `e proporzionale allordine n.
Calcolo dellinversa di una matrice
Il calcolo dellinversa di una matrice A di ordine n e non singolare `e un problema strettamente
legato a quello della risoluzione di un sistema lineare. In eetti, dalla conoscenza dellinversa A1
si pu`o ottenere la soluzione del sistema lineare corrispondente ad un particolare termine noto b
mediante semplicemente il prodotto di una matrice per un vettore, con un numero di operazioni
proporzionale a n2
Ax = b x = A1 b
Daltra parte, le colonne Xj , j = 1, 2, . . . , n della matrice inversa A1 possono essere calcolate
mediante la risoluzione dei seguenti n sistemi lineari, tutti con la stessa matrice dei coecienti
AXj = ej A1 [X1 , X2 , . . . , Xn ]

(4.5)

a In . In altre parole, un
ove i vettori ej , j = 1, . . . , n sono le colonne della matrice identit`
metodo numerico per la risoluzione di un sistema lineare pu`o essere utilizzato anche per il calcolo
dellinversa di una matrice. La risoluzione dei sistemi (4.5) risulta semplicata quando della
matrice A si costruisce una fattorizzazione.

4.1

Metodi diretti

Introduciamo lidea delleliminazione attraverso un semplice esempio. Lidea verr`a, poi, generalizzata e discussa nei paragra successivi.
Esempio 4.4 Consideriamo la risoluzione del seguente sistema

2x1 + 4x2 + 2x3 = 4


4x1 + 7x2 + 7x3 = 13

2x1 7x2 + 5x3 = 7

(4.6)

Ricaviamo lincognita x1 dalla prima equazione e la sostituiamo nelle altre due equazioni. Loperazione pu`o
essere ottenuta sottraendo la prima equazione moltiplicata per 2 dalla seconda equazione, e analogamente
analisi numerica

c
V.
Comincioli

4.1 Metodi diretti

153

sottraendo la prima equazione moltiplicata per -1 dalla terza equazione. I fattori 2 e 1 utilizzati nella
trasformazione sono detti moltiplicatori. Si ottiene

2x1 + 4x2 + 2x3 = 4


x2 + 3x3 = 5

3x2 + 7x3 = 11
A questo punto si elimina x2 dalla terza equazione sottraendo dalla terza equazione la seconda moltiplicata
per 3, e si ottiene la seguente struttura triangolare

2x1 + 4x2 + 2x3 = 4


x2 + 3x3 = 5

2x3 = 4
Nella fase successiva, chiamata sostituzione allindietro, si calcola x3 dalla terza equazione
x3 =

4
=2
2

e si sostituisce il valore ottenuto nella seconda equazione e si ottiene per x2 il valore


x2 =

532
5 3x3
=
=1
1
1

e, inne, dalla prima equazione


x1 =

44122
4 4x2 2x3
=
= 2
2
2

e quindi la soluzione del sistema `e data dal vettore x = [2, 1, 2]T .


Introduciamo le seguenti due matrici triangolari

2
4
2
1 0 0
3 ,
U = 0 1
L= 2 1 0
0
0 2
1 3 1

(4.7)

In particolare, la matrice L ha tutti gli elementi sulla diagonale principale uguali a 1; per tale motivo viene
anche indicata come matrice triangolare unitaria. Osserviamo che gli elementi della matrice L che sono al di
sotto della diagonale principale corrispondono ai moltiplicatori utilizzati nella operazione di eliminazione.
Pi`
u precisamente, gli elementi l21 = 2, l31 = 1 nella prima colonna sono i moltiplicatori utilizzati per
eliminare lincognita x1 , mentre lelemento l32 = 3 `e il moltiplicatore utilizzato per eliminare lincognita
x2 . Facciamo, ora, vedere che tra la matrice A e le matrici U e L sussiste la seguente relazione
A = LU

(4.8)

Tale identit`
a pu`
o essere vericata direttamente eseguendo il prodotto, ma, pi`
u signicativamente, essa pu`
o
essere giusticata nel seguente modo. Indichiamo con ai , i = 1, 2, 3 le righe di A e con ui le righe della
matrice U. Dal momento che durante leliminazione la prima riga non viene mai cambiata, si ha u1 = a1 .
Nella prima eliminazione si ha
u2 = a2 2 a1 = a2 2 u1
La terza riga u3 `e ottenuta in due passi, ossia
u3 = a3 (1 u1 ) 3 u2
analisi numerica

c
V.
Comincioli

154

Algebra lineare numerica

Risolvendo le equazioni precedenti rispetto ai vettori ai , si ottiene


a1 =
a2 =

u1
2 u1 + u2

a3 = 1 u1 + 3 u2 + u3
che mostra lidentit`a (4.8). Lesempio, quindi, mostra che il metodo di eliminazione `e equivalente a fattorizzare una matrice nel prodotto tra una matrice triangolare inferiore con elementi diagonali uguali a 1 e
una matrice triangolare superiore. Si pu`
o mostrare che tale decomposizione `e unica.
Il metodo di eliminazione esposto in precedenza `e per righe. Come mostreremo sempre sullesempio
(4.6), `e possibile implementare il metodo procedendo per colonne, anziche per righe. Tali implementazioni
hanno interesse per i linguaggi di programmazione che, come il FORTRAN e Matlab, memorizzano le
matrici per colonne.
Sottraendo dalla seconda colonna la prima moltiplicata per 2 e dalla terza la prima moltiplicata per
1, e successivamente dalla terza colonna la seconda colonna moltiplicata per -3, si ottengono le seguenti
trasformazioni

2
0 0
2
0
0
4 1 3 L = 4 1
0
2 3 7
2 3 2
Usando i moltiplicatori 2, 1 e 3, formiamo la seguente matrice triangolare superiore con elementi uguali
a 1 sulla diagonale

1
2
1
1 3
U1 = 0
0
0
1
Lindice 1 indica che la matrice ha elementi sulla diagonale principale uguali a 1. Analogamente a quanto
si `e fatto in precedenza, si pu`o mostrare che leliminazione per colonne produce la seguente decomposizione
A = L U1
mentre, con la notazione ora introdotta leliminazione per righe produce la decomposizione A = L1 U. Si
pu`
o mostrare che introducendo la seguente matrice diagonale

2
D= 0
0

0
0
1
0
0 2

si ha
A = L1 U = L1 (D U1 ) = (L1 D)U1 = L U1 = A
La fattorizzazione A = L1 (D U1 ) = (L1 D)U1 `e chiamata la fattorizzazione LDU della matrice A.
Concludiamo, osservando che a partire dalle decomposizioni precedenti la risoluzione del sistema Ax =
b pu`
o essere ricondotta a quella di due sistemi pi`
u semplici. Ad esempio, se A = L U, si ha

Ax = b LUx = b

Ly = b
Ux = y

(4.9)

Pertanto, se le due matrici L, U sono triangolari, la risoluzione del sistema `e ricondotta alla risoluzione
successiva di due sistemi con matrici triangolari.

analisi numerica

c
V.
Comincioli

4.1 Metodi diretti

4.1.1

155

Sistemi triangolari

Un sistema viene detto triangolare, quando la matrice dei coecienti ha una struttura triangolare,
o pi`
u in generale quando tale matrice pu`o essere ricondotta a una forma triangolare mediante
opportuni scambi di righe e di colonne. Per tali sistemi loperazione di eliminazione si applica
in maniera molto semplice. Consideriamo, in particolare, i sistemi con matrice dei coecienti
triangolare superiore, o inferiore. Siano, quindi, L e U due matrici di ordine n della forma
seguente

l11 0 0
u11 u12 u1n

..
0 u22 u2n
l21 l22 . . .
.

;
L=
U= .

.
.
.

.
.
..
..
..
..
..
..
..
. 0
0
0 unn
ln1 ln2 lnn
Generalizzando la procedura seguita nellesempio precedente, abbiamo i seguenti algoritmi.
Algoritmo 4.1 (Eliminazione in avanti) Data una matrice triangolare inferiore L Rnn non singolare
ed un vettore b Rn , la soluzione del sistema Ly = b `e data da
y1 = b1 /l11
For i = 2, . . . , n
yi = bi
For j = 1, . . . , i 1
yi = yi lij yj
end j
yi = yi /lii
end i
function y=Ltrisol(L,b)
% Ly=b
% L triangolare inferiore
n=length(b);
y=zeros(n,1);
y(1)=b(1)/L(1,1);
for i=2:n
y(i)=(b(i)-L(i,1:i-1)*y(1:i-1))/L(i,i);
end

Lalgoritmo precedente richiede un numero di operazioni, valutato in ops1 , dato da


n

i=1

(i 1) =

1
1
n(n 1) n2
2
2

Osserviamo che n2 /2 `e anche lordine del numero delle moltiplicazioni necessarie per valutare il
prodotto della matrice L per un vettore.
Analogamente, per i sistemi triangolari superiori si ha il seguente algoritmo.
1

Il op `e una unit`
a di misura delle operazioni richieste in un algoritmo. Secondo una denizione usuale, un
op corrisponde al numero di operazioni nellistruzione FORTRAN: A(I,J)=A(I,J)+T*A(I,K). Essa comprende
una moltiplicazione e una addizione in aritmetica oating point, alcuni calcoli di indici e alcuni riferimenti alla
memoria. Secondo unaltra denizione un op corrisponde ad una sola operazione oating point. Nel testo viene
utilizzata la prima denizione.
analisi numerica

c
V.
Comincioli

156

Algebra lineare numerica

Algoritmo 4.2 (Eliminazione allindietro) Data una matrice triangolare superiore U Rnn , non singolare, ed un vettore y Rn , la soluzione del sistema Ux = y `e data da
xn = yn /unn
For i = n 1, . . . , 1
xi = yi
For j = i + 1, . . . , n
xi = xi uij xj
end j
xi = xi /uii
end i

function x=Utrisol(U,y)
% Ux=y
% U triangolare superiore
%
n=length(y);
x(n)=y(n)/U(n,n);
for i=n-1:-1:1
x(i)= (y(i)-U(i,i+1:n)*x(i+1:n))/U(i,i);
end

Lasciamo come esercizio la modica degli algoritmi precedenti nel caso in cui, come `e stato analizzato nellesempio precedente, la eliminazione venga eettuata per colonne e nel caso in cui le
matrici L e U siano memorizzate sotto forma di vettori a una dimensione, ossia, ad esempio per
la matrice U nella forma [u11 , u12 , u22 , u13 , u23 . . . u1n , . . . , unn ].

4.1.2

Sistemi generali; metodo di Gauss

Consideriamo il sistema lineare (4.1) nel caso in cui m = n, e nel quale, per motivi di convenienza
di scrittura dellalgoritmo, il termine noto `e denito come la colonna (n+1)ma della matrice dei
coecienti.

a11 x1 + a12 x2 + + a1n xn =b1 =: a1 n+1

21 x1 + a22 x2 + + a2n xn =b2 =: a2 n+1

..
..
.. ..

.
.
. .
(4.10)
a
x
+
a
x
+

+
a
x

i1 1
i2 2
in n =bi =: ai n+1

..
..
.. ..

.
.
. .

an1 x1 +an2 x2 + +ann xn =bn =: an n+1


Supporremo, inoltre, per iniziare che la matrice dei coecienti A abbia tutti i minori principali
diversi dallo zero. Successivamente, introdurremo opportune modiche per adattare il metodo
alla risoluzione di sistemi per i quali lunica ipotesi richiesta sia la non singolarit`a della matrice
A.
o eliminare x1 dalle righe 2, 3, . . . , n sottraendo dalla generica riga i-ma
Poiche a11 = 0, si pu`
la prima riga moltiplicata per
mi1 =
analisi numerica

ai1
,
a11

i = 2, 3, . . . , n
c
V.
Comincioli

4.1 Metodi diretti

157

In questo modo le equazioni successive si trasformano come segue


(2)
(2)
(2)

a22 x2 + +a2n xn = a2 n+1


..
..
.
.

. = ..

(2)
(2)
(2)
an2 x1 + +ann xn = an n+1
ove
(2)

aij = aij mi1 a1j

(4.11)

i = 2, 3 , n,
j = 2, 3, , n + 1

(2)

Si pu`
o vericare che, in particolare, a22 = det(A2 )/a11 , ove Ak , per k = 1, 2, . . . , n indica la
(2)
sottomatrice principale di ordine k della matrice A. Per le ipotesi fatte si ha, quindi, a22 = 0, e
si pu`o eliminare nel sistema (4.11) lincognita x2 .
Ripetendo la procedura, al generico passo k-mo, la matrice del sistema (aumentata della
colonna dei termini noti) assume la seguente forma

(1)
(1)
(1)
(1)
(1)
a11 a12 a13
a1n
a1 n+1

(2)
(2)
(2)
(2)

a22 a23
a2n
a2 n+1

..

(k)
(k)
(k)

a
a

kk
kn
kn+1

..
..
..

0
.

.
.

(k)
(k)
(k)
ann+1
ank ann
ove, per uniformit`a di scrittura, si `e posto
(1)

aij := aij ,

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

Per k = n, cio`e dopo n 1 trasformazioni, si ottiene un sistema triangolare, che pu`o essere risolto
con lalgoritmo esaminato nel paragrafo precedente.
Il determinante della matrice A `e uguale al determinante della matrice triangolare nale, in
quanto le successive trasformazioni della matrice (sottrazioni di righe da altre moltiplicate per
opportuni fattori) lasciano invariato il determinante. Si ha, pertanto
(1) (2)

(n)

det(A) = a11 a22 ann


Si ha, in denitiva, la seguente procedura.

Algoritmo 4.3 (Algoritmo di Gauss) Data una matrice A Rnn tale che det(Ak ) = 0, k = 1, 2, . . . , n, e
quindi in particolare non singolare, ed un vettore ai,n+1 , i = 1, 2, . . . , n, si ha
For k = 1, 2, . . . , n 1
For i = k + 1, . . . , n
(k)
aik
mik = (k)
akk
analisi numerica

c
V.
Comincioli

158

Algebra lineare numerica

For j = k + 1, . . . , n + 1
(k+1)
(k)
(k)
aij
= aij mik akj
end j
end i
end k

Nella forma precedente lalgoritmo `e di tipo riga orientato, nel senso che il loop pi`
u interno si
riferisce allindice di colonna. Come abbiamo gi`a discusso nellEsempio 4.4, per alcuni linguaggi di
programmazione, in particolare per il FORTRAN, pu`
o essere pi`
u conveniente una implementazione
colonna orientata.
Nella implementazione dellalgoritmo di eliminazione, i moltiplicatori mij possono essere memorizzati nello spazio occupato dagli elementi della matrice che diventano successivamente nulli.
In questo modo, a seguito delle operazioni di eliminazione, la matrice originaria A `e sostituita
dalla struttura descritta in Figura 4.3, ove i moltiplicatori sono memorizzati sotto la diagonale
(k)
principale nella matrice L, e gli elementi aij formano la matrice triangolare U.

Figura 4.3 Struttura della matrice a seguito delle operazioni di eliminazione.

Numero delle operazioni


Per valutare il numero delle operazioni richieste dal procedimento di eliminazione, osserviamo che
il generico passo k comporta nk divisioni e (nk)(nk+1) moltiplicazioni e addizioni. In ops
il costo totale dellalgoritmo `e, quindi, dellordine di
n1

(n k)(n k + 1) =

k=1

1
n(n2 1)
3

Per la risoluzione del sistema triangolare nale `e richiesto, come abbiamo visto, un numero di
ops dellordine di 12 n2 ; in denitiva, quindi, il costo in ops per la risoluzione di un sistema
o dire
lineare `e O( 13 n3 + 12 n2 ). Per valori grandi di n, il termine n3 `e predominante, e quindi si pu`
che la riduzione di un sistema lineare con n incognite alla forma triangolare mediante il metodo
di eliminazione di Gauss richiede approssimativamente n3 /3 operazioni. Assumendo, ad esempio,
che una operazione su un determinato calcolatore richieda 3s, la Tabella 4.1 fornisce i tempi,
per dierenti valori di n, per ottenere leliminazione di Gauss e la sostituzione allindietro.
Si pu`
o dimostrare che per risolvere il sistema lineare Ax = b, con A matrice qualunque, il metodo
di Gauss `e ottimale, nel senso che `e il metodo con lordine di operazioni (esponente di n) minimo
analisi numerica

c
V.
Comincioli

4.1 Metodi diretti

159

n
100
1000
10000

eliminazione

sostituzione allindietro

1.
1. 103
1. 106 ( 12 giorni)

0.015
1.5
150

Tabella 4.1 Tempo in secondi per il metodo di eliminazione e la sostituzione allindietro nellipotesi che
ogni operazione richieda 3s.

fra tutti i metodi che utilizzano solo combinazioni lineari di righe e di colonne. Recentemente,
a partire da un lavoro di Strassen2 , sono stati proposti metodi basati su tecniche diverse, che
permettono il calcolo numerico della soluzione di un sistema lineare con un costo computazionale
di ordine inferiore. Tali metodi si basano, in sostanza, sullequivalenza, per quanto riguarda il
costo computazionale, del problema della inversione di una matrice di ordine n, e quindi della
soluzione di un sistema lineare di ordine n, e del problema della moltiplicazione di due matrici
di ordine n. Pi`
u precisamente, si pu`o mostrare che se il numero delle operazioni aritmetiche
sucienti a calcolare il prodotto di due matrici di ordine n `e al pi`
u kn , con k, costanti positive e
2 3, allora per invertire una matrice non singolare di ordine n sono sucienti hn operazioni
aritmetiche, con h opportuna costante positiva. Con lalgoritmo proposto da Strassen, per il
calcolo del prodotto di due matrici si ha (cfr. lEsempio successivo) un ordine di operazioni =
log2 7 = 2.807 . . .; successivamente, sono stati proposti algoritmi con valori di minori (segnaliamo
in particolare un risultato di Coppersmith, Winograd (1987) con < 2.38). Sebbene lesponente
` da
sia almeno 2, il pi`
u piccolo valore di che pu`
o essere ottenuto `e attualmente incognito. E

o essere
osservare che nei metodi ora segnalati la costante di proporzionalit`
a che moltiplica n pu`
molto grande, e quindi, anche se tali schemi sono asintoticamente pi`
u veloci del metodo di Gauss,
la loro superiorit`
a `e osservabile solo per n molto grandi.
Per terminare le considerazioni sul costo computazionale del metodo di Gauss, `e opportuno
osservare che lordine `e O(n3 ) per una matrice generica. In altre parole, lordine pu`
o essere molto
pi`
u basso per matrici particolari; si pensi, ovviamente, alle matrici diagonali, triangolari, tridiagonali, cio`e alle matrici con strutture a banda e pi`
u in generale alle matrici sparse. Riprenderemo
questo argomento nei paragra successivi.
Esempio 4.5 Algoritmo di Strassen. Date le matrici A, B di ordine n = 2k , con k intero positivo, gli
n2 elementi cij della matrice prodotto C = AB possono essere ottenuti dalla formula
cij =

aip bpj ,

i, j = 1, . . . , n

(4.12)

p=1

mediante n3 moltiplicazioni e n3 n2 addizioni. Mostreremo ora che `e possibile ottenere gli n2 elementi
u di 4.7 n operazioni aritmetiche, ove = log2 7.
cij con non pi`
Per n = 2, gli elementi cij dati da
c11 = a11 b11 + a12 b21 ,
c21 = a21 b11 + a22 b21 ,
2

c12 = a11 b12 + a12 b22 ,


c22 = a21 b12 + a22 b22

V. Strassen, Gaussian Elimination is not Optimal , Numer. Math. 13, 1969, 354356.

analisi numerica

c
V.
Comincioli

160

Algebra lineare numerica

possono essere calcolati con 7 moltiplicazioni e 18 addizioni mediante le seguenti relazioni


s1
s3
s5
s7
c11
c21

= (a11 + a22 )(b11 + b22 )


= a11 (b12 b22
= (a11 + a12 )b22
= (a12 a22 )(b21 + b22 )
= s1 + s4 s5 + s7
= s2 + s4

s2 = (a21 + a22 )b11


s4 = a22 (b21 b11 )
s6 = (a21 a11 )(b11 + b12 )

(4.13)

c12 = s3 + s5
c22 = s1 s2 + s3 + s6

Le formule (4.13) possono essere applicate anche nel caso in cui gli elementi aij , bij , cij sono blocchi di
matrici Aij , Bij , Cij , dal momento che non viene utilizzata la propriet`a commutativa della moltiplicazione.
Supponendo, allora, k > 1 e partizionando le matrici A, B e C in quattro sottomatrici di ordine n/2






A11 A12
B11 B12
C11 C12
A=
, B=
, C=
A21 A22
B21 B22
C21 C22
le matrici Cij , i, j = 1, 2, possono essere calcolate mediante le formule (4.13) con 7 moltiplicazioni di
matrici di ordine n/2. Il procedimento pu`
o essere iterato partizionando ogni matrice di ordine n/2 in
quattro sottomatrici di ordine n/4. Se indichiamo con pn il numero di moltiplicazioni impiegate dal
metodo ora descritto per moltiplicare matrici di ordine n, vale la relazione
pn = 7pn/2
da cui, essendo n = 2k e p1 = 1 si ha
pn = 7pn/2 = 72 pn/4 = . . . = 7k p1 = n ,

= log2 7

function C
%STRASSEN
%
%
%
%
%

= strassen(A, B, nmin)
algoritmo di moltiplicazione veloce di matrici (Strassen)
C = STRASSEN(A, B, NMIN), A e B matrici di dimensione
potenza di 2
C = A*B.
lalgoritmo e
` usato ricorsivamente fino a che si ha
dimensione <= NMIN e allora `
e usata la moltiplicazione standard
per default NMIN = 8

%
%

V. Strassen, Gaussian elimination is not optimal,


Numer. Math., 13 (1969), pp. 354-356.

if nargin < 3, nmin = 8; end


n = length(A);
if n ~= 2^( log2(n) )
error(la matrice deve avere dimensione una potenza di 2.)
end
if n <= nmin
C = A*B;
else
m = n/2; i = 1:m; j = m+1:n;
P1 = strassen( A(i,i)+A(j,j), B(i,i)+B(j,j), nmin);
P2 = strassen( A(j,i)+A(j,j), B(i,i), nmin);
P3 = strassen( A(i,i), B(i,j)-B(j,j), nmin);
P4 = strassen( A(j,j), B(j,i)-B(i,i), nmin);
P5 = strassen( A(i,i)+A(i,j), B(j,j), nmin);
P6 = strassen( A(j,i)-A(i,i), B(i,i)+B(i,j), nmin);
analisi numerica

c
V.
Comincioli

4.1 Metodi diretti

161

P7 = strassen( A(i,j)-A(j,j), B(j,i)+B(j,j), nmin);


C = [ P1+P4-P5+P7 P3+P5; P2+P4 P1+P3-P2+P6 ];
end
--------------------------------------function C = strassenw(A, B, nmin)
%STRASSENW variante di Winograd
%
%
N. J. Higham, Accuracy and Stability of Numerical Algorithms,
%
Second edition, Society for Industrial and Applied Mathematics,
%
Philadelphia, PA, 2002; chap. 23.
if nargin < 3, nmin = 8; end
n = length(A);
if n ~= 2^( log2(n) )
error(la matrice deve avere dimensione una potenza di 2.)
end
if n <= nmin
C = A*B;
else
m = n/2; i = 1:m; j = m+1:n;
S1 = A(j,i) + A(j,j);
S2 = S1 - A(i,i);
S3 = A(i,i) - A(j,i);
S4 = A(i,j) - S2;
S5 = B(i,j) - B(i,i);
S6 = B(j,j) - S5;
S7 = B(j,j) - B(i,j);
S8 = S6 - B(j,i);
M1
M2
M3
M4
M5
M6
M7

=
=
=
=
=
=
=

strassenw(
strassenw(
strassenw(
strassenw(
strassenw(
strassenw(
strassenw(

S2, S6, nmin);


A(i,i), B(i,i), nmin);
A(i,j), B(j,i), nmin);
S3, S7, nmin);
S1, S5, nmin);
S4, B(j,j), nmin);
A(j,j), S8, nmin);

T1 = M1 + M2; T2 = T1 + M4;
C = [ M2+M3 T1+M5+M6; T2-M7

T2+M5 ];

end

4.1.3

Strategia del pivot

Il metodo di eliminazione, nella forma che abbiamo presentato nel paragrafo precedente, `e applicabile solo quando la matrice dei coecienti A ha i minori principali diversi dallo zero. In
particolare, quindi, tale metodo `e dal punto di vista teorico applicabile ai sistemi con matrici dei
coecienti a predominanza diagonale, oppure simmetriche denite positive. Lidea che si utilizza
per estendere il metodo a matrici generiche, cio`e solamente non singolari, consiste nel permutare,
durante loperazione di eliminazione, opportunamente le righe e/o le colonne della matrice. Introduciamo tale idea attraverso un semplice esempio, che illustra anche linteresse di tale procedura
per migliorare la stabilit`
a dellalgoritmo di eliminazione, cio`e il suo comportamento rispetto alla
propagazione degli errori di arrotondamento.
analisi numerica

c
V.
Comincioli

162

Algebra lineare numerica

Esempio 4.6 Consideriamo il seguente sistema

x1 + x2 + x3 = 1
x1 + x2 + 2x3 = 2

x1 + 2x2 + 2x3 = 1

(4.14)

La matrice dei coecienti `e non singolare ed ha come soluzione esatta il vettore x = [1, 1, 1]T . Dopo la
prima eliminazione si ottiene per la seconda e terza equazione
x3 = 1
x2 + x3 = 0
(2)

e, quindi, essendo a22 = 0, nella forma precedente il metodo si arresta. In questo caso `e evidente il
rimedio; basta scambiare la 2a equazione con la 3a , oppure scambiare la 2a colonna con la 3a . La seconda
operazione, in particolare, equivale a un cambiamento nellordine delle incognite.
Esaminiamo, ora, un altro eetto delloperazione di scambio di righe e/o di colonne. A tale scopo
sostituiamo al sistema (4.14) il seguente

x2 + x3 = 1
x1 +
x1 + 1.0001x2 + 2x3 = 2
(4.15)

x1 +
2x2 + 2x3 = 1
ottenuto perturbando lelemento a22
a22 a
22 := a22 + 0.0001
del sistema (4.15), arrotondata a 4 decimali, `e la seguente
La soluzione x
x
1 = 1.0000,

x
2 = 1.0001,

x
3 = 1.0001

Come si vede, gli errori relativi sui risultati sono dello stesso ordine di grandezza dellerrore relativo introdotto nella matrice dei coecienti. Questo risultato signica che il sistema dato non `e mal condizionato.
Applicato al sistema (4.15), il metodo di eliminazione fornisce al primo passaggio il seguente sistema ridotto

x2 + x3 = 1
x1 +
0.0001x2 + x3 = 1
(4.16)

x2 + x3 = 0
da cui, eliminando la variabile x2 dalla seconda equazione, si ottiene il sistema triangolare

x2 +
x3 =
1
x1 +
0.0001x2 +
x3 =
1

9999x3 = 10000

(4.17)

mentre, se scambiamo prima delleliminazione della variabile x2 la seconda riga con la terza si ottiene

x3 = 1
x1 + x2 +
x2 +
x3 = 0
(4.18)

0.9999x3 = 1
Osserviamo che nella prima procedura i moltiplicatori dipendono dal fattore 1/0.0001 = 10000, mentre
dopo lo scambio delle righe tale fattore diventa 0.0001.
Esaminiamo, ora, leetto degli errori di arrotondamento nella risoluzione del sistema triangolare (4.17)
e rispettivamente del sistema (4.18). Supponiamo, a scopo di esemplicazione, di operare in una aritmetica
oating a 4 cifre. Operando una sostituzione allindietro, nel caso del sistema (4.17) si ottiene x3 =
analisi numerica

c
V.
Comincioli

4.1 Metodi diretti

163

10000/9999 = 1.00010001 . . ., da cui il valore arrotondato a quattro cifre x3 = 1.000. Sostituendo nelle
equazioni precedenti, si ottiene allora la seguente soluzione numerica
sistema (4.17)

x1 = 0,

x2 = 0,

x3 = 1.000

Nel caso del sistema (4.18) si ottiene ancora x3 = 1.000, ma questa volta la sostituzione nelle equazioni
precedenti fornisce la seguente soluzione
sistema (4.18)

x1 = 1.000,

x2 = 1.000,

x3 = 1.000

Come si vede dal confronto con la soluzione esatta del problema perturbato, loperazione di scambio delle
due righe ha migliorato la stabilit`
a numerica dellalgoritmo.

Lesempio precedente suggerisce lopportunit`


a, dal punto di vista della propagazione degli
errori di arrotondamento, di evitare durante leliminazione la presenza di moltiplicatori grandi.
Questo risultato equivale, come si `e visto nellesempio, ad una opportuna scelta, ad ogni passo
(k)
k, dellelemento akk . Poiche tale elemento individua la incognita da eliminare e la riga in cui
operare leliminazione, esso viene detto usualmente elemento pivot, da cui il nome di tecnica, o
metodo pivotale (pivoting).
---------------function x=solGA(A,b)
% pivotale per colonne
[n,n]=size(A);
A=[A b];
x=zeros(n,1);
row=1:n;
for p=1:n-1
[maxx, j]=max(abs(A(p:n,p)));
temp=row(p);
row(p)=row(j+p-1);
row(j+p-1)=temp;
if(A(row(p),p))==0 %meglio una soglia
break, end
for k=p+1:n
m=A(row(k),p)./A(row(p),p);
A(row(k),p+1:n+1)=A(row(k),p+1:n+1)-m*A(row(p),p+1:n+1);
end
end
x(n)=A(row(n),n+1)/A(row(n),n);
for k=n-1:-1:1
x(k)=(A(row(k),n+1)-A(row(k),k+1:n)*x(k+1:n))./A(row(k),k);
end

A secondo di come lelemento pivot viene individuato, si possono avere dierenti varianti, tra
le quali segnaliamo le seguenti, illustrate in maniera schematica nella Figura 4.4, ove le frecce
indicano gli opportuni scambi di righe e/o di colonne.
pivoting parziale: si sceglie come elemento pivot il massimo in modulo degli elementi di una
colonna (pivoting di colonna)
(k)
(k)
|ark | = max |aik |
kin

e si scambiano la riga r-ma con la riga k-ma prima di procedere alla eliminazione. In modo
analogo, si denisce il pivoting per riga.
analisi numerica

c
V.
Comincioli

164

Algebra lineare numerica

pivoting totale: lelemento pivot `e il massimo in modulo tra tutti gli elementi della matrice che
rimane da trasformare
(k)
(k)
| = max |aij |
|ars
ki,jn

(k)

Per portare lelemento ars nella posizione (k, k) del pivot, `e necessario uno scambio fra le
righe di indice r e k e uno scambio fra le colonne di indice s e k. Lo scambio di righe non
modica la soluzione del sistema lineare, mentre lo scambio di colonne modica lordinamento
delle componenti del vettore soluzione.

Figura 4.4 Illustrazione della tecnica di pivoting di colonna e di pivoting totale.


` tuttavia, importante osservare che la tecnica del pivot risulta ecace nel migliorare la stabilit`a
E,
numerica del procedimento di eliminazione soltanto se la matrice dei coecienti `e opportunamente
equilibrata. Questo aspetto `e illustrato nel successivo esempio.
Esempio 4.7 Consideriamo il seguente sistema


0.005x1 + x2 = 0.5
x1 + x2 = 1

(4.19)

la cui soluzione esatta `e data da


x1 = 5000/9950 = 0.503...;

x2 = 4950/9950 = 0.497...

(4.20)

Eliminando la variabile x1 dalla prima equazione, ossia assumendo come elemento pivot a11 = 0.005, si
ottiene

x2 =
0.5
0.005x1 +
(4.21)
199x2 = 99
In questo caso si ha come moltiplicatore il numero m21 = a21 /a11 = 1/0.005  1 e, come abbiamo visto
nellesempio precedente, possono vericarsi dicolt`
a numeriche nella risoluzione del sistema triangolare.
In eetti, supponendo di usare unaritmetica a 2 cifre e indicando con x = [x1 , x2 ] la soluzione numerica
ottenuta risolvendo allindietro il sistema (4.21), si ottiene
x2 = (99/199) = (0.49548 . . .) = 0.50,

x1 = 0

Se, in alternativa, assumiamo come elemento pivot lelemento a21 = 1, si ha come moltiplicatore il valore
m21 = 0.005  1 e il seguente sistema triangolare, nel quale abbiamo scambiato le due righe

x2 = 1
x1 +
(4.22)
0.995x2 = 0.495
analisi numerica

c
V.
Comincioli

4.1 Metodi diretti

165

Si ottiene pertanto come soluzione


x2 = (0.495/0.995) = (0.4974 . . .) = 0.50,

x1 = 0.50

che corrisponde allarrotondamento della soluzione esatta (4.20).


I risultati ora ottenuti concordano con quelli che abbiamo ottenuto nellesempio precedente, nel senso
che la scelta opportuna dellequazione da cui eliminare lincognita corrisponde a quella che fornisce il
moltiplicatore pi`
u piccolo. Lesempio che stiamo considerando ci permette, tuttavia, di evidenziare un
altro aspetto importante. A tale scopo, consideriamo il sistema lineare che si ottiene dal sistema (4.19)
moltiplicando la prima riga per 200

x1 + 200x2 = 100
(4.23)
x2 = 1
x1 +
I sistemi (4.19) e (4.23) sono naturalmente equivalenti, dal punto di vista teorico. Tuttavia, per quanto
riguarda la tecnica pivotale di colonna, nel sistema (4.23) non si vede la necessit`
a di scambiare le due
righe. Ma, come si verica facilmente, la scelta della prima equazione, come equazione da cui ricavare x1 ,
porta alle stesse dicolt`
a numeriche esaminate in precedenza. Indicando con A1 , e rispettivamente A2 , la
matrice dei coecienti del sistema (4.19) e del sistema (4.23), si ha




0.005 1
1.005
1.005

,
A1
A1 =
1
1
1
1.005 0.005




1 200
0.005
1.005
1
A2 =
,
A2
1
1
0.005 0.005
La matrice A1 `e pi`
u equilibrata della matrice A2 , nel senso che le somme dei moduli degli elementi delle
righe, e delle colonne hanno un ordine di grandezza tra loro confrontabile, mentre per la matrice A2 le
somme delle righe dieriscono per due ordini di grandezza.
Dalla conoscenza delle matrici inverse ricaviamo unaltra informazione, che sar`a approfondita nel
successivo paragrafo relativo al condizionamento di un sistema lineare. Si ha
A1 1 A1
1 1 2,

A2 1 A1
2 1 200

(4.24)

Come vedremo, il risultato precedente esprime il fatto che la moltiplicazione della prima riga per 200 ha
peggiorato il condizionamento della matrice.

4.1.4

Pivoting scalato

LEsempio 4.7 ha evidenziato limportanza, quando si applica il metodo del pivot, dello scaling
della matrice dei coecienti. Nelle applicazioni, suggerimenti per un scaling opportuno possono
venire dallanalisi del signicato delle singole variabili xi , e quindi da una scelta conveniente delle
loro unit`
a di misura. In termini algoritmici, `e possibile modicare opportunamente il metodo in
modo adattivo, ossia in modo da tener conto della grandezza delle singole righe del sistema
durante lapplicazione stessa del metodo. Pi`
u precisamente, si calcola inizialmente la grandezza
di della riga i di A, per i = 1, 2, . . . , n, ponendo
di = max |aij |
1jn

Al generico passo k-mo delleliminazione, si assume come equazione pivotale quella fra le n k
rimanenti che ha il coeciente di xk pi`
u grande in modulo relativamente alla grandezza della riga.
In altre parole si cerca lindice p (usualmente il pi`
u piccolo), tra k e n, per il quale
(k)

|apk |
dp
analisi numerica

(k)

|a |
ik ,
di

i = k, . . . , n
c
V.
Comincioli

166

Algebra lineare numerica

Si ha in corrispondenza il seguente algoritmo.


Algoritmo 4.4 (Algoritmo con pivoting colonna scalato) Una matrice A Rnn non singolare `e ridotta
ad una matrice di forma triangolare procedendo nel seguente modo
For i = 1, 2, . . . , n
ipivot(i) = i
di = max1jn |aij |
end i
For k = 1, 2, . . . , n 1
(k)
(k)
|apk |
|a |
= max ik
p intero tale che
kin di
dp
(k)
(k)
Scambio akj e apj , j = 1, . . . , n
Scambio ipivot(k) e ipivot(p)
For i = k + 1, . . . , n
(k)
(k)
mik = aik /akk
For j = k + 1, . . . , n
(k+1)
(k)
(k)
= aij mik akj
aij
end j
end i
end k

4.1.5

Decomposizione LU

` interessante sottolineare che il procedimento di eliminazione di Gauss realizza, in sostanza, la


E
seguente fattorizzazione della matrice A
PA = LU

(4.25)

ove P `e la matrice di permutazione che corrisponde agli eventuali scambi di righe (cfr. Algoritmo
4.4), L `e la matrice triangolare inferiore che contiene i moltiplicatori, e con elementi sulla diagonale
uguali a 1, e U `e la matrice triangolare superiore che risulta dallapplicazione del procedimento
di eliminazione. In eetti, come vedremo nel seguito, lidea della decomposizione della matrice
dei coecienti nel prodotto di matrici pi`
u semplici pu`
o essere generalizzata, dando origine a
interessanti varianti del metodo di Gauss, note come metodi compatti . Osserviamo che dalla
decomposizione (4.25) si ottiene la soluzione del sistema lineare Ax = b mediante la successiva
risoluzione due sistemi triangolari
Ax = b

Ly = Pb
Ux = y

(4.26)

Una esemplicazione del risultato (4.25) `e stata esaminata nellEsempio 4.4, in corrispondenza al
caso in cui P = I, ossia nel caso in cui non vengano eettuati scambi di righe. Riprenderemo,
ora, tale caso per matrici di ordine qualunque, lasciando, invece, come esercizio lestensione al
caso in cui P sia distinta dalla matrice identit`a. A tale scopo, osserviamo che il generico passo
di eliminazione k-mo pu`
o essere descritto come il risultato del prodotto della matrice A(k) , ossia
della matrice che risulta dalle sostituzioni precedenti, per una particolare matrice elementare. Si
consideri, infatti, la matrice
Mk : H(1, mk , ek ) = I mk eTk
analisi numerica

c
V.
Comincioli

4.1 Metodi diretti

167

ove mk = [0, . . . , mk+1 k , mk+2 k , . . . mn k ]T . La premoltiplicazione di A(k) per Mk ha come eetto


la sottrazione da ogni riga i (i = k + 1, . . . n) della riga k-ma moltiplicata per mik . Per avere
(k) (k)
quindi leliminazione richiesta basta assumere mik = aik /akk .
Si ha, pertanto
U = Mn1 Mn2 M2 M1 A
da cui si ricava
A = LU

(4.27)

tenendo conto che il prodotto di matrici triangolari e linversa di una matrice triangolare sono
ancora matrici triangolari dello stesso tipo.

4.1.6

Decomposizione LDMT

La descrizione in termini matriciali del metodo di eliminazione suggerisce opportune modiche che
hanno interesse quando la matrice dei coecienti presenta una struttura particolare, ad esempio
quando `e una matrice simmetrica e/o a banda. A tale scopo, introduciamo dapprima una variante
della decomposizione LU.
Proposizione 4.1 (Decomposizione LDMT ) Se i minori principali di una matrice A di ordine
n sono diversi dallo zero, allora esistono due matrici triangolari inferiori L e M con elementi
diagonali uguali a 1 e una matrice diagonale D = diag(d1 , . . . , dn ) tali che A = LDMT .
Dimostrazione. Dallapplicazione del metodo di eliminazione si ha A = LU, con L triangolare inferiore
e lii = 1 e U matrice triangolare superiore. Posto D = diag(d1 , . . . , dn ), con dj = uii , i = 1, . . . , n, si ha
che MT = D1 U `e una matrice triangolare superiore con elementi uguali ad uno sulla diagonale principale.
Pertanto, A = LU = LD(D1 U) = LDMT .

Una volta che sia nota la decomposizione LDMT , la soluzione del sistema Ax = b pu`
o essere
2
ottenuta con un numero O(n ) di ops risolvendo i sistemi Ly = b (eliminazione in avanti),
Dz = y e MT x = z (sostituzione allindietro).
o essere ottenuta numericamente, come indicato nella dimostraLa decomposizione LDMT pu`
zione della Proposizione 4.1, mediante il calcolo delle matrici L e U attraverso leliminazione di
Gauss.
Un modo alternativo consiste nel considerare la relazione LDMT = A come un sistema in cui
le incognite sono gli elementi delle tre matrici L, D, M e le equazioni si ottengono uguagliando
gli elementi della matrice a primo e a secondo membro.
Si ottengono in questo modo le seguenti equazioni
k1

lkp dp mkp +

dk = akk ,

k = 1, . . . n

p=1
k1

lip dp mkp + lik dk = aik ,

i>k

lkp dp mip + mik dk = aki ,

i>k

p=1
k1

p=1

analisi numerica

c
V.
Comincioli

168

Algebra lineare numerica

che possono essere risolte mediante il seguente algoritmo3 .


Algoritmo 4.5 (Decomposizione LDMT ) Per ogni matrice A di ordine n, con minori principali non
nulli, la decomposizione LDMT pu`
o essere ottenuta mediante il seguente algoritmo nel quale gli elementi
aij della matrice originaria sono sostituiti da lij se i > j e con mji se i < j.
For k = 1, . . . , n
For p = 1, 2, . . . , k 1
rp := dp apk
wp := akp dp
end p
k1
dk := akk p=1 akp rp
For i = k + 1, . . . , n
$
%
k1
aik = aik p=1 aip rp /dk
%
$
k1
aki = aki p=1 wp api /dk
end i
end k

4.1.7

Metodi di Crout e di Doolittle

Ricordiamo due varianti dellAlgoritmo 4.5, note in letteratura, rispettivamente, come metodo di
Doolittle e metodo di Crout 4 e ambedue esempi di schemi compatti . Sia il metodo di Doolittle
che il metodo di Crout costruiscono una decomposizione di A della forma A = LU; dieriscono
per il fatto che nel metodo di Doolittle si richiede lii = 1, i = 1, . . . , n, mentre nel metodo di Crout
si pone uii = 1, i = 1, . . . , n. In particolare, quindi, il metodo di Doolittle fornisce la medesima
decomposizione del metodo di Gauss. In sostanza, la fattorizzazione di Crout corrisponde alla
associazione (LD)U, mentre la fattorizzazione di Doolittle corrisponde a L(DU).
Algoritmo 4.6 ( Doolitle) Data una matrice A di ordine n, con i minori principali dierenti dallo zero,
lalgoritmo fornisce la decomposizione A = LU, con lii = 1.
For k = 1, 2 . . . , n
For i = k, . . . , n
k1
uki = aki p=1 lkp upi
end i
For i = k + 1, . . . , n
$
%
k1
lik = aik p=1 lip upk /ukk
end i
end k

Considerando, come illustrazione, il caso n = 3 si ha

a11
a21
a31

a12
a22
a32

a13
u11
a23 l21
a33
l31

u12
a22
a32

u13
u11
a23 l21
a33
l31

u12
u22
l32

u13
u11
u23 l21
a33
l31

u12
u22
l32

u13
u23
u33

Nella descrizione dellalgoritmo si conviene, come avviene automaticamente in alcuni linguaggi, che quando
nella sommatoria e nel loop di iterazione il secondo indice `e minore del primo la sommatoria e il loop non sono
eseguiti.
4
Crout, Prescott D., A Short Method for Evaluating Determinants and Solving Systems of Linear Equations with
Real or Complex Coecients, Trans. AIEE, 60:12351240 (1941). Doolittle, Myrick Hascall (18301913); si veda
ad esempio R.W. Farebrother A memoir of the life of M.H. Doolittle, IMA Bulletin, 23 (6/7) 102, 1987.
analisi numerica

c
V.
Comincioli

4.1 Metodi diretti

169

ove, ad esempio u33 = a33 l31 u13 l32 u23 .


Algoritmo 4.7 (Crout) Data una matrice A di ordine n, con i minori principali dierenti dallo zero,
lalgoritmo fornisce la decomposizione A = LU, con uii = 1.
For k = 1, 2 . . . , n
For i = k, . . . , n
k1
lik = aik p=1 lip upk
end i
For i = k + 1, . . . , n
%
$
k1
uki = aki p=1 lkp upi /lkk
end i
end k

Nel caso di n = 3 si ha

a11
a21
a31

a12
a22
a32

a13
l11
a23 l21
a33
l31

u12
a22
a32

u13
u11
a23 l21
a33
l31

u12
l22
l32

u13
u11
u23 l21
a33
l31

u12
u22
l32

u13
u23
l33

ove, ad esempio l33 = a33 l31 u13 l32 u23 .

4.1.8

Matrici simmetriche

Quando la matrice A `e simmetrica vi `e una ridondanza nella fattorizzazione LDMT . Si ha,


infatti, il seguente risultato.
Proposizione 4.2 (Decomposizione LDLT ) Se A = LDMT `e la decomposizione di una matrice
A simmetrica non singolare, allora L = M.
Dimostrazione.

La matrice M1 AMT = M1 LD `e simmetrica e triangolare inferiore, e quindi


diagonale. Dal momento che D `e non singolare, questo implica che anche M1 L `e diagonale ed avendo gli
elementi sulla diagonale principale tutti uguali a 1 si ha M1 L = I.

Ad esempio, si ha

10 20 30
1 0 0
10 0 0
1 2 3
A = 20 45 80 = 2 1 0 0 5 0 0 1 4
30 80 171
3 4 1
0 0 1
0 0 1

(4.28)

A partire da tale risultato, lAlgoritmo 4.5 pu`o essere modicato nel seguente modo.
Algoritmo 4.8 (Decomposizione LDLT ) Data una matrice simmetrica A, le matrici D, L si calcolano
nel modo seguente; gli elementi aij sono sostituiti da lij per i > j.
For k = 1, . . . , n
For p = 1, . . . , k 1
rp := dp akp
end p
k1
dk := akk p=1 akp rp
If dk = 0
analisi numerica

c
V.
Comincioli

170

Algebra lineare numerica

then stop
else
For i = k + 1, . . . , n
%
$
k1
aik := aik p=1 aip rp /dk
end i
end if
end k

Quando applicato alla matrice (4.28), lalgoritmo fornisce la seguente matrice

10 20 30
A = 2 5 80
3 4 1
LAlgoritmo 4.5 diventa particolarmente interessante, quando applicato ad una matrice denita
positiva. Si pu`
o infatti dimostrare, utilizzando le propriet`
a delle matrici simmetriche denite
T
positive che per esse la fattorizzazione A = LDM esiste e la matrice diagonale D ha elementi
positivi. Si pu`o, inoltre, mostrare che lalgoritmo `e stabile nel senso della propagazione degli errori
di arrotondamento.
Nel caso di matrici simmetriche denite positive, una variante della decomposizione LDLT `e
data dal noto metodo di Cholesky, o metodo delle radici quadrate5
Proposizione 4.3 (Decomposizione di Cholesky) Se A `e una matrice simmetrica denita positiva, allora esiste ununica matrice R triangolare inferiore, con elementi positivi sulla diagonale
principale, tale che
A = RRT
(4.29)
Il risultato segue dal fatto che, come abbiamo visto in precedenza, si ha A = LDLT . Poiche
1/2
1/2
dk > 0, la matrice R = L diag(d1 , . . . , dn ) `e reale, triangolare inferiore con elementi positivi
sulla diagonale principale e verica (4.29). Lunicit`
a segue dalla unicit`
a della fattorizzazione
T
LDL .
Come esemplicazione, si consideri


 
 
 
 
 
2
0
2

2 2
1 0
2 0
1 1

2
=
=
2
5
1 1
0 3
0
1
3
3
2
0
Osserviamo che una volta calcolata la decomposizione di Cholesky la soluzione del sistema Ax = b
pu`
o essere ottenuta risolvendo successivamente i due sistemi triangolari Ry = b e RT x = y.
Un modo eciente per calcolare la matrice di Cholesky R pu`
o essere ricavato dal confronto
T
degli elementi nellequazione A = RR . Per i k si ha

k1
k
rik = aik p=1
rip rkp /rkk , i > k



rip rkp
aik =
r = a k1 r 2 1/2
p=1
kk
kk
p=1 kp
5
A. L. Cholesky (1875-1918), uciale francese, ha sviluppato tale metodo allo scopo di risolvere le equazioni
normali ottenute applicando il metodo dei minimi quadrati nel tting di dati geodetici. Il metodo `e anche noto
come metodo di Banachiewicz (1937).
Il metodo non `e mai stato pubblicato da A. Cholesky, ma appare per la prima volta esposto in un lavoro pubblicato
da Benoit in Bulletion Geodesique, 2 (1924) 67-77.
In realt`
a esiste un manoscritto datato 2 dicembre 1910 e conservato allEcole Polytechnique, dove Cholesky fu
studente nel 1985, nel quale il metodo viene esposto nella forma nota attualmente.

analisi numerica

c
V.
Comincioli

4.1 Metodi diretti

171

Ne consegue il seguente algoritmo.


function R = CholGax(A)
% fattorizzazione di Cholesky di una matrice simmetrica
% e definita positiva
% R triangolare inferiore con A = R*R.
[n,n] = size(A); R = zeros(n,n); s = zeros(n,1);
for j=1:n
if j==1
s(j:n) = A(j:n,j);
else
s(j:n) = A(j:n,j) - R(j:n,1:j-1)*R(j,1:j-1);
end
R(j:n,j) = s(j:n)/sqrt(s(j));
end

Lalgoritmo richiede n3 /6 ops.


La funzione matlab Chol(A) fornisce una matrice triangolare superiore U tale A = UT U,
ossia la trasposta della matrice R.
La stabilit`
a numerica dellalgoritmo segue dal seguente risultato
2
rij

2
rip
= aii

p=1

che mostra il fatto importante che gli elementi della matrice di Cholesky sono limitati (con costante
moltiplicativa uguale a uno) dagli elementi della matrice A.

Figura 4.5 Struttura a banda.

4.1.9

Matrici a banda

Una matrice `e chiamata a banda quando gli elementi che possono essere diversi dallo zero sono
concentrati vicino alla diagonale. Pi`
u precisamente, si dice che A = [aij ] ha una banda superiore
q, se aij = 0 per j > i + q e una banda inferiore p, se aij = 0 per i > j + p (cfr. per una
rappresentazione schematica la Figura 4.5).
Matrici con struttura a banda hanno origine in molteplici applicazioni, in particolare nellambito della discretizzazione dei problemi dierenziali con il metodo delle dierenze nite o degli
elementi niti, o in modelli di reti.
analisi numerica

c
V.
Comincioli

172

Algebra lineare numerica

Per la risoluzione di sistemi con matrici a banda risultano particolarmente interessanti i metodi
di fattorizzazione, in quanto i fattori triangolari L, U, e R nel caso simmetrico, possono essere
calcolati in maniera da conservare la struttura a banda.
In eetti, con un procedimento di induzione si pu`
o dimostrare il seguente risultato, illustrato
nella Figura 4.6.
Proposizione 4.4 Supponiamo che la matrice A di ordine n abbia la fattorizzazione A = LU.
Allora, se A ha una banda superiore q e una banda inferiore p, la matrice U ha banda superiore
q e L una banda inferiore p.

Figura 4.6 Decomposizione LU per una matrice a banda.


Come illustrazione, si considerino i seguenti passaggi ottenuti mediante il metodo di eliminazione
di Gauss in corrispondenza a una matrice a banda, con p = 2 e q = 1. Osserviamo che ad ogni
passo del procedimento di eliminazione, si opera su una sottomatrice 3 2; in generale, per una
matrice a banda (p, q), ad ogni passo si opera una sottomatrice di dimensioni (l + 1) (u + 1).

2 1 0 0 0
2 1 0 0 0
2 1 0 0 0
0 2 1 0 0
0 2 1 0 0
4 4 1 0 0

6 5 3 1 0 0 2 3 1 0 0 0 2 1 0

0 0 2 3 1
0 6 5 3 1
0 6 5 3 1
0 0 6 5 3
0 0 6 5 3
0 0 6 5 3

2 1 0 0 0
2 1 0 0 0
0 2 1 0 0
0 2 1 0 0

0 0 2 1 0 0 0 2 1 0

0 0 0 2 1
0 0 0 2 1
0 0 0 0 2
0 0 0 2 3
e, quindi, introducendo la

2 1
4 4

6 5

0 6
0 0

matrice dei moltiplicatori, la seguente




0 0 0
2
1 0 0 0 0
2 1 0 0 0 0
1 0 0

3 1 1 0 0 0
3 1 0
=


5 3 1 0 3 1 1 0 0
6 5 3
0
0 0 3 1 1

fattorizzazione

1 0 0 0
2 1 0 0

0 2 1 0

0 0 2 1
0 0 0 2

Una matrice di ordine n e a banda (p, q) pu`


o essere memorizzata in forma compatta in una array
rettangolare ABAND di dimensioni (p + q + 1) n, con la convenzione che
aij = ABAND(i-j+q+1,j)
analisi numerica

(4.30)
c
V.
Comincioli

4.1 Metodi diretti

173

per tutte le coppie di indici (i, j) che sono interne alla banda. Come esemplicazione, la matrice
precedente pu`o essere memorizzata nella seguente forma

ABAND=

a11
a21
a31

a12
a22
a32
a42

a23
a33
a43
a53

a34
a44
a54

a45
a55

2
4
6

1
4
5
6

1
3
5
6

1
3
5

1
3

sopradiagonale
diagonale
1a sottodiagonale
2a sottodiagonale

ove con si `e indicato le posizioni di memoria che non sono utilizzate (tali posizioni potrebbero
essere evitate memorizzando la banda in un unico vettore). Ad eliminazione terminata si ottiene

2
2
3

1
2
1
3

1
2
1
3

1
2
1

1
2

sopradiagonale di U
diagonale di U
1a sottodiagonale di L
2a sottodiagonale di L

Come ulteriore approfondimento della tecnica di memorizzazione (4.30), consideriamo il seguente


algoritmo mediante il quale la moltiplicazione di una matrice a banda per un vettore pu`o essere
ottenuta mediante circa 2n(p + q + 1) ops.
Algoritmo 4.9 (Prodotto di matrice a banda per vettore) Data una matrice A a banda inferiore p e banda superiore q e memorizzata nella forma (4.30), e un vettore x Rn , il seguente algoritmo calcola z = Ax
con un procedimento per colonne.
zi = 0, i = 1, 2, . . . , n
For j = 1, 2, . . . , n
itop = max(1, j q); ibot = min(n, j + p)
iatop = max(1, q + 2 j); iabot = iatop + ibot itop
For i = itop, . . . , ibot
zi := zi + xj ABAND(iatop itop + i, j)
end i
end j

Il metodo di eliminazione, che abbiamo visto applicato su un esempio particolare, pu`


o essere
generalizzato nel seguente modo.
Algoritmo 4.10 (Eliminazione di Gauss per matrici a banda) Per una matrice A di ordine n a banda
(p, q), la decomposizione A = LU, se esiste, pu`o essere calcolata col seguente algoritmo, nel quale gli
elementi aij sono sostituiti da lij se i > j e da uij se i j.
For k = 1, . . . , n 1
For i = k + 1, . . . , min(k + p, n)
aik := aik /akk
end i
For i = k + 1, . . . , min(k + p, n)
For j = k + 1, . . . , min(k + q, n)
aij := aij aik akj
end j
end i
end k
analisi numerica

c
V.
Comincioli

174

Algebra lineare numerica

Lalgoritmo precedente richiede un numero di operazioni in ops dato da


.
npq 12 pq 2 16 p3 + pn se p q
npq 12 p2 q 16 q 3 + qn

se p > q

Estensioni immediate si hanno per le decomposizioni LDMT . Per quanto riguarda, poi, la
risoluzione dei sistemi triangolari a banda si hanno i seguenti algoritmi.
Algoritmo 4.11 (Sistema triangolare a banda inferiore) Sia L una matrice di ordine n triangolare a banda inferiore p e tale che lii = 1, i = 1, 2, . . . , n. Dato b Rn , il seguente algoritmo calcola la soluzione del
sistema Ly = b; il vettore b `e sostituito dalla soluzione y.
For i = 1, 2, . . . , n
i1
bi := bi j=max(1,ip) lij bj
end i

Algoritmo 4.12 (Sistema triangolare a banda superiore) Sia U una matrice di ordine n triangolare a
banda superiore q. Dato b Rn , il seguente algoritmo calcola la soluzione del sistema Ux = b; il vettore
b `e sostituito dalla soluzione x.
For i = n, n 1, . . . , 2, 1
%
$
uij bj /uii
bi := bi min(i+q,n)
j=i+1
end i

Gli algoritmi precedenti richiedono np p2 /2 (rispettivamente n(q + 1) q 2 /2 ) ops.


LAlgoritmo 4.10 non prevede la tecnica pivotale. In eetti, gli scambi delle righe possono
allargare la banda della matrice. Per esempio, se A `e tridiagonale e alla prima eliminazione si
scambiano le prime due righe, lelemento u13 risulta in generale dierente dallo zero. Lalgoritmo di eliminazione di Gauss per le matrici a banda `e pertanto particolarmente interessante nel
caso che non sia richiesta loperazione di pivoting, cio`e ad esempio per le matrici a predominanza diagonale e le matrici simmetriche denite positive. Rinviando alla bibliograa per una pi`
u
adeguata trattazione, ci limiteremo ad analizzare alcuni algoritmi per le matrici simmetriche e
denite positive.
Algoritmo 4.13 ( Algoritmo di Cholesky per matrici a banda) Per una matrice A simmetrica denita positiva e a banda p, il seguente algoritmo calcola una matrice triangolare inferiore R con banda inferiore p
tale che A = RRT . Gli elementi rij sostituiscono gli elementi aij (i j).
For i = 1, . . . , n
For j = max(1, i p), . . . , i 1
%
$
aij := aij j1
k=max(1,ip) aik ajk /ajj
end j
$
%1/2
i1
aii := aii k=max(1,ip) a2ik
end i

Lalgoritmo richiede (np2 /2)(p3 /3)+(3/2)(npp2 ) ops e n radici quadrate. Quindi per p  n,
la decomposizione di Cholesky richiede n(p2 + 3p)/2 ops e n radici quadrate. Inoltre, la matrice
A pu`
o essere memorizzata in una array ABAND di dimensioni n (p + 1) nella seguente forma
analisi numerica

c
V.
Comincioli

4.1 Metodi diretti

175

(in cui p = 2)

ABAND =

a31
a42
..
.

a21
a32
a43
..
.

a11
a22
a33
a44
..
.

con

aij = ABAND(i, j i + p + 1)

an,n2 an,n1 ann


Per valori piccoli di p le radici quadrate costituiscono una parte consistente del calcolo. In questo caso si preferisce una decomposizione LDLT , nella quale non `e necessario il calcolo delle
radici quadrate. Come illustrazione, esplicitiamo il caso di una matrice A tridiagonale simmetrica. Indichiamo con L la matrice bidiagonale triangolare inferiore e con D la matrice diagonale

diag(d1 , . . . , dn ). Dalluguaglianza A = LDLT si ha


a11 =d1
ak,k1 =ck1 dk1
k = 2, 3, . . . , n
2
ak,k =dk + ck1 dk1 = dk + ck1 ak,k1 k = 2, 3, . . . , n
da cui
d1 =a11
ck1 =ak,k1 /dk1
dk =akk ck1 ak,k1
per k = 2, . . . , n. Completando con la soluzione dei sistemi Ly=b, Dz=y e LT x = z, si ha il
seguente algoritmo che richiede 5n ops.
Algoritmo 4.14 (Algoritmo di Cholesky per matrici tridiagonali) Data una matrice A tridiagonale simmetrica denita positiva, con gli elementi della diagonale memorizzati nel vettore [d1 , d2 , . . ., dn ] e gli
elementi sopra la diagonale nel vettore [c1 , c2 , . . ., cn ], il seguente algoritmo calcola la soluzione del sistema
Ax = b; il vettore x sostituisce il vettore b.
For k = 2, . . . , n
t := ck1 , ck1 := t/dk1 , dk := dk tck1
end k
For k = 2, . . . , n
bk := bk ck1 bk1
end k
bn := bn /dn
end k
analisi numerica

c
V.
Comincioli

176

Algebra lineare numerica


For k = n 1, . . . , 1
bk := bk /dk ck bk+1
end k

4.1.10

Matrici sparse

In termini qualitativi, una matrice `e considerata sparsa quando il suo ordine `e sucientemente
elevato, ma i suoi elementi sono in predominanza nulli. Le matrici a banda che abbiamo
considerato nel paragrafo precedente sono, quindi, casi particolari di matrici sparse. Ma, pi`
u
in generale, nelle applicazioni una matrice sparsa pu`
o avere gli elementi diversi dallo zero non
necessariamente addensati intorno alla diagonale. Per tali matrici si pone da una parte il problema
di una loro conveniente rappresentazione in memoria, e dallaltra lindividuazione di opportune
strategie nellapplicazione del metodo di eliminazione, in maniera da limitare il pi`
u possibile il
fenomeno del ll-in. Per ll-in si intende il fatto che un elemento della matrice originariamente
nullo diventa diverso dallo zero per eetto della sostituzione. Per la risoluzione dei problemi
ora prospettati sono state proposte diverse soluzioni. In questo paragrafo forniremo una breve
introduzione, che evidenzia, tuttavia, le dicolt`a di base. Nel seguito considereremo lapplicazione
dei metodi iterativi, che rispetto ai metodi diretti hanno il vantaggio di non modicare la matrice.
Esempio 4.8 Analizziamo lapplicazione del metodo di eliminazione ad un sistema lineare Ax = b, con
A matrice della seguente forma

A=

a11
a21
a31
..
.

a12
a22
0
..
.

a13
0
a33
..
.

..
.

a1n
0
0
..
.

an1

ann

La matrice assegnata `e una particolare matrice sparsa, detta anche matrice bordata (bordered). Si tratta di
una matrice completamente nulla, salvo eventualmente la diagonale, la prima riga e la prima colonna. Per la
memorizzazione di una matrice di questo tipo sono quindi sucienti tre vettori. Quando, tuttavia, si applica
il metodo di eliminazione nella forma usuale, il primo passo di eliminazione sostituisce coecienti nulli della
matrice con coecienti, in generale, diversi dallo zero; si verica cio`e un llin. Come esemplicazione, si
consideri la seguente trasformazione, ottenuta sottraendo la prima equazione dalle successive

2 1 1 1
2
1 1 1
2 2

0
0
1
1
1

2 0

1
0
0 1
2
1
2 0
0
1
0 1
1
2
Come si vede, in questo caso tutti gli elementi nulli della matrice originaria dopo la prima eliminazione
sono sostituiti da numeri diversi dallo zero. Ricordiamo, anche, che le posizioni degli elementi che si
azzerano nella prima colonna sono, nel procedimento di eliminazione, usualmente utilizzati per memorizzare
i moltiplicatori, e quindi non sono ulteriormente disponibili. Si conclude, quindi, che procedendo nel modo
precedente, anche se per memorizzare la matrice originaria bastano tre vettori, successivamente `e necessaria
la memorizzazione di una matrice n n. Tuttavia, unosservazione importante per il trattamento delle
matrici sparse `e che leetto llin pu`
o dipendere dallordinamento delle righe e delle colonne della matrice.
Nel sistema lineare tale ordinamento corrisponde allordine in cui si considerano le equazioni e le incognite.
Nel caso delle matrici bordate si pu`o eliminare completamente il ll-in procedendo nel seguente modo.
Si scambiano tra loro la prima e lultima equazione (la prima e lultima riga della matrice) e successivamente
analisi numerica

c
V.
Comincioli

4.1 Metodi diretti

177

lincognita x1 con lincognita xn (la prima e lultima colonna). Si ottiene in questo modo la seguente matrice

ann
0
0

=
A


a1n

0
a22
0
..
.

0
a33
..
.

..
.

an1
a21
a31
..
.

a12

a13

a11

(4.31)

In questo caso per avere una matrice triangolare `e suciente sottrarre dallultima equazione le precedenti
moltiplicate per opportuni coecienti. Se memorizziamo la matrice mediante tre vettori l, u, d nella forma

0
0 u1
d1
0
d2
0 u2

..
.
.. d
0
.
u3
3



l2
dn
l1
si pu`
o fattorizzare la matrice mediante il seguente algoritmo, che sostituisce gli elementi li con i moltiplicatori li /di e sostituisce dn con lelemento diagonale nmo della matrice U.
for i = 1 : n 1
li li /di
dn dn li ui
end i

Per matrici sparse di tipo generale la ricerca di un ordinamento ottimale per ridurre il llin non
`e un problema di facile soluzione. Per un opportuno approfondimento rinviamo ad esempio a
George e Liu [159]. Qui ci limiteremo a considerare la tecnica di memorizzazione di una matrice
sparsa utilizzata in matlab.
Matrici sparse: tecniche di memorizzazione
Come gi`a osservato le matrici sparse contengono un numero signicativo di elementi nulli. Tale
caratteristica fornisce vantaggi sia nella memorizzazione che nel tempo di calcolo.
La densit`
a di una matrice `e il numero di elementi non nulli divisa per il numero totale degli
elementi. Per matrici piene, MATLAB memorizza internamente tutti gli elementi della matrice.
Gli elementi nulli e non nulli richiedono la stessa quantit`
a di spazio di memoria. Per le matrici
sparse, invece, MATLAB memorizza solo gli elementi non nulli e i loro indici.
MATLAB utilizza tre arrays per memorizzare internamente una matrice sparsa con elementi
reali. Data una matrice m n con nnz elementi non nulli memorizzata in una array di lunghezza
nzmax6
La prima array contiene tutti gli elementi della array in formato oating-point. La lunghezza
di tale array `e uguale a nzmax.
6
Inizialmente, nnz ha lo stesso valore di nzmax per default. Ossia, il numero di elementi non nulli `e uguale al
numero delle locazioni di memoria assegnati agli elementi non nulli. Comunque, MATLAB non assegna dinamicamente memoria quando si pongono a zero altri elementi della matrice. Porre uguale a zero alcuni elementi cambia
il valore di nnz, ma non quello di nzmax.

analisi numerica

c
V.
Comincioli

178

Algebra lineare numerica

La seconda array contiene gli indici di riga (in formato intero) per gli elementi non nulli
memorizzati nella precedente array. Tale array ha lunghezza nzmax.
La terza array contiene n interi che indicano linizio di ogni colonna nelle due arrays precedenti
e un addizionale intero che indica la ne di tali arrays. La lunghezza della terza array `e n+1.
Contando 8 bytes per un numero oating-point e 4 bytes per un numero intero, il numero totale
di bytes richiesti per memorizzare una matrice sparsa `e
8*nzmax + 4*(nzmax+n+1)
Per informazioni sulla occupazione di memoria, utilizzare il comando whos.
Per controllare se una matrice `e memorizzata in forma sparsa si ha il seguente comando
ISSPARSE True for sparse matrix.
ISSPARSE(S) is 1 if the storage class of S is sparse
and 0 otherwise.
Creazione delle matrici sparse
MATLAB non crea automaticamente matrici sparse: la decisione di ritenere che la densit`a `e tale
da ottenere vantaggi dalle tecniche per trattare le matrici sparse `e lasciata allutente.
Conversione da matrici piene a matrici sparse
S=sparse(A)

>> A=[0 0 0 5
0 2 0 0
1 3 0 0
0 0 4 0]
>> S=sparse(A)
S =
(3,1)
(2,2)
(3,2)
(4,3)
(1,4)
>> nzmax(S)
ans = 5

1
2
3
4
5

Creazione diretta di matrici sparse


Da una lista di elementi non nulli si pu`
o creare una matrice sparsa usando il seguente comando
S=sparse(i,j,s,m,n)

ove i e j sono vettori di indici riga, e rispettivamente colonna, per gli elementi non nulli della
matrice. s `e un vettore di valori non nulli i cui indici sono specicati dalle coppie (i, j). m e n
sono le dimensioni di riga, e rispettivamente di colonna della matrice risultante.
La matrice S dellesempio precedente pu`o essere generata direttamente nel seguente modo
analisi numerica

c
V.
Comincioli

4.1 Metodi diretti

179

>> S=sparse([3 2 3 4 1], [1 2 2 3 4], [1 2 3 4 5],4,4)


S =
(3,1)
1
(2,2)
2
(3,2)
3
(4,3)
4
(1,4)
5

Come ulteriore esempio consideriamo la costruzione della matrice tridiagonale con -2 sulla diagonale principale e 1 nelle due sottodiagonali superiore e inferiore (discretizzazione della derivata
seconda).
>> D=sparse(1:n,1:n,-2*ones(1,n),n,n);
>> E=sparse(2:n,1:n-1,ones(1,n-1),n,n);
>> S=E+D+E
S =
(1,1)
-2
(2,1)
1
(1,2)
1
(2,2)
-2
(3,2)
1
(2,3)
1
(3,3)
-2
(4,3)
1
(3,4)
1
(4,4)
-2
(5,4)
1
(4,5)
1
(5,5)
-2
>> F=full(S)
F =
-2
1
0
0
0
1
-2
1
0
0
0
1
-2
1
0
0
0
1
-2
1
0
0
0
1
-2

4.1.11

Introduzione allupdating

Le tecniche per aggiornare (updating) la fattorizzazione di una matrice hanno un ruolo centrale
nellalgebra lineare moderna e nella ottimizzazione. In questo paragrafo forniremo, mediante
opportune esemplicazioni, alcune idee di base.
Se B `e una matrice di ordine n e u, v sono due vettori in Rn la matrice A denita nel seguente
modo
(4.32)
A = B uvT
`e detta un aggiornamento della matrice B ottenuta mediante la matrice di rango 1 uvT . Come
esemplicazione, si consideri la seguente decomposizione

0
0 0
0
0
1
0
0
1
2
2
2

1
0 0
0
1
0
0
1
0
0

+ 1
= 0
(4.33)
A=

1
1
0 0
0
0
0 1
0
0 1
0
1
0 0
0
0
0
0
1
1
0
0
1
analisi numerica

c
V.
Comincioli

180

Algebra lineare numerica

In questo caso la matrice B `e una matrice triangolare, e u = [0, 1, 1, 1]T , v = [1, 0, 0, 0]T . Nelle
applicazioni ha interesse ottenere un modo rapido (ossia, con un numero di operazioni di ordine
n2 ) per ottenere una fattorizzazione della matrice A, una volta che sia nota una fattorizzazione
di B. In maniera equivalente, si tratta di costruire linversa A1 , a partire dallinversa di B.
Una risposta teorica a tale problema `e fornita dalla seguente formula, nota come formula di
ShermanMorrison
A1 = B1 + B1 uvT B1
(4.34)
ove = 1/(1 vT B1 u). La formula (4.34) pu`
o essere utilizzata per risolvere il sistema Ax = b
nel seguente modo
x = A1 b =(B1 + B1 uvT B1 )b
B1 b + B1 uvT B1 b
B1 b + (vT B1 b)B1 u
B1 b + B1 u
ove = (vT V1 b) = vT B1 b/(1 vT B1 u). Posto y = B1 b e z = B1 u si ha
x = A1 b = B1 b + B1 u = y +

vT y
z
1 vT z

In denitiva, la soluzione del sistema Ax = b pu`


o essere ottenuta nel seguente modo
1. Si fattorizza B.
2. Si risolvono i sistemi By = b, Bx = u.
3. Si calcola lo scalare = vT y(1 vT z).
4. Si pone x = y + z.
Esempio 4.9 La seguente matrice

A=

3 1
0
1
4 1
0 1
4
0
0 1
1
0
0

0 1
0
0

1
0

4 1
1
3

(4.35)

ha origine nellapprossimazione mediante il metodo delle dierenze nite dei problemi dierenziali del
secondo ordine con condizioni periodiche. Essa pu`o essere espressa nella somma A = B uv, assumendo

4 1
0
0
0
1
1
0
4 1
0
0

0 1
;
0
4
1
0
u
=
v
=

0
0
0 1
4 1
0
0
0 1
4
1
ove B `e una matrice tridiagonale. Applicando lalgoritmo precedente, si ha

0
0.4615
4
1.8462

: By = b y = 2.9231 ; Bz = u z =
9
b=

0
0.8462

1
0.4615
analisi numerica

0.2692
0.0769
0.0385
0.0769
0.2692

c
V.
Comincioli

4.1 Metodi diretti

181

da cui
vT y
= 2;
=
1 vT z

x = y + z =

1
2
3
1
1

Osservazione 4.1 La procedura basata sulla formula di Sherman-Morrison pu`o presentare, come si
pu`
o mostrare attraverso opportune esemplicazioni, problemi di stabilit`
a numerica. Procedure pi`
u stabili
possono essere ottenute utilizzando la decomposizione B=QR in una matrice ortogonale e una matrice
triangolare; i fattori della decomposizione della matrice modicata A possono essere ottenuti mediante
la modica diretta dei fattori della decomposizione di B. Il metodo QR sar`
a considerato nei paragra
successivi.

4.1.12

Fattorizzazione a blocchi

Le idee discusse in questo paragrafo possono essere estese alle matrici a blocchi, trattando formalmente i
blocchi come gli elementi della matrice. Come esemplicazione, consideriamo la seguente decomposizione
a due blocchi


A11 A12
A=
(4.36)
A21 A22
ove A11 , A22 sono matrici quadrate, dette blocchi diagonali, non necessariamente diagonali. La fattorizzazione LU di A pu`
o essere scritta nella seguente forma


 


L11
U11 U12
A11 A12
=
(4.37)
A=
A21 A22
L21 L22
U22
ove L11 e L22 sono sottomatrici triangolari inferiori e U11 e U22 sono sottomatrici triangolari superiori.
Dalla denizione (4.37) si ricavano le seguenti relazioni
A11 = L11 U11
L11 U12 = A12
L21 U11 = A21
A22 L21 U12 = L22 U22

(4.38)
(4.39)
(4.40)
(4.41)

Pertanto, la fattorizzazione (4.36) pu`


o essere costruita calcolando successivamente la fattorizzazione della
matrice A11 , la formazione delle colonne di U12 e delle righe di L21 mediante una sostituzione in avanti, e
inne la fattorizzazione della matrice A22 L21 U12 . Per ognuna delle fattorizzazioni triangolari richieste
si utilizzano le tecniche che abbiamo esaminato in precedenza, con eventuali opportune permutazioni di
righe e di colonne. Come nel caso della fattorizzazione LU per punti, si pu`
o scegliere alternativamente che
la matrice U o la matrice L siano triangolari con elementi sulla diagonale principale uguali a 1. Scegliendo
ad esempio la matrice U, si ha la decomposizione




 
A11
A11 A12
I U12
(4.42)
A=
=
A21 A22
A21 A22
I
con
A11 U12 = A12
A22 = A22 A21 U12
analisi numerica

(4.43)
(4.44)
c
V.
Comincioli

182

Algebra lineare numerica

Data la decomposizione A = LU, ottenuta nel modo (4.42), si ottiene la soluzione del sistema lineare
Ax = b risolvendo successivamente i sistemi lineari

A11 y1 = b1
Ly = b
A22 y2 = b2 A21 y1

x2 = y2
Ux = y
x1 = y1 U12 x2
Osserviamo che il procedimento precedente richiede che la matrice A11 (il pivot a blocchi) sia non singolare.
Il fatto che la matrice A sia non singolare non garantisce la non singolarit`a della matrice A11 , come mostra
il seguente semplice esempio

1
1 1
A = 1 1 -1
0 1
1

 Esercizio 4.1 Risolvere il seguente sistema di equazioni

+x3 =1
0.5x1
x1 +2x2 x3 =0

+x3 =0
x1

usando il metodo di eliminazione di Gauss e il pivoting parziale.

 Esercizio 4.2 Determinare una matrice di permutazione P tale che la matrice

1
1
0
3
2
1 1
1

A=
1
2
3 1
3 1 1
2

ammetta la fattorizzazione PA=LU.

 Esercizio 4.3 Riscrivere lAlgoritmo 4.2 supponendo che la matrice U sia memorizzata sotto forma
di vettore di dimensione 1 [u11 , u12 , u22 , u13 , u23 . . .].
 Esercizio 4.4 Sia A una matrice non singolare. Estendere il metodo di eliminazione con pivoting
parziale per risolvere p > 1 sistemi lineari, corrispondenti a p vettori termini noti diversi. Ricavarne un
algoritmo per il calcolo di A1 .

 Esercizio 4.5 Metodo di Gauss-Jordan. Si considerino le matrici elementari N(y, i) = I + yeTi , con

y Rn . Dato x Rn esaminare il calcolo di y in modo che N(y, i)x = ei ; proporre un algoritmo basato
sulle trasformazioni precedenti per il calcolo di A1 con il risultato sostituito alla matrice A.

 Esercizio 4.6 Mostrare che la matrice non singolare




A=

0
1

1
0

non ha una decomposizione A = LU. Trovare una matrice permutazione P tale che PA abbia una
decomposizione LU.
analisi numerica

c
V.
Comincioli

4.2 Analisi degli errori; condizionamento e stabilit`


a

183

 Esercizio 4.7 Modicare lAlgoritmo 4.8, supponendo che la matrice simmetrica A sia memorizzata
in un vettore di dimensione n(n + 1)/2, nella seguente forma
A = [a11 , a21 , a22 , a31 , , an1 , an2 , , ann ]

 Esercizio 4.8 Calcolare il numero delle operazioni richieste per il calcolo dellinversa di una matrice
tridiagonale con il metodo di Gauss, senza scambio di righe. Considerare, quindi, il caso in cui la matrice
`e simmetrica.

 Esercizio 4.9 Studiare opportune strategie per la risoluzione del sistema A2 x = b, nellipotesi di
conoscere la matrice A.

 Esercizio 4.10 Modicare lAlgoritmo 4.13 supponendo che la matrice A sia memorarizzata per
diagonali (relative alla banda) in un vettore a una dimensione.

 Esercizio 4.11 Esaminare il caso particolare di sistema a banda Hx = b con H matrice di Hessenberg.
 Esercizio 4.12 Implementare lalgoritmo di eliminazione per una matrice a banda di tipo pentadiagonale.

 Esercizio 4.13 Indicare una strategia per il calcolo del seguente vettore
x = B1 (2A + I) (C1 + A)b
senza il calcolo di matrici inverse.

 Esercizio 4.14 Supponendo di avere calcolata la decomposizione LU della matrice A, scrivere un


programma, colonna orientato, per risolvere AT x = b.

4.2

Analisi degli errori; condizionamento e stabilit`


a

Quando un sistema lineare viene risolto numericamente, ossia mediante un particolare algoritmo
implementato su un calcolatore, la soluzione ottenuta dierisce usualmente dalla soluzione esatta,
cio`e dalla soluzione che si potrebbe ottenere eseguendo le operazioni con una precisione innita.
Dal punto di vista delle applicazioni, `e naturalmente importante fornire una stima dellerrore
commesso7 .
Con riferimento allanalisi introdotta pi`
u in generale nel capitolo precedente, possiamo separare
due tipi di contributi nella formazione dellerrore globale. Il primo si riferisce al condizionamento
7
When a problem in pure or in applied mathematics is solved by numerical computation, errors, that is,
deviations of the numerical solution obtained from the true, rigorous one, are unavoidable. Such a solution is
therefore meaningless, unless there is an estimate of the total error in the above sense, J. Von Neumann, H. H.
Goldstine (1947).

analisi numerica

c
V.
Comincioli

184

Algebra lineare numerica

del problema, ed `e essenzialmente legato con i dati, ossia la matrice A e il termine noto b, ed `e
indipendente dallalgoritmo, mentre il secondo riguarda la stabilit`a dellalgoritmo. Nei paragra
precedenti abbiamo visto, in particolare, che la procedura del pivoting diminuisce leetto della
propagazione degli errori di arrotondamento e quindi fornisce un algoritmo pi`
u stabile; ma anche
tale procedura pu`
o risultare inecace, quando il sistema non `e ben condizionato.
In questo paragrafo, oltre che precisare il senso del condizionamento per il problema della
risoluzione di un sistema lineare, e pi`
u in particolare denire una misura di condizionamento,
analizzeremo alcuni algoritmi numerici pi`
u idonei, rispetto a quelli esaminati nei paragra precedenti, a risolvere sistemi lineari mediamente mal condizionati. Per quanto riguarda, invece,
i sistemi decisamente mal condizionati, lo studio del malcondizionamento pu`o essere utile per
individuare le cause di tale comportamento ed avere quindi suggerimenti per modicare opportunamente il modello. Introduciamo lanalisi del condizionamento mediante un semplice esempio di
sistema mal condizionato.
Esempio 4.10 Consideriamo il seguente sistema lineare


2x1 + 3x2 = 5
2x1 + 3.1x2 = 5.1

(4.45)

che ha come soluzione esatta x1 = x2 = 1. Se modichiamo la matrice dei coecienti e il termine noto
nella seguente maniera








2.000 3.000
2.000 3.000
5.000
5.000

A=
A=
; b=
b=
2.000 3.100
1.999 3.000
5.100
4.990
x = b
diventa x1 = 10, x
la soluzione esatta del sistema perturbato A
2 = 5. Posto
x,
x = x
si ha

A1
= 0.0164;
A1

A,
A = A

b1
= 0.0109;
b1

b
b = b

x1
= 7.5;
x1

x1
= 1.34

x1

Si vede, pertanto, che lerrore relativo sui risultati `e di due ordini di grandezza superiore agli errori relativi
` interessante esaminare linversa della matrice A; si ha
sui dati. E


15.500 15.000
A1 =
10.000
10.000
con A1 1 = 25.5, mentre A1 = 6.1. Come vedremo nel seguito, il numero 1 (A) := A1 A1 1
fornisce una indicazione del fattore di amplicazione degli errori nei dati. In questo caso si ha 1 (A) =
155.55.

Lo studio del condizionamento di un sistema pu`


o essere fatto perturbando i dati ed esaminando gli
eetti prodotti da tali perturbazioni sulla soluzione. Per semplicit`
a, consideriamo separatamente
gli eetti prodotti delle variazioni sul termine noto b e quelli sulla matrice A.
Sia A una matrice non singolare e siano x e x + x le rispettive soluzioni dei seguenti due
sistemi
Ax = b;
A(x + x) = b + b
Sottraendo le due equazioni, si ricava
A(x) = b x = A1 b
analisi numerica

c
V.
Comincioli

4.2 Analisi degli errori; condizionamento e stabilit`


a

185

Indicando con   una norma naturale di matrice, ad esempio una delle norme  1 ,  2 ,   ,
si ha
x = A1 b A1  b
Daltra parte, si ha
b = Ax A x

A
1

x
b

da cui

x
b
A A1 
x
b
Si pu`
o mostrare che per ogni norma naturale ssata esistono dei vettori b e x tali che
A1 b = A1  b;

(4.46)

Ax = A x

per cui la maggiorazione (4.46) `e stretta.


Consideriamo, ora, il caso in cui x e x + x sono le rispettive soluzioni dei seguenti due sistemi
Ax = b,

(A + A)(x + x) = b

Con semplici passaggi si ha


Ax = b = (A + A)(x + x) 0 = Ax + A(x + x)
x = A1 A(x + x)
da cui

x = A1 A(x + x) A1  A x + x

e quindi

A
x
A A1 
(4.47)
x + x
A
Modicando opportunamente la procedura precedente, si pu`
o mostrare che nel caso in cui la
perturbazione A sia sucientemente piccola, pi`
u precisamente si abbia A1  A < 1, allora
per la soluzione x + x del seguente sistema perturbato
(A + A)(x + x) = b + b
si ha la maggiorazione
x
A/A + b/b
A A1 
x
1 A A1  A/A

(4.48)

I risultati precedenti portano alla seguente denizione.


Denizione 4.1 Se  indica una norma naturale di matrice, il condizionamento di una matrice
A non singolare, associato a tale norma e relativo alla risoluzione di un sistema lineare, `e dato
dal seguente numero8
(A) := A A1 

(4.49)

a la notazione p (A).
Se la norma utilizzata `e del tipo  p , si utilizzer`
8

tale denizione `e stata introdotta nel caso delle matrici simmetriche denite positive da Turing nel 1948 nella
norma di Frobenius, e da Von Neumann (1947) nella norma 2.
analisi numerica

c
V.
Comincioli

186

Algebra lineare numerica

Indicando con A = A/A e b = b/b gli errori relativi corrispondenti rispettivamente


alla matrice e al terime noto, e con x = x/x lerrore relativo indotto sulla soluzione, la
maggiorazione (4.48) pu`
o essere riscritta nella forma
x (A)

A + b
1 (A)A

Ricordiamo le seguenti importanti propriet`a del numero di condizionamento.


1. (A) = (A), per ogni matrice A e ogni scalare = 0.
2. (A) 1, se la norma `e naturale.
max
, ove max e min sono rispettivamente il massimo e il minimo dei valori singolari
min
della matrice A.

3. 2 (A) =

4. 2 (A) = 1 se e solo se A = Q, ove `e uno scalare e Q `e una matrice unitaria.


Una matrice `e detta bencondizionata relativamente alla risoluzione di un sistema lineare, se il
numero di condizionamento non `e troppo grande. Le matrici unitarie sono, allora, le matrici
meglio condizionate; questo `e, in sostanza, il motivo del loro interesse nel calcolo numerico. Il
signicato di troppo grande `e, in generale, dipendente dal contesto. Vi sono comunque matrici
ormai classicamente ritenute malcondizionate, per le quali lunico rimedio `e la riformulazione del
problema. Per le matrici, invece, mediamente malcondizionate un rimedio pu`o essere la scelta
di un opportuno metodo stabile.
Osserviamo che il numero di condizionamento `e una propriet`
a che dipende dalla norma scelta.
Comunque, due qualunque numeri di condizionamento (A), (A) sono equivalenti, nel senso
che esistono due costanti c1 , c2 tali che
c1 (A) (A) c2 (A),

A Rnn

Ad esempio
1
2 (A) 1 (A) n2 (A)
n
1
(A) 2 (A) n (A)
n
1
1 (A) (A) n2 1 (A)
n2
Matlab ha diverse funzioni per calcolare o stimare il numero di condizionamento
cond(A)
%
cond(A,1) %
cond(A,inf)%
condest(A) %
%
rcond(A)
%
%

norma 2; usa svd(A)


norma 1; usa inv(A)
norma inf; usa inv(A); stessa che cond(A,1)
stima in norma 1; usa lu(A)
opportuna per matrici di grandi dimensioni e sparse
stima il reciproco del numero di condizionamento in
norma 1; usa lu(A) e un algoritmo sviluppato in LAPACK

analisi numerica

c
V.
Comincioli

4.2 Analisi degli errori; condizionamento e stabilit`


a

187

Allo scopo di chiarire ulteriormente il signicato e le propriet`


a del numero di condizionamento,
analizzeremo alcuni esempi classici. Da tali esempi emerger`a, in particolare, che il reciproco del
numero di condizionamento `e uno strumento pi`
u adeguato del determinante per misurare quanto
un sistema assegnato Ax = b `e vicino ad essere singolare, e quindi dicile o impossibile da
risolvere.
Esempio 4.11 La seguente matrice

1
0

Bn =
0
.
..
0

1
1

1
1

0
..
.

..
.
..

1
1

1
;

B1
n

1 1
0 1

=
0 0
. .
.. ..
0 0

2
1
1

..
.
..

2n2
2n3

n4
2

ha determinante uguale a 1, ma (Bn ) = n2n1 . Lesempio mostra il fatto importante che una matrice
pu`
o essere estremamente mal condizionata, senza che il determinante sia piccolo. Daltra parte, una matrice
ben condizionata pu`
o avere un determinante piccolo. Come esempio, basta considerare la matrice
Dn = diag(101 , . . . , 101 ) Rnn
per la quale p (Dn ) = 1 e det(D) = 10n .

Esempio 4.12 Per  > 0, opportunamente piccolo, consideriamo la matrice



A=


0

0
1


Per tale matrice si ha 1 (A) = (1/)2 . Il sistema lineare Ax = b, con b vettore assegnato, `e equivalente al
sistema lineare che si ottiene moltiplicando la seconda equazione per 2 . La matrice dei coecienti di tale
sistema `e la seguente


 0
A =
0 
che corrisponde ad un opportuno scaling della matrice A e per la quale si ha 1 (A ) = 1.
Lesempio mostra che il condizionamento di una matrice pu`o essere modicato dallo scaling. Si pone,
allora, in generale il problema della ricerca di due matrici diagonali D1 , D2 in maniera da minimizzare la
quantit`
a
(D1 AD2 )
Si tratta di una operazione di preprocessing. Come esempio di applicazione di tale tecnica si consideri il
seguente caso particolare.


a b
A=
c d
con a, b, c, d R+ e ad = cd. Mediante le matrici


abcd 0
D1 =
;
0
cd
si ottiene il seguente scaling


A = D1 AD2 =
analisi numerica

D2 =

 a
abc/d



abcd 0
0
ac


abc/d
a

c
V.
Comincioli

188

Algebra lineare numerica

Per i corrispondenti numeri di condizionamento si ottiene


max(a + b, c + d) max(b + d, a + c)
|ad bc|

ad + bc + 2 abcd
(A ) =
|ad bc|
(A) =

Scegliendo ad esempio a = 100, b = 0.01, c = 99, d = 0.01 si ha


(A) 1.99 106 ;

(A ) 3.97 102

Esempio 4.13 Consideriamo la matrice A e il vettore b deniti da



A=

1.2969 0.8648
0.2161 0.1441


;

b=

0.8642
0.1440

La soluzione esatta del sistema Ax = b `e data da [2, 2]T . Calcoliamo il residuo r = Ax b per
x = [0.9911, 0.4870]T r = [108 , 108 ]T
La matrice inversa `e data da
1

= 10

per cui

0.8648 0.1441
1.2969
0.2161

(A) 3.108

Lesempio mostra, in sostanza, che per una matrice malcondizionata il residuo non `e una buona indicazione
della precisione della soluzione di un sistema lineare. In eetti si ha
x
r
(A)
x
b

Esempio 4.14 Consideriamo la seguente matrice simmetrica

10
7

W=
8
7

7
5
6
5

8 7
6 5
;
10 9
9 10

32
23

b=
33
31

Operando la perturbazione b = b + , con = [, , , ]T , la soluzione del sistema Wx = b + `e data


da
x = W1 b + W1 = e + W1
ove e = [1, 1, 1, 1]T . La matrice W1 `e data da

W1

25 41
10 6
41
68 17 10

=
10 17
10 3
6
10 3
2

per cui x = [1 + 82, 1 136, 1 + 35, 1 21]T . Il numero di condizionamento `e dato da


1 (W) = (W) = 4488;
analisi numerica

2 (W) 2984
c
V.
Comincioli

4.2 Analisi degli errori; condizionamento e stabilit`


a

189

Figura 4.7 Equilibrio di forze elastiche.


Esempio 4.15 (Equilibrio di forze elastiche). Consideriamo un sistema costituito da tre molle in serie
ssate ai due supporti rigidi A e D e collegate tra loro nei punti B e C (cfr. Figura 4.7).
a di due forze (stress) applicate orizzontalmente nei punti B e C e che
Indichiamo con f1 e f2 lintensit`
supporremo note a priori. Con x1 e x2 indichiamo, poi, gli spostamenti (strain) prodotti dalle due forze.
La formulazione del modello matematico `e basata sul principio di equilibrio, in base al quale, se il sistema
`e in equilibrio, la somma algebrica delle componenti delle forze deve essere in ogni punto uguale a zero. Nel
sistema dato, oltre alle forze esterne fi , si deve tenere conto delle forze di reazione di tipo elastico prodotte
dalle molle, che hanno una direzione opposta a quella di x positivo. Se supponiamo che le forze elastiche
siano lineari, ossia che il materiale sia di tipo Hooke, e indichiamo con e i coecienti di stiness, si ha
per il sistema illustrato in Figura 4.7 il seguente modello matematico, rappresentato da un sistema lineare
nelle incognite x1 , x2

( + )x1
x2 = f1
(4.50)
x1 + ( + )x2 = f2
La matrice A dei coecienti del sistema (4.50) e la sua inversa hanno la seguente rappresentazione

A=

A1

+
( + 2)
=

( + 2)

( + 2)

+
( + 2)

Possiamo facilmente calcolare il condizionamento della matrice nella norma 1 (o equivalentemente nella
norma ). Si ha

+ 2
=1+2
1 (A) =

da cui si vede che il condizionamento del problema dipende dai valori dei parametri , , e, in particolare,
dal rapporto /. Quando tale rapporto `e grande, ossia quando la molla centrale `e molto pi`
u rigida delle
adiacenti, il sistema lineare (4.50) `e mal condizionato: a piccole variazioni nei parametri , e nelle forze
f1 , f2 possono corrispondere grandi variazioni negli spostamenti x1 , x2 . Come esempio illustrativo, si ponga
= 1,

= 1000

1 (A) = 1 + 2000 = 2001

La soluzione esatta corrispondente alle forze f1 = f2 = 1 `e data da x1 = x2 = 1. Operando la seguente


perturbazione




1001 1000
1000 1000
=
A=
A
1000
1001
1000
1001
x = f , ove il termine noto f = [f1 , f2 ]T `e rimasto
con A1 /A1 5. 104. La soluzione del sistema A
T
= [2.001, 2.000] , con un errore relativo x1 /
inalterato, `e data da x
x1 = 0.5001.
Lasciamo come esercizio lestensione delle considerazioni precedenti al caso in cui le tre molle del sistema
illustrato in Figura 4.7 possano avere coecienti di stiness dierenti tra loro.

analisi numerica

c
V.
Comincioli

190

Algebra lineare numerica

Esempio 4.16 (Matrici di Hilbert ). Le matrici di Hilbert rappresentano un classico esempio di matrici
malcondizionate, e che hanno interesse nelle applicazioni. In eetti, esse hanno origine nellapplicazione
del metodo dei minimi quadrati, come ora ricorderemo brevemente. Se f (x) `e una funzione continua
u n-1 che minimizza il seguente integrale
sullintervallo [0,1], cerchiamo il polinomio pn1 (x) di grado al pi`


1$
0

%2
f (x) pn1 (x) dx

(4.51)

Scrivendo il polinomio pn1 (x) nella forma


pn1 (x) = cn1 xn1 + cn2 xn2 + + c1 x + c0
si ha che i coecienti ci del polinomio che minimizza (4.51) sono le soluzioni del seguente sistema lineare
n

i=0


ci


xj+i dx =

xj f (x) dx,

La matrice dei coecienti `e data dalla seguente matrice


1
Hn = (hij ) =
,
j+i1

j = 0, 1, . . . , n 1

i, j = 1, . . . , n

che `e nota come matrice di Hilbert di ordine n.


` possibile vericare che la matrice inversa esatta H1 (n) ha i seguenti elementi
E
h1
ij :=

(1)i+j (n + i 1)(n + j 1)
(i + j 1)[(i 1)(j 1)]2 (n i)(n j)

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

2 (Hn )
1.9281e+01
5.2406e+02
1.5514e+04
4.7661e+05
1.4951e+07
4.7537e+08
1.5258e+10
4.9315e+11
1.6025e+13
5.2164e+14
1.6682e+16
2.0315e+18

Figura 4.8 Numero di condizionamento della matrice di Hilbert Hn , per n = 2, . . . 13.


Esaminiamo il malcondizionamento della matrice di Hilbert, considerando il caso particolare n=3 e usando
una aritmetica a tre cifre.

1 1/2 1/3
1.00 .500 .333
3 = .500 .333 .250
H3 = 1/2 1/3 1/4 H
1/3 1/4 1/5
.333 .250 .200
3 = b, con
3 si `e indicata la matrice H3 arrotondata a tre cifre. Risolvendo, allora, il sistema H
ove con H
T
b = [1, 0, 0] , mediante il metodo di eliminazione di Gauss con pivoting parziale e con laritmetica a tre
analisi numerica

License
edgt-5-CLI_20110006666311-TX_20110006666311_9788850310319
granted on March 09 2011 to Alister Petrolini

c
V.
Comincioli

4.2 Analisi degli errori; condizionamento e stabilit`


a

cifre, si perviene a risolvere il seguente

1.00
0.00
0.00

191

sistema triangolare

.500
.333
1.00
x1
.084
.090 x2 = .333
.000 .004
.171
x3

= [11.6, 49.6, 42.7]T , mentre, come si verica


Mediante la sostituzione allindietro, si ricava la soluzione x
facilmente, la soluzione esatta `e data da x = [9, 36, 30]T . Naturalmente, la dicolt`
a ora rilevata pu`
o
essere ridotta aumentando opportunamente il numero di cifre utilizzate. Tuttavia, come si vede in Figura 4.8, il numero di condizionamento della matrice Hn aumenta rapidamente al crescere di n. In eetti, si
ha la seguente stima
2 (H(n)) = O(exp(n)), costante > 0
In conclusione, operando ad esempio in semplice precisione, le matrici di Hilbert diventano intrattabili gi`a
a partire da n 6, e, pertanto, in tali casi il corrispondente problema di minimi quadrati deve essere
opportunamente riformulato (cfr. nel paragrafo successivo il metodo QR).
2
3
4
5
6
7
8
9
n
2 (Vn ) 7.0e+01 1.1e+03 2.6e+04 7.3e+05 2.4e+07 9.5e+08 4.2e+10 2.1e+12

Tabella 4.2 Numero di condizionamento della matrice di Vandermonde Vn , per n = 2, . . . 9.


Sempre nellambito dellapprossimazione polinomiale, un secondo problema che pu`o dare origine a sistemi
lineari mal condizionati riguarda linterpolazione polinomiale. Rinviando al successivo Capitolo per maggiori dettagli, ricordiamo brevemente il contesto. Dati n + 1 coppie di punti (xi , yi ), per i = 0, 1, . . . , n
e con xi = xj , per i = j, si cerca il polinomio di grado al pi`
u n che passa per tali punti, vale a dire che
verica le seguenti condizioni
pn (xi ) = yi ,

i = 0, 1, . . . , n

ove pn (x) =

ck xk

k=0

Si vede facilmente che il problema precedente `e equivalente alla risoluzione di un sistema lineare nelle n + 1
incognite c = [c0 , c1 , . . . , cn ]T
Vn c = y,
y = [y0 , y1 , . . . , yn ]T
(n + 1) (n + 1) ha la seguente forma

x0 x20 xn0
x1 x21 xn1

..
..
..
.
.
.
2
1 xn xn xnn

ove la matrice dei coecienti Vn , di dimensione

1
1

Vn = .
..

(4.52)

ed `e chiamata matrice di Vandermonde 9 . Consideriamo il condizionamento di tale matrice nel caso particolare in cui i punti xi sono equidistanti, ossia xk = x0 + kh, per k = 0, 1, . . . , n. Nella Tabella 4.2
sono riportati i numeri di condizionamento delle matrici Vn , quando x0 = 1 e h = 1. Come si vede, in
questo caso il problema dellinterpolazione `e mal condizionato gi`
a per valori piccoli di n. Nel successivo
Capitolo vedremo altre dicolt`a inerenti alla scelta nellinterpolazione di punti equidistanti e riguardanti
la convergenza per n .
9

Alexandre Theophile Vandermonde (1735-1796). Fu tra i primi a dare una organica esposizione della teoria dei
determinanti, della quale pu`
o essere considerato tra i fondatori.
analisi numerica

c
V.
Comincioli

192

Algebra lineare numerica

Esempio 4.17 Discretizzazione di un problema ai limiti. Nel successivo Capitolo 9 considereremo pi`u
in dettaglio la risoluzione numerica di problemi dierenziali del seguente tipo
2

d y = f (x) 0 x 1
dx2

y(0) = y(1) = 0 condizioni ai limiti

(4.53)

che sono alla base della modellizzazione matematica di numerosi fenomeni, quali ad esempio la distribuzione della temperatura e la diusione di sostanze. Un modo semplice per approssimare la soluzione del
problema (4.53) consiste nel suddividere lintervallo [0, 1] in n intervalli di uguale lunghezza h = 1/n e
nellapprossimare la soluzione y(x) nei nodi xk = kh, k = 0, 1, . . . , n mediante la discretizzazione della
derivata seconda d2 y/dx2 con una dierenza nita centrale, ossia
d2 y(xk )
yk1 2yk + yk+1

dx2
h2
Indicando con y = [y 0 , y 1 , . . . , y n ]T la soluzione approssimata, al problema (4.53) corrisponde il seguente
problema discreto

y k1 2yk + yk+1

= f (xk ) k = 1, 2, . . . , n 1
h2
(4.54)

y = y = 0 condizioni ai limiti
0

che corrisponde alla risoluzione del seguente sistema lineare

y
1
2 1
0
0
y2
..

.
1
.
.
2 1
y3


.
.
..
..
..
0 1

0 .

.
.. . .
.
.
..
. . 1

.
..
.
0
0 1
2
y

= h2

n1

f (x1 )
f (x2 )
f (x3 )
..
.
..
.
f (xn1 )

(4.55)

Nella Tabella 4.9 sono riportati i numeri di condizionamento della matrice Bn dei coecienti del sistema
(4.55). Si vede, quindi, che il condizionamento del sistema lineare (4.55) peggiora al crescere del numero

n
4
6
8
10
12
14
16

2 (Bn )
9.4721
19.1957
32.1634
48.3742
67.8274
90.5231
116.4612

Figura 4.9 Numero di condizionamento della matrice tridiagonale Bn corrispondente alla risoluzione di
un problema ai limiti mediante il metodo delle dierenze nite. Si pu`o dimostrare che 2 (Bn ) cresce come
1/2n2 .
analisi numerica

c
V.
Comincioli

4.2 Analisi degli errori; condizionamento e stabilit`


a

193

di suddivisioni n, o equivalentemente al tendere a zero del passo di discretizzazione h. Daltra parte, come
vedremo successivamente, per h 0 la soluzione discreta converge alla soluzione continua. In altre parole,
e in forma schematica, pi`
u il problema discreto `e vicino al problema continuo e pi`
u crescono le dicolt`
a
numeriche per la sua soluzione.

4.2.1

Stabilit`
a degli algoritmi

Come abbiamo gi`a osservato, lerrore contenuto nella soluzione numerica di un sistema lineare pu`
o
essere, per comodit`
a, scomposto in due componenti: il cosiddetto errore inerente, ossia lerrore
legato al condizionamento del problema e indipendente dallalgoritmo utilizzato, e lerrore algoritmico legato alla stabilit`a del particolare algoritmo utilizzato. In questo paragrafo ricorderemo i
principali risultati che si riferiscono allerrore algoritmico, cercando, inne, di ottenere, attraverso
i risultati ottenuti sul condizionamento nel paragrafo precedente, unindicazione, ossia una stima,
sullerrore totale presente nella soluzione numerica di un sistema lineare.
Per analizzare lerrore algoritmico `e particolarmente utile la cosiddetta tecnica dellanalisi
viene considerata come la
allindietro (backward analysis)10 , nella quale la soluzione calcolata x
soluzione esatta di un opportuno problema perturbato del tipo
(A + A)
x = b + b
ove i termini A e b sono legati agli errori commessi durante i calcoli e rappresentano, quindi, il
contributo del particolare algoritmo utilizzato. La grandezza di tali termini misura, in sostanza,
la stabilit`a dellalgoritmo; vale a dire, in maniera per ora formale, un algoritmo risulta pi`
u stabile
di un altro se i corrrispondenti termini A e b sono pi`
u piccoli. Linteresse della tecnica di
backward analysis consiste nel fatto che, una volta nota una stima dei termini A e b, per avere
x `e suciente applicare la maggiorazione (4.48) ottenuta
una maggiorazione dellerrore x = x
nel paragrafo precedente. Sottolineiamo, comunque, il signicato ora diverso dei termini A e
b; in eetti, mentre nel paragrafo precedenti essi rappresentano perturbazioni reali nei dati del
problema, ora essi rappresentano delle perturbazioni virtuali, dovute agli errori commessi durante
i calcoli11 .
Naturalmente, la dicolt`
a principale nellapplicazione dellidea consiste nellottenere delle
indicazioni signicative, ossia non troppo pessimistiche dei termini A e b. Trattandosi di
dimostrazioni molto tecniche, ci limiteremo allenunciato e alla discussione di alcuni risultati,
rinviando alla bibliograa per maggiori dettagli.
Teorema 4.1 Sia A una matrice di ordine n i cui elementi sono numeri macchina, ossia (A)
U
le matrici della fattorizzazione LU ottenute numericamente con il metodo di
A, e siano L,
Gauss. Si ha allora12
U
=A+E
L
10

Introdotta da Givens (1954) e da Wilkinson (1961). The main object of a priori error analysis is to expose
the potential instabilities, if any, of an algorithm so that hopefully from the insight thus obtained one might be led
to improved algorithms. . . Practical error bounds should usually be determined by some form of a posteriori error
analysis since this take full advantage of the statistical distribution of rounding errors and of any special features,
such as sparseness, in the matrix , Wilkinson.
11
Come illustrazione dellidea, si ricordi la denizione delloperazione macchina (x + y) = (x + y) + (x + y)=
(x + x) + (y + y), con || eps: la somma macchina `e interpretabile come la somma esatta dei numeri perturbati
x + x, y + y.
12
Con |A| si intende la matrice di elementi |aij | e la relazione A B signica aij bij , per i, j = 1, . . . , n.
analisi numerica

c
V.
Comincioli

194

Algebra lineare numerica

con

$
%
|U|
+ O(eps2 )
|E| 2n eps |A| + |L|

ove eps `e la precisione macchina utilizzata e O(eps2 ) indica una matrice i cui elementi sono
funzioni di potenze di eps di grado maggiore o uguale al secondo.
Teorema 4.2 Sia A una matrice triangolare inferiore di ordine n e b un vettore di ordine n,
la soluzione numerica del sistema Ax = b ottenuta
con (A) = A e (b) = b. Indicata con x
mediante lalgoritmo della sostituzione in avanti, esiste una matrice E di ordine n tale che
(A + E)
x = b,

con |E| n eps |A| + O(eps2 )

Un analogo risultato si ha quando la matrice A `e triangolare superiore. Combinando, allora, i


risultati precedenti si ottiene la seguente valutazione degli errori relativi al metodo di Gauss nella
risoluzione del sistema lineare generico Ax = b.
Teorema 4.3 Siano A e b una matrice e un vettore di ordine n, con elementi numeri macchina,
la soluzione del sistema Ax = b calcolata nel seguente modo
e sia x
U;

1. calcolo delle matrici L,


= b;
, soluzione numerica del sistema Ly
2. calcolo del vettore y
=y
, soluzione numerica del sistema Ux
;
3. calcolo del vettore x
Si ha allora
(A + A)
x=b

U|
) + O(eps2 )
con |A| 4n eps(|A + |L|

(4.56)

Un aspetto interessante messo in evidenza dal risultato (4.56) `e il fatto che lerrore numerico pu`
o
|U|.
Lapplicazione
essere tanto pi`
u elevato quanto pi`
u sono grandi gli elementi delle matrici |L|,
delle tecniche del pivoting ha, in eetti, come eetto la riduzione della grandezza di tali elementi,
e questo `e in sostanza il motivo della loro maggiore stabilit`
a. In questo senso, il pivoting totale
fornisce lalgoritmo pi`
u stabile, ma, come abbiamo visto esso richiede un numero superiore di
confronti, e, quindi, il pivoting parziale `e in generale un compromesso pi`
u opportuno.
Terminiamo, osservando che la stima (4.56) fornisce solo una limitazione superiore allerrore; in
altre parole, dal momento che gli errori di segno contrario possono eliminarsi o ridursi in grandezza,
lerrore eettivo pu`o essere anche notevolmente inferiore a quello indicato dalla formula. In
eetti, il metodo di eliminazione pivotale di Gauss, quando la matrice `e ben condizionata, `e un
procedimento stabile. Quando, invece, la matrice non `e ben condizionata, possono essere pi`
u
opportuni i metodi che utilizzano per la fattorizzazione della matrice le trasformazioni ortogonali,
le quali, come abbiamo gi`
a osservato, hanno la propriet`
a di non peggiorare il condizionamento
della matrice di partenza. Tali metodi saranno introdotti nel prossimo paragrafo.

4.2.2

Fattorizzazione A = QR

Data una matrice A Rmn , si cerca una matrice ortogonale Q e una matrice triangolare R tale
o essere ottenuta con dierenti tecniche, in particolare
che A = QR.13 Tale decomposizione pu`
13

La R `e da rechts triangular, triangolare superiore in tedesco.

analisi numerica

c
V.
Comincioli

4.2 Analisi degli errori; condizionamento e stabilit`


a

195

mediante lutilizzo delle matrici elementari di Householder o di Givens, oppure mediante il metodo
di ortogonalizzazione di Gram-Schmidt.
Incominciamo con il seguente risultato di esistenza, di cui forniremo nel seguito una dimostrazione costruttiva.
Teorema 4.4 (Decomposizione QR) Data una matrice A Rmn , con m n e di rango n, esiste
ununica matrice Q Rmn con
QT Q = D,

D = diag(d1 , , dn ),

dk > 0, k = 1, . . . , n

e una matrice triangolare superiore R, con rkk = 1, k = 1, . . . , n, tali che


A = QR

(4.57)

La decomposizione (4.57) viene anche chiamata decomposizione QR non normalizzata. Come


decomposizione normalizzata, si intende una decomposizione nella quale Q `e una matrice m m
ortogonale (quindi QT Q = I) e R `e una matrice m n della forma


T
R=
0
ove T `e una matrice n n triangolare superiore e 0 `e una matrice (m n) n di zeri.
Mentre la decomposizione (4.57) pu`o essere ottenuta, come vedremo nel seguito, mediante un
procedimento di ortogonalizzazione delle colonne di A, la decomposizione normalizzata pu`o essere
ottenuta mediante successive moltiplicazioni di matrici di Householder (o di Givens) e la matrice
Q cos` ottenuta contiene sia una base ortogonale per lo spazio generato dalle colonne di A che
una base per lo spazio perpendicolare alle colonne di A.
La decomposizione (4.57) pu`o essere utilizzata per risolvere il problema dei minimi quadrati, e
quindi in particolare per risolvere i sistemi lineari, nel seguente modo. Ricordiamo che la soluzione
del seguente problema di minimo
min b Ax2 ,

xRn

b Rm

(4.58)

quando la matrice A ha rango n, `e la soluzione del seguente sistema lineare (sistema delle equazioni
normali)
AT Ax = AT b
Utilizzando, allora, la decomposizione (4.57), si ha
AT (b Ax) = RT QT (b Ax) = RT (QT b QT QRx) = 0

Dy = QT b
Rx = y

Sottolineiamo che linteresse numerico della procedura precedente consiste nel fatto che procedendo in tale modo il sistema delle equazioni normali viene risolto, senza costruire esplicitamente
la matrice AT A. Ricordiamo, infatti, che il numero di condizionamento della matrice AT A `e il
quadrato di quello della matrice A.
Lasciamo come esercizio lestensione delle considerazioni precedenti al caso in cui sia disponibile
una decomposizione QR in forma normalizzata e al caso in cui il rango della matrice A sia minore
di n.
analisi numerica

c
V.
Comincioli

196

Algebra lineare numerica

Metodo modicato di Gram-Schmidt


Sia A una matrice Rmn , con m n e di rango n. Le colonne di A sono, quindi, vettori
linearmente indipendenti. A partire da tali vettori, si pu`
o costruire un insieme di vettori ortogonali
utilizzando il procedimento di Gram-Schmidt. Dal punto di vista numerico, pi`
u precisamente per
motivi di stabilit`
a, `e, tuttavia, preferibile utilizzare la seguente variante del procedimento classico.
Si calcola una successione di matrici A(1) := A, A(2) , , A(n+1) =: Q. Al passo generico
k-mo la matrice A(k) ha la seguente forma
(k)

A(k) = [q1 , . . . , qk1 , ak , . . . , an(k) ]


(k)

(k)

ove i vettori ak , . . . , an sono per ipotesi ortogonali ai vettori q1 , . . . , qk1 . Descriviamo, pertanto, il passaggio da A(k) a A(k+1) .
(k)
(k)
(k)
In tale passaggio si assume qk = ak e si trasformano i vettori ak+1 , . . . , an in maniera
(k+1)

, j = k + 1, . . . , n ortogonali al vettore qk . Il risultato `e ottenuto


da ottenere dei vettori aj
mediante le seguenti formule
(k)

qk = ak ,

dk = qTk qk ,

rkk = 1
(k)

(k+1)

aj

(k)

= aj rkj qk ,

rkj =

qTk aj
dk

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

Con riferimento alla risoluzione del problema dei minimi quadrati (4.58), si trasforma il vettore
b allo stesso modo
qT b(k)
b(k+1) = b(k) yk qk , yk = k
dk
Il vettore b(n+1) risulta essere ortogonale allo spazio R(A) e quindi coincide con il vettore residuo
r = b Ax. Pertanto, dopo n passi si ottengono i seguenti risultati
Q = [q1 , q2 , . . . , qn ],

R = (rkj ),

y = [y1 , . . . , yn ]T

con
QT Q = diag(dk ),

A = QR,

b = Qy + r

Il numero delle operazioni `e approssimativamente dato da


2m

(n k + 1) = mn(n + 1)

k=1

Algoritmo 4.15 (Gram-Schmidt modicato) Data una matrice A Rmn con rango n ed un vettore

b Rm , il seguente algoritmo calcola la fattorizzazione A = QR, con QT Q = D ed il vettore y =


D1 QT b. La soluzione del problema: minxRn Ax b2 `e ottenuta risolvendo il sistema triangolare
Rx = y. La matrice A `e sostituita dalla matrice Q.
For k = 1, . . . , n
m
dk := i=1 a2ik
yk := ( m
i=1 aik bi )/dk ; rkk := 1
For j = k + 1, . . . , n
analisi numerica

c
V.
Comincioli

4.2 Analisi degli errori; condizionamento e stabilit`


a

197

rkj := ( i=1 aik aij )/dk


For i = 1, . . . , m
aij := aij aik rkj
end i
end j
For i = 1, . . . , m
bi = bi aik yk
end i
end k

Come esemplicazione, riportiamo limplementazione dellalgoritmo precedente in MATLAB, che


mette in evidenza la vettorialit`
a dellalgoritmo.
for k=1:n
d(k)=norm(a(:,k),2)^2;
y(k)=a(:,k)*b/d(k);
r(k,k)=1
for j=k+1:n
r(k,j)=a(:,k)*a(:,j)/d(k);
a(:,j)=a(:,j)-a(:,k)*r(k,j);
end
b=b-a(:,k)*y(k);
end
x=r\y %soluzione del problema dei minimi quadrati

Esempio 4.18 Come semplice esempio illustrativo, consideriamo il seguente problema dei minimi qua

drati
min b Ax2

xR2

1
con A = 1
0

1
0 ,
1

1
b= 0
5

Lalgoritmo precedente fornisce i seguenti risultati





1.000
0.500
1.000 0.500
0.500
Q = 1.000 0.500 , R =
, yT =
0. 1.000
3.000
0.
1.000



2.000
2.000
x =
, r = b Ax = 2.000
3.000
2.000
ove x `e il punto di minimo. Il sistema delle equazioni normali in questo caso `e dato da




2 1
1
T
T
T
T
A Ax = A b,
A A=
, A b=
1 2
4
che ammette, come si verica facilmente, la medesima soluzione trovata con il metodo precedente.
Terminiamo, osservando che mentre il numero di condizionamento 2 (A), denito come il rapporto tra
il massimo valore singolare max di A e il minimo valore singolare min , `e dato da 1.7321, il numero di
condizionamento della matrice AT A `e dato da 3.000, ossia il quadrato del precedente. In eetti, ricordiamo
che 2 (AAT ) = 2 (A) 2 (AT ), e questo `e il motivo dellinteresse della fattorizzazione QR quando la
matrice A `e malcondizionata.
analisi numerica

c
V.
Comincioli

198

Algebra lineare numerica

Le propriet`
a di stabilit`a che caratterizzano il metodo QR sono ulteriormente evidenziate dalla seguente
semplice esemplicazione. Consideriamo la risoluzione del seguente sistema lineare




600
800
200
Ax = b con A =
, b=
30001 40002
10001
che risulta estremamente malcondizionato, in quanto 2 (A) 2.25 106. Applicando il metodo di eliminazione, con la tecnica del pivot parziale e il metodo QR, si ottengono i seguenti risultati (in aritmetica con
precisione macchina eps 2.22 1016)




0.99999999999700
1.00000000000080
xpivot =
,
xQR =
0.99999999999775
1.00000000000060

Metodo di Householder
Nel metodo di Householder una matrice A di ordine m n viene trasformata in una matrice triangolare superiore mediante lapplicazione successiva di trasformazioni elementari di Householder
(cfr. per la denizione successivo Paragrafo 4.5.6). Cerchiamo di spiegare lessenza del metodo
mediante un esempio schematico. Per m = 6, n = 5, supponiamo di aver gi`
a calcolato due matrici
di trasformazione H1 , H2 tali che

x x
x
x x
0 x
x
x x

0 0
x
x x

H2 H1 A =

0
0
x
x
x

0 0
x
x x
0 0
x
x x
e cerchiamo una matrice di Householder H3 di ordine 4 4 tale che

x
x
0
x

H3
=
0
x
0
x
Poniamo quindi H3 = diag(I2 , H3 ). Si ha allora

x
0

0
H3 H2 H1 A =
0

0
0

x
x
0
0
0
0

x
x
x
0
0
0

x
x
x
x
x
x

x
x
x
x
x
x

Alla ne Hn Hn1 H1 A = R `e una matrice triangolare superiore e ponendo Q = H1 Hn si


ottiene A = QR.
Lalgoritmo richiede n2 (m n/3) ops. Per la risoluzione del problema dei minimi quadrati
non occorre formare esplicitamente la matrice Q, ma basta modicare successivamente il vettore
b mediante le moltiplicazioni Hk b.
analisi numerica

c
V.
Comincioli

4.2 Analisi degli errori; condizionamento e stabilit`


a

199

Esempio 4.19 Consideriamo la seguente matrice

3
A= 4
0

0
5
4

Il primo passo della fattorizzazione QR costruisce la matrice di Householder H1 che annulla il secondo e
il terzo elemento della prima colonna

3 4
0
5 4
1
3
0 A1 = H1 A = 0
3
H1 = 4
5
0
0
5
0
4
Nel secondo passo, si costruisce la matrice di Householder H2 che annulla il terzo elemento nella seconda
colonna della matrice A1 , ma lascia invariato il primo elemento

5
0
0
5 4
1
0 3 4 R = A2 = H1 A = 0 5
H2 =
5
0 4
3
0
0
Si ha, quindi, R = A2 e A = QR, ove Q = H1 H2

15
12
16
5 4
1
A = 20 9 12 0 5
25
0 20
15
0
0

Metodo di Givens
Nel metodo di Givens si utilizzano per la riduzione della matrice A alla forma triangolare le matrici
di rotazione di Givens. La trasformazioni di Givens permettono rispetto alle trasformazioni di
Householder una maggiore selettivit`
a . Il loro uso `e quindi interessante per trasformare matrici
con particolari strutture sparse.
Algoritmo 4.16 (Metodo di Givens) Data una matrice A Rmn , il seguente algoritmo calcola la
fattorizzazione A = QR con Q ortonormale e R triangolare. La matrice A `e sostituita dalla matrice
QT A = R.
For q = 2, . . . , m
For p = 1, 2, . . . , min(q 1, n)
trovare c = cos, s = sin tali che
sapp + caqp = 0
A := J(p, q, )A
b := J(p, q, )b
end p
end q

Lalgoritmo richiede 2n2 (m n/3) ops, circa il doppio di quelle richieste dal metodo di Householder. Esiste, comunque, una versione del metodo, chiamata metodo rapido di Givens, che richiede
un numero di operazioni paragonabile a quello delle trasformate di Householder. Per i dettagli di
questa variante rinviamo ad esempio a Golub e Van Loan [172].
 Esercizio 4.15 Sia Q una matrice ortogonale. Dimostrare che 2 (QA) = 2 (A).
analisi numerica

c
V.
Comincioli

200

Algebra lineare numerica

 Esercizio 4.16 Analizzare il condizionamento delle seguenti matrici

1
A1 = 3
1

2
4
1

1
0 ,
0

1
A2 = 4
7

2 3
5 6 ,
8 8

1 0
A3 = 0 1
1 1

0
0
1

 Esercizio 4.17 La successione di Fibonacci `e generata dalla seguente equazione alle dierenze
f0 = 0, f1 = 1,

fj = fj1 + fj2 ,

j>1

2
Mostrare che fn fn+2 fn+1
= (1)n+1 , n = 0, 1, . . .. Trovare allora lunica soluzione del sistema

fn x1 + fn+1 x2 = fn+2
fn+1 x1 + fn+2 x2 = fn+3

Studiare il malcondizionamento di tale sistema al crescere di n. In particolare, per n = 10 esaminare la


variazione della soluzione in corrispondenza alla perturbazione nella seconda equazione fn+2 = fn+2 + ,
con  = 0.018 e rispettivamente  = 0.02.

 Esercizio 4.18 Se A, B sono due matrici simmetriche denite positive, allora


2 (A + B) max[2 (A), 2 (B)]

 Esercizio 4.19 Considerare il sistema lineare Ax = b, con



A=

4.1 2.8
9.7 6.6


;

b=

4.1
9.7

Calcolare la soluzione esatta e la soluzione perturbata corrispondente a b = [4.11, 9.70]T . Analizzare


quindi il condizionamento della matrice.

 Esercizio 4.20 La matrice C = (AT A)1 , ove rank(A) = n, `e nota in statistica come matrice
varianza-covarianza. Sia A = QR la decomposizione ortogonale di A.
1. Mostrare che C = (RT R)1 .
2. Dare un algoritmo per calcolare c11 , , cnn che richieda n3 /6 ops.


vT
3. Mostrare che se R =
e C1 = (ST S)1 , allora
0 S


(1 + vT C1 v)/2 vT C1 /
T
1
C = (R R) =
C1 v/
C1
4. Usando il risultato precedente dare un algoritmo che sostituisce R con la parte triangolare superiore di
C, con n3 /3 ops.

analisi numerica

c
V.
Comincioli

4.3 Metodi iterativi

4.3

201

Metodi iterativi

Per le matrici di ordine elevato e di tipo sparso, una importante alternativa ai metodi diretti `e
costituita dai metodi iterativi, la cui idea di base `e la costruzione, a partire da una stima iniziale
x(0) , di una successione convergente di approssimanti {x(k) }, k = 1, 2, . . ., ove ciascun vettore x(k)
`e la soluzione di problemi computazionalmente pi`
u semplici. Come vedremo successivamente,
tale idea costituisce lo strumento fondamentale per la risoluzione dei sistemi non lineari e dei
problemi di ottimizzazione. I risultati che analizzeremo in questo paragrafo potrebbero, pertanto,
essere inquadrati in tale contesto pi`
u generale, ma ladattamento della teoria al caso particolare
dei sistemi lineari permette di ottenere risultati pi`
u signicativi.

4.3.1

Metodi di Jacobi, Gauss-Seidel, rilassamento

I metodi iterativi corrispondono al seguente schema generale. Data una matrice A Rnn , non
singolare, si considera una decomposizione (splitting) della matrice A del seguente tipo
A = M N,

det(M) = 0

(4.59)

Per ogni vettore b Rn si ha allora


Ax = b Mx = Nx + b
da cui il seguente procedimento iterativo
Mx(k+1) = Nx(k) + b

(4.60)

che prevede la risoluzione, ad ogni passo delliterazione, di un sistema lineare con matrice dei
coecienti M. La seguente matrice
B = M1 N = M1 (M A) = I M1 A
`e detta matrice di iterazione; essa individua un particolare metodo ed il suo studio `e fondamentale
per stabilire la convergenza e la rapidit`
a di convergenza del corrispondente metodo.
Per introdurre i metodi classici di Jacobi e di Gauss-Seidel `e utile considerare la seguente
decomposizione della matrice A

A=DEF

analisi numerica

c
V.
Comincioli

202

Algebra lineare numerica

Metodo di Jacobi
Il metodo di Jacobi14 si ottiene scegliendo
M = D;

N=E+F

BJ = D1 (E + F) = I D1 A

Algoritmo 4.17 (Metodo di Jacobi) Data una matrice A Rnn , con aii = 0, i = 1, 2, . . . , n e un
vettore b Rn , a partire da un vettore di tentativo x(0) Rn si costruisce la successione {x(k) } mediante
le seguenti formule
For i = 1, . . . , n
$
(k+1)
= bi
xi
end i

i1
j=1

(k)

aij xj

n
j=i+1

(k) %/

aij xj

aii

Limplementazione del metodo richiede lutilizzo di due vettori, diciamo xold , xnew ; alla ne di
ogni ciclo si pone xnew xold . Le singole componenti del vettore xnew sono costruite a partire
o essere quindi implementato
dal vettore xold in maniera indipendente fra loro; lalgoritmo pu`
facilmente su calcolatori ad architettura parallela. In linguaggio MATLAB il metodo pu`o essere
implementato nel seguente modo
M=diag(diag(A));

N=M-A;

x=M\(N*x+b);

Osserviamo che, nella forma precedente, lalgoritmo di Jacobi `e denito solo se aii = 0, i =
1, . . . , n. Tuttavia, se tale ipotesi non `e vericata, ma la matrice A `e non singolare, `e possibile
riordinare preliminarmente le equazioni e le incognite del sistema Ax = b, in maniera che il
` da tenere presente, comunque, che la matrice di iterazione, e quindi le
metodo risulti denito. E
propriet`
a di convergenza, dipendono dallordinamento di righe e di incognite utilizzato.
Esempio 4.20 Consideriamo lapplicazione del metodo di Jacobi al seguente sistema

20x1 + 2x2 x3 = 25
2x1 +13x2 2x3 = 30

x1 + x2 + x3 = 2

(4.61)

che ha come soluzione esatta il vettore x = [1, 2, 1]T . Il metodo di Jacobi corrisponde alla seguente
decomposizione della matrice dei coecienti

20 2 1
20 0 0
0 2 1
0 2
A = 2 13 2 M = 0 13 0 , N = 2
1 1
1
0 0 1
1 1 0
Partendo dal vettore iniziale x0 = [0, 0, 0]T , si ottengono i risultati contenuti nella Tabella 4.3, che mostrano
la convergenza del metodo. Lasciamo come esercizio di vericare che il metodo risulta, invece, divergente
14
Il metodo, introdotto da Jacobi (1845), fu successivamente chiamato metodo delle sostituzioni simultanee (Gei` anche noto come metodo a passo totale (total-step),
renger, 1949) e metodo iterativo di Richardson, (Keller, 1958). E
dal tedesco Gesamtschrittverfahren. Carl Gustav Jacob Jacobi `e nato a Potsdam nel 1804, Prussia e morto nel 1851
a Berlino. Le sue ricerche pi`
u importanti riguardano lanalisi matematica (teoria delle funzioni ellittiche, equazioni
dierenziali a derivate parziali del primo ordine), la teoria dei numeri, la geometria e la meccanica. Nella memoria
De determinantibus functionalibus (1841) studia in particolare il determinante funzionale che ora porta il suo nome
Jacobiano. A Jacobi `e pure attribuito il metodo che esameniremo nel seguito per il calcolo approssimato degli
autovalori di una matrice simmetrica.

analisi numerica

c
V.
Comincioli

4.3 Metodi iterativi

203

`
quando `e applicato al sistema lineare che si ottiene dal sistema (4.61) scambiando le prime due righe. E
15
importante osservare che nel primo caso il raggio spettrale della matrice di Jacobi `e dato da 0.4490,
mentre per il sistema con le due righe permutate il raggio spettrale vale 8.0710. In eetti, come vedremo
nel seguito, condizione necessaria e suciente per la convergenza di un metodo iterativo `e che il raggio
spettrale della matrice di iterazione M1 N sia strettamente minore di 1.

k
1
2
3
4
5
6
7
8
9
10
11
12
...
20
21

Jacobi

Gauss-Seidel

5.5577e + 00
3.8038e + 00
7.3203e 01
8.0164e 01
2.1970e 01
1.6726e 01
5.5982e 02
3.2669e 02
1.2908e 02
5.9462e 03
2.7599e 03
9.9184e 04

4.7308e + 00
8.9364e 01
2.0355e 01
5.0545e 02
1.2269e 02
2.9954e 03
7.3022e 04
1.7808e 04
4.3426e 05
1.0590e 05
2.5824e 06
6.2974e 07

1.7859e 06
9.5681e 07

Tabella 4.3 Successione degli errori x(k) x1 forniti dal metodo di Jacobi, e rispettivamente di
Gauss-Seidel, applicati al sistema lineare (4.61).

Metodo di Gauss-Seidel
Nel metodo di Gauss-Seidel16 si assume
M = D E;

N=F

BG = (D E)1 F = (I D1 E)1 D1 F

Algoritmo 4.18 (Metodo di Gauss-Seidel) Data una matrice A Rnn , con aii = 0, i = 1, 2, . . . , n e un
vettore b Rn , a partire da un vettore di tentativo x(0) Rn , si costruisce la successione {x(k) } mediante
le seguenti formule
For i = 1, . . . , n
$
(k+1)
xi
= bi
end i

i1
j=1

(k+1)

aij xj

n
j=i+1

(k) %/

aij xj

aii

15

In MATLAB il raggio spettrale di una matrice A pu`


o essere calcolato mediante il comando abs(eig(A)).
Suggerito da Gauss in Theoria Motus corporum coelestium in sectionibus conicis solem ambientium (1809),
nellambito della risoluzione del sistema delle equazioni normali ottenute applicando il metodo dei minimi quadrati.

Sviluppato da P. L. Seidel in Uber


ein Verfahren, die Gleichungen, auf welche die Methode der kleinsten Quadrature
f
uhrt, sowie line
are Gleichungen u
berhaupt, durch successive Annaherung aufzul
osen (1874). Il metodo `e anche noto
come metodo delle sostituzioni successive (Geiringer, 1949) e metodo di Liebmann (Frankel, 1950). Philipp Ludwig
von Seidel, nato a Zweibrucken, Germania nel 1821 e morto a Monaco nel 1896, ha lavorato oltre che nel campo
dellanalisi matematica (concetto di convergenza non uniforme) e del calcolo delle probabilit`a (con applicazioni
allastronomia), su problemi di ottica (introduzione di parametri matematici che descrivono laberrazione di una
lente: ora noti come Seidel sums: spherical aberration, coma, astigmatism, Petzval curvature, distortion).
16

analisi numerica

c
V.
Comincioli

204

Algebra lineare numerica

Osserviamo che, a dierenza del metodo di Jacobi, per limplementazione del metodo di GaussSeidel `e suciente un unico vettore, in quanto le componenti del vettore iterato sono utilizzate
non appena esse sono state calcolate. Il metodo pu`o essere implementato in linguaggio MATLAB
nel seguente modo
M=tril(A);

N=M-A;

x=M\(N*x+b);

Come si vede dalla Tabella 4.3, il metodo di Gauss-Seidel pu`o avere una convergenza superiore
rispetto al metodo di Jacobi. Questa propriet`
a non `e, tuttavia, generale, ma dipende dalla classe
di matrici a cui si applicano i metodi. In eetti, come vedremo nel seguito, esistono matrici per
le quali il metodo di Gauss-Seidel converge ma il metodo di Jacobi diverge, e viceversa matrici
per le quali converge il metodo di Jacobi, ma non il metodo di Gauss-Seidel.
Quando la matrice A `e simmetrica denita positiva, il metodo di Gauss-Seidel pu`o essere
interpretato come un algoritmo per la ricerca del minimo della seguente funzione quadratica
F (x) = (Ax, x) 2(b, x) =

aij xi xj 2

i,j=1

Rinviando per maggiori dettagli ai capitoli


una rappresentazione graca del metodo in
scelte della matrice A e del vettore b

2
A=
1

xi bi

i=1

successivi, ci limiteremo ora a fornire in Figura 4.10


corrispondenza al caso bidimensionale e alle seguenti
1
2


,

b=

3
3

a cui corrisponde la soluzione x = [1, 1]T del sistema Ax = b. Il metodo eettua, in sostanza,
successive minimizzazioni unidimensionali lungo le direzioni degli assi. Nella gura sono rappresentate le curve di livello passanti per i successivi punti di minimo, ossia le curve denite
da F (x) = F (x), ove x `e il generico punto di minimo. Nel seguito consideremo altri modi pi`
u
convenienti di denire le direzioni di minimizzazione, in particolare le direzioni coniugate.
Metodo di rilassamento
Un modo semplice per accelerare la convergenza dei metodi di Jacobi e di Gauss-Seidel consiste
nellintroduzione nella matrice di iterazione di un opportuno parametro, noto come parametro di
rilassamento. Indicando con , con > 0, tale parametro e limitandoci al metodo di Gauss-Seidel,
si assume



D
1
E; N =
1 D + F B = (D E)1 (1 )D + F
M=

Il corrispondente metodo iterativo `e noto come metodo di rilassamento, o metodo SOR (successive
over relaxation); quando < 1 il metodo `e anche detto metodo underrelaxation 17 .
Algoritmo 4.19 (Metodo SOR) Data una matrice A Rnn , con aii = 0, i = 1, 2, . . . , n ed un vettore
b Rn , a partire da un vettore di tentativo x(0) Rn si costruisce, per R, la successione {x(k) }
mediante le seguenti formule
17

Il metodo `e anche noto come metodo accelerato di Liebmann (Frankel, 1950) e metodo di Gauss-Seidel estrapolato
(Kahan, 1958).
analisi numerica

c
V.
Comincioli

4.3 Metodi iterativi

205

Figura 4.10 Interpretazione del metodo di Gauss-Seidel come metodo di minimizzazione di una funzione
quadratica. I punti indicati sono i successivi punti di minimo lungo gli assi coordinati, ossia i punti i punti
(0)
(0)
(1)
(0)
(1)
(1)
(2)
(1)
(x1 , x2 ), (x1 , x2 ), (x1 , x2 ), (x1 , x2 ), . . .
For i = 1, . . . , n
$
(k+1/2)
= bi
xi
(k+1)
xi

(k+1/2)
xi

i1
j=1

(k+1)

aij xj

+ (1

n
j=i+1

(k) %/

aij xj

aii

(k)
)xi

end i

La scelta = 1 fornisce ancora il metodo di Gauss-Seidel, e in ogni caso il numero di operazioni


richieste per eettuare una iterazione `e dello stesso ordine di grandezza di quelle richieste dal
metodo di Gauss-Seidel. In linguaggio MATLAB si ha la seguente implementazione
M=diag(diag(A))/omega+tril(A,-1);

N=M-A;

x=M\(N*x+b);

Nellapplicazione del metodo SOR `e naturalmente importante la scelta del parametro . Tale
scelta deve essere tale da rendere pi`
u elevata possibile la velocit`a di convergenza del metodo. Come
vedremo nel seguito, tale obiettivo `e raggiunto dal valore di che minimizza il raggio spettrale
della matrice di rilassamento B . Il guadagno che si pu`o ottenere `e, tuttavia, dipendente dal
numero di condizionamento della matrice di partenza A. Questo aspetto `e messo in rilievo dal
seguente esempio.
Esempio 4.21 Consideriamo la seguente matrice

4
1
1
1
1 4
1
1

A=
1
1 4
1
1
1
1 4
analisi numerica

(4.62)

c
V.
Comincioli

206

Algebra lineare numerica

Nella Figura 4.11 `e rappresentata la funzione


(B )

(4.63)

ove () `e il raggio spettrale, ossia il massimo dei moduli degli autovalori. Il minimo della funzione (4.63)
`e ottenuto per = 1.22, in corrispondenza al quale assume il valore 0.2974. Il numero di condizionamento
della matrice A `e dato da 2 (A) = 5.
Consideriamo, quindi, la matrice

2 6 9
A = 6 21 31
(4.64)
9 31 46
per la quale si ha 2 (A) = 1251.0. Il minimo della funzione (4.63) `e ottenuto per = 1.7, nel quale la
funzione assume il valore 0.9571. Come si vede, in questo caso il quadagno `e decisamente minore del caso
precedente.
Con riferimento, in particolare, alla risoluzione dei sistemi lineari ottenuti nella discretizzazione dei
problemi dierenziali ai limiti (cfr. Esempio 4.17), si ha che lecienza del metodo SOR, come tecnica
di accelerazione del metodo di Gauss-Seidel, diminuisce allaumentare del numero di suddivisioni, ossia al
diminuire del passo di discretizzazione, e quindi dellerrore di discretizzazione.

Figura 4.11 Rappresentazione della funzione (B ), in corrispondenza (prima gura) alla matrice
bencondizionata (4.62) e rispettivamente (seconda gura) alla matrice mal condizionata (4.64).

Metodo di rilassamento. Calcolo della funzione (B )

2 6 9
A = 6 21 31
9 31 46

A=[2 6 9
6 21 31
9 31 46]
E=-tril(A,-1)
F=-triu(A,1)
D=diag(diag(A))
i=1;
omega=[0:0.01:2];
for om=omega
analisi numerica

c
V.
Comincioli

4.3 Metodi iterativi

207

Bo=inv(D-om*E)*((1-om)*D+om*F);
roo(i)=max(abs(eig(Bo)));
i=i+1;
end
plot(omega,roo)

4.3.2

Metodi iterativi a blocchi

In diverse applicazioni, in particolare nella discretizzazione dei problemi alle derivate parziali e
nello studio di sistemi di reti, il sistema Ax = b presenta una struttura a blocchi della seguente
forma

x1
b1
A11 A12 A1p
A21 A22 A2p x2 b2

(4.65)
..
..
.. .. = ..
.
.
. . .
Ap1 Ap2

App

xp

bp

ove A11 , A22 , , App sono matrici quadrate e xi , bi sono vettori dello stesso ordine della matrice
Aii , per ogni i = 1, . . . p. A partire dalla seguente decomposizione
A =DEF
ove D = [Aii ], i = 1, . . . , p; E = [Aij ], i > j; F = [Aij ], i < j, i metodi considerati nel
paragrafo precedente possono essere formulati a blocchi. Tali formulazioni hanno interesse, in
particolare, nelle implementazioni su calcolatori ad architettura parallela.
Come esemplicazione, le seguenti formule deniscono un particolare metodo SOR a blocchi

p
i1


(k+1)
(k+1)
(k)
(k)
= bi
Aij xj

Aij xj + (1 )Aii xi
(4.66)
Aii xi
j=1

j=i+1

per il quale `e richiesta, per ogni i, la risoluzione di un sistema lineare, con matrice dei coecienti
o
data da Aii . Dal momento che tale matrice `e indipendente dallindice di iterazione k, si pu`
eettuare una fattorizzazione preliminare Aii = Li Ui , e quindi procedere, ad ogni iterazione, alla
risoluzione di due sistemi triangolari.
Il successivo esempio analizza su due problemi particolari il problema della convergenza dei
metodi a blocchi rispetto ai metodi per punti.
Esempio 4.22 Consideriamo la seguente matrice reale simmetrica

5
A= 2
2

2 2
5 3
3 5

e una sua partizione a blocchi in maniera che A = D E F, con

5 2 0
0
0
0
D = 2 5 0 ,
E= 0
0 0 5
-2 -3

0
0
0

e F = ET . Nella Tabella 4.4 sono riportati gli errori ottenuti con il metodo di GaussSeidel a blocchi (ossia
con il metodo (4.66) con = 1) in relazione al sistema lineare Ax = b, con b = [9, 10, 10]T e con valore
analisi numerica

c
V.
Comincioli

208

Algebra lineare numerica

iniziale x(0) = [0, 0, 0]T . Il confronto con i risultati ottenuti con il metodo di Gauss-Seidel per punti mette
in evidenza che asintoticamente il metodo per punti converge pi`
u rapidamente del metodo per blocchi. In
eetti, si trova
punti
) = 0.3098,
(Bblocchi
) = 0.3904
(BG
G

k
0
1
2
3
4
5
6
7
8
9
10
11

G.-S. per punti

G.-S. per blocchi

3.0000e + 00
1.5680e + 00
5.3171e 01
2.1641e 01
9.1316e 02
3.2553e 02
1.0244e 02
2.8577e 03
7.1179e 04
1.7121e 04
3.9791e 05
1.3868e 05

3.0000e + 00
1.1048e + 00
4.3138e 01
1.6844e 01
6.5774e 02
2.5683e 02
1.0029e 02
3.9159e 03
1.5291e 03
5.9707e 04
2.3314e 04
9.1036e 05

Tabella 4.4 Errori x(k) x1 corrispondenti al metodo di Gauss-Seidel per punti e per blocchi,
ove x `e la soluzione esatta del sistema lineare Ax = b, con b = [9, 10, 10]T .
Consideriamo, ora, la seguente matrice reale simmetrica

1
0 1/4 1/4

0
1 1/4 1/4

A1 =
1/4 1/4
1
0
1/4 1/4
0
1
e la partizione a blocchi denita da A1 = D E F, con

1
0
-1/4 0
0
0

0
1
-1/4
0
, E =
D=
-1/4 -1/4
0
0
1
0
0
0
1
1/4

0
0
0
1/4

0
0
0
0

0
0

e F = ET . Nella Tabella 4.5 sono riportati gli errori ottenuti con il metodo di GaussSeidel a blocchi
(ossia con il metodo (4.66) con = 1) in relazione al sistema lineare A1 x = b1 , con b = [0.5, 0.5, 0.5, 0.5]T
e valore iniziale x(0) = [0, 0, 0, 0]T . Il confronto con i risultati ottenuti con il metodo di Gauss-Seidel per
punti mette in evidenza che asintoticamente il metodo per blocchi converge pi`
u rapidamente del metodo
per punti. In eetti, si trova
punti

(BG

4.3.3

) = 0.2500,

(Bblocchi
) = 0.1428
G

Studio della convergenza

Un metodo iterativo della forma (4.60) `e detto convergente se, qualunque sia il vettore iniziale
x(0) , la successione {x(k) } `e convergente. Vedremo, ora, che tale propriet`
a `e legata agli autovalori
analisi numerica

c
V.
Comincioli

4.3 Metodi iterativi

209

k
0
1
2
3
4
5
6
7
8
9
10
11

G.-S. per punti

G.-S. per blocchi

4.0000e + 00
1.5000e + 00
3.7500e 01
9.3750e 02
2.3438e 02
5.8594e 03
1.4648e 03
3.6621e 04
9.1553e 05
2.2888e 05
5.7220e 06
1.4305e 06

4.0000e + 00
8.5714e 01
1.2245e 01
1.7493e 02
2.4990e 03
3.5699e 04
5.0999e 05
7.2856e 06
1.0408e 06
1.4869e 07
2.1241e 08
3.0344e 09

Tabella 4.5 Errori x(k) x1 corrispondenti al metodo di Gauss-Seidel per punti e per blocchi,
ove x `e la soluzione esatta del sistema lineare A1 x = b1 , con b1 = [0.5, 0.5, 0.5, 0.5]T .
della matrice di iterazione B. Considerando, infatti, la decomposizione generale (4.59) e indicando
con x la soluzione del sistema Ax = b, si hanno le seguenti relazioni
x = Bx + M1 b
x(k+1) = Bx(k) + M1 b

e(k+1) = Be(k)

(4.67)

ove si `e posto e(k) := xx(k) . Applicando successivamente la relazione (4.67), si ottiene il seguente
risultato
e(k) = Bk e(0)
Pertanto, il metodo `e convergente quando la successione di potenze Bk converge alla matrice nulla
e una condizione necessaria e suciente pu`o essere formulata mediante il raggio spettrale della
matrice B.
Teorema 4.5 (Convergenza) Il metodo iterativo denito dalla matrice di iterazione B converge
per ogni x(0) Rn se e solo se
(B) < 1
(4.68)
Esempio 4.23 Consideriamo i metodi di Jacobi e di Gauss-Seidel per la matrice

1 2
2
0 2
1 1 , BJ = 1 0
A = 1
2 2
1
2 2

2
0 2
1 , BG = 0 2
0
0 8

2
1
6

Il polinomio caratteristico della matrice BJ `e dato da 3 e della matrice BG da (2 + 4 4), per cui

(BJ ) = 0; (BG ) = 2(1 + 2)


In questo caso, quindi, il metodo di Jacobi converge, mentre il metodo di Gauss-Seidel diverge.
Lasciamo come esercizio di vericare, procedendo allo stesso modo, che per la seguente matrice

2 1 1
A= 2
2 2
1 1 2
analisi numerica

c
V.
Comincioli

210

Algebra lineare numerica

il metodo di Jacobi diverge, mentre il metodo di Gauss-Seidel converge.

La condizione (4.68), necessaria e suciente per la convergenza di un metodo iterativo, non `e


in generale di facile verica. Essa, tuttavia, permette di ottenere delle condizioni sucienti di
pi`
u facile verica, ossia di individuare delle classi di matrici per le quali un particolare metodo `e
convergente. Questo aspetto verr`
a considerato nel paragrafo successivo. In questo paragrafo, dopo
aver ricordato una condizione necessaria per la scelta del parametro nel metodo di rilassamento,
discuteremo brevemente laspetto, importante nelle applicazioni, del controllo della convergenza.
Dal Teorema 4.5 si pu`
o ricavare facilmente la seguente condizione necessaria per il metodo di
rilassamento.
Proposizione 4.5 Per ogni matrice A di ordine n il raggio spettrale della matrice del metodo
di rilassamento B `e maggiore o uguale a | 1|, e pertanto se il metodo `e convergente, si ha
necessariamente
0<<2
Test di arresto per un metodo iterativo Nelle applicazioni di un metodo iterativo, un test
comune per arrestare il calcolo della successione {x(k) }, `e il seguente
x(k) x(k1)  1 + 2 x(k) 
ove 1 (rispettivamente 2 ), `e una tolleranza pressata sullerrore assoluto (rispettivamente sul` importante osservare che il test precedente non garantisce che la soluzione
lerrore relativo). E
sia stata approssimata con la precisione richiesta. Si pu`
o, infatti, mostrare che, per una norma di
matrice e di vettore compatibili, si ha
e(k) 

x(k) x(k1) 
1 B

per cui si pu`


o avere che e(k1)  `e grande, anche se il test precedente `e vericato.
Un test di arresto di tipo dierente `e, se b = 0, dato da
r(k) 

b

(4.69)

ove r(k) = Ax(k) b. Dal momento che


e(k)  = A1 r(k)  A1  r(k) 
il test (4.69) implica che
e(k) 
 (A)
x
analisi numerica

(4.70)

c
V.
Comincioli

4.3 Metodi iterativi

211

Rapidit`
a di convergenza Dalla relazione e(k) = B(k) e(0) , utilizzando una norma di matrice
e di vettore compatibili, si ha e(k)  Bk  e(0) , da cui
e(k) 
Bk e(0) 
e(k) 
k

B
=
max

=
max
e(0) 
e(0) =0 e(0) 
e(0) =0 e(0) 
Si denisce fattore medio di riduzione dellerrore per iterazione il numero tale che
k =

e(k) 
e(0) 

In media lerrore `e moltiplicato per ad ogni iterazione. Si ha Bk 1/k .


Denizione 4.2 Si denisce velocit`
a media di convergenza per k iterazioni il numero
1

Rk (B) = ln Bk  k
La velocit`a media di convergenza `e inversamente proporzionale al numero di iterazioni. Per avere,
infatti e(k) /e(0)   si impone Bk  , da cui
1
1
ln 
ln 
ln Bk  k ln  k
1 =
k
k
Rk (B)
ln B  k

Nel caso particolare in cui la matrice B `e hermitiana, scegliendo come norma la norma spettrale,
si ha che la velocit`
a di convergenza `e uguale a ln (B). Anche nel caso generale `e tuttavia
comodo utilizzare la seguente denizione.
Denizione 4.3 Si chiama velocit`
a di convergenza asintotica del metodo iterativo denito dalla
matrice di iterazione B il numero
R(B) = ln (B)
Si pu`
o allora dimostrare che il numero di iterazioni k necessarie per ridurre lerrore di un fattore
 verica la disuguaglianza k ln /R(B).
Matrici a predominanza diagonale
Teorema 4.6 Se A `e una matrice di ordine n a predominanza diagonale stretta o irriducibilmente
diagonalmente dominante, allora i metodi di Jacobi e di Gauss-Seidel sono convergenti.
Esempio 4.24 Si considerino i due sistemi equivalenti


x2y = 2
2x+ y = 2

2x+ y = 2
x2y = 2

La matrice dei coecienti del secondo sistema `e a predominanza diagonale stretta e pertanto il metodo di
Gauss-Seidel converge. Per il primo sistema la matrice di iterazione di Gauss-Seidel `e la seguente

BG =
analisi numerica

1
2

0
1

1 

0 2
0 0


=

0
2
0 4

c
V.
Comincioli

212

Algebra lineare numerica

ed ha come autovalori i numeri 0, 4 . Essendo (BG ) = 4 > 1, il metodo di Gauss-Seidel risulta


non convergente. Lesempio evidenzia, in particolare, il fatto che la convergenza del metodo dipende
dallordinamento.
` interessante osservare che il metodo SOR applicato al prima sistema converge per una scelta opE
portuna del parametro . Pi`
u precisamente, la funzione (B ) raggiunge il valore minimo 0.39 per
= 0.61.

Esempio 4.25 Esaminiamo la convergenza del metodo di Jacobi applicato alle seguenti matrici

A1 =
(1)

1
1/2
1/2
1


,

A2 =

1
3/4
1/12
1

(2)

Indicando con BJ , BJ , le corrispondenti matrici di iterazione di Jacobi, si ha






0 1/2
0
3/4
(1)
(1)
(2)
(2)
BJ =
, (BJ ) = 0.5;
BJ =
(BJ = 0.25
1/2 0
1/12 0
Il metodo di Jacobi converge per entrambe le matrici, e convergenza `e pi`
u rapida per la matrice A2 .
Lesempio mostra, quindi, che il metodo di Jacobi non necessariamente converge pi`
u rapidamente per le
matrici pi`
u diagonalmente dominanti.

Per quanto riguarda il confronto tra il metodo di Jacobi e il metodo di Gauss-Seidel, si ha il


seguente interessante risultato.
Teorema 4.7 (SteinRosenberg) Sia A Rnn . Se gli elementi principali di A sono non nulli e
gli elementi della matrice di iterazione di Jacobi BJ sono non negativi, allora si verica uno ed
uno solo dei seguenti risultati
1. 0 < (BG ) < (BJ ) < 1
2. 1 < (BJ ) < (BG )
3. (BG ) = (BJ ) = 0
4. (BG ) = (BJ ) = 1
Per le matrici tridiagonali `e possibile precisare la relazione tra la velocit`a di convergenza del
metodo di Gauss-Seidel e del metodo di Jacobi. Si pu`
o, infatti, dimostrare che se gli elementi
sulla diagonale principale sono dierenti dallo zero, si ha
(BG ) = (BJ )2

(4.71)

ossia il metodo di Gauss-Seidel ha una velocit`


a di convergenza asintotica doppia del metodo di
Jacobi. Il risultato (4.71) pu`o essere esteso al caso di decomposizioni a blocchi.
Matrici denite positive
Per le matrici denite positive, che costituiscono una classe importante di matrici nelle applicazioni, si ha il seguente risultato relativo alla convergenza del metodo di rilassamento.
analisi numerica

c
V.
Comincioli

4.3 Metodi iterativi

213

Teorema 4.8 Sia A una matrice hermitiana decomposta, per punti o per blocchi, nella forma
A = D E F con D matrice denita positiva. Allora, il metodo di rilassamento, per punti o
per blocchi, `e convergente, se e solo se 0 < < 2 e A `e denita positiva.
Pertanto, per le matrici denite positive il valore del parametro ottimale corrisponde al minimo
nellintervallo (0, 2) della seguente funzione
(B )

(4.72)

Rinviando allEsempio 4.21 per una opportuna esemplicazione della funzione (4.72), osserviamo
che la determinazione del punto di minimo rappresenta, in generale, ossia per le matrici che
non hanno una struttura particolare, un problema di non facile soluzione. Tale dicolt`
a `e, in
sostanza, uno dei motivi di interesse del metodo del gradiente coniugato che analizzeremo nel
prossimo paragrafo.

4.3.4

Metodo del gradiente coniugato

Abbiamo gi`
a osservato in precedenza che quando la matrice A `e simmetrica denita positiva,
il problema della soluzione del sistema lineare Ax = b `e equivalente alla minimizzazione della
funzione quadratica J(x) = (Ax, x) 2(b, x). In particolare, abbiamo visto che il metodo di
Gauss-Seidel corrisponde a minimizzare la funzione F (x) lungo le direzioni degli assi coordinati.
Il metodo del gradiente coniugato corrisponde ad una scelta pi`
u conveniente di tali direzioni. In
eetti, con tale metodo viene costruita una successione di vettori {x(k) }, k = 0, 1, . . ., per i quali
si ha x(m) = x = A1 b per un valore m n, ove n `e lordine della matrice A. In altre parole, dal
punto di vista teorico il metodo del gradiente coniugato `e un metodo diretto, in quanto fornisce
la soluzione con un numero nito di operazioni. Tuttavia, in aritmetica di calcolatore, e quindi
in presenza di errori di arrotondamento, il metodo `e usualmente implementato come metodo
iterativo.
Lo studio del metodo del gradiente coniugato trova la sua collocazione pi`
u naturale nellambito
dei metodi di ottimizzazione e sar`a pertanto approfondito nel seguito. In questo Capitolo ci
limiteremo, pertanto, a fornire gli elementi essenziali per comprendere lalgoritmo.
A partire da una stima x(0) della soluzione del sistema Ax = b, si costruisce una successione
di vettori {x(k) } nel seguente modo

ove k R `e tale che

x(k+1) = x(k) + k p(k)

(4.73)

F (x(k+1) ) = min F (x(k) + p(k) )

(4.74)

e p(k) `e un vettore direzione scelto nel modo che ora vedremo. Indicato con r(k) il vettore residuo,
ossia il vettore b Ax(k) , si pone
 (0)
r
se k = 0
(k)
(4.75)
p =
(k)
(k1)
se k 1
r + k p
ove k `e tale che

analisi numerica

(p(k) )T Ap(k1) = 0

(4.76)
c
V.
Comincioli

214

Algebra lineare numerica

Il vettore p(k) viene detto A-coniugato con il vettore p(k1) . Sostituendo lespressione di p(k) data
dalla denizione (4.75) nellequazione (4.76), si ricava
k =

(r(k) )T Ap(k1)
(p(k1) )T Ap(k1)

k1

(4.77)

Il valore di k pu`
o essere ottenuto esplicitamente nel seguente modo. Derivando la funzione
F (x(k) + p(k) ) rispetto ad si ottiene
dF
= (x(k) + p(k) )T A p(k) bT p(k)
d
da cui, imponendo dF/d = 0, si ricava
k =

(b Ax(k) )T p(k)
(r(k) )T p(k)
=
(p(k) )T Ap(k)
(p(k) )T A p(k)

(4.78)

Dalla (4.73) si ha per k = 0, 1, . . .


b Ax(k+1) = b Ax(k) k Ap(k)
e quindi
r(k+1) = r(k) k Ap(k)

(4.79)

da cui per la (4.78)


(r(k+1) )T p(k) = (r(k) k Ap(k) )T p(k) = (r(k) )T p(k) k (p(k) )T Ap(k) = 0

(4.80)

ossia ad ogni passo il residuo r(k+1) `e ortogonale al vettore direzione p(k) . Dalla (4.80) e dalla
denizione (4.75) si ricava
(p(k) )T r(k) = (r(k) )T r(k) + k (p(k1) )T r(k) = (r(k) )T r(k)

(4.81)

Si vede quindi che la denizione (4.78) `e equivalente alla seguente


k =

(r(k) )T r(k)
(p(k) )T A p(k)

(4.82)

Procedendo in modo analogo, si pu`


o ottenere la seguente denizione per k equivalente alla (4.77)
k =

(r(k) )T r(k)
(r(k1) )T r(k1)

(4.83)

Indicato con Sk lo spazio generato dai k vettori p(0) , . . . , p(k1) , si pu`o dimostrare che le direzioni
p(i) , i = 0, . . . , k 1 sono tali che
F (x(k) ) = min F (x)
xSk

Da tale risultato, osservando che le direzioni p(i) sono linearmente indipendenti, si ricava che il
metodo del gradiente coniugato determina la soluzione x in al pi`
u n passi (n ordine della matrice
(m)
= 0. Tale propriet`
a pu`
o anche essere ricavata direttamente
A), cio`e esiste un m n tale che r
dal seguente risultato.
analisi numerica

c
V.
Comincioli

4.3 Metodi iterativi

215

Teorema 4.9 Supponiamo che r(0) = 0 e che per un h ssato, con h 1, si abbia r(k) =
 0 per
ogni k h. Allora
.
(r(k) )T r(j) = 0
per k = j e k, j = 0, . . . , h
(4.84)
(p(k) )T Ap(j) = 0
In altre parole i primi h vettori residui costituiscono un insieme di vettori ortogonali e i vettori
p(k) costituiscono un insieme di vettori A-coniugati.
Dal momento che linsieme dei primi h residui `e formato da vettori ortogonali, non possono esistere
pi`
u di n vettori r(k) = 0 e quindi esiste un m n tale che r(m) = 0. In maniera pi`
u precisa, si
pu`
o dimostrare che se la matrice A possiede al pi`
u p n autovalori distinti, allora il metodo del
gradiente coniugato converge in al pi`
u p iterazioni.
Riassumendo, il metodo del gradiente coniugato pu`
o essere descritto nella seguente forma
particolare, nota come metodo di Hestenes-Stiefel (1952).
Algoritmo 4.20 (Metodo del gradiente coniugato) Data una matrice A simmetrica denita positiva e di
ordine n, lalgoritmo genera una successione di vettori x(k) , che converge alla soluzione del sistema Ax = b,
in al pi`
u n iterazioni.
x(0) , arbitrario
p(0) = r(0) = b Ax(0)
For k = 0, 1, . . . , n 1
If r(k) 2 b2
then
Set x = x(k) Stop
else
w(k) = Ap(k)
r(k) 2
k = (k) T 2(k)
(p ) w
x(k+1) = x(k) + k p(k)
r(k+1) = r(k) k w(k)
k+1 =

r(k+1) 22
r(k) 22

p(k+1) = r(k+1) + k+1 p(k)


end if
end k

Il passo dellalgoritmo che presenta un costo computazionale maggiore `e quello relativo alla moltiplicazione Ap, che richiede n2 moltiplicazioni. Se il numero di iterazioni `e n si ha, allora, un
costo complessivo dellordine di n3 , superiore a quello richiesto dal metodo di Cholesky (n3 /3).
Si intuisce, pertanto, che il metodo diventa interessante quando la matrice `e sparsa e/o quando il
numero di iterazioni necessarie `e decisamente inferiore a n.
La seguente implementazione in MATLAB mette in evidenza laspetto vettoriale dellalgoritmo.
analisi numerica

c
V.
Comincioli

216

Algebra lineare numerica

% x stima iniziale, kmax numero massimo di iterazioni


% eps precisione richiesta
r=b-a*x
rn=norm(r,2)
p=r;
for k=0:kmax
if rn < eps
x, rn % stampa della soluzione e della norma del residuo
break
else
w=a*p;
rni=1/rn^2;
al=rn^2/(w*p);
x=x+al*p;
r=r-al*w;
rn=norm(r,2);
be=rn^2*rni;
p=r+be*p;
end
end

Figura 4.12 Illustrazione dei risultati ottenuti mediante lalgoritmo del gradiente coniugato nella risoluzione di un sistema lineare del secondo ordine. La soluzione viene ottenuta, a partire dal punto
x(0) = [1.5, 1]T mediante due minimizzazioni lungo due direzioni coniugate.

Esempio 4.26 In Figura 4.12 sono illustrati i risultati che si ottengono applicando, a partire dal punto
x(0) = [1.5, 1]T , il metodo del gradiente coniugato al sistema Ax = b, con




2 1
3
A=
, b=
1 2
3

La direzione p(0) = r(0) `e la direzione del gradiente nel punto x(0) e risulta ortogonale alla tangente in
tale punto allellisse. La direzione successiva p(1) `e A-coniugata a p(0) e passa per il centro dellellisse. La
analisi numerica

c
V.
Comincioli

4.3 Metodi iterativi

217

minimizzazione lungo tale direzione fornisce quindi il punto di minimo della F (x), ossia la soluzione del
sistema lineare dato.

Limitazione dellerrore Dal momento che il metodo del gradiente coniugato `e utilizzato in
pratica come un metodo iterativo, `e interessante stabilire delle maggiorazioni dellerrore. Ricordiamo, in questo senso, la seguente maggiorazione che mette in evidenza linuenza del numero
di condizionamento della matrice A
k

2 (A) 1
(k)
x x(0) A
(4.85)
x x A 2 
2 (A) + 1

ove x indica la soluzione esatta del sistema Ax = b e xA indica la norma xT Ax.
Dalla maggiorazione (4.85) si vede che il metodo `e tanto pi`
u eciente quanto pi`
u 2 (A) `e
vicino a 1. Questo aspetto `e illustrato dal seguente esempio.
Esempio 4.27 Consideriamo la risoluzione del sistema lineare Ax = b con

1
A=

1
d
..
.

Rnn , d 2,

..
. 1
1 d
..

d1
d2
..
.

b=

d2
d1

La soluzione esatta `e data da x = [1, 1, . . . , 1]T . In Figura 4.13 sono riportati i risultati ottenuti per
n = 50 e per i valori d = 2, d = 3, d = 4, in corrispondenza ai quali la matrice A ha i seguenti numeri di
condizionamento
d
2
3
4

2 (A)
1053.5
4.9
2.9

iterazioni
26
18
14

ove sono riportati anche i numeri di iterazioni per ottenere un errore minore di  = 106 .

4.3.5

Precondizionamento

La maggiorazione (4.85) mette in evidenza limportanza del numero di condizionamento per quanto concerne la rapidit`
a di convergenza dei metodi di discesa. Lidea del precondizionamento
consiste nel sostituire la risoluzione dellequazione Ax = b con quella del sistema equivalente
C1 Ax = C1 b, ove la matrice C1 `e scelta con lobiettivo di avere 2 (C1 A)  2 (A). Naturalmente, la scelta migliore sarebbe C1 = A1 , perch`e in questo caso si avrebbe 2 (C1 A) = 1;
nella pratica, si tratta, al solito, di trovare un opportuno compromesso con il costo del calcolo di
C1 .
Assumendo C1 simmetrica denita positiva, osserviamo che la matrice C1 A non `e, in
generale, simmetrica e quindi non possiamo applicare lalgoritmo del gradiente coniugato direto denire una matrice C1/2 simmetrica e denita positiva tale
tamente a C1 A. Tuttavia, si pu`
che (C1/2 )2 = C1 ; di conseguenza, la matrice
C1/2 (C1 A)C1/2 = C1/2 AC1/2
analisi numerica

c
V.
Comincioli

218

Algebra lineare numerica

Figura 4.13 Illustrazione del comportamento del metodo del gradiente coniugato in dipendenza dal numero
di condizionamento della matrice. Il metodo `e applicato a un sistema con matrice tridiagonale A di ordine
n = 50, con aii = d e ai,i+1 = ai,i1 = 1. Sono riportate le norme dei residui in corrispondenza ai valori
d = 2, d = 3, d = 4.

`e simmetrica denita positiva. Allora, invece di considerare il sistema C1 Ax = C1 b si pu`o


considerare il seguente sistema equivalente
C1/2 (C1 A)C1/2 C1/2 x = C1/2 b
e, posto y = C1/2 x, il problema diventa quello di trovare y tale che
C1/2 (C1 A)C1/2 y = C1/2 b
Si pu`
o quindi applicare il metodo del gradiente coniugato alla nuova matrice
= C1/2 AC1/2
A
Si minimizza, cio`e, il funzionale
%
$

y), y y
E(y)
= A(y
= C1/2 b.
ove y `e la soluzione del sistema Ay
o organizzare convenientemente lalgoritmo
Poiche il vettore a cui si `e interessati `e x, si pu`
utilizzando le seguenti identit`
a
(k) = C1/2 b C1/2 AC1/2 y(k)
r(k) = C1/2 b Ay
= C1/2 b C1/2 Axk = C1/2 rk
(k) = C1/2 p(k)
p
y(k) = C1/2 x(k)
analisi numerica

c
V.
Comincioli

4.3 Metodi iterativi

219

Si ha, allora, la seguente forma dellalgoritmo.


Data una matrice A simmetrica denita positiva e di ordine n, e una matrice simmetrica
denita positiva C, lalgoritmo genera una successione di vettori x(k) , che converge alla soluzione
del sistema Ax = b, in al pi`
u n iterazioni.
x(0) , arbitrario
r(0) = b Ax(0)
Cp(0) = r(0)
z(0) = p(0)
for k = 0, 1, . . . , n 1
if r(k) 2 <  b
then
set x = x(k) stop
else
w(k) = Ap(k)
(z(k) )T r(k)
k = (k) T (k)
(p ) w
x(k+1) = x(k) + k p(k)
r(k+1) = r(k) k w(k)
Cz(k+1) = r(k+1)
(z(k+1) )T r(k+1)
k+1 =
(z(k) )T r(k)
(k+1)
p
= z(k+1) + k+1 p(k)
end if
end k
Sottolineiamo il fatto che ad ogni iterazione si deve risolvere un sistema del tipo
Cz = r
Esempio 4.28 Come illustrazione, consideriamo lapplicazione dellidea del precondizionamento alla
risoluzione del sistema sistema lineare Ax = b,

3
1

A=
0
.
..
1

con A matrice della seguente forma

1 0 1
3 1
0

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

1 3 1

0 1 3

che risulta simmetrica e denita positiva. Una scelta naturale della matrice di precondizionamento C `e
data dalla matrice tridiagonale T (cfr. Figura 4.14) con elementi diagonali uguali a 3 e gli elementi sulle
sottodiagonali uguali a 1.
Di seguito riportiamo limplementazione in MATLAB del metodo per il sistema Ax = b, con b = 0, e
quindi con soluzione esatta x = 0. Come punto di partenza, `e scelto il vettore con componenti nulle, salvo
la prima componente posta uguale a 1.
analisi numerica

c
V.
Comincioli

220

Algebra lineare numerica

Figura 4.14 Matrice A e precondizionatore T.

n=input(n)
a=zeros(n); % definizione della matrice A
for i=1:n
x(i)=0.; % punto iniziale
b(i)=0.; % termine noto
for j=1:n
if i==j
a(i,j)=3;
elseif abs(i-j)==1
a(i,j)=-1;
end
end
end
t=a; % definizione della matrice T
a(1,n)=-1; a(n,1)=-1;
x(1)=1;
x=x; b=b
err=norm(x,1) % errore nella norma 1
r=b-a*x;
tp=inv(t); % calcolo dellinversa di T
p=tp*r;
z=p;
for k=1:6
w=a*p;
pro=z*r; % prodotto scalare
al=pro/(w*p);
x=x+al*p;
r=r-al*w;
z=tp*r;
bk=(r*z)/pro;
p=z+bk*p;
err=norm(x,1);
end

Nella Tabella 4.6 i risultati ottenuti, per n = 20, sono messi a confronto con quelli ottenuti senza tecnica
di condizionamento, cio`e per C = I.

analisi numerica

c
V.
Comincioli

4.3 Metodi iterativi

221

k
0
1
2
3
4
5
6

C=T
x(k) 1

C=I
x(k) 1
1.
0.755555
0.438095
0.199044
0.080035
0.030952
0.011854

1.
0.688415
0.157965
1.2891 E16

Tabella 4.6
 Esercizio 4.21 Confrontare i metodi di Jacobi e di Gauss-Seidel relativamente alla matrice

4 0 2/5
A = 0 5 2/5
5/2 2 1

 Esercizio 4.22 Studiare e confrontare la convergenza dei metodi di Jacobi, Gauss-Seidel e rilassamento per la matrice

A=

3 1
0
0
0 1
1
3 1
0 1
0
0 1
3 1
0
0
0
0 1
3 1
0
0 1
0 1
3 1
1
0
0
0 1
3

 Esercizio 4.23 Data una matrice A Rnn singolare e A = M N una decomposizione tale che M
sia non singolare. Dimostrare che il metodo iterativo
x(k+1) = M1 x(k) + M1 b
per la risoluzione del sistema Ax = b non `e convergente.

 Esercizio 4.24 Dato il sistema lineare Ax = b, con

1
1

1
1

determinare i valori di R per i quali i metodi di Jacobi e di Gauss-Seidel sono convergenti. Inoltre, per
i valori di per i quali entrambi i metodi sono convergenti, individuare quale dei due metodi presenta la
velocit`a asintotica di convergenza maggiore.

analisi numerica

c
V.
Comincioli

222

4.4

Algebra lineare numerica

Complementi e Problemi

Problema 4.1 Studiare il condizionamento del calcolo dellinversa di una matrice.


Soluzione. Data una matrice A invertibile, la matrice inversa X = A1 pu`o essere caratterizzata in
modi dierenti

X A1 = 0, X1 A = 0, AX I = 0, XA I = 0

a cui corrispondono i seguenti diversi modi di misurare la qualit`


a di una approssimazione Y di A1
c1 =

YA1 
Y1 A
,
c
, c3 = AYI, c4 = YAI
=
2
A1 
A

Pu`
o essere che le dierenti misure diano indicazioni discordanti. Come esemplicazione, consideriamo la
matrice
Y1 = A1 + E, con E A1 
con  > 0 numero piccolo. La matrice Y1 pu`
o ad esempio essere la rappresentazione oating point della
matrice inversa A1 . Si ha quindi
Y1 A1 

c1 =
A1 
Ma
da cui

Y1 = A1 (I + AE) Y11 = (I + AE)1 A






Y11 A = (I + AE)1 I A = (I + AE)1 I (I + AE) A

e quindi
c2 =

Y11 A
(I + AE)1  AE
A

Una maggiorazione del termine AE pu`


o essere ottenuta ponendo
AE A E A A1 =  cond(A)
e, supponendo  cond(A) < 1, allora
(I + AE)1 

1
1

1 AE
1  cond(A)

In conclusione, mentre il primo criterio c1 suggerisce un errore relativo di , con il secondo criterio si ha
c2 =

 cond(A)
Y11 A

A
1  cond(A)

e quindi si ha un fattore che dipende dal condizionamento della matrice A.


In modo analogo si verica che
c3 = AY1 I A E  cond(A)
c4 = Y1 A I E A  cond(A)
Consideriamo il seguente secondo esempio. Sia Y2 una matrice tale che
AY2 I = F,
analisi numerica

F 
c
V.
Comincioli

4.4 Complementi e Problemi

223

Per  piccolo Y2 `e una buona approssimazione a destra dellinversa di A, poiche si ha


c3 = AY2 I 
Moltiplicando per A1 si ha

Y2 A1 = A1 F

e quindi

Y2 A1  = A1 F A1  F

da cui
c1 =
In maniera analoga si ha
c2 =

Y2 A1 
F 
A1 

A Y21 

F (I + F)1 
A
1

Per il quarto criterio si ha invece


c4 = Y2 A I = A1 FA A1  F A  cond(A)
In questo caso si pu`o concludere che una matrice pu`o essere una buona approssimazione a destra dellinversa
di A, ma non necessariamente una buona approssimazione a sinistra.
Si assuma come esemplicazione particolare la seguente matrice




3.03 8.99
3.03 8.99
A=
,
A1 =
0.91 3.03
0.91
3.03
Si ha

det(A) = 1, A2 = 10, A1 2 = 10, cond2 (A) = 100

Se poniamo


B=

3.02 8.96
0.94
3.12


,

B1 =

3.12 8.96
0.94 3.02

si ha
B A1 =

0.01 0.03
0.03 0.09

, B A1 2 = 0.1, c1 = 0.01



0.09 0.03
B1 A =
, B1 A2 = 0.1, c2 = 0.01
0.03 0.01




0.997 0.001
0.003 0.001
BA =
, BA I =
, c3 = 0.01
0.009 1.003
0.009 0.003




0.7 0.9
0.3 0.9
AB =
, AB I =
, c4 = 1
0.1 1.3
0.1 0.3
La conseguenza `e che la scelta del criterio buono per valutare la precisione dellinversa approssimata di una
matrice data dipende dal particolare problema considerato.
Si pu`
o tuttavia dimostrare il seguente risultato generale.
Proposizione 4.6 Siano A e A + A due matrici invertibili. Si ha allora
A
(A + A)1 A1 
cond(A)
(A + A)1 
A
analisi numerica

c
V.
Comincioli

224

Algebra lineare numerica

Per la dimostrazione basta considerare lidentit`a


(A + A)1 (A + A) = I
da cui, moltiplicando a destra per A1 , si ottiene
(A + A)1 A1 = (A + A)1 A A1
cio`e

(A + A)1 A1  (A + A)1  A A1

che fornisce il risultato richiesto.

Problema 4.2 Discutere il condizionamento

11 +
Z = 12 +
14 +

della matrice

10 +
14 +
11 + 13 +
13 + 66 +

per quanto riguarda linversione o la risoluzione di un sistema lineare.


Soluzione. La matrice Z, introdotta da Zielke, `e ottenuta applicando una perturbazione di rango uno:
Z = A+J, ove J = eeT , con e = [1, 1, 1]T . Abbiamo quindi, utilizzando la formula di ShermanMorrison
Z1 = A1

Si ha
A1
da cui

A1 eeT A1
1 + eT A1 e

557 842 284


= 610 922 311
2
3
1

eT A1 = [55, 83, 28],

A1 e = [1, 1, 0]T ,

eT A1 e = 0

Pertanto
Z1

55 557 83 + 842 28 284


= 55 + 610 83 + 922 28 + 311
2
3
2

Se `e positivo ed ha un valore elevato, si ha


Z = 35 + 3,

Z1  = 1843 + 166

Il numero di condizionamento della matrice Z `e pertanto


(Z) = (3 + 35)(166 + 1843) 4982
In eetti, se assumiamo

1
1
3 + 35
b = 3 + 10 , x = 1 , b = 1
1
1
3 39

si trova come perturbazione della soluzione del sistema lineare


Z(x + x) = b + b
analisi numerica

c
V.
Comincioli

4.4 Complementi e Problemi

225

il seguente vettore

166 1683
x = 166 + 1843
6

e quindi

/
[x /x ] [b /b ] = (Z)

Problema 4.3 Data la seguente matrice di ordine n

1 2

1 2

..
A=
.

..

2
1

calcolare A1 e stimare il numero di condizionamento 2 (A).


Soluzione. Se A = [aij ] `e una generica matrice triangolare non singolare, dalla denizione A1 A = I
si ricavano per gli elementi a
ij della matrice inversa A1 le seguenti relazioni
a
ij = 0
per j = 1, . . . , n

a
jj =

1
ajj

a
ij =

i>j

j
r=i+1

air a
rj

aii

i = j 1, . . . , 2, 1

Per la matrice particolare assegnata si ha allora, per j = 1, 2, . . . , n


a
ij = 0, i > j; a
jj = 1; a
ij = 2
ai+1,j , i = j 1, . . . , 2, 1
e quindi

1
0
..
.

2
4
1 2
..
..
.
.

(2)n3
4

..
..
.
.
1

(2)n1
(2)n2

2
4

1
2
0
1

(2)n2
(2)n3

Per stimare il numero di condizionamento 2 (A) possiamo considerare lerrore prodotto sulla soluzione
del sistema Ax = b da una perturbazione eettuata su un termine noto b scelto opportunamente. Pi`
u
precisamente, posto
= [1, 0, . . . , ]T
b
b = [1, 0, . . . , 0]T ;
consideriamo i due sistemi lineari
Ax = b;
analisi numerica

A
x=b
c
V.
Comincioli

226

Algebra lineare numerica

Utilizzando le formule precedenti per il calcolo dellinversa A1 , si ottiene

1
1 + (2)n1 
0
(2)n2 

..

..
.

1
1
.
=A b=
x
x=A b=

4

2
0


Risulta pertanto
2
x x
=   [(2)n1 , (2)n2 , , 4, 2, 1]T 2
x2
2
b b
eb =
=
b2
ex =

Utilizziamo ora il risultato di maggiorazione dellerrore


ex 2 (A) eb
per ricavare la seguente limitazione del numero di condizionamento
ex
2n1
2 (A)
eb
In realt`a, si vede facilmente che 2 (A) > 2n . Basta osservare che per la denizione di norma naturale si
ha
Ax2 A1 y2
2 (A) = A2 A1 2
x2
y2
per ogni x, y = 0. Scegliendo in particolare x = y = [0, . . . , 0, 1]T , si ottiene
Ax = [0, 0, . . . , 0, 2, 1]T , A1 y = [(2)n1 , . . . , 4, 2, 1]T
x2 = 1, Ax2 > 2, A1 y2 > 2n1
da cui il risultato richiesto.
I risultati precedenti si generalizzano a matrici triangolari

a b

a b

..
.
A=
. ..

del tipo

b
a

per a = 0. In questo caso le formule per il calcolo dellinversa diventano


jj =
a
ij = 0, i > j; a
Si trova quindi

1
b
; a
ij = a
i+1,j , i = j 1, . . . , 2, 1
a
a

 b j
 b % n1
$
 
(A) = A A1  = 1 +  
a j=0 a

da cui si ricava, in particolare, che


 
 
 j

b
  b
  < 1 (A) < 1 +  b 
  = |a| + |b|
a
a
a
|a| |b|
j=0
e pertanto che la matrice `e ben condizionata se |b|  |a|.
analisi numerica

c
V.
Comincioli

4.4 Complementi e Problemi

227

Problema 4.4 Analizzare il problema della equilibratura della seguente matrice

1
1 2.e+9
A = 2 1 1.e+9
1
2
0.
Soluzione. Lequilibratura di una matrice `e importante, nellambito della risoluzione di un sistema lineare
Ax = b, per diminuire il numero di condizionamento della matrice. Essa pu`
o essere ottenuta mediante
operazioni di scaling, cio`e per divisioni delle righe e/o delle colonne per opportuni fattori. Talvolta, le
operazioni di scaling sono suggerite dallo studio del modello da cui ha origine il sistema lineare, in particolare
dalla considerazione delle unit`
a di misura utilizzate. In generale, comunque, non `e immediatamente chiaro
il signicato delloperazione di equilibratura. Una denizione usuale chiama matrice equilibrata una matrice
per la quale ogni riga e ogni colonna ha una lunghezza di ordine 1. Vediamo, ora, sulla matrice assegnata
nel problema, che per la stessa matrice possono esistere diverse forme equilibrate con caratteristiche di
condizionamento assai diverse.
Una prima equilibratura della matrice A `e ottenuta scalando le colonne per potenze di 10. Come
osservazione generale, notiamo che le operazioni di scaling dovrebbero essere eettuate mediante potenze
della base di numerazione , allo scopo di minimizzare gli errori di arrotondamento. Questo aspetto `e
particolarmente importante dal momento che i problemi di scaling si pongono in generale per le matrici
malcondizionate. In questo caso otteniamo

0.1
0.1 0.2
A = 0.2 0.1 0.1
0.1
0.2 0.
Osserviamo che non sono necessarie ulteriori operazioni di scaling di riga. Per la matrice A si trovano per
il determinante e il numero di condizionamento nella norma 2 i seguenti valori
2 (A ) 2.614;

det(A ) = 0.009

Per la matrice originaria A si ha


2 (A) = 1.339 e+9;

det(A) = 9. e+9

La seconda equilibratura che consideriamo `e per righe e fornisce la seguente matrice

1. e10 1. e10 0.2


A = 2. e9 1. e9 1.0
0.1
0.2
0.
Per la matrice A si ha

2 (A ) = 2.583 e+9;

det(A ) = 9. e11

Il problema generale della equilibratura pu`


o essere posto in questo modo. Date due matrici diagonali non
singolari D1 e D2 e posto
b = D1 b ;
x = D2 x
il sistema Ax = b `e equivalente al seguente
A x = b ,

A = D1
1 AD2

Si tratta allora di trovare D1 , D2 in maniera che sia minima la quantit`


a (D1
1 AD2 ).
Poiche il numero di condizionamento dipende dalla norma rispetto alla quale `e denito, si possono
ottenere risultati diversi a secondo della norma utilizzata. Si conoscono, ad esempio, risultati per la norma
  , dovuti a Bauer, ma tali risultati richiedono in generale la conoscenza della matrice A1 .
analisi numerica

c
V.
Comincioli

228

Algebra lineare numerica

In realt`a, il problema della equilibratura non ha per il momento soluzioni facilmente praticabili e generali, nel senso che si possano applicare ad arbitrarie matrici e con arbitrarie norme. Nei problemi concreti,
tuttavia, come si `e gi`a accennato, una buona equilibratura della matrice `e il risultato della costruzione di
un buon modello.

Problema 4.5 Per una qualsiasi matrice A Cnn si ha


(A) A2
ove A2 `e la norma spettrale di A. Luguaglianza `e vericata per le matrici hermitiane. Mostrare
con opportuni esempi che nel caso generale luguaglianza non `e valida.
Soluzione. Si consideri la seguente matrice

A=

1
0

ove C. Si ha ovviamente (A) = ||. Daltra parte, si trova facilmente che





||2
A A =

||2 + 1
La matrice A A ha gli autovalori
1
|| +
2
2

e quindi

1
A2 = || + +
2

0
||2 +

1
||2 +
4

1
4

1/2
> || = (A)

Daltra parte si pu`


o vedere che luguaglianza `e pi`
u in generale valida per le matrici normali, cio`e per le
matrici per le quali AA = A A. Per la dimostrazione basta tenere conto che per le matrici normali si ha
la rappresentazione A = U U, con U matrice unitaria e matrice diagonale.

Problema 4.6 Dimostrare che per una matrice A = [aij ] di ordine 2 e non singolare si ha
2 (A) = + ( 1)
2

1/2

con =

2
2
i,j=1 |aij |

2| det(A)|

Soluzione. Indicando con 1 e 2 rispettivamente il pi`u piccolo e il pi`u grande valore singolare di A si
ha, per denizione
21 + 22 = tr(AT A) =

|aij |2 ; 21 22 = det(AT A) = | det A|2

i,j=1

I numeri 21 , 22 sono quindi le radici del polinomio quadratico


z 2 z tr(AT A) + | det A|2 = 0
Poiche 1 2 , si ha allora


2
%2
tr AT A + (tr AT A)2 4 | det A|2 $
2

=
= + ( 2 1)1/2
T
T
2
2
1
tr A A (tr A A) 4 | det A|
analisi numerica

c
V.
Comincioli

4.4 Complementi e Problemi

229

Problema 4.7 Dati i seguenti punti


P1 (0, 0); P2 (4, 0); P3 (0, 4); P4 (5, 6)
determinare la circonferenza che meglio li approssima nel senso dei minimi quadrati.
Soluzione. Dallequazione generale di una circonferenza
x2 + y 2 + ax + by + c = 0 ax + by + c = (x2 + y 2 )
imponendo il passaggio attraverso i quattro punti assegnati,

0a + 0b + 1c =

4a + 0b + 1c =
0a + 4b + 1c =

5a + 6b + 1c =

si ottiene il seguente sistema lineare


0
16
16
61

che `e sovradeterminato in quanto la matrice completa, cio`e la matrice del quarto ordine [A, b], formata
dalla matrice A dei coecienti e dal vettore b dei termini noti, ha determinante uguale a 272 e quindi il
termine noto non pu`
o essere una combinazione lineare delle colonne della matrice dei coecienti.
La soluzione s = [a, b, c] nel senso dei minimi quadrati corrisponde alla soluzione del seguente problema
di minimo
min3 As b2 AT As = AT b (equazioni normali)
sR

Anziche risolvere direttamente il sistema delle equazioni normali, `e pi`


u conveniente dal punto di vista
della stabilit`
a numerica utilizzare la decomposizione A = QR, nel prodotto di una matrice Q ortonormale
(QT Q = I) e di una matrice triangolare R

0.
0.
0.7817359
0.6246950 0.5339295 0.3553345

Q=
0.
0.7297037 0.4264014
0.7808688
0.4271436
0.2842676

6.403124 4.685212 1.405563

R = 0.
5.481676
0.622917
0.
0.
1.279204
Tale decomposizione `e ottenuta mediante lapplicazione di successive trasformazioni elementari di Householder.
Dalla decomposizione QR si ottiene la soluzione s del problema di minimi quadrati nel sequente modo

AT As = AT b RT QT QRs = RT QT b

y = QT b
Rs = y

Nel caso particolare considerato, risolvendo il sistema triangolare si ottiene la soluzione


s = [5.619047, 5.753968, 3.777778]T ; As b2 = 6.057921
da cui si ricava lequazione del cerchio richiesto. La soluzione ottenuta `e rappresentata in Figura 4.15.

Problema 4.8 Supponendo di avere risolto il sistema lineare Ax = b mediante la fattorizzazione, con pivoting parziale, PA = LU, studiare una procedura per migliorare laccuratezza della
.
soluzione calcolata x
analisi numerica

c
V.
Comincioli

230

Algebra lineare numerica

8
7
6

5
4

2
1
0

-1
-2
-2

Figura 4.15 Circonferenza che approssima nel senso dei minimi quadrati quattro punti assegnati, indicati
in gura con x.

Soluzione. Se si utilizza il seguente procedimento


r = b A
x
soluzione di Ly = Pr
soluzione di Uz = y
=x
+z
x
allora in aritmetica esatta si ha
= A
x + Az = (b r) + r = b
Ax
In aritmetica oating point la procedura fornisce un miglioramento nella soluzione soltanto se si calcola il
residuo b A
x in precisione superiore. In pratica, si pu`
o, ad esempio, utilizzare una aritmetica a tcifre
(semplice precisione) per il calcolo di PA = LU, x, y e z, e utilizzare una aritmetica a 2tcifre (doppia
precisione), per calcolare b A
x. La procedura `e pertanto la seguente
r = b A
x (doppia precisione)
soluzione di Ly = Pr
soluzione di Uz = y
=x
+z
x
La procedura pu`
o essere iterata. Per quanto riguarda la convergenza si ha il seguente risultato euristico.
Se il numero di condizionamento (A) verica la condizione (A) 10q e eps = 10d `e la precisione
macchina utilizzata, allora dopo k iterazioni la x trovata ha approssimativamente un numero di cifre corrette
uguale a min(d, k(d q)).
o dare una soluzione che ha tutte le cifre
Approssimativamente, se eps (A) 1 , la procedura pu`
(in semplice precisione) esatte. Naturalmente, nel caso di matrici malcondizionate la procedura perde di
interesse.
Il costo della procedura `e dellordine O(n2 ), da confrontare con O(n3 ), che `e il numero di operazioni
per ottenere la fattorizzazione PA = LU.
Come semplice esempio di applicazione consideriamo il seguente sistema


 

.986 .579
x1
0.235
=
x2
.409 .237
0.107
analisi numerica

c
V.
Comincioli

4.4 Complementi e Problemi

231

in aritmetica denita dalla base = 10 e con precisione t = 3. Si ha PA = LU, con P = I e






1.000
0
0.9860
0.5790
L=
; U=
0.4148 1.000
0 0.0032
La procedura fornisce, a partire dalla soluzione x = 0, la seguente successione

 
 

2.11
1.99
2.00
=
x
,
,
3.17
2.99
3.00
La soluzione esatta `e [2, 3].

Problema 4.9 Siano A e B due matrici assegnate di ordine n, con A non singolare, e si
consideri la risoluzione del seguente sistema lineare

Ax1 + Bx2 = b1
Bx1 + Ax2 = b2
ove x1 , x2 , b1 , b2 Rn , mediante i seguenti due procedimenti iterativi

Ax(r+1) = b1 Bx(r)
1
2
(a)
Ax(r+1) = b Bx(r)
2
2
1

Ax(r+1) = b1 Bx(r)
1
2
(b)
Ax(r+1) = b Bx(r+1)
2

Soluzione. Indicata con x la soluzione del sistema lineare, poniamo


(r)

(r)

(r)

e1 = x1 x1 ;

(r)

e2 = x2 x2

Per sottrazione si trova nel caso dellalgoritmo (a) la seguente relazione

Ae(r+1) = Be(r)
1
2
Ae(r+1) = Be(r)
2

e nel caso dellalgoritmo (b) la relazione

Ae(r+1) = Be(r)
1
2
Ae(r+1) = Be(r+1)
2
1
Si ricava allora per lalgoritmo (a) il seguente risultato
(r+1)

e2

(r)

(r1)

= A1 Be1 = (A1 B)2 e2


(r)

Analogo risultato si ottiene per il vettore e1 . La condizione necessaria e suciente per la convergenza `e
pertanto la seguente
(A1 B) < 1
e la velocit`
a di convergenza `e data da (A1 B).
analisi numerica

c
V.
Comincioli

232

Algebra lineare numerica

Per lalgoritmo (b), procedendo in modo analogo, si ottiene


(r+1)

e2

(r)

= (A1 B)2 e2

Pertanto la condizione necessaria e suciente per la convergenza `e la stessa, ma la la velocit`


a di convergenza
`e questa volta proporzionale a [(A1 B)]2 .
Osserviamo che nel caso n = 1 la condizione di convergenza si riduce alla condizione di predominanza
diagonale |a| > |b|. Il risultato precedente dice allora che il metodo di Gauss-Seidel (metodo (b)) ha una
velocit`a di convergenza doppia rispetto al metodo di Jacobi (metodo (a)).
Come verica immediata, si consideri il seguente sistema

2x1 + x2 = 1
x1 + 2x2 = 1
(r+1)

Nel caso dellalgoritmo (a) si trova esattamente e2

(r)

(r+1)

= 12 e2 , mentre nel caso (b) si ha: e2

(r)

= 14 e2 .

Problema 4.10 Studiare per la risoluzione del sistema lineare




1 a
x = b, a R
a 1
il seguente metodo iterativo


1
0
a 1


(k+1)

1
a
0
1


x(k) + b

con parametro opportuno.


Soluzione. Si tratta del metodo SOR. Per la convergenza si ha quindi la condizione necessaria 0 < < 2.
Per cercare condizioni sucienti, consideriamo la matrice di iterazione


1 
 
1
0
1
a
1
a
L =
=
a 1
0
1
a(1 ) 2 a2 + 1
Gli autovalori di L vericano la seguente equazione di secondo grado
2 (2(1 ) + 2 a2 ) + (1 )2 = 0
In particolare per = 1 si trovano gli autovalori 1 = 0, 2 = |a|2 . Pertanto il metodo di GaussSeidel
converge quando |a| < 1.
Per |a| < 1 la matrice dei coecienti `e simmetrica e denita positiva e quindi in questo caso il metodo
di rilassamento converge per (0, 2). Essendo inoltre la matrice tridiagonale, il parametro ottimale
`e
dato da
2

=
1 + (1 (L1 ))1/2
e in corrispondenza si ha

1 1 |a|2

(L ) =
1=
1 + 1 |a|2
In Figura 4.16 (a) `e rappresentata la funzione (L ) al variare di a [1, 1].
In Figura 4.16 (b) `e rappresentata la funzione
(L ),

(0, 2)

in corrispondenza al valore a = 0.5. Come si vede, il valore del parametro ottimale per tale valore di a `e
1.07. La gura mostra che `e meglio sovrastimare il parametro
, in quanto la derivata sinistra `e innita.
In Figura 4.17 `e rappresentata la funzione (L ) per (0, 2), a (1, 1).
analisi numerica

c
V.
Comincioli

4.4 Complementi e Problemi

233

1
0.8
0.6
0.4
0.2
0
-1

-0.8

-0.6

-0.4

-0.2

0.2

0.4

0.6

0.8

0.2

0.4

0.6

0.8

1.2

1.4

1.6

1.8

1
0.8
0.6
0.4
0.2
0

Figura 4.16 (a) Graco della funzione (L ), a (1, 1). (b) Graco della funzione (L ),
(0, 2), a = 0.5.

Problema 4.11 Sia A Rnn una matrice simmetrica denita positiva e, indicati con i i suoi
autovalori, sia
M (A) = max {i }
m(A) = min {i };
1in

1in

Studiare al variare del parametro il metodo iterativo




x(r+1) = (I A)x(r) + b + (1 )x(r) ,

x(r) Rn

Soluzione. Il metodo pu`o essere scritto nella seguente forma


x(r+1) = (I A)x(r) + b
da cui si vede che la condizione necessaria e suciente per la convergenza `e
(I A) < 1
Dal momento che gli autovalori (I A) della matrice I A sono dati da 1 (A), si ha
$
%
(I A) = max |(I A)| = max |1 m(A)|, |1 M (A)|
Da uno studio, ad esempio graco (che `e lasciato come esercizio), si vede che
(I A) < 1 0 < <

2
M (A)

Il valore ottimale del parametro che minimizza la funzione (I A) `e dato da


(A) 1 = 1 m(A)

M
=
In corrispondenza si ha

analisi numerica

2
m(A) + M (A)

= 2 (A) 1
(I A)
2 (A) + 1
c
V.
Comincioli

234

Algebra lineare numerica

Figura 4.17 Graco della funzione (L ), (0, 2), a (1, 1).


ove 2 (A) = A2 A1 2 = M (A)/m(A), dal momento che la matrice A `e stata supposta simmetrica.
La velocit`
a V di convergenza ottimale pu`
o essere espressa in funzione di 2 (A) nel seguente modo
= ln
V = ln (I A)

2
2 (A) 1

2 (A) + 1
2 (A)

per 2 (A)  1

Problema 4.12 Studiare la convergenza di un metodo iterativo


x(k+1) = Bx(k) + c
nel caso in cui la matrice B abbia raggio spettrale (B) = 0.
Soluzione. Quando una matrice B di ordine n ha raggio spettrale nullo, signica che il suo polinomio
caratteristico `e dato da pB () = n . Tenendo conto del teorema di CayleyHamilton, si ha allora che
esiste un intero m n tale che Bm = 0. Come conseguenza, ssato un valore iniziale x(0) , si avr`a per la
successione x(k)
x(m) x = Bm (x(0) x) = 0
ove x `e il punto unito della trasformazione x Bx + c. Il metodo iterativo converge quindi in un numero
nito di iterazioni.

Problema 4.13 Data una matrice A Rmn , con m n e rank(A) = n, discutere il calcolo
numerico della matrice
C = (AT A)1
Soluzione. La matrice C ha, in particolare, una interpretazione statistica, in quanto sotto opportune
ipotesi fornisce una stima della matrice di covarianza relativa al vettore soluzione del problema di minimi
quadrati minx Ax b2 .
analisi numerica

c
V.
Comincioli

4.4 Complementi e Problemi

235

Il calcolo numerico della matrice simmetrica C pu`


o essere ottenuto in vari modi, utilizzando dierenti
decomposizioni della matrice A. Segnaliamo in particolare le due seguenti


R
T
R Rnn triangolare superiore
Q A=
0



T
U AV =
Rnn diagonale
0
La matrice Q `e di ordine n e ortogonale. Le matrici
ortogonali. Ad esempio, per la seguente matrice

1
1
A=
1
1
si ha rank(A) = 3 e

A=Q

R
0

U e V sono, rispettivamente, di ordine m e n e sono

2 3
4 9

8 27
16 81

0.5 0.51287
0.54898 0.43077
0.5 0.32637 0.14059
0.78975

;Q =
0.5
0.04662 0.74983 0.43077
0.5
0.79262
0.34144
0.07179

2. 15.000 60.000
10.723
60.985
R = 0.
0.
0.
7.792

e rispettivamente A = UVT , con

0.03830
0.10986
U=
0.31982
0.94030

0.01603
V = 0.20636
0.97834

0.42449
0.79546 0.43077
0.59425
0.10527
0.78975

0.61561 0.57719 0.43077


0.29611
0.15161
0.07179

0.35778
0.93366
0.91249 0.35321
0.19833
0.05919

e = diag(87.805, 3.7403, 0.508).


A partire dalle decomposizioni precedenti si ottiene
AT A = RT R
2

(4.86)

A A = V V

(4.87)

da cui
C = (AT A)1 = R1 (R1 )T
T

C = (A A)

= V

(4.88)
(4.89)

Analizziamo in dettaglio il calcolo richiesto dai due procedimenti (4.88), (4.89).


Nel primo procedimento si deve invertire la matrice R, memorizzando il risultato in R, e formare la
parte triangolare superiore della matrice R1 (R1 )T , memorizzando il risultato in R1 .
Il calcolo di R1 pu`
o essere ottenuto nel modo seguente. Indicati con tij gli elementi di R1 , dalla
1
identit`
a R R = I e dal fatto che ambedue le matrici R e R1 sono triangolari superiori, si ottengono le
seguenti equazioni

j

1 se i = j
til rlj = ij
0 se i = j
l=i
analisi numerica

c
V.
Comincioli

236

Algebra lineare numerica

per i, j = 1, 2, . . . , n, i j. Risolvendo rispetto a tij , si ottiene


. 1
se j = i
rjj
tij =
j1
1
se j > i
rjj
l=i til rlj
Per sostituire in memoria rij con tij , le formule precedenti possono essere organizzate nel seguente modo
equivalente
1
tii = rii

$
tij = tjj

i = 1, . . . , n
j1

til rlj ,

j = i + 1, . . . , n

i = 1, . . . , n 1

l=i

Lapplicazione delle formule precedenti richiede n3 /6+O(n2 ) ops. Anche il calcolo di R1 (R1 )T richiede
lo stesso numero di operazioni, sicche con lalgoritmo ora descritto la matrice di covarianza C pu`
o essere
ottenuta mediante n3 /3 + O(n2 ) ops.
Quando si utilizza la decomposizione in valori singolari gli elementi della matrice C sono dati da
n

vik vjk
cij =
2
kk
k=1

Nel caso in cui la matrice V sia stata ottenuta in una array di dimensione n n, la matrice V1
pu`
o sostituire V nella memoria; successivamente la parte triangolare superiore di C pu`
o sostituire quella
corrispondente di V1 , con lausilio di una array di lunghezza n.

4.5
4.5.1

Esperienze in Matlab
Decomposizione LU di matrici tridiagonali

function [l,u]=tridilu(a,b,c)
% A=diag(b(2:n),-1)+diag(a)+diag(c(1:n-1),1)
% L=diag(l(2:n),-1)+diag(ones(n,1))
% U=diag(u)+diag(c(1:n-1),1)
n=length(a);
l=zeros(n,1); u=zeros(n,1);
u(1)=a(1);
for i=2:n
l(i)=b(i)/u(i-1);
u(i)=a(i)-l(i)*c(i-1);
end
...........
function x=trisolv(a,b,c,f)
% Ax=f
n=length(f);
[l,u]=tridilu(a,b,c);
y(1)=f(1);
for i=2:n
y(i)=f(i)-l(i)*y(i-1);
end
x(n)=y(n)/u(n);
for i=n-1:-1:1
x(i)=(y(i)-c(i)*x(i+1))/u(i);
analisi numerica

c
V.
Comincioli

4.5 Esperienze in Matlab

237

end
x=x(:);
%% Esempio n=10; a=2*ones(n,1); b=-ones(n,1); c=b;
%% A=diag(b(2:n),-1)+diag(a)+diag(c(1:n-1),1);
%% xt=rand(n,1); f=A*xt;
%% x=trisolv(a,b,c,f)
%% Provare A(1,1)=1; det(A); inv(A) [L,U]=lu(A);

Metodo di Cholesky per matrici tridiagonali


function [g,h] = CholTrid(d,e)
% G = CholTrid(d,e)
% fattorizzazione di Cholesky di una matrice tridiagonale
% simmetrica definita positiva
% d, e: vettori colonna [n,1]
% A = diag(d) + diag(e(2:n),-1) + diag(e(2:n),1)
% g, h vettori colonna [n,1]
% G = diag(g) + diag(h(2:n),-1) soddisfa A = GG^T.
n = length(d);
g = zeros(n,1);
h = zeros(n,1);
g(1) = sqrt(d(1));
for i=2:n
h(i) = e(i)/g(i-1);
g(i) = sqrt(d(i) - h(i)^2);
end
------function x = CholTridSol(g,h,b)
% x = CholTridSol(g,h,b)
% risolve il sistema lineare G*Gx = b, b [n,1]
% G = diag(g) + diag(h(2:n),-1).
n = length(g);
y = zeros(n,1);
% risolve Gy = b
y(1) = b(1)/g(1);
for k=2:n
y(k) = (b(k) - h(k)*y(k-1))/g(k);
end
% risolve Gx = y
x = zeros(n,1);
x(n) = y(n)/g(n);
for k=n-1:-1:1
x(k) = (y(k) - h(k+1)*x(k+1))/g(k);
end

Applicazione: problema dierenziale ai limiti


------% Script File: BVPdf
%
-D^2 u + u(x) = 2xsin(x) - 2cos(x)
u(0) = u(pi) = 0.
% soluzione esatta: u(x) = x*sin(x).
% metodo delle differenze finite (Capitolo 9)
close all
analisi numerica

c
V.
Comincioli

238

Algebra lineare numerica

n = 100;
x = linspace(0,pi,n);
hx = pi/(n-1);
d = 2*ones(n-2,1) + hx^2;
e = -ones(n-2,1);
[g,h] = CholTrid(d,e);
b = hx^2*( 2*x(2:n-1).*sin(x(2:n-1)) - 2*cos(x(2:n-1)));
umid = CholTridSol(g,h,b);
u = [0;umid;0];
plot(x,u,x,x.*sin(x))
err = norm(u - x.*sin(x),inf);
title(Soluzione di -D^2 u + u = 2xsin(x) - 2cos(x), u(0)=u(pi)=0)
xlabel(sprintf( n = %3.0f
norm(u - xsin(x),inf) = %10.6f,n,err))

4.5.2

Eliminazione di Gauss con pivoting completo

function [L, U, P, Q, rho] = gecp(A)


%GECP
eliminazione di Gauss con pivoting completo
%
[L, U, P, Q, RHO] = GECP(A) calcola la fattorizzazione P*A*Q = L*U,
%
L matrice triangolare inferiore con l(i,i)=1
%
U matrice triangolare superiore
%
P e Q matrici di permutazione.
%
RHO `
e il fattore di accrescimento (growth factor).
%
Senza parametri di output GECP(A) fornisce la matrice finale
%
contennte sia L che U.
[n, n] = size(A);
pp = 1:n; qq = 1:n;
if nargout == 5
maxA = norm(A(:), inf);
rho = maxA;
end
for k = 1:n-1
% trova lelemento di modulo massimo
[colmaxima, rowindices] = max( abs(A(k:n, k:n)) );
[biggest, colindex] = max(colmaxima);
row = rowindices(colindex)+k-1; col = colindex+k-1;
% pone lelemento di modulo massimo nella posizione pivot.
A( [k, row], : ) = A( [row, k], : );
A( :, [k, col] ) = A( :, [col, k] );
pp( [k, row] ) = pp( [row, k] ); qq( [k, col] ) = qq( [col, k] );
if A(k,k) == 0
break
end
A(k+1:n,k) = A(k+1:n,k)/A(k,k);

% Moltiplicatori

% eliminazione
i = k+1:n;
A(i,i) = A(i,i) - A(i,k) * A(k,i);
if nargout == 5, rho = max( rho, max(max(abs(A(i,i)))) ); end
analisi numerica

c
V.
Comincioli

4.5 Esperienze in Matlab

239

end
if nargout <= 1
L = A;
return
end
L = tril(A,-1) + eye(n);
U = triu(A);
if nargout >= 3, P = eye(n); P = P(pp,:); end
if nargout >= 4, Q = eye(n); Q = Q(:,qq); end
if nargout == 5, rho = rho/maxA; end

4.5.3

Eliminazione senza pivoting

function [L,U] = GE1(A)


% [L,U] = GE(A) L(i,i)=1
% A = LU.
[n,n] = size(A);
for k=1:n-1
A(k+1:n,k) = A(k+1:n,k)/A(k,k);
A(k+1:n,k+1:n) = A(k+1:n,k+1:n) - A(k+1:n,k)*A(k,k+1:n);
end
L = eye(n,n) + tril(A,-1);
U = triu(A);
----% esempio di uso
[L,U]=GE1(A);
y=LTriSol(L,b);
x=UTriSol(U,y);
n=100;
x=ones(n,1);
A=diag(6*ones(n,1))+diag(ones(n-1,1),1)+diag(8*ones(n-1,1),-1);
[L,U]=GE1(A);
b=A*x;
y=L\b;
xx=U\y;
norm(x-xx,inf)
ans = 3.5182e+013

4.5.4

Eetto del condizionamento sullalgoritmo di soluzione di un sistema


lineare

%script condA
%effetto del condizionamento sullalgoritmo di soluzione di un sistema
%lineare: Gauss A\b, svd, QR
clear all
A=[1 1 1 1 ; 1 2 3 4; 2 2 1 1; 4 5 4 5]
pause
b=[10 30 13 46]
analisi numerica

c
V.
Comincioli

240

Algebra lineare numerica

pause
xe =[1 2 3 4];
format long
for k=2:8
f=10^(2-2*k);
A(4,1)=4+f;
b(4)=46+f;
c(k-1)=cond(A);
disp(cond(A))
disp(cond(A))
disp(soluzione numerica)
x=A\b;
disp(x)
pause
er(k-1)=norm((x-xe),1)/norm(xe,1);
end
disp(errore relativo)
disp(er)
subplot(2,1,1), semilogy(c), title(condizionamento)
subplot(2,1,2),semilogy(er),title(errore relativo)
pause
[U,S,V]=svd(A);
xs=V*pinv(S)*U*b;
disp(soluzione mediante svd)
disp(xs)
pause
[Q,R]=qr(A);
xq=R\(Q*b);
disp(soluzione QR)
disp(xq)
%un numero di condizionamento di A grande non implica necessariamente
% un sistema lineare Ax=b mal condizionato; `
e importante anche la direzione di b
% rispetto agli autovalori U di AA
A=[780 563
913 659];
cond(A)
b=[-6.4956; -7.6031];
bs=[-6.4994; -7.5999];
re1=norm(b-bs);
b2=[-7.6031; 6.4956];
b2s=[-7.6064; 6.4918];
rel2=norm(b2-b2s);
x=A\b;
xs=A\bs;
relx=norm(x-xs);
x2=A\b2;
x2s=A\b2s;
relx2=norm(x2-x2s);

4.5.5

Minimi quadrati

%% script miniqua
analisi numerica

c
V.
Comincioli

4.5 Esperienze in Matlab

241

% minimi quadrati
% dati sperimentali
t=[0.0 0.3 0.8 1.1 1.6 2.3];
y=[0.82 0.72 0.63 0.60 0.55 0.50];
% modello y(t)=x1+x2exp(-t)
E=[ones(size(t)) exp(-t)];
x=E\y;
tt=[0:0.1:2.5];
yy=[ones(size(tt)) exp(-tt)]*x;
plot(tt,yy,-,t,y,o)
%
ET=E*E
%
ET\(E*y)
%
[U,S,V]=svd(E)
%
x=V*pinv(S)*U*y
% [Q,R]=qr(E)
%
c=Q*y
%
b=c(1:2)
%
RR=R(1:2, :)
%
x=RR\b

4.5.6

Metodo qr

function [Q, R] = cgs(A)


%CGS
fattorizzazione QR con metodo classico Gram-Schmidt.
%
A = Q*R
%
A matrice m-per-n di rango completo,
%
Q matrice ortonormale m-per-n
%
R matrice triangolare superiore n-per-n.
[m, n] = size(A);
Q = zeros(m,n); R = zeros(n);
R(1,1) = norm(A(:,1));
Q(:,1) = A(:,1)/R(1,1);
for j=2:n
R(1:j-1,j) = Q(:,1:j-1)*A(:,j);
temp = A(:,j) - Q(:,1:j-1)*R(1:j-1,j);
R(j,j) = norm(temp);
Q(:,j) = temp/R(j,j);
end
----------function [Q, R] = mgs(A)
%MGS
fattorizzazione QR con metodo Gram-Schmidt modificato
%
A matrice m-per-n di rango completo,
%
Q matrice ortonormale m-per-n
%
R matrice triangolare superiore n-per-n.
[m, n] = size(A);
Q = zeros(m,n); R = zeros(n);
for k=1:n
R(k,k) = norm(A(:,k));
Q(:,k) = A(:,k)/R(k,k);
R(k,k+1:n) = Q(:,k)*A(:,k+1:n);
A(:,k+1:n) = A(:,k+1:n) - Q(:,k)*R(k,k+1:n);
end

analisi numerica

c
V.
Comincioli

242

Algebra lineare numerica

Matrici di Householder
Denizione 4.4 Se v Rn , la matrice n n
H(v) := I

2
vv
v v

`e chiamata matrice di Householder corrispondente al vettore v.


Osserviamo che v v (ricordiamo che con notazione matlab v = vT ) `e uno scalare, mentre vv `e
una matrice n n con elemento (i, j) dato da vi vj .
Si dimostra facilmente che H(v) `e simmetrica e ortogonale. Si ha infatti



2
2
2
H(v) = I  vv = I  (vv ) = I  vv = H(v)
vv
vv
vv
e inoltre


H(v) H(v) =

2
I  vv
vv

2
I  vv
vv

2
2
= I  vv  vv +
vv
vv

2
v v

vv vv

Dal momento che v v R, vv vv = v(v v)v = (v v)vv , si ha


4
H(v)H(v) = I  vv +
vv


2
v v

(v v)vv = I

E importante rilevare che il prodotto della matrice H(v) per un vettore pu`o essere ottenuto senza
costruire esplicitamente la matrice H(v). Si ha infatti la seguente formula veloce (fast formula)

2
2 

vw v
H(v)w = w  v(v w) = w
vv
v v
Se si memorizza la quantit`
a = 2/v v la formula richiede 4n ops (2n 1 per v w, 1 per (v w),

n per (v w)v, n per w (v w)v), mentre calcolando H(v) esplicitamente il prodotto H(v)w
richiede n (2n 1) = O(2n2 ).
Le matrici di Householder possono essere utilizzate per creare zeri in vettori (preservando la
lunghezza euclidea del vettore). Pi`
u precisamente, per ogni u Rn , posto = u (norma
euclidea) e

u1 +
u2

v = u + e(1) =

..

.
un
allora
H(v)u = e(1)
ossia 0 nella seconda, . . . , n-ma posizione. Per evitare cancellazioni si assume = sign(u1 )u.
Per dimostrare il risultato, osservato che
v u = (u + e(1) ) u = u u + u e(1) = 2 + u1
analisi numerica

c
V.
Comincioli

4.5 Esperienze in Matlab

243

v v = (u + e(1) ) (u + e(1) ) = u u + 2u1 + 2 = 2 2 + 2u1 = 2( + u1 )

si ha

H(v)u = u

2
v v

v(v u) = u

2
2
( + u1 ) = u v = u (u + e(1) ) = e(1)
2( + u1 )

Esempio 4.29 Se u = [2, 1, 2], trovare v tale che

x
H(v)u = 0
0

per x R. Successivamente calcolare


H(v)w per w = [1, 0, 1] .

2
Dal momento che u = (2) + (1)2 + 22 = 3, posto = 3 (poiche u1 < 0) si assume v =
[2 3, 1, 2] = [5, 1, 2]. Allora il risultato precedente mostra che H(v)u = [3, 0, 0] .
Si ha ora = 2/v v = 2/(2( + u1 )) = 2/(2 (3) (5) = 1/15 e

1
v w = [5, 1, 2] 0 = 3
1
Usando la fast formula, si ha allora

H(v)w = w

1
5
0
1
1
(3) v = 0 + 1 = 1/5
15
5
1
2
7/5

Pi`
u in generale, nelle applicazioni `e dato un vettore
 



u
vettore di ordine k
=
u=

u
vettore di ordine n k
e si cerca un vettore v tale che

u
vettore di ordine k

H(v)u = x =
scalare
0
vettore di ordine n k 1

ossia le componenti del vettore u al di sotto della componente k-ma sono azzerate. Ignorando
e lavorando
si tratta di trovare il vettore v
di ordine n k tale che
u
 solo con il vettore u
x
per denire il vettore di Householder v di ordine n, ossia
H(
v)
u=
. Si utilizza quindi v
0


0
v=
e quindi

v









 
2
2
0
0 0
Ik
Ik

]=
[ 0 v

=
H(v) = I

v

Ink
H(
v)
v
0 v
v v
v v
Per calcolare H(v)w si scrive


w=

analisi numerica

c
V.
Comincioli

244

Algebra lineare numerica

e allora
H(v)w =

I
0
0 H(
v)

 


=

H(
v)w

Osserviamo inne che se A `e una matrice di ordine n, per calcolare H(v)A si pu`o utilizzare la
fast formula applicata alle colonne di A; ossia, se a:,k indica la k-ma colonna di A si ha
H(v)A = [H(v)a:,1 , H(v)a:,2 , . . . , H(v)a:,n ]
Fattorizzazione QR
Se A Rmn la fattorizzazione QR di A consiste nel trovare una matrice ortogonale Q di ordine
m m e una matrice triangolare superiore R di ordine m n tali che
A = QR
Tale decomposizione `e unica, a meno di cambiamento di segno in una colonna di Q e nella
corrispondente riga di R.
Lalgoritmo `e descritto dalla seguente implementazione in matlab
function [Q,A]=mnqr(A)
% input A matrice (m,n)
% output Q matrice ortogonale (m,m)
%
A matrice (m,n) triangolare (= matrice R)
[m,n]=size(A); Kmax=min([m-1,n]);
Q=eye(m);
for k=1:Kmax
uk=A(k:end,k);
s=sqrt(uk*uk)*sign(uk(1));
vk=uk;vk(1)=uk(1)+s;
alpha=1/(s*vk(1));
A(k:end,k)=[-s;zeros(m-k,1)];
vkA=alpha*(vk*A(k:end,k+1:end));
A(k:end,k+1:end)=A(k:end,k+1:end)-vk*vkA;
vkQ=Q(:,k:end)*(alpha*vk);
Q(:,k:end)=Q(:,k:end)-vkQ*vk;
end

The mathematical software provides


one of the best means of technology transfer.

P.T. Boggs, 1981

analisi numerica

c
V.
Comincioli

Much of quantum mechanics boils down


to looking for functions that are eigenfunctions of a given operator.

P. W. Atkins

CAPITOLO

5
Autovalori e autovettori

Data una matrice A di ordine n, viene detto autovalore di A un numero C per il quale il
seguente sistema omogeneo
Ax = x
(5.1)
ammette soluzioni x = 0. Tali soluzioni sono dette gli autovettori di A, corrispondenti allautovalore . In sostanza, un vettore non nullo x `e un autovettore quando nella trasformazione lineare
x Ax esso viene trasformato in un multiplo di x.
Le nozioni di autovalore e di autovettore sono importanti in diverse applicazioni. Segnaliamo,
in particolare, il loro interesse nello studio della stabilit`
a delle strutture, in questioni di statistica,
nello studio di sistemi dinamici e della propagazione dei segnali , e in chimica-sica nel calcolo
degli orbitali molecolari.
Il problema del calcolo degli autovalori `e, in sostanza, un problema di tipo nonlineare, in quanto
esso equivale alla ricerca delle radici della seguente equazione algebrica in , detta equazione
caratteristica
det(A I) = 0
(5.2)
Per la sua risoluzione, si potrebbero, quindi, utilizzare una delle tecniche che analizzeremo nel
seguito per lapprossimazione degli zeri di una funzione non lineare.
Tuttavia, la procedura matematica costruzione del polinomio caratteristico, calcolo delle
sue radici, e la risoluzione delle equazioni omogenee (5.1) non `e, in generale, una procedura
numerica conveniente, sia per costo che per stabilit`a.
Lo scopo principale di questo capitolo `e, in eetti, quello di fornire metodi numerici alternativi. Il risultato alla base di tali metodi `e linvarianza dello spettro di A, ossia dellinsieme degli
autovalori di A, rispetto alle trasformazioni simili. Mediante una scelta opportuna di tali trasformazioni, la matrice di partenza viene ridotta ad una matrice di forma pi`
u semplice per quanto
riguarda il calcolo degli autovalori, ad esempio una matrice diagonale o triangolare. I vari metodi
dieriscono tra loro per la diversa scelta e implementazione delle successive trasformazioni.
245

246

5.1

Autovalori e autovettori

Condizionamento del problema degli autovalori

Data una matrice A, per condizionamento degli autovalori si intende lanalisi di come si propagano
sugli autovalori le perturbazioni (corrispondenti, ad esempio, agli errori di arrotondamento, o agli
errori sperimentali) presenti negli elementi della matrice. Si tratta di unanalisi che prescinde
dagli algoritmi utilizzati, ma che `e indispensabile per la scelta dellalgoritmo pi`
u idoneo, nel senso
che se il problema dato risulta essere malcondizionato, per la sua risoluzione saranno opportuni
metodi stabili.
Constatiamo attraverso un esempio la possibilit`a che una matrice possa essere malcondizionata
per quanto riguarda il calcolo dei suoi autovalori.
Esempio 5.1 Gli autovalori della seguente matrice

A=

101 110
90 98


(5.3)

1 1. + 9.9499 i,
2 1. 9.9499 i per la matrice
sono dati da 1 = 2 e 2 = 1, e diventano


100 110

A=
90 98
ottenuta sostituendo allelemento a11 = 101 il valore a
11 = 100.

Per studiare il problema del condizionamento, in particolare per introdurre, analogamente


a quanto abbiamo visto per la risoluzione dei sistemi lineari, una misura del condizionamento,
consideriamo per semplicit`a il caso di matrici diagonalizzabili, per le quali cio`e esista una matrice
P non singolare, tale che
P1 AP = diag[1 , 2 , . . . , n ] : D
Le colonne di P sono gli autovettori di A, corrispondenti agli autovalori 1 , . . . , n . Ad esempio,
per la matrice (5.3) si ha






101 110
11 10
1 0
9 10
=
90 98
10 9
0 2
10 11
Ricordiamo, allora, il seguente risultato.
Teorema 5.1 (Bauer-Fike) Sia A una matrice diagonalizzabile e A + E una perturbazione di A,
con E Rnn . Se `e un autovalore di A + E, allora esiste almeno un autovalore di A tale che
| | K(A) E

(5.4)

ove K(A) = P P1  e   indica una qualsiasi delle norme di matrice  p , con p = 1, 2, .
Il numero K(A) pu`
o essere, quindi, assunto come numero di condizionamento (assoluto) del
problema degli autovalori della matrice A. Per la matrice (5.3) si ha, in eetti, K(A) = 441,
calcolato nella norma 1.
Ricordando che le matrici normali (ad esempio le matrici simmetriche, skew-simmetriche,
ortogonali o unitarie) sono diagonalizzabili mediante matrici P ortogonali, dal teorema precedente
si ricava il seguente risultato.
analisi numerica

c
V.
Comincioli

5.2 Metodo delle potenze

247

Corollario 5.1 Se A `e una matrice normale e se A + E `e una qualunque perturbazione di A,


allora per ogni autovalore di A + E esiste almeno un autovalore di A tale che
| | E2

(5.5)

dal momento che P2 = 1 se P `e ortogonale.


Il risultato (5.5) mostra che piccole perturbazioni (in senso assoluto) sulla matrice A portano
pure a piccole perturbazioni sugli autovalori. Pertanto per le matrici normali, in particolare quindi
per le matrici simmetriche o unitarie, il calcolo degli autovalori `e un problema bencondizionato,
mentre, come evidenziato dallesempio precedente, per una matrice generale il problema pu`o essere
malcondizionato. In eetti, il calcolo numerico degli autovalori di una matrice non simmetrica, o
unitaria, `e, in generale, un problema delicato.
In matlab il condizionamento degli autovalori pu`
o essere stimato dallistruzione condeig.

5.2

Metodo delle potenze

Il metodo delle potenze `e un metodo di tipo iterativo utile, in particolare, quando `e richiesto il
calcolo dellautovalore di modulo massimo o, pi`
u in generale, di un autovalore vicino ad un valore
pressato1 .
Per introdurre lidea del metodo, consideriamo, per semplicit`
a, il caso di una matrice A di
ordine n che abbia n autovettori x1 , x2 , . . . , xn linearmente indipendenti e gli autovalori 1 , 2 ,
. . . , n tali che
|1 | > |2 | |n |
Supponiamo, cio`e, che lautovalore di modulo massimo abbia molteplicit`a algebrica 1 e che non
esistano altri autovalori con lo stesso modulo. Per le opportune estensioni del metodo rinviamo
alla bibliograa.
Fissato un vettore z0 Cn , con z0 = 0, si genera la successione di vettori {yk }, k = 1, 2, . . .
mediante la seguente procedura ricorrente
y0 = z0
yk = Ayk1 ,

k = 1, 2, . . .

Esaminiamo il comportamento della successione {yk } per k . Nelle ipotesi fatte su A, il


vettore z0 ha la seguente rappresentazione
z0 =

i xi

i=1

Supponendo che z0 sia tale che 1 = 0, si ha


k

yk = A z0 =

n

i=1

i ki xi


=

k1

1 x1 +

n

i=2

i
1

k
xi

(5.6)

Il metodo delle potenze, che utilizza le propriet`


a asintotiche delle potenze di matrici, `e stato suggerito nel 1913
da M
untz.
analisi numerica

c
V.
Comincioli

248

Autovalori e autovettori

Dal momento che |i /1 | < 1, i 2, la direzione del vettore yk tende a quella di x1 . Inoltre, il
quoziente di Rayleigh di yk , denito da
k =

(Ayk , yk )
(yk , yk )

tende allautovalore 1 .
Nella forma precedente lalgoritmo pu`o presentare problemi di underow o overow dovuti al
o tendere a zero o allinnito; `e necessaria, quindi, una operazione di scaling. Tale
fatto che k1 pu`
operazione pu`
o essere eettuata utilizzando a priori diversi tipi di norma di vettore. Se si considera ad esempio la norma euclidea, si ottiene il seguente algoritmo. Si costruisce una successione
di vettori tk , con tk 2 = 1, mediante le relazioni
tk =

yk
,
yk 2
k =

yk+1 = Atk ,

k = 0, 1, 2, . . .

(Atk , tk )
= (tk , yk+1 )
(tk , tk )

Da (5.6) si vede che gli errori di troncamento relativi a tk e k tendono a zero come |2 /1 |k
(convergenza lineare). Lasciamo come esercizio mostrare che se la matrice A `e simmetrica, allora
la convergenza `e come |2 /1 |2k (convergenza quadratica).
% metodo delle potenze norma 2
rand(seed,1);
A=rand(5);
l=sort(abs(eig(A)));
l=flipud(l)
uu=rand(length(A),1);
u=uu;
for k=1:10
u=u/norm(u);
v=A*u;
lam(k)= u*v;
u=v;
end
-----% metodo delle potenze norma massimo
u=uu;
for k=1:10
[umax,i]=max(abs(u));
u=u/umax;
v=A*u;
lamm(k)=v(i)/u(i);
u=v;
end
format long
[lam(:) lamm(:)]

Osservazione 5.1 Il metodo delle potenze `e convergente anche nel caso in cui lautovalore di modulo
massimo abbia molteplicit`
a algebrica maggiore di 1, cio`e 1 = 2 = = r , con
|1 | = |2 | = . . . = |r | > |r+1 | . . . |n |
analisi numerica

c
V.
Comincioli

5.2 Metodo delle potenze

249

Quando, invece, lautovalore di modulo massimo non `e unico, i risultati di convergenza precedenti non
sono pi`
u applicabili. In certi casi, tuttavia, `e ancora possibile determinare delle relazioni che permettono
il calcolo degli autovalori dominanti. Si consideri, come esercizio, il caso di una matrice A con autovalori
reali 1 = 2 > 0 e 1 > |3 | |4 | |n | e con n autovettori linearmente indipendenti. In questo
caso si pu`
o vedere che 21 `e approssimato dalla successione (A2 yk )j /(yk )j , ove (yk )j `e una componente di
yk diversa dallo zero.

Esempio di applicazione: Ricerche su Web


Limportanza di un determinato sito Web pu`
o essere misurata calcolando il numero dei siti che
vi puntano. Indicando con x1 , x2 , . . . , xn limportanza dei siti in una determinata area, si ha che
limportanza di un sito `e proporzionale alla somma dei valori di importanza dei siti che lo puntano.
Se k `e il fattore di proporzionalit`
a e se A `e la matrice n n con elementi aij uguali a 1 se il sito
web j ha un link al sito web i e uguali a zero in caso contrario, si ha
xi = k

aij xj ,

i = 1, . . . , n

j=1

Si tratta quindi di trovare un autovettore con elementi positivi e il sito pi`


u importante `e quello
che corrisponde alla componente maggiore di tale autovettore. In questo modo, quando si esegue
una ricerca in rete, si pu`
o ricevere una lista di siti in ordine di importanza decrescente, con ai
primi posti i siti pi`
u visitati e pi`
u interessanti per ogni argomento. Questa `e, ad esempio, lidea
utilizzata nel motore di ricerca Google 2 , nel quale viene utlizzato il metodo delle potenze.
Metodo di Bernoulli
Ad ogni polinomio pu`
o essere associata una matrice (nella forma di Frobenius, o companion
matrix, cfr. Appendice A), che ha come autovalori gli zeri del polinomio. Lapplicazione del
metodo delle potenze alla matrice companion equivale al metodo di Bernoulli per il calcolo della
radice di modulo massimo del polinomio. Ricordiamo che il metodo di Bernoulli 3 per un polinomio
P (x) = a0 xn +a1 xn1 + +an , con a0 = 0, consiste nel generare una successione {zk } nel seguente
modo.
Si assegnano arbitrariamente n valori z0 , z1 , . . . , zn1 ; quindi si calcola
zn+k =

1$
a1 zn+k1 + a2 zn+k2 + + an zk )
a0

Si pu`
o dimostrare che, quando la radice di modulo massimo 1 `e unica, allora
lim

zn+k

k zn+k1

= 1

2
Lidea di Google (il nome deriva da googol, termine che indica il numero 10100 ) `e stata introdotta nel 1995
da due studenti di informatica di Stanford, Sergey Brin e Larry Page. Per una descrizione pi`
u dettagliata si vedano
i links 5, 6, 7, 8.
3
descritto da Daniel Bernoulli nel 1728, noto anche come metodo dei momenti.

analisi numerica

c
V.
Comincioli

250

5.2.1

Autovalori e autovettori

Iterazione inversa

Quando il metodo delle potenze `e applicato alla matrice A1 , esso fornisce, nel caso in cui si
u in generale,
abbia 0 < |n | < |n1 |, una approssimazione dellautovalore di modulo minimo. Pi`
la successione
yk
, (A I)yk+1 = tk ,
k = 0, 1, 2, . . .
tk =
yk 2
corrisponde4 allapplicazione del metodo delle potenze alla matrice (A I)1 , che ha come
autovalori 1/(i ). In questo caso la successione converge allautovalore pi`
u vicino a .
Osserviamo che il calcolo della successione {yk } richiede la risoluzione, ad ogni iterazione, di un
sistema lineare. Poiche tuttavia la matrice `e sempre la stessa, si pu`o eettuare la decomposizione
LU della matrice A I e quindi risolvere, ad ogni iterazione, due sistemi triangolari.

5.2.2

Deazione

Con il termine deazione si intende loperazione di eliminazione dellautovalore 1 , una volta


che sia stata ottenuta una sua approssimazione. In pratica, essa consiste nella costruzione di una
matrice A che abbia gli stessi autovalori di A salvo 1 . Si tratta di una operazione numericamente
delicata, in quanto `e necessario limitare la propagazione degli errori che derivano dal fatto che
o
dellautovalore 1 si conosce solo, in generale, un valore approssimato. Una procedura stabile pu`
essere ottenuta nel modo seguente. Mediante le trasformazioni di Householder si costruisce una
matrice non singolare P tale che Px1 = e1 , ove con e1 si `e indicato il primo vettore unitario e
con x1 un autovettore corrispondente a 1 . Allora, da Ax1 = 1 x1 si ha
PAP1 Px1 = 1 Px1 (PAP1 ) e1 = 1 e1
La matrice PAP1 ha gli stessi autovalori di A e quindi deve avere la seguente forma


1 bT
1
PAP =
0 A
La matrice A `e la matrice cercata.

5.2.3

Metodo di Lanczos

Il metodo di Lanczos5 `e una tecnica particolarmente conveniente per matrici simmetriche (o hermitiane) sparse e di grandi dimensioni . Il metodo genera una successione di matrici tridiagonali
Tj , di dimensioni j j, con la propriet`
a che gli autovalori estremali (ossia gli autovalori pi`
u
positivi, e rispettivamente pi`
u negativi) di Tj convergono monotonamente ai corrispondenti autovalori estremali di A. In questo modo `e possibile avere informazioni sugli autovalori, calcolando
gli autovalori di matrici tridiagonali di ordine relativamente basso. Si presuppone, naturalmente,
che il calcolo degli autovalori di una matrice tridiagonale sia un problema pi`
u semplice (per tale
problema cfr. paragra successivi).
4
Tale estensione del metodo delle potenze `e stata proposta da Wielandt nel 1944 ed `e nota come metodo di
iterazione inversa.
5
C. Lanczos, An iteration Method for the Solution of the Eigenvalue Problem of Linear Dierential and Integral
Operators, J. Res. Nat. Bur. Stand., 45, 1950.

analisi numerica

c
V.
Comincioli

5.2 Metodo delle potenze

251

Data una matrice simmetrica A, si costruisce una matrice ortogonale Q con la propriet`a che
Q1 AQ = T

(5.7)

con T matrice simmetrica tridiagonale. Tale obiettivo `e comune allo schema di Householder che
analizzeremo nei successivi paragra. La dierenza tra i due metodi consiste nella procedura utilizzata per raggiungere lobiettivo. Mentre, come vedremo, nel metodo di Householder la matrice
T `e ottenuta mediante successive premoltiplicazioni e postmoltiplicazioni di matrici elementari
di tipo riessione, ossia matrici di Householder, (o alternativamente, nel metodo di Givens con
metodi di rotazione), nello schema di Lanczos le colonne di Q e gli elementi di T sono ottenuti
mediante una procedura ricorrente. Moltiplicando (5.7) per Q, si ottiene AQ = QT, e quindi
ogni colonna della matrice AQ `e uguale alla corrispondente colonna della matrice QT. Se qj
denota la colonna j-ma di Q, la colonna j-ma di AQ `e data da Aqj . Scritta la matrice T nella
seguente forma

d1 u1

u1 d2
u2

.
.
.
.
.
.
T=

.
.
.

un2 dn1 un1


un1 dn
la colonna j-ma di QT pu`
o essere espressa nella seguente forma
uj1 qj1 + dj qj + uj qj+1
Uguagliando, quindi, la colonna j-ma di AQ alla colonna j-ma di QT, si ottiene
Aqj = uj1 qj1 + dj qj + uj qj+1

(5.8)

Assumendo, per convenzione, come vettore q0 il vettore nullo, la relazione precedente `e valida
anche per j = 1. Dal momento che Q `e una matrice ortogonale, si ha
qTj qj1 = qTj qj+1 = 0,

qTj qj = 1

Premoltiplicando (5.8) per qTj , si ottiene


dj = qTj Aqj
Denendo i vettori rj nel seguente modo
rj = Aqj dj qj uj1 qj1
la relazione (5.8) implica che uj qj+1 = rj . Prendendo la norma euclidea, si ha
|uj | qj+1 2 = rj 2
da cui si vede che uj `e la lunghezza euclidea di rj . Risolvendo lidentit`a uj qj+1 = rj , si ottiene
qj+1 = rj /uj . Le formule precedenti per dj , uj e qj+1 costituiscono il metodo di Lanczos per
ridurre una matrice simmetrica A di ordine n a una matrice tridiagonale. In conclusione, partendo
da un vettore arbitrario, non nullo, q1 , il metodo pu`
o essere riassunto nel seguente modo
analisi numerica

c
V.
Comincioli

252

Autovalori e autovettori

q0 = 0, r = q1 , u0 = r2
for j = 1, . . . , n
qj = r/uj1 , dj = qTj Aqj
r = (A dj I)qj uj1 qj1
uj = r2
end j
Quando uj1 = 0, e quindi lalgoritmo precedente non `e in grado di procedere, si denisce qj
arbitrariamente come un vettore di lunghezza unitaria e ortogonale ai vettori q1 , . . . , qj1 .
Si pu`
o vedere facilmente che i vettori qj giacciono nello spazio generato dai vettori q1 , Aq1 , . . . ,
Aj1 q1 . Tale spazio, indicato usualmente con la notazione Kj (q1 ), `e chiamato lo spazio j-mo di
Krylov 6 associato con q1 . In sostanza, il metodo di Lanczos genera una base ortonormale per gli
spazi di Krylov.
Chiariamo, ora, come il metodo di Lanczos possa essere utilizzato per calcolare alcuni degli autovalori estremi, ad esempio lautovalore dominante, di una matrice simmetrica A. Per
ogni j ssato, j = 1, 2 . . . , n, consideriamo la matrice Tj che ha come diagonale gli elementi
d1 , d2 , . . . , dj e con elementi sopra la diagonale u1 , u2 , . . . , uj calcolati con lalgoritmo precedente.
(j)
Si pu`
o mostrare che gli autovalori estremi (in particolare, quindi, lautovalore dominante max ) di
u rapida che nel metodo delle potenze) agli autovalori estremi della
Tj convergono (in maniera pi`
matrice A. Sfruttando tale risultato, `e possibile ottenere delle approssimazioni degli autovalori
estremi di A, risolvendo successivamente il problema del calcolo degli autovalori estremi di matrici
tridiagonali di dimensione crescente.
Esempio 5.2 Come illustrazione, consideriamo lapplicazione del metodo di Lanczos alla seguente matrice simmetrica

A=

1
2
1
2
0

2
1
2
1
3

1
2
2 1
0
3
3
1
1
0

0
3
1
0
4

(5.9)

con q1 = [1, 1, 1, 1, 1]T . Si ottengono successivamente i seguenti risultati, ove con j sono indicati gli
autovalori della matrice Tj .
j = 1 T1 = [6.600000];

6.600000
j = 2 T2 =
1.019803

6.600000
j = 3 T3 = 1.019803
0

6.600000
1.019803
j = 4 T4 =
0
0

1.019803
3.053846


;

1.019803
0
3.053846
3.179771 ;
3.179771 2.229559

1.019803
0.
0

3.053846
3.179771
0
;
3.179774 2.229559
1.101277
0
1.101277 1.210630

1 = [ 6.600000]


6.872357
2 =
2.781488

6.969281
3 = 4.195147
3.740141

6.971348
4.234288

4 =
0.905203
4.086778

Nikolai Mitrofanovich Krylov, nato a San Pietroburgo, Russia nel 1879 e morto a Mosca, USSR nel 1955, `e
autore di numerosi lavori nel campo dellinterpolazione e della soluzione numerica di equazioni dierenziali.
analisi numerica

c
V.
Comincioli

5.3 Metodi di trasformazione per similitudine

253

Per j = 5 si ottiene r 1. 1012. Gli autovalori della matrice A sono dati da

0.987573459
0.872074485

(A) =
4.090499422
4.234642665
6.971355730
Come confronto, applicando alla matrice (5.9) il metodo delle potenze a partire dal vettore iniziale q1 si
ottengono i risultati contenuti nella Tabella 5.1.
k
1
2
3
4
5
6
7
8
9
10

k
6.82511
6.91577
6.95064
6.96369
6.96853
6.97031
6.97097
6.97121
6.97130
6.97134

0.40179
0.36137
0.34681
0.32959
0.32364
0.31716
0.31484
0.31246
0.31157
0.31079

0.46875
0.50787
0.50894
0.52216
0.52202
0.52649
0.52642
0.52798
0.52797
0.52852

tk
0.46875
0.41997
0.41448
0.39588
0.39275
0.38584
0.38450
0.38198
0.38144
0.38053

0.33482
0.30277
0.25658
0.24223
0.22495
0.21932
0.21299
0.21083
0.20853
0.20771

0.53572
0.58601
0.61891
0.63507
0.64643
0.65210
0.65615
0.65820
0.65967
0.66043

Tabella 5.1 Risultati ottenuti mediante il metodo delle potenze per la matrice (5.9).

5.3

Metodi di trasformazione per similitudine

Le trasformazioni per similitudine mediante matrici ortogonali, o unitarie, rappresentano la base


per la costruzione di diversi metodi ecienti per il calcolo degli autovalori e degli autovettori. In
termini schematici, tali metodi cercano di trasformare una matrice A in unaltra matrice con gli
stessi autovalori, ma per la quale il problema del calcolo degli autovalori sia pi`
u semplice. Pi`
u
precisamente, a partire dalla matrice A1 A, si costruisce una successione {Ak }, k = 2, 3, . . .
mediante il seguente procedimento
Ak = QTk Ak1 Qk ,

QTk Qk = I,

k = 2, 3, . . .

(5.10)

Si vede facilmente che le matrici Ak sono simili a A, e quindi dal punto di vista teorico hanno lo
stesso insieme di autovalori, e che i corrispondenti autovettori sono legati dalla relazione
x = Q2 Q3 Qk xk
ove x e xk sono rispettivamente un autovettore della matrice A e della matrice Ak corrispondenti
al medesimo autovalore. Una propriet`a importante dal punto di vista numerico `e il fatto che la
trasformazione (5.10) preserva la simmetria.
Le trasformazioni ortogonali utilizzate in pratica sono le trasformazioni di Givens (rotazioni)
e le trasformazioni di Householder (riessioni). La Figura 5.1 riassume lesposizione dei paragra
successivi, rappresentando, in maniera schematica, le varie procedure numeriche corrispondenti
al tipo di trasformazione utilizzato e al tipo di matrice.
analisi numerica

c
V.
Comincioli

254

Autovalori e autovettori

Figura 5.1 Schema dei metodi basati su trasformazioni per similitudine. Il simbolo O(n) indica che il
metodo prevede un numero di iterazioni dellordine di n, mentre signica che il risultato `e ottenuto, in
generale, come limite.

Il metodo di Jacobi, basato sulle trasformazioni di tipo rotazione, trasforma una matrice
simmetrica (o hermitiana) in una matrice diagonale. Il risultato `e ottenuto come limite di una
successione. Alternativamente, mediante le trasformazioni di Householder o di Givens si pu`o
ridurre la matrice di partenza ad una matrice tridiagonale (quasi-triangolare, o di Hessenberg, nel
caso di matrici non simmetriche). Tale risultato pu`o essere ottenuto mediante un numero nito di
iterazioni, proporzionale allordine n della matrice. Alla matrice nella forma ridotta, tridiagonale
o di Hessenberg, si pu`o applicare il metodo QR, mediante il quale si ottiene, come limite di una
successione, una matrice diagonale nel caso simmetrico, e rispettivamente triangolare nel caso
non simmetrico. Rispetto al metodo di Jacobi, il metodo QR presenta una superiore rapidit`a
di convergenza, ma richiede ad ogni iterazione un costo superiore in termini di operazioni, dal
momento che prevede ad ogni iterazione la decomposizione QR delle successive matrici. Tale
costo si riduce, ovviamente, quando la matrice `e sparsa. Questo `e, in eetti, il motivo per il
quale, prima di applicare il metodo QR, si preferisce ridurre la matrice alla forma tridiagonale, o
rispettivamente di Hessenberg.

5.3.1

Metodo di Jacobi

Il metodo di Jacobi , noto anche come metodo di Jacobi-Von Neumann7 , `e uno dei metodi pi`
u
noti ed utilizzati per il calcolo di tutti gli autovalori di matrici simmetriche (o pi`
u in generale,
` un metodo del tipo (5.10) e utilizza trasformazioni di tipo
hermitiane) di piccole dimensioni. E
rotazione. Lidea di base `e quella di annullare, ad ogni iterazione, un elemento fuori dalla diagonale
principale. Come matrice limite delliterazione, si ottiene allora una matrice diagonale, che fornisce
direttamente gli autovalori, mentre il limite del prodotto Q2 , Q3 , Qk fornisce la corrispondente
matrice degli autovettori.
7

C. G. J. J. Jacobi (1804-1851), J. Von Neumann (1903-1957).

analisi numerica

c
V.
Comincioli

5.3 Metodi di trasformazione per similitudine

255

Esporremo il metodo nel caso di una matrice A simmetrica. Posto A1 = A, si costruisce per
k = 2, 3, . . . la successione di matrici
Ak = GTk Ak1 Gk
ove Gk (p, q) `e una matrice di rotazione di un opportuno angolo nel piano di due vettori di
(k1)
(k)
della matrice Ak1 e gli elementi aij
base p, q scelti convenientemente. Tra gli elementi aij
della matrice trasformata Ak si hanno (cfr. Appendice A) le seguenti relazioni, ove si `e posto
c = cos , s = sin
(k)

per i = p, q, j = p, q

(k1)

aij = aij
(k)

(k1)

per j = p, q

apj = capj

per j = p, q

(k)
aqj
(k)
apq
(k)
app
(k)
aqq

=
=
=
=

(5.11)
(k1)

saqj

(5.12)

(k1)
(k1)
sapj
+ caqj
(k1)
(k1)
(k1)
c s(apq
aqq
) + (c2 s2 )apq
(k1)
(k1)
(k1)
c2 app
+ s2 aqq
2csapq
(k1)
(k1)
(k1)
s2 app
+ c2 aqq
+ 2c sapq

(5.13)
(5.14)
(5.15)
(5.16)

1
Ricordiamo che c s = cos sin = sin 2 e c2 s2 =cos2 sin2 =cos 2.
2
Alla generica iterazione k-ma langolo viene determinato in maniera da ottenere

ossia tale che

(k)
(k)
apq
= aqp
=0

(5.17)

%
$ (k1)
(k1)
(k1)
= 2 cos 2apq
sin 2 app
aqq

(5.18)

Langolo `e allora determinato dalle seguenti relazioni

(k1)
(k1)

=
se app
= aqq

tan 2 =

(k1)

2apq

, || <
(k1)
(k1)
4
aqq
app

(k1)

se app

(k1)

= aqq

(5.19)

La condizione || < /4 determina completamente il valore di a partire da quello di tan 2.


In realt`a, non `e nemmeno necessario calcolare esplicitamente langolo , in quanto nelle formule
precedenti intervengono solo le funzioni trigonometriche, o pi`
u precisamente relazioni in funzione
di t = tan . In eetti, poiche || < /4, si ha cos > 0 e quindi
1
=
1 + t2
1+
t
s = sin = cos tan =
1 + t2
c = cos =

tan2

Osserviamo, inoltre, che


(k)
(k1)
(k1)
(k1)
(k1)
app
= app
(cos2 1) apq
sin 2 + aqq
sin2
app
% 2
$ (k1)
(k1)
(k1)
sin apq
app
sin 2
= aqq

analisi numerica

c
V.
Comincioli

256

Autovalori e autovettori

da cui, ricordando (5.17)


(k)
(k1)
(k1)
= app
apq
tan
app

(5.20)

(k)
(k1)
(k1)
= aqq
+ apq
tan
aqq

(5.21)

Allo stesso modo, si dimostra che

Per determinare t = tan a partire da tan 2, si ha la seguente relazione trigonometrica


tan 2 =

2t
1 t2

da cui

(k1)

t2 + 2t cot 2 1 = 0, ove per la (5.19)

cot 2 = =

aqq

(k1)

app
(k1)

(5.22)

2apq

Poiche t = tan verica |t| < 1 per || < /4 e il prodotto delle radici di (5.22) `e uguale a 1, `e
necessario prendere la radice di modulo minimo. Si ha, quindi

sign()

t=
se = 0
2
(5.23)
||
+
1
+

t=1
se = 0
Successivamente, si calcola
1
; s = ct
1 + t2
In denitiva, le formule che deniscono lalgoritmo diventano le seguenti
c=

i = p, q, j = p, q

(k)

(k1)

aij = aij
(k)

(k1)

saqj

(k)

(k1)

+ caqj

j = p, q

apj = capj

j = p, q

aqj = sapj

(k1)
(k1)

(k)
(k1)
(k1)
app
= app
tapq
(k)
(k1)
(k1)
aqq
= aqq
+ tapq

Si vede facilmente che il numero di moltiplicazioni per rotazione `e approssimativamente dato da


4n. Unosservazione interessante `e che le formule precedenti possono essere eseguite in parallelo.
o diventare non nullo alliterazione k; per esempio,
Naturalmente, un elemento nullo di Ak1 pu`
(k1)
(k1)
(k)
(k1)
= 0 e aqj
= 0, allora apj = aqj
sin . Si tratta, quindi, in generale
per j = p, q, se apj
di un metodo non a terminazione nita.
Per la scelta della coppia di indici (p, q) ad ogni iterazione, vi sono diverse idee, tra le quali
esamineremo le due seguenti.
Metodo di Jacobi classico
Il metodo di Jacobi classico consiste nello scegliere (p, q), con p < q in maniera che
(k1)

(k1)
|apq
| = max |aij
i=j

(5.24)

Corrispondentemente a questa scelta, si ha il seguente risultato di convergenza.


analisi numerica

c
V.
Comincioli

5.3 Metodi di trasformazione per similitudine

257

Teorema 5.2 Se A `e una matrice simmetrica di ordine n, allora il metodo di Jacobi converge. Pi`
u precisamente, gli elementi non diagonali di A convergono a zero, mentre ogni elemento
(k)
diagonale aii converge verso un autovalore di A.
Dimostrazione. La dimostrazione della convergenza `e basata sulla seguente disuguaglianza, valida per
la coppia di indici (p, q) denita in (5.24)
$ (k1) %2
S(Ak1 )
,

apq
n(n 1)
Si ha allora

ove S(Ak1 ) =

(k1) 2

|arj

r,j
r=j

%2
$
S(Ak1 )
S(Ak ) = S(Ak1 ) 2 a(k1)
= S(Ak1 )
S(Ak1 ) 2
pq
n(n 1)

ove = 1 2/(n(n 1)) < 1, per n 2. Applicando in maniera ricorrente la maggiorazione precedente,
si ha
S(Ak ) k S(A1 )
(k)

da cui S(Ak ) 0. Per dimostrare poi che ogni elemento diagonale aii converge verso un autovalore di A
si utilizza il Teorema di Gerschgorin.

Quando la matrice hermitiana A ha autovalori distinti i , i = 1, 2, . . . , n, si pu`


o mostrare che da
un certo passo k in poi si ha
2S(Ak1 )2
S(Ak+N )
2
ove N = n(n 1)/2 e = mini=j |i j |. Tale risultato mostra che nelle ipotesi fatte il metodo
di Jacobi ha convergenza quadratica.
Metodo con soglia
Si ssa un valore s > 0. Si scelgono allora le coppie (p, q) nellordine naturale (1, 2), (1, 3),
. . . , (1, n), (2, 3), . . . ma si eettua la rotazione soltanto se |apq | s. Il valore della soglia
pu`
o essere ridenito ad ogni rotazione. Nella implementazione riportata nel seguito si utilizza la
seguente strategia. Nelle prime tre iterazioni si esegue la rotazione se |apq | `e maggiore della soglia
s = 0.2S0 /n2 , ove S0 `e la somma dei moduli degli elementi fuori della diagonale. Dopo quattro
iterazioni si evita la rotazione quando |apq | `e piccolo rispetto agli elementi sulla diagonale |app | e
|aqq |.
function [V,D]=jacobi1(A,epsilon)
%
A matrice simmetrica
%
epsilon tolleranza
%
V colonne: autovettori
%
D diagonale: autovettori
D=A;
[n,n]=size(A);
V=eye(n);
state=1;
% calcolo elemento a(p,q)
[m1 p]=max(abs(D-diag(diag(D))));
[m2 q]=max(m1);
analisi numerica

c
V.
Comincioli

258

Autovalori e autovettori

p=p(q);
while (state==1)
t=D(p,q)/(D(q,q)-D(p,p));
c=1/sqrt(t^2+1);
s=c*t;
R=[c s;-s c];
D([p q],:)=R*D([p q],:);
D(:,[p q])=D(:,[p q])*R;
V(:,[p q])=V(:,[p q])*R;
[m1 p]=max(abs(D-diag(diag(D))));
[m2 q]=max(m1);
p=p(q);
if (abs(D(p,q))<epsilon*sqrt(sum(diag(D).^2)/n))
state=0;
end
end
D=diag(diag(D));
----------A=rand(5)
A=triu(A,1)+triu(A,1)+diag(diag(A))

5.3.2

Metodo di Householder

Data una matrice A simmetrica di ordine n simmetrica, si assumono come matrici di trasformazione Qk in (5.10) le matrici elementari di Householder. Lo scopo `e quello di ridurre la matrice
A alla forma tridiagonale.
Al primo passo, posto


(1)

A1 = A =

a11
a1

aT1
B1

con B1 matrice di ordine n 1 e a1 Rn1 , si considera la matrice elementare di Householder


H1 di dimensione n 1 tale che
H1 a1 = 1 e1
ove e1 `e il primo vettore della base canonica di Rn1 . La matrice


1 0T
Q1 =
0 H1
`e tale che nella matrice
A2 = Q1
1 A1 Q 1 = Q 1 A1 Q 1
siano nulli tutti gli elementi della prima colonna con indice di riga maggiore di due e i simmetrici
di questi nella prima riga.
Al generico passo k, si parte dalla seguente situazione

Tk bk
0
(k)
Ak = bTk akk
aTk
0
ak Bk
analisi numerica

c
V.
Comincioli

5.3 Metodi di trasformazione per similitudine

259

ove Tk `e una matrice di ordine k 1 tridiagonale simmetrica, bk `e un vettore di ordine k 1, che


ha nulle le prime k 2 componenti, ak Rnk e Bk `e una matrice simmetrica di ordine n k.
Sia allora Hk la matrice di Householder di ordine n k tale che
Hk ak = k e1
con e1 , questa volta, primo vettore della base canonica di Rnk . Posto


Ik 0T
Qk =
0 Hk
si ha

Tk

Ak+1 = QTk Ak Qk = bTk


0

bk

(k)
akk
aTk Hk
Hk ak Hk Bk Hk

Dal momento che il vettore Hk ak Rnk ha nulle le componenti di indice maggiore o uguale
a due, la sottomatrice principale di ordine k + 2 della matrice Ak+1 `e tridiagonale simmetrica.
Applicando il procedimento n 2 volte si ottiene come matrice trasformata per similitudine (e
quindi con gli stessi autovalori della matrice A) una matrice tridiagonale simmetrica.
Tenendo presente che Hk ha la forma Hk = I k uk uTk , per calcolare la matrice Hk Bk Hk
non si utilizza esplicitamente Hk , ma solo il vettore uk . Si pu`
o, infatti, mostrare facilmente che
Hk Bk Hk = Bk qk uTk uk qTk
ove

1
rk = k Bk uk
qk = rk k (rTk uk )uk ,
2
Il numero delle moltiplicazioni richiesto per ogni trasformazione k k + 1 `e, quindi, 2(n k)2 . In
totale, pertanto, il metodo di Householder richiede per tridiagonalizzare una matrice simmetrica
2
3
un numero di operazioni dato da n2
k=1 2(n k) 2n /3.

5.3.3

Metodo di Givens

Nel metodo di Givens si utilizzano, come nel metodo di Jacobi, le matrici di rotazione. Tuttavia, a
dierenza del metodo di Jacobi, il metodo di Givens ha come obiettivo quello di ridurre una matrice
simmetrica ad una matrice tridiagonale simmetrica mediante un numero nito di trasformazioni.
Sia A una matrice simmetrica di ordine n e poniamo A1 = A; si denisce quindi
Ak = GTpq Ak1 Gpq
Si hanno, allora le relazioni (5.12) (5.16). La scelta degli indici (p, q) avviene in questo modo.
Prima tappa. Si vogliono annullare gli elementi della matrice che sono nella prima colonna
salvo i primi due, cio`e gli elementi di indici (3,1), (4,1), . . . , (n,1).
Per ogni coppia (p, 1), con p = 3, 4, . . . , n, si considera la rotazione nel piano (p, 2), ove langolo
(k)
`e determinato in modo che sia nullo lelemento ap1 e quindi
(k1)

ap1
analisi numerica

(k1)

cos a21

sin = 0
c
V.
Comincioli

260

Autovalori e autovettori

Posto

1
r = ,$
$ (k1) %2
%
(k1) 2
+ a21
ap1

si ha
(k1)

sin = rap1

(k1)

cos = ra21

Ricordando le relazioni (5.12) (5.16), si ha che ogni trasformazione nel piano (p, q) modica
soltanto le colonne p, q. Pertanto, uno zero creato nella prima colonna (o prima riga) non `e
modicato nelle trasformazioni successive.
Al termine della prima tappa si `e ottenuta una matrice simile alla matrice di partenza con gli
n 2 ultimi elementi della prima colonna nulli.
Seconda tappa. Si considera la seconda colonna. Per p = 4, 5, . . . , n si annulla lelemento di
posizione (p, 2) facendo una rotazione nel piano (p, 3), che ha leetto di modicare gli elementi
della terza e p-ma riga e colonna. Lelemento (p, 1), che era stato annullato precedentemente `e una
combinazione lineare dellelemento in posizione (p, 1) e dellelemento in posizione (3, 1). Poiche
sono ambedue nulli, non si modicano gli zeri corrispondenti della prima colonna.
Le altre tappe consistono nel procedere colonna per colonna nellordine naturale. Dopo (n
2) + (n 3) + + 1 = (n 2)(n 1)/2 trasformazioni si ottiene una matrice tridiagonale
simmetrica. Tenendo conto della simmetria, il numero totale di moltiplicazioni `e dato da
n2

4(n + 1 j)(n 1 j)

j=1

4 3
n
3

cio`e circa il doppio delle operazioni richieste dal metodo di Householder. Tuttavia, come si `e gi`a
osservato, le rotazioni permettono un azzeramento mirato e pertanto il metodo pu`
o risultare pi`
u
conveniente per il calcolo degli autovalori e degli autovettori di una matrice sparsa.

5.3.4

Matrici non simmetriche

Quando la matrice A `e non simmetrica, lapplicazione dei metodi di Householder e di Givens


d`
a origine a matrici equivalenti alla matrice A, con una struttura che solitamente viene indicata
come matrice di Hessenberg superiore (cfr. Figura 5.2). Detta H tale matrice, si ha quindi
hij = 0, i > j + 1, j = 1, 2, . . . , n 2.

H=

Figura 5.2 Matrice di Hessenberg.


analisi numerica

c
V.
Comincioli

5.3 Metodi di trasformazione per similitudine

261

5
Il costo per il metodo di Householder `e di circa n3 , mentre `e di circa il doppio per quello di
3
Givens.
La trasformazione nella forma di Hessenberg `e preliminare alla applicazione del metodo QR,
che come vedremo pi`
u avanti conserva tale struttura.

5.3.5

Matrici tridiagonali simmetriche

Come abbiamo visto, lapplicazione dei metodi di Lanczos, di Householder e di Givens prevede
come fase terminale la ricerca degli autovalori e degli autovettori di una matrice tridiagonale
simmetrica. In questo paragrafo incominceremo ad analizzare una prima tecnica per risolvere
tale problema. Essa si basa sulla risoluzione dellequazione caratteristica e presenta interesse
quando si devono calcolare determinati autovalori, quali, ad esempio, gli autovalori di modulo
massimo o di modulo minimo, o quelli contenuti in un particolare intervallo. Il metodo QR, che
esamineremo nel paragrafo successivo `e, invece, in generale pi`
u conveniente quando sono richiesti
tutti gli autovalori della matrice.
Sia A una matrice tridiagonale reale simmetrica, ossia della forma

a1
b1

A=

b1
a2
..
.

b2
..
.

..

.
bn2 an1 bn1
bn1 an

Tale matrice risulta (cfr. Appendice A) irriducibile quando bi = 0 per i = 1, 2, . . . , n 1. Viceversa, quando almeno uno degli elementi bi `e nullo la matrice `e riducibile ed ha la seguente
decomposizione a blocchi

A11
0

A22

A=

..

.
0

Arr

ove Aii , i = 1, 2, . . . , r, sono matrici tridiagonali di ordine inferiore a n. In questo caso, quindi, il
problema del calcolo degli autovalori di A si riduce a quello delle matrici Aii . Possiamo, pertanto,
supporre, senza perdita di generalit`a, che la matrice A sia irriducibile.
Il polinomio caratteristico di una matrice simmetrica tridiagonale e irriducibile pu`
o essere
calcolato mediante una opportuna iterazione, grazie al seguente risultato.
Lemma 5.1 Data una matrice A tridiagonale simmetrica e irriducibile, indichiamo con Ak la
sua sottomatrice principale di ordine k e con pk () il corrispondente polinomio caratteristico.
Posto, allora
p0 () = 1; p1 () = a1
si ha per k 2
pk () = (ak ) pk1 () b2k1 pk2 ()
analisi numerica

(5.25)
c
V.
Comincioli

262

Autovalori e autovettori

Per la dimostrazione basta sviluppare il determinante di ogni matrice Ak Ik rispetto allultima


riga.
Le radici del polinomio caratteristico pn (), che sono tutte reali, in quanto la matrice `e simmetrica, possono essere approssimate mediante un procedimento di bisezione. Se pn () pn () < 0
e < , la seguente iterazione
while | | > (|| + ||)
= ( + )/2
if pn () pn () < 0
=
else
=
end
end

termina quando si `e ottenuta una approssimazione di una autovalore della matrice A con un
errore relativo inferiore a una precisione pressata .
Si possono, inoltre, dimostrare le seguenti propriet`
a.
Lemma 5.2 Le radici del polinomio pk () sono semplici e reali e i polinomi successivi pk () e
pk1 () non hanno radici comuni. Inoltre, le radici di pk1 () separano strettamente le radici di
pk ().
Esempio 5.3 Come illustrazione, consideriamo la seguente matrice

A=

2
1
0
0
0
0

1
2
1
0
0
0

0
1
2
1
0
0

0
0
1
2
1
0

0
0
0
1
2
1

0
0
0
0
1
2

(A) =

3.24697960371747
2.44504186791263
3.80193773580484
1.55495813208737
0.75302039628253
0.19806226419516

(5.26)

ove (A) indica gli autovalori esatti della matrice A. Dal Lemma 5.1 si ricava la seguente successione
p0 () = 1, p1 () = 2
p2 () = 2 4 + 3
p3 () = 3 + 62 10 + 4
p4 () = 4 83 + 212 20 + 5
p5 () = 5 + 104 363 + 562 35 + 6
p6 () = 6 125 + 554 1203 + 1262 56 + 7
In particolare, il polinomio p6 () fornisce il polinomio caratteristico della matrice A. I polinomi pk sono
rappresentati in Figura 5.3, nella quale si possono vericare i risultati precedenti.

Una successione di polinomi che vericano le propriet`


a del Lemma 5.2 `e detta una successione
di Sturm. Si ha come conseguenza il seguente risultato.
analisi numerica

c
V.
Comincioli

5.3 Metodi di trasformazione per similitudine

263

Figura 5.3 Rappresentazione della successione dei polinomi pk () corrispondenti alla matrice (5.26).
Teorema 5.3 Sia A una matrice tridiagonale simmetrica e irriducibile. Il numero C() delle
concordanze di segno nella successione p0 (), p1 (), . . . , pn () `e uguale al numero degli autovalori
di A strettamente maggiori di . Quando pk () = 0, si denisce come segno quello dellopposto
di pk1 () che `e non nullo. Pertanto, il numero degli autovalori di A compresi in ]a, b], ove a < b
`e uguale a C(a) C(b).
Il risultato, incorporato opportunamente nellalgoritmo della bisezione esaminato in precedenza,
permette di ottenere una conveniente approssimazione degli autovalori di modulo massimo o
minimo, o pi`
u in generale degli autovalori contenuti in un ssato intervallo.

5.3.6

Metodo QR

Il metodo QR8 `e uno dei metodi numerici pi`


u interessanti per il calcolo degli autovalori. Tuttavia,
applicato ad una matrice generale, ha un costo elevato dal momento che richiede ad ogni iterazione
la decomposizione di una matrice nel prodotto di una matrice ortogonale Q e di una matrice
triangolare R. Per tale motivo, come abbiamo gi`
a osservato in precedenza, il metodo `e applicato
a matrici gi`a ridotte a forma tridiagonale (caso simmetrico) e di Hessenberg (caso generale).
Pur essendo lidea del metodo semplice, la sua implementazione richiede particolari accorgimenti.
Qui ci limiteremo a fornire le idee di base, rinviando, per una implementazione opportuna alla
bibliograa specializzata (ad esempio funzione eig di Matlab).
Data una matrice A di ordine n, mediante lapplicazione dellalgoritmo di Householder o di
Givens si ottiene la seguente decomposizione
A1 = A = Q1 R1
ove Q1 `e una matrice unitaria e R1 `e una matrice triangolare superiore.
8

sviluppato da J. G. F. Francis, The QR Transformation: A Unitary Analogue to the LR Transformation, Comp.


J.,4, 1961, rappresenta uno sviluppo del metodo LR di Rutishauser (1958), nel quale si utilizza una decomposizione
della matrice in matrici triangolari.
analisi numerica

c
V.
Comincioli

264

Autovalori e autovettori

Si calcola poi
A2 = R1 Q1
Tenendo presente che A2 = R1 Q1 = (QT1 Q1 )(R1 Q1 ) = QT1 A1 Q1 , si ha che A2 `e una matrice
simile alla matrice A1 .
Il procedimento viene quindi iterato, per k 2
for k = 1, 2, . . .
A = QR
A = RQ
end k

Ak = Qk Rk Ak+1 = Rk Qk = QTk Ak Qk

Esempio 5.4 Data la seguente matrice



A=


si ha
A = Q1 R 1 =
da cui

1
2

2
1

0.4472 0.8944
0.8944
0.4472

 

2.2361 1.7889
0 1.3416


2.6000
1.2000
1.2000 0.6000

 

0.9080 0.4191
2.8636 0.8381
= Q2 R2 =
0.4191
0.9080
0 1.0476

A2 = R1 Q1 =

La matrice Ak per k = 11 `e data da



A11 =

3.0000
0.0001
0.0001 1.0000

Come ulteriore esemplicazione, consideriamo lapplicazione del metodo alla matrice (5.26).
Dopo 20 iterazioni si ottiene la seguente matrice

3.798685 0.042360 0.
0.
0.
0.

0.042360 3.250143 0.008426 0.


0.
0.

0.
0.008426 2.445130 0.000364 0.
0.

A20 =

0.
0.
0.000364
1.554958
0.000001
0.

0.
0.
0.
0.000001 0.753020 0.
0.
0.
0.
0.
0.000000 0.198062
i cui autovalori sono dati da


(A20 ) = 3.80193 3.24697 2.44504 1.55495 0.75302 0.19806
Nei due esempi considerati, nei quali la matrice `e simmetrica, si osserva la convergenza del metodo a una matrice diagonale. Tale convergenza pu`
o essere, in eetti, dimostrata in condizioni
abbastanza generali per le quali, comunque, rinviamo alla bibliograa, limitandoci ad osservare
analisi numerica

c
V.
Comincioli

5.4 Problema degli autovalori generalizzato

265

che, utilizzando una opportuna tecnica di traslazione degli autovalori9 , la convergenza `e di ordine
3. Osserviamo, inne, che quando il metodo `e applicato a una matrice non simmetrica, il limite
`e, in generale, una matrice triangolare.

5.4

Problema degli autovalori generalizzato

In numerose applicazioni ha interesse la seguente estensione del problema degli autovalori. Date
due matrici A e B di ordine n, si cercano i valori C per i quali il seguente sistema omogeneo
Ax = Bx

(5.27)

ammette soluzioni x non identicamente nulle10 . Linsieme di tutte le matrici della forma A B,
con C, `e detto un pencil. Gli autovalori del pencil sono, allora, elementi dellinsieme (A, B)
denito da
(A, B) := {z C | det(A zB) = 0}
Se (A, B), un vettore x soluzione del sistema (5.27) `e chiamato un autovettore di A B.
Un aspetto importante da sottolineare `e che il problema generalizzato ha n autovalori se e
solo se il rango della matrice B `e n. In caso contrario, linsieme (A, B) pu`
o essere sia nito che
vuoto o innito, come mostrato nei seguenti esempi




1 2
1 0
A=
; B=
(A, B) = {1}
0 3
0 0




1 2
0 0
; B=
A=
(A, B) = {}
0 3
1 0




1 2
1 0
A=
; B=
(A, B) = {C}
0 0
0 0
Osserviamo, inoltre, che se 0 = (A, B), allora (1/) (B, A). Inoltre, se B `e non singolare,
allora, (A, B) = (B1 A, I).
Lultima osservazione suggerisce un metodo per risolvere il problema generalizzato quando B
`e non singolare.
Si risolve il sistema BC = A, ossia si calcola B1 A;
si utilizza il metodo QR per calcolare gli autovalori di C.
Attraverso opportune esemplicazioni, si pu`o mostrare che tale procedura `e numericamente instabile, e quindi non opportuna, quando la matrice B `e malcondizionata.
Algoritmi stabili per il problema generalizzato degli autovalori si basano sul seguente risultato
che `e una estensione del classico teorema di decomposizione di Schur (cfr. Appendice A).
9

In maniera schematica, si esegue ad ogni passo la decomposizione Ak sk I = Qk Rk e si pone Ak+1 =


a scelte opportunamente ad ogni passo, e vicine al valore di un autovalore della
Rk Qk + sk I, ove sk sono quantit`
matrice A; tenendo presente che la matrice Ak converge ad una matrice triangolare, una possibile scelta consiste
(k)
nellassumere come sk lelemento ann della matrice Ak .
10
Nello studio della stabilit`
a di strutture, la matrice A dipende dalle propriet`
a del materiale ed `e nota come
stiness matrix , mentre la matrice B dipende dal carico ed `e detta mass matrix .
analisi numerica

c
V.
Comincioli

266

Autovalori e autovettori

Proposizione 5.1 Se A e B sono matrici in Cnn , allora esistono due matrici unitarie Q e Z
tali che Q AZ = T e Q BZ = S sono triangolari superiori. Se per un valore di k, tkk e skk sono
ambedue nulli, allora (A, B) = C. Altrimenti,
(A, B) = {tii /sii : sii = 0}
Le matrici Q e Z possono essere costruite mediante una opportuna generalizzazione del metodo
QR, nota come metodo QZ.
Un caso di pencil particolarmente importante corrisponde a A matrice simmetrica e B simmetrica denita positiva (symmetric denite pencil). Questa propriet`
a si mantiene quando si
operano trasformazioni di congruenza, ossia
A B
simmetrica denita

(XT AX) (XT BX)


simmetrica denita

Osserviamo che, al contrario, la matrice B1 A non `e in generale simmetrica.


Il risultato precedente pu`o essere utilizzato nel seguente modo. Si calcola la decomposizione
di Cholesky della matrice B
B = LLT
con L matrice triangolare non singolare. La matrice B1 A `e simile alla matrice G = L1 A(L1 )T .
Infatti
LT (B1 A)(LT )1 = LT (LT )1 L1 A(L1 )T = L1 A(L1 )T = G
Il problema del calcolo degli autovalori della matrice B1 A `e in questo modo ricondotto al calcolo
degli autovalori della matrice simmetrica G. Il calcolo di G pu`
o essere eettuato nel seguente
modo. Si calcola
F = A(L1 )T
risolvendo il sistema triangolare FLT = A e successivamente si ottiene G risolvendo il sistema
LG = F. Dal momento che G `e simmetrica, `e suciente calcolare gli elementi sotto la diagonale
di G e allora basta calcolare in F gli elementi fik , k i. Il calcolo di G da A e B richiede circa
2 3
n moltiplicazioni.
3
Esempio 5.5 Se




A=

229 163
163 116

B=

81 59
59 43

allora A B `e un pencil simmetrico denito, in quanto gli autovalori di B sono dati da [123.9839, 0.0161].
La decomposizione LLT di Cholesky della matrice B fornisce




9.0000
0
0.1111
0
L=
con L1 =
6.5556 0.1571
4.6355 6.3640
Si ha pertanto
1

G=L

1 T

A(L

) =

2.827160 2.688751
2.688751
1.672839

che ha come autovalori [4.999999, 0.499999]. Osserviamo, anche, che posto




3 5
X=
4
7
si ha XT AX = diag(5, 1) e XT BX = diag(1, 2), da cui la conferma del risultato precedente.

analisi numerica

c
V.
Comincioli

5.5 Decomposizione SVD

5.5

267

Decomposizione SVD

Sia A una matrice Rmn . Senza perdita di generalit`a possiamo assumere m n (altrimenti, si
o, allora, essere scritta nella forma
sostituisce A con AT ). La decomposizione SVD pu`



(5.28)
A=U
VT , = diag(1 , . . . , n ), 1 2 n 0
0
ove U `e una matrice ortogonale di ordine m e V una matrice ortogonale di ordine n. Sappiamo
che i valori singolari sono tali che i2 sono gli autovalori della matrice AT A. In teoria, quindi,
essi potrebbero essere calcolati risolvendo il problema degli autovalori per la matrice simmetrica
AT A; ma questa procedura pu`o introdurre una perdita di accuratezza durante il calcolo della
matrice AT A.
Una procedura pi`
u opportuna per calcolare la SVD `e stata introdotta da Golub e Kahan
(1965). In tale procedura, il primo passo consiste nel ridurre, mediante un algoritmo basato sulle
trasformazioni di Householder, la matrice A ad una forma bidiagonale B. Successivamente, si
applica alla matrice tridiagonale BT B un metodo QR con shift.
Pi`
u in dettaglio, mediante il metodo di Householder si calcola una matrice m m di Householder P1 in modo da annullare gli elementi della sottodiagonale della prima colonna di A. La
matrice A = P1 A `e illustrata nel seguente schema, nel quale m = 5, n = 4 e gli elementi che
cambiano sono indicati con il simbolo


x x x x
0
x x x x

P1 A = A = 0
x
x
x
x
A=

0
x x x x
0
x x x x
Si determina, quindi, una matrice di Householder Q1 di ordine n della seguente forma


1 0T
Q1 =

0 Q

in maniera che

A =

x
0
0
0
0

x
x
x
x
x

x
x
x
x
x

x
x
x
x
x

A Q1 = A =

x
0
0
0
0

La matrice A ha quindi nulli gli elementi della prima riga che hanno indice di colonna maggiore
o uguale a 3 e gli elementi della prima colonna che hanno indice di riga maggiore o uguale a 2.
Ripetendo il procedimento per n 2 volte, cio`e annullando alternativamente gli elementi delle
colonne e delle righe, si arriva a una matrice bidiagonale.
 Esercizio 5.1 Esaminare il condizionamento del problema del calcolo degli autovalori della seguente


matrice
A=
analisi numerica

1
0

1
1

c
V.
Comincioli

268

Autovalori e autovettori

calcolando gli autovalori i () e gli autovettori xi () delle seguenti matrici perturbate






1 1
1
1
1 1+
,
,
 1
0 1+
0
1
con  > 0 e piccolo.

 Esercizio 5.2 Si applichi il metodo delle potenze alla seguente matrice

2
1
A=
3
4

1
3
4
3
1
5

1
6 2
5 2 1

con vettore iniziale z0 = [1, 1, 1, 1]T . Spiegare il comportamento nella convergenza del metodo.

 Esercizio 5.3 Trasformare la seguente matrice

4 1 1
0
1
4
0 1

A=
1
0
4 1
0 1 1
4

in forma tridiagonale con i metodi di Lanczos, di Householder e di Givens.

 Esercizio 5.4 Sia


A = QR, Q Q = I, R triangolare superiore, A = RQ
Mostrare che
1. se A `e una matrice di Hessenberg, allora anche A `e una matrice di Hessenberg;
2. se A `e tridiagonale hermitiana, pure A `e tridiagonale hermitiana.

 Esercizio 5.5 Date due matrici di ordine n A e B, considerare il problema degli autovalori (AB)x =
x. Se B `e simmetrica e denita positiva e LLT `e la corrispondente fattorizzazione di Cholesky, mostrare
che le matrici AB e LT AL hanno gli stessi autovalori. Esaminare la relazione tra gli autovettori di AB e
gli autovettori di LT AL.
 Esercizio 5.6 Le matrici come la seguente

x0
X3 = x2
x1

x1
x0
x2

x2
x1
x0

sono dette matrici circolanti e hanno interesse in diverse applicazioni (trasformata di Fourier). Trovare
tutti gli autovalori e i corrispondenti autovettori di X3 . Usare tali risultati per costruire una matrice U
tale che U1 X3 U sia diagonale. Generalizzare i risultati ottenuti al caso di matrici circolanti generali.

analisi numerica

c
V.
Comincioli

5.6 Complementi e Problemi

5.6

269

Complementi e Problemi

Problema 5.1 Considerare il seguente procedimento per il calcolo del polinomio caratteristico di
una matrice A Rnn e, nel caso in cui det(A) = 0, dellinversa A1 .

A1 = A,
r1 = tr A1 ,
B1 = A1 r1 I

r2 = 12 tr A2 ,
B2 = A2 r2 I

A2 = B1 A,

A3 = B2 A,
r3 = 13 tr A3 ,
B3 = A3 r3 I

.
.
.

..
..
..

rn = n1 tr An ,
Bn = An rn I
An = Bn1 A,
Si ha Bn = 0, An = rn I, Bn1 A = rn I e
(1)n [n r1 n1 r2 n2 rn ]
`e il polinomio caratteristico p() di A. Inoltre, quando A `e non singolare si ha
A1 =

1
Bn1
rn

(5.29)

Soluzione. Supponiamo che


p() = det(A I) = (1)n [n a1 n1 a2 n2 an ]
sia il polinomio caratteristico di A. Si vede allora che a1 = i = tr A = tr A1 = r1 .
Procedendo per induzione, supponiamo di avere dimostrato che a1 = r1 , , ak1 = rk1 e verichiamo
che ak = rk .
In eetti si ha: Ak = Bk1 A = (Ak1 rk1 I)A = Ak1 A rk1 A. Sostituendo Ak1 con
Ak2 A rk2 A, eccetera, si ottiene
Ak = Ak r1 Ak1 r2 Ak2 rk1 A
= Ak a1 Ak1 a2 Ak2 ak1 A per ipotesi
Quindi tr Ak = tr Ak a1 tr Ak1 ak1 tr A = Sk a1 Sk1 ak1 S = kak (relazione di Newton,
con Si = i ), da cui rk = ak .
Applicando il teorema di CayleyHamilton si ha Bn = An r1 An1 rn I = 0 da cui
An rn I = 0,

Bn1 A = An = rn I

Se la matrice A `e non singolare si ha det(A) = p(0) = (1)n1 rn = 0 e quindi il risultato (5.29).

Problema 5.2 Analizzare il seguente metodo per il calcolo del polinomio caratteristico di una
matrice A Rnn .
Dato un generico vettore y0 Rn , si considera il seguente sistema lineare, nelle incognite
a1 , a2 , . . . , an
a1 An1 y0 + + an1 Ay0 + an Iy0 = An y0
Il polinomio caratteristico relativo alla matrice A `e allora dato da
p() = n + a1 n1 + + an1 + an = 0
analisi numerica

c
V.
Comincioli

270

Autovalori e autovettori

Soluzione. Il metodo proposto, noto come metodo di Krylov , `e basato sul teorema di CayleyHamilton.
Ricordiamo che tale teorema stabilisce che la matrice denita da
An + a1 An1 + + an1 A + an I
`e la matrice nulla. Per ottenere il risultato richiesto basta allora moltiplicare la precedente matrice per il
vettore y0 .
Consideriamo, come applicazione del metodo, il calcolo del polinomio caratteristico della seguente
matrice

1
2
0 10 0
4
1
1 1 0

1
3 9 7
A= 0

3 1 1 2 0
0
1
0 0 1
Si ottengono i seguenti vettori

1
1
0
4

y0 = 0 , y1 = Ay0 =
0 , y2 = A y0
0
3
0
0

43
1231
189
213

y3 = A3 y0 =
115 , y4 = A y0 = 1312
81
271
7
196

39
3
31
1
4

, y5 = A5 y0 =

3515
6178
3082
1626
409

Si considera quindi la matrice C = [y4 , y3 , y2 , y1 , y0 ] e il vettore b = y5 . Il numero di condizionamento


della matrice `e dato da
2 (C) = 1.39 104
Tale numero dipende naturalmente anche dal particolare y0 scelto. Partendo ad esempio da y0 = [1, 1, 1, 1, 1]T
si ottiene, come numero di condizionamento, della matrice il valore 2.360 103.
La soluzione del sistema
Ca = b
fornisce i coecienti del polinomio caratteristico. Si ottengono i seguenti valori
a = [6., 19., 225., 496., 813.]
Il metodo di Krylov, pur essendo concettualmente semplice, pu`o presentare dal punto di vista numerico
alcuni inconvenienti. Come si vede dalla valutazione del numero di condizionamento, la matrice dei coefcienti pu`
o essere malcondizionata. La ragione `e nel fatto che i vettori An y0 tendono ad essere, per n
crescente, numericamente linearmente dipendenti. Daltra parte, per particolari scelte di y0 la matrice pu`o
essere singolare. Consideriamo, come semplice esempio di una situazione di questo tipo la matrice


1 1
A=
0 2
Se poniamo y0 = [, ]T , si ottiene y1 = Ay0 = [ + , 2]T e quindi la matrice dei coecienti [Ay0 , Iy0 ]
`e data da


+
2

analisi numerica

c
V.
Comincioli

5.6 Complementi e Problemi

271

Il determinante si annulla quando: 2 = 0, cio`e per = 0 e = . Per le scelte corrispondenti


u in generale, i vettori {y0 , Ay0 , . . . , An1 y0 }
di y0 il metodo diventa inapplicabile. Osserviamo che, pi`
risultano linearmente dipendenti quando y0 `e combinazione lineare di al pi`
u (n 1) autovettori di A, cio`e
y0 = c2 u2 + c3 u3 + + cn un
ove uk `e un autovettore corrispondente allautovalore k .
Un altro possibile inconveniente numerico del metodo di Krylov deriva dal fatto che i coecienti ai ,
calcolati risolvendo il sistema lineare, sono, in generale, aetti da errori di arrotondamento. Gli eetti di
tali errori possono essere signicativi, dal momento che, come abbiamo visto, il sistema pu`o essere malcondizionato. Di conseguenza il calcolo degli autovalori mediante la risoluzione dellequazione caratteristica
pu`
o portare a risultati inaccettabili.

Problema 5.3 Data la seguente matrice circolante

a0 a1 a2
a3 a0 a1
A=
a2 a3 a0
a1 a2 a3

a3
a2

a1
a0

mostrare che esiste una matrice B tale che


A = a0 I + a1 B + a2 B2 + a3 B3
A partire quindi dagli autovalori e autovettori di B, determinare gli autovalori e gli autovettori
di A.
Soluzione. Osserviamo che si pu`o scrivere

a0
a3
A=
a2
a1

a1
a0
a3
a2

a2
a1
a0
a3

a3

a2
= a0 I + a1

a1
a0

0 0
0 0
a2
1 0
0 1

Il risultato richiesto si ottiene allora ponendo

0
0

B=
0
1

1
0
0
0

0
1
0
0

0
0
0
1

1
0
0
0

1
0
0
0

0
1
0
0

0
0
+
1
0

0
1

+ a3
0

0
0
1
0
0

0
0
1
0

0
0
0
1

1
0

0
0

0
0

1
0

Se x `e un autovettore di B corrispondente a un autovettore B di B, e quindi Bx = B x, segue che


B2 x = 2B x,
da cui

B3 x = 3B x

Ax = (a0 I + a1 B + a2 B2 + a3 B3 )x = (a0 + a1 B + a2 2B + a3 3B )x

e quindi x `e un autovettore di A che corrisponde allautovalore A = a0 + a1 B + a2 2B + a3 3B . Daltra


parte si vede facilmente che gli autovalori di B sono soluzioni di 4 1 = 0, cio`e 1, i, 1 i. In denitiva
si hanno per A i seguenti autovalori
a0 +a1 +a2 +a3 ; a0 +ia1 a2 ia3 ; a0 a1 +a2 a3 ; a0 ia1 a2 +ia3
analisi numerica

c
V.
Comincioli

272

Autovalori e autovettori

Problema 5.4 Mostrare, mediante esempi, che se i e i sono gli autovalori rispettivamente
della matrice A e della matrice B non `e in generale vero che gli autovalori di AB e di A + B
sono i i e i + i , indipendentemente dallordine assunto. Dare condizioni su A e su B anche
questo sia vero.
Soluzione. Ad esempio le matrici

A=

0
0

1
0


;

B=

0
1

0
0

hanno entrambe gli autovalori 0, 0, ma la somma A+B ha gli autovalori 1 e il prodotto AB gli autovalori
1, 0.
Una condizione suciente `e che B sia un polinomio nella matrice A. Ricordiamo, infatti, che gli
autovalori della matrice p(A), con p polinomio generico assegnato, sono dati da p(), se sono gli autovalori
di A.

Problema 5.5 Date due matrici A e B quadrate dello stesso ordine, dimostrare che le due
matrici AB e BA hanno lo stesso polinomio caratteristico.
Soluzione. Nel caso in cui una delle due matrici `e non singolare, ad esempio A, si ha che le due matrici
AB e BA sono simili, dal momento che
BA = A1 (AB)A
e quindi hanno lo stesso polinomio caratteristico. In caso contrario, si pu`
o utilizzare un ragionamento di
continuit`a. Infatti, supposta A singolare, esiste un  > 0 tale che le matrici (A + I) sono invertibili per
0 < || <
. Per quanto ora visto, si ha che le matrici (A + I)B e B(A + I) hanno lo stesso polinomio
caratteristico. Essendo i coecienti del polinomio caratteristico funzioni continue di , si ha
pAB () = lim p(A+I)B () = lim pB(A+I) () = pBA (), C
0

0

Problema 5.6 Analizzare il problema di autovalori generalizzato:


Ax = Bx
quando A, B sono matrici triangolari di ordine 2.
Soluzione. Posto


A=

a11
0

a12
a22


,

B=

b11
0

b12
b22

il problema di autovalori generalizzato ha soluzioni per




a11 b11 a12 b12
det
= (a11 b11 ) (a22 b22 ) = 0
0
a22 b22
Pertanto, se b11 e b22 sono ambedue dierenti da zero, cio`e la matrice B `e non singolare, allora esistono
due autovalori, dati rispettivamente da 1 = a11 /b11 e 2 = a22 /b22 .
Consideriamo ora i casi in cui uno degli elementi diagonali della matrice B siano nulli.
(a) Se a11 = b11 = 0, allora det(A B) = 0 per ogni . Quindi ogni `e autovalore. Lo stesso
risultato si ha quando a22 = b22 = 0.
analisi numerica

c
V.
Comincioli

5.6 Complementi e Problemi

273

(b) Se b11 = b22 = 0, allora det(A B) = a11 a22 , che non `e mai nullo se ambedue gli elementi
a11 , a22 sono dierenti da zero.
(c) Se b11 = 0, allora det(A B) = a11 (a22 b22 ), che si annulla solo per = a22 /b22 . Se b22 = 0,
ma sia a22 che b11 sono dierenti da zero, allora vi `e un unico autovalore.
Sottolineiamo che in tutti i casi considerati la matrice B `e singolare. In caso contrario il problema sarebbe
equivalente al problema di autovalori B1 Ax x = 0 e vi sarebbero in C due autovalori.

Problema 5.7 Date due matrici quadrate A e B, con B matrice simmetrica e denita positiva,
considerare il problema di autovalori
(AB)x = x
Soluzione. Sia LLT la fattorizzazione di Cholesky della matrice B. Mostriamo allora che gli autovalori

della matrice AB sono gli stessi della matrice LT AL, che risulta simmetrica nel caso in cui anche A sia
simmetrica. Si ha, infatti
LT (AB)LT = LT ALLT LT = LT AL

` suciente allora ricordare che le trasformazioni per similitudine lasciano invariato lo spettro della matrice.
E
Se y `e un autovettore della matrice LT AL, allora il corrispondente autovettore di AB `e dato da
x = LT y.

Problema 5.8 Sia A una matrice hermitiana denita positiva con autovalori 1 2 . . . n >
0. Mostrare che per ogni vettore x = 0 `e vericata la seguente disuguaglianza, nota come
disuguaglianza di Kantorovich

2
(2 (A))1/2 + (2 (A))1/2
(Ax, x)(A1 x, x)

1
4
x42
ove 2 (A) `e il numero di condizionamento di A rispetto alla norma spettrale, e quindi 2 (A) =
1 /n .
Soluzione. Poiche la matrice A `e hermitiana, esiste una matrice unitaria U tale che U AU = D, ove
D `e la matrice diagonale formata dagli autovalori i di A. Poniamo y = U x, per x = 0, e quindi y = 0,
essendo x2 = y2 .
Abbiamo
n

(Ax, x) = (UDU x, x) = (DU x, U x) = (Dy, y) =
i |yi |2
i=1

e
(A1 x, x) = (D1 y, y) =

n

|yi |2
i=1

Pertanto

Posto i = |yi |2 /(

(Ax, x)(A1 x, x)
=
(x, x)2
n
j=1

|yj |2 ), si ha i 0 e

n
i=1

n
i=1

i |yi |2
 n

n
2
i=1 |yi | /i
2
2
i=1 |yi |

i = 1. Con queste notazioni si ha

n
n

(Ax, x)(A1 x, x)
i
=

i
i
2
(x, x)

i=1
i=1 i

analisi numerica

c
V.
Comincioli

274

Autovalori e autovettori

Siano {Mi } i punti di coordinate (i , 1/i ) per 1 i n. Tali punti quindi sono su un ramo di iperbole
equilatera.
Consideriamo ora il punto
n

M=
i Mi
i=1

che risulta una combinazione lineare convessa dei punti Mi . La sua ordinata ni=1 i /i `e minore di quella
del punto M
= n i i situata sul segmento di retta che congiunge M1 a Mn ed `e
di ascissa
y()
i=1

maggiore di 1/. Quindi


n
n

%
$
1
i

y()
=
n + 1

i i

n 1

i=1
i=1 i

Ora il valore
max

n
1

n + 1 )
(
n 1

= (n + 1 )/2 e vale (n + 1 )2 /(4n 1 ). Si `e pertanto dimostrato che


`e ottenuto per
1
(Ax, x)(A1 x, x)

1
x42
4

Problema 5.9 Data la matrice

0

1
+
n

n
1

2

2
1
(2 (A))1/2 + (2 (A))1/2
4

4 1 2
A= 1 3 1
1 0 10

localizzarne gli autovalori mediante il teorema di Gershgorin.


Soluzione. Consideriamo nel piano complesso C i seguenti cerchi (cfr. Figura 5.4)
C1 := {z C | |z 4| 3};
C3 := {z C | |z 10| 1}

C2 := {z C | |z 3| 2}

Gli autovalori di A appartengono alla unione 3i=1 Ci . Poiche C1 e C2 sono disgiunti da C3 , vi sono
esattamente due autovalori appartenenti allunione di C1 , C2 e uno a C3 . Inoltre, dal momento che (A) =
max1i3 |i |, si ha 9 (A) 11. In eetti gli autovalori son dati da:
1 = 4.2895;

2 = 2.3664;

3 = 10.3441

Problema 5.10 Studiare il condizionamento del problema del calcolo degli autovettori della seguente matrice


1 +  cos(2/)  sin(2/)
A() =
 sin(2/) 1  cos(2/)
per  > 0 e tendente a zero.
analisi numerica

c
V.
Comincioli

5.7 Esperienze in Matlab

275

-2

-4

-6
0

10

12

Figura 5.4 Cerchi di Gershgorin e rappresentazione degli autovalori (x).


Soluzione. Si verica direttamente che gli autovalori della matrice A() sono 1,2 = 1 e gli autovettori
corrispondenti, normalizzati a 1, sono rispettivamente
$
1%
1
p(1) () = cos , sin ;



$
1%
1
p(2) () = sin , cos ;



Esaminiamo ora il limite degli autovettori p(i) () per  0, tenendo conto che
lim A() = I

0

Ora per  = 2/((1 + 2k)), k 1 la prima componente di p(1) () vale zero mentre per  = 1/(2k) vale 1.
La successione degli autovettori p(1) () non ha pertanto limite. Analoga osservazione per p(2) ().
La conclusione `e che per  piccolo il problema del calcolo degli autovettori della matrice A() `e
malcondizionato.

5.7

Esperienze in Matlab

5.7.1

Esempio di matrice con autovalori malcondizionati

function
%FRANK
%
%
%
%
%
%
%
%
%

F = frank(n, k)
Frank matrix---ill conditioned eigenvalues.
F = FRANK(N, K) is the Frank matrix of order N. It is upper
Hessenberg with determinant 1. K = 0 is the default; if K = 1 the
elements are reflected about the anti-diagonal (1,N)--(N,1).
F has all positive eigenvalues and they occur in reciprocal pairs
(so that 1 is an eigenvalue if N is odd).
The eigenvalues of F may be obtained in terms of the zeros of the
Hermite polynomials.
The FLOOR(N/2) smallest eigenvalues of F are ill conditioned,
the more so for bigger N.

DET(FRANK(N)) comes out far from 1 for large N---see Frank (1958)

analisi numerica

c
V.
Comincioli

276

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

Autovalori e autovettori

and Wilkinson (1960) for discussions.


This version incorporates improvements suggested by W. Kahan.
References:
W.L. Frank, Computing eigenvalues of complex matrices by determinant
evaluation and by methods of Danilewski and Wielandt, J. Soc.
Indust. Appl. Math., 6 (1958), pp. 378-392 (see pp. 385, 388).
G.H. Golub and J.H. Wilkinson, Ill-conditioned eigensystems and the
computation of the Jordan canonical form, SIAM Review, 18 (1976),
pp. 578-619 (Section 13).
H. Rutishauser, On test matrices, Programmation en Mathematiques
Numeriques, Editions Centre Nat. Recherche Sci., Paris, 165,
1966, pp. 349-365. Section 9.
J.H. Wilkinson, Error analysis of floating-point computation,
Numer. Math., 2 (1960), pp. 319-340 (Section 8).
J.H. Wilkinson, The Algebraic Eigenvalue Problem, Oxford University
Press, 1965 (pp. 92-93).
The next two references give details of the eigensystem, as does
Rutishauser (see above).
P.J. Eberlein, A note on the matrices denoted by B_n, SIAM J. Appl.
Math., 20 (1971), pp. 87-92.
J.M. Varah, A generalization of the Frank matrix, SIAM J. Sci. Stat.
Comput., 7 (1986), pp. 835-839.

if nargin == 1, k = 0; end
p = n:-1:1;
F = triu( p( ones(n,1), :) - diag( ones(n-1,1), -1), -1 );
if k ~= 0
F = F(p,p);
end
%%%%% calcolare condeig(F)

5.7.2

Esempio di Wilkinson

1 1
1 2 1

1 3

Wn =
..

..
..

.
.

1 n1 1
1
n

n=25; on=ones(n-1,1);
A=diag(on,-1)+diag(1:n)+diag(on,1);
condeig(A) % numeri di condizionamento dei singoli autovalori;
%
trattandosi di una matrice simmetrica sono tutti uguali a 1
lam=eig(A);lam0=roots(poly(A));
[sort(lam) sort(lam0)]
0.2538
0.2538
1.7893
1.7893
analisi numerica

c
V.
Comincioli

5.7 Esperienze in Matlab

2.9611
3.9960
4.9998
6.0000
7.0000
8.0000
9.0000
10.0000
11.0000
12.0000
13.0000
14.0000
15.0000
16.0000
17.0000
18.0000
19.0000
20.0000
21.0002
22.0040
23.0389
24.2107
25.7462

2.9611
3.9960
4.9998
6.0000
6.9992
8.0173
8.8615
10.0632
10.0632
11.7836
11.7836
13.8498
13.8498
16.2448
16.2448
18.8233
18.8233
21.2999
21.2999
23.3489
23.3489
24.5680
25.7268

277

+
+
+
+
+
+
+

0.7519i
0.7519i
1.7022i
1.7022i
2.5227i
2.5227i
3.0285i
3.0285i
3.0247i
3.0247i
2.4125i
2.4125i
1.2901i
1.2901i

Osserviamo che la funzione roots `e basata sulla costruzione della matrice companion corrispondente al polinomio caratteristico della matrice A e quindi nellapplicazione di eig a tale
matrice. Pertanto, la dierenza nei risultati ottenuti `e dovuta unicamente alleetto degli errori
di arrotondamento.

5.7.3

Metodo QR

%%%%%provaqr dimostrazione del metodo qr per autovalori


a=2*ones(n,1);
b=-ones(n,1);
c=b;
A=diag(b(2:n),-1)+diag(a)+diag(c(1:n-1),1)
sum(abs(diag(A,-1)))
for k=1:20
[Q,R]=qr(A);
A=R*Q;
end
sum(abs(diag(A,-1)))
[diag(A), eig(A)]

The concrete problems form in their variety


the core and soul of mathematics.

H. Weyl

analisi numerica

c
V.
Comincioli

Prediction is dicult,
especially of the future.

Niels Bohr

CAPITOLO

6
Approssimazione di funzioni

Il problema dellapprossimazione di funzioni, di importanza fondamentale nella matematica applicata, consiste nella sostituzione di una funzione complicata con una pi`
u semplice, scelta nellambito
di una classe ssata di funzioni a dimensione nita. Per chiarire il senso di tale aermazione,
esaminiamo due situazioni in cui si pu`
o presentare la necessit`a di unoperazione di questo tipo.
Della funzione da approssimare f (x) non `e nota una espressione analitica, ma di essa si conoscono alcuni valori yi in corrispondenza ad un insieme di punti xi , i = 0, . . . , n, e si vuole avere
` il caso di una funzione assegnata
indicazioni sul comportamento della funzione in altri punti. E
sotto forma di tabella nita, corrispondente, ad esempio, ad un insieme di dati sperimentali .
In questo caso approssimare la funzione f (x) signica fornire un modello rappresentativo del
fenomeno che ha dato origine ai dati sperimentali. In tale senso, quello che vedremo in questo
capitolo costituisce una introduzione alla modellizzazione matematica.
La funzione `e nota in forma analitica, ma la sua sostituzione con funzioni pi`
u semplici `e richiesta
per il suo calcolo numerico su calcolatore, oppure per rendere pi`
u agevoli certe operazioni
funzionali, quali ad esempio lintegrazione o la derivazione.
Naturalmente, il problema pu`o essere arontato con dierenti tecniche, che per essere adeguate
devono tenere conto della situazione specica. Importante in questo senso `e la scelta della distanza
con la quale si vuole approssimare e che misura lerrore. Ad esempio, per approssimare dati
sperimentali aetti da variabilit`
a statistica, pu`o essere opportuna una distanza di tipo minimi
quadrati , denita dalla somma dei quadrati degli errori nei singoli nodi xi ; se invece il numero
dei dati `e piccolo e i dati non sono aetti da errori casuali, pu`
o essere adeguata una operazione
di interpolazione, basata sulla richiesta che la funzione approssimante passi esattamente per i
punti (xi , yi ) assegnati. Inne, quando si approssima la funzione f (x) allo scopo di avere una
procedura di calcolo da utilizzare su calcolatore, si richiede che lapprossimazione presenti un
errore distribuito in maniera uniforme su un determinato intervallo; in questo caso una distanza
appropriata `e rappresentata dalla cosiddetta norma del massimo, denita come il massimo del
modulo della dierenza tra la funzione e la sua approssimante per tutti i punti dellintervallo.
In questo capitolo esamineremo dapprima la tecnica dellinterpolazione (o collocazione), che
costituisce, in particolare, la base di partenza per la costruzione di diversi metodi numerici per
278

6.1 Interpolazione

279

il calcolo di integrali deniti e per lapprossimazione della soluzione di equazioni dierenziali.


Successivamente, daremo una introduzione alle idee di base nellapprossimazione polinomiale nel
senso dei minimi quadrati e nella norma del massimo (nota anche come miglior approssimazione).

6.1

Interpolazione

In maniera schematica, la procedura di interpolazione1 `e denita nel modo seguente. Dati i valori
fi = f (xi ) di una funzione f (x) nei punti x1 , x2 , . . . , xn+1 dellasse reale, si cerca una funzione
P (x) tale che
P (xi ) = fi , i = 1, 2, . . . , n + 1
Si dice allora che la funzione P (x) interpola f (x) nei punti (o nodi ) xi , i = 1, . . . , n + 1. Quando
la funzione di interpolazione P (x) `e utilizzata per stimare il valore della funzione f (x) al di fuori
dellintervallo formato dai punti xi , si parla solitamente di una operazione di estrapolazione.
Come funzioni interpolanti P (x) possono essere utilizzati dierenti tipi di funzioni; ad esempio,
i polinomi algebrici, i polinomi trigonometrici, le funzioni razionali, ecc. Nel seguito, ci limiteremo,
per brevit`
a, alla considerazione dei polinomi algebrici e alle funzioni che sono costruite a partire
dai polinomi, in particolare le funzioni polinomiali a tratti, o funzioni spline.
In eetti, linsieme dei polinomi algebrici costituisce, per ragioni sia storiche che pratiche,
la pi`
u importante classe di funzioni interpolanti. Essi hanno in particolare il vantaggio di essere
facilmente calcolabili; inoltre, per essi possono essere eseguite agevolmente le operazioni di somma,
moltiplicazione, integrazione e derivazione.
Naturalmente, le ragioni precedenti non sono sucienti per far ritenere i polinomi una buona
classe di funzioni approssimanti. A tale scopo occorre anche che i polinomi siano in grado di
descrivere adeguatamente funzioni anche non troppo regolari. Una risposta positiva a questo
requisito `e fornita dal seguente importante risultato, che in sostanza assicura la possibilit`a di
approssimare mediante un polinomio di grado conveniente una qualsiasi funzione continua f (x)
su un intervallo limitato e chiuso.
Teorema 6.1 (Weierstrass) Se f (x) `e una generica funzione continua sullintervallo limitato
e chiuso [a, b], per ogni  > 0 esiste un polinomio Pn (x) di grado n(), cio`e di grado dipendente
da , tale che
max |f (x) Pn (x)| < 
x[a, b]

Osserviamo, comunque, che il teorema di Weierstrass2 assicura lesistenza del polinomio appros1

Indicata in forma espressiva come la scienza of reading between the lines of a mathematical table da G. Robinson,
che insieme a E. Whittaker pubblic`
o nel 1924 quello che pu`
o essere considerato il primo testo dellanalisi numerica
moderna.
2

Karl Weierstrass (1815-1897) diede una dimostrazione non costruttiva del teorema nel lavoro Uber
die analytische Darstellbarkeit sogenannter willk
urlicher Funktionen reeller Argumente (Sitzg. ber. Kgl. Preuss. Akad. d.
Wiss. Berlin, 1885). Weierstrass `e considerato uno dei fondatori della moderna teoria delle funzioni; in particolare,
diede notevole impulso allo studio delle serie di potenze e alle applicazioni della matematica alla risoluzione di
problemi in sica e astronomia. Altre interessanti dimostrazioni del teorema di approssimazione furono date da
E. Landau (1908) e H. Lebesgue (1908); ricordiamo anche una sua generalizzazione agli spazi topologici dovuta a
M. H. Stone (1948). Una approssimazione costruttiva venne data, nellambito della teoria della probabilit`
a, da S.
H. Bernstein (Demonstration du theor`eme de Weierstrass fondee sur le calcul des probabilites, 1912) utilizzando la
particolare successione di polinomi (detti poi polinomi di Bernstein) che analizzeremo nel seguito del capitolo (cfr.
paragrafo 6.1.9).
analisi numerica

c
V.
Comincioli

280

Approssimazione di funzioni

simante, ma non implica che tale polinomio sia un particolare polinomio di interpolazione. In
sostanza, mentre `e confortante sapere che `e possibile approssimare una funzione continua f (x)
con una ssata accuratezza mediante un polinomio, non `e garantito che tale polinomio possa
essere ottenuto con un algoritmo conveniente.

6.1.1

Interpolazione mediante polinomi

Consideriamo il seguente esempio introduttivo.


Esempio 6.1 Determinare il polinomio di secondo grado che interpola i seguenti valori
xi
fi

0.2
0.3456

0.8
0.5867

1.2
0.2151

Se scriviamo il polinomio nella seguente forma


P (x) = c0 + c1 (x 0.2) + c2 (x 0.2)(x 0.8)
le condizioni P (xi ) = fi forniscono il sistema lineare
c0
= 0.3456
c0 +c1 (0.8 0.2)
= 0.5867
c0 +c1 (1.2 0.2)+c2 (1.2 0.2)(1.2 0.8) = 0.2151
Trattandosi di un sistema di tipo triangolare, la soluzione `e calcolata con una semplice sostituzione in
avanti e si ottengono i valori
c0 = 0.3456;

c1 = 0.4018;

c2 = 1.3308

da cui il polinomio (cfr. Figura 6.1)


P (x) = 0.3456 + 0.4018(x 0.2) 1.3308(x 0.2)(x 0.8)
Osserviamo che i primi due termini del polinomio P (x) sono lequazione della retta che interpola f nei punti
x = 0.2 e x = 0.8. Come si vede, il polinomio interpolatore di secondo grado `e ottenuto semplicemente
aggiungendo al polinomio interpolatore di primo grado un opportuno polinomio di secondo grado.

Il risultato di base per linterpolazione polinomiale `e il seguente teorema.


Teorema 6.2 (Esistenza e unicit`
a) Siano x1 , x2 , . . . , xn+1 n + 1 punti distinti arbitrari. Per ogni
insieme di valori f1 , f2 , . . . , fn+1 esiste uno ed un solo polinomio Pn (x) di grado n tale che
Pn (xi ) = fi ,

i = 1, 2, . . . , n + 1

Dimostrazione. Incominciamo a dimostrare lunicit`a . Ragionando per assurdo, supponiamo che


esistano due dierenti polinomi Pn (x) e Qn (x) di grado n che vericano le condizioni
Pn (xi ) = fi
Qn (xi ) = fi

i = 1, 2, . . . , n + 1

Questo signica che il polinomio Pn (x) Qn (x), di grado minore o uguale a n, ha n + 1 zeri distinti,
corrispondenti ai nodi x1 , x2 , . . . , xn+1 . In base al teorema fondamentale dellalgebra, tale polinomio deve
essere identicamente nullo, cio`e Pn (x) Qn (x).
analisi numerica

c
V.
Comincioli

6.1 Interpolazione

281

Figura 6.1 Con linea continua `e rappresentato il polinomio interpolatore di secondo grado relativo ai punti
(0.2, 0.3456), (0.8, 0.5867), (1.2, 0.2151) e con linea tratteggiata il polinomio interpolatore di primo grado
relativo ai punti (0.2, 0.3456), (0.8, 0.5867).
Lesistenza pu`
o essere dimostrata in dierenti maniere. Ci limitiamo a segnalare le due seguenti,
di interesse costruttivo, cio`e algoritmico (cfr. successivo paragrafo 6.1.3). Riprendendo lidea suggerita
dallEsempio 6.1, si pu`
o procedere per induzione su n nel modo seguente. Per n = 1 si verica direttamente
che il polinomio di interpolazione `e dato da
P1 (x) = f1 +

f2 f1
(x x1 )
x2 x1

Assumendo, ora, che Pk1 (x) sia un polinomio di grado k 1 tale che
Pk1 (xi ) = fi ,

i = 1, 2, . . . , k

mostriamo che esiste un polinomio Pk , di grado k interpolante f nei nodi x1 , x2 , . . . , xk+1 . Poniamo
Pk (x) = Pk1 (x) + c(x x1 )(x x2 ) (x xk )
Il polinomio Pk (x) ha grado k. Inoltre
Pk (xi ) = fi ,

i = 1, 2, . . . , k

o determinare c in maniera che


Poiche i punti x1 , x2 , . . . , xk+1 sono distinti, si pu`
Pk (xk+1 ) = fk+1 c =

fk+1 Pk1 (xk+1 )


(xk+1 x1 )(xk+1 x2 ) (xk+1 xk )

Allora, Pk `e il polinomio di grado k che interpola f in x1 , x2 , . . . , xk+1 .


Un secondo modo di dimostrare lesistenza consiste nel fornire una rappresentazione esplicita del
polinomio di interpolazione. A tale scopo consideriamo i seguenti polinomi di grado n
Li (x) =

(x x1 ) (x xi1 )(x xi+1 ) (x xn+1 )


(xi x1 ) (xi xi1 )(xi xi+1 ) (xi xn+1 )

(6.1)

per i = 1, 2, . . . , n + 1. Tali polinomi sono i particolari polinomi di interpolazione che assumono il valore
zero nei punti xj , con j = i, e il valore 1 nel punto xi (per un esempio si veda Figura 6.2). Si verica, allora,
analisi numerica

c
V.
Comincioli

282

Approssimazione di funzioni

facilmente la seguente rappresentazione del polinomio di interpolazione Pn (x), detta rappresentazione di


Lagrange 3
n+1

Pn (x) =
fi Li (x)
(6.2)
i=1

Figura 6.2 Polinomi di Lagrange Li (x) relativi a 5 punti equidistanti sullintervallo [0, 1].
function v = polyinterp(x,y,u)
%POLYINTERP interpolazione polinomiale
%
v = POLYINTERP(x,y,u) calcola v(j) = P(u(j)) ove P `
e
%
polinomio di grado d = length(x)-1 con P(x(i)) = y(i).
% Utilizza la rappresentazione di Lagrange
n = length(x);
v = zeros(size(u));
for k = 1:n
w = ones(size(u));
for j = [1:k-1 k+1:n]
w = (u-x(j))./(x(k)-x(j)).*w;
end
v = v + w*y(k);
end

6.1.2

Errore di troncamento nella interpolazione

Nei nodi xi il polinomio di interpolazione assume, per denizione, i valori fi e pertanto in tali
punti lerrore `e nullo, almeno se si prescinde dagli errori di arrotondamento. Lo studio dellerrore ha quindi senso per valori di x = xi e quando fi = f (xi ), con f (x) funzione assegnata su
3

La formula di rappresentazione (6.2) appare, in eetti, in un lavoro di Lagrange del 1795, ma era stata precedentemente utilizzata da Eulero (1755) e Waring (1779). Lo studio delle formule di interpolazione prende soa di costruire tabelle di valori delle funzioni
stanzialmente avvio a partire dal 17 secolo, a seguito della necessit`
trigonometriche e dei logaritmi. Lo sviluppo della teoria `e legata, in particolare, ai nomi di T. Harriot (1611), H.
Briggs (1617), I. Newton (1642-1727), J. Gregory (1638-1675), B. Taylor (1685-1731), C. Maclaurin (1698-1746), J.
Stirling (1692-1770) e K. F. Gauss (1777-1855).
analisi numerica

c
V.
Comincioli

6.1 Interpolazione

283

un determinato intervallo. Si chiama allora errore di troncamento di interpolazione la quantit`


a
E(x) := f (x) Pn (x), e una sua stima `e importante per un corretto utilizzo pratico del polinomio di interpolazione. Si intuisce, comunque, che una tale stima non `e ottenibile con la sola
conoscenza della funzione f (x) nei nodi xi ; ad esempio, per una funzione discontinua lerrore di
troncamento pu`
o essere arbitrariamente grande. In eetti, la regolarit`a della funzione f (x) pu`
o
essere opportunamente utilizzata per fornire una rappresentazione dellerrore, dalla quale, almeno
in teoria, `e possibile ricavare una maggiorazione dellerrore e una indicazione sul suo comportamento al variare del numero e della collocazione dei nodi xi . Importante in questo senso `e il
seguente risultato che ricordiamo senza dimostrazione, che `e comunque una semplice conseguenza
del Teorema di Rolle.
Teorema 6.3 (Rappresentazione dellerrore di interpolazione) Sia f (x) una funzione con n + 1 derivate continue in un intervallo I = [a, b] contenente i punti xi , i = 1, 2, . . . , n + 1. Se Pn (x) `e il
polinomio di interpolazione della funzione f (x) nei punti {xi }, allora per ogni x [a, b] esiste un
punto = (x) (a, b), tale che
E(x) := f (x) P (x) =

f (n+1) ()
(x x1 )(x x2 ) (x xn+1 )
(n + 1)!

(6.3)

La formula (6.3) mette in evidenza il fatto importante che lerrore di interpolazione dipende sia dal
comportamento della derivata di ordine n+1 della funzione interpolata, sia dalla scelta, attraverso
il polinomio (x) := (x x1 )(x x2 ) (x xn+1 ), dei nodi xi e del punto di valutazione x del
polinomio interpolatore. Illustreremo il risultato mediante un esempio.

Figura 6.3 Illustrazione della dipendenza dalla derivata seconda dellerrore di troncamento nella
interpolazione lineare.

Esempio 6.2 Se f (x) `e due volte continuamente derivabile ed `e approssimata per x1 x x2 = x1 + h


mediante una interpolazione lineare nei punti (x1 , f1 ) e (x2 , f2 ), dalla rappresentazione (6.3) si ha
|f (x)P1 (x)| =
analisi numerica

f  ((x))
f  ((x1 +sh)) 2
(xx1 )(xx2 ) |f (x)P1 (x)| =
h s(s1)
2!
2!

(6.4)

c
V.
Comincioli

284

Approssimazione di funzioni

ove si `e posto x = x1 + sh. Tenendo conto che max0s1 |s (s 1)| = 14 , si ha quindi


|f (x) P1 (x)|

h2
8

max

x1 xx1 +h

|f  (x)|

(6.5)

La Figura 6.3 evidenzia in maniera graca limportanza per lerrore di troncamento del comportamento
della derivata seconda.

Come esemplicazione, consideriamo la funzione f (x); = x, per x > 0. Utilizziamo il polinomio di


interpolazione di primo grado corrispondente ai punti (0.25, 0.5), (0.49, 0.7) per calcolare 0.35. Dalla
rappresentazione di Lagrange si ha
P1 (x) = 0.5

x x2
x x1
0.5
0.7
(x x2 ) +
(x x1 )
+ 0.7
=
x1 x2
x2 x1
0.24
0.24

da cui P1 ( 0.35) = 0.583,


con un errore pari a 0.008274644. Tenendo conto che il modulo della derivata

x3 ) assume il valore massimo nel primo estremo x1 , la stima (6.5) fornisce la
seconda f (x) = 1/(4

2
3
limitazione h /(16 0.25 ) = 0.0288.

6.1.3

Costruzione del polinomio di interpolazione

Nel Teorema 6.2 sono stati introdotti due dierenti modi per costruire il polinomio di interpolazione relativo ai nodi x1 , x2 , . . . , xn+1 . Analizzeremo, ora, tali procedure dal punto di vista
computazionale.
Incominciamo a ricordare che la rappresentazione di Lagrange (6.2) `e la base per la costruzione di formule di quadratura e di schemi alle dierenze per lapprossimazione della soluzione
di equazioni dierenziali ed ha quindi un indubbio interesse teorico. Dal punto di vista pratico,
ossia per il calcolo eettivo del polinomio di interpolazione, essa pu`
o risultare vantaggiosa quando
si considera la costruzione di polinomi di interpolazione relativi allo stesso insieme di nodi xi e a
dierenti dati fi . In tale caso, infatti, i polinomi Li (x), che dipendono solo dai punti xi , possono
essere calcolati a priori una sola volta. Al contrario, quando si costruiscono polinomi di interpolazione di grado crescente, cio`e si aggiungono ulteriori punti per migliorare la precisione, i polinomi
Li (x) devono essere successivamente ricostruiti. In tali situazioni risultono allora pi`
u convenienti
altre procedure. In particolare, esamineremo un algoritmo basato sulla rappresentazione di Newton, e utile per fornire i coecienti del polinomio, e lalgoritmo di Neville, che fornisce il valore
del polinomio in un punto particolare.
A scopo didattico esaminiamo dapprima una costruzione pi`
u diretta, ma in generale meno
conveniente. Essa consiste, come illustrato nelle successive implementazioni, nella risoluzione del
sistema lineare aventi come incognite i coecienti del polinomio interpolatore.
%
%
%
%
%
%
%
%

function a = InterpV(x,y)
a = InverpV(x,y)
Calcola la matrice dei coefficienti (matrice di Vandermonde)
x e y sono due vettori colonna di ordine n e x ha componenti distinte
a `
e un vettore colonna di ordine n tale che se
p(x) = a(1) + a(2)x + ... a(n)x^(n-1)
allora
p(x(i)) = y(i), i=1:n

analisi numerica

c
V.
Comincioli

6.1 Interpolazione

285

n = length(x);
V = ones(n,n);
for j=2:n
% costruisce la colonna j.
V(:,j) = x.*V(:,j-1);
end
a = V\y;
---------

%
%
%
%
%
%
%

function pVal = HornerV(a,z)


pVal = HornerV(a,z)
calcola il polinomio interpolante in z (vettore di ordine m)
pVal e
` un vettore dello stesso ordine di z con la propriet`
a che se
p(x) = a(1) + .. +a(n)x^(n-1)
allora
pVal(i) = p(z(i))

i=1:m.

n = length(a);
m = length(z);
pVal = a(n)*ones(size(z));
for k=n-1:-1:1
pVal = z.*pVal + a(k);
end

% Script File: ShowV


% grafico del polinomio di interpolazione di terzo grado in 4 punti random
% della funzione sin(x) su [0,2pi].
% Usa il metodo di Vandermonde.
close all
x0 = linspace(0,2*pi,100); y0 = sin(x0);
for eg=1:4
x = 2*pi*sort(rand(4,1));
y = sin(x);
a = InterpV(x,y);
pVal = HornerV(a,x0);
subplot(2,2,eg)
plot(x0,y0,x0,pVal,--,x,y,*)
axis([0 2*pi -2 2])
end

Polinomio di interpolazione di Newton


Un polinomio di grado n 1 pu`
o essere scritto in dierenti forme tra loro equivalenti. In
particolare, dati i punti xi , i = 1, 2, . . . , n + 1, si chiama rappresentazione di Newton la seguente
forma
P (x) = c0 + c1 (x x1 ) + c2 (x x1 )(x x2 ) + + cn (x x1 )(x x2 ) (x xn )

(6.6)

A partire da tale rappresentazione, il valore di P (x) in un particolare punto x = z pu`


o essere ottenuto mediante lalgoritmo di Horner-Runi, adattato nel seguente modo. Mettendo in evidenza
analisi numerica

c
V.
Comincioli

286

Approssimazione di funzioni

Figura 6.4 Interpolazione della funzione sin(x) con un polinomio di terzo grado in quattro punti scelti
random su [0, 2].

i fattori comuni, si ha
P=C(N)

P (x) = c0 +(xx1 )(c1 +(xx2 )(c2 + +cn (xxn ) )) DO 2 I=N,1,-1


2 P=P*(Z-X(I))+C(I-1)

Quando P (x) `e il polinomio di interpolazione corrispondente ai punti (xi , fi ), i = 1, 2, . . . , n + 1, i


coecienti ci possono essere calcolati dalle condizioni P (xi ) = fi con una procedura iterativa che
introdurremo nel caso n = 2, ossia
= f1
c0
c0 + c1 (x2 x1 )
= f2
c0 + c1 (x3 x1 ) + c2 (x3 x1 )(x3 x2 ) = f3
da cui, mediante sostituzione
f2 f1
x2 x1
x3 x1
f2 f1
f3 f1
(f2 f1 )

f3 f1
x2 x1
x x1 x2 x1
c2 =
= 3
(x3 x1 )(x3 x2 )
x3 x2
c0 = f1 ,

c1 =

Dalle relazioni precedenti si vede che i coecienti c1 , c2 sono delle approssimazioni rispettivamente
della derivata prima e seconda, ossia hanno un signicato di rapporti incrementali; inoltre, il
coeciente c2 pu`
o essere facilmente calcolato quando si conoscono i rapporti incrementali di ordine
inferiore. La procedura pu`o essere generalizzata nel modo seguente. Indicando, per k = 1, 2, . . . , n,
con Pk (x) il polinomio di grado non superiore a k che interpola i punti (xi , fi ), i = 1, 2, . . . , k + 1,
si ha
P0 (x) = c0
Pk (x) = Pk1 (x) + ck (x x1 )(x x2 ) (x xk ),
analisi numerica

k = 1, . . . , n
c
V.
Comincioli

6.1 Interpolazione

287

da cui si vede che il valore di ciascun coeciente ck dipende solo dai valori di f nei punti
` naturale, pertanto, introdurre la seguente notazione
x1 , x2 , . . . , xk+1 . E
ck = f [x1 , x2 , . . . , xk+1 ]

(6.7)

Per il calcolo ricorsivo dei coecienti ck , osserviamo che alternativamente Pk (x) pu`
o essere
espresso nella seguente forma
(1)

Pk (x) = Pk1 (x) +


(1)

%
x x1 $ (2)
(1)
Pk1 (x) Pk1 (x)
xk+1 x1

(6.8)

(2)

ove Pk1 (rispettivamente Pk1 ) `e il polinomio di grado k 1 che interpola f nei punti
x1 , x2 , . . . , xk (rispettivamente nei punti x2 , x3 , . . . , xk+1 ). In eetti, a secondo membro della
relazione (6.8) si ha un polinomio di grado k che assume, come si verica facilmente, gli stessi
valori del polinomio a primo membro nei punti x1 , . . . , xk+1 .
Uguagliando i coecienti del termine xk nei due polinomi, rispettivamente a primo e secondo
membro della uguaglianza (6.8), si ottiene la seguente relazione ricorrente
f [x1 , x2 , . . . , xk+1 ] =

f [x2 , x3 , . . . , xk+1 ] f [x1 , x2 , . . . , xk ]


xk+1 x1

Per tale motivo il coeciente f [x1 , x2 , . . . , xk ] `e anche chiamato dierenza divisa di ordine k. Osserviamo che il valore di f [x1 , x2 , . . . , xk ] non cambia se gli argomenti x1 , x2 , . . . , xk sono assegnati
in ordine dierente, cio`e la dipendenza dagli argomenti `e simmetrica. Quando la funzione f `e dotata di derivate continue no allordine k, si pu`
o dimostrare che esiste un numero nellintervallo
formato dai punti x1 , x2 , . . . , xk+1 tale che
f [x1 , x2 , . . . , xk+1 ] =

f (k) ()
k!

Il calcolo delle dierenze divise `e visualizzato, ad esempio per n = 3, nella seguente tabella
x1 f1
f [x1 , x2 ]
x2 f 2

f [x1 , x2 , x3 ]
f [x2 , x3 ]

x3 f 3

f [x1 , x2 , x3 , x4 ]
f [x2 , x3 , x4 ]

f [x3 , x4 ]
x4 f 4
A partire dalla rappresentazione (6.6), il polinomio di interpolazione Pn (x) relativo ai punti
(xi , fi ), i = 1, . . . , n + 1 `e allora fornito dalla seguente espressione
P (x) =f1 + f [x1 , x2 ] (x x1 ) + f [x1 , x2 , x3 ] (x x1 )(x x2 ) +
+f [x1 , x2 , . . . , xn+1 ] (x x1 )(x x2 ) (x xn )

analisi numerica

c
V.
Comincioli

288

Approssimazione di funzioni

function c = InterpN(x,y)
% c = InterpN(x,y)
% Polinomio interpolante di Newton
% x: n-vectore colonna con componenti distinte
% y: n-vectore colonna.
% c n-vectore colonna tale che se
%
%
p(x) = c(1) + c(2)(x-x(1))+...+ c(n)(x-x(1))...(x-x(n-1))
% allora
%
p(x(i)) = y(i), i=1:n.
%
c(k)=f[x_1,...x_k]
n = length(x);
for k = 1:n-1
y(k+1:n) = (y(k+1:n)-y(k:n-1)) ./ (x(k+1:n) - x(1:n-k));
end
c = y;
-------%
%
%
%
%
%
%
%

function pVal = HornerN(c,x,z)


pVal = HornerN(c,x,z)
Calcola il polinomio interpolante di Newton per i valori z
c e x sono n-vectori e z `
e un m-vectore.
pVal e
` il vettore della stessa dimensione di z tale che se
p(x) = c(1) + c(2)(x-x(1))+ ... + c(n)(x-x(1))...(x-x(n-1))
allora
pval(i) = p(z(i)) , i=1:m.

n = length(c);
pVal = c(n)*ones(size(z));
for k=n-1:-1:1
pVal = (z-x(k)).*pVal + c(k);
end

Esempio 6.3 Determinare il polinomio di terzo grado che interpola i valori


x
f

0
1

2
5

-2
3

7
2

Si ottiene la seguente tabella


0 1

51
=2
20

2 5
1
35
=
2 2
2
2 3
1
23
=
7+2
9

3
1/2 2
=
2 0
4
1/9 1/2
11
=
72
90

11/90 3/4
157
=
70
1260

7 2
da cui il polinomio di interpolazione
157
3
x(x 2)(x + 2)
P3 (x) = 1 + 2x + x(x 2)
4
1260

analisi numerica

c
V.
Comincioli

6.1 Interpolazione

289

Algoritmo di Neville
Dalla relazione (6.8) si vede che il polinomio Pk , di grado k, che interpola f nei punti
o essere calcolato usando due polinomi di interpolazione Pk1 di grado k 1.
x1 , x2 , . . . , xk+1 pu`
o essere pensato come il risultato della interpolazione lineare
Pi`
u precisamente, si ha che Pk (x) pu`
(1)
(2)
tra i due punti (x1 , Pk1 (x)) e (x2 , Pk1 (x)). Il metodo di Neville, a partire da tale osservazione,
calcola il valore del polinomio di interpolazione mediante successive interpolazioni lineari.
Per descrivere il metodo introduciamo alcune opportune notazioni. Se P12 (x) indica il polinomio di grado 1, che interpola f in x1 e x2 , si ha


 x x1 f1 
x x1
1


(f2 f1 ) =
P12 (x) = f1 +
x2 x1
x2 x1  x x2 f2 
Analogamente se P123 (x) `e il polinomio, di grado 2, che interpola f nei punti x1 , x2 e x3 , si ha


 x x1 P12 (x) 
1


P123 (x) =
x3 x1  x x3 P23 (x) 
Pi`
u in generale, se Pi1 i2 ...ik+1 (x) `e il polinomio, di grado k, che soddisfa
Pi1 i2 ...ik+1 (xij ) = fij ,

j = 1, 2, . . . , k + 1

esso pu`o essere calcolato nella seguente maniera ricorsiva


Pi (x) = fi


 x xi1
1

Pi1 i2 ...ik+1 (x) =
xik+1 xi1  x xik+1


Pi1 i2 ...ik 
Pi2 i3 ...ik+1 

Lalgoritmo di Neville segue, allora, ad esempio per n = 3, il seguente schema.


x x1

x1

f1 = P1 (x)

x x2

x2

f2 = P2 (x)

P12 (x)
P123 (x)
P23 (x)

x x3

x3

f3 = P3 (x)

x x4

x4

f4 = P4 (x)

P1234 (x)
P234 (x)

P34 (x)

Limplementazione dellalgoritmo, che lasciamo come esercizio, pu`


o essere eettuata in maniera
del tutto analoga a quanto visto nel paragrafo precedente nel caso del polinomio di Newton.
Esempio 6.4 Calcolare il valore per x = 3 del polinomio di interpolazione relativo ai punti (2, 0), (0, 8), (4, 8), (5, 27).
Si ha il seguente schema.
3x
1

x
2

f (x)
0
1
2

analisi numerica

=4
1
2

3
1

8
8

1
2

4
4

=4
1
3

1
5
8
27

1
1

=4

8
1
1

-2

0
8

-8
1
4

-1

1
3

3
2

4
11

1
2

4
5

=1

= 5

= 11

27
c
V.
Comincioli

290

Approssimazione di funzioni

I valori assegnati fi corrispondono ai valori assunti dalla funzione (x 2)3 , e quindi il valore dellinterpolazione nel punto x = 3 `e uguale a (3 2)3 = 1.

Punti di interpolazione equidistanti


Quando i punti di interpolazione sono equidistanti, le formule di interpolazione possono essere
opportunamente semplicate. A tale scopo introduciamo loperatore alle dierenze , denito
u
come loperatore che trasforma la successione y = {yn } nella successione y = {yn+1 yn }. Pi`
semplicemente, si scrive yn = yn+1 yn . Gli operatori alle dierenze di ordine superiore k
sono deniti in maniera ricorsiva
k y = k1 (y)
La quantit`
a k yn `e una combinazione lineare di yn , yn+1 , . . . , yn+k . Supponiamo, ora, che i punti
di interpolazione xi siano equidistanti
xi = x1 + (i 1)h,
ove h `e il passo di tabulazione.
uguaglianza

i = 1, 2, . . . , n + 1

Si pu`
o dimostrare, ad esempio per induzione, la seguente

k f 1
hk k!
Introducendo la nuova variabile s mediante la posizione x = x1 + s h, e usando la rappresentazione
di Newton del polinomio di interpolazione, si ha

s
s
2
Pn (x1 + s h) = f1 + sf1 +
f1 + +
n f 1
2
n
f [x1 , x2 , . . . , xk+1 ] =

ove le dierenze i f1 , i = 1, 2, . . . , s possono essere calcolate mediante solo operazioni di somma.


Esempio 6.5 A partire dai punti di interpolazione
x
f (x)

0.5
0.4794

0.6
0.5646

0.7
0.6442

si ottiene il seguente schema alle dierenze


x
0.5

f (x)
0.4794

0.6

0.5646

852
-56
796
0.7

0.6442

ove le dierenze sono date in unit`


a di 104 . In questo caso h = 0.1, x1 = 0.5 e il polinomio di interpolazione
di Newton `e il seguente
P2 (x1 + s h) = 0.4794 + 0.0852s +

analisi numerica

s(s 1)
(0.0056)
2

c
V.
Comincioli

6.1 Interpolazione

6.1.4

291

Convergenza del polinomio di interpolazione

La rappresentazione (6.3) pone le basi per lo studio di unaltra importante questione relativa
allerrore di troncamento. Dal punto di vista pratico, `e essenziale poter ridurre tale errore inferiore
a una quantit`
a pressata, scegliendo convenientemente il numero e la posizione dei nodi xi . Dal
punto di vista matematico, questo signica studiare la convergenza del metodo di approssimazione.
In maniera pi`
u precisa, il problema si pone nella seguente forma. Data una funzione f (x) denita
su un intervallo [a, b], e sucientemente regolare, consideriamo, per ogni n intero 1, una
suddivisione dellintervallo [a, b] mediante i punti a x1 < x2 < < xn+1 b e sia Pn (x) il
polinomio di interpolazione nei nodi (xi , f (xi )), i = 1, 2, . . . , n + 1. Lo studio della convergenza
u
riguarda allora lanalisi dellerrore f (x) Pn (x), per x [a, b] e al tendere di n allinnito (pi`
precisamente, al tendere a zero dellampiezza degli intervallini della suddivisione). Contrariamente
allintuizione (supportata anche dal Teorema di Weierstrass), la risposta a tale questione non `e
sempre positiva; ossia, anche se la funzione f (x) ammette derivate di ogni ordine su [a, b], la
successione {Pn (x)} dei valori assunti dal polinomio di interpolazione di grado n in un punto x
[a, b] pu`
o non convergere a f (x), per n . In Figura 6.5, `e illustrato un classico controesempio,
noto come esempio di Runge 4 . Si considera la funzione
f (x) =

1
1 + 25x2

(6.9)

sullintervallo [1, 1], interpolata mediante i polinomi Pn (x) nei punti equidistanti
2
xn,i = 1 + (i 1) , i = 1, . . . , n + 1
n
Come si vede in gura, lerrore `e piccolo nei punti vicini allorigine, ma grande vicino agli estremi
1 e +1. In eetti, si pu`o dimostrare che
$
%
lim max |f (x) Pn (x)| =
n 1x1

Pi`
u in generale, si pu`
o mostrare (Bernstein e Faber, 1914) che per una scelta arbitraria dei punti di
interpolazione in [a, b], `e possibile costruire una funzione continua su [a, b] per cui il procedimento
di interpolazione sui nodi ssati `e tale che maxaxb |f (x) Pn (x)| .
Come risultato signicativo di convergenza, ricordiamo che per ogni funzione f (x) sucientemente regolare, ad esempio dotata di derivata seconda continua, `e possibile trovare un insieme di
punti di interpolazione per i quali il polinomio di interpolazione converge uniformemente. Sempre
in Figura 6.5 `e indicato il comportamento del polinomio di interpolazione, per n = 10, relativo ai
punti


2i 1

, i = 1, . . . , n + 1
xn,i = cos
n+1 2
che corrispondono agli zeri del polinomio di Chebichev di grado n+1 relativo allintervallo [1, 1].
Tali polinomi verranno introdotti e analizzati sucessivamente (cfr. paragrafo 6.2.2).
4

C. D. T. Runge (1856-1927) tenne per primo la cattedra di matematica applicata nellUniversit`


a di G
ottingen; i
suoi interessi principali riguardarono lo studio dei problemi matematici in sica, geodesia e astronomia e in generale
lapplicazione dei metodi numerici alle scienze applicate (The value of a mathematical discipline depends on its
applicability to the natural sciences, 1880). Lesempio esaminato nel testo `e contenuto in un lavoro del 1901; S. N.
Bernstein (1912) dimostr`
o che linterpolazione della funzione f (x) = |x| su nodi equidistanti dellintervallo [1, 1]
diverge per ogni x = 1, 0, 1.
analisi numerica

c
V.
Comincioli

292

Approssimazione di funzioni

Figura 6.5 Esempio di Runge; polinomio di interpolazione di grado 10 rispettivamente in punti equidistanti
() e negli zeri del polinomio di Chebichev (.).

Figura 6.6 Zeri del polinomio di Chebichev T8 .

---------------%RungeEg
% Script File: RungeEg
% Per n = 7:2:15, si determina il grafico dei polinomi di interpolazione della
% funzione f f(x) = 1/(1+25x^2) on [-1,1]
close all
x = linspace(-1,1,100);
%f=inline(1./(1+25*x.^2));
y = ones(100,1)./(1 + 25*x.^2); %y=feval(f,x)
i=0;
for n=7:2:21
figure
i=i+1;
xE = linspace(-1,1,n);
yE = ones(n,1)./(1+25*xE.^2);%=feval(f,xE)
analisi numerica

c
V.
Comincioli

6.1 Interpolazione

293

cE=InterpN(xE,yE);
pVE = HornerN(cE,xE,x);
plot(x,y,x,pVE,xE,yE,*)
title(sprintf(numero punti (n = %2.0f),n))
err(i)=norm(y-pVE,inf);
pause
end
err
n=21;
xche=(cos(((2*(0:(n-1))+1)*pi)./(21*2)));
yche=ones(n,1)./(1+25*xche.^2);
%=feval(f,xche);
cxche=InterpN(xche,yche);
pVche=HornerN(cxche,xche,x);
plot(x,y,x,pVche,xche,yche,*)
title(sprintf(punti di Chebichev (n = %2.0f),n))
plot(xche,0*xche,*)

6.1.5

Problema generale di interpolazione lineare

Il problema di interpolazione polinomiale pu`


o essere generalizzato nel seguente modo. Sia V
uno spazio lineare su R di dimensione n. Indichiamo con V il corrispondente spazio duale, cio`e
linsieme dei funzionali lineari su V . Assegnati n elementi L1 , L2 , . . . , Ln in V e dato linsieme
di numeri reali yi , i = 1, 2, . . . , n, si cerca lelemento v V tale che:
Li v = y i ,

i = 1, 2, . . . , n

(6.10)

Si tratta di un quadro generale in cui rientrano come casi particolari diverse situazioni signicative.
Linterpolazione polinomiale, ad esempio, corrisponde al caso particolare in cui V = Pn1 e
Li v = v(xi ), ove xi `e un insieme di n punti distinti.
Come ulteriore esempio signicativo (per altri esempi si vedano gli esercizi proposti) si consideri linterpolazione trigonometrica. In questo caso lo spazio V `e generato dalle funzioni
1, cos x, sin x, cos 2x, sin 2x, . . . , cos nx, sin nx, per x [, ). La dimensione di tale spazio
`e 2n + 1 e come funzionali Li si possono assumere, per v V : Li v = v(xi ), ove xi sono 2n + 1
punti distinti in [, ).
Per la risolubilit`
a del problema di interpolazione (6.10), si ha il seguente importante risultato,
la cui dimostrazione `e lasciata come esercizio.
Teorema 6.4 Il problema di interpolazione (6.10) ha una ed una sola soluzione se i funzionali
Li sono linearmente indipendenti in V ; se v1 , v2 , . . . , vn `e una base in V , tale condizione `e
equivalente alla seguente:


 L1 v1 L1 vn 



..  = 0
(6.11)
det(Li vj ) =  ...
. 

 Ln v1 Ln vn 
ove det(Li vj ) `e il cosiddetto determinante generalizzato di Haar. La soluzione del problema
dellinterpolazione `e data allora da:
v = a1 v1 + a2 v2 + + an vn
analisi numerica

c
V.
Comincioli

294

Approssimazione di funzioni

ove i coecienti ai sono determinati come soluzioni del seguente sistema lineare:
(Li v1 )a1 + (Li v2 )a2 + + (Li vn )an = yi ,

i = 1, 2, . . . , n

Nel caso dellinterpolazione polinomiale, scegliendo vi = xi1 , il determinante di Haar `e un determinante di Vandermonde. Lasciamo vericare come esercizio, come caso particolare dellinterpolazione trigonometrica, che assunto come spazio V lo spazio X generato dalle funzioni 1, cos x, sin x
e posto:
L1 v = v(/2), L2 v = v(0), L3 v = v(/2)
il corrispondente determinante di Haar `e diverso dallo zero e quindi `e unico il polinomio v(x) =
a0 + a1 cos x + a2 sin x, che assume valori assegnati nei punti /2, 0, /2.
Osservazione 6.1 Come esempio di problema di interpolazione non risolubile, si consideri la seguente
situazione. Si cerca un polinomio di secondo grado con valori assegnati nei punti 1, 1 e con la derivata
assegnata nel punto 0. Posto L1 v = v(1), L2 v = v(1), L3 v = v  (0), e vi = xi1 , si ha


 1 1 1 


1 1  = 0
det(Li vj ) =  1
 0
1 0 
e il problema di interpolazione pu`
o non avere soluzione e per particolari dati pu`
o avere uninnit`
a di
soluzioni.

Nel caso in cui, come nellinterpolazione polinomiale e trigonometrica, lo spazio V `e generato da


un insieme di funzioni f1 (x), f2 (x), . . . , fn (x), denite su un sottinsieme S di Rm , la condizione
det(fi (xj )) = 0

(6.12)

viene detta condizione di unisolvenza delle funzioni su S; un insieme unisolvente di funzioni


n
e
continue `e noto anche come sistema di Chebichev . Una combinazione lineare
i=1 ai fi (x) `
chiamata un polinomio generalizzato. Un insieme di funzioni costituisce un sistema di Chebichev
se e solo se, come avviene per i polinomi algebrici, il polinomio generalizzato corrispondente con
pi`
u di n 1 zeri distinti in S `e identicamente nullo.
Lunisolvenza signica che il problema dellinterpolazione:
n

ai fi (xj ) = yj ,

j = 1, 2, . . . , n

i=1

`e risolubile in maniera univoca. Ad esempio, i polinomi trigonometrici sono unisolventi su [, ),


ma non su [, ]. I polinomi algebrici sono unisolventi su ogni intervallo limitato della retta reale
ma in pi`
u dimensioni, salvo il caso banale di una griglia rettangolare, la situazione `e pi`
u compli2
cata. Per un controesempio si consideri il caso dei polinomi di primo grado in R e un insieme
di tre punti allineati. Per una pi`
u adeguata trattazione della interpolazione in pi`
u dimensioni, si
veda ad esempio Prenter [341], Raviart, Thomas [352].
 Esercizio 6.1 Dimostrare che esiste un unico polinomio p(x) P2 tale che

p(0) = y1 ,

p(1) = y2 ,

p(t) dt = y3

per y1 , y2 , y3 arbitrari.
analisi numerica

c
V.
Comincioli

6.1 Interpolazione

295

 Esercizio 6.2 Trovare un polinomio p P3 , tale che


p(0) = 1,

p (0) = 1,

p(1) = 1,

p (0) = 0

 Esercizio 6.3 Il polinomio p(x) = 0.02x3 + 0.2x2 0.4x + 1.28 `e il polinomio di interpolazione rela-

tivo ai quattro punti (1, 1.06), (2, 1.12), (3, 1.34), (5, 1.78), mentre il polinomio p(x) = 0.029166667x3 +
0.275x2 0.570833333x+ 1.375 `e il polinomio di interpolazione relativo ai punti (1, 1.05), (2, 1.10), (3, 1.35),
(5, 1.75). Esaminare la variazione dei coecienti in corrispondenza alla variazione delle ordinate; confrontare p (4) con p (4), p(5.5) con p(5.5) e gli integrali dei due polinomi sullintervallo (1, 4). Trarre suggerimenti
sul condizionamento del problema di interpolazione.

 Esercizio 6.4 Studiare il problema dellinterpolazione in Pn relativo ai funzionali:




Li v =

ti1 v(t) dt

 Esercizio 6.5 Trovare il polinomio:


p(x, y) = a0 + a1 x + a2 y + a3 xy
tale che p(0, 0) = f00 , p(1, 0) = f10 , p(0, 1) = f01 , p(1, 1) = f11 .

 Esercizio 6.6 Dimostrare che per i polinomi di Lagrange Li (x) si ha:


n


Li (x)(xi x) =
j

i=0

1, se j = 0
0, se j = 1, 2, . . . , n

x R

 Esercizio 6.7 Data una funzione f C 0 ([a, b]) e k + 1 punti distinti xi di [a, b], dimostrare che esiste
un unico polinomio p P2k+1 tale che:

p(xi ) = f (xi ),

p (xi ) = 0,

i = 0, 1, . . . , k

Tale polinomio `e detto polinomio di interpolazione di Fejer-Hermite.

6.1.6

Interpolazione mediante funzioni razionali

Per ogni coppia di interi n, m, si considera linsieme delle funzioni denite da:
Rn,m (x)

Pn (x)
a0 + a1 x + + an xn

Qm (x)
b0 + b1 x + + bm xm

Tali funzioni hanno n + m + 1 gradi di libert`


a , corrispondenti al numero dei coefcienti dei due
polinomi, che risultano determinati a meno di un fattore comune diverso dallo zero.
Si pu`
o formulare un problema di interpolazione di tipo Lagrange richiedendo che, assegnati i
punti (xi , yi ), i = 0, 1, . . . , n + m, siano vericate le condizioni:
Rn,m (xi ) = yi ,

i = 0, 1, . . . , n + m

(6.13)

Esaminiamo la questione della risolubilit`


a . A questo proposito vediamo con un esempio che il
problema (6.13) pu`
o non avere soluzione anche se i punti xi sono distinti.
analisi numerica

c
V.
Comincioli

296

Approssimazione di funzioni

Esempio 6.6 Si cerca la funzione R1,1 che passa per i punti (0, 1), (1, 2), (2, 2), cio`e si cercano i coecienti
a0 , a1 , b0 , b1 , tali che:
a0 + a1 xi
= yi , i = 0, 1, 2
b0 + b1 xi
o passare per i tre punti; allo stesso modo se b1 = 0 si ha una
Ora se b1 = 0, si ha una retta, che non pu`
iperbole equilatera che ancora non contiene i tre punti dati.
Una condizione necessaria per (6.13) `e che i coecienti ar , bs di Rn,m risolvano il sistema lineare:
Pn (xi ) yi Qm (xi ) = 0

(6.14)

Nellesempio precedente, risolvendo tale sistema si ottiene a0 = b0 = 0, a1 = 2, b1 = 1, da cui


R1,1 = 2x/x. Il punto x = 0 `e quindi una radice del polinomio al denominatore Q1 ; questa `e
in sostanza la ragione della non risolubilit`
a del precedente problema particolare. In situazioni
del genere si parla di punti inaccessibili. Il problema (6.13) `e risolubile se non vi sono punti
inaccessibili e in questo caso la soluzione pu`o essere ottenuta risolvendo il sistema lineare omogeneo
(6.14). Esistono, comunque, algoritmi pi`
u convenienti del tipo dierenze divise, frazioni continue,
Neville (cfr. ad esempio Stoer, Bulirsch [388]).
Naturalmente, in maniera del tutto analoga, si denisce il problema di interpolazione di tipo
Hermite, includendo nelle condizioni anche i valori di alcune derivate. Nel caso particolare di un
solo punto si ottengono al variare di n, m gli elementi di una matrice, detta matrice di Pade . In
corrispondenza a m = 0, si ha lo sviluppo in serie di Mac Laurin.
Esempio 6.7 Se come funzione f (x) si assume la funzione ex , imponendo la coincidenza in x = 0 di
successive derivate si hanno ad esempio le seguenti approssimanti:
2x
, derivata prima e seconda
2+x
12 6x + x2
=
, no alla derivata quarta
12 + 6x + x2
120 60x + 12x2 x3
=
, no alla derivata sesta
120 + 60x + 12x2 + x3

P1,1 =
P2,2
P3,3

Segnaliamo una interessante applicazione delle approssimanti di Pade alla approssimazione della soluzione
delle equazioni dierenziali.
Consideriamo il problema a valori iniziali
 
y (x) = y, C, () > 0
(6.15)
y(0) = 1
a, di un problema modello per illustrare
che ha, come `e noto, la soluzione y = ex ; si tratta, in realt`
situazioni pi`
u generali.
Introdotta sullasse delle x una suddivisione con passo h > 0 e supposta nota la funzione y in un punto
x, cerchiamo il valore y(x + h). Dallespressione analitica della soluzione si ha y(x + h) = eh y(x).
 x+h
Integrando ora lequazione dierenziale (6.15) tra x e x + h, si ottiene y(x + h) y(x) = x
y(t) dt.
Se lintegrale viene ad esempio approssimato con la regola dei trapezi e si indica con y la soluzione cos`
ottenuta si ha, con facili passaggi:
2 h
y(x)
y(x + h) =
2 + h
Si vede cio`e che lapplicazione della formula dei trapezi equivale alla approssimazione della funzione esponenziale mediante un particolare elemento della matrice di Pade. Questa formula `e interessante numericamente
nel caso in cui () `e grande ( Cfr. Capitolo 9).
analisi numerica

c
V.
Comincioli

6.1 Interpolazione

297

 Esercizio 6.8 Analizzare il seguente algoritmo per il calcolo della funzione razionale Rn,m (x). La
funzione viene trasformata in una frazione continua, rappresentata dal seguente schema:
Rn,m = Q1 (x) +

1
1
Q2 (x) +
.
Q3 (x) + .

(6.16)
.

1
Qk (x)

Sia P0 = Pn e P1 = Qm e supponiamo n m; in caso contrario si pone Rn,m = 1/(Qm /Pn ) e si procede


a convertire Qm /Pn a una frazione continua. Dividiamo P0 per P1 , ottenendo il quoziente Q1 e resto P2 ,
ove il grado di P2 `e strettamente minore di quello del polinomio P1 . Allora: P0 = P1 Q1 + P2 e
Rn,m =

P0
1
= Q1 +
P1
P1 /P2

Si applica poi la stessa procedura a P1 /P2 e, in generale, a Pi /Pi+1 , ove:


Pi = Pi+1 Qi+1 + Pi+2
Dopo un numero nito di passi si ottiene un polinomio Pk di grado zero; allora: Pk1 = Pk Qk . Per valutare
Rn,m mediante (6.16) si deve calcolare ciascun Qi e fare una divisione; poiche si pu`o fare in modo che il
coeciente di grado massimo di ogni Qi sia uguale allunit`
a il calcolo di Qi (x) per x ssato richiede un
numero di moltiplicazioni pari al grado meno uno. In totale quindi sono richieste n k + 1 moltiplicazioni,
k 1 divisioni e n + k + 1 addizioni. Confrontare con altri possibili algoritmi.

6.1.7

Interpolazione inversa

` noto che in tali condizioni


Sia f C 0 ([a, b]), con f (a) f (b) < 0 e f strettamente monotona. E
lequazione: f (x) = 0 ha una ed una sola soluzione x = in [a, b]. Poiche nelle condizioni fatte
esiste la funzione inversa f 1 , la soluzione `e data in maniera esplicita da:
= f 1 (0)
Il risultato cos` ottenuto non `e, in generale, di immediato utilizzo. Possiamo pensare, tuttavia, di
approssimare la funzione inversa mediante una interpolazione. Pi`
u precisamente, dato un insieme
di punti x0 , x1 , . . . , xn [a, b], siano y0 , y1 , . . . , yn i corrispondenti valori di f (x), cio`e yi = f (xi );
ne segue che xi = f 1 (yi ).
Il metodo dellinterpolazione inversa consiste nellinterpolare la funzione inversa f 1 (y) usando
i punti (yi , xi ). Osserviamo che per le ipotesi fatte su f i punti yi sono distinti. Se indichiamo
con p(y) il polinomio di interpolazione cos` ottenuto, il valore:
xn+1 := p(0)
o aggiungere la coppia
rappresenta una approssimazione della radice . Se f (xn+1 ) = 0, si pu`
o essere iterato. Se si desidera tenere costante
(yn+1 , xn+1 ) ai dati per costruire p e il processo pu`
o essere rimosso (per esempio, quello con
il grado di p, uno dei punti (yk , xk ), (k = 0, 1, . . . , n) pu`
il pi`
u grande |yk |).
Se si utilizza linterpolazione lineare, il processo precedente `e noto come metodo regula falsi .
Vediamo unaltra applicazione, che pu`
o essere considerata come unestensione del metodo di
Newton.
analisi numerica

c
V.
Comincioli

298

Approssimazione di funzioni

Supponiamo che, in aggiunta alle ipotesi precedenti, si abbia f C 1 ([a, b]). La derivata f 1
nei punti yk pu`
o essere calcolata mediante la formula:
(f 1 ) (yk ) =

1
f  (x

k)

Indicando con p(y) il polinomio di di Hermite di terzo grado relativamente ai due punti (y0 , y1 ),
si ha


1


1
2x0
2x1
1
1
2
2
x0 y1 + x1 y0 y0 y1
y1 +
y0
+

x2 = p(0) =
(y1 y0 )2
f0
y1 y0
f1
y1 y0
Iterando, si ottiene il cosiddetto metodo iterativo di interpolazione inversa a due punti di Hermite.
Il suo ordine di
convergenza `e dato dalla radice pi`
u grande dellequazione x2 = 2x + 2, cio`e dal
numero r = 1 + 3 = 2.73...
Esempio 6.8 Applicando il metodo precedente alla funzione f (x) = ex x, si ottengono i seguenti
risultati.

0
1
2
3

xn
0.2
0.7
0.5671657
0.5671432

f (xn )
0.618730
0.203414
3.519 E 5
2.38 E 13

 Esercizio 6.9 Trovare, mediante linterpolazione di Hermite, la soluzione delle seguenti equazioni:
f (x) = x2 4 = 0,
1
3

f (x) = x 2 = 0,

6.1.8

x0 = 1, x1 = 10;

f (x) = cos x x = 0,

x0 = 0, x1 = 1

al variare comunque dei punti di partenza.

Interpolazione mediante spline

Nel paragrafo precedente abbiamo visto (cfr. in particolare lesempio di Runge (6.9)) che allaumento del numero dei punti utilizzati nellinterpolazione non sempre corrisponde una migliore
approssimazione della funzione interpolata. Il motivo `e essenzialmente dovuto al comportamento
altamente oscillatorio dei polinomi di grado elevato. Un modo per ovviare a questo inconveniente
consiste nel suddividere lintervallo, in cui si vuole approssimare la funzione, in un certo numero
di sottointervalli, interpolando quindi la funzione su ciascun sottointervallo con polinomi di grado
basso. Si ottiene in questo modo una approssimazione polinomiale a tratti, che rispetto alla approssimazione polinomiale su tutto lintervallo presenta una minore regolarit`
a, ma che permette,
in generale, una migliore descrizione della funzione, con vantaggi in particolare nella graca e
nellapprossimazione delle soluzioni di problemi ai limiti per equazioni dierenziali.
Assumendo di aver suddiviso lintervallo di denizione [a, b] della funzione da approssimare
f (x) mediante i punti a x1 < x2 < . . . < xn b, e utilizzando, ad esempio, una interpolazione lineare su ogni sottointervallo [xi , xi+1 ], si ottiene come funzione approssimante una curva
poligonale, la cui derivata pu`
o essere discontinua nei nodi interni x2 , x3 , . . . , xn1 (cfr. per una
esemplicazione la Figura 6.7).
analisi numerica

c
V.
Comincioli

6.1 Interpolazione

299

1.5

1
x

0.5
x

X
O

O
X

-0.5
X
x

-1

-1.5

X
0

Figura 6.7 Interpolazione lineare a tratti della funzione sin x sullintervallo [0, 6] relativa a una suddivisione
uniforme di ampiezza h = 1.
Se il grado del polinomio utilizzato `e maggiore di uno, la regolarit`
a della funzione approssimante
pu`
o essere migliorata imponendo nei nodi interni la continuit`
a anche di un numero opportuno
di derivate. Ad esempio, come vedremo nel seguito, utilizzando un polinomio di terzo grado, `e
possibile ottenere una funzione approssimante continua, insieme alla derivata prima e seconda.
u in generale, una funzione s(x) `e chiamata spline di
Tale funzione `e chiamata spline5 cubica. Pi`
ordine p, se s(x) `e denita come un polinomio di grado p su ciascun sottointervallo ed `e continua
su tutto lintervallo insieme alle prime p 1 derivate. Quando s(xi ) = f (xi ), per i = 1, 2, . . . , n,
la funzione s `e detta una spline interpolante. Per il seguito considereremo esclusivamente spline
interpolanti, e quindi, per brevit`a, si tralascer`a il termine interpolante.
In Figura 6.8 `e rappresentata una esemplicazione di una situazione nella quale luso di
una spline cubica pare pi`
u opportuno di un polinomio di interpolazione; pi`
u precisamente, `e
rappresentato il seguente polinomio di sesto grado
P (x) = 0.0064+5.0295x+0.0169x2 20.1005x3 0.0486x4 +16.0767x5 +0.0436x6
e la spline cubica che interpolano i seguenti punti
xi
fi

1
1

0.96
0.151

0.86
0.894

0.79
0.986

0.22
0.895

0.5
0.5

0.930
0.306

Nel seguito esamineremo pi`


u in dettaglio il caso delle spline di primo ordine, ossia le funzioni
lineari a tratti, e le spline cubiche.
5

Spline era il nome utilizzato dai disegnatori per indicare un nastro elastico, vincolato a passare, senza discontinuit`
a e punti angolosi, attraverso una serie di punti pressati. Il nastro assume la congurazione corrispondente
al minimo dellenergia potenziale causata dalla deformazione del materiale, e quindi la congurazione di curvatura
minima, compatibilmente con i vincoli. Tale congurazione pu`
o essere modellizzata matematicamente mediante
una spline cubica interpolante (cfr. Teorema 6.5).
analisi numerica

c
V.
Comincioli

300

Approssimazione di funzioni

1.5
1
1

o
o

0.5

0
o
o

-0.5
2
-1 o

-1.5
-1

-0.8

-0.6

-0.4

-0.2

0.2

0.4

0.6

0.8

Figura 6.8 (1) Spline cubica interpolante i punti (o); (2) polinomio di interpolazione di Lagrange.
Spline lineari
Dati i punti x1 < x2 < . . . < xn , chiamati nodi , una spline lineare `e una funzione s(x) con le
seguenti propriet`
a
s(x) `e continua su [x1 , xn ];
s(x) `e un segmento di retta su ogni sottointervallo [xi , xi+1 ].
Pertanto, su ogni sottointervallo si ha la rappresentazione
s(x) = ai (x xi ) + bi ,

xi x xi+1

e i coecienti da determinare (i cosiddetti gradi di libert`


a ) sono in numero di 2(n 1). La
continuit`
a fornisce n 2 condizioni e i rimanenti n gradi di libert`a possono essere determinati
dalle condizioni di interpolazione s(xi ) = fi , i = 1, 2, . . . , n. Si ottiene, quindi
ai =

fi+1 fi
,
xi+1 xi

bi = fi

Un modo alternativo (di interesse in diverse applicazioni) di rappresentare la funzione s(x) `e il


seguente
n

s(x) =
fi i (x)
i=1

ove le funzioni i (x) sono particolari funzioni spline lineari con la propriet`
a (cfr. Figura 6.9)

0 i = j
i (xj ) =
1 i=j
Le funzioni i (x) costituiscono una base per lo spazio di tutte le spline lineari corrispondenti ad
un insieme assegnato di nodi. Esse sono anche chiamate B-spline lineari.
analisi numerica

c
V.
Comincioli

6.1 Interpolazione

301

Figura 6.9 Funzioni base per le splines lineari.


Se i valori interpolati fi sono i valori di una funzione f (x) nei punti xi e tale funzione ha la
derivata seconda continua, lerrore nellapprossimazione di f con le spline lineari ha la seguente
rappresentazione
f (x) s(x) =

f  (i )
(x xi )(x xi+1 ),
2

xi x xi+1

da cui, se M `e una limitazione superiore di |f  (x)| su [x1 , xn ], si ha


|f (x) s(x)|

h2
M
8

ove h = maxi |xi+1 xi |.


Implementazione delle spline lineari
function [a,b] = pwL(x,y)
% [a,b] = pwL(x,y)
% x, y vettori colonna di ordine n.
% si assume: x(1) < x(2) < ... < x(n).
%
% a e b vettori di ordine (n-1) tali che per i=1:n-1, la retta
% L(z) = a(i) + b(i)z passa attraverso i punti (x(i),y(i)) and
% (x(i+1),y(i+1)).
n = length(x);
a = y(1:n-1); b = diff(y) ./ diff(x);
function i = Locate(x,z,g)
% i = Locate(x,z,g)
% Localizza z nella partizione x.
%
% x `
e un vettore colonna di ordine n con
% x(1) < x(2) <...<x(n) e
% z `
e uno scalare con x(1) <= z <= x(n).
% g (1<=g<=n-1) `
e parametro input opzionale
% i `
e un intero tale che x(i) <= z <= x(i+1).
analisi numerica

c
V.
Comincioli

302

Approssimazione di funzioni

% Prima di iniziare la ricerca generale si tenta il valore i=g.


if nargin==3
% tentativo iniziale.
if (x(g)<=z) & (z<=x(g+1))
i = g;
return
end
end
n = length(x);
if z==x(n)
i = n-1;
else
% ricerca binaria
Left = 1;
Right = n;
while Right > Left+1
% x(Left) <= z <= x(Right)
mid = floor((Left+Right)/2);
if z < x(mid)
Right = mid;
else
Left = mid;
end
end
i = Left;
end

%
%
%
%
%
%
%
%
%

function LVals = pwLEval(a,b,x,zVals)


LVals = pwLEval(a,b,x,zvals)
calcola il polinomio lineare a tratti definito dai vettori (n-1)
a and b e il vettore di ordine n. Si assume x(1) < ... < x(n).
zVals e
` un vettore colonna di ordine m con
ogni componente in [x(1),x(n)].
LVals e
` un vettore colonna di ordine m tale che
LVals(j) = L(zVals(j))
per j=1:m ove L(z)= a(i) + b(i)(z-x(i)) per x(i)<=z<=x(i+1).

m = length(zVals);
LVals = zeros(m,1);
g = 1;
for j=1:m
i = Locate(x,zVals(j),g);
LVals(j) = a(i) + b(i)*(zVals(j)-x(i));
g = i;
end

Esempio di applicazione

Data la funzione

hump =

1
1
+
6
2
(x 0.3) + 0.01 (x 0.9)2 + 0.04

si calcola le spline lineari per un numero crescente di suddivisioni.


analisi numerica

c
V.
Comincioli

6.1 Interpolazione

%
%
%
%
%
%
%

303

Script File: ShowPWL1


Convergenza delle spline lineari alla funzione
humps(x) su [0,3]
humps(x) = 1/((x-.3)^2 + .01) + 1/((x-.9)^2+.04)-6
Y = HUMPS(X) `
e una funzione con massimi in x = .3
e x = .9.
fplot(@humps,[0 3])

close all
z = linspace(0,3,200);
fvals = humps(z);
for n = [5 10 25 50]
figure
x = linspace(0,3,n);
y = humps(x);
[a,b] = pwL(x,y);
Lvals = pwLEval(a,b,x,z);
plot(z,Lvals,z,fvals,--,x,y,o);
title(sprintf(interpolazione di humps(x) con pwL, n = %2.0f,n))
end

Spline cubiche
Con le notazioni precedenti una spline cubica `e una funzione con le propriet`
a
s(x), s (x), s (x) sono continue su [x1 , xn ];
s(x) `e un polinomio di terzo grado su ogni [xi , xi+1 ].
La funzione s(x) `e composta da n 1 polinomi di terzo grado, e quindi ha 4(n 1) gradi di
libert`
a. La continuit`a della funzione e delle derivate prima e seconda fornisce 3(n 2) condizioni;
si hanno inoltre le n condizioni di interpolazione s(xi ) = fi , i = 1, 2, . . . , n. Pertanto, una spline
cubica interpolante ha 4(n 1) 3(n 2) n = 2 gradi di libert`a. Per determinare, quindi, in
modo univoco la spline sono necessarie due ulteriori condizioni. Tali condizioni possono assumere
le seguenti forme
spline naturale
s (x1 ) = 0, s (xn ) = 0
s (x1 ) = f  (x1 ), s (xn ) = f  (xn ) spline vincolata
Sotto una delle due condizioni precedenti si pu`
o dimostrare che esiste una ed una sola spline
cubica interpolante. Di questo risultato forniremo una dimostrazione costruttiva.
Algoritmo per la costruzione di una spline cubica
Su ogni sottointervallo [xi , xi+1 ] possiamo rappresentare una spline cubica interpolante nella
seguente forma
si (x) = fi + si (xi )(x xi ) +
analisi numerica

si (xi )
s (xi )
(x xi )2 + i
(x xi )3
2
3!
c
V.
Comincioli

304

Approssimazione di funzioni

Si ha quindi
si (x) = si (xi ) + si (xi )(x xi ) +
si (x) = si (xi ) + s
i (xi )(x xi )

s
i (xi )
(x xi )2
2

Poniamo, ora, per brevit`


a, per i = 1, 2, . . . , n 1

zi =

hi = xi+1 xi

si (xi ), zn = sn1 (xn )

La continuit`
a di s nei punti interni implica che
s
i (xi ) =

zi+1 zi
,
hi

i = 1, 2, . . . , n 1

Pertanto, si pu`
o scrivere si nella seguente forma
si (x) = fi + si (xi )(x xi ) +

zi
zi+1 zi
(x xi )2 +
(x xi )3
2
6hi

per i = 1, 2, . . . , n 1 e la derivata s (xi ) nella forma


si (x) = si (xi ) + zi (x xi ) +

zi+1 zi
(x xi )2
2hi

Essendo il vincolo si (xi ) = fi soddisfatto direttamente dalla denizione di si (x), da si (xi+1 ) = fi+1
si ha
zi
zi+1 zi 3
hi = fi+1
fi + si (xi )hi + h2i +
2
6hi
da cui
si (xi ) =

fi+1 fi
hi
hi
zi+1
zi
hi
6
3

o allora utilizzare la continuit`


a di s (x), cio`e
per i = 1, 2, . . . , n 1. Per determinare zi , si pu`


si (xi+1 ) = si+1 (xi+1 ). Con calcoli immediati, si ottengono in questo modo le seguenti relazioni

fi+2 fi+1 fi+1 fi

hi zi + 2(hi + hi+1 )zi+1 + hi+1 zi+2 = 6


hi+1
hi
per i = 1, 2, . . . , n 2. Per una spline naturale si ha per denizione z1 = zn = 0, mentre per una
spline con condizioni ai limiti si hanno le seguenti due equazioni
h1
f1 f2
h1
z1 z2 =
+ f  (x1 )
3
6
h1
hn1
fn1 fn
hn1
zn1
zn =
+ f  (xn )

6
3
hn1

In ambedue i casi il calcolo delle quantit`a zi equivale alla risoluzione di un sistema lineare con
matrice tridiagonale e a predominanza diagonale, per il quale il metodo di eliminazione di Gauss
pu`
o essere applicato in una forma particolarmente semplice, che ora ricorderemo brevemente.
analisi numerica

c
V.
Comincioli

6.1 Interpolazione

305

Consideriamo, pi`
u in generale, il sistema
Ax = f
con f = [f1 , f2 , . . . , fn ]T e

(6.17)

a1 c1
0
b2 a2 c2

..
.. ..
A=
.
.
.

bn1 an1 cn1


0
bn
an
Si ha la decomposizione

1
2

L=

A = LU con

..

n1 1
n

1 c1
0

2 c2

.. ..
; U =
.
.

n1 cn1
1
0
n

0
1
..
.

ove gli elementi i , i sono determinati in forma iterativa nella forma seguente
1 = a1
k =

bk
,
k1

k = ak k ck1 ,

k = 2, 3, . . . , n

Il sistema (6.17) diventa, allora


LUx = f

Ly = f
Ux = y

da cui
y1 = f1 ,
yn
,
xn =
n

yi = fi i yi1 , i = 2, 3, . . . , n (forward)
yi ci xi+1
xi =
, i = n 1, . . . , 2, 1 (backward)
i

Il costo dellalgoritmo `e dato da 3(n 1) moltiplicazioni e addizioni e 2n 1 divisioni.


Analogamente a quanto si `e visto per le spline lineari, `e possibile, e talvolta `e conveniente,
esprimere una generica spline cubica mediante una base locale, i cui elementi, cio`e, siano diversi
dallo zero in un intorno piccolo di ciascun nodo xi . Come esemplicazione, riportiamo la deniu
zione di un elemento di tale base (detta B-spline) nel caso in cui i nodi xi siano equidistanti. Pi`
precisamente, considerati i nodi 2, 1, 0, 1, 2, lelemento della base corrispondente al nodo 0 `e
denito da

(x + 2)3
x [2, 1]

1 + 3(x + 1) + 3(x + 1)2 3(x + 1)3 x [1, 0]


1
(x) =
1 + 3(1 x) + 3(1 x)2 3(1 x)3 x [0, 1]
4

x [1, 2]
(2 x)3

0
|x| > 2
il cui graco `e riportato in Figura 6.10.
analisi numerica

c
V.
Comincioli

306

Approssimazione di funzioni

1.2

0.8

0.6

0.4
X

0.2

0
-2.5

-2

-1.5

-1

-0.5

0.5

1.5

x
2.5

Figura 6.10 Rappresentazione graca della B-spline cubica.


Propriet`
a di approssimazione di una spline cubica
Nel caso in cui fi siano i valori di una funzione f (x) sucientemente regolare, `e possibile dimostrare che al tendero a zero dellampiezza degli intervalli [xi , xi+1 ] la spline interpolante cubica
converge alla funzione f (x). Ad esempio, nel caso di una spline vincolata per una funzione f (x)
derivabile no al quarto ordine nellintervallo [a, b], si ha
 r

 d s(x) dr f (x) 
 Kr () M h4r , r = 0, 1, 2, 3

max 
axb  dxr
dxr 
ove = maxi,j

$ hi %
, h = max hi , |f (4) (x)| M, a x b e
i
hj

5
1
, K1 () =
(9 + 3)
384
216
5
1
(1 + 3), K3 () = (1 + 2 )
K2 () =
384
2
K0 () =

In particolare, se i nodi rimangono equidistanti si ha = 1 e per nodi non equidistanti, aumenta


quando il rapporto tra il pi`
u grande e il pi`
u piccolo sottointervallo aumenta. Il risultato precedente
mostra che la spline di interpolazione cubica converge uniformemente a f insieme alle derivate
prima, seconda e terza.
Terminiamo ricordando la propriet`
a delle spline cubiche che ha dato il nome a questo tipo di
approssimazione. Mediante una integrazione per parti si dimostra facilmente che se s(x) `e una
spline cubica naturale che interpola una funzione f (x) nei nodi a = x1 < x2 < < xn = b, si ha
 b
 b
 b
%2
$  %2
$  %2
$ 
g (x) dx =
s (x) dx +
g (x) s (x) dx
a

per ogni funzione g(x) dotata di derivata prima e seconda continue su [a, b], e che interpola f (x)
nei nodi. Da tale uguaglianza si ricava il seguente risultato.
analisi numerica

c
V.
Comincioli

6.1 Interpolazione

307

Teorema 6.5 (Propriet`a di minimo) Tra tutte le funzioni g(x) che sono due volte continuamente
derivabili su [a, b], e che interpolano f (x) nei punti a = x1 < x2 < . . . < xn = b, la spline cubica
naturale interpolante minimizza lintegrale
 b
(g (x))2 dx
(6.18)
a

Questo signica che le spline cubiche interpolanti sono tra le funzioni con derivata seconda continua
che interpolano la funzione f (x) nei nodi xi quelle che hanno minima curvatura, ossia quelle che
oscillano meno. Osserviamo, inoltre, che lintegrale (6.18) `e una approssimazione dellintegrale
dellenergia potenziale elastica corrispondente alla congurazione g(x) di un nastro perfettamente
elastico (spline) vincolato a passare attraverso i nodi (xi , fi ).

6.1.9

Approssimazione di B
ezier

Con il nome di approssimazione di Bezier si denota un insieme di tecniche particolarmente utili


nel campo del disegno mediante calcolatore (CAD: computer aided design; CAM: computer aided
a interattive oerte da tale
manifacturing)6 . Il motivo di tale interesse `e legato alle possibilit`
approssimazione. In questo paragrafo presenteremo una introduzione al metodo, rinviando ad
esempio a Farin [138] per un opportuno approfondimento. Richiamiamo anche lo stretto legame
esistente tra le curve di Bezier e le B-spline, ossia le basi delle spline a supporto locale (cfr. nel
paragrafo precedente gli esempi delle spline di primo e terzo ordine); in eetti, le curve di Bezier
costituiscono un caso speciale delle curve B-spline.
Le curve di Bezier possono essere generate da un algoritmo ricorsivo; `e comunque utile, in
particolare nellambito degli sviluppi teorici, avere di esse una rappresentazione esplicita, ossia
unespressione in termini di una formula non ricorsiva, piuttosto che in termini di un algoritmo.
Tale rappresentazione pu`
o essere ottenuta mediante i polinomi di Bernstein, di cui ora ricorderemo
la denizione e discuteremo alcune interessanti propriet`
a.
Polinomi di Bernstein Chiamato [a, b] lintervallo che contiene i punti xi , i = 0, 1, . . . , n, con
x0 = a e xn = b, consideriamo i seguenti polinomi di grado n

n (b x)ni (x a)i
Bin (x) :=
, i = 0, . . . , n
(b a)n
i
$ %
ove ni indica il coeciente binomiale

n!
n

i
i! (n i)!
Tali polinomi sono linearmente indipendenti, ossia da ni=0 i Bin (x) = 0 su (a, b) segue i =
0, i = 0, 1, . . . , n. Essi costituiscono le funzioni base di Bernstein. Ad esempio, per n = 3 si ha
(cfr. Figura 6.11)
6
Il metodo `e stato sviluppato indipendentemente da P. Bezier alla Renault (Denition numerique des courbes
et surfaces I, 1966, II, 1967) e da P. de Casteljau alla Citr
oen (rapporti tecnici, 1959, 1963, non pubblicati). Tali
lavori, basati sullanalisi delluso di curve e superci parametriche, possono essere visti come lorigine della nuova
disciplina Computer Aided Geometric Design (CAGD).

analisi numerica

c
V.
Comincioli

308

Approssimazione di funzioni

1
0.9
0.8
0.7
3
0.6

0.5

0.4
0.3
0.2
0.1
0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

Figura 6.11 Rappresentazione degli elementi della base di Bernstein per n = 3.

B03 (x) =

(b x)3
(b x)2 (x a)
(b x)(x a)2
(x a)3
3
3
2
,
B
(x)
=
3
,
B
(x)
=
3
,
B
(x)
=
1
2
3
(b a)3
(b a)3
(b a)3
(b a)3

Per il calcolo numerico del valore di un elemento della base di Bernstein in un punto assegnato x,
anziche la denizione, `e pi`
u opportuno il seguente algoritmo numericamente pi`
u stabile
B00 (x) = 1,

n
B1
(x) = 0,

n1
(b x) Bin1 (x) + (x a) Bi1
(x)
,
(b a)
n
(x) = 0
Bn+1

Bin (x) =

i = 0, 1, . . . , n

Lalgoritmo `e implementato, per lintervallo di riferimento (0, 1), nella seguente procedura, che
fornisce nel vettore B i valori degli elementi della base di Bernstein di grado n nel punto x.

SUBROUTINE BE(N,B,X)
REAL B(0:N),X
IF (N.EQ.0) THEN
B(0)=1.0
ELSE IF (N.GT.0) THEN
DO 2 J=1,N
IF (J.EQ.1) THEN
B(1)=X
ELSE
B(J)=X*B(J-1)
END IF
DO 1 M=J-1,1,-1
B(M)=X*B(M-1)+(1.0-X)*B(M)
CONTINUE
IF (J.EQ.1) THEN
B(0)=1.0-X

analisi numerica

c
V.
Comincioli

6.1 Interpolazione

309

ELSE
B(0)=(1.0-X)*B(0)
END IF
CONTINUE
END IF
RETURN
END

Dal fatto che i polinomi Bin (x), per i = 0, 1, . . . , n costituiscono una base per i polinomi di grado
n, ossia un insieme di n + 1 polinomi di grado n linearmente indipendenti, si ha che un generico
o essere espresso in maniera univoca come combinazione lineare
polinomio Pn (x) di grado n pu`
dei polinomi Bin (x), ossia
n

pi Bin (x)
(6.19)
Pn (x) =
i=0

ove pi rappresentano le coordinate del polinomio Pn (x) rispetto alla base di Bernstein. Tali
coordinate possono allora essere determinate imponendo, ad esempio, che Pn (x) verichi le condizioni di interpolazione Pn (xi ) = yi , i = 0, . . . , n, ove yi sono dei valori assegnati. Tali condizioni
equivalgono alla risoluzione di un sistema lineare nelle n + 1 incognite pi .
2
1.8
1.6
1.4
1.2
1
0.8
0.6
0.4
0.2

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

Figura 6.12 Poligono e curva di Bezier: n = 3 e p0 = 0.4, p1 = 0.2, p2 = 0.4, p3 = 2.


Esaminiamo ora la relazione tra le quantit`a pi e yi . Mentre nella rappresentazione di Lagrange
(6.2) si ha pi = yi per ogni i, nella rappresentazione (6.19) si ha p0 = y0 e pn = yn , ma per i = 0, n
i valori sono dierenti. Tuttavia, laspetto interessante della rappresentazione (6.19) `e il fatto che i
coecienti pi sono utilizzabili in maniera semplice per variare la forma della curva. In altre parole,
a partire dai valori pi `e possibile prevedere in maniera intuitiva il comportamento del polinomio
Pn (x), senza necessariamente darne una rappresentazione graca. Questo fatto `e importante nel
CAD, quando lobiettivo nale, anziche una interpolazione di punti, `e la realizzazione di una curva
di forma pressata.
Lidea di base consiste nello specicare pi in maniera graca. A tale scopo si associa ogni pi
analisi numerica

c
V.
Comincioli

310

Approssimazione di funzioni

ad un punto nel piano (ti , pi ), chiamato punto di controllo. I punti ti sono assunti equidistanti
t i = x0 + i

ba
xn x0
=a+i
n
n

e pertanto salvo per t0 e tn si ha, in generale, ti = xi . Sulla base dei nodi (ti , pi ) si costruisce il
poligono di Bezier, partendo da (t0 , p0 ) e congiungendo i successivi punti di controllo con segmenti
di retta; inne, si congiunge (tn , pn ) con (t0 , p0 ). Tale poligono fornisce unidea della forma di
Pn (x). In particolare, si ha che se i valori pi sono monotoni, pure il polinomio Pn (x) risulta
u piccolo insieme
una funzione monotona. Inoltre Pn (x) risulta completamente contenuto nel pi`
convesso (il cosiddetto inviluppo convesso) che contiene tutti i punti di controllo. In questo modo,
muovendo opportunamente i punti di controllo si ha unidea diretta e intuitiva della funzione
Pn (x).
Come esemplicazione, in Figura 6.12 sono rappresentati il poligono e la curva di Bezier per
n = 3 relativi ai valori p0 = 0.4, p1 = 0.2, p2 = 0.4, p3 = 2. Nella successiva Figura 6.13 `e
mostrato leetto dello spostamento del nodo (t2 , p2 ).
2
1.8
1.6
1.4
1.2
1
0.8
0.6
0.4
0.2

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

Figura 6.13 Poligono e curva di Bezier: n = 3 e p0 = 0.4, p1 = 0.2, p2 = 1., p3 = 2.


Nella forma illustrata in precedenza i punti di controllo (ti , pi ) non possono essere spostati orizzontalmente. Si pu`
o, in eetti, superare tale inconveniente considerando la seguente generalizzazione.
Siano pi dei punti assegnati nel piano e deniamo la curva di Bezier vettoriale ponendo
Pn (x) =

pi Bin (x)

i=0

Al variare del parametro x tra a e b, Pn (x) descrive una traiettoria nel piano con punto iniziale
p0 e punto nale pn .
In particolare, per n = 3 si ottiene la curva di Bezier cubica, che ha la seguente rappresentazione parametrica
x(u) = (1 u)3 x0 + 3 (1 u)2 u x1 + 3 (1 u) u2 x2 + u3 x3
y(u) = (1 u)3 y0 + 3 (1 u)2 u y1 + 3 (1 u) u2 y2 + u3 y3
analisi numerica

c
V.
Comincioli

6.1 Interpolazione

311

0.8

0.7

0.6

0.5

0.4

0.3

0.2

0.1

0.1

0.2

0.3

0.4

0.5

0.6

Figura 6.14 Poligono e curva vettore di Bezier: n = 3 e p0 = (0., 0.5), p1 = (0.4, 0.1), p2 = (0.6, 0.8) e
p3 = (0.3, 0.6).

ove, per evitare equivoci, si `e indicato con u il parametro che varia nellintervallo [0, 1] e con
(xi , yi ) le coordinate dei punti pi . Come esemplicazione si veda Figura 6.14.
Osserviamo che si pu`o facilmente prolungare la curva cubica di Bezier mantenendo la conti` suciente considerare i tre punti p4 , p5 , p6 sulla stessa linea (cfr.
nuit`
a della derivata prima. E
Figura 6.15).
1.2

0.8
0.6
o

0.4
0.2
0o

-0.2
-0.4
-0.6
-0.8
0

0.2

0.4

0.6

0.8

1.2

1.4

1.6

1.8

Figura 6.15 Prolungamento di una curva di Bezier cubica, mantenendo la continuit`a della derivata prima.

 Esercizio 6.10 A partire dai seguenti dati


xi
yi
analisi numerica

0
1

1
9

2
22

3
91

6
245
c
V.
Comincioli

312

Approssimazione di funzioni

costruire la corrispondente tabella delle dierenze nite e mediante il polinomio di interpolazione nella
forma di Newton approssimare il valore corrispondente a x = 3.8.

 Esercizio 6.11 Vericare che i seguenti due polinomi


(a) P (x) = 5x3 27x2 + 45x 21;

(b) Q(x) = x4 5x3 + 8x2 5x + 3

interpolano i seguenti dati


1
2

xi
yi

2
1

3
6

4
47

Interpretare tale esempio alla luce del teorema di unicit`


a del polinomio di interpolazione.

 Esercizio 6.12 Mostrare che il valore della dierenza divisa f [x1 , x2 , . . . , xk+1 ] `e indipendente dallordine dei punti x1 , x2 , . . . , xk+1 .

 Esercizio 6.13 Il calore specico dellacqua come funzione della temperatura `e fornito dalla seguente
tabella
temperatura C
20
25
30
35
40
45
50

calore specico
0.99907
0.99852
0.99826
0.99818
0.99828
0.99849
0.99878

Approssimare mediante polinomi di interpolazione di dierente grado il calore specico a 37 C.

 Esercizio 6.14 Mostrare che la spline lineare s corrispondente ai nodi x1 , x2 , . . . , xn `e la funzione che
minimizza

xn $

%2
g  (x) dx

x1

tra tutte le funzioni continue g tali che g(xi ) = fi , con fi assegnati per i = 1, 2, . . . , n, e per le quali esiste
lintegrale tra x1 e xn del quadrato della derivata.

 Esercizio 6.15 Trovare la spline cubica naturale che interpola i seguenti dati
xi
yi

analisi numerica

1
0

2
1

3
0

4
1

5
0

c
V.
Comincioli

6.2 Problema generale di approssimazione

313

 Esercizio 6.16 Dati (m + 1) (n + 1) valori fi,j , per i = 1, 2, . . . , m + 1 e j = 1, 2, . . . , n + 1, posto


Xm,i (x) :=

m+1
&
k=1, k=i

Yn,i (y) :=

n+1
&

x xk
,
xi xk

y yk
,
yi yk

k=1, k=i

i = 1, 2, . . . , m + 1

i = 1, 2, . . . , n + 1

mostrare che
pm,n (x, y) :=

m+1
n+1

Xm,i (x) Yn,j (y) fi,j

i=1 j=1

`e un polinomio di grado m in x e di grado m in y della forma


seguenti condizioni di interpolazione
pm,n (xi , yj ) = fi,j ,

6.2

m+1
i=1

n+1
j=1

ai,j xi xj , che soddisfa alle

i = 1, 2, . . . , j = 1, 2, . . . , n

Problema generale di approssimazione

Nellapprossimazione mediante interpolazione si cerca un polinomio, pi`


u in generale un elemento di una famiglia appropriata di funzioni (ad esempio, funzioni razionali fratte, funzioni trigonometriche, esponenziali ecc.), che coincide con la funzione da approssimare in punti
pressati.
Nelle applicazioni, questo tipo di approssimazione non `e sempre possibile o conveniente. Supponiamo, ad esempio, che la funzione f (x) esprima una relazione tra quantit`
a siche, o chimiche.
I valori fi sono allora determinati mediante misurazioni, e in generale si ha fi = f (xi ) + i , ove
gli errori i sono incogniti; pure i punti di osservazione xi possono essere aetti da errore. A
meno che gli errori siano piccoli e le misurazioni siano in numero basso, non `e allora ragionevole
descrivere f (x) mediante un polinomio che passi esattamente attraverso tali punti. Pu`
o essere,
invece, pi`
u opportuna una approssimazione nella quale linuenza degli errori di misurazione sia
minimizzata. In eetti, questo risultato pu`o essere ottenuto utilizzando il metodo dei minimi
quadrati , che esamineremo nel seguito.
Una dierente situazione, ma per la quale `e ancora opportuna una approssimazione di tipo
diverso dalla interpolazione, si presenta quando una funzione assegnata in forma analitica, ad
esempio ex , log x, sin x, ecc., `e approssimata da un polinomio (o da una funzione razionale fratta)
allo scopo di costruire una procedura di calcolo della funzione da utilizzare in un calcolatore.
In questo caso il tipo di approssimazione pi`
u conveniente corrisponde a cercare il polinomio di
minimo grado (e quindi con il minimo costo di valutazione) che approssima la funzione assegnata
con un errore minore di una tolleranza assegnata su tutto un intervallo pressato.
Le due situazioni precedenti sono casi particolari della seguente situazione generale. Supponiamo che la funzione f (x), i cui valori possono essere assegnati su tutto un intervallo (caso continuo)
o solo in corrispondenza ad un numero nito di punti x0 , x1 , . . . , xm (caso discreto), appartenga
ad uno spazio lineare V .
analisi numerica

c
V.
Comincioli

314

Approssimazione di funzioni

Spazi lineari normati Ricordiamo che uno spazio V `e detto lineare, se per ogni coppia di
elementi f e g in V , e un numero arbitrario reale , f e f + g appartengono a V . Inoltre,
un sottoinsieme non vuoto U di uno spazio lineare V `e un sottospazio di V se per ogni coppia
arbitraria f1 , f2 di elementi in U , e un numero arbitrario reale , f1 e f1 + f2 appartengono a
U.
Vi sono diversi tipi di spazi lineari che hanno interesse nelle applicazioni; per il seguito,
tuttavia, ci limiteremo a considerare lo spazio lineare V = C 0 ([a, b]) delle funzioni a valori reali e
continue sullintervallo [a, b] per il caso continuo, e lo spazio dei vettori Rn nel caso discreto.
Per precisare il senso dellapprossimazione occorre introdurre nello spazio V una distanza.
Essa pu`
o essere denita a partire dalla nozione di norma.
Denizione 6.1 (norma) Dato uno spazio lineare V , si dice norma una trasformazione V R,
indicata usualmente con  , con le seguenti propriet`
a, ove f e g sono elementi arbitrari in V
f  0;

f  = 0 f = 0

f  = || f 

f + g f  + g

(disuguaglianza triangolare)

Si denisce allora distanza tra due elementi f e g in V la quantit`


a f g.
Nello spazio C 0 ([a, b]) si possono, ad esempio, denire le seguenti norme

f 2 =

1/2
|f (x)|2 dx

norma 2 (euclidea)

f  = max |f (x)|

norma del massimo (di Chebichev)

axb

a cui corrispondono altrettante distanze e tipi diversi di approssimazione.


Nel caso discreto, cio`e quando sono assegnati i valori f (xi ) in un insieme di punti S =
{xi }m
i=0 , si hanno denizioni analoghe (corrispondenti alla denizione di norma introdotta per
Rn nellAppendice A) Ad esempio, si ha
f 2,S =

m
$

|f (xi )|2

%1/2

i=0

f ,S = max |f (xi )|


xi S

Osserviamo che nel caso in cui f (x) sia denita su tutto un intervallo [a, b] contenente linsieme
di punti S, le quantit`
a ora denite possono essere nulle senza che f (x) sia identicamente nulla
su tutto [a, b]; per tale motivo esse vengono dette seminorme, in quanto non vericano tutte le
condizioni della Denizione 6.1.
Nelle applicazioni `e talvolta opportuno generalizzare le denizioni precedenti introducendo
una funzione peso w(x) > 0, con la quale assegnare una dierente importanza ai valori f (x) nel
calcolo della distanza. Si ha allora, ad esempio

$ b
%1/2
f 2,w =
w(x)|f (x)|2 dx
a

f 2,S,w =

m
$

w(xi )|f (xi )|2 dx

%1/2

i=0

analisi numerica

c
V.
Comincioli

6.2 Problema generale di approssimazione

315

con analoga denizione nel caso della norma del massimo. Naturalmente, la funzione w(x) deve
essere tale da assicurare nel caso continuo lesistenza dellintegrale per ogni f (x) nello spazio V .
Terminiamo questi brevi richiami sugli spazi lineari, ricordando la nozione importante di prodotto scalare e la conseguente nozione di sistema ortogonale, generalizzando le nozioni introdotte
nel caso di V = Rn in Appendice A. Per una generica coppia di funzioni f (x), g(x) nello spazio
o denire un prodotto scalare ponendo
V = C 0 ([a, b]) e per una opportuna funzione peso w(x) si pu`
 b

w(x)f (x)g(x) dx

(f, g) :=

a
m

w(xi )f (xi )g(xi )

(caso continuo)
(caso discreto)

i=0

da cui la seguente denizione di ortogonalit`


a.
Denizione 6.2 (sistema ortogonale) Le funzioni f (x), g(x) V si dicono ortogonali se (f, g) =
0. Un insieme di funzioni 0 , 1 , . . . , n appartenenti a V `e chiamato un sistema ortogonale se
(i , j ) = 0 per i = j, e (i , i ) = 0 per ogni i = 0, . . . , n. Quando (i , i ) = 1, per ogni i, il
sistema `e detto ortonormale.
Nel seguito (cfr. Paragrafo 6.2.2) considereremo dierenti esempi di sistemi ortogonali
 nellambito
dei polinomi. Osserviamo che per la norma, o seminorma, euclidea si ha f 2 = (f, f ).
Si pu`
o allora dimostrare facilmente la seguente generalizzazione della uguglianza di Pitagora.
Se {0 , 1 , . . . , n } `e un sistema ortogonale, si ha
n
n
22
2
2
cj j 22 =
c2j j 22
j=0

(6.20)

j=0

Da tale uguaglianza si ricava, in particolare, che se {0 , 1 , . . . , n } `e un sistema ortogonale, si ha


n
2
2
2
cj j 2 = 0

se e solo se cj = 0, j = 0, 1, . . . , n

j=0

ossia le funzioni 0 , 1 , . . . , n sono linearmente indipendenti.


Approssimazione lineare Ritornando alla denizione del problema di approssimazione, siano
0 , 1 , . . . , n n + 1 funzioni assegnate nello spazio V = C 0 ([a, b]) e U il sottospazio di V costituito
dalle combinazioni lineari
gn (x) = c0 0 (x) + c1 1 (x) + . . . + cn n (x)

(6.21)

al variare delle costanti c0 , c1 , . . . , cn in R. Se, ad esempio, si sceglie i (x) = xi , i = 0, 1, . . . , n,


u n e linsieme U `e lo spazio dei polinomi di grado
allora gn (x) `e un polinomio di grado al pi`
minore o uguale a n. Pur rimanendo nellambito dei polinomi, vi possono essere, tuttavia, per
(x) scelte pi`
u convenienti per le applicazioni (in particolare, come vedremo nel seguito i sistemi
di polinomi ortogonali).
analisi numerica

c
V.
Comincioli

316

Approssimazione di funzioni

Fissata allora in V una particolare norma , il problema dellapprossimazione di una funzione
f (x) V mediante funzioni del sottospazio U pu`
o essere formulato come un problema di minimo,
corrispondente alla ricerca della combinazione gn (x) U , tale che
f gn  f gn  gn U

(6.22)

Pi`
u precisamente, tale problema `e chiamato un problema di approssimazione lineare, in quanto
le funzioni approssimanti gn (x) dipendono linearmente dai parametri incogniti c0 , c1 , . . . , cn . In
questo capitolo tratteremo in particolare i problemi di approssimazione di tipo lineare. I problemi di approssimazione di tipo non lineare, importanti per la modellistica matematica, saranno
considerati sotto vari aspetti nei successivi Capitoli.
Nel seguito del capitolo esamineremo pi`
u in dettaglio lapprossimazione lineare corrispondente
rispettivamente alla norma euclidea e alla norma del massimo.

6.2.1

Norma euclidea. Minimi quadrati

Si cerca gn della forma (6.21) che verica per tutte le funzioni gn (x) dello stesso tipo le seguenti
disuguaglianze
(caso continuo) f

gn 22,w


f

gn 22,w ,

(caso discreto) f gn 22,S,w f gn 22,S,w ,

ove

f 22,w

=
a

ove f 22,S,w =

w(x) |f (x)|2 dx
m

w(xi ) |f (x)|2

i=0

La funzione gn viene detta elemento di migliore approssimazione nel senso dei minimi quadrati ; dal punto di vista geometrico, la funzione gn rappresenta la proiezione ortogonale di f sul
sottospazio U (cfr. Figura 6.16).

Figura 6.16 Interpretazione geometrica del problema dei minimi quadrati.


Dal punto di vista teorico, ossia esistenza ed unicit`a dellelemento di migliore approssimazione, si
ha il seguente risultato, valido sia nel caso discreto che continuo.
analisi numerica

c
V.
Comincioli

6.2 Problema generale di approssimazione

317

Teorema 6.6 (minimi quadrati) Supponiamo che le funzioni 0 , 1 , . . . , n siano linearmente indipendenti. Allora, esiste una ed una sola funzione
gn (x) =

cj j (x)

(6.23)

j=0

tale che
f (x)

gn (x)2

f (x) gn (x)2

per ogni gn (x) =

cj j (x)

j=0

ove  2 indica una delle due norme  2,w ,  2,S,w . Inoltre, la funzione gn (x) `e la soluzione
del seguente sistema lineare (detto sistema delle equazioni normali)
%
$
f (x) gn (x), k (x) = 0,

k = 0, 1, 2, . . . , n

(6.24)

ove ( , ) indica il prodotto scalare in V corrispondente alla norma considerata.


Dimostrazione. Consideriamo come illustrazione graca del teorema la Figura 6.16. Il sottospazio U
di V `e generato dalle combinazioni lineari di 0 , 1 , . . . , n . Il teorema aerma che f gn `e ortogonale alle
funzioni i , e quindi a tutti gli elementi del sottospazio U . Si ha pertanto che gn `e la proiezione ortogonale
di f su U e, in sostanza, il teorema aerma che la proiezione ortogonale gn di f su U `e lelemento in U che
ha la minima distanza euclidea da f . Osserviamo che le equazioni normali (6.24) possono essere scritte nel
seguente modo
(gn , k ) = (f, k ), k = 0, 1, . . . , n
da cui, tenendo conto della rappresentazione (6.23)
n

cj (j , k ) = (f, k ),

k = 0, 1, . . . , n

(6.25)

j=0

Si ha, pertanto, che i coecienti cj sono soluzioni di un sistema lineare con matrice dei coecienti [(j , k )],
j, k = 0, 1, . . . , n e termine noto [(f, k )], k = 0, 1, . . . , n. Dimostriamo che la matrice dei coecienti `e non
singolare e che quindi il sistema lineare (6.25) ammette una ed una sola soluzione. Ragionando per assurdo,
se la matrice fosse singolare, il sistema omogeneo avrebbe una soluzione c0 , c1 , . . . , cn non identicamente
nulla, cio`e tale che
n

cj (j , k ) = 0, k = 0, 1, . . . , n
j=0

Ma, allora, si avrebbe

n
n
n

22
2
2
cj j 22 =
ck
cj (j , k ) = 0
j=0

k=0

j=0

e, contrariamente allipotesi, le funzioni j sarebbero linearmente dipendenti.


n

Dimostriamo ora che ogni funzione gn =


j=0 cj j , con cj = cj per almeno un indice j, ha una

distanza da f maggiore che gn . In eetti, dalla seguente identit`


a
f

n

j=0

analisi numerica

cj j = (f gn ) +

(cj cj )j

j=0

c
V.
Comincioli

318

Approssimazione di funzioni

tenendo conto (cfr. (6.25)) che (f gn , j ) = 0 per j = 0, 1, . . . , n, si ha


(f gn ,

n

(cj cj )j ) = 0
j=0

ossia gli elementi f gn e


(6.20), si ha

j=0 (cj

cj )j sono ortogonali. Applicando allora luguaglianza di Pitagora

n
n

22
22
2
2
2
2
2
2f
cj j 2 = f gn 2 +
(cj cj )j 22
j=0

da cui

j=0
n

2
22
2f
cj j 22 f gn 22
j=0

Luguaglianza si ottiene soltanto per


denti.

cj

= cj , dal momento che gli elementi j sono linearmente indipen-

Esempio 6.9 (Caso continuo) Determinare il polinomio g2 (x) = c0 + c1 x + c2 x2 di migliore approssimazione nel senso dei minimi quadrati, con w(x) 1, della funzione f (x) = ex su tutto lintervallo
[0, 1].
In questo caso abbiamo 0 = 1, 1 = x, 2 = x2 , e il sistema lineare delle equazioni normali (6.25)
diventa il seguente
c0 + 12 c1 + 13 c2 = e 1
1
2 c0

+ 13 c1 + 14 c3 = 1

1
3 c0

+ 14 c1 + 15 c3 = e 2

Risolvendo il sistema in doppia precisione ( 16 cifre decimali), si ottiene come soluzione il vettore
c = [1.01299130990276, 0.85112505284626, 0.83918397639947]
In Figura 6.17 `e rappresentato lerrore f (x) g2 (x). Osserviamo che se arrotondiamo il termine noto del
sistema delle equazioni normali a sei cifre, cio`e poniamo [e 1, 1, e 2] [1.71828, 1, 0.71828] e risolviamo
il corrispondente sistema ancora in doppia precisione, si ottiene come soluzione il vettore
c = [1.01292000000000, 0.85152000000000, 0.83880000000000]
Si vede, quindi, che gli errori relativi sui dati si amplicano sui risultati, indicando la presenza di malcondizionamento nella matrice del sistema. In eetti, tale matrice `e la matrice di Hilbert che abbiamo gi`
a
considerato in precedenza dal punto di vista del condizionamento.
Una osservazione importante, comunque, `e che il malcondizionamento del sistema delle equazioni normali `e legato alla scelta particolare della base j . Come vedremo nel seguito, rispetto ad altri basi il sistema
pu`
o essere bencondizionato.

Esempio 6.10 (Caso discreto) Consideriamo un modo alternativo di ottenere le equazioni normali (6.25).
I coecienti c0 , c1 , . . . , cn possono essere determinati minimizzando la funzione errore
d(c0 , c1 , . . . , cn ) =

w(xi )(f (xi ) gn (xi ))2

i=0

analisi numerica

c
V.
Comincioli

6.2 Problema generale di approssimazione

319

0.015

0.01

0.005

-0.005

-0.01

-0.015
0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

Figura 6.17 Errore f (x) gn (x) su [0, 1] per f (x) = ex e gn polinomio di secondo grado di migliore
approssimazione nel senso dei minimi quadrati.
Ricordiamo allora che in un punto di minimo si ha
d
= 0,
ck
da cui
c0

n

i=0

wi 0 (xi )k (xi ) + + cn

k = 0, 1, . . . , n
n

wi n (xi )k (xi ) =

i=0

wi k (xi )f (xi )

i=0

che coincide con il sistema (6.24). In termini matriciali il sistema precedente pu`o essere scritto nel seguente
modo. Introducendo per brevit`a la notazione
tabf = [f (x0 ), f (x1 ), . . . , f (xm )]T
e indicando con A la matrice di colonne tab i , i = 0, 1, . . . , n, si ha

c0
c1

tab gn = [tab 0 , tab 1 , tab n ] .


..

= Ac

cn
Consideriamo, quindi, il seguente sistema di m + 1 equazioni e n + 1 incognite
tab gn = tab f,

Ac = b

ove si `e posto b := tab f . Il sistema delle equazioni normali corrisponde allora al seguente sistema di n
equazioni e n incognite
(6.26)
AT Ac = AT b
In base al Teorema 6.6 la matrice AT A `e non singolare quando le funzioni i , i = 0, 1, . . . , n sono linearmente indipendenti sui punti x0 , x1 , . . . , xm , cio`e quando i vettori tab i , i = 0, 1, . . . , n sono linearmente
indipendenti. Ad esempio, nel caso in cui i = xi una condizione suciente per la indipendenza lineare
`e che sia m n e i punti xi siano distinti. Infatti, se i vettori tab i fossero linearmente dipendenti,
analisi numerica

c
V.
Comincioli

320

Approssimazione di funzioni
n

si avrebbe j=0 cj tab j = 0 per c0 , c1 , . . . , cn non tutti nulli; ma questo signica j=0 cj xji = 0 per
i = 0, 1, . . . , m. Si avrebbe, quindi, un polinomio di grado n, non identicamente nullo con un numero di
zeri n + 1.
Osserviamo anche che la matrice AT A `e una matrice simmetrica denita positiva. Per la risoluzione
numerica del sistema (6.26) `e, quindi, possibile utilizzare il metodo di Choleski. In caso di malcondizionamento, sono, tuttavia, opportune procedure pi`
u stabili, quali il metodo QR o la decomposizione in valori
singolari.
Ricordiamo, inne, che il calcolo del polinomio di migliore approssimazione nel senso dei minimi quadrati `e noto in statistica come problema di regressione polinomiale. In tale contesto, e quando la dispersione
dei punti `e descrivibile tramite una distribuzione normale, si introduce la seguente misura della dispersione
dei dati intorno al polinomio di regressione
3
Sr
sy/x =
m + 1 (n + 1)
ove Sr = i=0 (f (xi ) c0 c1 xi c2 x2i cn xni )2 . Il denominatore m + 1 (n + 1) indica il numero dei
gradi di libert`
a, tenendo conto dei coecienti ci del polinomio. Oltre alla quantit`
a sy/x , nota come errore
standard della stima, si pu`
o calcolare il coeciente di correlazione r ponendo
m

r2 =

St Sr
St

ove St indica la somma dei quadrati delle dierenze tra la variabile dipendente (la y) e il suo valore medio.
La dierenza St Sr quantica la riduzione dellerrore ottenuta assumendo come modello un polinomio
di grado n. Nel caso di unapprossimazione ideale si ha Sr = 0 e r2 = 1, ossia il polinomio di regressione
rappresenta perfettamente i dati. Al contrario, se r2 = 0 lapprossimazione data dal polinomio non porta
alcun vantaggio.

6.2.2

Polinomi ortogonali

Nel paragrafo precedente abbiamo visto che per particolari scelte delle funzioni j , ad esempio
per j (x) = xj , j = 0, 1, . . . , n, il sistema delle equazioni normali pu`o essere malcondizionato,
con conseguenti dicolt`
a numeriche per la sua risoluzione. Tali dicolt`a possono essere evitate
assumendo j come elementi di una base di polinomi ortogonali, cio`e tali che per una ssata
funzione peso w si abbia (j , k ) = 0 per j = k. In questo caso, infatti, le equazioni normali
diventano
ck (k , k ) = (f, k ), k = 0, 1, . . . , n
e i coecienti ck , chiamati anche coecienti di Fourier , possono essere ottenuti direttamente
ck =

(f, k )
,
(k , k )

k = 0, 1, . . . , n

Rileviamo un altro vantaggio nelluso dei polinomi ortogonali. Se pn `e il polinomio di migliore


approssimazione di grado n, per ottenere il polinomio di migliore approssimazione di grado
(n + 1) `e suciente calcolare cn+1 e porre pn+1 = pn + cn+1 n+1 .
Esempio 6.11 Come esempio introduttivo, calcoliamo i polinomi Pi ortogonali rispetto al seguente
prodotto scalare

f (x)g(x) dx

(f, g) =
1

analisi numerica

c
V.
Comincioli

6.2 Problema generale di approssimazione

321

Assunto P0 = 1, cerchiamo P1 (x) = x + a11 che sia ortogonale a P0 . Si ha


 1
(x + a11 ) dx = 0
1

da cui a11 = 0. In modo analogo, posto P2 = x2 + a21 x + a22 , da (P2 , P0 ) = (P2 , P1 ) = 0 si ricava
a22 = 1/3 e a21 = 0, e quindi P2 (x) = x2 1/3.

Pi`
u in generale, si pu`
o dimostrare il seguente risultato che si dimostra con la stessa procedura
seguita nellesempio precedente.
Teorema 6.7 (polinomi ortogonali) Dato un generico prodotto scalare, esiste una successione di
polinomi ortogonali {i }, i = 0, 1, . . ., con i polinomio di grado i. I coecienti di grado massimo
possono essere scelti arbitariamente; quando sono ssati, il sistema di polinomi ortogonali `e determinato in maniera univoca. I polinomi possono essere calcolati attraverso la seguente formula
ricorrente
n+1 (x) = (n x cn,n ) n (x) cn,n1 n1 (x),

n0

1 (x) 0
0 (x) A0 ,
ove
cn,n =

n (xn , n )
,
(n , n )

cn,n1 =

n (n , n )
n1 (n1 , n1 )

Nel caso discreto, con nodi x0 , x1 , . . . , xm , lultimo polinomio nella successione `e m .


Una propriet`
a importante dei polinomi ortogonali `e espressa dal seguente risultato.
Proposizione 6.1 Il polinomio di grado n in una famiglia di polinomi ortogonali, associata ad
una funzione peso w su un intervallo [a, b], ha n zeri reali semplici, tutti contenuti nellintervallo
aperto ]a, b[.
Esempio 6.12 Costruiamo i polinomi 0 , 1 , 2 , con coecienti di grado massimo uguali a 1, che siano
ortogonali rispetto al prodotto scalare
(f, g) =

f (xi )g(xi )

i=0

ove x0 = 3/2, x1 = 0 e x2 = 3/2. Usando le formule del Teorema 6.7 e ponendo A0 = 1 e n = 1, si


ha 0 = 1 e
2

(x0 , 0 ) =
xi = 0
i=0

da cui 1 = x0 = x. In modo analogo, osservando che


(x1 , 1 ) =

2

i=0

x3i = 0, (0 , 0 ) = 3, (1 , 1 ) =

2

i=0

x2i =

3
2

si trova 2 = x2 1/2.

analisi numerica

c
V.
Comincioli

322

Approssimazione di funzioni

Polinomi di Legendre
Osserviamo che un intervallo arbitrario [a, b] pu`
o essere trasformato nellintervallo [1, 1] mediante
il seguente cambiamento di variabili

b+a
2
x
,
x [a, b], t [1, 1]
t=
ba
2
Pertanto, nel seguito ci limiteremo a considerare lintervallo di riferimento [1, 1].
1
0.8
1
0.6
3

0.4
0.2

2
0
-0.2
-0.4
-0.6
-0.8
-1
-1

-0.8

-0.6

-0.4

-0.2

0.2

0.4

0.6

0.8

Figura 6.18 Polinomi di Legendre di grado 1, 2, 3, 4.


I polinomi di Legendre Pn (x) sono polinomi ortogonali su [1, 1] rispetto alla funzione peso
w(x) = 1, cio`e
 1
Pi (x)Pk (x) dx = 0, i = k
1

Usualmente sono scalati in maniera da avere Pn (1) = 1 per ogni n. In questo caso essi soddisfano
alla seguente formula ricorrente
P0 (x) = 1, P1 (x) = x
2n + 1
n
Pn+1 (x) =
x Pn (x)
Pn1 (x),
n+1
n+1

n1

Si ha, ad esempio
P2 (x) =

1
1
1
(3x2 1), P3 (x) = (5x3 3x), P4 (x) = (35x4 30x2 + 3)
2
2
8

Tali polinomi sono illustrati in Figura 6.18. Un modo alternativo di denire i polinomi di Legendre
`e dato dalla seguente formula
P0 (x) = 1;
analisi numerica

Pn (x) =

1 dn
(x2 1)n , n 1
2n n! dxn
c
V.
Comincioli

6.2 Problema generale di approssimazione

323

Polinomi di Chebichev
I polinomi di Chebichev7 sono deniti per n 0 e x [1, 1] da
Tn (x) = cos(n arccos x)
Per ricavare una formula ricorrente a tre termini per i polinomi di Chebichev, si utilizza lidentit`
a
i
i
e = cos + i sin . Posto x = cos , per [0, ], poiche cos = (e ), si ha, per n 1
Tn+1 (x) + Tn1 (x) = cos(n + 1) + cos(n 1)
=

(ei(n+1) + ei(n1) ) =

(ein (ei + ei ))

= 2 cos cos n = 2xTn (x)


Si ha, pertanto
T0 (x) = 1, T1 (x) = x
Tn+1 (x) = 2xTn (x) Tn1 (x),

n1

Si ha, ad esempio (cfr. Figura 6.19)


T2 (x) = 2x2 1,
T4 (x) = 8x4 8x2 + 1,

T3 (x) = 4x3 3x
T5 (x) = 16x5 20x3 + 5x

function T=ChebT(n)
% coefficienti del polinomio di Chebichev di grado n e di primo genere
% memorizzati in ordine decrescente di potenze
t0=1;
t1=[1 0];
if n==0
T=t0;
elseif n==1
T=t1;
else
for k=2:n
T=[2*t1 0]-[0 0 t0];
t0=t1;
t1=T;
end
end
-----coeff=ChebT(3)
4
0
-3
0

quindi T3 (x) = 4x3 3x. Usando la formula ricorrente, si pu`


o vedere che il coeciente di xn
in Tn (x) `e 2n1 , per n 1. Inoltre, si ha
Tn (x) = (1)n Tn (x)
7

la notazione ormai comune Tn (x) per indicare i polinomi di Chebichev deriva da Tschebysche , uno dei tanti
modi dierenti di trascrivere il nome del matematico russo.
analisi numerica

c
V.
Comincioli

324

Approssimazione di funzioni

1
0.8
1

0.6
0.4
3

0.2

-0.2
-0.4
-0.6
-0.8
-1
-1

-0.8

-0.6

-0.4

-0.2

0.2

0.4

0.6

0.8

Figura 6.19 Polinomi di Chebichev di grado 1, 2, 3, 4.


Gli zeri xk dei polinomi di Chebichev sono ottenuti da
Tn (xk ) = cos(n arccos xk ) = 0 xk = cos

2k + 1
, k = 0, 1, . . . , n 1
n
2

Tra gli zeri, Tn assume i valori estremali +1 e 1 nei punti


xk = cos

k
,
n

k = 0, 1, . . . , n

I polinomi di Chebichev sono ortogonali rispetto alla funzione peso 1/ 1x2 nellintervallo [1, 1];
si ha infatti
 1


Tj (x)Tk (x)

dx =
Tj (cos ) Tk (cos ) d =
cos j cos k d
(Tj , Tk )=
1 x2
1
0
0


0 per j = k
1
=
(cos(j + k) + cos(j k)) d = 2 per j = k = 0

2 0
per j = k = 0
Si pu`
o dimostrare che T0 , T1 , . . . , Tm sono ortogonali rispetto al prodotto scalare
(f, g) =

f (xi )g(xi )

i=0

ove xi sono gli zeri di Tm+1 (x). Osserviamo che nel caso discreto, la funzione peso `e 1. Un caso
particolare `e stato considerato nellEsempio 6.12.
function x = seqcheb(n, k)
%SEQCHEB
Polinomi di Chebyshev
%
x = seqcheb(n,k) produce un vettore riga di ordine n.
%
k = 1: zeri of T_N (di default)
analisi numerica

c
V.
Comincioli

6.2 Problema generale di approssimazione

%
%

325

k = 2: estremi of T_{N-1},
ove T_r `
e il polinomio di Chebsyhev di grado r.

if nargin == 1, k = 1; end
if k == 1
% Zeri di T_n
i = 1:n; j = .5*ones(1,n);
x = cos( (i-j) * (pi/n) );
elseif k == 2
% Estremi di T_(n-1)
i = 0:n-1;
x = cos( i * (pi/(n-1)) );
end

Linteresse dei polinomi di Chebichev nel calcolo numerico `e indicato dal seguente risultato.
Teorema 6.8 (propriet`
a di minimax dei polinomi di Chebichev) Tra tutti i polinomi con coeciente di grado massimo uguale a 1, il polinomio 2(n1) Tn ha la minima norma del massimo sullintervallo [1, 1].
Volendo, ad esempio, calcolare il polinomio q3 (x), di grado 3, che minimizza
max |x4 q3 (x)|

1x1

si pu`o utilizzare il fatto che il polinomio di Chebichev 18 T4 (x) = x4 x2 + 18 `e il polinomio di quarto


grado, con coeciente di grado massimo uguale a 1, che ha la pi`
u piccola norma del massimo su
[1, 1]. Si pu`
o, allora, scegliere q3 (x) in modo che
1
1
x4 q3 (x) = T4 (x) q3 (x) = x2
8
8
In Figura 6.20 `e rappresentata la funzione errore x4 q3 (x); come si vede, tale funzione oscilla
tra i suoi estremi 18 in cinque punti. Come vedremo nel paragrafo successivo, si tratta di una
propriet`
a caratteristica dellapprossimazione nella norma del massimo.

6.2.3

Norma del massimo. Approssimazione di Chebichev

In questo paragrafo consideriamo il problema della migliore approssimazione quando la norma `e


denita da
f  = max |f (x)|
axb

con [a, b] intervallo limitato e chiuso. Si pu`o dimostrare che per ogni intero
ove f (x)
n ssato e ogni f C 0 ([a, b]) esiste uno ed un solo polinomio pn (x), di grado n, tale che
C 0 ([a, b]),

En (f ) := f pn  f pn 
per tutti i polinomi pn di grado n. Inoltre, applicando il teorema di Weierstrass, si ha En (f ) 0
per n . Quando f `e sucientemente regolare, ad esempio dotata di derivata k-ma continua,
si pu`o dimostrare che En (f ) = O(1/nk ), per n .
u complicato di quello
Il calcolo numerico del polinomio pn `e, in generale, decisamente pi`
relativo al polinomio di migliore approssimazione nella norma euclidea. Ci limiteremo, pertanto,
a considerare alcune idee sullintervallo di riferimento [1, 1].
analisi numerica

License
edgt-5-CLI_20110006666311-TX_20110006666311_9788850310319
granted on March 09 2011 to Alister Petrolini

c
V.
Comincioli

326

Approssimazione di funzioni

0.15
x

0.1

0.05

-0.05

-0.1
x

-0.15
-1

-0.8

-0.6

-0.4

-0.2

0.2

0.4

0.6

0.8

Figura 6.20 Funzione errore x4 q(x), con q(x) polinomio di migliore approssimazione di x4 nella norma
del massimo su [1, 1].

Incominciamo ad osservare che pn pu`


o essere approssimato mediante un opportuno polinomio
di interpolazione. Abbiamo visto (cfr. Esempio di Runge (6.9)) che, quando nella interpolazione
sono utilizzati punti equidistanti si possono avere grossi errori vicino agli estremi dellintervallo.
Questo fatto suggerisce di utilizzare un numero maggiore di nodi vicino agli estremi, in maniera da
costringere il polinomio a seguire meglio la funzione. Una distribuzione di questo tipo `e ottenuta
mediante gli zeri dei polinomi di Chebichev . Il fondamento teorico a questa scelta `e il seguente.
Ricordiamo che lerrore di interpolazione, quando la funzione f (x) `e sucientemente regolare, `e
dato da
f (n+1) ((x))
(x x1 )(x x2 ) (x xn+1 )
(n + 1)!
Si vede, quindi, che lerrore dipende sia dal comportamento della derivata di ordine (n + 1)-ma
della funzione che dal polinomio (x x1 )(x x2 ) (x xn+1 ). Questo secondo termine pu`o
essere appunto minimizzato scegliendo come nodi xi gli zeri del polinomio di Chebychev di grado
n + 1. Infatti, in base al Teorema 6.8, si ha che, assumendo
(x x1 )(x x2 ) (x xn+1 ) = 2n Tn+1 (x)
viene minimizzato il termine
max |(x x1 )(x x2 ) (x xn+1 )|

1x1

Lasciamo come esercizio vericare che, nel caso in cui f = xn+1 , il polinomio di interpolazione negli
zeri del polinomio di Chebichev di grado n+1 coincide con il polinomio di migliore approssimazione
nella norma del massimo.
Unaltra propriet`
a utile nella costruzione del polinomio di migliore approssimazione secondo
la norma del massimo `e espressa dal seguente risultato (cfr. per una illustrazione la Figura 6.20).

analisi numerica

c
V.
Comincioli

6.2 Problema generale di approssimazione

327

Teorema 6.9 (propriet`


a di alternanza) Sia f (x) C 0 ([a, b]), con [a, b] intervallo limitato e chiu
so. Un polinomio pn `e il polinomio di migliore approssimazione nella norma del massimo della
funzione f nellambito dei polinomi di grado n se e solo se esistono n + 2 punti x0 , x1 , . . . , xn+1
tali che
|f (xk ) pn (xk )| = f pn  , k = 0, 1, . . . , n + 1
e

f (xk ) pn (xk ) = (f (xk+1 ) pn (xk+1 )),

k = 0, 1, . . . , n

In altre parole, la funzione errore f pn assume alternativamente i valori f pn  in almeno


(n + 2) punti.
Esempio 6.13 Come illustrazione del Teorema 6.9 calcoliamo il polinomio di migliore approssimazione
di grado 1 della funzione ex sullintervallo [0, 1]. Si tratta, quindi, di trovare c0 , c1 tali che sia minimizzata
la quantit`
a
max |ex (c0 + c1 x)|
0x1

Indicando con d il valore estremale assunto dalla funzione errore e(x) = ex (c0 + c1 x), si vede facilmente
che tale valore `e assunto negli estremi dellintervallo e in un punto interno . Si ha, quindi
e(0) = d,

e() = d,

e(1) = d

Nel punto si deve, inoltre, avere e () = 0. Si hanno pertanto le seguenti equazioni


1 c0 = d
e c0 c1 = d
e c0 c1 = d

e c1 = 0
da cui con semplici calcoli, si ottiene
1
(e (e 1) ln(e 1)) 0.894066; c1 = e 1 1.718281
2
= ln(e 1) 0.541324, d = 1 c0 0.105933

c0 =

Per n > 1 il Teorema 6.9 `e utilizzato in un algoritmo iterativo, noto come algoritmo di Remes.
Lidea dellalgoritmo `e, in forma schematica, la seguente.
(0)

1. Si parte da un insieme di punti xi , che possono ad esempio essere gli zeri del polinomio di
Chebichev di grado n + 1.
2. Imponendo la condizione di alternanza, si calcolano, come nellesempio precedente, i coecienti
del polinomio e la distanza d.
(1)

3. Si calcolano i punti interni xj

nei quali la funzione errore raggiunge il massimo o il minimo.

4. Se la funzione errore verica la condizione di alternanza, si `e ottenuto il polinomio richiesto.


(1)
In caso contrario si riparte dai punti xj .

analisi numerica

c
V.
Comincioli

328

Approssimazione di funzioni

 Esercizio 6.17 Approssimare la funzione f (x) =

3
x mediante un polinomio di primo grado sullin-

tervallo [0, 1]
(a) nel senso dei minimi quadrati con funzione peso 1;
(b) nella norma del massimo.

 Esercizio 6.18 Determinare i parametri a, b, c nella funzione


z = ax + by + c
mediante il metodo dei minimi quadrati a partire dai seguenti dati
x
y
z

0
0
1.2

1.2
0.5
3.4

2.1
6.0
-4.5

3.4
0.5
9.9

4.0
5.1
2.4

4.2
3.2
7.2

5.6
1.3
14.3

5.8
7.4
3.5

6.9
10.2
1.2

 Esercizio 6.19 Si consideri la seguente legge sperimentale V = a + bT + cT 2 , ove V `e la viscosit`a di


un liquido e T `e la temperatura. Trovare mediante il metodo dei minimi quadrati i parametri a, b e c a
partire dai seguenti dati sperimentali
T
V

1
2.31

2
2.01

3
1.80

4
1.66

5
1.55

6
1.47

7
1.41

 Esercizio 6.20 Lazoto e lossigeno hanno i pesi atomici N 14 e O 16. Usando il peso molecolare
dei seguenti sei ossidi di azoto,
N O2 = 46.006
N O = 30.006
N2 O = 44.013
N2 O3 = 76.012 N2 O5 = 108.010 N2 O4 = 92.011
stimare mediante il metodo dei minimi quadrati i pesi atomici dellazoto e dellossigeno a quattro cifre
decimali.

 Esercizio 6.21 Costruire il polinomio di primo grado di migliore approssimazione nel senso dei minimi
quadrati con i polinomi di Legendre e rispettivamente di Chebichev per le seguenti funzioni
(a) f (x) = ln x su [1, 2],
(b) f (x) = sin x su [0, 1]

6.3

Calcolo numerico delle derivate

La necessit`a del calcolo approssimato della derivata di una funzione si pone, ad esempio, quando
la funzione `e data in forma di tabella, cio`e quando essa `e nota solo in un numero nito di punti.
In questo caso, e quando `e necessario calcolare le derivate in un numero elevato di punti, pu`o
essere conveniente calcolare una spline interpolante e approssimare le derivate della funzione
con le derivate della corrispondente spline. Luso dei polinomi di interpolazione, invece, non `e
in generale opportuno, in quanto, come abbiamo visto nei paragra precedenti, le derivate del
polinomio di interpolazione non sono sempre buone approssimazioni delle derivate della funzione.
analisi numerica

c
V.
Comincioli

6.3 Calcolo numerico delle derivate

329

Figura 6.21 Approssimazione della derivata f  (x) mediante il coeciente angolare di tre dierenti corde.
Un procedimento alternativo si basa sulluso di formule alle dierenze, cio`e di opportuni
rapporti incrementali. Nel seguito esamineremo, in particolare dal punto di vista dellerrore di
troncamento, alcune di tali formule, che sono anche alla base, come vedremo successivamente di
metodi per la risoluzione numerica di equazioni dierenziali.
Assumendo che la funzione f (x) sia nota nei punti x h, x e x + h, possiamo stimare f  (x), cio`e
il coeciente angolare della tangente alla curva y = f (x) nel punto x, mediante il coeciente
angolare di dierenti rette (cfr. Figura 6.21). Usando la corda 1, relativa ai punti (x, f (x)) e
(x + h, f (x + h)), si ottiene
f (x + h) f (x)
=: f
f  (x)
h
Lapprossimazione ottenuta `e chiamata dierenza in avanti (forward dierence).
Utilizzando la retta 2 attraverso i punti (x, f (x)) e (x h, f (x h)), si ottiene la seguente
approssimazione, chiamata dierenza allindietro (backward dierence):
f  (x)

f (x) f (x h)
=: f
h

Una approssimazione simmetrica `e ottenuta mediante la retta 3 passante per i punti (x h, f (x


h)) e (x + h, f (x + h)); si ha, allora
f  (x)

f (x + h) f (x h)
=: f
2h

che `e chiamata dierenza centrale (central dierence).


Procedendo in maniera analoga si possono approssimare derivate di ordine superiore. Ad
esempio, approssimando la f mediante un polinomio di secondo grado attraverso i punti (x
h, f (x h)), (x, f (x)) e (x + h, f (x + h)), si ottiene la seguente approssimazione alle dierenze
centrali
f (x + h) 2f (x) + f (x h)
f  (x)
=: f
h2
analisi numerica

c
V.
Comincioli

330

Approssimazione di funzioni

h
0.4
0.2
0.1
0.05
0.025

ex ex
0.624013
0.290893
0.140560
0.069103
0.034263

r
2.14
2.06
2.03
2.01

ex ex
0.0730696
0.0181581
0.0045327
0.0011327
0.0002831

r
4.02
4.00
4.00
4.00

Tabella 6.1 Errori di troncamento relativi allapprossimazione della derivata prima della funzione ex nel
punto x = 1 mediante loperatore di dierenza in avanti e rispettivamente loperatore della dierenza
centrale. Il valore r rappresenta il rapporto fra una approssimazione e la successiva.

6.3.1

Studio dellerrore di troncamento

In Tabella 6.1 sono riportati, per successivi valori di h, gli errori che si commettono approssimando la derivata prima della funzione ex nel punto x = 1 mediante la dierenza in avanti e
rispettivamente la dierenza centrale. Nel primo caso si vede che lerrore `e, approssimativamente,
dimezzato quando il passo `e ridotto di un fattore due, mentre nel secondo caso `e, sempre approssimativamente, ridotto di un fattore quattro. I risultati suggeriscono, quindi, una convergenza a
zero di tipo lineare nel primo caso e quadratica nel secondo.
Pi`
u in generale, lerrore di troncamento pu`
o essere studiato, quando la funzione f (x) `e sucientemente regolare, mediante uno sviluppo in serie. Ad esempio, per una funzione f (x) due volte
continuamente derivabile si ha
f (x + h) f (x)
f  (x)
h
h2
h
1
= (f (x) + hf  (x) + f  () f (x)) f  (x) = f  ()
h
2
2

ET : =

ove `e un punto opportuno nellintervallo (x, x + h). Si vede, quindi, che lerrore `e un innitesimo
con h del primo ordine per h 0 (cio`e ET = O(h)).
Procedendo in maniera analoga, si trova nel caso della approssimazione mediante la dierenza
centrale
h2 
f (x + h) f (x h)
f  (x) =
f () = O(h2 )
2h
6
e
h2 (4)
f (x + h) 2f (x) + f (x h)

f ()

f
(x)
=
h2
12

6.3.2

Inuenza degli errori di arrotondamento

Linuenza degli errori di arrotondamento nel calcolo approssimato della derivata `e illustrata in
Tabella 6.2, nella quale sono riportati i risultati ottenuti mediante la dierenza centrale per la
funzione ex in x = 1. I calcoli sono stati eseguiti con precisione macchina eps 2.221016 . Come
si vede, lerrore diminuisce no ad un certo valore di h, per poi aumentare. Questo comportamento
`e dovuto al fatto che i valori e1h sono calcolati in modo approssimato e per h piccolo si verica
una cancellazione.
Pi`
u in generale, indichiamo con f(x h) i valori approssimati di f (x h) e supponiamo che
|f(x h) f (x h)| 
analisi numerica

c
V.
Comincioli

6.3 Calcolo numerico delle derivate

h
1.101
1.102
1.103
1.104
1.108
1.109
1.1010
1.1014

331

ex ex
0.004532
0.0000453
0.0000000453
0.00000000453
0.0000000165
0.0000000740
0.000000224
0.002172

Tabella 6.2 Inuenza degli errori di arrotondamento nel calcolo approssimato della derivata prima
della funzione ex per x = 1.

errore totale

errore troncamento
errore arrotondamento
h ottimale

Figura 6.22 Errore di arrotondamento e errore di troncamento nellapprossimazione della derivata mediante
le dierenze centrali.

ove  `e una quantit`a dipendente dalla precisione macchina utilizzata. Allora, indicata con
la dierenza centrale, calcolata numericamente, si ha la seguente maggiorazione dellerrore di
troncamento
2
(x) f  (x)|  + h |f (3) ()|
|f
h
6
Per h 0, si ha pertanto una componente dellerrore che tende allinnito; in altre parole, al
diminuire del passo h gli errori di arrotondamento possono prevalere sullerrore di troncamento
e fornire quindi risultati inattendibili. La situazione `e illustrata in Figura 6.22, ove `e indicata la
scelta ottimale del passo h corrispondente al minimo della funzione /h + h2 |f (3) |/6.
 Esercizio 6.22 Determinare lerrore di troncamento delle seguenti approssimazioni
f (x + 3h) f (x h)
4h
4f (x + h) 3f (x) f (x + 2h)
(b) f  (x)
2h
(a) f  (x)

analisi numerica

c
V.
Comincioli

332

Approssimazione di funzioni

(c) f  (x)

f (x 2h) 8f (x h) + 8f (x + h) f (x + 2h)
12h

 Esercizio 6.23 Analizzare la seguente approssimazione


2+h
2h2

2
f (x + h) 2 f (x) +
h

2h
2h2

f (x h)

dellespressione f  (x) + f  (x).

 Esercizio 6.24 Analizzare le seguenti approssimazioni


f (x + 2h) 2f (x) + f (x 2h)
4h2
f (x + 2h) 2f (x + h) + 2f (x h) f (x 2h)
(b) f  (x)
2h3
(a) f  (x)

 Esercizio 6.25 Dati i punti x1 < x2 < x3 , con x2 x1 = h e x3 x2 = sh, analizzare la seguente
formula

2
f (x) 2
h


6.4

f (x1 ) f (x2 )
f (x3 )

+
1+s
s
s(s + 1)

Introduzione alle funzioni Wavelet

Una immagine, un segnale, una volta acquisiti, devono essere opportunamente analizzati, ossia
ecientemente codicati, compressi, ltrati, ricostruiti, descritti, semplicati.
A questo scopo, sono a disposizione da tempo numerosi strumenti. Probabilmente il pi`
u noto
tra questi `e lAnalisi di Fourier, che decompone un segnale nelle sue componenti sinusoidali
di dierenti frequenze.8 In maniera per ora formale, un segnale f (t) (nelle applicazioni, la variabile indipendente t pu`
o corrispondere sia ad una variabile temporale, come nel caso delle serie
temporali, sia ad una variabile spaziale, come nel caso delle immagini), periodico su (0, 2) `e
rappresentato dal seguente sviluppo in serie (di Fourier)

a0
+
(ak cos kt + bk sin kt)
2

(6.27)

k=1

ove
ak =

2
0

f (t) cos(kt) dt, k = 0, 1, .., bk =

f (t) sin(kt) dt, k = 1, ..


0

Il resulte [ . . . ] que si lon propose une fonction f x, dont la valeur est representee dans un intervalle determine,
depuis x = 0 jusqua x = X, par lordonnee dune ligne courbe tracee arbitrairement on pourra toujours d
evelopper
cette fonction en une serie qui ne contiendra que les sinus, ou les cosinus, ou les sinus et les cosinus des arcs multiple
ou les seuls cosinus des multiples impairs. Joseph Fourier (17681830), Theorie analytique de la chaleur. Chap.
III, Sect. VI, Art. 235 (1822). Luso delle serie trigonometriche nellanalisi appare per la prima volta nei lavori
di L. Eulero (17071783), in particolare per lo studio della propagazione del suono in un mezzo elastico; a Eulero
sono dovute le formule per i coecienti della rappresentazione delle serie di Fourier (cfr. Nota 9). J.L. Lagrange
(17361813) pubblica una formula per una serie di seni nel 1762. Nel 1753 D. Bernoulli (1700-1782) esprime la
deformazione di una corda vibrante come una serie di seni e coseni aventi come argomenti sia la posizione che
il tempo. C.F. Gauss (17771855) estende il lavoro di Eulero e di Lagrange, con applicazione al problema della
determinazione dellorbita di alcuni asteroidi a partire da posizioni campione. Nel 1805, in un manoscritto non
pubblicato, Gauss sviluppa un algoritmo simile alla Fast Fourier Transform (FFT) di Cooley-Tukey.
analisi numerica

c
V.
Comincioli

6.4 Introduzione alle funzioni Wavelet

333
2.5

f(t)

ampiezza

F
I
L
T
E
R
I
N
G

1.5
1
0.5

t
5

10

20

2.5
2

ampiezza

f(t)

1.5
1
0.5

t
4

15

frequenza

FOURIER

10

15

20

frequenza

Figura 6.23 Lanalisi di Fourier trasforma il dominio-tempo (time-domain) nel dominio-frequenza


(frequency-domain). Nella prima gura `e rappresentata la funzione f (t), mentre nella seconda sono rappresentati i coecienti dei termini sinusoidali corrispondenti alle diverse frequenze. Il passaggio dalla prima
gura alla terza corrisponde ad unoperazione di ltraggio, ottenuta mediante eliminazione della frequenza
pi`
u elevata (cfr. seconda e quarta gura).

Tale sviluppo `e estremamente utile perche evidenzia il contenuto del segnale in termini di frequenza.9 In eetti, si pu`
o pensare allanalisi di Fourier come ad una tecnica matematica per
trasformare il modo di guardare ad un segnale: da uno basato sul tempo, ad uno basato sulla
frequenza (cfr. Figura 6.23 per una semplice illustrazione).
Da tale rappresentazione `e possibile individuare quali sono le frequenze importanti in un
particolare segnale studiando la grandezza dei coecienti delle varie sinusoidi nella combinazione
lineare.
I risultati dellanalisi possono essere utilizzati per pulire (denoise), o pi`
u in generale ltrare
9

Ricordando le identit`
a di Eulero
sin t =

eit eit
,
2i

cos t =

eit + eit
2

la (6.27) pu`
o essere riscritta nella forma equivalente

ck e
k=

ove

Z = {. . . , 1, 0, 1, . . .}.

ikt

1
ck =
2

 2

f (t)e

ikt

dt, k Z,

ak
bk

=
=

ck + c k,
i(ck ck )

(6.28)

Posto ck = |ck | eik , si ha lespressione equivalente


|c0 | cos 0 + 2

|ck | cos(kt + k )

k=1

Le quantit`
a 2|ck |2 = 2|ck |2 (k N) e c20 = a20 /4 sono invarianti per traslazione e linsieme delle quantit`
a |ck |2 `e
chiamato lo spettro di potenza (power spectrum) del segnale f (t), mentre la quantit`
a 2|ck |, chiamata lampiezza
(amplitude) del segnale, `e una misura di quanto la componente armonica k-ma contribuisce al segnale f . Langolo
k `e chiamato langolo di fase (angle phase).
analisi numerica

c
V.
Comincioli

334

Approssimazione di funzioni

(lter ), un segnale, ossia per eliminare determinate frequenze, quali ad esempio le pi`
u elevate nel
caso di presenza nei dati di rumori (noises) (cfr. Figura 6.23).
Lanalisi di Fourier si rivela uno strumento particolarmente utile nello studio di segnali che si
mantengono praticamente invariati nel tempo (segnali stazionari). Pu`
o essere invece non adeguata
nel caso di segnali con caratteristiche transitorie, quali bruschi cambiamenti, inizio e ne di
particolari eventi, che rappresentano spesso la parte pi`
u importante del segnale.10 In eetti,
dalla trasformata di Fourier di un segnale non `e possibile ricavare quando o dove un particolare
evento ha luogo. Questa `e una conseguenza del fatto matematico che le funzioni della base di
rappresentazione del segnale (le funzioni sinusoidali) non sono di carattere locale.

Figura 6.24 Sinusoide con una piccola discontinuit`a.


Un primo tentativo per ovviare a questo difetto dellanalisi di Fourier `e stato fatto da Dennis Gabor (1946) con lintroduzione della STFT (Short-Time Fourier Transform). In maniera
schematica (lidea sar`a ripresa pi`
u in dettaglio nel seguito), lidea consiste nellanalizzare delle
piccole porzioni del segnale per volta, ossia in un opportuno windowing del segnale.
La tecnica STFT rappresenta una sorta di compromesso fra i due modi di guardare un segnale:
il time-domain e il frequency-domain, nel senso che fornisce uninformazione sia su quando si
verica un particolare evento nel segnale, sia a quali frequenze. Un possibile inconveniente deriva
dal fatto che una volta scelta una particolare dimensione per la time-window, tale window `e la
stessa per tutte le frequenze. Nelle applicazioni sarebbe, invece, auspicabile un approccio pi`
u
essibile, nel quale si possa variare la dimensione della window, per determinare accuratamente
sia il tempo che la frequenza.
Lanalisi wavelet 11 rappresenta il logico successivo passo: una tecnica windowing con regioni
a dimensioni variabili. Essa permette luso di larghi intervalli ove si desiderano informazioni su
frequenze basse e di intervalli pi`
u corti per frequenze pi`
u elevate. Di conseguenza gli algoritmi
wavelet permettono di trattare i dati a dierenti scale o risoluzioni. Se si guarda ad un segnale
con una window ampia, si dovrebbero vedere le caratteristiche pi`
u macroscopiche, mentre con
una window pi`
u piccola si dovrebbero vedere i dettagli. In maniera gurata, nellanalisi wavelet
si possono vedere sia le foreste che gli alberi.
Per illustrare in maniera semplice labilit`
a dellanalisi wavelet di eettuare unanalisi locale,
consideriamo (cfr. Figura 6.24, Wavelet Toolbox A.12) un segnale sinusoidale con una piccola
discontinuit`
a, corrispondente ad esempio ad un uttuazione di potenza o ad un improvviso rumore.
10

Per segnali spaziali, quali le immagini, tali bruschi cambiamenti possono corrispondere, ad esempio, ai
contorni di una gura. Come esempio di segnale non stazionario, si pensi allanalisi ECG (elettrocardiogramma). Il
contenuto in frequenza dellECG varia nel tempo: il complesso QRS `e unonda ad alta frequenza, mentre londa T
contiene componenti a bassa frequenza. Pertanto, per unaccurata descrizione dei contenuti in frequenza dellECG,
`e essenziale la possibilit`
a di individuare la loro collocazione nel tempo.
11
ondelette in francese, ondina in italiano.
analisi numerica

c
V.
Comincioli

6.4 Introduzione alle funzioni Wavelet

335

Figura 6.25 Rappresentazione di Fourier e rappresentazione wavelet del segnale rappresentato in


Figura 6.24.

In Figura 6.25 `e rappresentato, da una parte il graco dei coecienti della rappresentazione
di Fourier, e dallaltra quello dei coecienti della rappresentazione wavelet. Lo spettro di Fourier
appare evidentemente piatto con due picchi corrispondenti alle due frequenze: quella principale
e quella relativa alla discontinuit`
a. Nella rappresentazione relativa alle wavelet, nellasse delle
ascisse `e riportato il tempo e in quella delle ordinate il fattore scala (grosso modo, come vedremo
meglio nel seguito, a piccoli valori del fattore scala corrispondono frequenze elevate del segnale);
lintensit`
a del colore indica la grandezza del coeciente della wavelet (assimilabile allampiezza
della frequenza nella rappresentazione di Fourier). Per convenzione, a colori pi`
u chiari corrispondono coecienti pi`
u grandi. Il graco fornisce quindi tre informazioni, tra le quali anche la
posizione (nel tempo, o nello spazio) delle varie frequenze.
Diamo ora unidea della tecnica wavelet.

Figura 6.26 Confronto tra base di Fourier e base wavelet.


Una wavelet `e una funzione a forma di onda di durata limitata con valore medio nullo.
In Figura 6.26 sono messe a confronto la funzione seno (funzione base per lanalisi di Fourier) ed
un esempio di wavelet. Come si vede, a dierenza della sinusoide, la wavelet ha supporto limitato
(si annulla al di fuori di un intervallo nito) ed un comportamento irregolare e asimmetrico.
Come abbiamo visto in precedenza, lanalisi di Fourier consiste nel decomporre il segnale in
onde sinusoidali di varie frequenze (cfr. Figura 6.27). In modo simile, nellanalisi wavelet si
decompone il segnale in funzioni che sono ottenute a partire da una wavelet originaria (la mother
wavelet, del tipo mostrato in Figura 6.26) con operazioni di shifting (traslazione) e di scaling
(cambiamento di scala) (cfr. Figura 6.28). Le operazioni di scaling e di shifting sono illustrate
rispettivamente in Figura 6.29 e in Figura 6.30. Lo scaling di una wavelet signica semplicemente
analisi numerica

c
V.
Comincioli

336

Approssimazione di funzioni

Figura 6.27 Schema della trasformata di Fourier.


un suo stiramento (stretching) o una sua compressione (compressing); lo scaling `e misurato dal
fattore scala (scale factor ). Se (t) `e la funzione di partenza, (t/a) `e la funzione scalata; pi`
u
piccolo `e il fattore scale, e pi`
u la wavelet `e compressa.

Figura 6.28 Schema della trasformata wavelet.


Le considerazioni precedenti possono essere formalizzate nella seguente denizione (cfr. [287])
che sar`a analizzata nei paragra successivi.
Denizione 6.3 Una wavelet di classe r, r N `e una funzione L2 (R) che verica le seguenti
propriet`
a
(i) linsieme delle funzioni 2j/2 (2j x k), j Z, k Z, forma una base ortonormale di L2 (R).
(ii) s L (R), s = 0, 1, . . . , r.
(iii) decresce rapidamente per |x| insieme alle sue derivate di ordine minore o uguale a r.
(iv) la funzione possiede momenti nulli no allordine r

xk (x) dx = 0, 0 k r

Le funzioni j,k := 2j/2 (2j x k), j Z, k Z sono chiamate wavelets generate dalla wavelet
mother . Esse sono ottenute mediante le operazioni di shifts (ossia, traslazioni mediante interi)
e di diadic dilation (dilatazioni con potenze di due).
analisi numerica

c
V.
Comincioli

6.4 Introduzione alle funzioni Wavelet

337

La propriet`
a (iii) esprime la localizzazione nel dominio dello spazio, mentre la propriet`
a (ii) indica
che la funzione `e regolare, e questo comporta, come vedremo nel seguito, la localizzazione nel
dominio delle frequenze. Inne, la propriet`
a (iv) esprime il carattere oscillante della funzione
, e quindi delle funzioni j,k , inoltre assicura, nellanalisi dei segnali, leliminazione di segnali
polinomiali.
Come vedremo successivamente, tramite le basi wavelet `e possibile ottenere una decomposizione tempo-frequenza di una funzione assegnata. Pi`
u precisamente, una funzione f L2 (R) pu`
o
essere espressa come somma pesata di opportune funzioni wavelet j,k , j, k Z nel seguente modo
f=


jZ kZ

cj,k j,k

ove i coecienti wavelet cj,k costituiscono la trasformata wavelet di f .


La localizzazione in tempo (o spazio) e frequenza rendono lanalisi wavelet uno strumento
particolarmente interessante in diverse campi applicativi: dallanalisi dei segnali e delle immagini,
alla compressione delle immagini12 , al ltraggio di segnali biomedici (cfr. Figura 6.32), al riconoscimento di forme, alla individuazione e stima del trend di un segnale,13 alla approssimazione
delle soluzioni di equazioni dierenziali, alla determinazione di fenomeni di usso interessanti,
quali gli shocks e i vortici (cfr. ad esempio [161]).14
Da un punto di vista storico, il termine wavelet appare per la prima volta in un lavoro di A.
Haar (1909, [179]), mentre il concetto di wavelets, nella sua forma teorica attuale, `e stato proposto
in [178] (nel contesto della sica quantistica).
12

Segnaliamo nel campo della compressione di immagini unimportante applicazione. Problemi analoghi si hanno
per quanto riguarda le immagini biomediche, con applicazioni alla telemedicina e a Internet. Between 1924 and
today, the US Federal Bureau of Investigation has collected about 30 million set of ngerprints. The archive
consists mainly of inked impressions on paper cards. Facsimile scans of the impressions are distributed among
law enforcement agencies, but the digitization quality is often low. Because a number of jurisdictions are are
experimenting with digital storage of the prints, incompatibilities between data formats have recently become a
problem. This problem led to a demand in the criminal justice community for a digitization and a compression
standard.
In 1993, the FBIs Criminal Justice Information Services Division developed standards for ngerprint digitization
and compression in cooperation with the National Institute of Standards and Technology, Los Alamos National
Laboratory, commercial vendors, and criminal justice communities ([52]).
Lets put the data storage problem in perspective. Fingerprint images are digitized at a resolution of 500 pixels
per inch with 256 levels of gray-scale information per pixel. A single ngerprint is about 700000 pixels and needs
about 0.6Mbytes to store. A pair of hands, then requires about 6 Mbytes of storage. So digitizing the FBIs current
archive would result in about 200 terabytes of data. (Notice that at todays prices of about $ 900 per Gbyte for
hard-disk storage, the cost of storing these uncompressed images would be about a 200 million dollars.) Obviously,
data compression is important to bring these numbers down ([175].
13
Il valore Y (t) di una serie temporale osservabile al tempo t, viene solitamente pensato come risultato di due
dierenti componenti non osservabili, il cosiddetto trend T (t) ed una componente stocastica X(t (chiamata anche
il noise process). Si ha quindi Y (t) = T (t) + X(t). Il trend pu`
o essere denito come una funzione regolare
non random (deterministica) che rappresenta un movimento a lungo-termine od una sistematica variazione in una
serie (cfr. [343]). La determinazione e la stima del trend in presenza di rumori stocastici `e un problema molto
frequente nelle applicazioni (si pensi ad esempio al problema dello studio dellevoluzione della temperatura ad
esempio nellemisfero settentrionale, a partire dai rilevamenti nei secoli passati).
14
Vi sono, naturalmente, situazioni nelle quali luso della trasformata di Fourier rimane pi`
u appropriato. In eetti,
le wavelet hanno una risoluzione in frequenza inferiore alla trasformata di Fourier. Cos`, se si vuole caratterizzare il
contenuto in frequenza di un segnale (ad esempio, cercare la frequenza esatta di una nota), la trasformata mediante
wavelet non `e appropriata.
analisi numerica

c
V.
Comincioli

338

Approssimazione di funzioni

Figura 6.29 Illustrazione dello scaling applicato ad una wavelet.

Figura 6.30 Illustrazione dello shifting applicato ad una wavelet.


Successivamente, il settore si `e sviluppato in maniera considerevole, sia per quanto riguarda i
fondamenti teorici che gli aspetti algoritmici e applicativi. In eetti, le wavelets sono diventate
rapidamente uno strumento versatile con un elevato contenuto matematico e con un grande
potenziale per le applicazioni. Lobiettivo dei paragra successivi `e quello di introdurre i concetti
e i risultati di base, con un particolare rilievo per quanto concerne le applicazioni.
Per un conveniente approfondimento esistono numerose monograe; si vedano ad esempio [83],
[84], [403], [214], [107], [63], [271], [317], [333], [229], [389], [417], [436], [198], [416], [393], [424],
[14], [288], [2], [67], [55], [334].
Per le applicazioni in medicina e biologia segnaliamo in particolare [8].
Per un aggiornamento continuo nel settore segnaliamo il link 14; altri links interessanti:
link 15, link 16, link 17, link 18, link 20, link 21.
Tra il numeroso software a disposizione segnaliamo in particolare il Toolbox in Matlab A.12.
Per unintroduzione agli elementi di analisi funzionale utilizzati nel seguito, si veda Appendice
B.

6.4.1

Dallanalisi di Fourier allanalisi wavelet

Introduciamo la notazione

L2P (0, 2) := {f : R C, f di periodo 2 e

|f (x)|2 dx < +}

Lindice P `e per ricordare che le funzioni sono periodiche, ossia f (x) = f (x 2) quasi ovunque in
R. Munito delladdizione usuale delle funzioni e della moltiplicazione per uno scalare, L2P (0, 2)
analisi numerica

c
V.
Comincioli

6.4 Introduzione alle funzioni Wavelet

339

Figura 6.31 Impronta digitale del pollice sinistro (FBI, cfr. link 19). La prima immagine corrisponde
alloriginale; la seconda `e ricostruita, mediante una tecnica wavelet, a partire da una compressione dei dati
26:1.

`e