Elementi di calcolo numerico: metodi e algoritmi
Maria Grazia Gasparo, Rossana Morandi Elementi di calcolo numerico: metodi e algoritmi McGraw-Hill Milano New York San Francisco Washington D.C. Auckland Bogotá Lisboa London Madrid Mexico City Montreal New Delhi San Juan Singapore Sydney Tokyo Toronto
Copyright 2011, 2008 The McGraw-Hill Companies, S.r.l. Publishing Group Italia Via Ripamonti, 89 20139 Milano McGraw-Hill A Division of the McGraw-Hill Companies I diritti di traduzione, di riproduzione, di memorizzazione elettronica e di adattamento totale e parziale con qualsiasi mezzo (compresi i microfilm e le copie fotostatiche) sono riservati per tutti i Paesi. Date le caratteristiche intrinseche di Internet, l Editore non è responsabile per eventuali variazioni negli indirizzi e nei contenuti dei siti Internet riportati. Nomi e marchi citati nel testo sono generalmente depositati o registrati dalle rispettive case produttrici. Publisher: Paolo Roncoroni Produzione: Donatella Giuliani Realizzazione print on demand: Ilovebooks, Fara Gera d Adda (Bergamo) Stampa: Prontostampa, Fara Gera d Adda (Bergamo) ISBN 978-88-386-6616-2 Printed in Italy
Nello infinito accadono cose che non accadono nello finito Galileo Galilei Solo perché alcuni di noi sanno leggere e scrivere e far di conto, questo non vuol dire che meritiamo di conquistare l Universo. Kurt Vonnegut, Jr.
Indice Prefazione xi 1 ALGORITMI 1 1.1 Introduzione... 1 1.2 Istruzioni fondamentali... 2 1.2.1 Istruzionielementari... 3 1.2.2 Istruzionidiscelta... 3 1.2.3 Istruzionidiripetizione... 4 1.3 Esempi... 5 1.4 Confronto fra algoritmi... 9 1.4.1 Costocomputazionale... 10 2 ARITMETICA DEL CALCOLATORE ELETTRONICO 13 2.1 Memorizzazione dei numeri..... 13 2.1.1 Numeriinteri... 14 2.1.2 Numerireali... 16 2.1.3 Errori di arrotondamento e precisione di macchina.... 20 2.2 Operazioni di macchina... 22 2.2.1 Un altra definizione della precisione di macchina..... 26 2.3 Propagazione degli errori. Condizionamento e stabilità... 27 2.3.1 Cancellazionenumerica... 31 2.3.2 Condizionamento di un problema.... 35 2.3.3 Stabilità di un algoritmo... 37 3 EQUAZIONI NON LINEARI 39 3.1 Introduzione... 39 3.2 Metodo di bisezione..... 41 3.2.1 Convergenza del metodo di bisezione... 42 3.3 MetododiNewton... 46 3.3.1 ConvergenzadelmetododiNewton... 48 3.3.2 VariantidelmetododiNewton... 53 3.4 Metodo delle secanti.... 55 3.5 Criteri di arresto... 58 3.5.1 Un criterio di salvaguardia... 59 3.5.2 Un criterio di arresto generale...... 59 3.5.3 Un criterio di arresto per il metodo di bisezione... 60
viii Indice 3.5.4 Un criterio di arresto per metodi a convergenza almeno superlineare..... 61 3.6 Algoritmi.... 62 3.6.1 Algoritmo di bisezione.... 63 3.6.2 Algoritmo di Newton..... 64 3.6.3 Algoritmo delle secanti.... 66 3.7 Cenno alla risoluzione di sistemi non lineari (*)... 66 4 SISTEMI LINEARI 71 4.1 Introduzione... 71 4.2 Condizionamento dei sistemi lineari... 72 4.2.1 Analisiaposteriori... 77 4.3 Risoluzione di sistemi triangolari... 78 4.4 MetododieliminazionediGauss... 80 4.4.1 Strategiadelpivotingparziale... 83 4.4.2 Algoritmi...... 86 4.4.3 ErrorenelmetododiGaussconpivotingparziale... 90 4.5 Metodo di Householder (*)... 92 4.5.1 Matrici di Householder.... 93 4.5.2 Riduzione di una matrice in forma triangolare mediante matrici di Householder.... 97 4.5.3 Algoritmi...... 98 4.5.4 ErrorenelmetododiHouseholder...100 4.6 Metodiiterativistazionari...101 4.6.1 Metodo di Jacobi...103 4.6.2 MetododiGauss-Seidel...105 4.6.3 Convergenzadeimetodiiterativistazionari...106 4.6.4 Criteri di arresto...108 4.6.5 Algoritmi ed esempi.....110 4.7 Metodi per sistemi con matrice dei coefficienti simmetrica definita positiva (*)...113 4.7.1 MetododiCholesky...113 4.7.2 Metododelgradienteconiugato...116 5 APPROSSIMAZIONE DI DATI E FUNZIONI 125 5.1 Introduzione...125 5.2 Interpolazionepolinomiale...129 5.2.1 Esistenza e unicità del polinomio interpolante....... 129 5.2.2 Polinomio interpolante nella formulazione di Lagrange.. 132 5.2.3 Condizionamento del problema di interpolazione polinomiale...135 5.2.4 Polinomio interpolante nella formulazione di Newton... 137 5.2.5 Algoritmi......142 5.2.6 Errore nell interpolazione polinomiale...143 5.3 Interpolazione mediante funzioni spline (*)...148 5.3.1 Funzionispline...149
Indice ix 5.3.2 Funzionisplineinterpolanti...151 5.3.3 Splines cubiche interpolanti nei nodi...155 5.3.4 Algoritmi per il calcolo di splines cubiche interpolanti nei nodi...160 5.4 Miglioreapprossimazioneaiminimiquadrati...161 5.4.1 Rettadimiglioreapprossimazione...163 5.4.2 Problemadeiminimiquadratilineare...166 5.4.3 Metodo di Householder per il problema dei minimi quadrati lineari (*)...168 5.5 Calcolo numerico di integrali definiti...169 5.5.1 Formulediquadraturainterpolatorie...169 5.5.2 Formulediquadraturacomposite...173 5.5.3 EstrapolazionediRichardson...176 A Appendice: RICHIAMI DI ALGEBRA LINEARE 181 Bibliografia 191
Prefazione Il Calcolo numerico, o Analisi numerica, è la disciplina che si occupa della cosiddetta risoluzione numerica di problemi di natura matematica, ovvero della loro risoluzione mediante il calcolatore elettronico. La necessità di ricorrere al calcolatore può nascere per due motivi: perché non esistono formule o procedimenti espliciti per risolvere il problema o perché i dati e le variabili in gioco sono troppi per poter essere facilmente gestiti a mano. Un esempio della prima situazione è rappresentato dalle equazioni non lineari: tutti sanno risolvere l equazione 3x 2 +5x 2=0, ma nessuno conosce una formula per calcolare le soluzioni di e x cos(x) sin(x) =3. Per quanto riguarda la seconda situazione, basta pensare ad un sistema lineare: se si tratta di 2 o 3 equazioni in altrettante incognite non è difficile fare i conti con carta e penna, ma se le equazioni sono 10, 100 o 1000 bisogna necessariamente usare uno strumento più veloce. Una volta che un problema è stato correttamente formulato, si deve individuare un metodo per risolverlo numericamente, ovvero un metodo che, realizzato sul calcolatore, fornisce la soluzione del problema o una sua approssimazione. Questi metodi sono detti metodi numerici. Affinché un metodo numerico possa essere usato in pratica, esso deve essere descritto tramite un algoritmo, che è una sequenza di istruzioni non ambigue che si conclude sicuramente entro un tempo finito. Lo studio dei metodi numerici e la formulazione dei corrispondenti algoritmi rientrano fra le prerogative del Calcolo numerico. Spesso si possono individuare diversi metodi numerici per risolvere uno stesso problema. È ancora compito del Calcolo numerico confrontarli, fondamentalmente in base a due criteri: il costo, ovvero la quantità di risorse di memoria e di tempo che ciascuno di essi richiede, e la sensibilità a tutti i possibili errori che possono influenzare il risultato. Mentre il primo aspetto è fortemente dipendente dal tipo di calcolatore che si ha a disposizione, il secondo aspetto è in qualche modo oggettivo e particolarmente importante dal momento che il calcolatore stesso, qualunque esso sia, è una fonte certa di errore: a causa delle sue caratteristiche fisiche, esso genera automaticamente errori sia nella memorizzazione dei numeri che nell esecuzione delle operazioni aritmetiche, tanto che l aritmetica del calcolatore ha un nome specifico (aritmetica floating point) per distinguerla dall aritmetica che si usa abitualmente in matematica, in cui virtualmente si possono eseguire algoritmi anche complessi senza introdurre errori. I primi due capitoli del libro sono dedicati rispettivamente agli algoritmi e all aritmetica floating point. Nei capitoli successivi si trattano metodi numerici per
xii Prefazione la risoluzione di alcune classi di problemi: equazioni non lineari, sistemi lineari e approssimazione di dati e funzioni. Le caratteristiche più importanti dei metodi numerici presentati sono illustrate da numerosi esempi, con figure e tabelle. I risultati numerici che riportiamo nelle tabelle sono stati ottenuti realizzando gli algoritmi del testo in linguaggio FORTRAN e/o in linguaggio MATLAB. Le note storiche che accompagnano il testo sono tratte spesso da Internet e, quando possibile, verificate in articoli e libri. Citiamo a questo proposito i due libri molto interessanti di J.L. Chabert [8] e H.H. Goldstine [19] di storia degli algoritmi e dell Analisi numerica. Il testo è rivolto principalmente a studenti dei corsi di base di Calcolo numerico delle Facoltà di Ingegneria e Scienze matematiche, fisiche e naturali. Gli argomenti sono trattati in modo da richiedere soltanto prerequisiti elementari di Analisi matematica e Geometria. Alcune nozioni di Algebra lineare sono comunque raccolte in Appendice. Abbiamo incluso anche alcuni argomenti che richiedono un po più di maturità matematica e possono essere eventualmente omessi in un contesto di introduzione al Calcolo numerico. Questi argomenti sono contrassegnati nell indice da un asterisco (*). Nonostante tutta l attenzione che abbiamo messo nella stesura del libro e le innumerevoli riletture, siamo sicure che alcuni errori, speriamo solo di stampa, sono rimasti. Ce ne assumiamo tutta la responsabilità e siamo grate fin da ora a chiunque ci aiuterà ad individuarli. Desideriamo ringraziare molte persone: Aldo e Ferruccio che tanti anni fa ci hanno fatto appassionare al Calcolo numerico; tutti gli studenti che hanno seguito i nostri corsi e ci hanno fatto capire cosa insegnare e come; i nostri consorti che hanno dimostrato un infinita pazienza accettando di buon grado che lavorassimo perfino durante le vacanze; un grazie speciale a Linda e Lorenzo che, avendo studiato Calcolo numerico senza un libro di testo di riferimento, hanno spinto perché questo libro fosse finalmente scritto. Infine, vogliamo ringraziare la nostra pluridecennale amicizia in virtù della quale il lavoro non è stato solo faticoso ma anche divertente. Come diceva Aristotele, si decide in fretta di essere amici, ma l amicizia è un frutto chematura lentamente. Firenze, gennaio 2008 Maria Grazia Gasparo e Rossana Morandi