Sei sulla pagina 1di 212

ANNAMARIA MAZZIA

APPUNTI DI
CALCOLO NUMERICO

C R E AT I V E C O M M O N S L I C E N S E

pubblicato con creative commons license da Annamaria Mazzia, Dipartimento di Ingegneria


Civile Edile e Ambientale (DICEA), Universit degli Studi di Padova, anno 2015
utilizzando uno stile latex (personalizzato) reperibile su tufte-latex.googlecode.com
Questo lavoro stato rilasciato sotto la licenza Creative Commons Attribuzione- Non commerciale
-Non opere derivate 3.0 Italia License,
Per leggere una copia della licenza visita il sito web (http://creativecommons.org/licenses/by-nc-nd/
3.0/it/)
Il pacchetto Latex utilizzato ha la Licenza Apache, Version 2.0. (http://www.apache.org/licenses/
LICENSE-2.0) .
Dispensa aggiornata in Marzo 2015

Indice

Introduzione al Calcolo Numerico

Struttura dellelaboratore

Richiami di analisi

Rappresentazione dei numeri nel calcolatore

Zeri di funzione

Interpolazione

Approssimazione

Metodi diretti per la soluzione di sistemi lineari

Metodi iterativi per la soluzione di sistemi lineari

21
27

47
79
103

10 Problemi non lineari in pi variabili


11 Integrazione numerica

111
135

159

169

12 Differenziazione numerica ed equazioni alle derivate ordinarie


Bibliografia

211

191

Istruzioni per luso

Le pagine che seguono sono una dispensa di Calcolo Numerico,


aggiornata di anno in anno e pensata per il corso di Calcolo Numerico
degli studenti di Ingegneria dellUniversit di Padova, in particolare
per quelli dellarea industriale e, nello specifico, del corso di laurea
triennale in Ingegneria dellEnergia.
Ogni capitolo spiega, spero con molti dettagli, i vari punti del
programma di Calcolo Numerico, con esempi, dimostrazioni, approfondimenti ed esercizi.
Le parti introdotte dalla figura della lente di ingrandimento e la
scritta Dettagli sono parti di approfondimento che non fanno parte
esplicita del programma del corso ma che possono essere utili per
comprendere meglio un determinato argomento. Di queste parti,
quindi, suggerita una attenta lettura.
Alla fine di ogni capitolo sono presenti esercizi svolti. Qualche
studente potrebbe dire che non ci sono molti esercizi svolti. In effetti,
il numero di esercizi proposti per ogni capitolo essenziale, va da tre
a sei, per due motivi: molti esercizi vengono svolti in aula durante le
lezioni e si suppone che uno studente segua il corso e quindi partecipi
alla soluzione degli esercizi proposti a lezione; inoltre, come raccolta
a parte (una dispensa parallela a questa) viene offerta unampia
collezione di esercizi (per un totale di oltre centotrenta!) presi dai
temi desame degli anni passati e, da questanno, per ciascuno di
questi esercizi data anche una soluzione sintetica.
Oltre agli esercizi, alla fine di ogni capitolo vi una sezione intitolata Domande di riepilogo in cui sono proposte domande di
comprensione degli argomenti trattati nel capitolo stesso. Soffermarsi
a rispondere a queste domande permette di prepararsi con maggiore
cura alla parte teorica del compito desame.
Buon lavoro e buono studio!!
Padova, Marzo 2015
Annamaria Mazzia
P.S. Per migliorare sempre pi queste dispense, se avete dubbi su
alcune parti o trovate errori, di stampa e non, potete gentilmente
segnalarmi le vostre perplessit allindirizzo email:
annamaria.mazzia CHIOCCIOLA unipd.it

Il matematico sbircia dietro le spalle di Dio per


trasmettere la bellezza della Sua creazione
al resto delle Sue creature.
Paul Erds

1 Introduzione al Calcolo Numerico

Il calcolo numerico una disciplina che riguarda lo studio e lo


sviluppo di algoritmi numerici (cio di procedimenti di calcolo) utili
per risolvere problemi matematici che si incontrano in vari campi
delle scienze e dellingegneria.
Si parte infatti da un modello matematico che traduce un particolare fenomeno osservato, ad esempio, in biologia, chimica, fisica,
economia o nei vari settori dellingegneria (chimica, civile, informatica, dellenergia, meccanica ...). Molti di questi modelli sono difficili
o impossibili da risolvere da un punto di vista analitico, vale a dire
puramente matematico. Si applica, quindi, un metodo numerico per
risolvere il problema matematico e arrivare ad una sua soluzione
numerica che sia efficiente, accurata ed affidabile.
Il calcolo numerico pone le basi teoriche, entrando in profondit nei
diversi metodi numerici, per capire sotto quali ipotesi questi metodi
possano dare risultati buoni, quando possono essere usati e per quali
tipi di problemi.
Gli algoritmi numerici vanno poi sviluppati per essere implementati al calcolatore: tutto ci ha portato allo sviluppo di linguaggi o
ambienti di programmazione (Fortran, C++, MATLAB, Octave,...).
In un corso di Calcolo Numerico, si cerca di combinare gli elementi della teoria degli algoritmi numerici per risolvere determinati
problemi matematici insieme alla conoscenza di un linguaggio di programmazione che permetta di risolvere numericamente quei problemi
al calcolatore.
Perci importante partire dalla struttura di un calcolatore e dalla
rappresentazione dei numeri al calcolatore, per poi passare allo studio
di metodi numerici per la soluzione di diversi problemi. Vedremo, in
particolare, la ricerca degli zeri di funzione, problemi di interpolazione e approssimazione di dati, metodi diretti e iterativi per la soluzione
di sistemi lineari, problemi non lineari in pi variabili, formule di
quadratura numerica, problemi di differenziazione numerica e metodi
per la soluzione di equazioni differenziali.
Per ciascuno di essi presenteremo degli esempi che derivano da
fenomeni osservati in diversi settori scientifici e che vengono tradotti
in problemi matematici, da risolvere, appunto, con le pi opportune
tecniche numeriche.

Quando puoi misurare ci di cui stai parlando,


ed esprimerlo in numeri, puoi affermare di saperne qualcosa; se per non puoi misurarlo,
se non puoi esprimerlo con numeri, la tua
conoscenza sar povera cosa e insoddisfacente: forse un inizio di conoscenza, ma non
abbastanza da far progredire il tuo pensiero
fino allo stadio di scienza, qualsiasi possa
essere largomento.
Lord William T. Kelvin

annamaria mazzia

In questo modo, impareremo i metodi di base e gli strumenti di


analisi e di programmazione, per poter affrontare i problemi pi
complicati che ci riserver il futuro.

2 Struttura dellelaboratore
2.1

Introduzione

Se dobbiamo comprare un computer, abbiamo solo limbarazzo


della scelta tra i tanti disponibili sul mercato. Ma in base a quali
criteri scegliamo un computer?
Le caratteristiche fondamentali di un computer si possono riassumere in poche parole-chiave: processore, sistema operativo, memoria. Cosa significano esattamente? E, prima ancora, cosa significa
Computer?

I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente
lenti, inaccurati e intelligenti. Linsieme dei
due costituisce una forza incalcolabile.
Albert Einstein

Figura 2.1: Stralci di volantini pubblicitari per


lacquisto di un computer.

Definizione 2.1.1 Computer = elaboratore elettronico digitale


Dispositivo elettronico che elabora le informazioni, immesse sotto forma di dati numerici, secondo una sequenza di istruzioni
preordinate (programma).

Elaboratore: macchina capace di immagazzinare ed elaborare


dati in base ad una serie di istruzioni (programmi) memorizzate sul
computer

elettronico: utilizza componenti elettroniche per elaborare le


informazioni

digitale: elabora e memorizza segnali digitali basati su cifre


binarie: 0 e 1

In generale, un computer esegue operazioni logiche e aritmetiche


e ha una memoria per conservare i dati. Un programma contiene le
informazioni relative alle operazioni da eseguire.
Si definisce hardware la struttura fisica del computer cio i i suoi
componenti elettronici e i dispositivi fisici che lo compongono.
Si chiama, invece, software linsieme delle istruzioni (i programmi)
che consentono allhardware di svolgere i propri compiti
Attraverso un computer, elaboriamo dati (numeri, suoni, video,
fotografie) in modo da ottenere informazioni (lettere, tabelle, risultati
di procedimenti numerici. . . ). Alcune di queste informazioni possono
diventare dati da elaborare di nuovo al computer.

Un sistema operativo, come Windows, Mac,


Linux, un tipo di software; programmi applicativi come Word, Excel, LaTex sono dei
software.

10

2.2

annamaria mazzia

La preistoria del computer: Babbage e Lovelace

La seconda met del diciannovesimo secolo fu un tempo di grande


fermento in numerosi campi, dallingegneria ai trasporti, dalla comunicazione allarchitettura... Furono scoperti nuovi materiali, la forza
animale fu sostituita dalla forza motrice, le navi a vapore iniziarono a
competere con quelle a vela, la rete ferroviaria si espanse sempre pi,
il telegrafo elettrico rivoluzion le comunicazioni... In questo contesto,
ingegneri, architetti, matematici, astronomi, marinai, banchieri, agenti
assicurativi... chiunque avesse a che fare con il calcolo si basava
su tavole di calcolo per eseguire i calcoli meno banali. Tuttavia, si sa,
gli uomini possono sbagliare e il timore che su quelle tavole ci fossero
degli errori era giustificato: un errore non trovato poteva diventare
un disastro nelle numerose applicazioni in cui le tavole di calcolo
venivano usate!
Gi nel 1812 Charles Babbage era consapevole dellinaccuratezza
dei calcoli fatti dalluomo. Nel suo lavoro, Babbage doveva verificare
lesattezza di tavole di calcolo che sarebbero state usate da banchieri
come da marinai. Le navi avrebbero identificato la loro posizione in
mare mediante quelle tavole! Eliminare il rischio dellerrore umano
divenne per lui un desiderio sempre pi grande.
Il suo desiderio di creare una macchina per eseguire calcoli si
concretizz in due progetti, quello della Macchina alle Differenze e
quello della Macchina Analitica. La Macchina alle Differenze doveva
calcolare in modo automatico funzioni polinomiali ma non venne
mai completata per il suo costo eccessivamente elevato. La Macchina
Analitica, invece, doveva essere una macchina di calcolo programmabile, e si pu considerare come la prima idea del moderno computer.
Anche questo progetto, tuttavia, rimase incompiuto.
Nel 1833, Babbage incontr Ada Lovelace , figlia del famoso poeta
Lord Byron. Lovelace, appena diciassettenne, aveva parecchie conoscenze matematiche, inusuali per lepoca, e si entusiasm talmente
tanto per il progetto di Babbage, da intuire altre potenzialit della
macchina stessa, come la capacit dei numeri di poter rappresentare
altre entit quali le lettere dellalfabeto o le note musicali, e che dalla
manipolazione dei numeri la macchina avrebbe esteso la propria potenza oltre il mondo della matematica. Sempre la Lovelace intu che
la soluzione dei problemi matematici si sarebbe effettuata attraverso
delle procedure di calcolo (quelli che noi chiamiamo programmi).
Alla luce degli sviluppi che si sono avuti nel ventesimo secolo, la
visione di Babbage e della Lovelace appare profetica.

2.3

Gli albori

Il 1800 si chiude con una grande invenzione: nel 1896, Guglielmo


Marconi inventa la radio. Il 1900 si apre con altre importanti invenzioni: il triodo, il registratore magnetico, la televisione, fino ad

Charles Babbage (1791-1871), inventore e


matematico inglese, senza dubbio il primo ad avere avuto il concetto del moderno
calcolatore.

Babbage stesso scrisse che, mentre era seduto nella stanza della Societ Analitica, a
Cambridge, lavorando, mezzo addormentato, su una tavola dei logaritmi, arriv un altro
membro della societ che gli chiese cosa
stesse sognando. E lui rispose : Sto pensando che tutte queste tavole riferendosi
alle tavole dei logaritmi potrebbero essere
calcolate da una macchina!
Nel 1821, Babbage e il suo amico e
astronomo John Herschel stanno controllando delle tabelle calcolate a mano. Errore
dopo errore, Babbage esclama : Volesse
Dio che questi calcoli venissero eseguiti da
una macchina a vapore!
Osserviamo che linvenzione del telaio meccanico a schede, in cui il tipo di tessuto veniva
scelto (o programmato) in base a delle schede inserite nella macchina, un precursore
del progetto di Babbage.
Solo nel 2002 stato possibile costruire
una macchina che rispondesse al progetto di
Babbage.
Augusta Ada Lovelace (1815-1852) fu la figlia del famoso poeta Lord Byron. I genitori
si separono subito dopo la sua nascita e la
bambina crebbe insieme alla madre (Lord
Byron part dallInghilterra senza farvi pi ritorno e mor in Grecia quando Ada aveva otto
anni). Poich la madre era appassionata di
matematica e non voleva che la figlia seguisse la strada del padre, incoraggi la figlia in
questa direzione, impartendole unistruzione
legata alla matematica e alla musica. Nel
1835 spos William King, di dieci anni pi
anziano. Nel 1838 il marito ricevette il titolo
nobiliare di Conte di Lovelace. Ebbero tre figli.
La Lovelace mor di cancro a soli 37 anni.

appunti di calcolo numerico

arrivare intorno alla met del 1900 con il transistor (nel 1947) e il
circuito integrato (nel 1958). La nuova tecnologia elettromeccanica
ed elettronica si rivel decisiva per lo sviluppo dei computer, grazie
allo studio sistematico della teoria dei circuiti elettrici. Il pi noto
tra gli studiosi di questa teoria fu lamericano Claude Shannon. Il
suo contributo fondamentale fu quello di elaborare un metodo sistematico per progettare reti logiche capaci di eseguire le operazioni
logico-aritmetiche desiderate: detto pi semplicemente, egli mostr
come trasformare una assegnata operazione matematica in un circuito
elettrico costruito con interruttori e rel di commutazione (quelli usati
nelle telecomunicazioni).
Il lavoro di Shannon diede lavvio allo studio delle tecniche indispensabili per progettare in modo sistematico tutti i circuiti logici di
base necessari per realizzare i circuiti di calcolo dei futuri computer.
Da un punto di vista propriamente pratico invece, la nascita e lo
sviluppo dei calcolatori elettronici inizia nel 1938: il tedesco Konrad
Zuse costruisce Z1, una macchina costruita e pensata in maniera
completamente meccanica, tutta da migliorare, ma che pu essere
considerata come il primo calcolatore. Zuse passa subito al progetto
Z2, dove laritmetica meccanica sostituita da rel elettromeccanici.
Linizio della seconda guerra mondiale interrompe bruscamente il
lavoro di Zuse, che viene chiamato alle armi, ma riesce a persuadere
lIstituto di Ricerca Aerodinamica del Terzo Reich a continuare i suoi
studi. Completa quindi la costruzione dello Z2 e inizia a lavorare sullo
Z3, che il primo computer che Zuse costruisce per essere usato e
non per verificare le proprie idee. Lo Z3 ha non solo lunit aritmetica
ma anche la memoria realizzata con rel elettromeccanici, ben 2600.
Z3 fu la prima macchina di calcolo programmabile e venne usata
dallindustria aerea per risolvere sistemi di equazioni e altri sistemi
matematici ricavati da problemi di vibrazione degli apparecchi aerei
messi sotto stress.
Quando Zuse propose di passare alluso di un computer basato
su valvole elettroniche, la proposta fu respinta perch i tedeschi si
consideravano cos vicini alla vittoria della guerra che ulteriori sforzi
nella ricerca non apparivano necessari.
Il lavoro di Zuse, comunque, and avanti con la costruzione dello
Z4, di S1 e S2. E, soprattutto, fu completamente indipendente dai
lavori di John Eckert e John Mauchly negli Stati Uniti e di A. Turing
in Inghilterra. Eckert e Mauchly costruirono lENIAC (Electronic
Integrator and Computer). LENIAC fu costruito, con progetto di
Eckert, in piena seconda guerra mondiale, a partire dal 1943, presso il Ballistic Research Laboratory e fu completato nel febbraio del
1946. La macchina era pensata per compiere operazioni di carattere
generale, ma fu costruita con lo scopo preciso di compilare tabelle
per le traiettorie di bombe. LENIAC conteneva circa 18. 000 valvole
termoioniche e misurava circa 2 metri e mezzo di altezza per 24 metri
di lunghezza! La macchina era pi di mille volte veloce di tutti i
predecessori elettromeccanici costruiti fino a quel momento e poteva
eseguire 5000 addizioni al secondo. Le sue operazioni erano controlla-

11

Claude Shannon (1916-2002) fu fisico e


matematico del MIT.

Nel 1948, larticolo di Shannon, A Mathematical Theory of Communication, pubblicato sulla rivista The Bell System Technical
Journal getta le basi teoriche dellinformatica. Per prima volta viene usato il termine
bit come abbreviazione di binary digit, termine suggeritogli dal chimico e statistico J. W.
Tukey.
Konrad Zuse, ingegnere civile (1910-1995).

Figura 2.2:

LENIAC. Foto presa da

http://www.computerhistory.org/
revolution/birth-of-the-computer/
4/78/316, copyright dellUniversit di

Pennsylvania.
Alan Turing (1912-1954), matematico inglese,
si interess di logica matematica e di teoria
della probabilit. Introdusse il concetto di una
macchina astratta, detta macchina di Turing,
e pose questioni riguardanti lintelligenza artificiale. Si occup di problematiche riguardanti
un macchina di calcolo digitale astratta, con
una memoria senza limiti.
John Presper Eckert (1919-1995) e John
William Mauchly (1907-1980) lavorarono a
quello che si pu considerare il vero primo
calcolatore elettronico.

12

annamaria mazzia

te da un programma che veniva inserito dallesterno mediante nastri


perforati.
Intanto, nel 1944 aveva iniziato a collaborare nella costruzione
dellENIAC, John von Neumann. Egli si accorse che larchitettura
della macchina andava rivista e che la programmazione del computer
mediante un numero enorme di cavi e interruttori rendeva lenta e
poco flessibile la programmazione stessa. Sostenne, quindi, che il programma non dovesse essere rigidamente predisposto nellhardware
tramite interruttori e cavi e neanche letto mediante nastri perforati,
ma risiedesse in una memoria su cui poter scrivere e accedere velocemente insieme ai dati da elaborare. Von Neumann per primo
descrisse larchitettura dei calcolatori in termini logico-funzionale,
secondo uno schema astratto non legato ai dispositivi fisici utilizzati
per le varie operazioni. E il suo schema, sostanzialmente invariato,
larchitettura adottata dai calcolatori dei nostri giorni!
Prima di von Neumann, il calcolatore veniva controllato mediante
programmi non modificabili, registrati su nastro perforato o cablati
in una configurazione di cavetti e interruttori. Con von Neumann si
presenta unarchitettura di riferimento precisa.
Il primo calcolatore costruito seguendo larchitettura di von Neumann entr in funzione nel 1948 allUniversit di Manchester e venne
chiamato Manchester Mark I.
Inizia, in tal modo, una nuova fase per i calcolatori: i programmi
che controllano le operazioni da svolgere risiedono nella memoria del
calcolatore insieme ai dati e possono essere modificati dinamicamente
nel corso dellelaborazione.
Dal 1948 fino ai nostri giorni, lo sviluppo dei calcolatori elettronici
ha avuto ritmi esponenziali: linvenzione del circuito integrato (chip)
alla fine degli anni cinquanta permise non solo di ridurre via via lo
spazio fisico occupato dai computer ma anche di ottenere computer
sempre pi potenti tanto che, in due suoi lavori, del 1965 e del
1975, Gordon Moore stabil che il numero dei transistor inseribili
su un chip raddoppia approssimativamente ogni 24 mesi (legge di
Moore). Nel 1971 tre ingegneri della Intel tra cui litaliano Federico
Faggin inventarono il microprocessore, vale a dire unintera CPU in
un singolo circuito integrato: su una piastrina di 4 3 millimetri
riuscirono a inserire 2250 transistor, che formavano il cuore di un
intero computer: questo microprocessore fu chiamato Intel 4004 ed
era capace di eseguire 60. 000 operazioni al secondo.
Se pensiamo che il processore Intel Pentium 4 introdotto nel 2000 ha
.
42 000. 000 processori e lIntel Itanium 2 (con 9MB di cache) introdotto
nel 2004 ha 592. 000. 000 transistors, ci accorgiamo di come la legge di
Moore, dal 1968 ad oggi, sia stata rispettata.

2.4

Architettura del Computer

Larchitettura del Computer si pu riassumere in tre unit:

John von Neumann (1903-1957) ungherese,


studi prima a Berlino, poi a Zurigo e infine
a Budapest, dove ricevette il dottorato in matematica. Nel 1930 si trasfer alla Universit
di Princeton dove insegn matematica. Il suo
nome legato a studi in diversi settori: teoria dei giochi, matematica applicata, logica...
Occupa un ruolo fondamentale nello sviluppo
dei calcolatori elettronici. Ricevette numerosi
premi e riconoscimenti in tutto il mondo.

Gordon Moore nato nel 1929 in California. Di lui basti ricordare che ha stabilito
la legge di Moore, co-fondatore della Intel
Corporation e nel 2008 ha ricevuto la medaglia donore dellIEEE per il suo pioneristico contributo nei processi dei circuiti integrati, e per la leadership nello sviluppo della memoria del MOS (semiconduttore metalossido), del microprocessore e dellindustria
dei semiconduttori.
Federico Faggin nato nel 1940 a Vicenza
e si laureato in fisica allUniversit di Padova. Nel 1968 si trasferito prima a Palo Alto
presso la Fairchild Semiconductor e poi nel
1970 nella Intel. Oggi presidente e CEO
(Chief Executive Officer) della Foveon.

appunti di calcolo numerico

13

il processore, che fornisce la capacit di elaborazione delle


informazioni;

G
G

la memoria (centrale e di massa)

i dispositivi di input/output, che comunicano attraverso un


canale detto BUS, costituito da un insieme di linee elettriche
digitali.
Il processore composto da blocchi con funzionalit diverse:

G
G
G

CPU (Central Processing Unit), unit centrale di elaborazione


cache
varie interfacce

Se il processore integrato su un unico chip prende il nome di


microprocessore. Sia la CPU sia gran parte dei dispositivi che servono
per lattivit della CPU sono realizzati con la tecnologia dei circuiti
integrati, che possono essere disposti in una singola scheda detta
scheda madre. Questa scheda pu essere dunque considerata la parte
pi importante del computer. La CPU esegue tutte le operazioni di
elaborazione numerica e di controllo e rappresenta la parte centrale
del computer.
Ogni elaboratore contiene un circuito di temporizzazione (clock)
che genera un riferimento temporale comune per tutti gli elementi
del sistema.
Un ciclo-macchina il tempo richiesto per svolgere unoperazione
elementare (ed un multiplo del periodo del clock). La velocit di
elaborazione di un processore dipende dalla frequenza del clock. I
processori attuali hanno valori di frequenza del clock che variano tra
gli 8 MHz e i 3500 MHz (1 MHz = 1 milione di istruzioni al secondo).
La memoria serve per conservare le istruzioni da eseguire e per
scrivere/leggere i dati elaborati. Si suddivide in memoria principale
e memoria secondaria.
La memoria principale (o di lavoro) la memoria in grado di
conservare dinamicamente dati e programmi che il processore sta
utilizzando. A sua volta la memoria principale pu essere di due tipi:

memoria di sola lettura (read-only memory): ROM. Viene scritta una volta per tutte dal produttore del sistema e contiene programmi e informazioni specifiche per il sistema; utilizzata per memorizzare parametri di configurazione del sistema, utili allavvio
del computer;

memoria per scrittura-lettura (random access memory): RAM.


Serve alla CPU per lavorare con i programmi inseriti dallutente.

Poich la RAM conserva i dati solo fino a quando il computer


rimane acceso (infatti detta memoria di tipo volatile, perch se ne
perde il contenuto quando la macchina viene spenta), per conservare
dati e programmi per tempi lunghi e a sistema spento, si utilizza la

La CPU si suddivide in

G unit logico-aritmetica (ALU), che svolge tutti i calcoli logici ed aritmetici;


G unit floating-point (FPU) (Floating Point
G
G

Unit), che consente di eseguire le


operazioni su numeri reali;

unit di controllo (CU), che sovrintende


allelaborazione dei dati e alle operazioni
di input e output;
registri, cio memoria locale per memorizzare dati e lo stato di avanzamento delle istruzioni. Abbiamo, ad esempio, il registro di Program Counter, di Program
Status Word, il registro Istruzioni, Indirizzi
Memoria. . .

14

annamaria mazzia

memoria di massa (o secondaria) dischi come lHard Disk, CDROM,


DVD, pendrive USB. . . .
La RAM pu essere pensata come una sequenza di celle (locazioni), ognuna identificata da un indirizzo e capace di contenere
informazioni binarie.
Lunit minima indirizzabile della memoria detta parola (word)
e pu variare da macchina a macchina. In genere una parola vale un
byte, cio 8 bit.
Il computer scambia informazioni con il mondo esterno per
mezzo delle periferiche di input/output (monitor, mouse, stampante,
web-cam,...).
Input linserimento di dati nel computer per lelaborazione.
Output il trasferimento di dati dal computer a dispositivi che
permettono allutente di vedere/ascoltare i risultati dellelaborazione.

2.5

Software e Sistema Operativo

Un software una sequenza di istruzioni per eseguire le varie elaborazioni sui dati. Ci sono diverse categorie di software: software per il
sistema operativo, software di base, software di tipo applicativo.
Il sistema operativo costituito dallinsieme dei programmi essenziali per far funzionare la macchina. Esso utilizza piccoli programmi
gi presenti nel calcolatore per accedere ai singoli dispositivi fisici.
Questi programmi prendono il nome di Device Driver e sono memorizzati nel BIOS (Basic Input Output System). Il BIOS si trova
nella ROM del Computer.
Il sistema operativo, da una parte, permette di rendere fruibile
allutente le molteplici risorse del computer (gestione della memoria,
della stampante, della tastiera,...); dallaltra rende il computer uno
strumento amichevole e utile per affrontare le molteplici attivit che
gli si richiedono.
I compiti affidati al sistema operativo sono molteplici:

G
G

Bit lunit elementare di informazione. Per


esempio: 0/1, s/no.
1 byte = 8 bit
1 Kilobyte (KB) = 210 byte = 1024 byte (circa
103 )
1 Megabyte (MB) = 220 byte (circa 106 )
1 Gigabyte (GB) 109 byte (un miliardo di
byte)
1 Terabyte (TB) 1012 byte (mille miliardi di
byte)
1 Petabyte (PB) 1015 byte (un milione di
miliardi di byte)

Figura 2.3: Dispositivi di input e output.

agire da intermediario tra lutente e lharware del computer

controllare e coordinare lutilizzo dellhardware tra i programmi


applicativi

fornire gli strumenti per luso corretto delle risorse di tipo hardware e software del sistema

nascondere i dettagli legati alla gestione delle risorse del sistema.

I primi sistemi operativi iniziarono a vedersi intorno alla met degli


anni cinquanta quando si cominci a individuare una serie di programmi standard di comune utilizzo indipendenti dallapplicazione
specifica richiesta al computer.
Levoluzione dei sistemi operativi ha influenzato anche lo sviluppo
dellhardware in quanto per supportare certe funzioni del sistema
operativo sono necessari meccanismi hardware ad hoc (basti pensare
alla gestione della memoria o delle interruzioni).

I primi computer come lo Z3 di Zuse o lENIAC non avevano sistema operativo. Per
inserire un programma (scritto in linguaggio
macchina) bisognava azionare un gruppo di
interruttori o modificare collegamenti tramite
opportuni cavi e spinotti. Ci rendiamo conto, quindi, di quanto fosse difficile usare il
computer per risolvere problemi mediante lesecuzione di un programma perch oltre alla
competenza specifica del problema da risolvere, si richiedeva una grande conoscenza
tecnica della macchina su cui si doveva lavorare. Il programma doveva contenere non
solo le istruzioni per la risoluzione del problema (per esempio un sistema di equazioni) ma
anche le istruzioni per gestire le unit di input
e output e delle altre periferiche collegate al
computer. Infine, poteva essere eseguito un
solo programma alla volta.

appunti di calcolo numerico

15

Considerando gli elevatissimi costi per la realizzazione e la gestione


dei primi computer, il calcolo automatico era una risorsa preziosa a
disposizione di pochi utenti. Tutto ci port ad un ripensamento del
modo di utilizzare i computer e nacquero le prime idee di sistema
operativo.
Per prima cosa si pens di creare delle librerie con le istruzioni
necessarie per eseguire le operazioni pi comuni legate alla gestione
delle periferiche del computer (ingresso e uscita dei dati, accesso alla
memoria,...).
Ulteriori progressi si ebbero quando il sistema operativo inizi a
sfruttare anche il disco fisso ed ebbe inizio la cosiddetta multiprogrammazione, in base alla quale nella memoria centrale venivano
tenuti attivi contemporaneamente alcuni processi e i loro dati pronti
per essere eseguiti. Ad ogni momento, uno solo di questi processi
veniva eseguito, tuttavia, quando il processo in esecuzione richiedeva
unistruzione di ingresso o di uscita, esso veniva sospeso attivando
le unit periferiche necessarie per lesecuzione dellistruzione data.
Questa tecnica richiedeva una elevata capacit della memoria centrale
e solo pochi sistemi potevano funzionare in modo adeguato.
Uno dei primi sistemi che inizi ad utilizzare la multiprogrammazione fu il sistema OS/360 realizzato per i computer IBM 360. Questo
sistema operativo fu importante per due motivi:

si cerc di realizzare un sistema operativo uniforme e compatibile


per macchine IBM molto diverse tra loro per quanto riguarda
lhardware sottostante: fino a quel momento ogni macchina aveva
il proprio sistema operativo, che cambiava da macchina a macchina!

lo sviluppo di questo sistema operativo fu molto delicato e complesso e apr lo studio delle problematiche relative allingegneria
del software.

Nonostante questi progressi, la multiprogrammazione non permetteva molta interattivit tra utente e computer: di fatto lutente
consegnava i dati e il programma da eseguire (un pacco di schede perforate) alloperatore del computer e accedeva ai risultati dopo qualche
ora se non addirittura dopo giorni e giorni, risultati che riceveva in
forma cartacea ad esecuzione avvenuta (non cera ancora il monitor
per la visualizzazione su video dei risultati).
Alla fine del 1950 si introdusse il concetto di time-sharing che
permetteva lesecuzione di pi processi in modo da poter soddisfare
le esigenze di pi utenti contemporaneamente. Con il time-sharing
si assegna, infatti, un piccolo intervallo di tempo a ciascun processo
dando limpressione che ciascun processo vada avanti parallelamente
agli altri.
Gli sviluppi del sistema operativo ottenuti da allora fino ad oggi
si possono cos riassumere: il sistema operativo fornisce funzioni di
base per la gestione delle risorse, quali:

uso del processore (multitasking: luso della CPU permesso


ad un programma alla volta per brevi intervalli di tempo, quindi
lutente pu eseguire pi programmi contemporaneamente)

Figura 2.4:
Schede perforate a 80
e a 96 colonne.
Foto presa da
http://compvter.blogspot.it/2010/
09/punch-card-ibm-96-colonne.html

Per risolvere questo tipo di problemi, luso


delle schede fu sostituito da appositi terminali
sempre collegati al computer e furono cambiate le modalit di gestione dellunit centrale modificando i sistemi operativi esistenti.
Si arriv allinterazione con il computer non
pi mediante schede perforate bens tramite
tastiera-stampante o tramite tastiera-monitor.

16

annamaria mazzia

G
G
G
G
G

uso della memoria centrale (memoria virtuale)


riconoscimento e gestione degli utenti (multiutenza)
gestione delle periferiche (drivers)
file system
interfaccia grafico.

Il software di base (o general purpose) pu avere funzioni varie:


editor di testo, elaborazione di testi, fogli elettronici, posta elettronica,
internet.
Il software applicativo costituito da programmi che hanno obiettivi specifici come intrattenimento, controllo di sistemi, progettazione
(CAD), risoluzione di problemi matematici.
Per migliorare le prestazioni di un computer si inserisce una memoria intermedia tra CPU e RAM, detta cache. Si trova allinterno
del processore. pi veloce della RAM ma anche pi costosa.

Il file system

2.6

Il sistema operativo gestisce le informazioni su dispositivi di memoria


secondaria (dischi).
La gestione delle informazioni avviene mediante file Un file costituisce un insieme di informazioni della stessa natura e logicamente
correlate. In genere un file contiene un programma (programma
sorgente o programma eseguibile), oppure una sequenza di dati.
Linformazione rappresentata da files, organizzati in maniera gerarchica (pensiamo ad una struttura ad albero) in directories (cartelle).
Una directory un file che svolge il ruolo di raccoglitore.
I files possono contenere dati (abbiamo i cosiddetti files di testo)
oppure programmi (i files di applicazioni).
Un file caratterizzato da:

posizione (path, o percorso): sequenza delle directories che


portano al file
dir1 / dir2 / . . . / . . . /

nome: individua univocamente il file allinterno della cartella (o


directory)

Immaginiamo un ristorante con un capocuoco, il suo aiutante, una cucina, i camerieri e i clienti. I clienti scelgono un piatto
dal menu, un cameriere prende lordine e lo
porta al capo-cuoco. Il capo-cuoco riceve
lordine e assegna al suo aiutante il compito
di preparare il piatto. Laiutante si dedicher alla preparazione del piatto, compito che
potr richiedere pi attivit. Il capo-cuoco, intanto, supervisiona la preparazione dei piatti
e gestisce le risorse (limitate) dei posti nel
ristorante.

G il capo-cuoco rappresenta il sistema


operativo,
G i clienti sono gli utenti,
G le ricette associate ai piatti corrispondono ai programmi,
G gli ingredienti sono linput del programma,
G il piatto loutput del programma,
G il menu e il cameriere sono linterfaccia verso il sistema operativo,
G laiutante corrisponde al processore
G
G

(CPU) (Se abbiamo pi processori, ci


sono pi aiutanti),
la cucina corrisponde al computer,

pentole, fornelli etc, sono le parti che


compongono il computer.

Laiuto cuoco, quindi, rappresenta la CPU


mentre il tavolo da lavoro, su cui appoggia
gli ingredienti e la ricetta per preparare il piatto, rappresenta la memoria centrale. Prima
di iniziare a lavorare, il cuoco deve svolgere alcune mansioni (sempre le stesse ogni
volta: pulire il tavolo, controllare lo stato di
pentole, tegami, coltelli. . . , ricevere le ordinazioni). Supponiamo che queste mansioni
siano incise su un pezzo del tavolo da lavoro: corrispondono alla memoria ROM (quella
che non pu essere alterata). La RAM invece
la parte del tavolo che pu essere alterata a piacimento (spostare pentole, tegami,
ingredienti).
Quando il ristorante chiude, il tavolo deve essere pulito e sgombro altrimenti si rovina tutto quello che vi rimane, ad eccezione
di ci che vi stato inciso. Perci il cuoco conserva in dispense e frigoriferi i vari
ingredienti rimasti e gli utensili da lavoro: le
dispense e i frigoriferi rappresentano i dischi
(Hard Disk, CDROM, pen drive USB . . . ) per
immagazzinare i dati.

estensione: la parte del nome del file che segue lultimo punto
. (dati.txt
prova.f
matrice.dat
welcome.html
foto.jpeg )

G
G

dimensione: quantit di informazione contenuta nel file

altre informazioni (data di creazione, data di ultima modifica,


permessi di scrittura, lettura. . . )

.
Lintera gestione dei file a carico di un componente del sistema
operativo detto file system.

File in inglese significa archivio. Il termine


compare nei primi anni cinquanta e inizialmente si riferisce a un pacco di schede contenente informazioni omogenee. il sistema
operativo a realizzare il concetto astratto di
file nella gestione dei dispositivi di memoria
di massa.

appunti di calcolo numerico

2.7

17

Un po di storia sui sistemi operativi

Tra i numerosi sistemi operativi, il sistema Unix quello che ha


maggiormente influenzato questo settore dellinformatica. Il sistem
Unix venne sviluppato sul finire degli anni sessanta nei laboratori
della AT & T. La filosofia di base era di realizzare un sistema semplice
rispetto agli altri in uso e adatto per la ricerca e lo sviluppo. La
prima versione fu scritta in linguaggio Assembly e dipendeva dal
tipo di macchina su cui si doveva applicare. Successivamente venne
scritto in larga parte in un linguaggio di alto livello, il C, progettato
appositamente per il sistema Unix. In tal modo il sistema operativo
diventava facilmente portabile su macchine di tipo diverso senza
dipendere eccessivamente dalle caratteristiche dellhardware su cui
veniva fatto funzionare. Diversamente dalle abitudini del tempo,
lazienda AT & T distribu Unix nelle universit e rese disponibili i
codici sorgenti utilizzati per realizzarlo. Questo port ad una sua
ulteriore innovazione grazie a tutti i ricercatori delle universit che
iniziarono a sperimentarlo.
Quando furono messi in commercio i primi microcomputer (a partire dal 1975), fu necessario sviluppare sistemi operativi appositamente
progettati per sfruttare le poche risorse disponibili essendo le risorse
di calcolo di tali macchine molto limitate. Inoltre, queste macchine
erano pensate pi per gli appassionati che per il personale tecnico
esperto e quindi era importante creare un sistema operativo che fosse
duso relativamente semplice. In questo campo si distinsero Bill Gates
e Paul Allen, che iniziarono la loro attivit scrivendo il linguaggio di
programmazione Basic per il micromputer Altair. Nel 1975 crearono
una ditta... la Microsoft.
Un altro microcomputer, popolare nei primi anni ottanta, fu lApple
sviluppato da Steve Wozniak e Steve Jobs. Per questa macchina
svilupparono un sistema pi semplice ed efficiente di quello usato
per lAltair, che si ispirava vagamente al sistema Unix.
I microcomputer iniziarono ad avere un grosso successo tanto
che allinizio degli anni ottanta, lIBM pens di entrare in questo
settore (prima si era solo occupata di grandi computer e di software),
introducendo il personal computer, IBM PC, realizzando in tal modo
una macchina che servisse non solo per gli appassionati e per giocare
(uno dei fattori che aveva determinato il successo dei microcomputer)
ma anche come strumento di studio, per i professionisti e per la
gestione di piccole aziende.
LIBM incaric Bill Gates di realizzare un sistema operativo per il
nuovo personal computer. Il successo dellIBM PC port al successo
anche di Bill Gates: i profitti della Microsoft iniziarono a crescere in
modo esponenziale. Il sistema realizzato dalla Microsoft prese il nome
di MS-Dos e divenne il sistema operativo pi diffuso al mondo grazie
alla standardizzazione dei personal computer lanciato dallIBM.
Il sistema MS-Dos non era facile da usare perch lutente interagiva
con il computer solo attraverso comandi testuali la cui sintassi non

I sistemi operativi per i microcomputer dovevano essere pi semplici di quelli impiegati


per i grandi computer, in quanto la macchina
veniva utilizzata da un solo utente e le periferiche collegate erano poche e semplici. Il
problema maggiore ero quello di gestire i file
su floppy disk (gli antenati dei CD-ROM e dei
DVD, in uso fino ad una decina di anni fa) o
su nastri magnetici e mettere a disposizione
dellutente un linguaggio di programmazione
semplice, come il Basic. Tuttavia, il confine
tra linguaggio di programmazione e sistema
operativo non era ancora ben definito e, una
volta avviato, il sistema era pronto per ricevere sia comandi del sistema operativo, sia
istruzioni in linguaggio Basic.

18

annamaria mazzia

era cos semplice da ricordare (qualche anno pi tardi fu lanciata sul


mercato una versione pi amichevole).
Nel 1984, invece, dalla Apple fu prodotto il personal computer
Macintosh che adottava un tipo di interfaccia grafico progettato per
interagire in modo semplice e intuitivo con lutente.
Le novit della Apple furono molto apprezzate e la Microsoft,
per colmare questa lacuna, lanci un altro sistema operativo basato
su interfaccia grafica: nel 1985 nacque il primo Windows 1.0 che
trov pochi consensi perch troppo lento e instabile. Nel 1986, con
la comparsa di nuovi microprocessori, il sistema Windows cominci
a funzionare in modo adeguato tanto che le versioni di Windows
3.1 e di Windows 95 portarono al sopravvento del sistema operativo
Windows rispetto al Macintosh.
Accanto a questi sistemi operativi, e forse anche per ridurre lo
strapotere della Microsoft, si deve vedere la strada percorsa da un
informatico di Helsinki (data di nascita 1969), Linus Benedict Torvalds,
che ha introdotto il sistema Linux.
Nel 1991 fu completata la prima versione del sistema, che fu chiamata Linux e venne messa a disposizione di tutti. Torvalds si riserv
il compito di coordinare i diversi miglioramenti via via introdotti
dagli altri sviluppatori.
Linux si dimostrato e si dimostra tuttora un valido sistema
operativo, affidabile, sicuro e di buone prestazioni, in grado di gestire
situazioni multiutente e multitasking.
Ed il sistema operativo di riferimento del corso di Calcolo
Numerico.

2.8

Lavorare in ambiente Linux

Una volta entrati nel sistema (tramite login e password), si apre


lambiente grafico e di qui possiamo lavorare (per esempio, aprire
una finestra di editor, lavorare in Office, navigare in Internet ....).
Per aprire nuove directories (cartelle), per spostare files, per eseguire
programmi, ... bene lavorare tramite una finestra di terminale o
shell.
La finestra di terminale (shell) mostra il prompt dei comandi.
Un esempio di prompt la login dellutente (ad esempio studente)
+ chiocciola + nome della macchina su cui si sta lavorando (ad esempio george) + attuale directory di lavoro (se non compare nessun
nome, perch ci troviamo nella home directory, la directory principale
dellutente) + un simbolo (% o $, a seconda della macchina):
studente@george:~ $

Vediamo ora alcuni comandi essenziali (comandi da scrivere dopo


il prompt, in una finestra di terminale dopodich si clicca il tasto di
Invio):

ls mostra lelenco dei files e delle directories contenuti nella

directory attuale ( ls sta per list).

Il Macintosh utilizzava un interfaccia grafico


chiamato GUI (Graphic User Interface) composto da icone, finestre, men... Gli oggetti
dellambiente operativo erano rappresentati
con simboli grafici di facile intuizione senza
dover comprendere a fondo tutti i tecnicismi
informatici. Linterfaccia GUI non era uninvezione della Apple perch era stata gi sperimentata nel corso degli anni settanta dalla
Xerox, che per non aveva intuito le potenzialit di questo lavoro, lasciandone invece la
fortuna e il successo alla Apple che, insieme
ad esso, introdusse il mouse.

Durante gli studi universitari, Torvalds si era


interessato di sistemi operativi e aveva studiato una versione semplificata di Unix, chiamata Minix. Questo sistema poteva funzionare
su personal computer e veniva distributo con
i programmi sorgenti disponibili. Torvalds miglior il sistema Minix, in modo da poterlo
utilizzare come alternativa a Windows, nella logica di non realizzare profitti (cio non
diventare milionario) ma di realizzare un sistema utilizzabile gratuitamente da tutti e migliorabile con il contributo di tutti (la filosofia
dellopen source).
Tra le tante distribuzioni attualmente in uso
ricordiamo: Debian, Ubuntu, Fedora, Gentoo,
Slackware. . .

appunti di calcolo numerico

Per cambiare directory, si deve digitare

cd nome-directory

(cd sta per change directory).

G
G

Il comando cd .. fa tornare nella directory precedente.

Per creare una nuova directory:


(mkdir sta per make directory).

mkdir nomedirectory

Per copiare un file dentro una directory:


cp nomefile nomedirectory (cp sta per copy).

Per trasferire un file in una directory

mv nomefile nomedirectory (mv sta per move).

Per cancellare un file si usa il comando rm nomefile.

Per cancellare una directory, dobbiamo prima cancellare tutti i


files della directory e poi usare il comando
rmdir nomedirectory.

Esempio: studente@george:~$ls
Un volta cliccato Invio, compare lelenco delle directories presenti nello spazio di
lavoro disponibile per lutente studente sulla macchina george, ad esempio (i numeri a
sinistra delle directories o files sono indicatori
dello spazio che occupano in memoria):
5
2
3
3

appunti/
calcolo/
fortran/
foto/

4 mail/
4 movies/
1 varie/
57 prova.pdf

Esempio: per entrare nella directory foto,


scriviamo
studente@george:

~$cd foto

Una volta cliccato il tasto di Invio, si


entrati nella directory foto:
studente@george:~/foto $

Per rinominare un file (o una directory):

mv nomevecchio nomenuovo .

G
G

19

Esempio: siamo nella directory foto, che


una sottodirectory della home di studente.
Con il comando pwd si ha:
studente@george:~/ foto $pwd
studente@george:~/ foto
$/home/studente/foto

Per sapere in quale directory ci troviamo, si usa il comando pwd.

Esempio Abbiamo due directory chiamate uno e due e il file


prova.f nella directory uno. Vogliamo copiare il file dalla directory
uno alla directory due.
Se ci troviamo nella home, cio nellambiente di partenza, dobbiamo scrivere cp uno/prova.f due
studente@george:~ $ cp uno/prova.f due

Se ora passiamo nella directory due e facciamo ls, vedremo il file


prova.f
studente@george:~ $ cd due
studente@george:~/due $ ls
total 1
1 prova.f

Se siamo nella directory uno, dobbiamo scrivere cp prova.f ../due


per ottenere lo stesso risultato.
Se siamo nella directory due, dobbiamo scrivere cp ../uno/prova.f
.
(il punto finale serve per copiare il file prova.f nella directory
in cui ci troviamo).
Con cp abbiamo due file identici, quello nella directory uno e
quello copiato nella directory due.
Possiamo anche scrivere cp prova.f prova2.f: in questo modo
creiamo il file prova2.f nella stessa directory in cui si trova prova.f.
Se vogliamo trasferire il file dalla directory uno alla directory
due (in questo modo avremo solo un file alla fine del procedimento),
dobbiamo usare il comando mv.
_

Riassumendo

G
G
G
G
G
G
G

ls : lista dei files e delle directory


cd : per cambiare directory
mkdir: per creare una nuova directory
cp: per copiare files
mv: per trasferire o rinominare files
rm: per cancellare files
rmdir: per cancellare directories

20

2.9

annamaria mazzia

Editor di testo

Se vogliamo scrivere su un file un documento di testo, abbiamo


bisogno di un editor di testo. Sotto Linux ne troviamo diversi: vi,
emacs, kedit, gedit, nedit.... I pi semplici da utilizzare sono kedit e
gedit.
Sotto Linux esiste anche il pacchetto Office (del tutto simile allequivalente Microsoft) per scrivere documenti in word, creare tabelle,
etc. . . . Anche il programma Gnumeric molto utile per creare tabelle.
Per visualizzare grafici, invece, c il pacchetto Gnuplot.

3 Richiami di analisi
3.1

La teoria attrae la pratica come il magnete


attrae il ferro.
Carl Friedrich Gauss

Lalfabeto greco

Quando si descrivono teoremi, si danno definizioni o, semplicemente, si discute di matematica, abbastanza usuale prendere in
prestito lettere dellalfabeto greco.
importante, quindi, saperle riconoscere e chiamarle in maniera
corretta (si veda tabella a lato).

A
B

E
Z
H

3.2

Radici di un polinomio di secondo grado

I
K

Alfa
Beta
Gamma
Delta
Epsilon
Zeta
Eta
Theta
Iota
Kappa
Lambda
Mu

Dato il polinomio ax2 + bx + c con a, b, c R (a 6= 0), le radici del


polinomio (cio quei valori di x per cui ax2 + bx + c = 0) si trovano
applicando la formula
x1 =

G
G

b +

b2 4ac
,
2a

x2 =

b2 4ac
2a

Se b2 4ac > 0 le radici sono reali e distinte,

se b2 4ac = 0 le due radici coincidono (il polinomio si pu


b
anche scrivere come ( x + )2 )
2a

se b2 4ac < 0 non ci sono radici reali.

Inoltre, si ha x1 + x2 =

3.3

b
c
e x1 x2 =
a
a

Identit trigonometriche

Nel seguito introduciamo alcune formule trigonometriche, con la


notazione:

G
G

sin ( x ) seno( x ), cos ( x ) coseno( x ),


tan ( x ) tangente( x ) =

sin ( x )
1
, sec ( x ) secante( x ) =
,
cos ( x )
cos ( x )

Figura 3.1: I tre casi delle radici di un polinomio di grado 2: radici reali e distinte (in alto),
radici reali e coincidenti (al centro), nessuna
radice reale (in basso).

Nu
Xi
Omicron
Pi
Rho
Sigma
Tau
Upsilon
Fi
Chi
Psi
Omega

22

annamaria mazzia

cos ( ) = cos ( )
cos ( 2 ) = sin ( )
cos ( 2 + ) = sin ( )
cos ( ) = cos ( )
cos ( + ) = cos ( )
cos ( + ) = cos ( ) cos () sin ( ) sin ()
sin (2 ) = 2 sin ( ) cos ( )
sin2 ( ) + cos2 ( ) = 1

3.4

sin ( ) = sin ( )
sin ( 2 ) = cos ( )
sin ( 2 + ) = cos ( )
sin ( ) = sin ( )
sin ( + ) = sin ( )
sin ( + ) = sin ( ) cos () + cos ( ) sin ()
cos (2 ) = cos2 ( ) sin2 ( )
tan2 ( ) + 1 = sec2 ( )

Regole su funzione esponenziale e logaritmica


Assumiano a, b R, con a > 0 e b > 0. Si ha:

1x = 1
a x +y = a x ay
aloga ( x) = x
a xy = a x /ay
loga ( xy) = loga ( x ) + loga (y)
loga ( x y ) = y loga ( x )
loga ( x )
logb ( x ) =
loga (b)

3.5

a xy = ( a x )y
a0 = 1
a x b x = ( ab) x
loga ( x/y) = loga ( x ) loga (y)
loga ( a x ) = x
b x = a x loga (b)

Derivate e integrali

Siano f e g due funzioni dipendenti dalla variabile reale x mentre


df
c R sia una costante. Indichiamo la derivata di f con il simbolo
dx
o mediante f 0 . Valgono le seguenti regole:

regola della costante:

regola della somma:

d ( f + g)
d f
dg
=
+
dx
dx dx

regola del quoziente:

d ( f /g)
f 0 g f g0
=
dx
g2

regola del prodotto:

regola della potenza:

d (c f )
= cf0
dx

d ( f g)
= f g0 + f 0 g
dx
d fr
= r f r 1 f 0
dx

Tra le regole di integrazione, invece, ricordiamo quella di integrazione


per parti:
Z

f g0 dx = f g

f 0 g dx

appunti di calcolo numerico

Diamo ora una tabella delle derivate e degli integrali delle funzioni
pi note (per gli integrali lasciamo fuori la costante di integrazione). Usiamo la simbologia arcsin( x ) arcoseno( x ), arccos( x )
arcocoseno( x ), cot( x ) cotangente ( x ), arctan( x ) arcotangente( x ),
arccot( x ) , arcocotangente( x ).
f
ln( x )
sin ( x )
tan ( x )
1
cos ( x )
arcsin ( x )
arctan ( x )
f
xr
ex
sin ( x )
tan ( x )
1
cos ( x )
1
cos2

3.6

(x)

f0
1
x
cos ( x )
1
(= sec2 ( x ))
2
cos ( x )
1
tan ( x )
cos ( x )
1

1 x2
1
1 + x2
R
fd x
x r +1
(r 6 = 1)
r+1
ex
cos ( x )
1
ln |
|
cos ( x )
ln |

1
+ tan ( x )|
cos ( x )

1
cos ( x )

arcsin ( x )

x arcsin ( x ) +

arctan ( x )
1

1 x2

x arctan ( x )
arcsin ( x )

f0

ex

ex

cos ( x )

sin ( x )
1
2
sin ( x )

cot ( x )
1
sin ( x )

cot ( x )

arccos ( x )
arccot( x )
f

x 1

ln | x |

ln | x |
cos ( x )

x ln | x | x
sin ( x )

cot ( x )

ln | sin ( x )|

1
sin ( x )

ln |

sin ( x )
cot ( x )
sin ( x )

1 x2

1
ln (1 + x2 )
2

1
sin ( x )

1 x2
1

1 + x2
R
fd x

tan ( x )

tan ( x )
cos ( x )

arccos ( x )
arccot( x )
1
1 + x2

1
+ cot ( x )|
sin ( x )

cot ( x )

1
sin ( x )

x arccos ( x ) 1 x2
1
xarccot( x ) ln (1 + x2 )
2
arctan ( x )

Teoremi utili

Richiamiamo, nel seguito, teoremi che trovano applicazione nel Calcolo Numerico. Per alcuni diamo anche la dimostrazione.
Utilizzeremo, inoltre, le seguenti notazioni per funzioni di una
sola variabile definite in un insieme X R. Linsieme delle funzioni
continue in X verr denotato con il simbolo C ( X ). Linsieme delle
funzioni continue in X, che hanno le prime n derivate pure esse
continue, sar indicato con C n ( X ).

23

24

annamaria mazzia

Teorema 3.6.1 (Teorema di Rolle) Sia f C ([ a, b]) e differenziabile in


] a, b[.
Se f ( a) = f (b) = 0, allora esiste un punto ] a, b[ tale che f 0 ( ) = 0

Michel Rolle (1652- 1719) fu un matematico


francese. conosciuto per il teorema che
porta il suo nome. Si deve a lui la notazione
della radice n-sima per mezzo del simbolo

n
x.

Teorema 3.6.2 (Teorema del Valor Medio) Sia f C ([ a, b]) e diffef (b) f ( a)
renziabile in ] a, b[, allora esiste un punto ] a, b[ tale che f 0 ( ) =
ba
Teorema 3.6.3 (Teorema del Valore Intermedio) Sia f C ([ a, b]) e
sia K un valore compreso tra f ( a) e f (b). Allora esiste almeno un punto
] a, b[ tale che f ( ) = K.
Quindi, per funzioni continue, un valore compreso tra i due estremi
dellinsieme di definizione un valore assunto dalla funzione stessa
(in uno o pi punti).
Come conseguenza di questo teorema, se f ( a) f (b) < 0 (la funzione
assume segno opposto agli estremi dellintervallo [ a, b]) allora esiste
almeno un punto tale che f ( ) = 0, cio esiste almeno una radice
dellequazione f ( x ) = 0 nellintervallo [ a, b].

Figura 3.2: Teorema di Rolle: f 0 (c) = 0

Teorema 3.6.4 (Esistenza del punto fisso) Data una funzione g definita in [ a, b], continua e tale che a g( x ) b per ogni x [ a, b], allora
g ammette almeno un punto fisso, cio almeno un punto per cui vale la
relazione g( ) = .
Figura 3.3:

Dimostrazione.
Dire che una funzione g ammette almeno un
punto fisso, vuol dire che esiste almeno un punto nel suo insieme
di definizione, tale che g( ) = .
Dalle ipotesi del teorema, i valori della funzione g sono contenuti
nellintervallo [ a, b] e, in particolare a g( a) b e a g(b) b.
Definiamo, perci, la funzione continua ( x ) mediante la relazione

f 0 (c)

Teorema del Valor Medio:

f (b) f ( a)
=
ba

( x ) = g( x ) x
Allora ( a) = g( a) a > 0 e (b) = g(b) b < 0. Per il Teorema del
Valore Intermedio esiste almeno un punto ] a, b[ tale che ( ) = 0,
vale a dire g( ) = 0, cio g( ) = . Esiste almeno un punto fisso
per la funzione g. 4
Teorema 3.6.5 (Esistenza e unicit del punto fisso) Data una funzione g di classe C1 in [ a, b], con a g( x ) b per ogni x [ a, b], e con
| g0 ( x )| m < 1 per ogni x [ a, b] allora esiste ed unico il punto fisso
della g in tale intervallo.
Dimostrazione. Lesistenza di almeno un punto fisso assicurata
dal teorema precedente (le ipotesi del teorema precedente ci sono
tutte). Supponiamo, allora, che esistano due punti fissi e , con
6= , per la funzione g. Si ha

| | = | g( ) g( )|

Figura 3.4: Teorema del Valore Intermedio:

f (c) = K

appunti di calcolo numerico

25

Applicando il teorema del Valor Medio, esiste un punto c compreso


tra e per cui

| g( ) g( )| = | g0 (c)( )| | g0 (c)|| |
Ma per ipotesi | g0 (c)| m < 1 da cui

| | m| | < | |
Si arriva ad una contraddizione. Lassurdo deriva dallaver supposto
6= . Quindi = e il punto fisso unico. 4
Teorema 3.6.6 (Teorema del Valor Medio del Calcolo Integrale) Se f
C ([ a, b]) e g integrabile in [ a, b] e g( x ) non cambia segno in [ a, b], allora
esiste un punto ] a, b[ tale che
Z b
a

f ( x ) g( x ) d x = f ( )

Z b
a

g( x ) d x

Per g 1, questo teorema ci d il valore medio della funzione f


1 Rb
sullintervallo [ a, b], dato da f ( ) =
f (x) d x
ba a
Teorema 3.6.7 (Teorema di Rolle generalizzato) Sia f C ([ a, b]) n
volte differenziabile in ] a, b[. Se f si annulla in n + 1 punti distinti x0 , x1 , . . . , xn
in ] a, b[, allora esiste un punto ] a, b[ in cui la derivata n-sima della f si
annulla: f (n) ( ) = 0.
Teorema 3.6.8 (Formula di Taylor) Sia f C2 ([ a, b]) e sia x0 un punto
dellintervallo [ a, b]. Allora, per qualunque x [ a, b] si pu scrivere:
f ( x ) = f ( x0 ) + f 0 ( x0 )( x x0 ) +

( x x0 )2 00
f ( x )
2

Brook Taylor (1685 - 1731) fu un matematico


inglese che svilupp quello che oggi chiamato calcolo delle differenze finite. Limportanza del suo lavoro e, soprattutto, della formula conosciuta oggi con il suo nome, venne
riconosciuta solo nel 1772 da Lagrange.

dove x un opportuno punto di [ a, b] che si trova sul segmento individuato da x0 e x.


La formula appena scritta si dice formula di Taylor di centro x0 nel
punto x.
La formula di Taylor appena scritta si pu generalizzare se la
funzione f derivabile n + 1 volte. Si ha cos la formula polinomiale
di Taylor di centro x0 :
f ( x ) = f ( x0 ) + f 0 ( x0 )( x x0 ) +

f 00 ( x0 )
f ( n ) ( x0 )
( x x0 )2 + . . . +
( x x0 ) n + R n
2!
n!

dove
Rn ( x ) =

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

con x un opportuno punto di [ a, b] che si trova sul segmento individuato da x0 e x.

4 Rappresentazione dei numeri nel


calcolatore

4.1

Disastri numerici!

Molte volte, si pensa che i risultati numerici ottenuti da un calcolatore elettronico, specie se sono ottenuti come output di un sofisticato
software, non contengano errori e, se ne abbiano, siano da ritenersi
trascurabili. In realt, quando si esegue un programma al calcolatore,
bisogna prima di tutto aver verificato che sia stato scritto correttamente (il programma deve, cio, tradurre correttamente il problema
matematico che si vuole risolvere). Inoltre, bisogna tener conto che i
risultati numerici sono sempre affetti da un certo tipo di errore, che
pu essere, per esempio, di arrotondamento o di troncamento:
un numero con infinite cifre decimali ma il calcolatore lo pu vedere
solo come un numero con finite cifre decimali..., molte formule non
possono essere usate cos come sono ma devono essere in qualche
modo semplificate (basti pensare ad una somma di infiniti termini).
Non tenere conto di questi fattori pu portare a risultati davvero
disastrosi, come pu essere verificato andando a controllare la pagina web dedicata ai disastri dovuti a uno scorretto calcolo numerico:
http://www.ima.umn.edu/~arnold/disasters/disasters.html

Vediamo alcuni di questi disastri numerici.


Il disastro del missile Patriot nel 1991. Il 25 febbraio 1991, durante la
prima Guerra del Golfo, un missile Patriot fall lintercettazione di un
missile Scud iracheno.
Questo errore cost la vita di 28 soldati, un centinaio di feriti e
la distruzione di un capannone americano. La causa del disastro
fu dovuto ad errori di arrotondamento nel sistema operativo del
Patriot: ad ogni secondo che passava si introduceva un ritardo infinitesimo che comportava un errore nella valutazione della traiettoria
del missile Scud. Col passare delle ore il ritardo accumulato fu tale
da far intercettare una posizione del tutto diversa da quella in cui
si trovava il missile da abbattere. Difatti, il computer usato per controllare il missile Patriot era basato su unaritmetica a 24 bit. Per i
calcoli, il tempo veniva registrato dallorologio interno del sistema
in decimi di secondi e successivamente moltiplicato per 1/10 per

Tutti noi ogni giorno usiamo la matematica:


per prevedere il tempo, per dire lora, per
contare il denaro. Usiamo la matematica anche per analizzare i crimini, comprendere gli
schemi, prevedere i comportamenti. Usando
i numeri, possiamo svelare i pi grandi misteri della vita!
NUMB3RS

La pagina web del prof. Douglas N. Arnold, dellUniversit del Minnesota, e viene
introdotta con la seguente frase (traducendo):
Stai seguendo con attenzione il tuo corso di
analisi numerica o di calcolo scientifico? Se
non lo stai facendo, potrebbe costarti un caro errore. Nel seguito, ci sono esempi dalla vita reale di ci che pu succedere quando gli algoritmi numerici non sono applicati
correttamente.

Figura 4.1: Il disastro del missile Patriot. La


foto presa dal sito del prof. Douglas.

28

annamaria mazzia

ottenere i secondi, utilizzando 24 bit in virgola fissa. Il numero 1/10


in base 2 ha infinite cifre decimali: la sua espansione binaria infatti 0.0001100110011001100110011001100 . . .. In 24 bit esso veniva
registrato come 0.00011001100110011001100 introducendo un errore
di 0.0000000000000000000000011001100 . . ., che, in base 10, significa
circa 0.000000095.
Gli errori di arrotondamento nella conversione del tempo causarono un errore nel calcolo della traiettoria: il tempo di 100 ore calcolato
in secondi diede il valore 359999.6567 invece di 360000, un errore di
0.3433 secondi che port il Patriot 687 metri fuori della traiettoria del
missile Scud!

Lesplosione dellAriane 5 nel 1996. Il 4 giugno 1996, dopo una spesa


di 7 miliardi di dollari, e dopo appena 40 secondi dal suo lancio,
esplose il razzo Ariane 5, nella Guiana Francese. Il razzo e il suo
carico erano valutati per oltre 500 milioni di dollari.
Perci il costo totale della missione era stato di oltre 7 miliardi
e mezzo di dollari. Fu scoperto che lerrore era nel software e, in
particolare, nella componente del Sistema di Riferimento Inerziale,
che era stato preso dal software dellAriane 4. Certe parti del software
dellAriane 5 erano state aggiornate rispetto al software dellAriane 4,
ma non si era aggiornato quanto preso dal software dellAriane 4.
In particolare, il fallimento dellAriane 5 dovuto ad un errore di
conversione da un sistema a 64 bit a virgola mobile ad uno a 16 bit a
virgola fissa.
La velocit orizzontale del razzo rispetto alla piattaforma misurato
in 64 bit era un numero pi grande del massimo consentito nellaritmetica a 16 bit. Si ebbe quindi un errore di overflow che caus
larresto del software di controllo del volo 37 secondi dopo il lancio
del razzo. Dopo 3 secondi il razzo si distrusse.

Il disastro del veicolo spaziale Mars Climate Orbiter nel 1999. Il disastro,
invece, del veicolo spaziale della missione Mars Climate Orbiter non
si trova sulla pagina web del prof. Douglas, ma i dettagli della storia
si possono trovare, ad esempio, sul sito http://marsprogram.jpl.
nasa.gov/msp98/orbiter.
Il 23 settembre 1999 si perdono le tracce del veicolo spaziale Mars
Climate Orbiter. Gli obiettivi di questa missione della NASA erano
sia di monitoraggio dei cambiamenti climatici sia di supporto per
la missione Mars Polar Lander. I costi della Climate Orbiter e della
Polar Lander erano di un totale di oltre 320 milioni di dollari.
Si era ipotizzato di entrare nellatmosfera di Marte ad una altezza
di circa 150 km mentre il veicolo spaziale entr ad una altezza di
circa 60 km. Per un errore di conversione delle unit di misura, il
velivolo entr nellatmosfera con una traiettoria inferiore rispetto a
quella pianificata. La velocit del mezzo era molto elevata e port alla
distruzione non solo del veicolo spaziale ma anche della stessa Polar
Lander.

Figura 4.2: Lesplosione di Ariane 5. Foto


tratta da http://personal.victoria.ac.
nz/stephen_marshall/SE/Failures/
SE_Ariane.html

Figura 4.3: La Mars Climate Orbiter. Foto


tratta da http://www.visionlearning.
com/blog/2012/09/21/
tragedies-in-science-the-crash-of-the-marsclimate-orbiter/,
copyright
della

NASA/JPL.

appunti di calcolo numerico

29

Diversi furono i motivi che portarono al fallimento di questa missione. Il principale dovuto allerrore nel trasferimento di informazioni
tra il team che lavorava sul veicolo spaziale, che si trovava in Colorado
e il team della missione di navigazione, che lavorava in California.
Un team usava le unit inglesi (inches, feet, pounds) mentre laltro
usava le unit metriche. Lerrore fu nella mancata conversione delle
unit di misura tra unit inglesi e unit metriche!

4.2

Aritmetica di macchina

Un qualunque numero reale pu essere rappresentato accuratamente


da una sequenza di infinite cifre decimali.
Ad esempio:
1
= 0.3333333 . . . =
3


3
3
3
0
3
+
+
+
+
.
.
.
100
100
102
103
101
104


= 3.14159265358979 . . . =

Si osservi che la notazione di usare la virgola


per esprimere la parte decimale di un numero non una notazione internazionale. Noi
useremo sempre il punto decimale per dire
che le cifre che seguono rappresentano la
parte decimale del numero.


1
1
5
3
4
+ 1 + 2 + 3 + 4 . . . 100
100
10
10
10
10

Osserviamo che abbiamo scritto 1/3 e in base 10, usando, quindi,


le cifre 0, 1, 2, . . . , 9 per poterli rappresentare.
In genere, un numero reale x pu essere rappresentato in base N
come
x = x m N m + x m 1 N m 1 + . . . + x 1 N + x 0 + x 1 N 1 + x 2 N 2 + . . . x n N n
|

{z

parte intera

} |

{z

parte frazionaria

dove m e n sono interi naturali e xk , k = m, m 1, . . . , n sono interi


naturali compresi tra 0 e N 1.
Tuttavia, i calcolatori hanno una memoria finita per poter rappresentare i numeri. Ci significa che solo una sequenza finita di cifre
possono essere usate. Inoltre, i calcolatori lavorano in base binaria,
quindi ogni numero pu essere rappresentato mediante una sequenza
di 0 e 1.
Avendo in mente questi due fattori, possiamo ora capire la rappresentazione dei numeri al calcolatore, per cui ad ogni numero
reale x associato il numero di macchina denotato come f l ( x ), in
rappresentazione floating point virgola mobile.

4.3

Conversione di base

Nel seguito, non affronteremo gli aspetti teorici del passaggio da una
base ad un altra per rappresentare lo stesso numero, ma vedremo
limplementazione pratica per convertire un numero dalla base 10
alla base 2 e viceversa.

In base 10, il numero 72.65, scritto in forma


estesa dato dalla forma:

7 101 + 2 100 + 6 101 + 5 102

30

annamaria mazzia

Il passaggio di un numero dalla rappresentazione in base 2 alla


rappresentazione in base 10 semplice, in quanto si tratta di scrivere
il numero come combinazione delle opportune potenze di 2. Vediamo
un esempio.
Esempio Sia 10001000.010 il numero scritto in base 2.
Se lo scriviamo mediante le potenze di 2 si ha:

10001000.010 =

= 1 27 + 0 26 + 0 25 + 0 24 + 1 23 + 0 22 + 0 21 + 0 20 + 0 21 + 1 22 + 0 22
|

{z

parte intera

} |

= 27 + 23 + 22 = 128 + 8 + 0.25 = 136.25


Questo quindi lo stesso numero ma rappresentato in base 10.
_
Il passaggio di un numero dalla rappresentazione in base 10 a
quella in base 2 si effettua, invece, in due passi.
Si prende la parte intera del numero e la si divide per 2: se il
resto della divisione zero, allora la corrispondente cifra binaria sar
0; se il resto diverso da zero, la corrispondente cifra binaria sar
1. Si ripete la procedura sul risultato avuto dalla divisione, fino a
quando si arriva a 1. In tal modo, calcoliamo le cifre binarie a partire
da x0 (il primo resto ottenuto) e andando avanti con indice crescente.
Si prende la parte frazionaria del numero e la si moltiplica per 2.
Se il risultato delloperazione ha la parte intera diversa da zero, allora
la corrispondente cifra binaria vale 1, altrimenti vale 0. Si ripete la
procedura sulla parte frazionaria del risultato appena ottenuto e si
continua fino a quando si arriva allo zero (o se si vede che c una
periodicit nei risultati). Le cifre binarie vengono costruite da x1 con
indice decrescente.

Esempio Vogliamo convertire il numero 725.625 dalla base 10


nella base 2.
Per la parte intera si ha:
Per la parte decimale si ha :
: 2 = quoziente resto
.625 2 = 1.250 x1 = 1
725
362
1
x0
.250 2 = 0.50
x 2 = 0
362
181
0
x1
.5 2
= 1.0
x 3 = 1
181
90
1
x2
.0 2
= 0.0
90
45
0
x3
22
1
x4
45
22
11
0
x5
11
5
1
x6
5
2
1
x7
2
1
0
x8
1
0
1
x9
In base 2 il numero diventa 1011010101.101.
_

{z

parte frazionaria

appunti di calcolo numerico

31

Osserviamo che un numero pu avere una rappresentazione finita


in base 10 e infinita in base 2. Vediamo in dettaglio un esempio:
Esempio Scriviamo il numero
base 2.
Per la parte intera:
: 2 = quoziente
1
0

resto
1

x0

11
, che 1.1 in base 10, nella
10

Per la parte decimale:


.1 2 = 0.2 x1 = 0
.2 2 = 0.4 x2 = 0
.4 2 = 0.8 x3 = 0
.8 2 = 1.6 x3 = 1
.6 2 = 1.2 x4 = 1
.2 2 = 0.4 x5 = 0
.4 2 = 0.8 x6 = 0
.8 2 = 1.6 x7 = 1
.6 2 = 1.2 x8 = 1
.2 2 = 0.4 x9 = 0

Osserviamo che nella parte decimale si ripetono allinfinito le cifre


0011. Il numero in base 2 si scrive quindi come: 1.0 0011
|{z} . . .
|{z} 0011

4.4

Rappresentazione IEEE dei numeri di macchina

Lo sviluppo dei calcolatori ha promosso e sviluppato luso del sistema


binario, in cui ciascun numero rappresentato da una successione
di cifre binarie (0 e 1). Ma come avviene la rappresentazione di un
numero nel calcolatore? Come rappresentare un numero a infinite
cifre in maniera accurata utilizzando solo un numero finito di cifre?
Lo standard IEEE , oggi utilizzato dalla maggior parte dei calcolatori, dato dalla rappresentazione in virgola mobile (floating point).
Esiste anche un tipo di rappresentazione in virgola fissa (fixed point),
ma in genere preferita quella in floating point, e noi ci soffermeremo
solo su questa.
Riprendiamo lesempio proposto in Sezione 4.2, dove abbiamo
1
scritto in base 10 come
3


1
0
3
3
3
3
= 0.3333333 . . . =
+
+
+
+
.
.
.
100
3
100
102
103
101
104
Questo un esempio di numero scritto in virgola mobile: un qualunque numero x, in base 10, si pu scrivere sotto la forma x = f 10e
dove f rappresenta la parte frazionaria, detta mantissa, del numero e
e lesponente (intero) della base con cui stiamo rappresentando il
numero stesso, che d informazioni sulla parte intera del numero.
Ci sono diverse rappresentazioni in virgola mobile, tutte equivalenti tra loro. Si parla di virgola mobile normalizzata quando la
mantissa ha una singola cifra di valore diverso da zero a sinistra della
virgola.

IEEE la sigla dellInstitute of Electrical and


Electronics Engineers

12.5 = 1.25 101 = 0.125 102 =


0.000125 105 sono tutte rappresentazioni
equivalenti dello stesso numero.

La rappresentazione in virgola mobile normalizzata, se stiamo lavorando in base 10,


esprimer la mantissa del numero come
x.qualcosa con x una cifra diversa da zero.
Invece, in base 2, la mantissa sar del tipo
1.qualcosa.

32

annamaria mazzia

La rappresentazione in virgola mobile normalizzata in base 2


quella utilizzata nello standard IEEE: i numeri si possono scrivere nella forma x = f 2e . Al calcolatore, tuttavia, non possiamo rappresentare
numeri con una mantissa a infinite cifre, perci f = 1. f 1 f 2 . . . f n
e e = e Ne1 e Ne2 . . . e0 ., dove f 1 , f 2 , . . . , f n , e e Ne1 , e Ne2 , . . . , e0
sono le cifre che caratterizzano rispettivamente la mantissa e lesponente del numero in virgola mobile normalizzata in base 2, e quindi
possono valere 1 o 0. Abbiamo n cifre per la mantissa (in realt sono
n + 1 ma poich la rappresentazione normalizzata f 0 = 1) e Ne
per lesponente. Nel sistema binario, le cifre vengono chiamate bits
( binary digits): quindi n bits sono riservati per la mantissa, Ne per
lesponente.
Un numero in floating point nella rappresentazione IEEE viene
scritto come
x = (1 + f 1 21 + f 2 22 + . . . + f n 2n ) 2e
dove

1 + f 1 21 + f 2 22 + . . . + f n 2n la mantissa, normalizzata, cui sono riservati un numero n di bits,

e la potenza della base 2 cui sono riservati un numero Ne


di bits ed limitato a variare in un determinato intervallo
[ L, U ].

Il primo 1 della mantissa (che corrisponde a f 0 ) non viene messo


in memoria ma c. La rappresentazione in virgola mobile pu essere
schematizzata nel modo seguente (s, e ed f rappresentano i bits
riservati rispettivamente per il segno della mantissa, e per le cifre
dellesponente e della mantissa ogni celletta pu avere il valore 0 o
1):
s
|{z}

segno

e
|

{z

cifre dellesponente

e
}

f
|

{z

cifre della mantissa

f
}

Abbiamo 1 bit riservato al segno (si ha 0 per il segno + e 1 per il


segno ), un numero Ne di bits per lesponente 2e , e un numero n di
bits per la mantissa.
La scelta del numero di bits da riservare allesponente e alla mantissa si basa su un compromesso tra la dimensione dellesponente
(e quindi il pi piccolo e il pi grande numero rappresentabile) e
la dimensione della mantissa (e quindi la precisione del numero
rappresantibile, pi o meno cifre decimali).
Nel sistema IEEE, la rappresentazione in singola precisione a 32
bits mentre quella in doppia precisione a 64 bits. La suddivisione
dei bits tra esponente e mantissa viene ripartita nel modo seguente:
Singola precisione
Doppia precisione

s
1
1

Ne
8
11

n
23
52

# totale bits
32
64

appunti di calcolo numerico

33

Gli esponenti possono essere sia positivi sia negativi ma si preferisce memorizzarli come interi positivi (senza segno). Abbiamo
dunque bisogno di una tecnica che permetta di rappresentare esponenti negativi come interi positivi. La tecnica utilizzata nello standard
IEEE chiamata di biasing (distorsione): un numero positivo (detto
bias) viene aggiunto allesponente (sia esso positivo o negativo) in
modo che il risultato finale sia sempre positivo. Ed questo valore
che viene memorizzato per rappresentare lesponente. Lesponente viene quindi rappresentato in forma biased (parziale, influenzata
da un altro numero): se e lesponente effettivo, noi memorizziamo il valore b + e dove b il bias dato b = 0111
| {z. . . 1}, vale a dire
b = 1 + 2 + 22 + . . . + 2 Ne2 + 0 2 Ne1

Ne bits
1 2 Ne1
=
= 2 Ne1 1
12

Esempio Cerchiamo di capire perch b ha questo valore, considerando la rappresentazione in singola precisione. Il pi grande
esponente che pu essere rappresentato in singola precisione dato
da 11111111 che, in base 10 vale 255. La met di 255 127 (con resto
1). Questo valore proprio quello assegnato al bias (infatti 127 in base
2 si scrive come 011111111) e ci permette di ottenere valori sempre
positivi per lesponente che viene effettivamente memorizzato. Dal
momento che (in base 10) deve valere la relazione 0 b + e 255
(noi memorizziamo il valore b + e sia che e sia positivo sia che sia
negativo), troviamo che e pu variare tra 127 e +128. Tuttavia, per
e = 127 si ha b + e = 0 e per e = 128 si ha b + e = 255, questi due
valori dellesponente sono riservati per i numeri speciali (zero, infinito
e Not-a-Number), quindi, e potr variare nellintervallo [126, 127].
_
In generale, quindi, si ha 0 b + e 1111 . . . 1 (il valore massimo
dato dal numero in base 2 formato da Ne cifre uguali a 1). Per trovare
il limite superiore e inferiore entro cui pu variare e, dobbiamo tener
conto del fatto che, nella rappresentazione IEEE, i valori 0 e 1111 . . . 1
sono riservati per rappresentare numeri speciali quali lo zero, infinito
e il Not-a-Number.
Di conseguenza, la relazione di prima va scritta con le disuguaglianze strette: 0 < b + e < 1111 . . . 1. Ci significa che il massimo
esponente che si pu rappresentare dato da 1111 . . . 1 1 che, in
base 2, vale 1111 . . . 10.
Da b + e 1111 . . . 10 si ha pure e 1111 . . . 10 b = 1111 . . . 10
0111 . . . 1 = 0111 . . . 1 = b.
Il limite superiore per e, che indichiamo con U vale proprio b.
Per il limite inferiore abbiamo: 0 < b + e cio 1 b + e (si noti che
siamo passati da < a ) da cui 1 b e, ovvero, (b 1) e.
Il limite inferiore L = (b 1).
In singola precisione, b = 0111
| {z. . . 1}: in base 10 b = 12710 , da cui

8 bits
lintervallo [ L, U ] = [126, 127].
In doppia precisione, invece, b = 102310 da cui [ L, U ] = [1022, 1023].

Si arriva a questo risultato perch abbiamo


una somma del tipo S = 1 + a + a2 + . . . +

an e vale S =
a=

1
= 21 .
2

1 a ( n +1)
. In questo caso,
1a

34

annamaria mazzia

Per quanto riguarda la mantissa, sono ad essa riservati n bits.


Considerando anche l1 della normalizzazione, la precisione di
n + 1 bits.
Il pi grande numero che si pu rappresentare , quindi
n

1. 111
. . . 1} 2U = ( 2k ) 2U =
| {z
n

k =0

bits

1 2(n+1) U
2 = (2 2n )2U 2U +1
1 21

Dati n valori w1 , w2 , . . . , wn con la


seguente simbologia si indica la loro somma:
n

w k = w1 + w2 + w3 + . . . w n

k =1

Il pi piccolo numero positivo rappresentabile dato, invece, da:


In singola e doppia precisione abbiamo, per
il pi grande e il pi piccolo numero positivo
rappresentabile, i seguenti valori:

1. 000
. . . 0} 2 L = 2 L
| {z
n

bits

Se si vuole rappresentare un numero al di fuori di questo intervallo


si ha overflow o underflow.

Massimo
Minimo

Esempio Vogliamo scrivere il numero 5.7510 in formato IEEE


in singola precisione.
Effettuiamo prima la conversione in base 2:
Per la parte decimale:
Per la parte intera:
.75 2 = 1.50 x1 = 1
5 2 1 x0
2 1 0 x1
.5 2
= 1.0
x 2 = 1
1 0 1 x2
.0 2
= 0.0
Quindi 5.7510 = 101.112 = 1.0111 22 .
Memorizziamo ora il numero in singola precisione:
Per lesponente, essendo e = 2, si ha:

(b + e)10 = (127 + 2)10 = 12910 = 100000012


Per la mantissa, m = 23 e si deve trascurare l1 della normalizzazione, quindi memorizzeremo le cifre 0111 e poi avremo tutti
0.
0

...

Il segno positivo, quindi s = 0


Perci la memorizzazione, considerati i bits per il segno, lesponente e la mantissa :
0

|{z}

0
{z

esponente

...

{z

0
}

mantissa

_
Consideriamo, ora, la rappresentazione dei numeri speciali.
Per convenzione si pone uguale a 0 la rappresentazione che vede
tutti zero sia nel segno, sia nellesponente che nella mantissa (non
dimentichiamo che il valore 1 della normalizzazione non messo in
memoria ma c e quindi non potremmo mai avere il valore 0, perci
lo si pone per convenzione).
Per i valori si considerano tutti 1 nello spazio dedicato allesponente, tutti 0 nello spazio dedicato alla mantissa e 0 o 1 per il
segno, a seconda che sia + o .

Singola precisione

Doppia precisione

3.4 1038
1.2 1038

10308
2.2 10308

appunti di calcolo numerico

0/1
|{z}
s

1
|

...

{z

esponente

1
}

0
|

...

{z

mantissa

35

0
}

I valori si hanno se si fa una divisione per zero o si fa un


calcolo che comporta overflow.
Si ha invece il Not-a-Number (NaN) come risultato di operazioni
non definite, come 0/0 o log 0.
A seconda della macchina si ha:

0
|{z}
s

NaNS, che produce un segnale di errore


1 1 1 ... 1 1 0 1 1 ... 1
|

{z

esponente

{z

mantissa

1
}

NaNQ, con il quale il calcolo continua comunque...


0
1 1 1 ... 1 1 1 0 0 ... 0 0
|{z}
s

4.5

{z

esponente

{z

mantissa

Precisione numerica

Un numero pu avere una rappresentazione finita o infinita. Basti

pensare al valore di o a 2 in base 10. Abbiamo anche visto che un


numero pu avere rappresentazione finita in una base ma infinita in
unaltra.
Quando rappresentiamo un numero al calcolatore possibile memorizzare solo un certo numero di cifre: in che modo lo esprimiamo?
Per lasciare maggiore generalit al discorso, consideriamo una base
N.
k
p
Sia x = (
k =0 xk N ) N il numero esatto (pu avere infinite
cifre decimali e lo rappresentiamo come somma di infiniti termini).
1
k
p
In floating-point esso sar espresso come x = (tk
=0 x k N ) N ,
esso, cio, sar arrotondato (non possiamo avere infinite cifre decimali
e, difatti, la somma considera solo t termini).
Ci sono due modi per arrotondare un numero

= x
troncamento: x = tronc( x ), dove p = p e x
k per
k
k = 0, . . . , t 1. Le altre cifre, xt , xt1 , . . . sono ignorate.

1
arrotondamento simmetrico: x = arr ( x ) = tronc( x + N t+1 N p ),
2
aggiungiamo ununit a xt+1 se xt N/2.

Lerrore assoluto | x x | che si commette approssimando il numero x con x sar

N 1 t N p
|x x | 1
N 1 t N p
2

nel troncamento
nellarrotondamento

Evitiamo di effettuare tutti i passaggi che portano alle formule dellerrore assoluto e relativo, che sono il risultato di maggiorazioni di
serie geometriche.

36

annamaria mazzia

Per lerrore relativo (in valore assoluto)

1 t
|x x | N
1
N 1 t
|x|
2

|x x |
, invece, si ha:
|x|

nel troncamento
nellarrotondamento

1 1 t
N
il numero conosciuto come precisione di macchina.
2
Nel caso della rappresentazione IEEE di un numero, si ha t
1 = n, (ricordiamo che nella rappresentazione IEEE si memorizza il
numero normalizzato), da cui lerrore di arrotondamento relativo che
|x x |
si commette
2(n+1) .
|x|
In singola precisione (n = 23), avremo
Il valore

|x x |
224 5.96 108
|x|
ci significa che avremo 8 cifre decimali corrette.
In doppia precisione (n = 52) avremo

|x x |
253 1.11 1016
|x|
ci significa che avremo 16 cifre decimali corrette.

4.6

Cifre significative

Prima di vedere come si propagano gli errori nelle operazioni elementari di moltiplicazione, divisione, addizione e sottrazione, vediamo il
concetto di cifre significative.
Le cifre significative sono quelle che danno uninformazione effettiva sul valore del numero, indipendentemente dalla parte esponenziale.
Esempio Supponiamo di dover calcolare lerrore assoluto e
relativo per approssimare un certo numero x mediante x , per i
seguenti casi:
1. x = 0.6000 101 , x = 0.6100 101 ;
2. x = 0.6000 103 , x = 0.6100 103 ;
3. x = 0.6000 104 , x = 0.6100 104 ;
Nel primo caso, abbiamo | x x | = 0.1 mentre lerrore relativo vale
0.166666 101
Nel secondo caso, lerrore assoluto vale 1 105 e lerrore relativo
0.166666 101 .
Nellultimo caso, lerrore assoluto 1 102 e quello relativo 0.166666
101 .

appunti di calcolo numerico

37

Lerrore relativo rimane sempre lo stesso, mentre quello assoluto


cambia per i tre casi esaminati. Come misura di accuratezza, lerrore assoluto pu portare a conclusioni fuorvianti, mentre lerrore
relativo ci d informazioni pi significative perch tiene conto della
dimensione del valore.
_
Abbiamo quindi la seguente definizione (per numeri in base 10).
Definizione 4.6.1 Si dice che un numero x approssima x con t cifre
significative se t il pi grande intero positivo per il quale

|x x |
5 10t
|x|
Se il numero x rappresentato al calcolatore in floating point,
mediante la rappresentazione data da f l ( x ), sappiamo che vale
| x f l ( x )|
1
N 1t (N la base, t il numero di cifre per la man|x|
2
tissa): se consideriamo la base dieci, questa maggiorazione si scrive
proprio come

Nellesempio precedente, i tre numeri sono


rappresentati con due cifre significative dal
momento che 0.166666 101 5 102
e 0.166666 101 > 5 103 .

|x x |
0.5 101t = 5 10t
|x|
Questultima maggiorazione, con t il pi grande intero positivo per il
quale verificata la relazione scritta, d quindi la definizione di cifre
significative per un numero espresso in floating point.

4.7

Propagazione degli errori

Se scriviamo il numero in virgola mobile normalizzata, le cifre significative sono date, quindi, dalle cifre della parte frazionaria. La
bont delle cifre va diminuendo procedendo da sinistra verso destra e
questo pu portare ad una perdita di cifre significative, come possiamo vedere studiando la propagazione degli errori nelle operazioni
elementari.
Supponiamo che i numeri su cui lavoriamo siano affetti da errore
(di arrotondamento), mentre le operazioni siano eseguite in modo
esatto. Indichiamo con il simbolo o una qualunque delle operazioni
elementari {, /, +, } e con f l ( x ) il numero x rappresentato in
floating point e arrotondato, quindi f l ( x ) = x (1 + ex ) dove ex
lerrore di arrotondamento relativo.
Allora f l ( x o y) = f l ( x ) o f l (y) = x (1 + ex ) o y(1 + ey ).

Moltiplicazione

x (1 + ex ) y(1 + ey ) = ( x y)(1 + ex )(1 + ey ) ( x y)(1 + ex + ey )

Quindi lerrore nel prodotto dato da exy = ex + ey


Divisione (con y 6= 0)
x (1 + e x )
x
x
= (1 + ex )(1 ey + e2y + . . .) (1 + ex ey )
y (1 + e y )
y
y

x f l (x)
si ha xe x = x f l ( x )
x
da cui f l ( x ) = x (1 + e x ).
Da e x =

Nei calcoli sono trascurabili le potenze


maggiori o uguali a due per e x e ey

38

annamaria mazzia

Abbiamo scritto

Si ha ex/y = ex ey : gli errori si accumulano additivamente

Somma algebrica (addizione o sottrazione, a seconda del segno


di x e y)

x (1 + ex ) + y(1 + ey ) = x + y + xex + yey = ( x + y)(1 +

1
= (1 ey + e2y +
1 + ey

. . .) come risultato della formula polinomiale


1
di
1 + ey
centro 0.
di Taylor della funzione f (ey ) =

x
y
ex +
ey )
x+y
x+y

x
y
ex +
ey , una combinazione lineare
x+y
x+y
che dipende da x e y.
Lerrore ex+y =

xy > 0 = |ex+y | |ex | + |ey |

|x|
|y|
possono essere molto grandi e, in
e
| x + y| | x + y|
tal caso, ci sar unamplificazione notevole dellerrore. Si ha
il fenomeno di cancellazione se non si fa attenzione al numero di
cifre significative dei numeri che vengono sommati.

xy < 0 =

Ricordiamo, infine, che in aritmetica di macchina non valgono pi


la propriet distributiva o associativa del prodotto.
Esempio Sia x = 0.1103 e y = 0.009963. Se consideriamo
un sistema decimale a 4 cifre, normalizzando i numeri, abbiamo
x = 1.103 101 e y = 9.963 103
Facendo la sottrazione di questi due numeri, abbiamo 1.103 101
9.963 103 = 0.1103 0.009963 = 0.100337. Facendo larrotondamento a 4 cifre abbiamo il valore 1.0034 101 .
|0.100337 0.10034|
Lerrore relativo che commettiamo :
2.99
0.100337
105 . Questo errore minore della precisione di macchina (considera1
ta la base 10 e le 4 cifre) 103 .
2
Tuttavia, se non teniamo conto delle cifre significative ma tronchiamo i numeri alle prime 4 cifre, abbiamo la sottrazione di 0.1103
0.0099 = 0.1004.
|0.100337 0.1004|
Questa volta lerrore relativo
.63 103 .
0.100337
Lerrore maggiore della precisione di macchina.
_
Esempio Sia da risolvere lequazione ax2 + bx + c = 0 con
a = 1, b = 56 e c = 1, quindi x2 56x + 1 = 0, in una macchina a 4
cifre decimali (normalizzata).

b b2 4ac
Applicando la formula x1/2 =
abbiamo x1/2 =
2a

0.01786284073

28 783 = 28 27.98213716 =
. Larrotonda55.98213716
mento delle due radici in virgola mobile normalizzata a 4 cifre
decimali d: x1 = 1.7863 102 e x2 = 5.5982 101 .
Consideriamo ora la macchina a 4 cifre decimali per risolvere
lequazione:

x1 = 28 783 = 2.8 101 2.7982 101 = 0.0018 101 = 0.018 = 1.8 102

Supponiamo di avere due numeri molto vicini


tra loro, in cui le prime p + 2 cifre della parte
frazionaria sono buone mentre le altre sono
corrotte. Inoltre, le prime p cifre siano le stesse per entrambi i numeri (usiamo i simboli
vvv e www per esprimere le cifre corrotte):

f l ( x ) = 1.d1 d2 . . . b( p+1) b( p+2) vvv 2e


0
0
e
f l (y) = 1.d1 d2 . . . b(
p+1) b( p+2) www 2

Quando andiamo a fare la sottrazione le prime p cifre buone si annullano. Da p + 2 cifre


buone, ne abbiamo ora solo 2 e tutte le altre
sono quelle corrotte. Con la normalizzazione
il risultato diventa del tipo (ora qqqqq sono le
cifre corrotte):
00 00
e
f l ( x y) = 1.b
1 b2 qqqqqq 2

appunti di calcolo numerico

x2 = 28 +

39

783 = 2.8 101 + 2.7982 101 = 5.5982 101

La radice x2 arrotondata correttamente, mentre la variabile x1 no,


per effetto della cancellazione.
Per ricavare x1 con larrotondamento corretto, applichiamo la formula x1 x2 = c/a, che, nel nostro caso, vale x1 x2 = 1 da cui x1 =
1/x2 = 1/(5.5982 101 ) = 1.7863 102 . Abbiamo fatto unoperazione
che non risente del fenomeno di cancellazione numerica!
_
Esempio Vediamo come non valga pi la relazione ( a b)2 =
a2 2ab + b2 .
Sia a = 15.6 e b = 15.7 e la macchina sia a 3 cifre decimali
( a b) = ( a b) + eab . Abbiamo ( a b) = 15.6 15.7 = 0.1.
Quindi ( a b)2 = +0.01 = 0.1 101 .
Consideriamo ora a2 2ab + b2 = 243.36 489.84 + 246.49 =
0.24336 103 0.48984 103 + 0.24649 103
Considerando la macchina a 3 cifre decimali, abbiamo: 0.243 103
0.490 103 + 0.246 103 = 0.1 101
I risultati sono completamente diversi!
_
Esempio Consideriamo il problema di approssimare la derivata della funzione f ( x ) = sin x nel punto x = 1.2.
Supponiamo di non poter valutare direttamente la derivata della
f e di volerla approssimare applicando la formula polinomiale di
Taylor:
f ( x0 + h ) = f ( x0 ) + h f 0 ( x0 ) +

h2 00
h3
h4 IV
f ( x0 ) + f 000 ( x0 ) +
f ( x0 ) + . . .
2
6
24

Allora
f 0 ( x0 ) =

f ( x0 + h ) f ( x0 )
h
h2
h3
( f 00 ( x0 ) + f 000 ( x0 ) + f IV ( x0 ) + . . .)
h
2
6
24

f ( x0 + h ) f ( x0 )
.
h
Lerrore, detto errore di discretizzazione, che si commette
Approssimiamo, quindi, la f 0 ( x0 ) calcolando

| f 0 ( x0 )

f ( x0 + h ) f ( x0 )
h
h2
h3
| = | f 00 ( x0 ) + f 000 ( x0 ) + f IV ( x0 ) + . . . |
h
2
6
24

Supponendo di conoscere il valore della derivata seconda in x0 ,


per piccoli valori di h possiamo dare una stima dellerrore di discretizzazione,

| f 0 ( x0 )

f ( x0 + h ) f ( x0 )
h
| | f 00 ( x0 )|
h
2

Ci aspettiamo, anche senza conoscere il valore di f 00 ( x0 ) (purch


diverso da 0) che lerrore di discretizzazione diminuisca proporzionalmente con il passo h, al decrescere di h.
Nel nostro caso, in cui f ( x ) = sin ( x ), noi conosciamo il valore
esatto della derivata in 1.2, cos (1.2) = 0.362357754476674... e possiamo dunque calcolare lerrore esatto che commettiamo approssimando
la derivata di sin x con la formula che abbiamo ricavato.

Questa volta lavoriamo su una macchina non


normalizzata, per cui scriviamo la parte frazionaria come 0.qualcosa. Per esercizio, si
ripeta lesempio lavorando su una macchina
a 2 cifre decimali normalizzata e su una macchina a 3 cifre decimali normalizzata. Cosa
si osserva?

40

annamaria mazzia

Per h = 0.1 non abbiamo unapprossimazione accurata. Ci aspettiamo che diminuendo il passo h lerrore che commettiamo diminuisca.
Riportiamo, nella tabella a lato, gli errori della formula (in valore
h
assoluto) e confrontiamoli con lerrore di discretizzazione | f 00 ( x0 )|
2
(i conti sono fatti in singola precisione):
Lerrore commesso dallo schema decresce come h e, in particolare,
h
come | f 00 (1.2)| = 0.46602h.
2
Possiamo pensare di ottenere unaccuratezza grande quanto vogliamo a condizione di prendere valori di h sempre pi piccoli. In
realt, per valori di h molto piccoli, gli errori iniziano ad aumentare!
h

errore

1.e-8
1.e-9
1.e-10
1.e-11
1.e-12
1.e-13
1.e-16
1.e-18

4.3611e-10
5.5947e-8
1.6697e-7
4.6603e-5
1.3006e-4
4.2505e-4
3.6236e-1
3.6236e-1

errore

h 00
| f ( x0 )|
2

1.e-1
1.e-2
1.e-3
1.e-4
1.e-5
1.e-6

4.7167e-2
4.6662e-3
4.6608e-4
4.6603e-5
4.6602e-6
4.6597e-7

4.6602e-2
4.6602e-3
4.6602e-4
4.6602e-5
4.6602e-6
4.6602e-7

h 00
| f ( x0 )|
2
4.6602e-9
4.6602e-10
4.6602e-11
4.6602e-12
4.6602e-13
4.6602e-14
4.6602e-16
4.6602e-19

In Figura 4.4 vediamo come la curva dellerrore inizialmente segue


la retta descritta dallerrore di discretizzazione ma poi si allontana
da essa. Perch questo diverso comportamento per valori di h molto
piccoli?
Dobbiamo tenere presente che lerrore che noi valutiamo non
semplicemente lerrore di discretizzazione ma la somma dellerrore
di discretizzazione e dellerrore di arrotondamento! Per valori di
h grandi, lerrore di discretizzazione descresce al diminuire di h e
domina sullerrore di arrotondamento. Ma quando lerrore di discretizzazione diventa molto piccolo, per valori di h minori di 108 ,
allora lerrore di arrotondamento inizia a dominare e ad aumentare sempre pi al diminuire di h. Questo un motivo per cui si
deve cercare di far prevalere lerrore di discretizzazione in un procedimento numerico. Nellerrore di arrotondamento, per h via via
pi piccoli, si verifica un errore di cancellazione: f ( x0 + h) praticamente uguale a f ( x0 ) per h molto piccoli! per cui lerrore che
calcoliamo | f 0 ( x0 ) 0| = f 0 ( x0 ) = 0.3623577544.... Una strategia
per evitare la cancellazione di scrivere diversamente la differenza
f ( x0 + h) f ( x0 ). Nel caso di f ( x ) = sin ( x ) ricorriamo alla formula
+

trigonometrica per cui sin () sin () = 2 cos (


) sin (
).
2
2
Vediamo come migliorano le cose inserendo nel grafico 4.4 anche
la curva dellerrore che otteniamo utilizzando questa espressione
trigonometrica. Lerrore continua a diminuire anche quando la formula precedente d un errore crescente. Sempre in Figura 4.4, e in
riferimento alla formula non buona, abbiamo considerato la curva
dellerrore di arrotondamento in modo da confrontare landamento
effettivo dellerrore con un limite superiore teorico dellerrore computazionale totale dato dalla somme degli errori di discretizzazione e

Figura 4.4: In alto: errore di discretizzazione


ed effettivo ( f 0 ( x0 )

f ( x0 + h ) f ( x0 )
).
h

In basso: errori di discretizzazione, di arrotondamento, ed errore effettivo (con f 0 ( x0 )

f ( x0 + h ) f ( x0 )
), ed errore dalla forh
mula trigonometrica per cui sin ( x0 + h)
sin ( x0 ) = 2 cos (2x0 + h/2) sin (h/2). I
grafici sono in scala logaritmica.

appunti di calcolo numerico

41

di arrotondamento. La rappresentazione di f ( x ) affetta da errore


per cui avremo: f ( x ) = f ( x ) + ex . Lerrore di arrotondamento
e x + h e x0
f ( x0 + h ) f ( x0 )
f ( x0 + h ) f ( x0 )
. Maggioran=
+ 0
h
h
h
do ex con la precisione di macchina e, lerrore di arrotondamento
dato da 2e/h: per h piccoli lerrore che predomina!
_

4.8

4.8.1

Instabilit e malcondizionamento

Instabilit

In generale impossibile evitare un accumulo lineare degli errori di


arrotondamento durante un calcolo, ed accettabile che ci sia una
crescita lineare moderata, del tipo
En c0 nE0
dove En misura lerrore in valore assoluto delln-sima operazione
dellalgoritmo e c0 rappresenta una costante non molto grande.
Se invece avviene una crescita di tipo esponenziale

Per algoritmo intendiamo un procedimento di


calcolo.

En c1n E0
con c1 > 1, allora lalgoritmo instabile. Algoritmi del genere devono
essere evitati!
Definizione 4.8.1 Un procedimento numerico si dice instabile se gli errori
che vi sono associati non rimangono limitati ma crescono fino a distruggere
completamente la soluzione.

Esempio Consideriamo lintegrale


yn =

Z 1
0

xn
dx
x + 10

per valori di n = 1, 2, . . . , 30. Osserviamo che, poich x [0, 1],


la funzione integranda varia pure essa nellintervallo [0, 1] per cui
0 < yn < 1.
Analiticamente, si ha:
yn + 10yn1 =

Z 1 n
x + 10x n1
0

x + 10

dx =

Z 1 n 1
x
( x + 10)
0

x + 10

dx =

Z 1
0

x n1 dx =

Vale anche la relazione


y0 =

Z 1
0

1
dx = ln (11) ln (10).
x + 10

Possiamo pensare, quindi, di calcolare numericamente il valore di


yn attraverso il seguente algoritmo:
1. valutare y0 = ln (11) ln (10)

1
n

42

annamaria mazzia
Da un programma in Fortran:

2. per n = 1, 2, . . . , 30 valutare yn =

1
10yn1
n

Questa formula ricorsiva darebbe lesatto valore se non fossero


presenti errori di arrotondamento che ci allontanano completamente
dalla soluzione vera. Lerrore si moltiplica esponenzialmente. Infatti
y1 = 1 10y0
1
1
10(1 10y0 ) = 10 + (10)2 y0
2
2
1
1
y3 = 10( 10 + 102 y0 ) = 103 y0 + costante
3
2
..
..
.
.
y2 =

yn = (10)n y0 + costanten
Lalgoritmo quindi, considerati gli errori di arrotondamento, presenta
un errore En con crescita di tipo esponenziale. Difatti otteniamo valori
che via via si allontanano dallintervallo di ammissibilit [0, 1].
I risultati che ricaviamo sono riportati nelle tabelle a lato (osserviamo che sono leggermente diversi a seconda dal linguaggio usato,
proprio per effetto dellinstabilit).
1 1
Se invece, consideriamo yn1 =
( yn ), partendo da un valore
10 n
di n molto grande e andando a ritroso, lerrore diminuisce. Perci,
dato un valore di accuratezza e > 0 e fissato un intero n1 possibile
determinare lintero n0 tale che, partendo da yn0 = 0 e andando
a ritroso, gli integrali yn saranno valutati con un errore in valore
assoluto minore di e per 0 < n n1 . Infatti:
y n0 = 0
1 1
10 n0
1
1 1
1
1
(

y n0 2 =
)=
+ costante
10 n0 1 10 n0
(10)2 n0
..
..
.
.
y n0 1 =

yn =

1
+ costanten0 n
(10)n0 n n0

1
10n0 n
(dal momento che n0 n > 0, lerrore decresce per n che tende a
zero). Se richiediamo una tolleranza e = 106 , e fissiamo un valore
n1 , per calcolare n0 dovr essere
Lerrore al passo n dipende, quindi, (in valore assoluto) da

1
10n0 n1

< e cio 10n1 n0 < e

Passando al logaritmo in base 10:


n1 n0 < log e = n0 > n1 log e
Fissato n1 = 20 si ricava n0 = 26.
Questa volta i calcoli danno gli stessi risultati sia in Matlab sia in
Fortran:

yn

0
1
2
3
4
...
7
8
9
10
18
27
30

9.5310e-2
4.6898e-2
3.1021e-2
2.3122e-2
1.8778e-2
....
-3.0229e-1
3.1479e+0
-3.1368e+1
3.1378e+2
3.1377e+10
-3.1377e+19
3.1377e+22

Da un programma Matlab:

yn

0
1
2
3
4
...
7
8
9
10
18
27
30

9.5310e-2
4.6898e-2
3.1018e-2
2.3154e-2
1.8465e-2
....
1.1481-2
1.0194e-2
9.1673e-3
8.3270e-3
-9.1694e+1
-9.1699e+9
-9.1699e+13

appunti di calcolo numerico

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

yn
0.000000
3.84615e-3
3.61538e-3
3.80513e-3
3.96731e-3
4.14872e-3
4.34703e-3
4.56530e-3
4.80663e-3
5.07489e-3
5.37486e-3
5.71251e-3
6.09542e-3
6.53332e-3
7.03898e-3

n
11
10
9
8
7
6
5
4
3
2
1
0

43

yn
7.62944e-3
8.32797e-3
9.16720e-3
1.01944e-2
1.14806e-2
1.31377e-2
1.53529e-2
1.84647e-2
2.31535e-2
3.10180e-2
4.68982e-2
9.53102e-2

Osserviamo come il valore y0 coincida con il valore teorico noto.


_
Lesempio appena visto ci porta a dare alcune considerazioni sui
criteri su cui si deve basare un algoritmo: un algoritmo deve essere
accurato, efficiente e robusto, accurato nel senso che bisogna essere
in grado di sapere la grandezza dellerrore che si commette nellalgoritmo stesso; efficiente in termini di velocit di esecuzione e di
richiesta di spazio di memoria per le variabili utilizzate; robusto nel
dare il risultato corretto entro un livello di tolleranza dellerrore che
sia accettabile.

4.8.2

Malcondizionamento

Definizione 4.8.2 Un problema si dice malcondizionato se a piccole variazioni nei dati di input del problema corrispondono forti variazioni nei dati
di output.
Quando il problema molto sensibile alle variazioni dei dati di input,
producendo risultati molto diversi tra loro, allora nessun algoritmo,
per quanto robusto e stabile, potr dare una soluzione robusta al
problema stesso.
Esempio Il problema del calcolo delle radici di un polinomio
p( x ) di grado n un esempio di problema malcondizionato.
Sia p( x ) = a0 + a1 x + a2 x2 + . . . + an x n . I dati di input del problema sono i coefficienti a0 , a1 , . . . , an . I dati di output sono le radici del
polinomio.
Si pu provare che a piccole variazioni sui dati iniziali, corrispondono grandi variazioni sui risultati. Vediamo il caso del polinomio
p( x ) = ( x 1)( x 2) ( x 10). Chiaramente, tale polinomio ha
radici 1, 2, . . . , 10.
Figura 4.5: Esempio: malcondizionamento

44

annamaria mazzia

Se perturbiamo il polinomio variando il coefficiente a9 del valore


di 0.00001, considerando quindi il polinomio p( x ) + 0.00001x9 , le
radici corrispondenti si discostano di poco da quelle del polinomio
di partenza, come si pu notare in Figura 4.5. Ma se variamo il
coefficiente a9 del valore 0.0001, considerando cio il polinomio p( x ) +
0.0001x9 allora le radici corrispondenti a x7 , x8 , x9 , x10 non saranno pi
reali ma avranno anche una parte immaginaria. La piccola variazione
sui dati di ingresso, quindi, provoca una grande variazione sui dati
in uscita, proprio perch il problema malcondizionato.
_
Una quantit che misura il grado di sensibilit di un problema
fornendoci indicazioni sul fatto che a piccole variazioni sui dati di
ingresso del problema ci possono essere piccole o grandi variazioni
sui dati di uscita si chiama indice di condizionamento (o numero di
condizionamento) del problema.
Diamo la definizione nel caso in cui il nostro problema si possa
identificare come una funzione f : R R. Il valore y = f ( x ) il
valore di uscita del problema f . Vogliamo vedere cosa succede se il
dato di ingresso non pi x ma x + x. x rappresenta quindi una
perturbazione sul dato iniziale. Assumiamo x 6= 0, y 6= 0.
Applichiamo la formula di Taylor di centro x. Si ha:
f ( x + x ) = f ( x ) + f 0 ( x )x + O(x2 ) f ( x ) + f 0 ( x )x
La variazione sul dato duscita data dalla differenza f ( x + x )
f ( x ). Chiamiamo questa differenza con y. Quindi y = f ( x +
x ) f ( x ) f 0 ( x )x (utilizziamo il risultato ottenuto dalla formula
di Taylor).
Se utilizziamo gli errori relativi, abbiamo (e sapendo che y = f ( x )):
y
f 0 ( x )x

y
f (x)
Moltiplicando numeratore e denominatore a secondo membro per x
si ricava
y
x f 0 ( x ) x

y
f (x) x
Al limite per x 0, questa uguaglianza approssimata (abbiamo
usato il simbolo ) diventa una vera uguaglianza. Questo suggerisce
di definire lindice di condizionamento di f mediante la formula
0

x f (x)

(cond f )( x ) =
f (x)
Questo numero ci dice quanto grandi sono le perturbazioni relative
per y confrontate con le relative perturbazioni di x.
x
Per x = 0 e y 6= 0, non ha senso considerare lerrore relativo
,e
x
si considera lerrore assoluto su x. In tal caso, si definisce indice di
condizionamento la quantit

Come esempio, consideriamo f ( x ) = x1/ ,


con x > 0 e > 0. Calcoliamo lindice di condizionamento applicando la formula (poich abbiamo supposto x > 0, si ha
f ( x ) 6= 0). Risulta



0
1 1/1
x f ( x ) x x
1

=
(cond f )( x ) =
=
f ( x ) x1/



Per grande, (cond f )( x ) tende a zero, quindi abbiamo un problema bencondizionato.
Se, invece molto piccolo si ha un problema malcondizionato (se = 1010 , si
10

ha f ( x ) = x10 e (cond f )( x ) = 1010 , un


valore molto grande).

appunti di calcolo numerico

0

f (x)


(cond f )( x ) =
f (x)
Per x = y = 0 si considera invece lerrore assoluto sia per x che
per y, dimodoch lindice di condizionamento diventa

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

4.9

Domande di riepilogo

1. Cosa significa fenomeno di cancellazione numerica? Spiegare e fornire


un esempio.
2. Definire un algoritmo stabile e fare un esempio mostrando un
algoritmo stabile e uno instabile.
3. Cosa vuol dire che un problema malcondizionato? Dare un
esempio.
4. Come definito lindice di condizionamento di una funzione f ?

45

5 Zeri di funzione
5.1

Partiamo da alcuni problemi...

Il problema di calcolare la radice quadrata di un numero un


problema molto antico. Gi gli antichi Babilonesi, intorno al 1700
a.C., se lo erano posto e avevano trovato la soluzione: per calcolare

b, partivano da un certo valore x che si avvicinava alla soluzione,


dividevano b per questo numero, e facevano poi la media, iterando il
procedimento. Lalgoritmo si pu schematizzare nel modo seguente:

partire da x0 prossimo a b;

G
G

considerare x1 =

generalizzando: xn+1 =

b
1
( x0 + );
2
x0
1
b
( x n + ).
2
xn

Il metodo usato dai Babilonesi non altro che il metodo di NewtonRaphson (che vedremo pi avanti) per trovare gli zeri della funzione
f ( x ) = x2 b.
Il problema della ricerca degli zeri di funzione non rappresenta
un problema puramente matematico ma si incontra in svariate
applicazioni.
Consideriamo, ad esempio, la teoria di Ising del campo medio
dei ferromagneti: lequazione di stato che si ha in assenza di campo
magnetico e che governa la magnetizzazione di equilibrio m pu
essere scritta come
m
m = tanh ( )
T

Non so come il mondo potr giudicarmi ma


a me sembra soltanto di essere un bambino
che gioca sulla spiaggia, e di essermi divertito a trovare ogni tanto un sasso o una conchiglia pi bella del solito, mentre loceano della
verit giaceva insondato davanti a me.
Isaac Newton

Per

calcolare
sapendo
che il valore che dobbiamo approssimare
compreso tra 1 e 2, possiamo partire da
x0 = 1.5, ottenendo:

esempio,

per

1.41421356237310,

x0 = 1.5

2
) = 1.41666667
1.5
2
1
x2 = 2 (1.41666667 +
) = 1.41421569
1.41666667
2
x3 = 12 (1.41421569 +
) = 1.41421356
1.41421569
x1 = 21 (1.5 +

dove T rappresenta la temperatura del sistema. Fissata la temperatura


T, i valori di m che soddisfano lequazione precedente possono essere
m
visti come gli gli zeri della funzione f (m) = tanh ( ) m.
T
I metodi numerici che discuteremo in questo Capitolo servono per
trovare approssimazioni numeriche ad equazioni del tipo f ( x ) = 0.

5.2

Metodo delle Bisezioni

Sia data una funzione f continua in un intervallo [ a, b], con f ( a) e


f (b) che assumono valori di segno opposto. Allora, per il teorema del

Figura 5.1: Grafico della funzione f ( x ) =


tanh ( x/0.65) x e sua intersezione con
lasse delle x.

48

annamaria mazzia

Valore Intermedio (si veda il Teorema 3.6.3 con K = 0), esiste almeno
un punto ] a, b[ tale che f ( ) = 0.
Assumiamo, per semplicit che ci sia una sola radice nellintervallo ] a, b[.
Il metodo delle bisezioni (detto anche metodo dicotomico) si chiama cos perch, ad ogni passo, viene dimezzato lintervallo precedente, cercando in tal modo di racchiudere la radice in sottointervalli
sempre pi piccoli.

Nel caso ci sia pi di una radice, la procedura che ora descriviamo vale sempre, e ci
permette di calcolare una di queste radici.

Si pone a0 = a e b0 = b. Si prende il punto medio dellintervallo


a + b0
[ a0 , b0 ], c0 = 0
.
2

Se f (c0 ) = 0 allora abbiamo trovato la radice dellequazione,


altrimenti si va a controllare il segno di f (c0 ).
Se f (c0 ) e f ( a0 ) hanno lo stesso segno, allora si trova nellintervallo ]c0 , b0 [ (applicando di nuovo il teorema del Valore
Intermedio). In tal caso porremo a1 = c0 e b1 = b0 .

Se, invece, f (c0 ) e f (b0 ) hanno lo stesso segno, allora si trova


nellintervallo ] a0 , c0 [ In tal caso porremo a1 = a0 e b1 = c0 .

Riapplichiamo questa procedura appena descritta sul sottointervallo [ a1 , b1 ]

Fermiamo il procedimento ad una certa iterazione n, se f (cn ) = 0


o se lampiezza del sottointervallo sufficientemente piccola, cio
bn a n
tol dove tol una certa tolleranza prefissata. In tal caso
2
assumiamo cn come approssimazione della radice .
Figura 5.2: Metodo delle Bisezioni

Osserviamo che, ad ogni passo, viene dimezzato lintervallo in cui


si trova la radice , da cui

| cn |

ba
.
2n +1

Da questa relazione, si pu determinare il numero di iterazioni n


necessarie per calcolare unapprossimazione della radice entro una
certa tolleranza tol richiesta. Infatti
ba
tol = | cn | tol
2n +1
Ma
ba
log
ba
ba
2tol
= n
tol 2n
2tol
log(2)
2n +1



.

Lalgoritmo di bisezione pu essere descritto sotto forma di pseudocodice. Se il metodo non converge (perch, ad esempio, la funzione
che abbiamo scelto non assume segno opposto agli estremi dellintervallo), il procedimento iterativo potrebbe entrare in stallo (pensiamo
ad un programma da fare eseguire al calcolatore) e quindi conviene introdurre un numero massimo di iterazioni, che viene indicato
con itmax. Si intende che il metodo converge quando lampiezza del
nuovo intervallo diventa minore di una tolleranza tol prefissata.

appunti di calcolo numerico

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

19
20

Fine-Se

15
16
17
18

5.3

Dati di input: a, b, tol, itmax


Dati di output: soluzione approssimata c o messaggio di
fallimento
verificare che f ( a) f (b) < 0, altrimenti non si pu implementare
il metodo ;
n 1 ;
c ( a + b)/2 ;
ampiezza intervallo |b a|/2 ;
Fintantoch n itmax e ( f (c) 6= 0 e ampiezza intervallo > tol)
n n + 1 (incrementa n) ;
Se f ( a) f (c) > 0 allora
a c
altrimenti
b c
Fine-Se
aggiorna c ;
aggiorna ampiezza intervallo ;
Fine-Fintantoch
Se f (c) = 0 o ampiezza intervallo tol allora
c la soluzione approssimata
altrimenti
n > itmax ;
il metodo fallito dopo itmax iterazioni ;

14

49

Metodo del Punto Fisso

Il problema f ( x ) = 0 pu essere reso equivalente alla ricerca del


punto fisso di una opportuna funzione g (vale a dire del problema
g( x ) = x).

 x 2

sin ( x ) =
2
0, aggiungendo ad ambo i membri x, ottenia x 2
mo
sin ( x ) + x = x. Se poniamo
2  
x 2
g( x ) =
sin ( x ) + x, le radici della
2
f coincidono con i punti fissi della g.
Un esempio. Da f ( x ) =

Definizione 5.3.1 Data una funzione g, si definisce punto fisso della


g, quel punto che soddisfa la relazione g( ) =
Una funzione pu ammettere uno o pi punti fissi o non ammetterne affatto.
Un modo per calcolare un punto fisso di una funzione g dato da
iterazioni successive sulla funzione g stessa.
Figura 5.3: Radici di f ( x ) =

Esempio
Supponiamo che la funzione g sia g( x ) = cos ( x ). Prendiamo come
valore iniziale x0 = 1. Con una calcolatrice, andiamo a calcolare (in
modalit radianti!) il suo coseno: ricaviamo x1 = cos ( x0 ) = g( x0 ) =
0.54030230. Successivamente, calcoliamo il coseno di x1 , ottenendo x2 = cos ( x1 ) = 0.857553216. Osserviamo che x2 = cos ( x1 ) =
cos (cos ( x0 )) e non cos2 ( x0 )! Abbiamo innescato, in questo modo,
un procedimento iterativo per cui xn+1 = cos ( xn ) = g( xn ). Con

sin ( x ).

Figura 5.4: Punti fissi di g( x ) =

sin ( x ) + x.

 x 2
2

 x 2
2

50

annamaria mazzia

la calcolatrice, basta digitare sulla funzione cos ogni volta in modo


da avere i nuovi valori della successione xn+1 . I primi numeri che
otteniamo non sono molto importanti. Quelli importanti sono quelli
che si hanno dopo 15, 30 o 100 passi. Nel nostro caso, abbiamo
Perch i valori di x tendono a 0.7390851332? Cosa ha di speciale
questo numero? Il valore 0.7390851332 un punto fisso per la funzione
cos ( x ).
_

xn

5
11
13
14
15
29
30
56
57
58

0.7013687746
0.7356047404
0.7414250866
0.7375068905
0.7401473356
0.7390893414
0.7390822985
0.7390851333
0.7390851332
0.7390851332

Esempio
Consideriamo la funzione g( x ) =

1
x + 2. Partendo da x0 = 0 si ha
2

n xn
1 x1 = 12 0 + 2 = 2
2 x2 = 12 2 + 2 = 3
3 x3 = 12 3 + 2 = 3.5
4 x4 = 12 3.5 + 2 = 3.75
5 x5 = 12 3.75 + 2 = 3.875
6 x6 = 21 3.875 + 2 = 3.9375
I numeri 2, 3, 3.5, 3.75, 3.875, 3.9375 sembrano avvicinarsi a = 4.
Difatti, per valori crescenti di n, per xn che tende a , si ha, da
1
1
una parte = limn xn+1 = limn xn + 2 = + 2 da cui,
2
2
1
= + 2, cio = 4.
2
_
Scopriamo quindi che se literazione xn+1 = g( xn ) converge a ,
punto fisso per la funzione g.
Da un punto di vista geometrico, i grafici di y = x (bisettrice del
primo e terzo quadrante) e di y = g( x ) si intersecano in .
Tuttavia, non sempre questo schema iterativo, applicato a funzioni
che ammettono uno o pi punti fissi, converge. Vediamo con un
esempio.
Esempio
Sia g( x ) = x2 . Analiticamente troviamo due punti fissi per questa
funzione. Dovendo essere = 2 , si ricava 2 = 0, vale a dire
( 1) = 0: quindi = 0 e = 1 sono i due punti fissi per questa
funzione.
Partendo da x0 = 0.5, si ha la successione di valori 0.25, 0.0625,
0.00390625, rapidamente il metodo converge a = 0
Se si prende come punto iniziale un valore x0 ] 1, 1[, la successione converge a = 0. Le sole successioni che convergono a = 1
solo le ovvie successioni generate da x0 = 1. Se si prende come
punto iniziale x0 tale che | x0 | > 1 allora lo schema iterativo xn+1 = xn2
diverge a +. Partendo da x0 = 2, si ha 4, 16, 256, 65536...
_
Questo esempio significativo per capire come ciascun punto fisso
abbia un proprio bacino di attrazione: se si prende x0 in questo bacino,
allora i valori xn tendono a . Un punto fisso pu dunque attirare o

Figura 5.5: Punto fisso di g( x ) = 1/2x + 2.

Figura 5.6: Punti fissi di g( x ) = x2 .

appunti di calcolo numerico

respingere i valori xn prodotti dallo schema iterativo.


Prima di passare a studiare quando lo schema di punto fisso
converge, ricordiamo che una funzione pu ammettere pi di un
punto fisso, ammetterne uno solo o non ammetterne affatto. Ci
sono due teoremi (3.6.4 e 3.6.5) che ci dicono quando una funzione
pu ammettere punti fissi. Il primo assicura lesistenza di almeno un
punto fisso (ci vuol dire che vi possono essere pi punti fissi) quando
la funzione g, definita e continua in [ a, b], tale che a g( x ) b per
ogni x [ a, b]. Il secondo teorema aggiunge, a queste ipotesi, quelle
che g sia di classe C1 e, inoltre, | g0 ( x )| m < 1 per ogni x [ a, b]: in
tal caso esiste un unico punto fisso.
Possiamo ora provare un teorema di convergenza per lo schema
iterativo del punto fisso.

importante osservare che, data una funzione che ammette punto fisso, le ipotesi dei
due teoremi 3.6.4 e 3.6.5 possono essere rilassate dallintervallo [ a, b] ad un intorno del
punto fisso.

Teorema 5.3.1 A partire da un punto iniziale x0 , lo schema iterativo xn+1 =


g( xn ) converge al punto fisso di g se | g0 ( x )| < 1 in un intorno di .
Dimostrazione.

Dalle relazioni

= g( )
x n +1 = g ( x n )
sottraendo membro a membro e, applicando il teorema del Valore
Medio 3.6.2 (con n un opportuno punto del segmento che congiunge
a xn ), otteniamo:
xn+1 = g( ) g( xn ) = g0 ( n )( xn )
Possiamo scrivere questa relazione per n = 0, 1, . . . ottenendo
x1 = g0 ( 0 )( x0 )
x2 = g0 ( 1 )( x1 )
x3 = g0 ( 2 )( x2 )
.. ..
.=.
xn = g0 ( n1 )( xn1 )
Moltiplicando, ora, membro a membro e prendendo i valori assoluti,
abbiamo:

| x1 | | x2 | . . . | x n | =
| g0 ( 0 )| | g0 ( 1 )| | g0 ( 2 )| . . . | g0 ( n1 )| | x0 | | x1 | . . . | xn1 |
La relazione appena trovata pu essere semplificata, dividendo
ambo i membri per | x1 | | x2 | . . . | xn1 | ottenendo:

| xn | = | g0 ( 0 )| | g0 ( 1 )| | g0 ( 2 )| . . . | g0 ( n1 )|| x0 |
Assumiamo, ora che | g0 ( xi )| m per i = 0, 1, . . . , n 1. Abbiamo
dunque una relazione che lega lerrore assoluto al passo n con lerrore
assoluto iniziale.

| x n | m n | x0 |

51

52

annamaria mazzia

Perch il metodo converga, lerrore deve tendere a zero per n che


tende allinfinito. Se m < 1 assicurata la convergenza (quindi, se in
un intorno del punto fisso, la derivata prima minore di 1, lo schema
converge). Se invece m > 1 in un intorno del punto fisso, lo schema
non pu convergere al punto fisso.
Se vale m = 1 nulla si pu dire a priori, ma bisogna vedere caso
per caso cosa succede nellintorno del punto fisso. 4
Negli esempi precedenti:
g( x )
cos ( x )
1
x+2
2
x2

g0 ( x )
sin ( x )
1
2
2x

Nel primo caso (con g( x ) = cos ( x )) si ha sin (0.7390851332) =


0.673612, perci in un intorno del punto fisso la derivata minore
di 1 in valore assoluto e si ha convergenza.
1
1
Nellesempio in cui g( x ) = x + 2, risulta g0 ( x ) = qualunque
2
2
sia x: si ha convergenza.
Nel terzo caso (g( x ) = x2 ), g0 ( x ) = 2x da cui g0 (0) = 0 e g0 (1) = 2.
In un intorno del primo punto fisso, vale m < 1, in un intorno del
secondo punto fisso m > 1 e non si potr mai avere convergenza ad
esso.
Il bacino di attrazione si ha quindi se vale m < 1.
Da un punto di vista grafico, le iterazioni dello schema di punto
fisso si possono vedere sotto forma di ragnatela. Le iterazioni, infatti,
si muovono avanti e indietro tra il grafico della y = g( x ) e il grafico
della bisettrice y = x. Lesempio con g( x ) = cos ( x ), rappresentato
in Figura 5.7 : partendo da ( x0 , x0 ) sulla retta y = x, applicando
lalgoritmo si ha x1 = g( x0 ). Perci:

G
G

Figura 5.7: Il metodo di punto fisso con


g( x ) = cos ( x ).

Figura 5.8: Il metodo di punto fisso con e

g( x ) =

1
x+2
2

da ( x0 , x0 ) si va su o gi fino a raggiungere ( x0 , x1 ) sulla curva g;


da ( x0 , x1 ) si arriva a ( x1 , x1 ) sulla bisettrice y = x.

Questi due passi vengono ripetuti per tutte le altre iterazioni. Da


x1 si arriva sulla curva a g( x1 ). Ora laltezza x2 . Da qui si va
sulla bisettrice al punto ( x2 , x2 ). E cos via. Lo scopo delle iterazioni,
infatti, di arrivare al punto (, ) 0.7390851332 che il punto
di intersezione tra il grafico di g e la bisettrice y = x. Osserviamo
che, per questo esempio, i valori della successione si avvicinano
a muovendosi a destra e a sinistra rispetto ad esso. Si parla di
convergenza oscillante.
1
Nellesempio con g( x ) = x + 2, si devono intersecare due linee
2
rette. Notiamo, anche dalla Figura 5.8, che i valori delle iterazioni si
trovano tutti da un lato rispetto al punto fisso: si parla di convergenza
monotona.
In generale, quando 0 g0 ( x ) < 1 in un intorno del punto fisso, si
ha convergenza monotona. Se, invece, 1 < g0 ( x ) < 0 in un intorno
del punto fisso, si ha convergenza oscillante.

Figura 5.9: Il metodo di punto fisso: esempio con g( x ) = x2 . Si noti la convergenza


monotona a = 0 (in alto) e la divergenza
monotona da = 1 (in basso)

appunti di calcolo numerico

53

Analogamente, in Figura 5.9, si possono ritrovare le conclusioni


gi viste dellesempio in cui g( x ) = x2 : si ha convergenza monotona
verso = 0 partendo da un punto iniziale in valore assoluto minore
di uno, e divergenza monotona a infinito, partendo da | x0 | > 1.
Esempio
Consideriamo ora g( x ) = x sin ( x ) nellintervallo [0, 2 ]. Data
la periodicit della funzione seno, g ammette pi di un punto fisso.
Infatti da = sin ( ) si ha 0 = sin ( ) da cui = 0, = e
= 2.
Studiamo ora la derivata prima g0 ( x ) = 1 cos ( x ). Si ha g0 (0) =
1 1 = 0, g0 ( ) = 1 (1) = 2 e g0 (2 ) = 1 1 = 0. Da queste
informazioni, deduciamo che qualunque sia il punto iniziale x0 la
successione generata dallo schema del punto fisso non potr mai
convergere a , come si vede anche dalla Figura 5.10.
_
Nel caso in cui il metodo di punto fisso converge, si possono
ricavare maggiorazioni per lerrore che si commette approssimando
mediante xn . Vale infatti la disuguaglianza

| xn |

m
| x n x n 1 |
1m

Figura 5.10: Il metodo di punto fisso: esempio con g( x ) = x sin ( x ). = 0 e


= 2 sono punti fissi attrattivi, al contrario
di = in cui g0 ( ) = g0 ( ) = 2

(5.1)

dove m, come prima, una maggiorazione di | g0 ( x )|.


Dimostrazione della relazione precedente. Proviamo questo risultato,
scrivendo lerrore alliterazione n come xn = g( ) g( xn1 )
Applicando il teorema del valor medio e considerando, come prima,
0
| g ( x )| m < 1 in un intorno del punto fisso, si ha:

| x n | m | x n 1 |

(5.2)

Possiamo scrivere xn1 nel modo seguente aggiungendo e sottraendo xn :


x n 1 = x n + x n x n 1
x n 1 = g ( ) g ( x n 1 ) + x n x n 1

| x n 1 | m | x n 1 | + | x n x n 1 |
(1 m)| xn1 | | xn xn1 |
1
| x n 1 |
| x n x n 1 |
1m
Andando a sostituire questa maggiorazione nella disuguaglianza (5.2),
troviamo il risultato espresso nellequazione (5.1).
Errore e scarto. La disuguaglianza (5.1) fornisce una maggiorazione
dellerrore al passo n tramite il valore assoluto della differenza tra
due iterazioni successive | xn xn1 |. Questultima quantit prende il
nome di scarto e viene indicata con il simbolo dn .
Generalmente, per vedere se il metodo di punto fisso converge al
punto fisso entro una certa tolleranza prestabilita, il controllo da fare
proprio sullo scarto dn . Sfruttiamo questo fatto per vedere come

dn = | xn xn1 | rappresenta lo scarto


alliterazione n.

54

annamaria mazzia

implementare lalgoritmo dello schema di punto fisso (sotto forma di


pseudo-codice):
Dati di input: x0 , tol, itmax
Dati di output: xn soluzione approssimata o messaggio di
fallimento
1 n 1 contatore delle iterazioni;
2 d n 2tol (una quantit iniziale > tol) ;
3 Fintantoch n itmax e d n > tol
4
incrementa n di 1;
5
applicare lalgoritmo di punto fisso xn = g( xn1 ) ;
6
aggiorna dn ;

12

Fine-Fintantoch
Se dn tol allora
xn la soluzione approssimata
altrimenti
n > itmax ;
il metodo fallito dopo itmax iterazioni ;

13

Fine-Se

7
8
9
10
11

5.4

Il Metodo di Newton-Raphson

Il metodo di Newton-Raphson uno dei metodi pi potenti e pi


famosi per risolvere equazioni non lineari. Ci sono diversi approcci
per introdurre questo metodo tra questi c anche quello di vedere
il metodo di Newton-Raphson come un particolare schema di punto
fisso, come vedremo in seguito.
Supponiamo ora che la derivata prima e seconda di f esistano e
siano continue e assumiamo che la derivata prima f 0 sia valutabile
con sufficiente facilit.
Lo schema di Newton-Raphson uno schema iterativo che produce
una successione di approssimazioni x0 , x1 , . . . , xn della radice della
funzione f .
Sia xn literata corrente. Applicando la formula di Taylor di centro
xn si ha:
f ( x ) = f ( xn ) + f 0 ( xn )( x xn ) + f 00 ( x )( x xn )2 /2
dove x un punto (che non conosciamo) compreso tra x e xn .
Sia x = , dove radice di f , f ( ) = 0. Se f fosse lineare,
avremmo f 00 0 e quindi potremmo trovare la radice risolvendo
direttamente

Il metodo fu descritto da Isaac Newton in


due suoi scritti del 1669 e del 1671, anche
se era riferito solo a polinomi (in particolare
a x3 2x 5 = 0). Il metodo di Newton fu
pubblicato per la prima volta nel 1685. Nel
1690 Joseph Raphson ne pubblic una descrizione semplificata in termini di approssimazioni successive xn piuttosto che di sequenze di polinomi. Fu solo nel 1740 che
Thomas Simpson descrisse il metodo di Newton come un metodo iterativo per risolvere
equazioni non lineari (e non solo polinomi) e
diede una versione generalizzata per sistemi
di due equazioni.
Isaac Newton (1643-1727), inglese, fu
fisico, matematico, astronomo, alchimista,
inventore, filosofo naturalista. visto come uno dei pi grandi scienzati nella storia
dellumanit.
Su Joseph Raphson (1648-1715) non si
hanno molti dettagli. Pare che Newton stesso gli permettesse di vedere e studiare i suoi
scritti matematici. Il suo lavoro del 1690 Analysis aequationum universalis gli valse
lingresso nella Royal Society, nel 1691 bench fosse uno studente (si laure nel 1692)
piuttosto anziano (aveva 43 anni).

0 = f ( ) = f ( xn ) + f 0 ( xn )( xn )
Supponendo f 0 ( xn ) 6= 0, otterremmo, con semplici passaggi,
= xn

f ( xn )
f 0 ( xn )

In questo caso, partendo da un qualunque valore iniziale x0 , in una


sola iterazione otterremo il valore della radice .

Osserviamo che

y( x ) = f ( xn ) + f 0 ( xn )( x xn )
altro non che lequazione della retta
tangente alla f nel punto ( xn , f ( xn )).

appunti di calcolo numerico

55

Per una funzione non lineare, il discorso da fare molto simile.


La nuova approssimazione xn+1 vogliamo che sia uguale al valore
xn pi una certa quantit h che ci permetta di arrivare alla soluzione
desiderata.
Applicando la formula di Taylor di centro xn , deve essere
f ( xn+1 ) = f ( xn + h) = f ( xn ) + f 0 ( xn )h + f 00 ( h )h2 /2
Vogliamo che sia f ( xn+1 ) = 0, da cui, trascurando il termine in h2
e considerando f 0 ( xn ) 6= 0, ricaviamo
h=

f ( xn )
f 0 ( xn )

Utilizziamo questo valore di h per la nuova approssimazione


xn+1 = xn + h ottenendo la formula

x n +1 = x n

f ( xn )
,
f 0 ( xn )

n = 0, 1, 2, . . .

Trascurando il termine f 00 ( h ) h2 /2 nella formula di Taylor, abbiamo una linearizzazione


della f in un intorno di xn : approssimiamo,
cio la funzione f con la retta tangente a
( xn , f ( xn )). Se ci troviamo vicino ad una radice della f , quindi, ci aspettiamo che il procedimento che stiamo applicando ci avvicini
molto rapidamente alla radice stessa!

(5.3)

Linterpretazione geometrica del metodo di Newton che xn+1


lintercetta, sullasse delle x, della tangente della f a xn (vedi figura
5.11).
Figura 5.11: Il metodo di Newton-Raphson
applicato alla funzione f ( x ) = ( x/2)2
sin ( x ) con x0 = 1.3

Lo schema di Newton-Raphson si pu vedere come un caso particolare dello schema del punto fisso applicato alla funzione g( x ) =
x f ( x )/ f 0 ( x ). Perch lo schema del punto fisso converga, deve
essere | g0 ( x )| < 1 in un intorno di . Nel caso specifico abbiamo:

| g0 ( x )| = |1

f 0 ( x )2 f ( x ) f 00 ( x )
f ( x ) f 00 ( x )
|
=
|
|
f 0 ( x )2
f 0 ( x )2

Supponendo f 0 ( ) 6= 0 (che il caso in cui la radice non multipla),


si ha | g0 ( )| = 0, poich al numeratore f ( ) = 0 (essendo radice
della f ). Per continuit, allora, vale | g0 ( x )| < 1 in un intorno di .

56

annamaria mazzia

Pertanto il metodo di Newton-Raphson generalmente convergente.


Per vedere come si riduce lerrore via via che le approssimazioni si
avvicinano a , consideriamo lerrore cambiato di segno en , per cui
xn = + en . Sostituendo in (5.3) abbiamo

Cosa vuol dire quel generalmente? Vuol


dire: quasi sempre, tranne alcuni casi
particolari (che vedremo in seguito).

f ( + en )
f 0 ( + en )
f ( + en )
= en 0
f ( + en )

e n +1 + = e n +
e n +1

Applicando la formula polinomiale di Taylor sia su f sia su f 0 di


centro , si ha:
e n +1 = e n

f ( ) + en f 0 ( ) + en2 f 00 ( )/2 + . . .
f 0 ( ) + en f 00 ( ) + . . .

Poich f ( ) = 0, raccogliendo i termini si ricava:


e n +1 =

en f 0 ( ) + en2 f 00 ( ) en f 0 ( ) en2 f 00 ( )/2 + . . .


en2 f 00 ( )/2 + . . .
=
f 0 ( ) + en f 00 ( ) + . . .
f 0 ( ) + en f 00 ( ) + . . .

Trascurando i termini en f 00 ( ) + . . . al denominatore e le potenze


maggiori o uguali a en3 al numeratore si trova:
e n +1 =

f 00 ( ) 2
e = Aen2
2 f 0 ( ) n

ponendo A =

f 00 ( )
.
2 f 0 ( )

Lultima relazione che abbiamo ottenuto ci dice che lerrore al passo


n + 1 proporzionale, secondo il fattore A, al quadrato dellerrore al
passo precedente. Si parla di convergenza quadratica.
Nel caso in cui sia una radice multipla, allora f 0 ( ) = 0 e A = :
se il metodo converge, la convergenza non sar pi quadratica ma
avremo una convergenza di tipo lineare, come vedremo meglio in
seguito.
Se in vi un punto di flesso non orizzontale, per cui f ( ) =
0, f 0 ( ) 6= 0, f 00 ( ) = 0, allora A = 0 e ci aspettiamo una convergenza
superiore a quella quadratica.

5.5

Convergenza di un metodo iterativo

Quando si parla di un metodo iterativo, ci sono due cose fondamentali


da vedere: se il metodo converge alla soluzione, in che modo si riduce
lerrore ad ogni passo e secondo quale fattore? Si parla di ordine di
convergenze e di fattore di convergenza.
Vediamo la definizione pi usata.
Definizione 5.5.1 Un metodo ha ordine di convergenza p se si possono
definire due costanti p 1 e M > 0 tali che
lim

| x n +1 |
=M
| xn | p

La costante M prende il nome di costante asintotica dellerrore o fattore


di convergenza.

Se partiamo da un errore iniziale dellordine


di 102 , al passo successivo lerrore proporzionale a 104 e poi a 108 fino a 1016
in tre sole iterazioni. Generalmente, quindi, il
numero delle cifre significative raddoppia ad
ogni passo del metodo.

appunti di calcolo numerico

Nel caso del metodo di Newton-Raphson, generalmente vale


p = 2 e la costante asintotica dellerrore quella che abbiamo

f 00 (

.
definito come A presa in valore assoluto, cio M = 0
2 f ( )

Nel metodo del punto fisso, nellipotesi in cui g0 ( ) 6= 0, la


convergenza lineare. Infatti, considerando lerrore cambiato
di segno, la relazione xn+1 = g( xn ) si pu scrivere, in modo
equivalente, come
+ e n +1 = g ( + e n )
e, applicando la formula (polinomiale) di Taylor si ha
+ e n +1 = g ( ) + e n g 0 ( ) + . . .

57

In maniera alternativa, un metodo iterativo si


dice:

linearmente convergente se esiste


una costante M < 1 tale che, per n
sufficientemente grande, vale

| x n +1 | M | x n |

a convergenza quadratica se esiste una costante M tale che, per n


sufficientemente grande, vale

| x n +1 | M | x n | 2

a convergenza superlineare se esiste


una successione di costanti Mn 0
tale che, per n sufficientemente grande,
vale

| x n + 1 | Mn | x n | .

+ e n +1 = + e n g ( ) + . . .
en+1 = en g0 ( ) + . . . e, al limite per n
e n +1 = g 0 ( ) e n
La costante asintotica per lo schema di punto fisso vale, dunque,
M = | g0 ( )|.

Il metodo delle bisezioni pu essere visto come un metodo lineare,


1
con M = (considerando che, ad ogni passo, si riduce della met
2
lintervallo in cui viene cercata lapprossimazione della radice).

5.6

Ricordiamo che, se il metodo di punto


fisso converge linearmente, deve essere
| g0 ( )| < 1. Infatti, se un metodo lineare,
affinch lerrore al passo n + 1 decresca di
M rispetto allerrore al passo n, deve essere
M < 1.

Errore e scarto nel metodo di Newton-Raphson

Come per lo schema di punto fisso, quando implementiamo il metodo di Newton-Raphson, non potendo misurare lerrore en (la radice incognita), usiamo lo scarto dn come misura della bont
dellapprossimazione della radice.
Esempio
Consideriamo lequazione f ( x ) = 2x cos ( x ) + 1 = 0 che ammette come unica radice = 0.
Poich f 0 ( x ) = 2 + sin ( x ), il metodo di Newton-Raphson diventa:
x n +1 = x n

2xn cos ( xn ) + 1
2 + sin ( xn )

Figura 5.12: Radice della funzione f ( x ) =

Partendo da x0 = 0.5 e richiedendo una tolleranza pari a 1010 nei


risultati (interrompiamo lalgoritmo quando dn < 1010 ), si ha:
n
0
1
2
3
4
5

xn
0.5
0.4730746270E-01
0.5462695134E-03
0.7458221874E-07
0.1395426403E-14
0.7647622253E-17

dn
0.4526925E+00
0.4676119E-01
0.5461949E-03
0.7458222E-07
0.1387779E-14

2x cos ( x ) + 1.

58

annamaria mazzia

I valori generati dallalgoritmo tendono a = 0.


Considerando che f 00 ( x ) = cos ( x ) possiamo valutare la costante
| f 00 ( )|
| cos ( )|
1
asintotica M =
=
= = 0.25
2| f 0 ( )|
2(|2 + sin ( )|)
4
_
Da un punto di vista teorico, considerando la radice e lapprossimazione xn e applicando il teorema del valor medio, possiamo
scrivere
f ( ) f ( xn ) = f 0 ( n )( xn )
dove n un punto, che non conosciamo, compreso tra e xn . Per xn
vicino a possiamo considerare n xn , da cui ricaviamo (essendo
f ( ) = 0):

f ( xn ) f 0 ( xn )( xn )
Sostituendo questa espressione nelliterazione di Newton-Raphson si
ha:
x n +1 = x n

f ( xn )
xn + ( xn )
f 0 ( xn )

vale a dire
x n +1 x n x n

Nell esempio appena visto

cio

d n +1 e n .

Ma in condizioni di convergenza, dn+1 < dn da cui, per lerrore, vale


la maggiorazione en < dn .
Perci gli scarti sono molto vicini agli errori e possono essere
utilizzati sia per controllare il numero di iterazioni da effettuare per
approssimare la radice entro una certa tolleranza sia per approssimare
d 1
.
M applicando la formula M n+
d2n
Una volta stimato M, si pu anche avere una stima pi accurata
dellerrore allultimo passo (cio al passo n + 1). Da una parte, infatti,
d n +2
vale en+1 dn+2 , dallaltra M
. Se siamo arrivati fino
( d n +1 )2
alliterazione n + 1 non abbiamo lo scarto dn+2 ma, avendo stimato
M, possiamo approssimare en+1 tramite la formula en+1 dn+2
M ( d n +1 )2 .
Esempio
Consideriamo lequazione f ( x ) = 0 con f ( x ) = x3 + x. Si vede
subito che lunica radice reale di f = 0. Dal momento che
f 0 ( x ) = 3x2 + 1 e f 00 ( x ) = 6x, risulta che f 0 (0) = 1 6= 0 mentre
f 00 (0) = 0: la radice = 0 un punto di flesso non orizzontale.
Questo un caso particolare in cui il metodo di Newton-Raphson
converge non con ordine p = 2 bens con ordine di convergenza
cubico, p = 3.
Applichiamo il metodo di Newton-Raphson, partendo da x0 = 5
e arrestando le iterazioni quando lo scarto diventa minore di 1010 .
Vengono eseguite 9 iterazioni e, per gli scarti, abbiamo:

d2
( d1 )2
d3
( d2 )2
d4
( d3 )2
d5
( d4 )2

= 0.2282
= 0.2498
= 0.2500
= 0.2495

Abbiamo una stima di M usando gli scarti.

Figura 5.13: Radice della funzione f ( x ) =


x3 + x.

Figura 5.14: Grafico di convergenza del metodo di Newton-Raphson applicato alla funzione f ( x ) = x3 + x, partendo da x0 =
5.

appunti di calcolo numerico

n
1
2
3
4
5
6
7
8
9

dn
1.7105e+00
1.1620e+00
8.0644e-01
5.8158e-01
4.3318e-01
2.6142e-01
4.4651e-02
1.7912e-04
1.1494e-11

Proviamo a vedere, sperimentalmente, quale pu essere lordine di


convergenza e la costante asintotica. Mettiamo in tabella i rapporti
dn
dn
(convergenza lineare?)
(convergenza quadratica?) e
d n 1
( d n 1 )2
dn
(convergenza cubica?). Sappiamo gi che non pu esserci
( d n 1 )3
convergenza quadratica.
Per i vari rapporti degli scarti, si ha:
n
2
3
4
5
6
7
8
9

dn
d n 1
6.7934e-01
6.9399e-01
7.2117e-01
7.4484e-01
6.0348e-01
1.7081e-01
4.0115e-03
6.4168e-08

dn

dn

)2

( d n 1
3.9715e-01
5.9723e-01
8.9426e-01
1.2807e+00
1.3931e+00
6.5339e-01
8.9840e-02
3.5824e-04

Abbiamo detto che il metodo di NewtonRaphson ha, in genere, ordine 2. Ma se noi,


ipotizzando ordine 2, troviamo una costante
asintotica M nulla o che tende a zero, deve
suonare un campanello di allarme! La costante asintotica di un metodo iterativo non pu
mai valere zero. Quindi lordine non quello che ci aspettiamo ma bisogna indagare
ulteriormente sui risultati!
Attenzione: in questo esempio, una volta
accertata che la convergenza non quadratica, non potremmo neanche pensare ad una
convergenza di tipo lineare perch, se aves-

en
= M 6= 0, avreme n 1
en
en
= limn+
mo limn+

e n 1
( e n 1 )2
1
1
= M limn+
= + e non
e n 1
e n 1

( d n 1 )3
2.3218e-01
5.1395e-01
1.1089e+00
2.2021e+00
3.2160e+00
2.4994e+00
2.0120e+00
2.0000e+00

simo limn+

zero (ci che invece abbiamo).

I rapporti che indicano convergenza lineare e quadratica tendono a zedn


ro, mentre i rapporti
tendono a 2: ci dice che la convergenza
( d n 1 )3
cubica e che la costante asintotica vale 2.
_

5.7

59

Allo stesso risultato si arriva anche per via


teorica (sapendo qual la radice), applicando lo sviluppo di Taylor alla formula dellerrore
dellalgoritmo di Newton-Raphson. e considerando che la radice un punto di flesso
non orizzontale.

Ancora esempi sul metodo di Newton-Raphson

Vediamo un esempio che ci permette di capire meglio il significato di


metodo generalmente convergente (e che il metodo di Newton-Raphson
non converge proprio sempre!).
Esempio

x
per x 0
Si consideri f ( x ) =
.

x per x < 0
La radice di questa funzione = 0.
1


2
x
Per la derivata prima, si ha f 0 ( x ) =
1


2 x

per x 0
.
per x < 0
Figura 5.15: Esempio in cui il metodo di
Newton-Raphson oscilla tra due valori.

60

annamaria mazzia

Se partiamo da x0 > 0 abbiamo

x0
= x0 2x0 = x0
x1 = x0
1

2 x0
Se partiamo da x0 < 0 abbiamo

x0
x1 = x0
= x0 + 2( x0 ) = x0 .
1

2 x0
Il metodo di Newton applicato alla funzione f , diventa quindi:
x n +1 = x n ,

n = 0, 1, 2, . . .

Qualunque sia il valore iniziale x0 6= 0, si ha x1 = x0 , x2 = x1 = x0


... i valori generati dal metodo di Newton-Raphsono si alternano tra
x0 e x0 e non si avr mai convergenza alla radice = 0.
_
Da un punto di vista pratico occorre prestare molta attenzione
anche alla scelta del punto iniziale per il metodo di Newton-Raphson.
Dal momento che la formula richiede una divisione per f 0 ( xn ), occorre
evitare di prendere un punto iniziale in cui la f abbia una tangente
quasi orizzontale (e quindi il corrispondente valore di f 0 sia un valore
vicino allo zero). In tal caso, infatti, ci si pu allontanare dalla radice
e il metodo pu non convergere o converger molto lentamente.
Esempio
Consideriamo f ( x ) = x5 6, per la quale f 0 ( x ) = 5x4 .
Se partiamo da un punto iniziale prossimo allo zero, poich la
tangente alla f quasi orizzontale, non si riesce ad avere convergenza
se non dopo molte iterazioni: partendo da x0 = 0.01 e richiedendo una tolleranza 108 , sono necessarie 88 iterazioni per arrivare a
= 1.430969081115725849. Vediamo in tabella, come cambia il numero delle iterazioni al variare di x0 :
x0
iterazioni

0.05
59

0.1
46

0.5
18

0.8
10

1.0
7

1.4
4

1.5
4

2.
6

3.
8

10.
14

Figura 5.16: La funzione f ( x ) = x5 6

20.
17
_

5.8

Il metodo delle secanti o Regula Falsi

La conoscenza della derivata prima della f per applicare il metodo


di Newton-Raphson potrebbe essere semplice ma a volte potrebbe
rivelarsi unoperazione molto costosa e alquanto complicata.
Il metodo delle secanti una variante del metodo di NewtonRaphson dove, al posto della derivata prima, si considera una sua
approssimazione.
Scriviamo la formula ricorsiva
x n +1 = x n

f ( xn )
Cn

100.
24

appunti di calcolo numerico

61

Per Cn = f 0 ( xn ) abbiamo la formula di Newton-Raphson, che possiamo anche chiamare della tangente variabile perch il coefficiente
angolare della retta tangente a ( xn , f ( xn )) che interseca lasse delle x
in xn+1 .
Ci possono essere altre scelte per Cn :

Cn = f 0 ( x0 ): il valore di Cn costante e d vita al metodo della


tangente fissa.

Cn =

Cn =

f ( x1 ) f ( x0 )
: abbiamo sempre una costante che approssix1 x0
0
ma la derivata f ( x0 ) utilizzando i valori di x1 e x0 . Lo schema
detto della secante fissa.

f ( x n ) f ( x n 1 )
. La derivata f 0 ( xn ) approssimata utix n x n 1
lizzando il rapporto incrementale della f valutata in xn e xn1 .
Abbiamo il metodo delle secante variabile, che chiameremo nel
seguito anche metodo della Regula Falsi.
In forma estesa, literazione n + 1 della Regula Falsi si scrive come:

x n +1 = x n

f ( xn )( xn xn1 )
f ( x n ) f ( x n 1 )

Attenzione! In letteratura viene descritto un


altro metodo (simile ma non lo stesso) con
il nome della Regula Falsi o Falsa Posizione
che genera i valori xn+1 in modo che la radice sia sempre compresa tra le iterazioni
successive.

Notiamo che, per innescare il metodo occorrono due valori iniziali,


x0 e x1 . Ma richiesta solo la valutazione della funzione f a ciascun
passo (nessuna conoscenza della derivata prima).
Figura 5.17: Il metodo della Regula Falsi
applicato alla funzione f ( x ) = ( x/2)2
sin ( x ) con x0 = 1.3 e x1 = 1.35

Da un punto di vista geometrico, nel metodo delle secanti il valore


xn+1 dato dallintercetta sullasse delle x della retta passante per
x n , f ( x n ) e x n 1 , f ( x n 1 ).
Per quanto riguarda lordine di convergenza si pu dimostrare che
si ha convergenza superlineare poich vale la relazione
p
p
e
= Mp+1e
n +1

Per quanto riguarda laccumulo degli errori


di arrotondamento, conviene utilizzare la formula cos come stata scritta in quanto
pi sicura rispetto alla forma compatta in cui
vengono raccolti i termini, data da

x n +1 =

x n 1 f ( x n ) x n f ( x n 1 )
f ( x n ) f ( x n 1 )

in quanto in questultima, si pu avere il fenomeno della cancellazione numerica per


xn xn1 e f ( xn ) f ( xn1 ) > 0.

62

annamaria mazzia

00

f ( )
1+ 5
la costante asitontica del

dove p =
= 1.618 e M = 0
2
2 f ( )
metodo di Newton-Raphson, da cui
en+1 = M0.618 en1.618

Il valore p = 1.618 la cosidetta sezione


aurea, un numero molto importante nelle arti
e nella matematica (e il nome aureo deriva da
alcune sue propriet che hanno da sempre
affascinato luomo). Il valore di p rappresenta

il punto fisso della funzione g( x ) = 1 + x.

Complessit computazionale di uno schema

5.9

Un altro elemento da considerare per valutare lefficienza numerica


di uno schema iterativo la sua complessit computazionale. Un
metodo, infatti, pu avere un elevato ordine di convergenza ma avere
anche un costo computazionale molto elevato. Viceversa, un metodo
pu avere un basso ordine di convergenza ma essere anche semplice
computazionalmente e, quindi, molto vantaggioso da questo punto
di vista.
Si definisce indice di efficienza E dello schema iterativo la quantit
E = p1/s
dove s indica il numero delle funzioni coinvolte ad ogni iterazione
(per esempio: solo f , oppure f e f 0 , e cos via), mentre p lordine di
convergenza del metodo.
Sebbene il metodo di Newton-Raphson abbia ordine di convergenza pi elevato della Regula Falsi, questultimo computazionalmente
pi efficiente. Si ha infatti
Metodo
Newton-Raphson
Regula Falsi

p
2
1.618

s
2
1

2 1.414
1.618

Confronto tra Newton-Raphson e Regula Falsi

5.10

Esempio
Consideriamo la funzione f ( x ) = 0 con f ( x ) = ( x/2)2 sin ( x ).
La derivata prima f 0 ( x ) = ( x/2) cos ( x ) Consideriamo come
x0 = 1.3 per entrambi i metodi e x1 = 1.35 per la Regula Falsi. Come
criterio di arresto, consideriamo una tolleranza tol = 1.e 8, cio
andremo avanti con le iterazioni fino a quando troveremo che lo
scarto dn = | xn xn1 | sar minore di tol. Otteniamo i seguenti
risultati per il metodo di Newton-Raphson
n
0
1
2
3
4
5
6

xn
1.3
2.714526871831
2.084760792766
1.944113685369
1.933811265085
1.933753764621
1.933753762827

f ( xn )
-5.410581854E-01
1.427962127E+00
2.157545986E-01
1.377189572E-02
7.60156095E-05
2.37200355E-09
-1.00668172E-16

f 0 ( xn )
0.382501171
2.26744846
1.53401376
1.33676314
1.32199993
1.32191743

Figura 5.18: Radici della funzione f ( x ) =

( x/2)2 sin ( x )

dn

dn /d2n1

1.41452687E+00
6.29766079E-01
1.40647107E-01
1.03024203E-02
5.75004640E-05
1.79436599E-09

0.314743565
0.354627390
0.520808008
0.541742396
0.542710632

appunti di calcolo numerico

63

Per la Regula Falsi si ha:


n

xn

f ( xn )

f ( x n ) f ( x n 1 )
x n x n 1

0
1
2
3
4
5
6
7
8
9

1.3
1.35
2.590702853065
1.735341043061
1.879309845941
1.940687248331
1.933542654410
1.933752971771
1.933753762918
1.933753762827

-5.41058185E-01
-5.20098358E-01
1.15448972E+00
-2.33640901E-01
-6.98346071E-02
9.19996444E-03
-2.79035921E-03
-1.04570967E-06
1.19824825E-10
-1.00668172E-16

0.419196552
1.34970922
1.62285784
1.13779020
1.28768192
1.32673746
1.32176540
1.32191686

dn

dn /d1.618
n 1

1.24070285E+00
8.55361810E-01
1.43968803E-01
6.13774024E-02
7.14459392E-03
2.10317362E-04
7.91146198E-07
9.06448250E-11

0.603386215
0.185374473
1.412310765
0.653100215
0.623935239
0.704441455
0.676026603

Attraverso gli scarti, abbiamo fatto una stima della costante asintotica dellerrore, considerando che, al limite per k , xn . Le
ultime colonne delle tabelle, infatti, valutano i rapporti dn /d2n1 e
dn /d1.618
n 1 .
Diamo unulteriore stima di tali costanti facendo uso della definizione teorica e considerando xn .
| f 00 ( )|
Per il metodo di Newton-Raphson dobbiamo calcolare M =
2| f 0 ( )|
0.618
mentre per la Regula Falsi dobbiamo considerare il valore M
.
Poich f 00 ( x ) = 1/2 + sin ( x ), abbiamo, per x6 (di NewtonRaphson) o, equivalentemente per x9 (della Regula Falsi), in
pratica 1.933753762827, f 0 ( ) = 1.32191743 e f 00 ( ) = 1.4348509.
Otteniamo quindi: M 0.542715784 e M0.618 0.685434221
_

5.11

Metodo di Newton-Raphson per radici multiple

Il metodo di Newton-Raphson non si comporta come ci si aspetta se


viene applicato per approssimare una radice per cui vale f 0 ( ) = 0.
In tal caso, la radice non una radice semplice ma una radice
multipla.
Definizione 5.11.1 Data unequazione f ( x ) = 0, una radice si dice
multipla con molteplicit r se vale: f ( ) = f 0 ( ) = . . . = f r1 ( ) = 0
e f r ( ) 6= 0. Ci significa che la funzione f ( x ) pu essere scritta come
f ( x ) = ( x )r q( x ), dove q( x ) una funzione per cui vale q( ) 6= 0 o
limx q( x ) 6= 0.
Esempio
Consideriamo lequazione x2 8x + 16 = 0. Si tratta di trovare le
radici di un polinomio di grado 2. Lequazione che abbiamo scritta
si pu riscrivere, in modo del tutto equivalente, come ( x 4)2 = 0.
Troviamo una radice, da contarsi due volte, cio = 4 una radice
doppia, o con molteplicit r = 2. Da f ( x ) = x2 8x + 16 = ( x 4)2
ricaviamo f 0 ( x ) = 2x 8 = 2( x 4) e f 00 ( x ) = 2. Risulta, quindi:
f (4) = f 0 (4) = 0, mentre f 00 (4) 6= 0.

Un conto dire che una radice multipla,


cio la stessa radice si ripete per un certo
numero di volte. Un conto dire che una
funzione ha molteplici radici (distinte, diverse
tra loro).

Figura 5.19: Radice doppia di f ( x ) = x2

8x + 16.

64

annamaria mazzia

_
Quando si ha una radice multipla, il metodo di Newton-Raphson
diventa un metodo del primo ordine in quanto la formula che lega
lerrore al passo n + 1 con lerrore al passo n diventa:
e n +1 =

r1
en
r

Il procedimento da seguire per arrivare a questo risultato del tutto simile a quanto stato
fatto nellipotesi in cui f 0 ( ) 6= 0. Si consiglia
di ricavare questo risultato come esercizio.

r1
. Per poter avere un metodo
r
che sia di nuovo a convergenza quadratica, occorre modificare lalgoritmo, ottenendo la formula di Newton-Raphson modificata, nel modo
seguente:
da cui la costante asintotica M =

x n +1 = x n r

f ( xn )
f 0 ( xn )

Da un punto di vista geometrico, la nuova approssimazione xn+1


dato dallintercetta con lasse delle ascisse della retta data da y =
f 0 ( xn )( x xn ) + r f ( xn ) (retta che parallela alla retta tangente alla f
in xn )
Esempio
Riprendiamo la funzione f ( x ) = x2 8x + 16 (di cui sappiamo
che = 4 una radice doppia). Applicando il metodo di Newtonx2 8xn + 16
Raphson, abbiamo xn+1 = xn n
. La stessa formula si
2xn 8
( x n 4)2
xn 4
xn + 4
pu riscrivere come xn+1 = xn
= xn
=
.
2( x n 4)
2
2
La convergenza lineare: se facciamo il rapporto tra gli scarti
otteniamo un valore che tende a 0.5.
Modificando lalgoritmo tenendo conto della molteplicit della
( x n 4)2
= xn ( xn 4) = 4.
radice, otteniamo: xn+1 = xn 2
2( x n 4)
Qualunque sia il punto iniziale, arriviamo alla radice in una sola
iterazione!
La funzione che abbiamo preso in esame particolare, essendo un
polinomio di grado 2, perci abbiamo una sola iterazione per arrivare
a convergenza.
_
Osserviamo che, in caso di una radice multipla, anche il metodo
della Regula Falsi converge alla radice in modo lineare e non pi
superlineare come ci si aspetta.

5.12

Controllo sugli scarti e grafici di convergenza

Da un punto di vista pratico, il controllo per verificare la convergenza o meno della successione di valori xn1 , xn , xn+1 , generata
dallo schema iterativo viene effettuato sugli scarti dn = | xn xn1 |
piuttosto che sugli errori (assoluti) en = | xn |, poich, se avessimo

Per esercizio si dimostri che, data la funzione


f ( x ) = ( x )2 = 0, il metodo di NewtonRaphson modificato converge a in una sola
iterazione qualunque sia il punto x0 iniziale.

appunti di calcolo numerico

65

Figura 5.20: Prima iterazione dello schema di


Newton-Raphson e dello schema diNewtonRaphson modificato per approssimare la radice doppia della funzione f ( x ) = x2 8x +
16 = ( x 4)2 .

informazioni sugli errori, conosceremmo anche il valore di (che, in


generale, non noto). Fissata una certa tolleranza tol, arrestiamo lo
schema iterativo quando dn < tol (o quando dn+1 < tol a seconda
della notazione usata).
Nel caso del metodo di Newton-Raphson a convergenza quadratica,
abbiamo visto che il controllo sullo scarto va bene (si veda quanto
detto a pag. 58).
Vediamo cosa succede per metodi lineari. Sia tol la tolleranza
richiesta per approssimare utilizzando gli scarti. Sappiamo che, per
n grande e se il metodo converge, vale la relazione en+1 Men dove
M < 1, M 6= 0, la costante asintotica.
Riscriviamo la precedente formula come:

| xn+1 | M| xn | = M| xn + xn+1 xn+1 | M (| xn+1 | + | xn+1 xn |)


Quindi
en+1 M (en+1 + dn+1 ) vale a dire (1 M )en+1 Mdn+1
Se siamo arrivati ad un indice n per cui dn+1 tol, allora vale
e n +1

M
M
d n +1
tol
1M
1M

M
< 1 (vale a dire per M < 1/2), se dn+1 tol anche
1M
en+1 tol. Se, invece, M 1/2, allora lerrore pu essere un po pi
grande della tolleranza richiesta.
Per quanto riguarda il metodo della secante variabile, poich
superlineare, in base alla definizione alternativa che abbiamo dato,
si pu dire che en+1 Mn+1 en con Mn+1 0: si pu vedere come
Perci, per

M
< 1 si pu riscrive1M
re come M < 1 M da cui 2M < 1 ovvero
M < 1/2.
Se tol = 1010 e M = 0.8 (maggiore
di 1/2), lerrore sar minore o uguale a
4 1010 .
La disequazione

66

annamaria mazzia

un caso limite di convergenza lineare con fattore di convergenza che


tende a zero, e quindi il controllo dello scarto permette un buon
controllo dellerrore.
Quando si implementa un metodo iterativo, si pu fare il grafico
semilogaritmico di convergenza del metodo, ponendo sullasse delle
ascisse i valori delle iterazioni e sullasse delle ordinate i logaritmi (in
base 10) degli scarti.
Asintoticamente, infatti, nella definizione di ordine di convergenza
di un metodo, possiamo sostiture lerrore con lo scarto da cui dn
p
Mdn1 .
Nel caso in cui p = 1, si ha:
dn Mdn1
dn1 Mdn2
dn2 Mdn3
..
.

..
.

d2 Md1
d1 Md0
Partendo dalla prima relazione abbiamo:
dn Mdn1 M2 dn2 M3 dn3 . . . Mn d0
Troviamo una relazione tra dn e d0 . Passando ai logaritmi:
log10 (dn ) = n log10 ( M ) + log10 (d0 )
Abbiamo unequazione del tipo y = ax + b dove y = log10 (dn ) e
x = n, che rappresenta lequazione della retta nel nostro grafico
semilogaritmico, e la pendenza della retta vale a = log10 ( M ). Dalla
pendenza della retta possiamo dunque risalire al valore della costante
asintotica M.

5.13

Figura 5.21: Grafico con i profili di convergenza per i metodi di Newton-Raphson, secante variabile e punto fisso per trovare lo zero
della funzione f ( x ) = x + ln ( x ) (e applicando lo schema di punto fisso alla funzione
g( x ) = e x ).

Nel caso in cui p 6= 1 il discorso si fa pi


complicato (e non staremo qui ad analizzarlo
nei dettagli).

Osservazioni sullordine di convergenza di un metodo iterativo

Abbiamo visto che, in generale, uno schema iterativo ha un certo


ordine di convergenza, ma ci sono delle eccezioni: ad esempio, il
metodo di Newton-Raphson in genere di ordine p = 2 ma se la
radice multipla allora il metodo diventa lineare, e se la radice
un punto di flesso non orizzontale il metodo ha convergenza cubica;
analogamente nello schema di punto fisso, se g0 ( ) = 0 allora il
metodo non pi lineare...
Se non abbiamo sufficienti informazioni sulla radice o sul punto fisso che vogliamo approssimare, come facciamo a capire qual lordine
di convergenza del metodo iterativo? Una strada vedere se lapprossimazione della costante asintotica usando gli scarti o la formula
teorica che vale per lordine p che ci aspettiamo, abbia senso (cio

Se stiamo applicando il metodo di NewtonRaphson e stimando M tramite la formula dn+1 /d2n o tramite la formula teorica
| f 00 ( xn )/(2 f 0 ( xn )| troviamo dei valori che
tendono ad un limite ben preciso diverso da
zero e da infinito, allora significa che il metodo ha ordine p = 2 e che la stima che stiamo
facendo corretta. Ma se, seguendo questa
strada, troviamo dei valori di M che tendono
a zero o a infinito, significa che lordine del
metodo non p = 2!

appunti di calcolo numerico

67

non tenda n a zero n a infinito ma ad un valore limite ben preciso


si veda lesempio descritto a pag. 62). Ma se lapprossimazione della
costante asintotica non va bene, c una strada pi pratica da seguire
per capire qual lordine di convergenza del metodo? Riprendiamo
la definizione di ordine di convergenza di uno schema iterativo:

| x n +1 |
=M
n | xn | p
lim

Utilizzando gli scarti come approssimazione dellerrore possiamo


dire che, se p lordine di convergenza, allora, al limite per n che
tende allinfinito, si ha

| x n +1 x n |
M
| x n x n 1 | p

ovvero

Deve essere p 1 e M numero reale


positivo.

d n +1
M.
(dn ) p

Partendo dalliterazione 1 (lo scarto d0 ha un significato fittizio e non


lo usiamo) fino ad arrivare alliterazione n + 1, abbiamo le seguenti
approssimazioni per M:
d2
M,
( d1 ) p

d3
M,
( d2 ) p

d4
M,
( d3 ) p

dn
M,
( d n 1 ) p

...

d n +1
M
(dn ) p

Supponiamo di non conoscere quale sia il valore di p. Allora non


possiamo andare a calcolare quei rapporti tra gli scarti che abbiamo
appena scritto! Sappiamo per che quei rapporti tendono allo stesso
valore di M (la costante asintotica). Perci possiamo eguagliarli a
due a due in modo da poter avere una relazione che ci permetta di
ricavare p:
d2
d3
d2
d3
M
=

( d1 ) p
( d2 ) p
( d1 ) p
( d2 ) p
d4
d3
d4
d3
M
=

p
p
p
( d2 )
( d3 )
( d2 )
( d3 ) p
..
..
.
.
dn
d
dn
d
M n+1p =
n+1p
( d n 1 ) p
(dn )
( d n 1 ) p
(dn )
d2
d3

ricaviamo facilmente
p
( d1 )
( d2 ) p
 p
 p
d2
(d ) p
d1
d3
d2
1 p =
oppure, passando ai reciproci, si ha

d3
( d2 )
d2
d2
d1

Da

Passando ai logaritmi si ha



log

d2
d3

p log

d1
d2


d2
d
 3
p
d1
log
d2
log


da cui


d3
d
 2
In modo equivalente, p
d2
log
d1


log

Lavorando allo stesso modo sugli altri rapporti tra gli scarti abbiamo:


d3
d
 4 ,
p
d2
log
d3

log

log
...


log

dn

d n +1

d n 1
dn


d n +1
d
 n 
In modo equivalente p
dn
log
d n 1
log

68

annamaria mazzia

Man mano che ci stiamo avvicinando a convergenza il valore di p


tender ad un valore ben preciso, lordine di convergenza del metodo.
E, una volta trovato p, possiamo stimare M usando la formula del
rapporto tra gli scarti.
Esempio
Riprendiamo lesempio di pag. 62 in cui abbiamo confrontato gli
schemi di Newton-Raphson e della Regula Falsi. Andiamo a rivedere
i valori degli scarti e a stimare il valore di p usando la formula appena
scritta.

n
1
2
3
4
5
6
7
8
9

dn (N-R)
1.41452687E+00
6.29766079E-01
1.40647107E-01
1.03024203E-02
5.75004640E-05
1.79436599E-09

p (N-R)

1.8526
1.7436
1.9849
1.9997

dn (R-F)
5.E-02
1.24070285E+00
8.55361810E-01
1.43968803E-01
6.13774024E-02
7.14459392E-03
2.10317362E-04
7.91146198E-07
9.06448250E-11

p (R-F)

-0.11581
4.7913
0.47845
2.5226
1.6392
1.5836
1.6254

Osserviamo che per poter iniziare a stimare il valore approssimato


di p dobbiamo avere fatto almeno
tre iterazioni



in modo da poter
dn
d n 1
applicare la formula p log
/ log
.
d n +1
dn
Dalla tabella, si pu notare che, per il metodo di Newton Raphson,
a parte uniniziale oscillazione, il valore di p tende a 2. Per il metodo
della Regula Falsi invece si vede allinizio un valore negativo (dovuto
alla scelta dei due valori iniziali x0 e x1 ), successivamente ci sono
forti oscillazioni, infine, quando si sta arrivando a convergenza, si
hanno i valori di p = 1.6392, 1.5836, 1.6254. Ricordiamo che in questo
caso p = 1.618 e lapprossimazione finale che otteniamo abbastanza
buona.
Se, allultima iterazione, il valore dello scarto fosse zero o molto
prossimo a zero (dellordine di 1016 , la precisione di macchina)
allora non conviene usare questultimo valore per stimare lordine di
convergenza (non possiamo fare log 0 o una divisione per zero a
seconda di come stiamo applicando la formula per p). In casi simili
conviene fermarsi alla stima del penultimo passo di iterazione.
_

appunti di calcolo numerico

69

Esercizi

5.14

Esercizio 5.14.1 Si vuole risolvere lequazione x = g( x ) con lo schema


del punto fisso; sapendo che
g( x ) = x2 5x + 9
(a) calcolare analiticamente il valore del punto fisso;
(b) determinare il fattore di convergenza M dello schema del punto
fisso;
(c) calcolare le approssimazioni x1 , x2 e x3 partendo prima da x0 = 1
e poi da x0 = 2.5 e giustificandone il diverso comportamento.

Svolgimento

(a) punto fisso della funzione g se verifica g( ) = .


Imponiamo dunque la condizione g( ) = . Ricaviamo 2 5 +
9 = , ovvero 2 6 + 9 = 0, cio ( 3)2 = 0, da cui = 3
punto fisso della g.

(b) Il fattore di convergenza M = g0 ( ).


Poich g0 ( x ) = 2x 5, si ha g0 ( ) = g0 (3) = 1.
Osserviamo che, a priori, non si pu dire se lo schema del punto
fisso converge o meno proprio perch nel punto fisso la derivata
prima vale esattamente 1, ma bisogna vedere caso per caso a
seconda del punto iniziale da cui si fa partire il metodo.

Per x0 = 1 si ha

(c)

k
0
1
2
3

Figura 5.22: Esercizio sullo schema di punto


fisso

Per x0 = 2.5 si ha
xk
1
5
9
45

g( xk )
5
9
45
1809

k
0
1
2
3

xk
2.5
2.75
2.8125
2.84765625

g( xk )
2.75
2.8125
2.84765625
2.870864868

Per x0 = 1 il metodo non converge, mentre per x0 = 2.5 il metodo


converge. La diversit di comportamento si giustifica graficamente,
come si pu vedere dalla Figura 5.22, osservando che per x0 = 1 i
valori ottenuti dallo schema si allontanano sempre pi dal punto
fisso. Nel secondo caso, al contrario, i valori si avvicinano con
monotonia al punto fisso.

70

annamaria mazzia

Esercizio 5.14.2 Si vuole risolvere lequazione f ( x ) = 0 con f ( x ) =


( x 1)2 + 3 ln ( x ), nellintervallo [0.5, 2] con gli schemi di NewtonRaphson e della Regula Falsi.
(a) Dimostrare esistenza e unicit della soluzione nellintervallo
considerato.
(b) Calcolare le approssimazioni x1 , x2 e x3 con lo schema di NewtonRaphson, partendo da x0 = 0.5;
(c) Calcolare le approssimazioni x2 e x3 con lo schema della RegulaFalsi partendo da x0 = 0.5 e x1 calcolato al punto b).
Stimare, inoltre il fattore di convergenza del metodo di Newton-Raphson
assumendo x3 .

Svolgimento
(a) La funzione ammette valori opposti allestremo dellintervallo.
Infatti f (0.5) = 1.82944154 e f (2) = 3.07944154. Quindi, per il
teorema del valor intermedio, esiste almeno una radice. Inoltre
3
2x2 2x + 3
f 0 ( x ) = 2( x 1) + =
sempre positivo nellinterx
x
2
vallo dato, (la parabola 2x 2x + 3 ha discriminante negativo e
quindi sempre positiva). Perci, da f 0 ( x ) > 0 concludiamo che la
f crescente. Di qui lunicit della radice.
(b) Partendo da x0 = 0.5, il metodo di Newton-Raphson fornisce i
seguenti valori:
k
0
1
2
3

xk
0.50000000E+00
0.86588831E+00
0.99541173E+00
0.99999643E+00

f ( xk )
-0.18294415E+01
-0.41401211E+00
-0.13775443E-01

f 0 ( xk )
0.50000000E+01
0.31964267E+01
0.30046517E+01

Dalla tabella sembra che i valori della successione tendano a 1. E,


infatti, si vede facilmente che f (1) = 0 e quindi 1 il valore che
stiamo cercando. Per stimare la costante asintotica dellerrore del
metodo di Newton-Raphson assumendo x3 , occorre usare la
formula
M

| f 00 ( x3 )|
2| f 0 ( x3 )|

3
dove, nel caso specifico, vale f 0 ( x ) = 2( x 1) + e f 00 ( x ) =
x
3
2 2.
x
Usando il valore trovato per x3 si ricava M 0.16667004E + 00.

appunti di calcolo numerico

(c) Partendo da x0 e x1 del metodo di Newton-Raphson, la Regula


Falsi d:
k

xk

f ( xk )

0
1
2
3

0.50000000E+00
0.86588831E+00
0.97291038E+00
0.99920448E+00

-0.18294415E+01
-0.41401211E+00
-0.81656072E-01

f ( x n ) f ( x n 1 )
x n x n 1
0.38684741E+01
0.31054906E+01

Esercizio 5.14.3 Provare, anche solo graficamente, che lequazione


f ( x ) = sin ( x ) + x 1 = 0
ammette una sola radice nellintervallo [0, 1].
(a) Dire se lo schema del punto fisso con g( x ) = arcsin (1 x ) pu
convergere.
(b) Partendo da x0 = 0.1 calcolare le approssimazioni x1 , x2 e x3 con
lo schema di Newton-Raphson;
(c) Dare una stima del fattore di convergenza.

Svolgimento
Graficamente, da f ( x ) = 0 si ha sin ( x ) = 1 x. Se si studia
lintersezione delle due curve, sin ( x ) e 1 x nellintervallo [0, 1], si
pu osservare una sola intersezione, cio una sola radice della f (fare
il grafico delle due funzioni).
Analiticamente, la funzione f ( x ) assume valori di segno opposto
agli estremi dellintervallo dato:
f (0) = sin (0) + 0 1 = 1
f (1) = sin (1) + 1 1 = 0.8414709848
La derivata prima della f f 0 = cos ( x ) + 1: funzione continua
e sempre positiva nellintervallo [0, 1]. Quindi f una funzione
crescente e interseca lasse delle x solo una volta in [0, 1], vale a dire
ammette ununica radice.
(a) Da f ( x ) = 0 si ha sin ( x ) + x 1 = 0 o, equivalentemente,
sin ( x ) = 1 x, da cui x = arcsin (1 x ).
Consideriamo perci lo schema del punto fisso con g( x ) data da
1
g( x ) = arcsin (1 x ). La derivata di g( x ) g0 ( x ) = p
.
1 (1 x )2
Nellintervallo [0, 1] valgono le seguenti disuguaglianze:
0 x 1 = 0 x 1 = 1 1 x 0 =

= 1 (1 x )2 0 = 1 (1 x )2 0 = 0 1 (1 x )2 1 =
q
1
= 0 1 (1 x )2 1 = 1 p
1 (1 x )2

71

72

annamaria mazzia

Perci g0 ( x ) sempre maggiore di 1 e lo schema del punto fisso


non pu convergere.
(b) Da f ( x ) = sin ( x ) + x 1 si ha f 0 ( x ) = cos ( x ) + 1 e f 00 ( x ) =
sin ( x ). Il metodo di Newton-Raphson :
x k +1 = x k

sin ( x ) + x 1
.
cos ( x ) + 1

Utilizziamo la notazione M1 e M2 per indicare la stima della


costante asintotica dellerrore mediante le formule
M1 =

| x k +1 x k |
| x k x k 1 | 2

M2 =

| f 00 ( xk )|
2| f 0 ( xk )|

Partendo da x0 = 0.1 si ottengono i seguenti valori:

k
0
1
2
3

xk
0.1
0.50108517E+00
0.51096084E+00
0.51097343E+00

f ( xk )
-0.80016658E+00
-0.18537249E-01
-0.23565955E-04
-0.38737166E-10

f 0 ( xk )
0.19950042E+01
0.18770618E+01
0.18722750E+01
-

| x k x k 1 |
0.40108517E+00
0.98756733E-02
0.12586802E-04

(c) La stima del fattore di convergenza dato da M1 = 0.12905712E+00


o da M2 = 0.13059731E+00, a seconda della strada scelta per dare
la stima.

Esercizio 5.14.4 Data lequazione f ( x ) = ln ( x ) + x2 x = 0,


(a) si provi, anche solo graficamente, che lequazione ammette lunica
radice = 1 nellintervallo [0.7, 2.3];
(b) si applichino due iterazioni del metodo dicotomico (o delle bisezioni) a partire dallintervallo dato, chiamando con x0 lultimo valore
ottenuto con tale metodo;
(c) a partire da x0 del punto (b) si calcoli lapprossimazione x1 con il
metodo di Newton-Raphson;
(d) a partire da x0 e x1 del punto (c) si calcolino le approssimazioni x2
e x3 con il metodo della Regula Falsi;
(e) considerata la radice esatta = 1, si calcoli la costante asintotica di
convergenza del metodo della Regula Falsi.

Svolgimento
(a) Da f ( x ) = 0 si ricava ln ( x ) = x x2 , per cui graficamente si pu
vedere che le due curve si intersecano in un solo punto, che vale
= 1.

appunti di calcolo numerico

Analiticamente, invece, la funzione f ( x ) assume valori di segno


opposto agli estremi dellintervallo dato:
f (0.7) = 0.566674943938732
f (2.3) = 3.8229091229351
Inoltre f continua, quindi ammette almeno una radice nellinter1
vallo dato. La derivata prima : f 0 ( x ) = + 2x 1, che possiamo
x
1 + 2x2 x
0
anche scrivere come f ( x ) =
: numeratore e denominax
tore sono entrambi sempre positivi nellintervallo dato, (la parabola
2x2 x + 1 ha discriminante negativo = 7, di conseguenza,
per ogni x reale si ha 2x2 x + 1 > 0). Da f 0 ( x ) > 0 per ogni x
segue che f crescente e, quindi, ammette ununica radice.
(b) Applichiamo il metodo delle bisezioni a partire dallintervallo
dato (utilizziamo la notazione xs per indicare lestremo sinistro
dellintervallo, xd per indicare lestremo destro dellintervallo, xc ,
il punto medio dellintervallo considerato):

iter.
1
2

xs
0.7
0.7

f ( xs )
-0.566674944
-0.566674944

segno
-

xd
2.3
1.5

f ( xd )
3.822909123
1.155465108

segno
+
+

xc
1.5
1.1

Il valore x0 dunque x0 = 1.1.


f ( xk )
dove f 0 =
f 0 ( xk )
0.20531018
1/x + 2x 1. Partendo da x0 = 1.1, si ricava x1 = 1.1
=
2.1090909
1.002654656

(c) Il metodo di Newton-Rapshon xk+1 = xk

(d) Applicando il metodo della Regula Falsi si ha:

xk

f ( xk )

1
2
3

1.002654656
1.000068720
1.000000046

0.5312842078E-02
0.1374413812E-03

f ( x k ) f ( x k 1 )
x k x k 1
0.2054513650E+01
0.2001364094E+01

(e) Considerato che la radice esatta = 1, la costante asintotica


di convergenza della Regula Falsi si calcola utilizzando lespresf 00 ( ) 0.618
1
sione M = | 0
|
. Da f 0 ( x ) = + 2x 1 segue f 0 (1) = 2
2 f ( )
x
1
1 0.618
e f 00 ( x ) = 2 + 2, da cui f 00 (1) = 1, per cui M =
=
4
x
0.4245481.

f ( xc )
1.155465108
0.205310180

73

74

annamaria mazzia

Esercizio 5.14.5 Data la funzione


f ( x ) = ln(3 + 2x x2 ) x
(a) dimostrare esistenza della soluzione dellequazione f ( x ) = 0
nellintervallo [0, 2.5];
(b) approssimare con il metodo di Newton Raphson, a partire dal punto iniziale x0 = 1, arrestandosi quando il valore assoluto dello scarto
inferiore a 103 . Usando gli scarti, stimare la costante asintotica
M e lerrore finale.

Svolgimento
(a) La funzione continua e assume segni opposti agli estremi
dellintervallo.
f (0) = 1.09861228866811 > 0 f (2.5) = 1.94038421206458 < 0.
Quindi esiste almeno una radice.
Osserviamo che in questo esercizio richiesta solo lesistenza e
non esistenza e unicit della radice.

(b) Per applicare il metodo di Newton-Raphson, consideriamo la


derivata prima della f :
2 2x
1. Si ha:
f 0 (x) =
3 + 2x x2
k
0
1
2
3

xk
1.00000000000000
0.1386294361E+01
0.1354628119E+01
0.1354392386E+01

f ( x k 1 )

f 0 ( x k 1 )

dk

0.3862943611E+00
-0.3801950159E-01
-0.2788886518E-03

-0.1000000000E+01
-0.1200631922E+01
-0.1183069825E+01

0.3862944E+00
0.3166624E-01
0.2357330E-03

Ci fermiamo alla terza iterazione, perch lo scarto diventato


minore della tolleranza 103 richiesta.

| x3 x2 |
=
| x2 x1 |2
0.2350863. Per una stima dellerrore commesso, si pu utilizzare il fatto che, per il metodo di Newton-Raphson vale ek < dk e,
quindi, dire che e3 0.2357330E 03. Se si vuole essere particolarmente precisi, dalla relazione dk+1 ek (ricavata nellEsemd
pio 5.6), e considerando che k+2 1 M, abbiamo e3 d4 Md23 =
dk
2
0.2350863 (0.2357330E 03) = 1.306375E 08.
Usando gli scarti, la stima per la costante asintotica vale

appunti di calcolo numerico

Esercizio 5.14.6 Si vuole risolvere lequazione x = g( x ) con lo schema


del punto fisso.
Sapendo che g( x ) = x2 8x + 20.25 calcolarne analiticamente il punto
fisso e determinare:
(a) il fattore di convergenza M1 dello schema del punto fisso e successivamente le approssimanti x1 , x2 , x3 usando prima x0 = 4 e poi
x0 = 5.5, giustificandone il diverso comportamento.
Risolvere quindi f ( x ) = 0 ove f ( x ) = g( x ) x con lo schema di
Newton-Raphson; calcolare
(b) il fattore di convergenza M2 dello schema di Newton-Raphson e le
approssimanti x1 , x2 , x3 ottenute con lo schema partendo da x0 = 4
(c) le approssimanti x1 , x2 , x3 ottenute con lo schema di NewtonRapshon modificato e x0 = 4.

Svolgimento Da g( x ) = x si ha x2 8x + 20.25 = x. Risolvendo


lequazione di secondo grado x2 9x + 20.25 = 0 si trova la radice
doppia (con molteplicit r = 2) = 4.5.
(a) Conoscendo il punto fisso, possiamo calcolare M1 = | g0 (4.5)| = 1.
A priori non possiamo dire nulla sulla convergenza dello schema.
Partendo da x0 = 4 e applicando lo schema troviamo x1 = 4.25,
x2 = 4.3125, x3 = 4.34765625. Si vede che lo schema va a convergenza.
Partendo da x0 = 5.5 si ha x1 = 6.5, x2 = 10.5, x3 = 46.5. Il metodo
sta divergendo.
Il diverso comportamento dovuto proprio al fatto che g0 ( ) = 1.
Consideriamo ora f ( x ) = g( x ) x = x2 9x + 20.25. Sappiamo
gi che questo polinomio ha una radice doppia e f ( x ) pu essere
riscritta come f ( x ) = ( x 4.5)2 (quindi f 0 ( x ) = 2( x 4.5)).
(b) Se pensiamo che il metodo di Newton-Raphson abbia conver| f 00 ( )
genza quadratica, ci accorgiamo che la formula M2 =
|
2| f 0 ( )
non pu essere applicata perch f 0 ( ) = f 0 (4.5) = 0 (e dovrebbe
suonare un campanello di allarme). Se per ci ricordiamo che il
punto fisso che abbiamo appena calcolato una radice doppia per
la f , allora sappiamo che il metodo sar a convergenza lineare
e che vale M2 = (r 1)/r con r = 2 la molteplicit della radice.
Quindi M2 = 0.5.
Il metodo di Newton-Raphson xn+1 = xn ( xn 4.5)/2. Partendo da x0 = 4 si ha x1 = 4.25 , x2 = 4.375, x3 = 4.4375 (si vede bene
come la convergenza sia lineare.)

75

76

annamaria mazzia

(c) Il metodo di Newton-Raphson modificato diventa xn+1 = xn


2( xn 4.5)/2 = xn ( xn 4.5) = 4.5
Partendo da x0 = 4 otteniamo x1 = x2 = x3 = 4.5, cio arriviamo
a convergenza in una sola iterazione.

5.15

Domande di riepilogo

1. Cosa significa che uno zero di una funzione f ?


2. Nellapplicare il metodo delle bisezioni ad una funzione f ( x ) in
un certo intervallo [ a, b], quante iterazioni occorre fare per ricavare
unapprossimazione di una radice della f a meno di una tolleranza
tol? Ricavare la formula spiegando tutti i passaggi.
3. Data una funzione y = g( x ), cosa un punto fisso della g? Come
si pu riconoscere, graficamente, se una funzione g ha un punto
fisso?
4. Qual lo schema iterativo del metodo di punto fisso? Quali
sono le ipotesi che devono valere perch lo schema di punto fisso,
applicato ad una funzione g, converga ad un punto fisso della g?
Dimostrare.
5. Dato un metodo iterativo (per approssimare le radici o il punto
fisso di una funzione), che significa che il metodo ha ordine di convergenza p? Qual la costante asintotica o fattore di convergenza
associato a p?
6. Si ricavi lordine di convergenza e la costante asintotica per lo
schema di punto fisso applicato ad una funzione g( x ) con punto
fisso per il quale g0 ( ) 6= 0.
7. Si ricavi lordine di convergenza e la costante asintotica per lo
schema di punto fisso applicato ad una funzione g( x ) con punto
fisso per il quale g0 ( ) = 0 e g00 ( ) 6= 0.
8. Qual la formula del metodo di Newton-Raphson e come si pu
ricavare la formula partendo dalla formula di Taylor?
9. Qual la formula del metodo di Newton-Raphson e come si pu
ricavare la formula partendo da una rappresentazione grafica?
10. Il metodo di Newton-Raphson si pu vedere come un caso particolare di schema di punto fisso? Che cosa si pu dedurre? Perch diciamo che lo schema di Newton-Raphson generalmente
convergente?
11. Si ricavi lordine di convergenza e la costante asintotica del metodo di Newton-Raphson, nel caso generale. Quale ipotesi viene
fatta?

appunti di calcolo numerico

12. Si ricavi lordine di convergenza e la costante asintotica del metodo di Newton-Raphson nel caso in cui la radice ha molteplicit
2.
13. Cosa significa che una radice con molteplicit r (r intero
maggiore o uguale a 2) per una funzione f ?
14. Se una radice ha molteplicit r cosa succede al metodo di
Newton-Raphson? Cosa si deve fare per ripristinare lordine di
convergenza?
15. Si ricavi lordine di convergenza e la costante asintotica del metodo di Newton-Raphson nel caso in cui la radice un punto di
flesso non orizzontale e f 000 ( ) 6= 0.
16. Descrivere geometricamente il metodo delle secanti variabili
(detto anche Regula Falsi).
17. In genere che ordine ha il metodo delle secanti variabili e qual
la costante asintotica? (Dire solo i valori: non abbiamo dimostrato
nessun teorema.)
18. Se si applica il metodo delle secanti variabili per approssimare
una radice con molteplicit r, che ordine di convergenza ha il
metodo? (Dire solo che cosa succede.)
19. Qual la definizione di scarto alliterazione n?
20. Qual lindice di efficienza di un metodo iterativo?
21. Nel fare un grafico di convergenza in scala logaritmica sullasse
delle ordinate (sullasse delle ascisse si pongono gli indici delle
iterazioni e sullasse delle ordinate i logaritmi degli scarti), per un
metodo a convergenza lineare, cosa si pu dire sulla pendenza
della retta e perch?
22. Se non si conosce lordine di convergenza di un metodo e lo si
vuole ricavare facendo riferimento esclusivamente ai valori degli
scarti, quale formula va applicata? Da dove si ricava?

77

6 Interpolazione
6.1

Un problema reale

I termistori (o termoresistenze) sono apparecchi che misurano la


temperatura, basati sul principio che un materiale termoresistente
mostra una variazione nella resistenza elettrica al variare della temperatura. Perci, misurando la resistenza di un materiale termistore,
si puo determinare la temperatura. In genere, i termistori sono fatti
di materiali semiconduttori (manganese, nickel, cobalto, etc.). E si
classificano secondo due tipi: i termoresistori NTC (coefficienti a temperatura negativa) e termoresistori PTC (coefficienti a temperatura
positiva). Nei primi, i pi usati, la resistenza decresce con laumentare
della temperatura, nei secondi la resistenza aumenta allaumentare
della temperatura. I termistori possono essere utilizzati per misurare
la temperatura, a motivo della loro alta sensibilit e della loro veloce
risposta alle variazioni di temperatura.
Quando viene preparato un termistore, lindustria che li prepara
fornisce una curva della resistenza al variare della temperatura, data
da

Non vi alcuna incompatibilit fra lesatto


e il poetico. Il numero nellarte come nella
scienza. Lalgebra nellastronomia e lastronomia confina con la poesia. Lanima delluomo ha tre chiavi che aprono tutto: la cifra, la
lettera, la nota. Sapere, pensare, sognare.
Victor Hugo

1
= a0 + a1 ln ( R) + a2 (ln ( R))2 + a3 (ln ( R))3
T
nota come equazione di Steinhart-Hart e nella quale T la temperatura (in Kelvin), R la resistenza (in Ohm), mentre a0 , a1 , a2 e a3 sono
le costanti della curva di calibrazione. Facendo un cambiamento di
1
variabile e, precisamente, ponendo y =
e x = ln ( R), la curva di
T
calibrazione diventa il polinomio
y = a0 + a1 x + a2 x 2 + a3 x 3
Se si riescono a calcolare le costanti a0 , a1 , a2 e a3 , allora si pu usare
la curva di calibrazione per trovare la temperatura al variare della
resistenza.
Supponiamo di essere in possesso dei dati espressi in Tabella 6.1
per un determinato termistore. Come possiamo usare questi valori
per trovare le costanti della curva di calibrazione? Per prima cosa, si
passa dai valori della temperatura in gradi Celsius ai gradi Kelvin,
mediante la formula K =o C + 273.15, poi dai valori R e T, passiamo
alle variabili x e y (costruendo la nuova Tabella, riportata di lato).

oC
Ohm
1101.0
25.113
911.3
30.131
636.0
40.120
451.1
50.128
Tabella 6.1: Valori di Resistenza e Temperatura di un termistore.

x = ln ( R)

y = 1/T

7.0040
3.3527103
6.8149
3.2973103
6.4552
3.1921103
6.1117
3.0933103
Tabella 6.2: Tabella con le nuove variabili x e
y.

80

annamaria mazzia

Successivamente, cerchiamo una funzione (nellesempio che stiamo


considerando, un polinomio di grado 3) che passi esattamente per i dati
assegnati (detti anche punti di appoggio), in modo da ricavare le costanti incognite: questo procedimento prende il nome di interpolazione
ed il soggetto di questo Capitolo.
In particolare, dato linsieme dei punti ( xi , yi ), i = 0, 1, . . . , n,
dove yi il valore assunto da una funzione f in xi o il valore di
un dato sperimentale, cerchiamo una funzione v( x ) che, in maniera
ragionevole si addica allinsieme dei dati. Se i dati sono accurati, ha
senso richiedere che la funzione interpoli i dati (cio passi esattamente
per le coppie di punti): v( xi ) = yi .

6.2

Figura 6.1: I valori x e y della Tabella messi


in grafico.
Le ascisse xi sono dette anche nodi di
interpolazione.

Interpolazione

Una funzione di interpolazione v( x ) serve per vari scopi.

Possiamo usare la v( x ) per trovare valori approssimati y in punti


x diversi da quelli assegnati x0 , x1 , . . . xn . Se x si trova allinterno
dellintervallo che contiene le ascisse dei dati assegnati si parla di
interpolazione. Se invece x si trova allesterno dellintervallo si
parla di estrapolazione.

Figura 6.2: Il polinomio che passa esattamente per i dati x e y assegnati

y = 3.0091 103 4.5307 104 x +


1.0853 104 x2 5.26 106 x3 .

Se le coppie di dati assegnati si riferiscono ad una funzione f ( x ),


la funzione di interpolazione pu essere utile per approssimare le
derivate o gli integrali della f .

Assumiamo che la funzione v di interpolazione sia una combinazione lineare di funzioni base di un qualche appropriato spazio di
funzioni, cio si possa scrivere come
v( x ) = c0 0 ( x ) + . . . + cn n ( x )
dove ci , i = 0, 1, . . . , n sono i coefficienti incogniti (o parametri) da
determinare in base ai dati in possesso, mentre i sono le funzioni
base che assumiamo linearmente indipendenti.
Esempi di interpolazione sono dati dallinterpolazione polinomiale,
dallinterpolazione polinomiale a tratti, dallinterpolazione trigonometrica. Noi ci limitiamo a studiare linterpolazione polinomiale e a
vedere dei cenni di interpolazione polinomiale a tratti.
Consideriamo, per prima, linterpolazione polinomiale: date n + 1
coppie di punti ( xi , yi ), per i = 0, 1, . . . , n, andremo a cercare un
polinomio p( x ) di grado n per cui p( xi ) = yi . Parleremo, dunque, di
polinomio di interpolazione p( x ) (v( x ) p( x )).
Il processo di interpolazione si basa su due stadi:

costruire la funzione interpolante, cio determinare i coefficienti


c0 , c1 , . . . , cn per unassegnata base 0 , 1 , . . . , n ;

valutare la funzione interpolante in un assegnato punto x.

funzioni 0 , 1 , . . . , n
si dicolinearmente
indipendenti
se
c0 0 ( x ) + . . . cn n ( x ) 0 per ogni
x 6= 0 se e solo se tutti i coefficienti sono
nulli c0 = . . . = cn = 0.
Le
no

Il primo punto fatto una volta per tutte, una


volta fissata la base e noto linsieme dei punti
da interpolare. Il secondo punto pu essere
applicato tutte le volte che si vuole valutare
la funzione interpolante.

appunti di calcolo numerico

6.3

81

Interpolazione polinomiale

Linterpolazione polinomiale il tipo di interpolazione pi semplice.


I polinomi, infatti, sono facili da costruire e da valutare, sono facili da
sommare e moltiplicare (e il risultato sempre un polinomio) e sono
altrettanto facili da differenziare e integrare (e il risultato sempre
un polinomio).
Sia p( x ) = pn ( x ) un polinomio di grado n dato da
p n ( x ) = c0 + c1 x + . . . + c n x n
Date n + 1 coppie di punti ( x0 , y0 ), ( x1 , y1 ), . . ., ( xn , yn ), vogliamo
trovare gli n + 1 coefficienti c0 , c1 , . . . cn tali che p( xi ) = yi , i = 0, . . . , n.
Assumiamo, inoltre, che le ascisse delle coppie dei punti siano
distinte, cio xi 6= x j , per i 6= j.

6.3.1

Ricordiamo che, un polinomio di grado n ha


n + 1 coefficienti e che, date n + 1 coppie di
punti, il polinomio interpolatore sar di grado
n.

Funzioni base monomiali


Utilizziamo come funzioni base i monomi x0 , x1 , x2 , . . . , x n .

In questo caso, le funzioni base i ( x ) sono


date da i ( x ) = xi , per i = 0, 1, . . . , n.

Esempio Sia n + 1 = 2: abbiamo quindi due coppie di dati


xi
yi

1
1

2
3

Cerchiamo quindi un polinomio di primo grado (una retta) che


passi per i punti assegnati, della forma p( x ) = p1 ( x ) = c0 + c1 x.
Le condizioni di interpolazione diventano:
p1 ( x0 ) = y0 c0 + 1c1 = 1
p1 ( x1 ) = y1 c0 + 2c1 = 3
Abbiamo due equazioni in due incognite c0 e c1 . Risolvendo il sistema
2 2 otteniamo c1 = 2 e c0 = 1, quindi p1 ( x ) = 2x 1.
_
Esempio Consideriamo adesso un ulteriore coppia di punti
per cui i dati che abbiamo sono n + 1 = 3 e
xi
yi

1
1

2
3

4
3

Il problema ora diverso rispetto a quello appena risolto, perch


la terza coppia di punti specifica una valore y2 ben diverso da quello
predetto da p1 in x2 = 4. Difatti p1 ( x2 ) = 7, nellesempio precedente,
mentre ora al valore di x2 = 4 deve corrispondere y2 = 3.
Cerchiamo il polinomio di grado 2, quindi, della forma p2 ( x ) =
c0 + c1 x + c2 x2 che passa attraverso i punti dati.
Le condizioni di interpolazione adesso sono:

p2 ( x0 ) = c0 + 1c1 + 1c2 = 1
p2 ( x1 ) = c0 + 2c1 + 4c2 = 3

p2 ( x2 ) = c0 + 4c1 + 16c2 = 3

82

annamaria mazzia

Abbiamo un sistema lineare di 3 equazioni in 3 incognite, la cui


7
2
soluzione : c0 = , c1 = 4, c2 = .
3
3
Il polinomio p2 ( x ) = (2x2 + 12x 7)/3. Per x = 3 si ha
11
= 3.666666667, valore ben diverso da p1 (3) = 5. Del resto
p2 (3) =
3
le curve che abbiamo ottenuto coincidono solo nei punti dappoggio
comuni a entrambe, una una retta, laltra un polinomio di secondo
grado (si veda Figura 6.3).
_
Generalizzando gli esempi precedenti, date n + 1 coppie di punti,
il polinomio di interpolazione di grado n sar costruito risolvendo un
sistema lineare di n equazioni nelle n incognite c0 , c1 , . . . , cn :

pn ( x0 ) = y0 c0 + c1 x0 + c2 x02 + . . . + cn x0n = y0

p ( x ) = y1 c0 + c1 x1 + c2 x12 + . . . + cn x1n = y1

n 1
pn ( x2 ) = y2 c0 + c1 x2 + c2 x22 + . . . + cn x2n = y2

..

...

pn ( xn ) = yn c0 + c1 xn + c2 xn2 + . . . + cn xnn = yn
In forma compatta, sotto forma matriciale le equazioni del sistema si
possono scrivere come


1 x0 x02 . . . x0n
c0
y0
1 x
y
2 . . . xn c
x
1

1
1
1 1


1 x2 x22 . . . x2n c2 = y2


..
..
.. .. ..
..
.
.
.
. . .
2
1 xn xn . . . xnn
cn
yn
La matrice dei coefficienti una matrice ben nota in letteratura
e prende il nome di matrice di Vandermonde. una matrice con
determinante diverso da zero, e quindi il sistema ammette una ed una
sola soluzione. Osserviamo che la prima colonna ha tutti gli elementi
uguali a 1, la seconda colonna ha le ascisse dei punti di appoggio, la
terza colonna ha i quadrati di esse, e cos via.

Figura 6.3: Interpolazione lineare e quadratica

Questo argomento verr approfondito nel


Capitolo 8, dove rimandiamo per i dettagli.

Alexandre-Theophile Vandermonde, (17351796), abbandon una carriera da violinista


per dedicarsi alla matematica quando aveva
35 anni. Si occup di vari problemi di algebra,
di topologia, calcolo combinatoriale, e teoria
dei determinanti.

Perci, date n + 1 coppie di punti di appoggio ( xi , yi ), i = 0, . . . , n,


con ascisse distinte xi , esiste un unico polinomio interpolatore
p( x ) di grado al pi n tale che p( xi ) = yi , i = 0, . . . , n.
Tuttavia, la matrice di Vandermonde non ha buone propriet:
difatti una matrice malcondizionata, e questo lo si osserva al crescere
di n in quanto la soluzione del sistema diventa inaccurata, qualunque
metodo venga utilizzato per risolverlo.
Questo approccio ci servito per dimostrare che il polinomio di
interpolazione esiste ed unico, ma non utile nella pratica a causa
del malcondizionamento. Sarebbe preferibile, quindi, poter usare
funzioni base diverse dai monomi in modo da evitare il malcondizionamento, avere meno operazioni dal punto di vista computazionale
e poter manipolare in maniera pi efficiente le funzioni basi i in
vista di una loro applicazione nella differenziazione e integrazione
numerica.

Una matrice A malcondizionata quando,


a piccole variazioni sui coefficienti della matrice, corrispondono grandi variazioni nella
soluzione del sistema lineare Ax = b

appunti di calcolo numerico

6.3.2

83

Polinomi di Lagrange

Scriviamo il polinomio p( x ) con i coefficienti ci uguali alle ordinate


dei punti dappoggio yi , ci yi :

Cos facendo i coefficienti ci non sono incognite! Bisogna ora capire come scrivere le
funzioni di base i ( x ).

p( x ) = pn ( x ) = y0 0 ( x ) + . . . yn n ( x )
Una base di funzioni che ci permette una simile rappresentazione
data dai polinomi di Lagrange.
I polinomi di Lagrange L j ( x ), per j = 0, 1, . . . , n sono polinomi di
grado n che, nei nodi xi , soddisfano la relazione

0 se i 6= j
L j ( xi ) =
1 se i = j

Joseph Louis Lagrange (1736-1813) nacque


a Torino (come Giuseppe Luigi Lagrangia)
e si trasfer in Francia, a Parigi, dove divenne cittadino francese adottando la traduzione
francese del suo nome. Matematico e astronomo, diede un importante contributo alla
meccanica classica e celeste e alla teoria dei
numeri.

In questo modo, il polinomio pn ( x ) = nj=0 L j ( x ) y j tale che


pn ( xi ) = yi cio soddisfa la condizione di interpolazione, per ogni
i = 0, . . . , n.
I polinomi di Lagrange sono definiti dalla relazione:
n

L j (x) =

Ricordiamo che, dati n valori w1 , w2 , . . . , wn


usiamo la seguente simbologia per indicare
la loro somma e il loro prodotto, rispettivamente:

(x x )

(x j xkk )

k =0
k6= j

w i = w1 + w2 + w3 + . . . + w n

In forma estesa abbiamo

i =1
n

L j (x) =

( x x0 ) ( x x j1 )( x x j+1 ) ( x xn )
x xk
=
( x j x0 ) ( x j x j1 )( x j x j+1 ) ( x j xn ) k
x
xk
=0 j

w i = w1 w2 w3 . . . w n

i =1

k6= j

Esempio Siano date le tre coppie di punti dellesempio precedente (1, 1), (2, 3), (4, 3). I polinomi di Lagrange sono:

( x 2)( x 4)
( x 2)( x 4)
=
(1 2)(1 4)
3
( x 1)( x 4)
( x 1)( x 4)
L1 ( x ) =
=
(2 1)(2 4)
2
( x 1)( x 2)
( x 1)( x 2)
L2 ( x ) =
=
(4 1)(4 2)
6
L0 ( x ) =

Figura 6.4: Polinomi di Lagrange L0 ( x ),


L1 ( x ), L2 ( x ), con x0 = 1, x1 = 2, x2 = 4.
Si osservi, per ciascuno di essi, la propriet per la quale L j ( xi ) = 1 se i = j e
L j ( xi ) = 0 se i 6= j.

Il polinomio si scrive, quindi, come


p2 ( x ) = L0 ( x ) 1 + L1 ( x ) 3 + L2 ( x ) 3 =

1
3
3
( x 2)( x 4) ( x 1)( x 4) + ( x 1)( x 2)
3
2
6

Raccogliendo i termini ritroviamo p2 ( x ) = (2x2 + 12x 7)/3, lo


stesso polinomio ottenuto con le funzioni base monomiali, e ci
dovuto allunicit del polinomio interpolatore.
_

6.3.3

Formula dellerrore

Supponiamo, ora, che le ordinate yi siano i valori di una funzione f


continua in un intervallo [ a, b] (e con le derivate fino allordine n + 1

84

annamaria mazzia

continue) valutata nei punti di appoggio xi . Per ipotesi, i punti xi


siano distinti tra loro. Conosciamo, quindi, una funzione f e di questa
funzione vogliamo fare linterpolazione sostituendola mediante un
polinomio di grado n tale che p( xi ) = f ( xi ) = yi , i = 0, . . . , n.
In queste ipotesi, lerrore che si commette interpolando la funzione
f con un polinomio p( x ) di grado n vale
f ( x ) p( x ) =

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

( x xi )

i =0

dove ( x ) un punto, che non conosciamo e che dipende da x, che si


trova allinterno dellintervallo [ a, b]. La formula che abbiamo scritto
per lerrore anche chiamata formula del resto di Lagrange.
Dimostrazione della formula del resto di Lagrange. Proviamo questo risultato introducendo il polinomio F ( x ) di grado n + 1 che si annulla
nelle n + 1 ascisse dei dati assegnati.
n

F(x) =

( x xk )

k =0

Consideriamo, inoltre, un punto t distinto dai punti di appoggio e


compreso nellintervallo individuato dai valori minimo e massimo
delle ascisse dei punti di appoggio.
f (t) p(t)
Definiamo la quantit S che dipende da t, data da S =
F (t)
e la funzione G ( x ) = f ( x ) p( x ) SF ( x ).
La funzione G si annulla non solo negli n + 1 punti dappoggio
poich G ( xi ) = f ( xi ) p( xi ) SF ( xi ) = 0 per i = 0, . . . , n ma anche
in t a causa di come stato definito S. Si annulla, quindi, in n + 2
punti.
Per il teorema di Rolle, la derivata prima si annulla n + 1 volte
nellintervallo (individuato dalle ascisse dei punti di appoggio). Applicando ripetutamente il teorema di Rolle sulle derivate successive,
si arriva alla derivata n + 1-sima di G, che si annulla almeno 1 volta
nellintervallo. Sia il punto in cui G (n+1) ( ) = 0. Ma
G ( n +1) ( ) = f ( n +1) ( ) S ( n + 1 ) !
Si ha perci:
f ( n +1) ( ) S ( n + 1 ) ! = 0

ovvero

f (t) p(t)
f ( n +1) ( )
=S=
F (t)
( n + 1) !

Considerando, ora, x al posto di t, e scrivendo come funzione di x


(in quanto il valore di dipende da x) e scrivendo in forma estesa il
polinomio F ( x ), otteniamo
f ( x ) p( x ) =

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

( x xk )

k =0

Il resto normalmente incognito ma se conosciamo la f e una maggion

razione della f (n+1) , e abbiamo un limite superiore per | ( x xk )|,


k =0

allora possiamo maggiorare lerrore di interpolazione.

La derivata n + 1-sima di un polinomio di grado n una quantit nulla, mentre la derivata


n + 1-sima di un polinomio di grado n + 1,
quale F ( x ), vale (n + 1)!.

appunti di calcolo numerico

6.3.4

85

Differenze divise e formula di Newton

Uno dei punti forti della rappresentazione di Lagrange che se


alcuni dati cambiano (ad esempio il valore di y j per un certo j) allora
il cambiamento immediatamente visibile nellintero polinomio di
interpolazione. Uno dei punti deboli, invece, la procedura per
valutare pn ( x ). Con la formula di Newton, al contrario, abbiamo un
utile compromesso.
Le funzioni base che ora consideriamo sono
j 1

j ( x ) =

( x xi )

j = 0, 1, . . . , n

i =0

Questa volta, scriveremo il polinomio di interpolazione come:


p( x ) = c0 + c1 ( x x0 ) + c2 ( x x0 )( x x1 ) + . . . + cn ( x x0 )( x x1 ) . . . ( x xn1 )
dove c0 , c1 . . . cn sono delle costanti da definire in modo opportuno.
Vediamo in ch modo con lesempio che segue.
Esempio Consideriamo sempre le tre coppie di punti degli
esempi precedenti, (1, 1), (2, 3) e (4, 3).
Per costruire p2 ( x ) abbiamo bisogno di 0 , 1 e 2 :

Questo esempio ci permette di capire come


si costruiscono i coefficienti c0 , c1 , ....

0 ( x ) = 1
1 ( x ) = ( x x0 ) = ( x 1)
2 ( x ) = ( x x0 )( x x1 ) = ( x 1)( x 2)
La condizione di interpolazione in x0 = 1 porta a:
f ( x0 ) = 1 = p2 ( x0 ) = p2 (1) = c0 0 (1) + c1 1 (1) + c2 2 (1) = c0 1 + c1 0 + c2 0
Quindi c1 = 1 = f ( x0 ).
In x1 = 2 abbiamo:
f ( x1 ) = 3 = p2 ( x1 ) = p2 (3) = f ( x0 ) + c1 1 (2) + c2 2 (2) = f ( x0 ) + c1 1 + c2 0
f ( x1 ) f ( x0 )
31
=
= 2. Chiamiamo
x1 x0
21
questa quantit differenza divisa del primo ordine tra x0 e x1 e la
indichiamo con f [ x0 , x1 ]. Quindi
Ricaviamo quindi c1 =

c1 = f [ x0 , x1 ] =

f ( x1 ) f ( x0 )
x1 x0

Infine,
f ( x2 ) = 3 = p2 ( x2 ) = p2 (4) = f ( x0 ) + f [ x0 , x1 ]1 (4) + c2 2 (4)

= f ( x0 ) + f [ x0 , x1 ](4 1) + c2 (4 1)(4 2)
Per ottenere una formula per c2 che abbia carattere generale, riscriviamo lequazione precedente utilizzando i simboli x0 , x1 , x2 per le
ascisse. In x1 si ha f ( x1 ) = p2 ( x1 ) = f ( x0 ) + f [ x0 , x1 ]( x1 x0 ).

86

annamaria mazzia

In x2 si ha f ( x2 ) = p2 ( x2 ) = f ( x0 ) + f [ x0 , x1 ]( x2 x0 ) + c2 ( x2
x0 )( x2 x1 ).
Sottraendo membro a membro la prima equazione dalla seconda si
ricava:
f ( x2 ) f ( x1 ) = f [ x0 , x1 ] [( x2 x0 ) ( x1 x0 )] + c2 ( x2 x0 )( x2 x1 )
vale a dire
f ( x2 ) f ( x1 ) = f [ x0 , x1 ]( x2 x1 ) + c2 ( x2 x0 )( x2 x1 )
Quindi
f ( x2 ) f ( x1 ) f [ x0 , x1 ]( x2 x1 ) = c2 ( x2 x0 )( x2 x1 )
f ( x2 ) f ( x1 )
x x1
f [ x0 , x1 ] 2
= c2 ( x2 x0 )
x2 x1
x2 x1
f ( x2 ) f ( x1 )
f [ x0 , x1 ] = c2 ( x2 x0 )
x2 x1
f ( x2 ) f ( x1 )
= f [ x1 , x2 ] la differenza divisa del primo ordine
x2 x1
tra x1 e x2 da cui
Ma

f [ x1 , x2 ] f [ x0 , x1 ] = c2 ( x2 x0 )

= c2 =

f [ x1 , x2 ] f [ x0 , x1 ]
x2 x0

La quantit chiamata c2 prende il nome di differenza divisa del


secondo ordine e si indica con
f [ x0 , x1 , x2 ] =

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

4
2
= . Quin6
3
di, p2 ( x ) = f ( x0 ) + f [ x0 , x1 ]( x x0 ) + f [ x0 , x1 , x2 ]( x x0 )( x x1 )
2
Nellesempio considerato: p2 ( x ) = 1 + 2( x 1) ( x 1)( x 2)
3
_
Da questo esempio, si pu vedere come la rappresentazione secondo Newton sia di tipo ricorsivo: il polinomio p1 ( x ) = f ( x0 ) +
f [ x0 , x1 ]( x x0 ) (che si ha arrestandosi ai primi due passi del procedimento appena effettuato) un polinomio, in tal caso una retta,
che interpola i dati ( x0 , y0 ), e ( x1 , y1 ). Il polinomio p2 ( x ) dato dalla
somma di p1 ( x ) e del termine f [ x0 , x1 , x2 ]( x x0 )( x x1 ). Quindi,
una volta determinato il polinomio pn1 che interpola i primi n dati,
possiamo usare questa rappresentazione per costruire pn che interpola
i dati precedenti cui si aggiunge la coppia ( xn , yn ).
Il coefficiente c j del polinomio interpolatore di Newton si chiama
differenza divisa di ordine j e viene indicata con f [ x0 , x1 , . . . , x j ].
Perci:
Facendo le opportune sostituzioni si ricava c2 =

f [ x0 ] = c0 , f [ x0 , x1 ] = c1 , . . . , f [ x0 , x1 , . . . , x n ] = c n
La notazione utilizzata ci permette di capire anche da quali coppie
di punti dipende il coefficiente c j .

Date le stesse coppie di punti, cambia il


modo per arrivare al polinomio di interpolazione, usando come funzioni base i monomi, o i polinomi di Lagrange e ora la formulazione di Newton, ma il polinomio finale
sempre lo stesso essendo unico il polinomio
interpolatore.

appunti di calcolo numerico

87

Dati i punti x0 , x1 , . . . , xn , per indici i e j arbitrari con 0 i j


n, si ha
f [ xi ] = f ( xi )
f [ xi , . . . , x j ] =

f [ x i +1 , . . . x j ] f [ x i , . . . , x j 1 ]
x j xi

La formula interpolatoria alle differenze divise di Newton dunque data da


pn ( x ) = f [ x0 ] + f [ x0 , x1 ]( x x0 ) + f [ x0 , x1 , x2 ]( x x0 )( x x1 ) + . . .

+ f [ x0 , x1 , . . . , xn ]( x x0 )( x x1 ) ( x xn1 )
Da un punto di vista computazionale i coefficienti si ricavano
mediante la tabella delle differenze divise, tenendo presente che per
calcolare f [ x0 , x1 , . . . , xn ] dobbiamo aver calcolato tutte le differenze
divise f [ x jk , . . . , x j ], con 0 k j n.
xi
x0

f []
f ( x0 )

f [, ]

f [ x0 , x1 ] =
x1

f [, , ]

f [, , , ]

f [ x1 ] f [ x0 ]
x1 x0

f ( x1 )

f [ x0 , x1 , x2 ] =
f [ x1 , x2 ] f [ x0 , x1 ]
=
x2 x0
f [ x1 , x2 ] =

f [ x2 ] f [ x1 ]
x2 x1

f [ x0 , x1 , x2 , x3 ] =

=
x2

f ( x2 )

f [ x0 , x1 , x2 , x3 , x4 ] =

f [ x3 ] f [ x2 ]
x3 x2

f ( x3 )

f [ x2 ,x3 ,x4 ] f [ x1 ,x2 ,x3 ]


x4 x1

f [ x2 , x3 , x4 ] =
f [ x3 , x4 ] f [ x2 , x3 ]
=
x4 x2
f [ x3 , x4 ] =

..
.

f [ x4 ] f [ x3 ]
x4 x3
..
.

f ( x4 )
..
.

..
.

f [ x1 ,x2 ,x3 ,x4 ] f [ x0 ,x1 ,x2 ,x3 ]


x4 x0

f [ x1 , x2 , x3 , x4 ] =

x4

f [ x1 ,x2 ,x3 ] f [ x0 ,x1 ,x2 ]


x3 x0

f [ x1 , x2 , x3 ] =
f [ x2 , x3 ] f [ x1 , x2 ]
=
x3 x1
f [ x2 , x3 ] =

x3

f [, , , , ]

..
.

I coefficienti della diagonale principale sono i coefficienti c j del


polinomio interpolatore di Newton.
Esempio Costruiamo la tabella delle differenze divise per i
dati (1, 1), (2, 3) e (4, 3).

..
.

88

annamaria mazzia

f []
1

xi
1

f [, ]
31
=2
21

33
=0
42

02
2
=
41
3

2).

f [, , ]

2
Il polinomio p2 ( x ) si scrive: p2 ( x ) = 1 + 2( x 1) ( x 1)( x
3

Se vogliamo aggiungere altri dati, per esempio, la coppia (5, 4),


dobbiamo aggiungere una riga alla tabella della differenza divisa e un
termine al polinomio che abbiamo gi ricavato per ottenere quello di
grado superiore interpolante tutti i dati che abbiamo a disposizione.
xi
1

f []
1

f [, ]
31
=2
21

3
33
=0
42

3
43
=1
54

f [, , ]

02
2
=
41
3

1
10
=
52
3

f [, , , ]

1 2

3
3 = 1
51
4

1
Il polinomio p3 ( x ) p3 ( x ) = p2 ( x ) + ( x 1)( x 2)( x 4).
4

Differenze divise e derivate. La differenza divisa k-sima e la derivata


k-sima di f sono legate tra loro. Si pu provare, infatti, per k 1 che
vale la relazione
f [ x0 , x1 , . . . , x k ] =

f (k) ( )
k!

dove un punto appartente allinterno dellintervallo individuato


dai nodi x0 , . . . , xk . Quando i punti coincidono, si ha
0 ,...,x0 ] =
f [ x|0 ,x{z
}

k +1 volte

f ( k ) ( x0 )
k!

Questa formula serve per calcolare il polinomio di interpolazione che


interpola non solo una certa funzione f ma anche le sue derivate in
alcuni punti assegnati (si veda lesercizio 6.6.3 a fine Capitolo).
Relazione tra differenze divise ed errore di interpolazione.
pn ( x ) aggiungiamo la coppia di dati ( x, f ( x )) si ha

Se al polinomio

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

Il concetto di differenza divisa pu essere


visto come unestensione del concetto di derivata di una funzione. Si ha, infatti, che, per
f derivabile, la differenza divisa del primo
ordine f [ x0 , x1 ] pu essere vista come un
rapporto incrementale e quindi, al limite per
x1 x0 , si ha f 0 ( x0 ). Il discorso si estende
alle differenze divise di ordine superiore.

appunti di calcolo numerico

89

Lultima differenza divisa non si pu calcolare, poich dipende da x


(che la nostra variabile), ma ci utile per capire quanto vale lerrore
che commettiamo nellapprossimare f ( x ) mediante il polinomio interpolatore, applicando la rappresentazione di Newton. Inoltre, dato
che il polinomio interpolatore unico (fissate le coppie di dati del
problema), anche lerrore che si commette lo stesso, qualunque sia la
strategia utilizzata per arrivare ad esso. Quindi possiamo eguagliare
lerrore trovato utilizzando i polinomi di Lagrange con lerrore trovato
nella rappresentazione di Newton, ottenendo:
f (n+1) ( ( x ))
( n + 1) !

6.4

6.4.1

( x xi ) =

i =0

f [ x0 , x1 , . . . , x n , x ] ( x x i )
i =0

Considerazioni sullinterpolazione polinomiale

Fenomeno di Runge

Data una funzione f , si pensa che il polinomio di interpolazione


possa approssimare bene la funzione, soprattutto se si aumenta il
numero dei punti di appoggio. In realt questo non sempre vero e
un semplice e famoso esempio ce lo fa capire. Sia data la funzione di
1
Runge f ( x ) =
e consideriamo il polinomio di interpolazione di
1 + x2
questa funzione per valori crescenti di n prendendo punti di appoggio
equidistanti nellintervallo [5, 5]. Partiamo da n + 1 = 2 con i punti
equidistanti x0 = 5, x1 = 0 e x2 = 5. Si ha la tabella
xi
yi = f ( xi )

5
3.846154e 2

0
1.

Carl Runge (1856-1927) fu un matematico


tedesco. Fu studente di Weierstrass, Kirchhoff, Helmholtz. Inizi poi a collaborare con
Kronecker e poi si dedic in particolare allo
studio della soluzione numerica di equazioni
algebriche e alla spettroscopia.

5
3.846154e 2

Costruiamo quindi il polinomio di interpolazione p2 ( x ) (utilizzando uno degli approcci proposti, monomiale, Lagrange o Newton, i
risultati non cambiano).
Raddoppiamo il numero dei punti aggiungendo un punto tra x0 e x1 e uno tra x1 e x2 . Abbiamo n + 1 = 5
e i valori della tabella
xi
yi = f ( xi )

5
3.846154e 2

2.5
1.379310e 1

0
1.

2.5
1.379310e 1

5
3.846154e 2

Con lo stesso procedimento, costruiamo i polinomi di interpolazione


di grado 8 e 16. In Figura 6.5 sono riportati i grafici della funzione
di Runge (in nero) e dei polinomi interpolanti di grado 2, 4 e 8. Si
pu osservare che solo in un sottointervallo di [5, 5] al crescere di
n, i polinomi convergono alla funzione. Agli estremi dellintervallo
[5, 5] si hanno oscillazioni che aumentano sempre pi al crescere di
n. Con n = 16 si ha il polinomio riportato in Figura 6.6 (in alto), che
non permette di distinguere il profilo della funzione di Runge a causa
delle oscillazioni molto forti. Solo se restringiamo il grafico in un
intorno dellorigine, possiamo vedere come il profilo del polinomio
p16 si avvicini bene alla funzione si veda la Figura 6.6 (in basso)!

90

annamaria mazzia

Figura 6.5: Funzione di Runge e polinomi


interpolanti di grado 2, 4 e 8.

Lesempio di Runge utile per capire che la scelta dei nodi equidistanti non si rivela sempre la scelta giusta e che occorrono altre
strategie nella scelta dei nodi per ottenere migliori risultati. Nellef (n+1) ( ( x ))
sempio di Runge, infatti, il rapporto
, che compare nella
( n + 1) !
formula dellerrore, cresce, al crescere di n, agli estremi dellintervallo
di interpolazione, perci aumentando il grado del polinomio di interpolazione, aumenta lerrore! Per indagare ulteriormente su questo
problema, si rimanda alla letteratura specializzata del settore.

6.4.2

Malcondizionamento nellinterpolazione con funzioni


base monomiali

Allinizio di questo Capitolo, abbiamo introdotto il polinomio di


interpolazione mediante funzioni base monomiali: utilizzando questa
strada, i coefficienti del polinomio si ricavano risolvendo un sistema
lineare la cui matrice, di Vandermonde, malcondizionata. A causa
del malcondizionamento, questo approccio pu portare a risultati
errati!
Vediamo di capire il malcondizionamento mediante un esempio.
Si voglia studiare linterpolazione dei seguenti dati
xi
yi

1010.5
4

1011.5
2.5

1012.5
2.5

1013
2

1014
2

Figura 6.6: Funzione di Runge e polinomio


interpolante di grado 16 su tutto lintervallo
[5, 5] (in alto) e in un sottointervallo ristretto
(in basso)

1015
0

Confrontando i vari algoritmi di interpolazione, osserveremo che


gli algoritmi di Lagrange e delle differenze divise di Newton danno
buoni risultati. Al contrario, il metodo che porta alla costruzione della
matrice di Vandermonde d risultati disastrosi, come si pu vedere
in Figura 6.7. Eppure, dal punto di vista teorico i risultati dovrebbero
essere identici.

Figura 6.7: Effetti del malcondizionamento

appunti di calcolo numerico

91

Perch si hanno questi risultati? Bisogna tener conto di tre aspetti:


il calcolo della matrice di Vandermonde; la soluzione del sistema
lineare per ricavare i coefficienti del polinomio con funzioni base
monomiali; il calcolo dei valori del polinomio.
La matrice di Vandermonde consiste di colonne i cui valori crescono di colonna in colonna - 1, xi , xi2 , xi3 , . . ., xi5 . Per questo caso
test, si va da 1 a elementi dellordine di 1015 . La matrice molto mal
condizionata. Perci la soluzione del sistema lineare non pu dare
risultati affidabili e il vettore che fornisce i coefficienti del polinomio
interpolatore completamente errato. Ci porta anche al fenomeno
della cancellazione numerica nel calcolo del polinomio di interpolazione, per cui si ha una significativa perdita di accuratezza e il grafico
risultante presenta un profilo altamente oscillante.

6.5

Interpolazione polinomiale a tratti

Abbiamo visto, nellesempio di Runge, che linterpolazione polinomiale con nodi equidistanti non porta a una buona interpolazione,
in quanto lerrore, che dipende dalla derivata f n+1 ( x ), aumenta al
crescere di n. Nel caso dellesempio di Runge, una diversa scelta di
nodi pu portare a buoni risultati, ma resta il fatto che se il rapporto
f n +1 ( x )
aumenta al crescere di n, anche lerrore rimane elevato.
( n + 1) !
Aumentando il numero dei punti di appoggio, il polinomio di
interpolazione porta forti e irragionevoli oscillazioni al di fuori dellintervallo dei nodi, come si pu vedere nellesempio mostrato in
Figura 6.8.
A volte, se la funzione da interpolare continua a tratti, il termine
dellerrore pu essere ancora grande anche allinterno dellintervallo
dei nodi. In Figura 6.9, sono messi a confronto il polinomio di
interpolazione di grado n = 5 che interpola la funzione f ( x ) =
p
| x | + 1 prendendo 6 punti equidistanti nellintervallo [1, 1] e il
polinomio di interpolazione della funzione f ( x ) = e x nello stesso
intervallo e con gli stessi punti. Mentre nel caso della funzione
f ( x ) = e x il polinomio di interpolazione, nellintervallo dei nodi, si
p
sovrappone alla funzione interpolata, per la funzione f ( x ) = | x | + 1
lerrore ben evidente.

Figura 6.8: Interpolazione della funzione


f ( x ) = exp( x ) con n = 20 (in alto) e
n = 40 (in basso). I nodi di interpolazione
sono nellintervallo [0, 1].

Figura 6.9:
p Interpolazione della funzione
f (x) =
| x | + 1 (a sinistra) e della funzione f ( x ) = e x (a destra) con n = 5
nellintervallo [1, 1]

Se, in alcuni casi, la scelta dei nodi, fatta in maniera opportuna, pu


risolvere determinati problemi che si incontrano nellinterpolazione,

92

annamaria mazzia

altre volte il polinomio di interpolazione produce risultati comunque


non buoni, indipendentemente dalla scelta dei nodi.
La domanda, allora, la seguente: come possiamo ridurre il termine dellerrore senza aumentare il grado n nellinterpolazione e,
tuttavia, mantenendo un numero elevato di nodi? La risposta viene
dallinterpolazione polinomiale a tratti.
Supponiamo di voler costruire una curva che interpola dei dati
che si trovano allinterno di un certo intervallo [ a, b]. Prenderemo dei
punti allinterno di questo intervallo, in modo che il primo e lultimo
punto coincidano con a e b rispettivamente: a = x1 < x2 < . . . <
xm = b. Chiamiamo questi punti nodi o punti di appoggio. A ciascun
nodo associato il valore yi da interpolare. In questo modo abbiamo
m nodi in [ a, b] e possiamo considerare gli m 1 sottointervalli dati
da [ x1 , x2 ], [ x2 , x3 ], . . . fino ad arrivare a [ xm1 , xm ] (da cui il generico
sottointervallo dato da [ xi , xi+1 ] con i = 1, 2, . . . , m 1). Su ciascun
sottointervallo andremo a costruire un polinomio di interpolazione
di grado basso (considereremo n = 1 e n = 3), che chiamamo si ( x ).
La funzione di interpolazione globale sar una curva v( x ) continua
(in alcuni casi anche di classe C1 o C2 ) che soddisfa la relazione
v ( x ) = s i ( x ),

Come si pu notare, abbiamo cambiato la


numerazione dei nodi (non pi da x0 a xn
ma da x1 a xm ) per evitare confusioni con
quanto detto prima sullinterpolazione polinomiale. Inoltre i nodi sono ordinati in modo
crescente, ordine non necessario quando si
fa linterpolazione polinomiale.

xi x xi+1 , i = 1, 2, . . . , m 1.

Ci sono diversi tipi di interpolazione polinomiale a tratti. Noi


ne consideriamo solamente due: linterpolazione lineare a tratti e le
spline cubiche.

6.5.1

Interpolazione lineare a tratti

Il caso pi semplice da considerare prendere, su ciascun sottointervallo [ xi , xi+1 ] un polinomio di interpolazione lineare (grado n = 1),
quindi una retta. Allora la funzione v( x ) sar continua (ma non avr
le derivate continue) in tutto lintervallo.
Nellintervallo [ xi , xi+1 ], il polinomio di interpolazione si ( x ) si
pu costruire facilmente applicando, ad esempio, la formula delle
differenze divise di Newton, da cui si ( x ) = yi + f [ xi , xi+1 ]( x xi ).
Globalmente avremo v( x ) tale che
v( x ) = si ( x ) = yi + f [ xi , xi+1 ]( x xi ),

x i x x i +1 ,

i = 1, 2, . . . , m 1.

Un esempio di interpolazione lineare a tratti si ha in Figura 6.10.


Il grande vantaggio di usare questo tipo di interpolazione la sua
semplicit e facilit. Tuttavia spesso questo tipo di interpolazione
non sufficiente perch non abbastanza regolare (c discontinuit
nelle derivate ai punti di appoggio) e in molte applicazioni, invece,
serve che ci sia continuit anche nelle derivate. Per avere maggiore
continuit (vogliamo ad esempio che la funzione di interpolazione
v( x ) sia di classe C1 o C2 ), si deve aumentare il grado del polinomio
si ( x ) su ciascun sottointervallo. La scelta pi diffusa quella di usare
polinomi cubici. Tra i polinomi cubici c linterpolazione cubica di
Hermite a tratti (che non descriviamo) e linterpolazione spline cubica
(che vedremo pi nei dettagli).

appunti di calcolo numerico

93

Figura 6.10: Esempio di interpolazione


lineare a tratti

6.5.2

Interpolazione spline cubica

Su ciascun sottointervallo, consideriamo un polinomio di terzo grado


(n = 3), da cui la funzione globale v( x ) sar:
v ( x ) = s i ( x ) = a i + bi ( x x i ) + c i ( x x i ) 2 + d i ( x x i ) 3 ,

xi x xi+1 , i = 1, 2, . . . m 1

Quindi su ciascun sottointervallo abbiamo un polinomio cubico, che


dipende da quattro coefficienti (ai , bi , ci , di ). Per ora, questi coefficienti
sono incogniti, e poich abbiamo 4 incognite su m 1 sottointervalli,
abbiamo un totale di 4(m 1) incognite. Come determinare queste
incognite? Imponendo non solo le condizioni di interpolazione (ricordiamo che noi abbiamo non solo le ascisse xi ma anche le ordinate yi
e la condizione di interpolazione si legge come v( xi ) = yi ), ma anche
la continuit della derivata prima e della derivata seconda nei punti
di raccordo tra un sottointervallo e il successivo. Abbiamo quindi le
seguenti condizioni da imporre:
si ( xi ) = yi ,

i = 1, 2, . . . , m 1

s i ( x i +1 ) = y i +1 ,
0
si ( xi+1 ) = si0+1 ( xi+1 ),
si00 ( xi+1 ) = si00+1 ( xi+1 ),

i = 1, 2, . . . , m 1
i = 1, 2, . . . , m 2
i = 1, 2, . . . , m 2

Osserviamo che le condizioni di continuit delle derivate prime e


seconde le possiamo imporre solo nei punti interni, e non in x1 e xm ,
il primo e lultimo punto. Le condizioni che abbiamo appena scritto
sono 2(m 1) + 2(m 2) = 4(m 1) 2. Abbiamo 2 condizioni in
meno rispetto alle 4(m 1) incognite che dobbiamo determinare! Le
due condizioni che mancano vengono imposte su punti estremi x1
e xm e, in base alle condizioni imposte si hanno le cosiddette spline
naturali, complete e not-a-knot.
Nelle spline naturali si richiede s100 ( x1 ) = s00m1 ( xm ) = 0. Nelle
spline complete, vengono specificati i valori delle derivate prime
per s10 ( x1 ) e per s0m1 ( xm ). Invece per le spline not-a-knot si richiede la continuit della derivata terza di s1 e di sm1 in x2 e in xm1

Da un punto di vista storico, il termine spline deriva da un sottile e flessibile strumento


per disegnare curve, fatto di legno o metallo, utilizzato prima dellavvento dei computer, soprattutto nellindustria navale. Per poter passare per determinati punti, la spline
era tenuta ferma da alcuni pesi, mentre alle
estremit non aveva costrizioni (quindi derivata seconda nulla, come accade nelle spline
naturali). La spline naturale minimizza lenergia di tensione tra tutte le funzioni che sono
costrette a passare per quei punti e con la
stessa continuit.

94

annamaria mazzia

Figura 6.11: Esempio di interpolazione spline


cubica

rispettivamente: poich la derivata terza una costante (stiamo lavorando con polinomi cubici), questa condizione fa s che s1 = s2 e che
sm2 = sm1 e, in questo modo, il primo e lultimo nodo non sono
attivi.
Nel seguito, tratteremo solamente il caso delle spline cubiche
naturali, per la loro semplicit di implementazione.
Costruzione della spline cubica naturale. Passiamo ora a capire come si
ricavano i coefficienti incogniti, ponendo hi = xi+1 xi , i = 1, . . . , m
1: hi rappresenta lampiezza del sottointervallo i-simo [ xi , xi+1 ].
Dalla relazione di interpolazione si ( xi ) = yi si ricava facilmente
ai = yi ,

i = 1, 2, . . . , m 1

Dallaltra relazione di interpolazione si ( xi+1 ) = yi+1 si ricava


ai + bi hi + ci h2i + di h3i = yi+1
cio (sostituendo il valore per ai ):
yi + bi hi + ci h2i + di h3i = yi+1 ,

i = 1, 2, . . . , m 1

(6.1)

Useremo lequazione (6.1) successivamente.


Per usare le altre relazioni, scriviamo la derivata prima e seconda
di si . Si ha, per i = 1, 2, . . . , m 1
si0 ( x ) = bi + 2ci ( x xi ) + 3di ( x xi )2
si00 ( x ) = 2ci + 6di ( x xi )
A questo punto, dalla relazione si0 ( xi+1 ) = si0+1 ( xi+1 ), i = 1, 2, . . . , m
2 ricaviamo (osserviamo che a destra dobbiamo valutare si0+1 ( xi+1 ):
bi + 2ci hi + 3di h2i = bi+1 ,

i = 1, 2, . . . , m 2

(6.2)

Dalla relazione si00 ( xi+1 ) = si00+1 ( xi+1 ), i = 1, 2, . . . , m 2 ricaviamo


2ci + 6di hi = 2ci+1 ,

i = 1, 2, . . . , m 2

che si semplifica in
ci + 3di hi = ci+1 ,

i = 1, 2, . . . , m 2

Osserviamo che, dalla relazione si00 ( xi ) =


2ci si ricava il significato geometrico dei
s00 ( xi )
coefficienti ci = i
.
2

appunti di calcolo numerico

95

Da questultima otteniamo
di =

c i +1 c i
,
3hi

i = 1, 2, . . . , m 2

(6.3)

Adesso i coefficienti di sono in funzione dei coefficienti ci . Sostituiamo


il valore di di appena ricavato nellequazione (6.1) e ricaviamo bi in
funzione dei coefficienti ci . abbiamo
Dividiamo tutto per hi e per compattare i
termini utilizziamo le differenze divise dove
servono.

yi + bi hi + ci h2i + di h3i = yi+1


c
ci 3
bi hi + ci h2i + ( i+1
) h i = y i +1 y i
3hi
c
ci
bi + c i h i + ( i + 1
) h i = f [ x i , x i +1 ]
3
Otteniamo, per bi , la relazione
bi = f [ x i , x i + 1 ]

(2ci + ci+1 )hi


,
3

i = 1, . . . , m 1

(6.4)

Sostituiamo ora i valori per bi e per di nellequazione (6.2):


bi + 2ci hi + 3di h2i = bi+1 , i = 1, 2, . . . , m 2
f [ x i , x i +1 ]

(2ci + ci+1 )hi


c
ci 2
(2ci+1 + ci+2 )hi+1
h i = f [ x i +1 , x i +2 ]
+ 2ci hi + 3 i+1
3
3hi
3
Raccogliamo i termini in hi a sinistra.

(c + 2ci+1 )hi
(2ci+1 + ci+2 )hi+1
f [ x i , x i +1 ] + i
= f [ x i +1 , x i +2 ]
3
3
Moltiplichiamo ambo i membri per 3 e
portiamo le differenze divise a destra.

ci hi + 2ci+1 (hi + hi+1 ) + ci+2 hi+1 = 3( f [ xi+1 , xi+2 ] f [ xi , xi+1 ]) (6.5)


Questa equazione si ha per i = 1, . . . , m 2, quindi abbiamo un
sistema di m 2 equazioni, ma le incognite ci che abbiamo introdotto
sono m: c1 , c2 , . . . , cm .
Aggiungiamo, allora, le condizioni per le spline naturali: deve
essere s100 ( x1 ) = s00m1 ( xm ) = 0. Si ha
s100 ( x1 ) = 2c1 = 0
s00m1 ( xm ) = 2cm1 + 6dm1 hm1 = 0
c m 1
. Di conseguenza, ponendo cm =
3hm1
0 possiamo estendere allindice i = m 1 la relazione (6.3) per i
c m c m 1
coefficienti di : dm1 =
.
3hm1
Con la posizione c1 = cm = 0 le equazioni (6.5), per i = 1 e per
i = m 2 si semplificano, rispettivamente, in
da cui c1 = 0 e, dm1 =

2c2 (h1 + h2 ) + c3 h2 =3( f [ x2 , x3 ] f [ x1 , x2 ]),

(6.6)

cm2 hm2 + 2cm1 (hm2 + hm1 ) =3( f [ xm1 , xm ] f [ xm2 , xm1 ]),
(6.7)

Il procedimento seguito fino a questo punto


valido qualunque sia il tipo di spline che
vogliamo generare.
Aggiungendo le due condizioni che mancano,
il procedimento si distingue da spline a spline.

96

annamaria mazzia

Perci il sistema da risolvere per trovare i coefficienti c2 , c3 , . . . , cm1 ,


mettendo insieme le equazioni (6.5), (6.6),(6.7), dato da Ac = dove

2( h1 + h2 )

h2

h2
0

2( h2 + h3 )
h3
..
.

h3
2( h3 + h4 )
..
.

0
h4
..
.

h m 3
0

2 ( h m 3 + h m 2 )
h m 2

A=

c=

0
..
.
0

c2
c3
..
.

c m 1

0
..
.
...
0
h m 2
2 ( h m 2 + h m 1 )

3( f [ x2 , x3 ] f [ x1 , x2 ])

3( f [ x3 , x4 ] f [ x2 , x3 ])

=
..

.
3( f [ xm1 , xm ] f [ xm2 , xm1 ])

Una volta ricavati i coefficienti ci , usando le equazioni (6.3) e (6.4),


per i = 1, . . . , m 1, si trovano tutti i coefficienti delle cubiche si .
Ricapitolando, per trovare i coefficienti delle spline cubiche
naturali si deve:
1. risolvere il sistema Ac = che, risolto, fornisce i coefficienti
c2 , c3 , . . . , cm1 delle spline;
2. aggiungere al vettore c, i valori c1 = cm = 0
3. applicare, per i = 1, . . . , m 1 le relazioni
ai = yi
bi = f [ x i , x i + 1 ]
di =

6.5.3

c i +1 c i
3hi

(2ci + ci+1 )hi


3

Curve parametriche

Supponiamo di avere un insieme di punti in cui le ascisse possono


ripetersi e in cui si vuole che i punti vengano messi insieme per
formare una particolare curva.
In Figura 6.12 vediamo un esempio di punti e di curva che vogliamo ottenere: in questo caso andiamo a unire i punti nellordine
considerato mediante segmenti di retta.
Questa curva, tuttavia, non pu essere espressa come funzione di x
o di y perch non una funzione (ad ogni valore di x non corrisponde un solo valore sullasse delle ordinate, come deve accadere per
funzioni del tipo y = f ( x )). Ci troviamo di fronte ad un esempio di
curva. Possiamo pensare alla curva come il percorso di una particella
che si muove in funzione del tempo t e, di conseguenza, le coordinate

Figura 6.12: Esempio di curva parametrica.

appunti di calcolo numerico

97

della particella sono funzioni di t ( x = x (t), y = y(t)). Abbiamo le


cosiddette equazioni parametriche di una curva.
Per poter costruire la curva di interpolazione, come nellesempio
proposto, dobbiamo, quindi, parametrizzare le coordinate ( xi , yi ),
i = 1, 2, . . . , m.
Dobbiamo cercare, quindi dei valori t1 , t2 , . . . tm tali che xi il
risultato di una certa funzione x al tempo ti mentre yi il risultato di
una certa funzione y allo stesso tempo ti . Dobbiamo dunque avere
una rappresentazione del tipo:

( t1 , x1 ), ( t2 , x2 ) . . . ( t m , x m )
( t1 , y1 ), ( t2 , y2 ) . . . ( t m , y m )
In tal caso, possiamo approssimare la curva x mediante le condizioni
di interpolazione x (ti ) = xi mentre la curva y dovr verificare y(ti ) =
yi .
Se abbiamo m punti a disposizione, possiamo fissare i valori ti
i
come ti = i, per i = 1, 2, . . . , m (si pu anche scegliere ti =
):
m
limportante avere dei valori crescenti per la variabile t.
La curva in forma parametrica dunque espressa da ( x (t), y(t)).
Per costruire x (t) e y(t) usiamo le tecniche di interpolazione a tratti
(per esempio di interpolazione lineare a tratti o di spline cubiche a
tratti) in modo da ottenere il risultato finale. In figura 6.13 vediamo
un esempio di interpolazione lineare a tratti con gli stessi nodi usati
per ottenere la curva di figura 6.12.

6.6

Figura 6.13: Esempio di curva parametrica con interpolazione spline cubica a tratti
(stessi nodi della figura 6.12).

Esercizi

Esercizio 6.6.1 Sia data la tabella seguente:


xi
f ( xi )

-1
9

0
0

2
0

3
15

4
84

(a) Scrivere la tabella delle differenze divise.


(b) Trovare il polinomio interpolatore (con la formula di Newton) di
grado non superiore a 4.

Svolgimento
(a) La tabella delle differenza divise :
(b) Il polinomio di Newton di grado 4 che interpola i dati assegnati
dunque (prendendo i valori della diagonale principale della tabella)
p( x ) = 9 9( x + 1) + 3( x + 1) x + 0.5( x + 1) x ( x 2) + ( x + 1) x ( x 2)( x 3) =

= x4 3.5x3 + 3.5x2 x

98

annamaria mazzia

f (, )

f (, , )

f (, , , )

xi
-1

f ( xi )
9

09
= 9
0 (1)

00
=0
20

0+9
= 3
2 (1)

15

15 0
= 15
32

15 0
=5
30

53
= 0.5
3 (1)

84

84 15
= 69
43

69 15
= 27
42

27 5
11
=
40
2

Esercizio 6.6.2 Sia data la tabella seguente:


xi
f ( xi )

0
1

0.1
0.48

0.8
1.32

1.2
5.32

(a) Scrivere la tabella delle differenze divise.


(b) Usando i quattro punti in successione, scrivere i polinomi interpolanti (di Newton) pn ( x ) di grado non superiore ad n (con n=0,1,2,3);
commentare il risultato.
(c) Usando pn ( x ) stimare, per ogni n, f (0.6) e f 0 (0.6).
(d) scrivere il polinomio p2 ( x ) con la formula di Lagrange.

Svolgimento

(a) La tabella delle differenza divise :

f (, )

f (, , )

xi
0

f ( xi )
1

0.1

0.48

0.48 1
= 5.2
0.1

0.8

1.32

1.32 0.48
= 1.2
0.7

1.2 + 5.2
=8
0.8

1.2

5.32

5.32 1.32
= 10
0.4

10 1.2
=8
1.1

f (, , , )

88
=0
1.2

f (, , , , )

11/2 1/2
=1
4 (1)

appunti di calcolo numerico

(b) I polinomi di Newton di grado 0,1,2 e 3 sono:


p0 ( x ) = 1
p1 ( x ) = 1 5.2x
p2 ( x ) = 1 5.2x + 8x ( x 0.1) = 8x2 6x + 1
p3 ( x ) = 1 5.2x + 8x ( x 0.1) + 0x ( x 0.1)( x 0.8) = 1 5.2x + 8x ( x 0.1) = p2 ( x )
Il polinomio p3 ( x ) coincide con p2 ( x ) in quanto p2 ( x3 ) = p2 (1.2) =
f (1.2) = f ( x3 ) cio il polinomio di grado 2 interpola non solo i
dati ( x0 , f ( x0 )), ( x1 , f ( x1 )) e ( x2 , f ( x2 )) ma anche ( x3 , f ( x3 )).
(c) Per le derivate di pn ( x ), n = 0,1,2 si ha
p00 ( x ) = 0
p10 ( x ) = 5.2
p20 ( x ) = 16x 6
La stima di f (0.6) e f 0 (0.6) :
n
0
1
2

pn (0.6)
1
-2.12
0.28

p0n (0.6)
0
-5.2
3.6

(d) I polimoni di Lagrange per ricavare il polinomio p2 sono dati


considerando i valori x0 , x1 e x2 :

( x 0.1)( x 0.8)
x2 0.9x + 0.08
=
(0.1)(0.8)
0.08
2
x ( x 0.8)
x 0.8x
L1 ( x ) =
=
0.1(0.1 0.8)
0.07
2
x ( x 0.1)
x 0.1x
L2 ( x ) =
=
0.8(0.8 0.1)
0.56
L0 ( x ) =

Il polinomio :
p2 ( x ) = 1L0 ( x ) + 0.48L1 ( x ) + 1.32L2 ( x )
x2 0.9x + 0.08
x2 0.8x
x2 0.1x
0.48
+ 1.32
0.08
0.07
0.56
= 12.5( x2 0.9x + 0.08) 6.857142857( x2 0.8x ) + 2.357142857( x2 0.1x )

e raccogliendo i termini
p2 ( x ) = 8x2 6x + 1

Esercizio 6.6.3 Trovare il polinomio di grado non superiore a 4 che


interpola i dati seguenti: f (0) = 2, f 0 (0) = 7, f 00 (0) =
18, f (1) = 27 f 0 (1) = 60. Stimare f (0.2) e f 0 (0.2).

99

100

annamaria mazzia

Svolgimento
Costruiamo la tabella delle differenze divise tenendo presente che
le derivate di una funzione f si possono avere come limite delle
differenze divise:
f [0, 0] = f 0 (0) = 7

f 00 (0)
=9
2!

f [0, 0, 0] =

f [1, 1] = f 0 (1) = 60

Tenendo conto di queste relazioni tra differenze divise e derivate,


nella tabella delle differenze divise, dobbiamo ripetere per tre volte
lascissa 0 e due volte lascissa 1. Si ottiene:
0

2
f 0 (0)=7

f 00 (0)/2=9

2
f 0 (0)=7

2
27 2
=25
10

27
f 0 (1)= 60

25 7
=18
10
60 25
=35
10

18 9
=9
10
35 18
=17
10

17 9
=8
10

27

Il polinomio dunque p( x ) = 2 + 7x + 9x2 + 9x3 + 8x3 ( x 1), vale


a dire
p( x ) = 8x4 + x3 + 9x2 + 7x + 2.
La stima di f (0.2) data da: f (0.2) p(0.2) = 3.7808.
Per stimare f 0 (0.2) dobbiamo prima calcolare la derivata prima di
p. Si ha
p0 ( x ) = 32x3 + 3x2 + 18x + 7,
da cui f 0 (0.2) p0 (0.2) = 12.056.

Esercizio 6.6.4 Sia data la tabella seguente di dati sperimentali


xi
f ( xi )

0.4
17.62

1
23.5

2.8
92.98

3.8
165.18

(a) Costruire la tabella delle differenze divise.


(b) Usando i quattro punti in successione, scrivere i polinomi di interpolazione di Newton pn di grado n = 0, 1, 2, 3. Commentare il
risultato.

Svolgimento
La tabella delle differenze divise :

appunti di calcolo numerico

f (, )

f (, , )

xi
0.4

f ( xi )
17.62

1.

23.5

23.5 17.62
= 9.8
1 0.4

2.8

92.98

92.98 23.5
= 38.6
2.8 1

38.6 9.8
= 12
2.8 0.4

3.8

165.18

165.18 92.98
= 72.2
3.8 2.8

72.2 38.6
= 12
3.8 1

f (, , , )

12 12
=0
3.8 0.4

I polinomi da costruire sono

G
G
G
G

p0 ( x ) = 17.62
p1 ( x ) = p0 ( x ) + 9.8( x 0.4) = 17.62 + 9.8( x 0.4) = 9.8x + 13.7
p2 ( x ) = p1 ( x ) + 12( x 0.4)( x 1) = .... = 12x2 7x + 18.5
p3 ( x ) = p2 ( x ) + 0( x 0.4)( x 1)( x 2.8) = p2 ( x )

Il polinomio p3 coincide con il polinomio p2 perch il punto (3.8, 165.18)


appartiene gi al polinomio p2 .

6.7

Domande di riepilogo

1. Date n + 1 coppie di punti da interpolare, di che grado il


polinomio di interpolazione?
2. Se si cerca di ricavare i coefficienti del polinomio di interpolazione
scritto come p( x ) = a0 + a1 x + a2 x2 + . . . + an x n , utlizzando come
funzioni base i monomi 1, x, . . ., x n , si deve risolvere un sistema
lineare in cui la matrice dei coefficienti ha un nome ben preciso.
Come si chiama questa matrice e quali caratteristiche ha?
3. Come si definiscono i polinomi di Lagrange? Dati n + 1 nodi
x0 , x1 , . . . , xn , quanti polinomi di Lagrange possiamo costruire?
Che caratteristica ha ciascun polinomio di Lagrange? Provare a
fare il grafico di questi polinomi per n = 3 e per n = 4.
4. I polinomi di Lagrange sono utilizzati per costruire il polinomio di
interpolazione. Che forma assume il polinomio di interpolazione
utilizzando i polinomi di Lagrange?
5. Data una funzione f e date le coppie di punti ( xi , f ( xi )), i =
0, 1, . . . , n, si pu costruire il polinomio che interpola queste n + 1
coppie di punti. Preso un generico punto x compreso nellintervallo individuato dalle ascisse di interpolazione, qual la formula
dellerrore che si commette sostituendo a f ( x ) il valore del polinomio valutato in x? Quali sono le ipotesi che devono valere perch
valga questa formula dellerrore?

101

102

annamaria mazzia

6. Spiegare come si costruisce la tabella delle differenze divise di


Newton e a cosa serve.
7. Quali sono i vantaggi dellapproccio delle differenze divise nel
costruire il polinomio di interpolazione?
8. Che relazione c tra differenze divise e derivate di una funzione?
9. Lapproccio delle differenze divise di Newton serve anche se si
vogliono interpolare non sono i valori di una certa funzione f ma
anche valori delle sue derivate. Spiegare con un esempio come si
deve procedere e per quale motivo.
10. Spiegare il fenomeno di Runge nellinterpolazione polinomiale.
11. Ci possono essere casi in cui la matrice di Vandermonde molto
malcondizionata. In questo caso, tutti gli approcci per arrivare allo
stesso polinomio di interpolazione vanno bene o no? E perch?
12. Che differenza c tra interpolazione polinomiale e interpolazione
polinomiale a tratti?
13. Spiegare come si arriva a costruire la funzione di interpolazione
lineare a tratti.
14. Spiegare cosa una spline e quali sono le condizioni che vanno
imposte per ottenere i coefficienti delle spline.
15. Quanti tipi di spline abbiamo?
16. Come si pu ottenere una curva parametrica?

7 Approssimazione
7.1

I numeri governano il mondo.


Platone

Perch approssimare dati?

La legge di Hooke stabilisce che lallungamento subito da una


molla, costruita con materiale uniforme, direttamente proporzionale
alla forza applicata: F ( x ) = kx dove k la costante di proporzionalit,
detta costante elastica, e x rappresenta lallungamento della molla.
Supponiamo di voler determinare k per una molla che, quando a
riposo, esercita una forza di 1.4724811N. Se applichiamo una forza
pari a 2.418165N si misura un allungamento pari a 0.042m. Siano
effettuate diverse misure, ricavando i dati mostrati in Tabella.
x
F

0.00000
1.472481

0.04200
2.418165

0.08000
3.363849

0.11800
4.309533

0.15600
5.255217

I dati raccolti non giacciono esattamente su una linea retta.


Per approssimare la costante elastica k, potremmo prendere una
qualunque coppia di dati e fare il rapporto tra la forza e lallungamento. In questo modo, tuttavia, non terremmo conto di tutte le
misure effettuate. pi ragionevole trovare la linea retta che meglio
approssima tutti i dati sperimentali e utilizzarla per approssimare
il valore di k. Questo tipo di approssimazione sar largomento di
questo Capitolo.
A differenza dellinterpolazione, in cui si cerca una funzione che
passi esattamente per i dati assegnati, nellapprossimazione si cerca
una funzione (pi semplice di quella data, se vi una funzione di
partenza) che approssimi al meglio i dati assegnati, senza passare
esattamente per questi.
Alcuni dei motivi che spingono a cercare una funzione di approssimazione piuttosto che di interpolazione sono questi:

G
G

i dati a disposizione sono affetti da errore;

siamo interessati a vedere landamento dei dati su lunga scala, in


una visione globale

vogliamo che la funzione dipenda da pochi parametri, sebbene


questi siano determinati considerando tutti i dati a disposizione.
Nel seguito studieremo lapprossimazione ai minimi quadrati.

Tabella 7.1: Dati sperimentali per la legge di


Hooke

Figura 7.1:
sperimentali

Legge di Hooke:

i dati

Se si hanno a disposizione n = 100 dati, anche molto accurati, una funzione interpolante pu dare una buona idea localmente, mentre una funzione approssimante data
da una retta fornisce una migliore idea del
comportamento su lunga scala dei dati.

104

7.2

annamaria mazzia

Retta di regressione lineare

Supponiamo di avere i 10 dati sperimentali della Tabella 7.2 ( abbiamo


quindi le coppie di dati ( xi , yi ) con i = 0, . . . , n, dove n = 9).
xi
yi

1
1.2

2
2.3

3
4.5

4
5.1

5
7

6
8.5

7
10.2

8
13.1

9
12.5

10
16.5

Si presti sempre attenzione alla numerazione


dei dati: le coppie dei dati, nellesempio, sono
10. Se partiamo a numerare i dati dallindice
0, il valore finale dellindice sar n = 9, in
modo che n + 1 = 10.

Tabella 7.2: Dati sperimentali

La Figura 7.2 (a sinistra) mostra il grafico delle coppie di punti:


appare evidente che la relazione tra x e y di tipo lineare. Il motivo
per cui i dati non sono esattamente su una retta dovuto ad errori
nei dati. Non ha senso, quindi, cercare una funzione che passi esattamente per i dati assegnati (come accade nellinterpolazione), perch
una funzione del genere introdurrebbe oscillazioni prive di significato
fisico: lo vediamo andando a costruire il polinomio di interpolazione
di grado 9 che passa esattamente per i dati e che vediamo in Figura 7.2
(a destra).
Figura 7.2: Dati sperimentali (a sinistra) della
Tabella 7.2 e polinomio di interpolazione (a
destra).

Cerchiamo allora una retta (funzione lineare, poich abbiamo visto


che i dati hanno una relazione di tipo lineare) che meglio approssima
i dati senza dover passare esattamente per essi. Sia p1 ( x ) = a0 + a1 x
la retta che andiamo cercando (dobbiamo quindi capire come trovare
i due coefficienti a0 e a1 ). Allora p1 ( xi ) = a0 + a1 xi , per i = 0, 1, . . . , n
rappresenta il valore sulla retta che deve approssimare il valore yi dato
dal problema. Per ogni dato sperimentale, per i = 0, 1, . . . , n, possiamo misurare lo scarto che scaturisce dallapprossimare yi mediante
a0 + a1 xi . Nellapproccio ai minimi quadrati, si cerca di minimizzare
la somma dei quadrati degli scarti, cio la somma dei quadrati delle
differenze tra i valori assegnati yi e i valori corrispondenti p1 ( xi ) sulla
retta. Introduciamo, quindi la funzione che dipende dai coefficienti
incogniti a0 e a1 .
n

S ( a0 , a1 ) =

[(a0 + a1 xi ) yi ]2

i =0

Per minimizzare questa funzione, occorre porre le derivate parziali


della S rispetto ad a0 e a1 uguali a zero. Si pone dunque

In questo caso, lo scarto sul dato i-simo rappresenta la differenza tra il valore dato yi e il
valore approssimato dal polinomio, a0 + a1 xi ,
vale a dire yi ( a0 + a1 xi ).

Per funzioni f ( x ) di una variabile reale, i punti di massimo o minimo si trovano tra i punti
critici della f , per i quali f 0 ( x ) = 0, studiando il segno della f 00 . Analogo procedimento
si segue per funzioni di due variabili. Per la
funzione S( a0 , a1 ) che stiamo studiando, si
pu provare che i valori ( a0 , a1 ) che annullano le derivate parziali della S rappresentano
i valori che minimizzano la S stessa. Questo argomento viene approfondito nei corsi di
Analisi Matematica.

appunti di calcolo numerico

0=

S( a0 , a1 )

=
a0
a0

S( a0 , a1 )

=
0=
a1
a1

i =0
n

i =0
n

[(a0 + a1 xi ) yi ]2 = 2 [(a0 + a1 xi ) yi ]
[(a0 + a1 xi ) yi ]

i =0

= 2 [( a0 + a1 xi ) yi ] xi
i =0

Queste equazioni si semplificano nel sistema delle cosiddette equazioni normali:

( n + 1) a + a n x = n y
0
1 i =0 i
i =0 i
a0 n x i + a1 n x 2 = n x i y i
i =0

i =0

i =0

105

Data una funzione f ( x, y) che dipende da


due variabili, il simbolo

f
rappresenta la
x

derivata parziale della f rispetto alla variabile


x, che altro non che la derivata della funzione g( x ) = f ( x, y) considerando y come
una costante. Viceversa, con il simbolo

f
si
y

indica la derivata parziale della f rispetto alla


variabile y, che, per definizione, la derivata
della funzione h(y) = f ( x, y), dove ora x
considerata costante. Largomento viene
trattato nei dettagli in Analisi Matematica 2.

Introducendo la notazione A12 = in=0 xi , A22 = in=0 xi2 , b1 =


in=0 yi e b2 = in=0 xi yi e osservando che la matrice del sistema
simmetrica (A12 = A21 ), la soluzione data da:
a0 =

A22 b1 A12 b2
(n + 1) A22 A212

a1 =

(n + 1)b2 A12 b1
(n + 1) A22 A212

Nellesempio proposto, per calcolare la retta di approssimazione


ai minimi quadrati, dobbiamo calcolare i coefficienti delle equazioni
normali. In Tabella 7.3 poniamo i valori che servono per risolvere il
sistema: la soluzione a0 = 0.87333333 e a1 = 1.62969697. La retta
rappresentata in Figura 7.3.
La retta che abbiamo appena costruito la retta che minimizza gli
scarti verticali, supponendo affetti da errore le ordinate delle coppie di
punti a disposizione. Essa prende pure il nome di retta di regressione
lineare sugli scarti verticali.
Osserviamo che il baricentro dei punti assegnati giace sulla retta
ai minimi quadrati, in quanto considerando la prima equazione del
sistema si ha, per X = in=0 xi /(n + 1) e Y = in=0 yi /(n + 1) (le
coordinate del baricentro dei punti assegnati):

xi

yi

xi2

xi yi

1
2
3
4
5
6
7
8
9
10

1.2
2.3
4.5
5.1
7
8.5
10.2
13.1
12.5
16.5

1
4
9
16
25
36
49
64
81
100

1.2
4.6
13.5
20.4
35
51
71.4
104.8
112.5
165

A12 = 55

b1 = 80.9

A22 = 385

b2 = 579.4

Tabella 7.3: Tabella per il calcolo della retta


di approssimazione ai minimi quadrati

a0 + a1 X = Y
Se invece sono affetti da errore le ascisse delle coppie di punti, si
pu cercare la retta che minimizza gli scarti orizzontali, detta anche
retta di regressione lineare sugli scarti orizzontali, (basta scambiare
il ruolo delle x con quello delle y per ricavare, con lo stesso procedimento, la retta p1 (y) = b0 + b1 y). Il baricentro dei punti assegnati
giace anche su questa retta, da cui possiamo concludere che esso
il punto di intersezione delle due rette che minimizzano gli scarti
verticali e orizzontali.

7.3

Approssimazione polinomiale ai minimi quadrati

In generale, avendo a disposizione n + 1 coppie di punti, il problema


di approssimazione si pu ricondurre alla ricerca di un polinomio di
approssimazione di grado m, pm ( x ) = a0 + a1 x + a2 x2 + . . . + am x m
con m < n. Quando n = m il polinomio dapprossimazione coincide
con quello dinterpolazione.

Figura 7.3: Retta di approssimazione sugli


scarti verticali.

106

annamaria mazzia

La funzione da minimizzare
i2
n h
S( a0 , a1 , . . . , am ) = ( a0 + a1 xi + a2 xi2 + . . . + am xim ) yi
i =0

La procedura seguita per la retta viene generalizzata. Questa volta


bisogna porre uguali a zero le m + 1 derivate parziali della S rispetto
ai coefficienti del polinomio pm .
S
=0
a j

j = 0, 1, . . . , m

Ricaviamo, quindi
n

2 ( a0 + a1 xi + . . . + am xim yi ) xi = 0
j

per j = 0, 1, . . . , m

i =0

In forma estesa possiamo scrivere


n

a0

x i + a1 x i
j

i =0

j +1

i =0

+ . . . + a m xi

j+m

i =0

xi yi
j

per j = 0, 1, . . . , m

i =0

Poich queste equazioni si hanno per j = 0, 1 . . . , m, si ha da


risolvere un sistema, che, scritto in forma matriciale, :
A T Aa = A T b
dove A una matrice rettangolare (n + 1) (m + 1), data da

1 x0 x02 . . . x0m

1 x1 x12 . . . x1m
A=
..
..
..
..

.
.
.
.
1

xn

xn2

...

xnm

Le equazioni del sistema sono dette equazioni normali. Si pu


provare che la matrice Q = A T A simmetrica, definita positiva ed
non singolare, quindi il sistema ammette soluzione.

7.4

Approssimazioni di tipo esponenziale e potenza

Pu capitare che i dati sperimentali abbiano un andamento di tipo


esponenziale o ricordino una funzione potenza della variabile x. Allora si pu richiedere che la funzione approssimante abbia una delle
forme seguenti (a seconda della rappresentazione, si ha un diverso
modello):
y( x ) = aebx
y( x ) = ax

modello esponenziale
modello potenza

con a e b opportune costanti. Per ottenere i valori incogniti di a e b si


passa ai logaritmi, trasformando il modello di partenza nellequazione
di una retta i cui coefficienti possono essere ricavati applicando la
procedura di minimizzazione ai minimi quadrati. Da questi, si ritorna
poi ai valori a e b della funzione di partenza. Vediamo nei dettagli
come fare.

Le definizioni di matrice simmetrica e matrice


definita positiva sono date nel Capitolo 8.

appunti di calcolo numerico

Nel caso del modello esponenziale, passando ai logaritmi (in base


naturale) si ha:
ln (y) = ln ( a) + bx
Ponendo X = x, Y = ln (y), a0 = ln ( a) e a1 = b, si ha unequazione
del tipo Y = a0 + a1 X.
Quindi, dalle coppie di dati ( xi , yi ) i = 0, 1, . . . , n, si deve passare
alle coppie ( Xi = xi , Yi = ln (yi )) e su queste coppie si costruisce la
retta di approssimazione ai minimi quadrati con la procedura che
abbiamo studiato in Sezione 10.3. Una volta ricavati i coefficienti
a0 e a1 , si ha a = e a0 e b = a1 .

Nel caso del modello potenza, passando ai logaritmi (qualunque


sia la base usata, il risultato non cambia) si ha:
log (y) = log ( a) + b log ( x )
Ponendo X = log ( x ), Y = log (y), a0 = log ( a) e a1 = b, si ha
unequazione del tipo Y = a0 + a1 X.

Quindi, dalle coppie di dati ( xi , yi ) i = 0, 1, . . . , n, si deve passare


alle coppie ( Xi = log ( xi ), Yi = log (yi )) e su queste coppie si
costruisce la retta di approssimazione ai minimi quadrati. Una
volta ricavati i coefficienti a0 e a1 , si ha b = a1 mentre, con gli
opportuni passaggi, si trova il valore di a.

7.5

Esercizi

Esercizio 7.5.1 Sia data la tabella seguente:


xi
f ( xi )

-1
9

0
0

2
0

3
15

4
84

(a) Trovare la retta ai minimi quadrati che minimizza la somma dei


quadrati degli scarti verticali.
(b) Trovare la retta ai minimi quadrati che minimizza la somma dei
quadrati degli scarti orizzontali.
(c) Calcolare il punto di intersezione delle due rette e dire di che punto
si tratta.
Svolgimento
(a) Il sistema da risolvere per ottenere la retta di approssimazione ai
minimi quadrati :

( n + 1) a + n x a = n y
0
i =0 i 1
i =0 i
n x i a0 + n x 2 a1 = n x i y i
i =0

i =0

i =0

107

108

annamaria mazzia

dove n + 1 = 5. Poich 4i=0 xi = 8, 4i=0 xi2 = 30, 4i=0 yi = 108 e


4i=0 xi yi = 372, si ha il sistema

5a + 8a = 108
0
1
8a0 + 30a1 = 372
La soluzione a0 = 3.069767442, a1 = 11.581395349. La retta ai minimi quadrati che minimizza gli scarti verticali : y =
3.069767442 + 11.581395349x.
(b) Ricaviamo la retta di approssimazione che minimizza gli scarti
orizzontali.

( n + 1) b + n y b = n x
0
i =0 i 1
i =0 i
n yi b0 + n y2 b1 = n yi xi
i =0

i =0 i

i =0

dove n + 1 = 5. Poich 4i=0 yi = 108, 4i=0 y2i = 7362, 4i=0 xi = 8


e 4i=0 xi yi = 372, si ha il sistema

5b + 108b = 8
0
1
108b0 + 7362b1 = 372
La soluzione b0 = 0.744452398, b1 = 0.03960868528. La retta
ai minimi quadrati che minimizza gli scarti orizzontali : x =
0.744452398 + 0.03960868528y.
(c) Troviamo il punto di intersezione delle due rette:

y = 3.069767442 + 11.581395349x
x = 0.744452398 + 0.03960868528y
Ricaviamo x = 1.6 e y = 21.6
Se calcoliamo il baricentro dei punti assegnati, troviamo
X=

1 + 2 + 3 + 4
4i=0 xi
=
= 1.6
5
5

Y=

9 + 15 + 84
4i=0 yi
=
) = 21.6
5
5

Il punto di intersezione delle due rette il baricentro dei punti


assegnati.

Esercizio 7.5.2 Sono assegnati i seguenti dati sperimentali


xi
yi

4.0
102.56

4.2
113.18

4.5
131.2

4.7
142

5.1
168

5.5
196.2

5.9
225

6.3
256.8

6.8
299.51

Costruire la curva di approssimazione ai minimi quadrati della forma ax b .

Svolgimento
Per trovare la curva di approssimazione del tipo y = ax b , dobbiamo
prima passare ai logaritmi:
log(y) = log( ax b ) = log( a) + b log( x )

7.1
325.6

appunti di calcolo numerico

In questo modo ci riconduciamo ad una retta di approssimazione ai


minimi quadrati sui logaritmi dei punti assegnati. Consideriamo il
logaritmo naturale (ma i risultati non cambiano con i logaritmi in
unaltra base).
I dati su cui lavorare sono dunque:
log( xi )
1.386294361
1.435084525
1.504077397
1.547562509
3.931825633
1.704748092
1.774952351
1.840549633
1.916922612
1.960094784

log(yi )
4.630447993
4.728979472
4.876722876
4.955827058
5.123963980
5.279134547
5.416100402
5.548297572
5.702147806
5.785669634

Calcoliamo la retta di approssimazione ai minimi quadrati, ponendo Xi = log( xi ) e Yi = log(yi ). Il sistema da risolvere

( n + 1) a + n X a = n Y
0
i =0 i 1
i =0 i
n Xi a0 + n X 2 a1 = n Xi Yi
i =0

i =0

i =0

dove n + 1 = 10.
Si ha in=0 Xi = 16.6995268, in=0 Xi2 = 28.2537116, in=0 Yi =
52.0472913, in=0 Xi Yi = 87.6541085
Il sistema da risolvere diventa

10a + 16.6995268a = 52.0472913


0
1
16.6995268a0 + 28.2537116a1 = 87.6541085
che ha come soluzione a0 = 1.84197978 e a1 = 2.013679425.
Ora a0 = log( a) da cui a = e a0 = 6.30901637 Invece a1 = b. Il
modello y = ax b diventa quindi y = 6.30901637x2.013679425 .

Esercizio 7.5.3 Sia data la tabella seguente di dati sperimentali


xi
f ( xi )

0.2
15.02

1
15.5

2.4
40.98

3.4
78.38

Trovare la curva di approssimazione ai minimi quadrati y = cx d che


minimizza gli scarti verticali.

Svolgimento
Per la curva di approssimazione y = cx d si passa ai logaritmi, in
modo da ricondursi allequazione della retta log y = log c + d log x.
Si pone poi Y = log y e X = log x; a0 = log c e a1 = d.
Considerando i logaritmi naturali si ha
Xi = [1.609437912434 0.0 0.8754687373539 1.223775431622]

109

110

annamaria mazzia

Yi = [2.70938264633 2.7408400239 3.7130841428 4.36156879277]


Il sistema da risolvere

4a + 0.48980625654a = 13.52487560584
0
1
0.48980625654a0 + 4.854362211106a1 = 4.22768666781
Risolvendo si trova a0 = 3.3155400568494 da cui c = 27.537261656285
e a1 = d = 0.53636590986. La curva y = 27.537261656285x0.53636590986 .

7.6

Domande di riepilogo

1. Che differenza si ha tra interpolazione e approssimazione di dati?


2. Se si vogliono approssimare n + 1 coppie di dati attraverso una
retta di approssimazione che minimizza gli scarti verticali, va
minimizzata una certa funzione S. Qual questa funzione e come
viene costruita?
3. Quali sono le derivate parziali di questa funzione S e per quale
motivo vengono poste uguali a zero?
4. Qual il sistema di equazioni da risolvere per ricavare i coefficienti
della retta di approssimazione che minimizza gli scarti verticali?
5. Qual il sistema di equazioni da risolvere per ricavare i coefficienti
della retta di approssimazione che minimizza gli scarti orizzontali?
6. Che propriet possiede il baricentro delle coppie di punti che
vengono approssimati tramite una retta di approssimazione?
7. Che procedimento va fatto per ricondursi al caso della retta di
approssimazione se si vogliono approssimare i dati attraverso un
modello esponenziale del tipo y = ae xb ?
8. Che procedimento va fatto per ricondursi al caso della retta di
approssimazione se si vogliono approssimare i dati attraverso un
modello potenza del tipo y = ax b ?
9. Che procedimento va fatto per ricondursi al caso della retta di
approssimazione se si vogliono approssimare i dati attraverso un
modello del tipo y = a + bx m , con m intero maggiore o uguale a 2?

8 Metodi diretti per la soluzione di sistemi lineari

8.1

Un esempio di sistema lineare

Si consideri la capacit C di un conduttore. Dallelettrostatica, sappiamo che vale q = C dove q rappresenta la carica del conduttore e
il suo potenziale elettrostatico, quando il conduttore isolato. Nel
caso in cui il conduttore non sia isolato, la situazione cambia. Supponiamo di avere 4 conduttori in equilibrio elettrostatico allinterno
di una cavit collegata a terra (a terra il potenziale elettrostatico vale
zero). Supponendo di collegare i conduttori 2, 3 e 4 a terra, si ha
2 = 3 = 4 = 0 e 1 6= 0. Il conduttore 1 induce carica sugli altri
conduttori, per cui, per ciascun conduttore vale, rispettivamente:
q1 = C11 1
q2 = C21 1
q3 = C31 1
q4 = C41 1
Si ripete lo stesso discorso supponendo 2 6= 0 e tutti gli altri potenziali nulli. Poi sia 3 6= 0 e gli altri potenziali nulli. Infine 4 6= 0 e
tutti gli altri nulli.
La sovrapposizione dei 4 stati considerati corrisponde alla situazione in cui 1 , 2 , 3 , 4 sono tutti diversi da zero. Si ha perci:
q1 = C11 1 + C12 2 + C13 3 + C14 4
q2 = C21 1 + C22 2 + C23 3 + C24 4
q3 = C31 1 + C32 2 + C33 3 + C34 4
q4 = C41 1 + C42 2 + C43 3 + C44 4
I coefficienti Cii si chiamano coefficienti di capacit, mentre i coefficienti Cij , con j 6= i si chiamano coefficienti di induzione.
Si pu presentare il problema inverso: note le cariche qi , si vuole
determinare il valore dei i . Si deve quindi risolvere un sistema
lineare di 4 equazioni in 4 incognite.

Allinizio e alla fine abbiamo il mistero. Potremmo dire che abbiamo il disegno di Dio.
A questo mistero la matematica si avvicina,
senza penetrarlo.
Ennio De Giorgi

112

annamaria mazzia

In questo Capitolo studieremo metodi diretti per la soluzione di


sistemi lineari del tipo

a11 x1 + a12 x2 + . . . + a1n xn

a21 x1 + a22 x2 + . . . + a2n xn

a31 x1 + a32 x2 + . . . + a3n xn

..

an1 x1 + an2 x2 + . . . + ann xn

= b1
= b2
= b3
.
= ..

(8.1)

= bn

dove aij , per i, j = 1, 2, . . . , n e bi , per i = 1, 2, . . . , n sono assegnati


e le incognite da determinare sono x1 , x2 , . . . , xn . I metodi diretti
sono metodi che risolvono il problema in un numero fissato di passi,
introducendo un errore dovuto solo allarrotondamento.

8.2

Elementi di Algebra Lineare

Sia dato un sistema lineare come in (8.1). Per poterlo semplificare,


possiamo eseguire le seguenti operazioni (trasformazioni elementari):

Li-sima equazione del sistema pu essere moltiplicata per una


qualunque costante 6= 0 e lequazione risultante pu essere usata
al posto di quella di partenza: la soluzione del sistema non cambia.

Lequazione j-sima, moltiplicata per una qualunque costante


6= 0 e sommata allequazione i-sima, pu essere usata al posto
dellequazione i-sima di partenza: la soluzione del sistema non
cambia.

Le equazioni i-sima e j-sima possono essere scambiate: la soluzione del sistema non cambia.

In questa maniera, un sistema lineare pu essere trasformato in uno


di pi facile soluzione, come vedremo nellalgoritmo di eliminazione
di Gauss.
Definizione 8.2.1 Si definisce matrice n m una griglia rettangolare (o
array) di elementi disposti su n righe e m colonne.
Generalmente, una matrice si denota con una lettera maiuscola,
per esempio A, mentre i suoi valori si indicano con la corrispondente
lettera minuscola e i pedici che si riferiscono alla riga e colonna in cui
si trova quel valore, per esempio aij si riferisce allelemento di riga i e
colonna j della matrice A.

a11
a
21
 
a
A = aij =
31
..
.
an1

a12
a22
a32
..
.
an2

a13
a23
a33
..
.
an3

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

a1n
a2n

a3n

..
.
ann

Poich le operazioni da fare coinvolgono i


coefficienti aij e bi , conviene scrivere il sistema di equazioni lineari utilizzando una forma
compatta mediante matrici e vettori.

appunti di calcolo numerico

Per indicare che una matrice A ha n righe e m colonne, diremo che


A ha dimensione n m. Quando lavoreremo con matrici quadrate
di n righe e n colonne, parleremo di dimensione n della matrice per
indicare che il numero di righe uguale al numero di colonne e vale
n.
I vettori si possono vedere come un caso particolare delle matrici.
Si parla di vettore riga se ci riferiamo a una matrice 1 n e si parla di
vettore colonna se ci si riferisce a una matrice n 1.
Per indicare un vettore colonna e un vettore riga si usa, rispettivamente, la notazione

x1
x
2



x3
x=
x
=
x
x
x
.
.
.
x
n
2
3
1

..
.
xn
Vediamo, nel seguito, alcune importanti definizioni e propriet
delle matrici.

Due matrici A e B, di dimensione n m, sono uguali se hanno lo


stesso numero di righe e di colonne, e, inoltre, vale, aij = bij per
i, = 1, 2, . . . , n e j = 1, 2, . . . , m.

Date due matrici A e B, entrambe n m, si definisce la matrice


somma di A e B la matrice n m A + B i cui elementi sono dati
da aij + bij , per i, = 1, 2, . . . , n e j = 1, 2, . . . , m.

Se A una matrice n m e un numero reale, la moltiplicazione


scalare di per A, denotata con A, una matrice n m i cui
elementi sono aij per i, = 1, 2, . . . , n e j = 1, 2, . . . , m.

Indichiamo con O la matrice cosiddetta nulla, i cui elementi sono


tutti uguali a zero.

Data la matrice A, n m, indichiamo con A la matrice i cui


elementi sono aij .

Teorema 8.2.1 Date A, B e C tre matrici n m, e e due numeri reali,


valgono le seguenti propriet:

GA + B = B + A
GA + O = O + A = A
G( A + B) = A + B
G(A) = () A

G( A + B ) + C = A + ( B + C )
G A + ( A) = A + A = O
G( + ) A = A + A
G1A = A

113

Esempio:


A=

2
3

10
1

5
0

una matrice 2 3 con elementi a11 = 2,


a12 = 10, a13 = 5, a21 = 3, a22 = 1 e
a23 = 0.

114

annamaria mazzia

Date due matrici A di dimensione n m e B di dimensione m p,


la matrice prodotto di A e B, denotata con C = AB, una matrice
i cui elementi cij sono dati da:
m

cij =

aik bkj = ai1 b1j + ai2 b2j + . . . + aim bmj

k =1

per i = 1, 2, . . . , n e j = 1, 2, . . . , p.

Data una matrice A di dimensione n e un vettore colonna x di


lunghezza n, si definisce il vettore y = Ax prodotto della matrice
A per il vettore x, il vettore le cui componenti sono date da
n

yi =

aij x j

per i = 2, . . . , n

j =1

Dati due vettori x e y si definisce prodotto scalare x T y = in=1 xi yi

G
G

In generale, AB 6= BA.

Una matrice D si dice diagonale se quadrata con dij = 0 per


i 6= j. Gli elementi diversi da zero si trovano quindi sulla diagonale
(detta diagonale principale) che si pu tracciare partendo dallelemento in alto a sinistra (di posto 11) e arrivando allelemento in
basso a destra (di posto nn).

Si chiama matrice identit e si indica con I, una matrice diagonale


i cui elementi diagonali valgono 1.

Una matrice si dice tridiagonale se gli elementi non nulli si


trovano sulla diagonale principale e sugli elementi delle diagonali
che si trovano sopra e sotto la diagonale principale.

Una matrice si dice triangolare se ha tutti gli elementi nulli


ad eccezione di quelli che si trovano tutti sopra (o tutti sotto) la
diagonale principale.

Esempio:

1
0
D=
0
0

0
2
0
0

0
0

0
1

0
0
5
0

Esempio:

1
0
I=
0
0

0
1
0
0

0
0
1
0

0
0

0
1

Esempio di matrice tridiagonale:

2
1

A=
0
0
0

1
2
1
0
0

0
1
2
1
0

0
0
1
2
1

Si definisce matrice triangolare superiore U (U sta per upper) di


dimensione n, la matrice per la quale, per j = 1, 2, . . . , n, si ha
uij = 0 per i = j + 1, j + 2, . . . , n
Si definisce matrice triangolare inferiore L (L sta per lower) di
dimensione n, la matrice per la quale, per i = 1, 2, . . . , n, si ha
lij = 0 per j = i + 1, i + 2, . . . , n
Teorema 8.2.2 Date A matrice n m, B matrice m s, C matrice s p,
D matrice m s, Im e Is le matrici identit, rispettivamente di dimensione
m e s, e e due numeri reali, valgono le seguenti propriet:

G A(BC) = ( AB)C G A(B + D) = AB + AD


G I B = B BI = B G( AB) = (A)B = A(B).
m

Esempi:

1
U = 0
0

2
3.2
0

1
L= 2
3.4

5.3
4
10
0
21
5.7

0
0
4

0
0

1
2

appunti di calcolo numerico

115

A questo punto, il sistema lineare (8.1) pu essere scritto in forma


matriciale come
Ax = b
Collegata alla soluzione di un sistema lineare linversa di una
matrice.
Definizione 8.2.2 Data una matrice A di dimensione n, A si dice nonsingolare (o invertibile o regolare) se esiste una matrice, che indichiamo come
A1 di dimensione n tale che
AA1 = A1 A = I
La matrice A1 si chiama matrice inversa della A. Una matrice che non ha
inversa si dice, invece, singolare (o non invertibile).
Teorema 8.2.3 Per ogni matrice A di dimensione n nonsingolare si ha:

G
G
G

A1 unica
A1 nonsigolare e ( A1 )1 = A
Se B non singolare, di dimensione n, allora ( AB)1 = B1 A1

Dato il sistema Ax = b, se A nonsingolare, si ha x = A1 b.


Unaltra importante matrice associata ad unassegnata matrice A
la sua trasposta.
Definizione 8.2.3 La trasposta di una matrice A di dimensione n m
la matrice indicata con A T , di dimensione m n, per la quale la colonna i
della trasposta coincide con la riga i della matrice A di partenza: aijT = a ji .
Legata alla trasposta di una matrice la seguente definizione.

Esempio:

Definizione 8.2.4 Una matrice quadrata si dice simmetrica se A = A T .

A=

1
2

2
5

3
6

1
A = 2
3

2
5
6

4
2
6

Esempio:

Teorema 8.2.4 Valgono le seguenti propriet (per matrici per cui possibile eseguire le seguenti operazioni):

G( A )
G( AB)

T T

=A
T = BT AT

G( A + B ) = A + B
GSe esiste A allora ( A
T

1 ) T

= ( A T ) 1

Il determinante di una matrice permette di stabilire esistenza e


unicit della soluzione nei sistemi lineari. Data una matrice quadrata
A, il suo determinante si indica mediante la notazione det( A) o | A|.

G
G

Se A = [ a] una matrice 1 1, det( A) = a.

Se A una matrice di dimensione n, si definisce minore Mij


il determinante della sottomatrice di dimensione n 1 ottenuta
cancellando la i-sima riga e la j-sima colonna da A.

1
A = 4
8

4
2
6

8
6
5

1
A = 4
8
T

8
6
5

116

annamaria mazzia

Il determinante di A dato dalla formula


n

det( A) =

(1)i+ j aij Mij

(fissato un qualunque i = 1, 2, . . . , n)

j =1
n

det( A) =

(1)i+ j aij Mij

(fissato un qualunque j = 1, 2, . . . , n)

i =1

Il calcolo del determinante di una matrice di dimensione n richiede O(n!) moltiplicazioni. Quindi, anche per valori piccoli di n, le
operazioni da fare diventanto proibitive.
Teorema 8.2.5 Sia assegnata A una matrice quadrata di dimensione n.

G
G
G

Se una riga o una colonna di A ha elementi tutti nulli, det( A) = 0.


Se A ha due righe o due colonne con gli stessi elementi, det( A) = 0.

Denotata con A la matrice ottenuta scambiando due righe di A, si ha


det( A ) = det( A).

Denotata con A la matrice ottenuta da A moltiplicando una sua riga


per un numero reale , si ha det( A ) = det( A).

Denotata con A la matrice ottenuta da A sommando una sua riga per


unaltra che stata moltiplicata per , si ha det( A ) = det( A).

G
G
G

Se B unaltra matrice di dimensione n, si ha det( AB) = det( A)det( B)


det( A T ) = det( A)
Se esiste A1 , si ha det( A1 ) =

1
det( A)

Se A una matrice triangolare superiore o triangolare inferiore o diagonale, allora det( A) = in=1 aii

8.3

Metodo di eliminazione di Gauss

Ritorniamo al sistema di equazioni (8.1), che possiamo scrivere in


forma matriciale come Ax = b.
Nel metodo di eliminazione di Gauss il sistema lineare di partenza
viene trasformato in uno equivalente di pi facile soluzione in quanto
la matrice del nuovo sistema ha forma triangolare (superiore o inferiore) e pu essere risolto facilmente mediante sostituzione (allindietro
o in avanti).
Vediamo nel dettaglio come si risolve un sistema lineare di forma
triangolare, utilizzando queste tecniche.

Carl Friedrich Gauss fu un matematico e fisico tedesco (1777-1855) che ha dato il suo
contribuito in maniera significativa in numerosi campi: teoria dei numeri, analisi, geometria
differenziale, geodesia, magnetismo, astronomia, ottica. Al pari di Eulero, Newton e
Archimede considerato uno dei pi grandi
matematici della storia.
In suo onore stato dato il suo nome a
una nave di ricerca tedesca, a una montagna
(Gaussberg) in Antartide, a un cratere sulla luna, e allunit di misura della densit di
flusso magnetico o di induzione magnetica.

appunti di calcolo numerico

8.3.1

Sostituzione allindietro e in avanti

La matrice A sia nonsingolare e triangolare superiore, cio

A=

a11

a12
a22

...
..
.
..
.

a1n

a2n

..

.
ann

La soluzione del sistema Ax = b pu dunque procedere dal basso


verso lalto, a partire dallultima riga. Le equazioni, infatti, sono

a11 x1 + a12 x2 + a13 x3 + . . . . . . + a1n xn

a22 x2 + a23 x3 + . . . . . . + a2n xn

a33 x3 + . . . . . . + a3n xn
..

a n 1 n 1 x n 1 + a n 1 n x n

ann xn

= b1
= b2
= b2
.
= ..
= bn 1
= bn

Lultima riga si legge come ann xn = bn . Quindi possiamo ricavare


xn = bn /ann .
Noto il valore di xn , possiamo ricavare xn1 dalla riga n 1 del
1
sistema ottenendo xn1 =
(b
a n 1 n x n ).
a n 1 n 1 n 1
Si procede a ritroso in questo modo arrivando fino alla prima
equazione che ci permette di calcolare il valore di x1 . Osserviamo che
tutte le divisioni per i coefficienti aii sono possibili in quanto stiamo
supponendo A non singolare e, poich, in questo caso, det ( A) =
in=1 aii 6= 0, necessariamente ciascun aii 6= 0.
Possiamo dunque scrivere lalgoritmo di sostituzione allindietro:
Per i = n fino a i = 1, procedendo allindietro con passo 1
xi =

bi nj=i+1 aij x j
aii

Un analogo algoritmo si ricava quando la matrice triangolare


inferiore. In tal caso, si parte dalla prima equazione per ricavare x1 e
poi si va avanti nellequazione successiva.
Si ha lalgoritmo di sostituzione in avanti:
Per i = 1 fino a i = n, procedendo in avanti con passo 1
xi =

1
bi ij
=1 aij x j

aii

117

118

8.3.2

annamaria mazzia

Eliminazione di Gauss: esempio particolare

Il metodo di eliminazione di Gauss trasforma il sistema di partenza


in uno ad esso equivalente ma pi facile da risolvere, perch la
matrice del sistema di forma triangolare superiore, in modo da
poter applicare il metodo di sostituzione allindietro.
Per capire come si applica questo metodo consideriamo un semplice esempio di sistema di 3 equazioni in 3 incognite, Ax = b
dove


2 1 2
10


A = 4 1 2
b = 12
1 2 5
20
Le equazioni del sistema sono, dunque,

2x1 + x2 + 2x3 = 10
4x1 + x2 + 2x3 = 12

x1 + 2x2 + 5x3 = 20

Al primo passo del metodo, cerchiamo di annullare tutti i coefficienti dellincognita x1 nella seconda e terza equazione.
Dividiamo il coefficiente 4 che moltiplica x1 nella seconda equazione con il coefficiente 2 che moltiplica x1 nella prima equa4
zione. Otteniamo il valore = 2. Adesso moltiplichiamo per
2
questo valore (2) la prima equazione, ricavando
2 (2x1 + x2 + 2x3 = 10) = 4x1 + 2x2 + 4x3 = 20
Se ora facciamo la sottrazione tra la seconda equazione del
sistema e questa che abbiamo ricavato otteniamo
4x1 + x2 + 2x3 = 12

4x1 + 2x2 + 4x3 = 20

x2 2x3 = 8
Sostituiamo questa equazione alla seconda del sistema (il sistema rimane equivalente), ricavando

2x1 + x2 + 2x3 = 10

x2 2x3 = 8

x1 + 2x2 + 5x3 = 20

Abbiamo eliminato, in questo modo, il coefficiente di x1 nella


seconda equazione.
Alla stessa maniera, dividiamo il coefficiente di x1 nella terza
equazione (che vale 1) con il coefficiente di x1 nella prima equa1
1
zione: abbiamo . Moltiplichiamo la prima equazione per
2
2

appunti di calcolo numerico

e poi facciamo la sottrazione tra la terza equazione e la prima


1
moltiplicata per :
2
x1 + 2x2 + 5x3 = 20

x1 + 2x2 + 5x3 = 20

1
1
(2x1 + x2 + 2x3 = 10) x1 + x2 + x3 = 5
2
2

3
x2 + 4x3 = 15
2
Sostituiamo questa equazione alla terza del sistema.
A questo punto il sistema

2x + x2 + 2x3 = 10

1
x2 2x3 = 8

3 x2 + 4x3 = 15
2

Nella seconda e terza equazione non c pi lincognita x1 .

Per poter arrivare ad un sistema di equazioni triangolare inferiore,


dobbiamo eliminare il coefficiente di x2 nella terza equazione del
sistema. Ripetiamo il ragionamento appena fatto, lavorando sulla
seconda e terza equazione.
3
Consideriamo il coefficiente di x2 della terza equazione ( ) e
2
lo dividiamo per il coefficiente di x2 della seconda equazione (
che vale 1). Moltiplichiamo la seconda equazione per questo
3
coefficiente (cio per ) e poi sottraiamo la terza equazione
2
3
dalla seconda moltiplicata per :
2
3
x2 + 4x3 = 15
2

3
x2 + 4x3 = 15
2
3
3
( x2 2x3 = 8) x2 + 3x3 = 12
2
2

x3 = 3

Sostituiamo questa equazione alla terza del sistema, ricavando


il sistema equivalente

2x1 + x2 + 2x3 = 10

x2 2x3 = 8

x3 = 3

Con tutte le trasformazioni effettuate, abbiamo trasformato il sistema di partenza in uno equivalente, che si pu risolvere facilmente
mediante sostituzioni allindietro. Dallultima equazione abbiamo
x3 = 3. Sostituendo questo valore nella seconda equazione otteniamo
x2 6 = 8 da cui x2 = 2. Infine, sostituendo i valori di x3 e x2
nella prima equazione abbiamo 2x1 + 2 + 6 = 10 da cui x1 = 1.

119

120

8.3.3

annamaria mazzia

Eliminazione di Gauss: caso generale

Vediamo ora il caso generale, in cui il sistema di n equazioni ha la


matrice dei coefficienti A piena (o densa, cio abbia quasi tutti gli
elementi non nulli). Applichiamo trasformazioni elementari per riga
in modo da ridurre il sistema di partenza in uno equivalente di forma
triangolare superiore, che potremo risolvere mediante sostituzioni
allindietro.
La soluzione del problema Ax = b, infatti, non cambia se moltiplichiamo una riga per una costante, se sottraiamo il multiplo di una
riga da unaltra riga o se facciamo scambi di righe, come abbiamo
detto allinizio della Sezione 8.2.
Supponiamo, per il momento, che tutti gli elementi della diagonale
principale di A siano non nulli.

Al primo passo vogliamo eliminare gli elementi della prima


colonna al di sotto della diagonale principale:
a21
dalla secona11

sottraiamo la prima equazione moltiplicata per


da equazione:

a21 x1 + a22 x2 + a23 x3 + . . . + a2n xn = b2

a21
a21
( a x + a12 x2 + a13 x3 + . . . + a1n xn ) =
b =
a11 11 1
a11 1

( a22

a
a
a
a21
a ) x + ( a23 21 a13 ) x3 + . . . + ( a2n 21 a1n ) xn = b2 21 b1
a11 12 2
a11
a11
a11

sottraiamo la prima equazione moltiplicata per


equazione.

a31
dalla terza
a11

...
sottraiamo la prima equazione moltiplicata per
equazione.

an1
dalla n-sima
a11

Come risultato di questa operazione avremo una nuova matrice


con gli elementi della prima colonna, eccetto quello di posto 11,
tutti uguali a zero.

a11

a12

...

0
..
.

a22
..
.

(1)

...

(1)
an2

...

...

b1
x1
(1)
(1)
a2n x2 b2

.. .. =
.
. . ..
(1)
(1)
xn
ann
bn
a1n

Al secondo passo, consideriamo il sistema ridotto che si ha ignorando la prima equazione del sistema e la prima colonna della
nuova matrice che abbiamo ottenuta (che ha tutti 0 al di sotto
dellelemento diagonale).

appunti di calcolo numerico

121

A questa sottomatrice applichiamo lo stesso procedimento di prima,


sottraendo, quindi, la prima equazione della sottomatrice molti(1)

plicata per

a32

(1)

dalla seconda equazione della sottomatrice, e cos

a22

via.

Dopo questo passo, il sistema sar equivalente a:

a11 a12 . . . . . . a1n x


b
1
1

(1)
(1)
(1)
0 a22
b (1)
a23 . . . a2n

x2
2

..

(
2
)
(
2
)
.
x3 = b3(2)
0
a
.
.
.
a

33
3n
.
..
..
.
.
.

..
..
..
.. . .

...

(1)
(2)
(2)
x
n
bn
0
0
a
... a
nn

n3

Dopo aver applicato questo procedimento n 1 volte, avremo


un sistema triangolare superiore semplice da risolvere utilizzando
lalgoritmo di sostituzione allindietro.


a11 a12 . . . . . .
a1n
b1
x1

(1)
(1)
(1)
b (1)
0 a22
a23 . . .
a2n

x2
2(2)
..

(2)
(2)
.
x
b3
0
a33 . . .
a3n

3 =

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

... ...

( n 1)
( n 1)
x
n
b
n
0
0
...
0 ann

8.4

Strategie di pivoting

(k)

Gli elementi diagonali aii generati ad ogni passo del metodo di


eliminazione sono detti elementi pivotali.
Nel descrivere il metodo di eliminazione di Gauss abbiamo supposto, per semplicit, che tutti gli elementi diagonali fossero diversi da
zero. Ma una matrice pu essere non singolare senza che gli elementi
della diagonale principale siano tutti diversi da zero.
Inoltre, andando avanti nel procedimento di eliminazione, pu
succedere che un elemento pivotale diventi nullo e quindi la corrispondente incognita non pu essere eliminata attraverso quella
equazione nel procedimento di sostituzione allindietro.
C, infine, da considerare il fatto che si possono avere grossi errori
numerici quando un elemento pivotale molto piccolo.
Cosa fare in queste circostanze? In che modo applicare leliminazione di Gauss?
Si hanno le cosiddette strategie di pivoting:

pivoting parziale

Mano mano che si va avanti nelleliminazione, per i = 1, 2, . . . , n 1


a ciascuno stadio si sceglie il pi piccolo intero q tale che
( i 1)

| aqi

( i 1)

| = max | a ji
i jn

e si scambiano le righe i e q.

Si opera, dunque, un controllo sulla colonna


i-sima dalla posizione i fino alla posizione n,
andando a cercare il coefficiente massimo in
modulo.

122

annamaria mazzia

pivoting totale
Nel pivoting totale, invece, la ricerca dellelemento pi grande
in tutta la sottomatrice che si ha considerando le colonne e le righe
rispettivamente a destra e sotto lelemento diagonale i-simo. Si
vanno quindi a cercare i pi piccoli interi q e r tali che
( i 1)

| aqr

( i 1)

| = max | a jk
i k,jn

Il maggiore sforzo computazionale garantisce maggiore accuratezza e stabilit nei risultati, nel senso che gli errori di arrotondamento
non sono cos amplificati come potrebbe succedere senza ladozione
di una tecnica di pivoting.
Esempio Consideriamo il sistema

x1 + x2 + x3 = 1
x1 + 1.0001x2 + 2x3 = 2

x1 + 2x2 + 2x3 = 1

Lesatta soluzione, corretta a 4 cifre decimali, x = (1, 1.0001, 1.0001) T .


Leliminazione di Gauss senza pivoting porta, applicando il primo
passo del metodo, al sistema

x1 + x2 + x3 = 1
0.0001x2 + 1x3 = 1

1x2 + 1x3 = 0

e, infine, a

x1 + x2 + x3 = 1

0.0001x2 + 1x3 = 1

9999x3 = 10000

Se risolviamo il sistema utilizzando unaritmetica in base 10 con 3


cifre decimali, la sostituzione allindietro ci dar
10000
11
x3 =
= 1.000, x2 =
= 0, x1 = 0.
9999
0.0001
La soluzione completamente sbagliata.
Se, invece, facciamo lo scambio della seconda e terza riga adottando
il pivoting parziale, allora avremo il sistema:

x1 + x2 + x3 = 1
1x2 + 1x3 = 0

0.0001x2 + 1x3 = 1

e, infine,

x1 + x2 + x3 = 1
1x2 + 1x3 = 0

0.9999x3 = 1

Questa volta si ha (sempre lavorando con 3 cifre decimali) x3 = 1.000,


x2 = 1.000, x1 = 1.000, che la soluzione corretta a 3 cifre decimali.
_

Con il pivoting totale, si opera uno scambio


non solo di righe ma anche di colonne in
modo da portare lelemento pivotale dalla riga
e colonna qr al posto ii. Di questo scambio
di colonne bisogna conservare traccia perch
vengono scambiate anche le componenti del
vettore soluzione, in modo da effettuare lo
scambio inverso una volta risolto il sistema.

appunti di calcolo numerico

8.5

Fattorizzazione triangolare

Il metodo di eliminazione di Gauss, visto in forma matriciale, decompone la matrice A nel prodotto LU di due matrici, la L triangolare
inferiore, e la U triangolare superiore.
Ad ogni passo, infatti, il metodo di eliminazione pu essere visto
introducendo la matrice

0 1

. 0 1

.. ..

. . 0
1

( k 1)
a k +1 k

.. .. ..

. . .
1

( k 1)
(k)
M =

akk

( k 1)

. . .
a k +2 k
..

. . .
.
. . . ( k 1)

akk

. . .
..
..

.. .. ..
.
.

( k 1)

. . .
a

.. .. .. n k
1
( k 1)
akk
Le matrici intermedie che vengono generate sono date da A(k) =
M(k) A(k1) = M(k) M(k1) . . . M(1) A mentre il vettore termine noto
dato da b(k) = M(k) b(k1) = M(k) M(k1) M(1) b.
Dopo n 1 passi, avremo un sistema la cui matrice finale triangolare superiore (possiamo chiamare questa matrice U):
U = A ( n 1) = M ( n 1) . . . M (2) M (1) A
Per ritornare alla matrice di partenza A, possiamo moltiplicare ambo
i membri delluguaglianza appena scritta con la matrice data da
L = ( M ( n 1) M (2) M (1) ) 1 = [ M (1) ] 1 [ M ( n 2) ] 1 [ M ( n 1) ] 1
L triangolare inferiore con elementi dati dal prodotto delle matrici
M(k) generate durante leliminazione di Gauss. Otteniamo quindi
A = LU.

8.5.1

Fattorizzazione LDU

Leliminazione di Gauss un caso particolare di fattorizzazione LDU,


nella quale la matrice A viene decomposta nel prodotto di 3 matrici,
la L che triangolare inferiore con elementi sulla diagonale principale
(elementi diagonali) uguali a 1, la D che una matrice diagonale e la
U che una triangolare superiore con elementi diagonali uguali a 1.
Nelleliminazione di Gauss vista prima, nella U abbiamo inglobato
anche la matrice D, per cui abbiamo una fattorizzazione LU.
La decomposizione LDU assicurata dal teorema LDU. Prima di
vedere il teorema, definiamo i minori principali di una matrice A.

123

124

annamaria mazzia

Definizione 8.5.1 Data una matrice A si definisce minore principale di


dimensione k (con 1 k n), la sottomatrice che si ha prendendo le prime
k righe e k colonne di A.

a11 . . . a1k
.
..
.

.
.
ak1 . . . akk
Teorema 8.5.1 (LDU) Nellipotesi che tutti i minori principali di A, (per
i = 1, 2, . . . , n) siano non-singolari, allora la matrice A decomponibile in
maniera univoca nel prodotto A = LDU
Qualsiasi matrice non singolare pu essere condotta sotto una
forma tale da soddisfare il teorema LDU mediante opportuni scambi
di righe e di colonne (abbiamo visto cosa fare quando un elemento
pivotale nullo). Fare uno scambio di righe o di colonne significa
moltiplicare la matrice A con unopportuna matrice di permutazione.
Una matrice di permutazione P una matrice ottenuta dalla matrice identit operando scambi di righe o di colonne in modo che la
matrice risultante abbia esattamente un unico valore diverso da zero
su ogni riga e colonna, e tale valore sia uguale a 1.
Esempio Si consideri la matrice di permutazione P di dimensione 3 data da

1 0 0

P = 0 0 1
0 1 0
Qualunque sia la matrice A, di dimensione 3, moltiplicandola a
sinistra per P si ottiene lo scambio della seconda e terza riga di A;
invece, moltiplicandola a destra per P si ottiene lo scambio della
seconda e terza colonna di A:

PA = 0
0

a11

AP = a21
a31

0
0
1

0
a11

1 a21
0
a31

a12
a22
a32

a12
a22
a32

a13
1

a23 0
a33
0

0
0
1


a13
a11

a23 = a31
a33
a21

a12
a32
a22

a13

a33
a23


0
a11

1 = a21
0
a31

a13
a23
a33

a12

a22
a32
_

Quindi, il teorema LDU si pu applicare alla matrice A o ad


unopportuna matrice PA, se si effettua il pivoting parziale, o a PAQ
se si effettua il pivoting totale (e quindi si considerano due matrici di
permutazioni P e Q).
In genere, la matrice D viene inglobata nella L o nella U (postmoltiplicando o pre-moltiplicando le L e le U definite prima per la
D).

appunti di calcolo numerico

125

Nel caso in cui la matrice D viene inglobata nella matrice L, la L


ha elementi diagonali lii 6= 0, mentre la U ha elementi diagonali
unitari. Si parla di fattorizzazione di Crout.

Nel caso in cui la matrice D viene inglobata nella matrice U, la U


ha elementi diagonali uii 6= 0, mentre la L ha elementi diagonali
unitari. Si parla di fattorizzazione di Doolittle.

Scriviamo in forma estesa il prodotto tra matrici, nellipotesi di


operare la fattorizzazione di Crout:

a11

a21
.
.
.
an1

a12
a22
..
.
an2

...
...
...


a1n
l11

a2n l21

..
= .
. ..
ann
ln1

0
l22
..
.
ln2

...
...
...

0
0
..
.

0
.
.
.
lnn
0

u12
1
..
.
0

...
...
...

u1n

u2n
..

.
1

Moltiplichiamo la prima riga di L per le colonne di U ed eguagliamo i termini con gli elementi della prima riga di A. Otteniamo:
l11 1 = a11
l11 u1k = a1k ,
k = 2, . . . , n
Quindi: l11 = a11 e u1k = a1k /l11 . Abbiamo ricavato gli elementi
della prima riga di L e U.
Moltiplicando le successive righe di L per le colonne di U ed
uguagliando i termini ai corrispondenti termini di A, abbiamo:
j 1

lij = aij

lim umj

i = 1, 2, . . . n

j = 1, 2, . . . , i

m =1

uij =

i 1
1
( aij lim umj )
lii
m =1

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

j = i + 1, . . . n

Si calcolano prima gli elementi della riga i-sima di L e poi quelli della
riga i-sima di U, per i = 1, 2, . . . , n.
Trovate le matrici L e U, il sistema di partenza Ax = b equivalente
a LUx = b.
Si pone, dunque, y = Ux, ottenendo il sistema Ly = b. Si ricava
facilmente y mediante sostituzione in avanti e da Ux = y si ricava x
mediante sostituzione allindietro.
Lo sforzo computazionale maggiore quindi quello per il calcolo
dei coefficienti di L e U.

8.5.2

Fattorizzazione di Gauss senza pivoting

Abbiamo visto che, a volte, il metodo di eliminazione di Gauss richiede scambi di righe per evitare divisioni per zero. Allo stesso modo, il
teorema di fattorizzazione LDU vale su matrici A non singolari o su
matrici ottenute da A mediante moltiplicazioni a sinistra o a destra
con opportune matrici di permutazione.
Ci chiediamo se esistono matrici per le quali il metodo di eliminazione di Gauss possa essere implementato senza scambi di righe e

Nelleliminazione di Gauss noi ricaviamo


espressamente solo la U mentre le modifiche operate sulla colonna dei termini noti
equivalente al prodotto L1 b (quindi da
LUx = b risolviamo Ux = L1 b).

126

annamaria mazzia

per le quali lalgoritmo di eliminazione di Gauss sia stabile rispetto


ad una crescita di errori di arrotondamento.
Vediamo, nel seguito, alcune speciali classi di matrici per cui
valgono le nostre richieste.
Definizione 8.5.2 Una matrice A di dimensione n si dice diagonalmente
dominante in senso stretto per righe se vale la relazione
n

| aii | >

|aij |

per ogni

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

j =0
j 6 =i

Definizione 8.5.3 Una matrice A di dimensione n si dice diagonalmente


dominante in senso stretto per colonne se vale la relazione
n

| a jj | >

|aij |

per ogni

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

i =0
i6= j

Esempio

7 3
1

A = 2 10 2
5 0
6
A una matrice diagonalmente dominante in senso stretto per righe
poich vale:|7| > |3| + |1| = 4, |10| > |2| + | 2| = 4 e |6| > |5| + |0|.
Non diagonalmente dominante in senso stretto per colonne in
quanto sulla prima colonna si ha |7| = |2| + |5|.
_
Esempio

6 3 4

A= 3 9 5
4 5 11
A non diagonalmente dominante in senso stretto per righe poich,
sulla prima riga si ha |6| < |3| + | 4| = 7. Essendo simmetrica, la
matrice non pu essere neanche diagonalmente dominante in senso
stretto per colonne, perch la relazione che abbiamo sulla prima riga
vale sulla prima colonna.
_
Le definizioni appena date si possono rilassare, definendo le matrici
diagonalmente dominanti.
Una matrice A di dimensione n si dice diagonalmente dominante
per righe se vale la relazione
n

| aii |

|aij |

per ogni

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

j =0
j 6 =i

Analoga la definizione di matrice diagonalmente dominante


per colonne (basta applicare la definizione di matrice diagonalmente
dominante per righe sulla matrice A T )
Si hanno i seguenti teoremi.

appunti di calcolo numerico

127

Teorema 8.5.2 Se A una matrice diagonalmente dominante e non singolare, allora il metodo di eliminazione di Gauss pu essere implementato
senza alcuno scambio di righe e di colonne e i calcoli sono stabili rispetto
alla crescita degli errori di arrotondamento.
Teorema 8.5.3 Se A una matrice diagonalmente dominante in senso
stretto (per righe o per colonne), allora A non singolare. In questo caso il metodo di eliminazione di Gauss pu essere implementato senza alcuno
scambio di righe e di colonne e i calcoli sono stabili rispetto alla crescita
degli errori di arrotondamento.
Unaltra importante classe di matrici data dalle matrici definite
positive.
Definizione 8.5.4 Una matrice A di dimensione n si dice

definita positiva se simmetrica e vale x T Ax > 0 qualunque sia il


vettore x 6= 0

G
G

semidefinita positiva se x T Ax 0 qualunque sia il vettore x,


indefinita altrimenti.

Si ha unanaloga definizione per matrici definite negative e semidefinite negative.


Definizione 8.5.5 Una matrice A di dimensione n si dice

Osserviamo che non tutti gli autori richiedono


la simmetria per definire una matrice definita positiva, e distinguono tra matrici definite positive e matrici simmetriche definite
positive.

definita negativa se simmetrica e vale x T Ax < 0 qualunque sia il


vettore x 6= 0,

semidefinita negativa se x T Ax 0 qualunque sia il vettore x.

Dalla definizione di matrice definita positiva, deve essere x T Ax > 0


qualunque sia il vettore x, vale a dire:


a11 a12 . . . a1n
x1



a
a
.
.
.
a
21
22
2n x2

x1 x2 . . . x m
.
.
..
.
.
..
.
...
. ..
an1 an2 . . . ann
xm

nj=1 a1j x j

n

n n
j=1 a2j x j

=
xm

aij xi x j > 0
..

i =1 j =1
.
nj=1 anj x j


= x1

x2

...

Il seguente risultato ci permette di eliminare certe matrici dalla


classe delle matrici definite positive, se non soddisfano certi requisiti.

Teorema 8.5.4 Se una matrice A di dimensione n definita positiva, allora

G
G

A ammette la matrice inversa;


aii > 0 per ogni i = 1, 2, . . . , n

Basarsi sulla definizione per verificare che


una matrice sia o meno definita positiva pu
essere molto difficile. Fortunatamente, ci sono molti criteri che ci permettono di dire se
una matrice definita positiva oppure no.

128

annamaria mazzia

Quindi se una matrice ha elementi aii 0, non una matrice definita


positiva, perch, se lo fosse, in base al teorema avrebbe elementi
diagonali tutti positivi.
Vediamo ora una condizione necessaria e sufficiente per matrici
definite positive.
Teorema 8.5.5 Una matrice A simmetrica di dimensione n definita positiva se e solo se tutti i suoi minori principali hanno determinante positivo.
Teorema 8.5.6 Una matrice A simmetrica di dimensione n con elementi
diagonali tutti positivi e diagonalmente dominante definita positiva.
Anche per matrici simmetriche definite positive, si pu applicare il
metodo di eliminazione di Gauss senza operare scambi di righe e di
colonne e i calcoli rimangono stabili rispetto alla crescita degli errori
di arrotondamento. Questo risultato ci serve per la fattorizzazione di
Cholesky.

8.5.3

Fattorizzazione di Cholesky

Nel caso in cui la matrice A sia simmetrica, il teorema LDU si presenta


nel seguente modo
Teorema 8.5.7 (LDU per matrici simmetriche) Se A una matrice simmetrica e nessuno dei suoi minori principali singolare, allora A si pu
decomporre nel prodotto A = LDL T , dove L triangolare inferiore con
elementi diagonali unitari ed univocamente determinata, L T la sua
trasposta e D matrice diagonale.
Dimostrazione.
Intanto valgono le ipotesi del teorema LDU e
quindi si pu scrivere in maniera univoca A = LDU con L matrice
triangolare inferiore, D diagonale e U triangolare superiore. Inoltre,
poich A simmetrica, e quindi A = A T , si ha pure LDU = ( LDU ) T
vale a dire LDU = U T D T L T = U T DL T . Si deduce, dalluguaglianza,
che U = L T e la decomposizione diventa A = LDL T . 4
Proposizione 8.5.1 (Fattorizzazione di Cholesky) Nel caso particolare in cui A sia simmetrica e definita positiva, da x T Ax > 0 vale pure
x T Ax = x T LDL T x = ( L T x) T DL T x = y T Dy > 0 con y = L T x per ogni x > 0.
Essendo A definita positiva, risulta anche D definita positiva. Perci
gli elementi di D (che una matrice diagonale) devono necessariamente essere tutti positivi. In tal caso, si considera la matrice D1/2
che la matrice diagonale con elementi dati dalle radici quadrate
degli elementi diagonali di D (si prende il valore positivo della radice
quadrata, e il risultato un numero reale in virt del fatto che gli elementi diagonali di D sono tutti positivi). Si pone, quindi, M = LD1/2
e si ottiene A = MM T : abbiamo il prodotto di una matrice triangolare
inferiore con coefficienti tutti reali per la sua trasposta. Se D non

appunti di calcolo numerico

129

fosse definita positiva (ma avesse qualche elemento negativo), allora


neanche A sarebbe definita positiva e la matrice M sarebbe non reale.
Quindi se A simmetrica, si ha la decomposizione nel prodotto
LL T (chiamiamo di nuovo con L la matrice M) con L reale se e solo
se A definita positiva.
I coefficienti della matrice L si trovano facendo il prodotto righe
per colonne ed eguagliando i termini ai corrispondenti elementi di A.
Si ricava:

l11 =

a11

li1 = ai1 /l11


i = 2, 3, . . . , n
v
u
i 1
u
l = t( a
l2 )
i = 2, 3, . . . , n
ii

ii

k =1

ik

j 1

lij =

1
(a
lik l jk )
l jj ij k
=1

j = 2, . . . , n

i = j + 1, . . . , n

.
Tale fattorizzazione prende il nome di fattorizzazione di Cholesky.

8.6

Andr-Louis Cholesky (1875-1918) fu un matematico francese. Fu ufficiale ingegnere e


mor alla fine della prima guerra mondiale.

Esercizi

Esercizio
data la matrice
8.6.1 Sia
1 0 2

A = 0 4 8
2 8 29
Provare che verifica le condizioni del teorema LDU e trovare i fattori L
e L T tali che A = LL T .
Svolgimento
La matrice A simmetrica
! e soddisfa le ipotesi del teorema LDU (
1 0
infatti | a11 | = 1, det
= 4 e det( A) = 116 16 64 = 36) per
0 4
cui possibile scrivere la matrice A come A = LL T . Si ha, quindi:

2
l11 0
0
l11 l21 l31
l11
l11 l21
l11 l31

2 + l2
l21
l21 l31 + l22 l32
l21 l22 0 0 l22 l32 = l21 l11
22
2 + l2 + l2
l31 l32 l33
0
0 l33
l31 l11 l31 l21 + l32 l22 l31
32
33
Devono quindi valere le relazioni:
2
l11
= 1 = l11 = 1

l21 l11 = 0 = l21 = 0


2
l21

l31 l11 = 2 = l31 = 2

2
+ l22
= 4 = l22 = 4 0 = 2

l21 l31 + l22 l32 = 8 = l32 = 8/2 = 4


p

2
2
2
l31
+ l32
+ l33
= 29 = l33 = 29 22 42 = 29 4 16 = 9 = 3

130

annamaria mazzia

La matrice

1 0

0 2
2 4

L dunque

0
3

Esercizio
8.6.2 Data la matrice

0.2 1
0.2

A = 1 6.5 1.75
0
2 2.25
(a) verificare che A soddisfa le condizioni del teorema LDU;
(b) fattorizzare secondo Crout A = LU (prendendo uii = 1);
(c) usare la fattorizzazione per calcolare det ( A2 );
(d) usare la fattorizzazione per risolvere il sistema Ax = b, con b T =
(2.8 19.25 10.75)T .

Svolgimento
(a) La matrice verifica le condizioni del teorema LDU in quanto i
minori principali costruiti a partire dallangolo superiore sinistro
hanno tutti determinante diverso da zero:
!
0.2 1
a11 = 0.2 6= 0
det
= 0.3 6= 0
det A = 0.375 6= 0
1 6.5
(b) La fattorizzazione di A come A = LU

0.2 1
0.2
l11

A = 1 6.5 1.75 = LU = l21


0
2 2.25
l31

si costruisce imponendo:

0
0
1 u12 u13

l22 0 0 1 u23
l32 l33
0 0
1

Usando le formule di pag. 125, si ottiene


l11 = 0.2
0.2u12 = 1 = u12 = 5
0.2u13 = 0.2 = u13 = 1
l21 = 1
1 5 + l22 = 6.5 = l22 = 1.5
1 1 + 1.5u23 = 1.75 = u23 = 0.5
l31 = 0
0 5 + l32 = 2 = l32 = 2
0 1 + 2 0.5 + l33 = 2.25 = l33 = 1.25
Le matrici L e U sono:

0.2 0
0

L = 1 1.5
0
0
2 1.25

U = 0
0

5
1
0

0.5
1

appunti di calcolo numerico

(c) Si ha det A = det LU = det L det U = det L = 0.375. Quindi


det ( A2 ) = det ( A)2 = 0.3752 = 7.11111111.
(d) Da Ax = b si ha LUx = b.
Si pone Ux = y e si hanno i due sistemi da risolvere per sostituzione in avanti e allindietro: Ly = b e Ux = y.

0.2

1
0

0
y1
2.8
y1 = 2.8/0.2 = 14

0 y2 = 19.25 = y2 = (19.25 14)/1.5 = 3.5

1.25
y3
10.75
y3 = (10.75 2 3.5)1.25 = 3

0
1.5
2

0
0

5
1
0

1
x1
14
x3 = 3

0.5 x2 = 3.5 = x2 = 3.5 3 0.5 = 2

1
x3
3
x1 = 14 3 5 2 = 1

Quindi x = (1, 2, 3) T .

Esercizio
8.6.3 Sia data la
matrice
2 0.5
0.5

A = 0
1
1
1 0.5 10.5
(a) Calcolare k Ak (norma massima per righe), k Ak1 (norma massima
per colonne) e norma F ( A) (norma di Frobenius).
(b) Fattorizzare la matrice A nel prodotto LU (con lii = 1).
(c) Utilizzando la fattorizzazione trovata, risolvere il sistema lineare
Ax = b con b = [4.5, 1, 31.5] T , e calcolare il determinante di A2 .

Svolgimento
(a) Applicando le definizioni per le diverse norme abbiamo: k Ak =
max (3, 2, 12) = 12,
k Ak1 = max (3, 2, 12) = 12,

F ( A) = 4 + 0.25 + 0.25 + 1 + 1 + 1 + 0.25 + 110.25 = 118 =


10.862780491.
(b) Per la fattorizzazione nel prodotto LU con lii = 1, imponendo
luguaglianza LU = A si ha:

1
0 0
u11 u12 u13
2 0.5
0.5

1
1
l21 1 0 0 u22 u23 = 0
l31 l32 1
0
0 u33
1 0.5 10.5
vale a dire

u11

l
21 u11
l31 u11

u12
l21 u12 + u22
l31 u12 + l32 u22


u13
2

=
l21 u13 + u23
0
l31 u13 + l32 u23 + u33
1

0.5
1
0.5

0.5

1
10.5

131

132

annamaria mazzia

Uguagliando i termini e sostituendo i valori dei coefficienti via via


che vengono ricavati si ha:
u11 = 2
l21 = 0

u12 = 0.5
u22 = 1

u13 = 0.5
u23 = 1

Inoltre
l31 2 = 1 = l31 = 0.5
0.5 0.5 + l32 = 0.5 = l32 = 0.75
u33 = 9.5
Quindi le due matrici sono

L=0
0.5

0
0

1
0
0.75 1

U = 0
0

0.5
1
0

0.5

1
9.5

applichiamo i seguenti passaggi: Ax =


(c) Per risolvere il sistema,

Ux = y
b = LUx = b =
.
Ly = b

Ly = b = 0
0.5

Ux = y = 0
0

0.5
1
0

0
0
y1
4.5
y1 = 4.5


1
0 y2 = 1 = y2 = 1

31.5
0.75 1
y3
y3 = 28.5

0.5
4.5
x1
x3 = 3

1 x2 = 1 = x2 = 2

9.5
x3
28.5
x1 = 1


1

= x = 2
3

Per il determinante, risulta: det( A) = det( L) det(U ) = 1 (2 1


9.5) = 19, da cui det( A2 ) = (det( A))2 = 192 = 361.

Esercizio
lineareAx =
b dove:
8.6.4 dato il sistema

16 8
4
20

A = 8 20
b = 28
4
4
4 12.25
28.25
(a) Provare che la matrice definita positiva.
(b) Fattorizzare la matrice secondo Cholesky: A = LL T .
(c) Usare la fattorizzazione per risolvere il sistema Ax = b e per
calcolare det( A3 ).

Svolgimento

appunti di calcolo numerico

(a) La matrice simmetrica, definita positiva in quanto gli elementi della diagonale principale sono tutti positivi e la matrice
diagonalmente dominante in senso stretto:
16 > | 8| + |4| = 12
20 > | 8| + |4| = 12
12.25 > |4| + |4| = 8
(b) Ponendo A = LL T si ricava:
2
l11
= 16 = l11 = 4

l21 l11 = 8 = l21 = 2


l31 l11 = 4 = l31 = 1

2
2
l21
+ l22
= 20 = l22 = 20 4 = 4
2
l31

l21 l31 + l22 l32 = 4 = l32 = (4 + 2)/4 = 1.5

2
2
+ l32
+ l33
= 12.25 = l33 = 12.25 1 2.25 = 9 = 3

La matrice L dunque

4
0 0

L = 2 4 0
1 1.5 3
(c) Per risolvere il sistema Ax = b, adoperiamo il metodo di sostituzione in avanti e allindietro risolvendo i sistemi: Ly = b e poi
L T x = y.
Il primo sistema d:

4
0 0
y1
20


2 4 0 y2 = 28
y3
28.25
1 1.5 3
e otteniamo y1 = 20/4 = 5, y2 = (28 + 10)/4 = 9.5, y3 = (28.25
5 14.25)/3 = 3.
Nel risolvere il sistema L T x = y si ha


4 2 1
x1
5


0 4 1.5 x2 = 9.5
0 0
3
x3
3
da cui x3 = 1, x2 = (9.5 1.5)/4 = 2, x1 = (5 1 + 4)/4 = 2,
quindi x = (2, 2, 1).
Inoltre, da det( A) = det( LL T ) = det( L)2 = (4 4 3)2 = 482 =
2304 e da det( A3 ) = (det( A))3 si ha det( A3 ) = 23043 = 12230590464.

8.7

Domande di riepilogo

1. Quale la definizione di una matrice e di un vettore?

133

134

annamaria mazzia

2. Che differenza c tra matrici diagonali, tridiagonali, triangolari?


3. Cosa significa che una matrice non singolare?
4. Come si definisce il determinante di una matrice?
5. Che cosa significa sistema di equazioni lineari?
6. Descrivere il procedimento di sostituzione in avanti e allindietro.
Su quali matrici pu essere applicato?
7. Descrivere il metodo di eliminazione di Gauss.
8. A cosa servono le strategie di pivoting?
9. Enunciare e spiegare il teorema LDU.
10. Spieare le differenze tra fattorizzazione di Crout e fattorizzazione
di Doolittle.
11. Per quali matrici la fattorizzazione LDU stabile rispetto ad una
crescita degli errori di arrotondamento e, quindi, viene fatta senza
applicare tecniche di pivoting?
12. Come diventa il teorema di fattorizzazione LDU quando applicato a matrici simmetriche?
13. Sotto quali ipotesi si parla di fattorizzazione di Cholesky e di
cosa si tratta?

9 Metodi iterativi per la soluzione di sistemi lineari

9.1

Da unequazione alle derivate parziali ad un sistema lineare

Lequazione che governa la conduzione del calore in una piastra


metallica piana, omogenea e isotropa prende il nome di equazione di
Poisson e si scrive come
2 T
f ( x, y)
2 T
+
=
2
2
cK H
x
y
In letteratura diverse tecniche numeriche permettono di risolvere il
problema (ricordiamo i metodi alle differenze finite e i metodi agli
elementi finiti), in determinati punti (detti nodi) della piastra. Qualunque sia il metodo utilizzato, si arriva ad un sistema di equazioni
lineari del tipo
HT = q
dove H rappresenta la matrice di discretizzazione del metodo, T
rappresenta il vettore delle temperature nei nodi e q il vettore dei
termini noti che deriva dal metodo applicato.
La matrice H pu avere una dimensione molto elevata ma ha la
caratteristica di essere sparsa, cio di avere pochi elementi diversi da
zero per ogni riga.
Per risolvere sistemi lineari di questo tipo, si preferisce usare
metodi iterativi piuttosto che diretti. In questo Capitolo presentiamo
alcuni dei metodi iterativi per la risoluzione di sistemi lineari.

9.2

Metodi iterativi

Per risolvere un sistema di equazioni lineari Ax = b, applicando un


metodo diretto, e trascurando gli errori di arrotondamento, si ottiene
la soluzione esatta del problema in un numero finito (e noto a priori)
di operazioni. Nei metodi iterativi, invece, si parte da unapprossimazione iniziale che viene migliorata, mediante un procedimento iterati-

Mi spiace ammettere che la materia che mi


piaciuta di meno stata la matematica. Ci ho
pensato su, e credo che la ragione sia che la
matematica non lascia spazio alle discussioni.
Se fai un errore, non puoi scamparla.
Malcom X

Si tratta di unequazione alle derivate parziali


dove T [ o C] la temperatura, K H [m2 /s] il
coefficiente di diffusivit termica, [Kg/m2 ]
la densit della piastra, c [Cal/Kg o C ] il
calore specifico, f ( x, y) [Cal/m2 s] il calore aggiunto o sottratto alla piastra per unit
di tempo e di area.

136

annamaria mazzia

vo, fino ad ottenere una approssimazione sufficientemente accurata


della soluzione.
Quando abbiamo studiato gli zeri di funzione nel Capitolo 5, data
unapprossimazione iniziale, si procedeva nellalgoritmo iterativo fino
a quando lo scarto tra due approssimazioni successive non diventava
minore di una prefissata tolleranza.
Nel caso dei sistemi lineari, lapproccio simile. Si parte da un
vettore iniziale che approssima la soluzione del sistema e, mediante un
certo procedimento ricorsivo, si calcola una nuova approssimazione
(un vettore). Dobbiamo dunque essere capaci di misurare lo scarto
tra due vettori in modo da capire quando la successione dei vettori
generati dallalgoritmo tende al vettore soluzione del sistema lineare.
Abbiamo perci bisogno di definire le norme di vettori e di matrici.
Nel seguito, tratteremo solo norme di matrici e vettori definite nello
spazio dei numeri reali (e non complessi).

9.3

Norme di vettori

Il concetto di norma generalizza quello di valore assoluto (o modulo)


di un numero reale (o complesso).
n
Sia R lo spazio dei vettori colonna di lunghezza n. La norma di
n
n
un vettore x R una funzione, k k, definita in R e a valori in R,
che gode delle seguenti propriet:

G
G
G
G

kxk > 0 per ogni x 6= 0


kxk = 0 se e solo se x = 0
kxk = ||kxk dove un reale (o complesso) arbitrario
kx + yk kxk + kyk

Le principali norme vettoriali sono:

G
G

Norma assoluta (o norma l1 ), indicata con k k1 : kxk1 = in=1 | xi |

Norma massima (o norma infinito, l ), indicata con k k : kxk =


max1in | xi |

Norma
euclidea
(o
norma
l
),
indicata
con
k

k
:
k
x
k
=
xT x =
2
2
2
q
n
i =1 | x i | 2

Tra le norme 1, e 2 valgono le seguenti relazioni (che pongono


n
unequivalenza tra esse). Dato un vettore x R :

k x k k x k2 n k x k

k x k k x k1 n k x k
Esempio Il vettore x = (1, 5, 20) T ha norme:

kxk1 = |1| + |5| + | 20| = 26


kxk = max (|1|, |5|, | 20|) = 20
q

kxk2 = (12 + 52 + (20)2 ) = 426 = 20.639767441

Lidea di risolvere sistemi lineri con metodi


iterativi risale ai tempi di Gauss (1823), ma
solo con lavvento dei computers (negli anni
cinquanta) si pu osservare il loro sviluppo,
visto che diventa possibile risolvere sistemi
lineari dove la matrice A sparsa e di grandi
dimensioni un particolare tipo di problema
improponibile per i metodi diretti. Difatti, nei
metodi diretti, il processo di eliminazione di
Gauss (o la decomposizione della matrice
di partenza nel prodotto LU con L triangolare inferiore e U triangolare superiore) porta
allintroduzione del cosiddetto fill-in, cio a
matrici L e U con elementi diversi da zero
l dove la matrice di partenza A ha elementi
nulli. I metodi diretti diventano quindi proibitivi
perch troppo costosi per quanto riguarda il
numero di operazioni aritmetiche e loccupazione di dati che devono essere salvati per
limplementazione numerica del metodo stesso. I metodi iterativi, al contrario, lavorano
direttamente sulla matrice A e, dal momento che A viene coinvolta solo in termini di
prodotti matrice-vettore, non c neanche bisogno di memorizzare tutta la matrice (in genere, quando la matrice sparsa, si lavora su
memorizzazioni in forma compatta delle matrici, memorizzando solo gli elementi non nulli
che servono per il prodotto matrice-vettore).

appunti di calcolo numerico

137

R2 con norma unitaria

Figura 9.1: Vettori in


nelle norme 1, e 2.

Per la norma euclidea vale la diseguaglianza di Cauchy-Schwarz

x T y k x k2 k y k2
n

Dati due vettori x e y R , si definisce distanza tra i due vettori


la norma della differenza tra i vettori. Quindi:
n

k x y k1 =

| xi yi |

i =1

kx yk = max | xi yi |
1 i n
s
n

k x y k2 =

| x i y i |2

i =1

Il concetto di distanza serve per definire il limite di una successione


di vettori.
n
Data una successione di vettori in R , x(k) , per k = 1, 2, . . . , , si
n
dice che la successione converge ad un vettore x di R e si scrive
limk x(k) = x se, per ogni e > 0, esiste un intero m tale che

kx(k) xk < e per tutti gli indici k m

9.4

Norme di matrici

Analogamente alla definizione di norma vettoriale, la norma di matrici


quadrate di dimensione n una funzione, che indichiamo con k k
che, per tutte le matrici A e B di dimensione n e per tutti i numeri
reali (o complessi) , soddisfa le seguenti propriet:

G
G
G
G
G

k Ak > 0 per ogni A 6= 0


k Ak = 0 se e solo se A = 0
kAk = ||k Ak
k A + Bk k Ak + k Bk
k ABk k Akk Bk

Una propriet importante che si richiede alle norme su matrici


che siano compatibili con norme vettoriali.

138

annamaria mazzia

Definizione 9.4.1 La norma k Ak di una matrice A si dice compatibile con


la norma kxk di un vettore x se vale la relazione

k Axk k Akkxk
Alcune norme su matrici sono generate da norme su vettori: si
parla allora di norma naturale o indotta dalla norma di vettori.
n

Definizione 9.4.2 Se k k una norma su vettori in R , si definisce come


norma naturale o indotta su matrici la norma data da k Ak = maxkxk=1 k Axk.
Le norme di matrici indotte dalla norma 1 e dalla norma infinito
su vettori sono:

Norma 1: k Ak1 = max j in=1 | aij | (data dal massimo sulla somma
delle colonne)

Norma infinito: k Ak =
somma delle righe)

maxi nj=1

| aij | (data dal massimo sulla

T A)

tr ( AA T ) =

ni=1 | aij |2 .
j =1

Tra le norme naturali su matrici e le norme di vettori da cui sono


generate, facile provare la seguente proposizione.
Proposizione 9.4.1 Le norme naturali su matrici sono norme compatibili
con le norme di vettori da cui sono costruite.
Dimostrazione.
Dalla definizione alternativa che abbiamo dato
di norma naturale (e chiamando il generico vettore con il simbolo x),
segue per un vettore x diverso dal vettore nullo,

k Axk
k Axk
max
= k Ak
kxk
x6=0 k x k
da cui

k Axk k Akkxk
Se invece il vettore x il vettore nullo, la relazione di compatibilit
ovvia. 4

9.5

Autovalori e autovettori

Data una matrice quadrata A di ordine n, se esiste un numero (reale


o complesso) e un vettore x 6= 0 tali che
Ax = x

k Ayk
. Infatti,
kyk
preso un qualunque vettore y 6= 0, si pu
considerare il vettore x = y/kyk che ha
data da k Ak = maxy6=0

norma unitaria. Allora (sfruttando le propriet delle norme su vettori e considerando la


relazione che lega x a y) abbiamo




y

k Ak = max k Axk = max
A
kyk
y6=0
kxk=1
da cui

k Ak = max
y6=0

La norma di matrice indotta dalla norma 2 pi complicata e vedremo


in seguito come definita.
Una norma di matrici, che non indotta, ma compatibile con la
norma 2 la cosiddetta norma euclidea (o di Frobenius). Tenendo
presente che, data una matrice A, si chiama traccia della matrice o
tr ( A) la somma degli elementi della diagonale principale di A, la
norma euclidea (o di Frobenius) data da

G N( A) = ptr( A

Una definizione alternativa a quella che abbiamo dato per la norma naturale su matrici

k Ayk
kyk

appunti di calcolo numerico

139

allora un autovalore e x il corrispondente autovettore della


matrice A.
Scritta in maniera equivalente, la relazione definisce il sistema
lineare

( A I )x = 0
Poich x 6= 0 e il termine noto del sistema il vettore di tutti zeri, il
determinante della matrice del sistema deve necessariamente essere
uguale a zero, cio det ( A I ) = 0.
Lo sviluppo del determinante porta a un polinomio di grado n
nellincognita :
n tr ( A)n1 + . . . + (1)n det ( A) = 0
Questo polinomio si chiama polinomio caratteristico. Le sue n radici,
che chiamiamo 1 , 2 , . . . , n , sono gli n autovalori della matrice A.
Per le propriet dei polinomi vale:
n

i = tr( A) = a11 + a22 + . . . + ann

i =1

i = det ( A)

i =1

Alcune propriet sugli autovalori e autovettori sono le seguenti:

Se autovalore della matrice A, allora k autovalore della


matrice potenza Ak (cio A A A k volte).

Se autovalore della matrice A, e A regolare, allora 1


autovalore della matrice inversa A1 .

Gli autovalori di una matrice A e della sua trasposta A T sono gli


stessi (ma gli autovettori sono, in genere, diversi).

Se A e B sono due matrici arbitrarie regolari, allora gli autovalori


di AB sono gli stessi di BA.

Se x un autovettore associato alla matrice A, allora Ax = x: la


matrice A trasforma il vettore x in un vettore le cui componenti sono
moltiplicate per : se > 1, allora A ha leffetto di allungare x di un
fattore ; se invece 0 < < 1, allora x si restringe di un fattore ;
gli effetti sono simili, ma il verso del vettore risultante Ax opposto,
quando < 0. I quattro casi che si possono presentare sono illustrati
in Figura 9.2.
Figura 9.2: Autovalori e autovettori

Dati n vettori linearmente indipendenti di

Altre propriet da tenere presenti sono le seguenti:

Se tutti gli n autovalori di una matrice A sono distinti, allora gli


n autovettori u(1) , u(2) , . . . u(n) sono linearmente indipendenti.

Rn ,

u(1) , u(2) , . . . u(n) , ogni vettore di


si pu
scrivere come una loro combinazione lineare.
Quindi esistono n coefficienti 1 , 2 , . . . , n
per cui x = 1 u(1) + 2 u(2) + . . . + n u(n) .
Inoltre, per vettori linearmente indipendenti vale il risultato: 1 u(1) + 2 u(2) + . . . +
n u(n) = 0 se e solo se tutti i coefficienti i
sono uguali a zero, per i = 1, 2, . . . , n.

140

annamaria mazzia

Se A una matrice simmetrica reale definita positiva, allora i suoi


autovalori sono tutti reali e positivi.
Introduciamo ora il raggio spettrale di una matrice A

Definizione 9.5.1 Il raggio spettrale ( A) di una matrice A definito da


( A) =

max

autovalore di A

||

Quindi il raggio spettrale il massimo, in modulo, degli autovalori


di A.
Possiamo ora definire la norma 2 su matrici indotta dalla norma 2
su vettori. Si pu, infatti, provare che

G k Ak

p
= ( A T A ).
Inoltre, per ogni norma naturale, vale il risultato
2

( A) k Ak
Matrici convergenti. Nello studiare i metodi iterativi per risolvere
i sistemi lineari, sar di particolare importanza sapere quando le
potenze di una matrice tendono alla matrice nulla. Matrici A, per cui
( Ak )ij 0 per k , qualunque sia i, j = 1, 2, . . . , n, (consideriamo
A A A k volte e gli elementi della matrice risultante tendono a
zero per k ) si dicono matrici convergenti. Diciamo che una
matrice A di dimensione n convergente se
lim ( Ak )ij = 0, i, j = 1, 2, . . . , n

Si ha il seguente teorema.
Teorema 9.5.1 Data una matrice A di dimensione n, sono equivalenti le
seguenti proposizioni
1. A una matrice convergente.
2. limk k Ak k = 0, per qualche norma naturale.
3. limk k Ak k = 0, per tutte le norme naturali.
4. ( A) < 1.
5. limk Ak x = 0, qualunque sia il vettore x.

9.6

Metodi classici

I metodi iterativi classici per la risoluzione di un sistema di equazioni


lineari del tipo Ax = b si basano su unidea molto semplice.

Si parte da unapprossimazione iniziale x(0) , commettendo unerrore e(0) = x x(0) . Lerrore e(0) soluzione del sistema Ae(0) =
b Ax(0) = r(0) , dove r(0) il residuo (ci che resta fuori, ci dice
di quanto il vettore Ax(0) si discosta da b).

Se un numero complesso, si pu scrivere


come = + i, con e numeri reali e
i = 1 la cosiddetta unit
p immaginaria.
Per il modulo si ha || = 2 + 2 .

appunti di calcolo numerico

141

Successivamente si definisce il passo x(1) come x(1) = x(0) + p(0) ,


dove ora p(0) soluzione del sistema Mp(0) = r0 , in cui la matrice
M pi semplice della A e, allo stesso tempo, M1 approssima in
qualche modo A1 .

Il procedimento viene iterato fino a convergenza.

Da queste richieste tra loro contradditorie, si sviluppa una strategia


che porta alla soluzione esatta x come limite della successione dei
valori approssimati x(k) .
Il processo iterativo si legge, infatti, come:
x(k+1) = x(k) + M1 (b Ax(k) )

k = 0, 1, . . . .

O, equivalentemente,
x ( k +1) = ( I M 1 A ) x ( k ) + M 1 b

k = 0, 1, . . .

Notiamo che, ad ogni passo, non dobbiamo calcolare esplicitamente


M1 , perch risolviamo problemi del tipo Mp(k) = r(k) = b Ax(k)
in modo da porre x(k+1) = x(k) + p(k) . La matrice E = I M1 A
detta matrice di iterazione del metodo. Nel seguito, per semplicit,
poniamo q = M1 b.

9.6.1

Lo schema iterativo appena descritto un


metodo stazionario (cio non dipende dalliterazione k) e pu essere visto come caso
particolare di uno schema di punto fisso per
equazioni nonlineari: la funzione g tale che
x(k+1) = g(x(k) ) converga alla soluzione
del sistema Ax = b, data da g(x) =
x + M1 (b Ax) o equivalentemente da
g(x) = Ex + q.

Convergenza

Per studiare la convergenza di un metodo iterativo, consideriamo, per


ogni vettore x(k) , il residuo r(k) = b Ax(k) e lerrore e(k) = x x(k) .
Osserviamo che si ha la relazione r(k) = Ae(k) . Infatti
Ae(k) = A(x x(k) ) = Ax Ax(k) = b Ax(k) = r(k)
Lo schema converge quando la successione x(k) converge alla soluzione x per k , ovvero quando limk e(k) = 0 qualunque sia il
vettore iniziale x(0) .
Consideriamo lo schema iterativo x(k+1) = Ex(k) + q.
facile vedere che per la soluzione esatta x vale la relazione
x = Ex + q.
Consideriamo x x(k) . Si ha
x = Ex + q
x(k) = Exk1 + q
e sottraendo si ricava
e

(k)

= Ee(k1)

La relazione appena trovata vale, alla stessa maniera, tra lerrore


e(k1) e lerrore e(k2) per cui possiamo scrivere e(k1) = Ee(k2) .

Il vettore soluzione x punto fisso della funzione vettoriale g(x) = Ex + q. Infatti ponendo E = I M1 A e q = M1 b si
ha Ex + q = ( I M1 A)x + M1 b =
x M1 Ax + M1 b. Dal momento che x
il vettore soluzione si ha Ax = b perci la
relazione precedente diventa
Ex + q = x M1 b + M1 b = x. Il
vettore soluzione punto fisso!

142

annamaria mazzia

Scriviamo queste relazioni dalliterazione k fino ad arrivare alliterazione 0.


e(k) = Ee(k1)
e(k1) = Ee(k2)
e(k2) = Ee(k3)
.. ..
.=.
e(2) = Ee(1)
e(1) = Ee(0)
Partendo, ora, dalla prima relazione e, andando a sostituire, ogni
volta, a secondo membro, la relazione successiva, si ha:
e(k) = Ee(k1) = E( Ee(k2) ) = E2 e(k2) = E2 ( Ee(k3) ) = E3 e(k3) = . . . = Ek e(0)
Osserviamo che Ek rappresenta la potenza k della matrice E, cio la
E E E k volte.
Il metodo converge se e(k) 0 per k . Poich lerrore iniziale
arbitrario, si ha che limk e(k) = limk Ek e(0) = 0 se e solo se
limk Ek = 0.
Per il teorema sulla convergenza di matrici (si veda pag. 140),
questo si ha se e solo se ( E) < 1. Si pu dunque stabilire il seguente
teorema.
Teorema 9.6.1 Lo schema iterativo
x(k+1) = Ex(k) + q

k0

converge qualunque sia il vettore iniziale x0 al vettore x = Ex + q = A1 b


se e solo se ( E) < 1.
Questo risultato lo si pu provare facilmente, nel caso in cui la
matrice di iterazione E abbia n autovalori distinti e, quindi, possieda n autovettori linearmente indipendenti, per cui lerrore iniziale
e(0) si pu scrivere come e(0) = 1 u(1) + 2 u(2) + . . . + n u(n) , dove 1 , 2 , . . . , n sono delle costanti, mentre u(1) , u(2) . . . u(n) sono
gli autovettori associati, rispettivamente, a 1 , 2 , . . . , n . Supponiamo che gli autovalori siano in ordine decrescente in modulo, cio:
|1 | > |2 | > . . . > |n |, per cui ( E) = |1 |. In tal caso si pu
scrivere
e ( k ) = E k e (0) = E k ( 1 u (1) + 2 u (2) + . . . + n u ( n ) )

= 1 E k u (1) + 2 E k u (2) + . . . + n E k u ( n )
= 1 1k u(1) + 2 2k u(2) + . . . + n kn u(n)
mettiamo in evidenza 1k

1k

1 u

(1)

+ 2

per k si ha

1k 1 u(1)

2k
1k

ik
1k

(2)

k
+ . . . + n nk u(n)
1

0 per i = 2, 3, . . . , n

Ricordiamo che, se un autovalore associato alla matrice A, con u un autovettore ad


esso associato, si ha Ak u = k u).

appunti di calcolo numerico

143

Perci limk e(k) = limk 1k 1 u(1) = 0 se e solo se 1k 0 e


questo si ha se e solo se |1 | < 1. Ma |1 | = ( E): ritroviamo il
risultato visto prima.

9.6.2

Controllo della convergenza

Oltre a sapere che lo schema iterativo converge, importante conoscere quanto velocemente lo schema converge. A tal proposito osserviamo che, in condizioni asintotiche (per k +) vale il seguente
risultato

k e ( k ) k ( E ) k k e (0) k

(9.1)

Scrivendo lequazione (9.1) per literazione k 1 e facendo il rapporto


tra le norme degli errori a due passi successivi si ha:

k e(k) k
( E)
k e ( k 1) k
Ricaviamo, quindi, che il metodo iterativo ha convergenza lineare
con costante asintotica uguale al raggio spettrale della matrice di
iterazione.
La relazione appena trovata utile per stabilire quanto veloce il
metodo iterativo per approssimare la soluzione del sistema con una
certa accuratezza. Ad esempio, vogliamo stabilire a priori quante
iterazioni occorrono per ridurre la norma dellerrore iniziale di un
certo fattore, ad esempio 10 (il che vuol dire ridurre lerrore di un
ordine di grandezza). Vogliamo dunque capire quale deve essere il
k e (0) k
valore di k per cui ke(k) k =
. Ma ke(k) k ( E)k ke(0) k da cui
10
( E ) k k e (0) k

1
k e (0) k
= ( E)k
10
10

Applicando il logaritmo in base 10 ad ambo i membri si ha


k log10 (( E)) 1 = k

1
log10 (( E))

cio occorrono k iterazioni con k dato dal pi piccolo intero che


soddisfa la relazione appena scritta. Meno iterazioni occorrono fare,
pi veloce il metodo.
Si definisce perci velocit asintotica di convergenza
R = log10 (( E)) =

log10 (( Ek ))
k

Osserviamo che, essendo ( E) < 1, nelle ipotesi in cui il metodo


converge, log10 (( E)) < 0 e, di conseguenza, R > 0.
Se vogliamo ridurre lerrore iniziale di una certa quantit e, rifacendo i conti come prima, dobbiamo cercare lintero k che renda valida la
disuguaglianza ke(k) k eke(0) k, sapendo che ke(k) k ( E)k ke(0) k.
Ma allora deve valere la relazione
( E)k ke(0) k eke(0) k = ( E)k e

Questa relazione vale anche per matrici con


autovalori non distinti tra loro.

144

annamaria mazzia

Passando ai logaritmi (di quantit minori di uno) si ha


k log10 (( E)) log10 (e) = k log10 (( E)) log10 (e) = k

log10 (e)
R

Troviamo in questo modo quante iterazioni (il primo intero k che


verifica la relazione precedente) occorre fare per poter ridurre lerrore
iniziale di e.
Grafico di convergenza e velocit asintotica di convergenza. Se si traccia
un grafico semilogaritmico del profilo di convergenza dello schema
iterativo, ponendo sullasse delle ascisse il numero delle iterazioni
e sullasse delle ordinate la norma dellerrore, si pu vedere che
la velocit asintotica di convergenza legata alla pendenza della
retta. Infatti, riconducendoci, per semplicit, al caso in cui la matrice
di iterazione abbia n autovalori distinti tra loro e ordinati in senso
crescente, dalla relazione (vista a pag. 142)
e(k) 1k 1 u(1)
passando alle norme e ai logaritmi in base 10 si ha
log10 ke(k) k k log10 |1 | + costante
La pendenza del grafico lopposto della velocit asintotica di convergenza R.
Nel caso in cui non nota la soluzione esatta x, poich ke(k) k
kx(k) x(k1) k = kd(k) k (valgono le stesse considerazioni viste per
gli schemi iterativi per funzioni non lineari a pag. 64), ritroviamo lo
stesso risultato sul profilo di convergenza semilogaritmico in cui si
pone sullasse delle ascisse il numero delle iterazioni e sullasse delle
ordinate la norma degli scarti.

9.6.3

I metodi

Si scriva la matrice A come somma della matrice che ha i soli elementi


diagonali di A (che chiamiamo D), della matrice costituita dai soli
elementi della parte triangolare bassa di A (che chiamiamo L) e dai
soli elementi della parte triangolare alta di A (che denotiamo con U),
A = L+D+U

Figura 9.3: La matrice A come somma delle


matrici L, D e U .

appunti di calcolo numerico

145

In questo modo facile ricavare i metodi iterativi di Jacobi, GaussSeidel e di rilassamento, che sono i metodi iterativi classici per la
soluzione di sistemi lineari.
Lipotesi da fare che A abbia elementi diagonali diversi da zero (aii 6= 0 per i = 1, 2, . . . , n, n, da cui la matrice diagonale D
invertibile).
Se la matrice A simmetrica, definita positiva, necessariamente
aii 6= 0. Altrimenti, poich A non singolare (se cos non fosse
non potremmo risolvere il sistema), le equazioni del sistema possono
essere riordinate in modo da avere la matrice risultante con elementi
diagonali diversi da zero.

9.6.4

Il metodo di Jacobi

Il metodo di Jacobi (o degli spostamenti simultanei - o rilassamento


simultaneo) si ha ponendo M = D da cui la matrice di iterazione
diventa E J = I D 1 A = I D 1 ( L + D + U ) = D 1 ( L + U ).
Scrivendo lo schema iterativo per Jacobi, si ha, in forma matriciale:

Carl Gustav Jacob Jacobi (1804-1851) fu un


grande matematico tedesco. Tra i suoi numerosi studi ricordiamo quelli sulle funzioni ellittiche, sulla teoria dei numeri e sulla meccanica
celeste.

x ( k +1) = E J x ( k ) + D 1 b
x ( k +1) = D 1 ( L + U ) x ( k ) + D 1 b
Per ricavare questo schema, si pu partire dal sistema lineare Ax = b
e scrivere la matrice A come L + D + U. Si ha

( L + D + U )x = b
si porta a secondo membro ( L + U )x
Dx = ( L + U )x + b
si moltiplicano ambo i membri per linversa della matrice D
x = D 1 ( L + U ) x + D 1 b
si innesca il metodo iterativo considerando il vettore x
a primo membro alliterazione k + 1
a secondo membro alliterazione k
x

( k +1)

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

Componente per componente, il metodo di Jacobi si scrive, per i =


1, 2, . . . , n, come

(k)
( D 1 )ii

( k +1)
xi

1
aii

bi

(( L+U )x
n

)i

(k)
aij x j

j=1,j6=i

o, equivalentemente,

( D 1 )ii
( k +1)

xi

1
aii

( Lx(k) )i
i

(k)
bi
aij x j

j =1

(Ux(k) )i
n

j = i +1

(k)
aij x j

per i = 1, . . . , n

146

annamaria mazzia

La formula la si pu ricavare direttamente, scrivendo, equazione


per equazione, il sistema da risolvere Ax = b:

a11 x1 + a12 x2 + a13 x3 + . . . + a1n xn = b1


a21 x1 + a22 x2 + a23 x3 + . . . + a2n xn = b2
..
.

.
= ..

ai1 x1 + ai2 x2 + ai3 x3 + . . . + ain xn = bi


..
.

.
= ..

an1 x1 + an2 x2 + an3 x3 + . . . + ann xn = bn

Dalla prima equazione isoliamo la prima incognita rispetto a tutte


le altre; dalla seconda equazione isoliamo la seconda incognita e
cos via per le altre equazioni, ottenendo:

a11 x1 = b1 ( a12 x2 + a13 x3 + . . . + a1n xn )


a22 x2 = b2 ( a21 x1 + a23 x3 + . . . + a2n xn )
..
.=

..
.

aii xi = bi ( ai1 x1 + ai2 x2 + . . . + aii1 xi1 + aii+1 xi+1 + . . . + ain xn )


..
.=

..
.

ann xn = bn ( an1 x1 + an2 x2 + an3 x3 + . . . + ann1 xn1 )

Dividendo li-sima equazione per il coefficiente aii , per i = 1, 2, . . . , n,


ricaviamo

1
[b ( a12 x2 + a13 x3 + . . . + a1n xn )]
a11 1
1
x2 =
[b2 ( a21 x1 + a23 x3 + . . . + a2n xn )]
a22
..
..
.=
.

x1 =

1
[b ( ai1 x1 + ai2 x2 + . . . + aii1 xi1 + aii+1 xi+1 + . . . + ain xn )]
aii i
..
..
.=
.

xi =

xn =

1
[bn ( an1 x1 + an2 x2 + an3 x3 + . . . + ann1 xn1 )]
ann

Se pensiamo di partire da un vettore iniziale x(0) , il vettore x(1) si


ottiene dalle equazioni precedenti, ponendo a secondo membro di
ciascuna equazione le componenti del vettore x(0) . Si ricava, in tal

appunti di calcolo numerico

147

modo, la formula ricorsiva dello schema di Jacobi:



i
1 h
(k)
(k)
(k)
( k +1)
b1 a12 x2 + a13 x3 + . . . + a1n xn
x1
=
a11
i

1 h
(k)
( k +1)
(k)
(k)
=
x2
b2 a21 x1 + a23 x3 + . . . + a2n xn
a22
..
..
.=
.
i
h

1
( k +1)
(k)
(k)
(k)
(k)
(k)
xi
=
bi ai1 x1 + ai2 x2 + . . . + aii1 xi1 + aii+1 xi+1 + . . . + ain xn
aii
..
..
.=
.
h

i
1
( k +1)
(k)
(k)
(k)
(k)
xn
=
bn an1 x1 + an2 x2 + an3 x3 + . . . + ann1 xn1
ann
Ritroviamo, dunque, la formula che prima avevamo scritta in modo
compatto.
Il metodo di Jacobi pu essere scritto in modo equivalente in
funzione del residuo r(k) = b Ax(k) mediante la formula x(k+1) =
x ( k ) + D 1 r ( k ) .

9.6.5

Il Metodo di Gauss-Seidel

Nellalgoritmo di Gauss-Seidel si pone M = D + L ottenendo la


matrice ES = I ( D + L)1 A = I ( D + L)1 ( L + D + U ) = ( D +
L)1 U. Lo schema iterativo :

Philipp Ludwig von Seidel (1821-1896) fu


un matematico tedesco. Il suo lavoro pi
importante riguarda le aberrazioni ottiche.

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


Lo schema di Gauss-Seidel si pu ricavare a partire dal sistema lineare
Ax = b nel modo seguente:
Ax = b

( L + D + U )x = b
si porta a secondo membro Ux

( D + L)x = Ux + b
si moltiplicano ambo i membri per linversa della matrice ( D + L)
x = ( D + L)1 Ux + ( D + L)1 b
si innesca il metodo iterativo considerando il vettore x
a primo membro alliterazione k + 1
a secondo membro alliterazione k
x

( k +1)

= ( D + L)1 Ux(k) + ( D + L)1 b

Moltiplicando ambo i membri per ( D + L) si ha

( D + L)x(k+1) = b Ux(k)
Dx(k+1) = b Lx(k+1) Ux(k)
da cui


x(k+1) = D 1 b Lx(k+1) Ux(k)
Componente per componente si ha

148

annamaria mazzia

( k +1)
xi

"
#
i 1
n
1
( k +1)
(k)
=
b
aij x j
aij x j
aii i j
=1
j = i +1

per i = 1, . . . , n

Il metodo detto anche degli spostamenti successivi, in quanto


il calcolo delle componenti del vettore x(k+1) fatto utilizzando le
componenti gi calcolate del vettore stesso. Infatti, per i > 1,
( k +1)

( k +1)

( k +1)

ragionevole pensare che i valori gi calcolati x1


, x2
, . . . , x i 1
possano essere utilizzati per dare una migliore approssimazione del
( k +1)

valore xi
. Dalle equazioni del sistema, ragionando come per il
metodo di Jacobi, possiamo quindi scrivere:


( k +1)
(k)
(k)
(k)
a11 x1
= b1 a12 x2 + a13 x3 + . . . + a1n xn


( k +1)
( k +1)
(k)
(k)
a22 x2
= b2 a21 x1
+ a23 x3 + . . . + a2n xn
..
.=
( k +1)

aii xi



( k +1)
( k +1)
( k +1)
(k)
(k)
= bi ai1 x1
+ ai2 x2
+ . . . + aii1 xi1 + aii+1 xi+1 + . . . + ain xn

..
.=
( k +1)

ann xn

..
.

..
.



( k +1)
( k +1)
( k +1)
( k +1)
= bn an1 x1
+ an2 x2
+ an3 x3
+ . . . + ann1 xn1

Dividendo ambo i membri dellequazione i-sima per aii (per i =


1, 2, . . . , n) si ha:
i

1 h
( k +1)
(k)
(k)
(k)
x1
=
b1 a12 x2 + a13 x3 + . . . + a1n xn
a11

i
1 h
( k +1)
( k +1)
(k)
(k)
x2
=
b2 a21 x1
+ a23 x3 + . . . + a2n xn
a22
..
..
.=
.
i
h

1
( k +1)
( k +1)
( k +1)
( k +1)
(k)
(k)
xi
=
bi ai1 x1
+ ai2 x2
+ . . . aii1 xi1 + aii+1 xi+1 + . . . + ain xn
aii
..
..
.=
.
i
h

1
( k +1)
( k +1)
( k +1)
( k +1)
( k +1)
xn
=
bn an1 x1
+ an2 x2
+ an3 x3
+ . . . + ann1 xn1
ann
Usando il residuo, lo schema di Gauss-Seidel si scrive come
x ( k +1) = x ( k ) + ( D + L ) 1 r ( k )

9.6.6

Il metodo di rilassamento

Ciascuno dei metodi di Jacobi e Gauss-Seidel pu essere anche rilassato tramite un fattore in modo che la nuova approssimazione
( k +1)

xR
sia ottenuta come una combinazione di x(k+1) e x(k) mediante
il fattore . In particolare:
( k +1)

xR

(1 )x(k) + x(k+1)

Abbiamo usato in pedice la notazione R


per indicare il vettore ottenuto con il rilassa( k +1)

mento x R
notazione.

. Poi abbandoneremo questa

appunti di calcolo numerico

Questa operazione viene fatta direttamente nel momento in cui si


stabilisce il metodo iterativo con rilassamento.
Si pu osservare che il metodo di Jacobi rilassato non produce
effettivi miglioramenti rispetto al metodo non rilassato. Invece, il
metodo di Gauss-Seidel rilassato pu produrre un metodo molto
pi veloce in termini di convergenza e, quindi, preferibile rispetto al
metodo senza rilassamento. Come metodo di rilassamento, dunque,
consideriamo il metodo di rilassamento ottenuto da Gauss-Seidel. Per
scelte di nellintervallo ]0, 1[ si parla di metodo Sotto-Rilassato, o
Under-Relaxation (e in genere usato per ottenere convergenza nella
soluzione di sistemi che non convergono con il metodo di GaussSeidel). Per valori di nellintervallo [1, 2[ si ha, invece, il metodo
noto come metodo di sovra-rilassamento o SOR (Successive OverRelaxation) usato per accelerare la convergenza in sistemi che sono
convergenti con il metodo di Gauss-Seidel.
Lo schema di rilassamento, applicato al metodo di Gauss-Seidel,
dato da

( k +1)
xi

(k)
(1 ) x i

"
#
i 1
n

( k +1)
(k)
+
b
aij x j
aij x j
aii i j
=1
j = i +1

per i = 1, . . . , n

La matrice di iterazione del metodo di rilassamento si ricava


scrivendo in forma matriciale lalgoritmo appena descritto


x(k+1) = (1 )x(k) + D 1 b Lx(k+1) Ux(k)
h
i
x(k+1) = (1 ) I D 1 U x(k) D 1 Lx(k+1) + D 1 b
h
i
( I + D 1 L)x(k+1) = (1 ) I D 1 U x(k) + D 1 b
Moltiplicando ambo i membri per D, si ricava

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


La matrice di iterazione del metodo dunque
E = ( D + L)1 [(1 ) D U ]

= ( D + L)1 [(1 ) D ( A D L)]


= ( D + L)1 [( D + L) A]
h
i
= I ( D + L)1 A
A questo punto, ci si pu chiedere quale sia l ottimale nel metodo
di rilassamento. L ottimale quello che fa s che il metodo di
rilassamento converga nel minor numero di iterazioni (quindi, l
ottimale rende minimo il raggio spettrale della matrice di iterazione).
Per particolari matrici A, sar possibile stabilire a priori l ottimale
per risolvere il sistema lineare Ax = b.

149

150

9.6.7

annamaria mazzia

Convergenza dei metodi di Jacobi, Gauss-Seidel, rilassamento

Le matrici di iterazione dei tre metodi appena descritti sono scritte in


Tabella 9.1
metodo
Jacobi
Gauss-Seidel
rilassamento

matrice
E J = I D 1 A = D 1 ( L + U )
ES = I ( D + L)1 A = ( D + L)1 U
E = I ( D + L)1 A

Tabella 9.1: Matrici di iterazione dei metodi di


Jacobi, Gauss-Seidel, rilassamento

Perch ci sia convergenza, il raggio spettrale della matrice di


iterazione deve essere minore di uno.
Per i metodi di Jacobi e di Gauss-Seidel si pu provare la convergenza del metodo, se la matrice A ha una delle seguenti caratteristiche:

G
G

A diagonalmente dominante in senso stretto

A a diagonalmente dominante (per righe o per colonne) ed


irriducibile.
Si ha inoltre, questo risultato:

Una matrice si dice irriducibile se non pu


essere messa sotto la forma di matrice riducibile,
a dire, non pu essere scritta come
 vale 

Q
.
R

se A simmetrica non singolare con elementi principali reali e


positivi, allora il metodo di Gauss-Seidel convergente se e solo se
A definita positiva.

Per quanto riguarda il metodo di rilassamento, condizione necessaria


per la convergenza | 1| < 1, cio deve appartenere allintervallo [0, 2] ( per 0 < < 1 si ha sotto-rilassamento e per 1 < 2
si ha sovra-rilassamento).
Difatti il determinante della matrice di iterazione del metodo di
rilassamento vale det E = (1 )n e, poich il prodotto degli autovalori di una matrice uguale al determinante della matrice stessa,
segue la relazione ( E ) |1 |. Quindi, se |1 | > 1, sicuramente il metodo di rilassamento non converger. Perci, condizione
necessaria per la convergenza |1 | < 1.
Molto importante il seguente teorema (che non dimostriamo).
Teorema 9.6.2 (Ostrowski-Reich) Se A definita positiva e un numero reale nellintervallo ]0, 2[, allora il metodo di rilassamento convergente.

La convergenza del metodo di rilassamento si ha, inoltre, per


A simmetrica con elementi diagonali positivi ed elementi extradiagonali negativi o nulli, se e solo se A definita positiva.

Un altro interessante teorema mette in relazione il metodo di rilassamento con i metodi di Jacobi e di Gauss-Seidel, sia per quanto
riguarda la convergenza, sia per quanto riguarda il valore ottimale
del parametro , in corrispondenza di matrici A che godono della
cosidetta propriet A e che siano coerentemente ordinate.

Dalla definizione di E si ha det E =


det [( D + L)1 ((1 ) D U )].
Poich il determinante del prodotto di due
matrici uguale al prodotto dei determinanti
delle matrici stesse, si ha det E =
det [( D + L)1 ] det [(1 ) D U )].
Consideriamo ora il fatto che il determinante
di una matrice triangolare uguale al
prodotto degli elementi della diagonale principale. Per il primo determinante abbiamo
det [( D + L)1 ] = (det ( D + L))1 .
Ora la matrice D + L triangolare
e il suo determinante coincide con il
prodotto degli elementi della diagonale,
vale a dire con det D.
Si ha quindi:
det [( D + L)1 ] = (det D )1 . Per il
determinante det [(1 ) D U )] (di
una matrice che sempre triangolare), gli
elementi della diagonale principale sono gli
elementi della matrice diagonale D ciascuno
dei quali moltiplicati per (1 ). Perci:
det [(1 ) D U )] = (1 )n det D.
Arriviamo perci al risultato: det E =
(det D )1 (1 )n det D = (1 )n .
Inoltre, considerando i autovalori della matrice E , per i = 1, 2, . . . , n e
( E ) il raggio spettrale, si ha det E =
in=1 i in=1 ( E ) = ( E )n da
cui segue (1 )n ( E )n , cio
( E ) |1 |.

appunti di calcolo numerico

151

Definizione 9.6.1 Una matrice A, di dimensione n, si dice che ha propriet A se esiste una matrice di permutazione
P tale che la matrice PAP T
!
D1 A1
abbia la forma PAP T =
dove D1 e D2 sono matrici diagonali.
A2 D2
Una matrice con propriet A pu essere anche chiamata matrice
biciclica.
In modo equivalente, si pu dire che una matrice A, di dimensione
n, ha propriet A se linsieme dei numeri naturali {1, 2, . . . , n} pu
essere scomposto in due sottoinsiemi non vuoti e complementari S
e T in modo tale che i coefficienti non nulli aij 6= 0 si hanno se gli
indici i e j sono coincidenti tra loro, cio i = j, oppure se gli indici
i e j non appartengono allo stesso insieme S o T, vale a dire che se
lindice i S allora j T, oppure se i T allora j S.

Due insiemi S e T non vuoti si dicono complementari di V = {1, 2, . . . , n} se S 6= ,


T 6= , S T = V e, inoltre, se i S, i 6
T e, viceversa, se j T, j 6 S

Esempio La matrice tridiagonale

2 1 0
0
1 2 1 0

A=

0 1 2 1
0
0 1 2
ha propriet A (o biciclica): permutando la prima e quarta riga e
la prima e quarta colonna, mediante la matrice di permutazione

0 0 0 1
0 1 0 0

P=
si ha
0 0 1 0
1 0 0 0

2
0

PAP T =
1
0

0
2
1
1

1 0
1 1

= D1 = D2 =
2
0
0
2

2
0

0
2

Usando laltra definizione, basta scegliere come insiemi S e T, gli


insiemi S = {1, 3} e T = {2, 4}.
_
Definizione 9.6.2 Una matrice si dice coerentemente ordinata in relazione
ad un vettore di ordinamento q, di lunghezza n, se per ogni coefficiente aij
non nullo, con i 6= j, si verifica:

G
G

se j > i allora q j qi = 1
se j < i allora q j qi = 1

Unaltra definizione di matrice con coerente ordinamento considera


la matrice A data non dalla scomposizione A = L + D + U che
abbiamo visto fino ad ora ma come A = D ( L A + I + U A ), (osserviamo
che, rispetto alla prima scomposizione, abbiamo messo in evidenza
la matrice diagonale D e quindi le matrici triangolari superiore e
inferiore sono L A = D 1 L e U A = D 1 U). Sia D non singolare.
Allora la matrice A detta coerentemente ordinata se gli autovalori

Considerando la matrice dellesempio precedente, si pu prendere il vettore di ordinamento q = (q1 , q2 , q3 , q4 ) = (1, 2, 3, 4). Si verifica infatti, per a12 , q2 q1 = 2 1 = 1; per
a21 , q1 q2 = 1 2 = 1 e cos via per
gli altri elementi non nulli. Quindi la matrice
coerentemente ordinata.

152

annamaria mazzia

della matrice J () = L A + 1 U A , con 6= 0 sono indipendenti dal


parametro .
Le matrici con
! propriet A (o bicicliche) che sono gi nella forma
D1 A1
A=
(senza dover fare permutazioni di righe o colonne)
A2 D2
sono coerentemente ordinate.
Le matrici tridiagonali sono un altro esempio di matrici bicicliche
e coerentemente ordinate.
Fatta questa premessa sulle matrici bicicliche e coerentemente
ordinate, possiamo dare il seguente risultato (che non dimostriamo).
Teorema 9.6.3 (Young) Se A una matrice con propriet A e coerente
ordinamento e 0 < < 2, allora:

se autovalore della matrice di iterazione di Jacobi E J , ogni che


verifica la relazione ( + 1)2 = 2 2 autovalore di E ;

se autovalore non nullo di E , allora ogni che verifica la relazione


precedente autovalore di E J ;

se gli autovalori di E J sono reali e il metodo di Jacobi converge (( E J ) <


1), esiste uno ed uno solo opt che rende ottimale il metodo di rilassamento, tale cio che (opt ) = min0< <2 ( E ). Risulta
2

opt =
1+

1 ( E J )2

( Eopt ) = opt 1

Per = 1 il metodo di rilassamento coincide con il metodo di


Gauss-Seidel. Allora, per matrici con propriet A e coerentemente
ordinate, nelle ipotesi del teorema di Young, valendo la relazione
( + 1)2 = 2 2 , si trova, per = 1, 2 = 2 da cui ( ES ) =
( E J )2 . Come conseguenza, si ha che il metodo di Gauss-Seidel ha
velocit doppia rispetto al metodo di Jacobi.

9.7

Esercizi

Esercizio
9.7.1
8 2

A = 7 5
1 0

Siadato il sistema
lineare Ax = b, dove
6
30


0 b = 34
5
7

(a) Provare che gli schemi di Jacobi e di Seidel convergono e calcolare la


velocit asintontica di convergenza di entrambi gli schemi.
(b) A partire dallo stesso vettore iniziale x(0) = (0 0 0) T , calcolare le
approssimazioni x(1) e x(2) che si ottengono applicando lo schema di
Jacobi e lo schema di Seidel.
Svolgimento

1
5 bicicli3
ca e coerentemente ordinata.
 Infattisi ri2
0
conosce la matrice D1 =
, la
0 3
 

1
matrice D2 = 3 , mentre A1 =
e
5

A2 = 1 2 .
2
La matrice A = 0
1

1
La matrice A = 1
0

0
3
2

2
3
5

0
2 tridiago6

nale (gli elementi non nulli sono sulla diagonale principale e sulle diagonali immediatamente sopra e sotto la diagonale principale).
Quindi biciclica e coerentemente ordinata.

appunti di calcolo numerico

(a) la matrice A non diagonalmente dominante n per righe n


per colonne (vedasi la seconda riga e la terza colonna). Non
possiamo usare il criterio di matrice diagonalmente dominante per
provare la convergenza dei due metodi. La matrice A biciclica e
coerentemente ordinata!(si veda lo schema a croce che individua
5 0
D1 = (8) e D2 =
):
0 5
8
7
1

2
5
0

6
0
5

Quindi se proviamo che lo schema di Jacobi converge, cio che


lautovalore di massimo modulo della matrice di Jacobi reale
e in modulo minore di 1, allora, poich per matrici bicicliche e
coerentemente ordinate vale ( E J )2 = ( ES ), allora anche il metodo
di Gauss-Seidel converger alla soluzione (da ( E J ) < 1 segue
( ES ) < 1). La matrice di Jacobi E J = I D 1 A cio

0
2/8 6/8
0
1/4 3/4

E J = 7/5
0
0 = 7/5
0
0
1/5
0
0
1/5
0
0
Troviamo gli autovalori della matrice E J imponendo det ( E J I ) =
0.




7/5

1/5


1/4 3/4
1 7
3 1

0 = 3 + + = 0

4 5
4 5
0

3
7
+ ),
20 20

Una radice = 0, e le altre due sono = 1/2 = 0.5 =


0.707106781.
Si ha: 0 = det ( E J I ) = 3 + (

Gli autovalori sono tutti reali e quello di massimo modulo =


0.707106781 < 1.
C, dunque, convergenza per i metodi di Jacobi e di Gauss-Seidel
(( ES ) = ( E J )2 = 0.5). Le velocit di convergenza valgono
R J = log10 (( E J )) = 0.1505149
RS = log10 (( ES )) = 0.301029995 = log10 (( E J )2 ) = 2R J
Lo schema di Jacobi :

1
( k +1)
(k)
(k)

x1
= (30 2x2 6x3 )

(b)
1
( k +1)
(k)
x2
= (34 7x1 )

x ( k +1) = 1 (7 x ( k ) )
3
1
5

Partendo dal vettore x (0) con


componenti tutte nulle, abbiamo
k

x(1k)

x(2k)

x(3k)

0
1
2

0
3.75
1.0

0
6.8
1.55

0
1.4
0.65

153

154

annamaria mazzia

Lo schema di Seidel :

x (k+1) = 1 (30 2x (k) 6x (k) )

2
3
1

1
( k +1)
( k +1)
x2
= (34 7x1
)

( k +1)
1
( k +1)

x
)
= (7 x1
3
5

Partendo dal vettore x (0) con


componenti tutte nulle, abbiamo
k
0
1
2

(k)

x1
0
3.75
2.875

(k)

x2
0
1.55
2.775

(k)

x3
0
0.65
0.825

Esercizio
9.7.2 Dato
il sistema Ax = b con
5 0 10

A = 0 3 15
2 1
(a) dire per quali valori di il metodo di Jacobi converge.
(b) trovare il valore di in corrispondenza del quale il metodo SOR ha
un valore di omega ottimo opt = 3/2. Per tale valore trovare la
velocit asintotica di convergenza del metodo SOR.

Svolgimento
(a) La matrice dipende dal parametro quindi a priori non possiamo
dire se Jacobi converge o meno.
Scriviamo la matrice di iterazione del metodo di Jacobi come


1/5
0
0
0 0 10
0


E J = D 1 ( L + U ) = 0
1/3
0 0 0 15 = 0
0
0
1/
2 1 0
2/

0
0
1/

Gli autovalori si calcolano imponendo det ( E J I ) = 0, vale a


dire



0
2

9


=0

5 = 0 vale a dire 3 +
0

2/ 1/
3
Ricaviamo gli autovalori = 0 e = .

3
Perch ci sia convergenza deve dunque essere < 1 ovvero

3 < . Ricaviamo la relazione > 9.


(b) Dalla relazione dellopt , opt =

, valida perch
1 + 1 ( E J )2
la matrice biciclica e coerentemente ordinata e dal momento che
gli autovalori della matrice di Jacobi sono reali e, in valore assoluto,
minori di uno, si ha:

1+

2
3
1
8
9
81
= = = 1 9/ =
= = =
= 10.125
2
3
9

8
1 9/

5
0

appunti di calcolo numerico

3
= 1.5 segue opt = opt 1 = 0.5, da cui R =
2
log10 (opt ) = 0.3010299957.

Da opt =

Esercizio
lineare
il sistema
Ax = b dove:
9.7.3 Dato
9
6 1 3


b=3
A = 1 8 2
4 3 10
14
(a) Dallesame della matrice, dire se il metodo di GaussSeidel
converge.
(b) Partendo dal vettore iniziale x (0) =
x (1) , x (2) , x (3) con il metodo di GaussSeidel.

(0, 0, 0)T , calcolare

1. Stimare la costante asintotica dellerrore M e quindi la velocit di


convergenza R.

Svolgimento
(a) La matrice diagonalmente dominante in senso stretto (per righe
e per colonne), quindi il metodo di Gauss-Seidel converge.
(b) Lo schema di Seidel :

1
( k +1)
(k)
(k)

x1
= (9 x2 3x3 )

1
( k +1)
( k +1)
( k +1)
= (3 x1
)
x2
2x3

x (k+1) = 1 (14 4x (k+1) 3x (k+1) )


3
2
1
10
Partendo dal vettore iniziale assegnato abbiamo:

k=1

k=2

k=3

1.50000000000000

x1 = 0.187500000000000
0.743750000000000

1.09687500000000

x2 = 5.195312499999999E 002
0.945664062500000

1.01850911458333

x3 = 1.127034505208335E 002
0.989215250651042

Per stimare M (che la costante asintotica dellerrore e, in questo


caso, il raggio spettrale della matrice di iterazione) basta fare il
rapporto tra le norme dei vettori degli scarti d3 e d2 .
Ora:

155

156

annamaria mazzia

0.403125000000000

d2 = x2 x1 = 0.135546875000000
0.201914062500000

7.836588541666667E 002

d3 = x3 x2 = 4.068277994791664E 002
4.355118815104175E 002

La scelta della norma vettoriale da utilizzare indifferente (abbiamo studiato norme vettoriali equivalenti e quindi il risultato che
otterremo andr bene qualunque sia la norma vettoriale che applicheremo). Se scegliamo, ad esempio, di usare la norma euclidea
dei vettori, abbiamo M = 0.209119. Se invece usiamo la norma
infinito abbiamo M = 0.194396.
La velocit di convergenza R pu essere quindi stimanta applicando la formula R = log10 ( M ) e abbiamo il valore 0.679607
o 0.711313 a seconda che consideriamo la stima di M ottenuta
mediante la norma euclidea o la norma infinito.

9.8

Domande di riepilogo

1. Quale la definizione di norma di vettori?


2. Quali sono le prinicipali norme che abbiamo studiato?
3. Come si definiscono le norme su matrici?
4. Cosa significa che una norma su matrici compatibile con una
norma su vettori?
5. Cosa significa che una norma su matrici indotta da una norma
su vettori?
6. Definire le norme 1 e infinito.
7. Dare la definizione di norma di Frobenius.
8. Cosa la traccia di una matrice?
9. Come si definiscono gli autovalori e autovettori di una matrice?
10. Una matrice di dimensione n, quanti autovalori possiede?
11. Che relazione c tra gli autovalori di una matrice e la sua traccia
e determinante?
12. Cosa il raggio spettrale di una matrice?
13. Come si definisce la norma 2 su vettori?
14. Che relazione esiste tra il raggio spettrale di una matrice e una
norma naturale su matrice?
15. Come si possono definire i metodi iterativi classici per risolvere
sistemi lineari? In quale forma possono essere scritti?

appunti di calcolo numerico

16. Che differenza c tra un metodo diretto e un metodo iterativo


per la soluzione di sistemi lineari?
17. Che cosa significa che una matrice sparsa?
18. Definire il residuo.
19. Mettere in relazione un metodo iterativo con lo schema di punto
fisso.
20. Qual il teorema generale di convergenza per i metodi iterativi
classici? Quale caso particolare abbiamo dimostrato?
21. Come si definisce la velocit asintotica di convergenza e a cosa
serve?
22. In un grafico di convergenza in scala semilogaritmica sullasse
delle ordinate, in cui sullasse delle ascisse si pone il numero
delle iterazioni effettuate e sullasse delle ordinate i logaritmi della
norma del vettore degli scarti ad ogni iterazione, cosa rappresenta
la pendenza della retta del profilo di convergenza?
23. Che ordine di convergenza hanno i metodi iterativi classici?
24. Come si definisce la costante asintotica di convergenza e in quale
modo pu essere stimata?
25. Descrivere il metodo di Jacobi, partendo dal sistema da risolvere
e scomponendo la matrice del sistema nelle tre matrici L, D, U.
(Queste tre matrici sono le stesse della fattorizzazione LDU?)
26. Come si scrive la matrice di iterazione del metodo di Jacobi?
27. Descrivere il metodo di Gauss-Seidel, partendo dal sistema da
risolvere e scomponendo la matrice del sistema nelle tre matrici L,
D, U.
28. Come si scrive la matrice di iterazione del metodo di GaussSeidel?
29. Cosa significa effettuare un rilassamento tramite un fattore ?
Quale dei due metodi che abbiamo studiato viene rilassato? Come
diventa lo schema iterativo? Quale la matrice di iterazione che si
ricava?
30. Quali sono i teoremi di convergenza per i metodi di Jacobi e di
Gauss-Seidel che abbiamo enunciato?
31. Per quali valori di certo che il metodo di rilassamento non
pu convergere? Per quale motivo?
32. Quale la condizione necessaria (ma non sufficiente) di convergenza per il metodo di rilassamento? Per quale motivo?
33. Quali teoremi abbiamo visto che assicurano la convergenza del
metodo di rilassamento?

157

158

annamaria mazzia

34. Cosa significa che una matrice biciclica o con propriet A?


35. Cosa significa che una matrice coerentemente ordinata?
36. Abbiamo studiato alcune matrici che sono sia bicicliche sia coerentemente ordinate: quali sono?
37. Cosa assicura il teorema di Young e sotto quali ipotesi?

10 Problemi non lineari in pi variabili

10.1

Due problemi da due diversi ambiti dellingegneria

Diversi problemi che si incontrano nei pi svariati campi dellingegneria vanno risolti con tecniche numeriche molto pi complicate
rispetto a quelle viste fino ad ora. In questo capitolo cercheremo di
utlizzare le conoscenze gi fatte e di ampliarle proprio per risolvere
problemi realistici che richiedono maggiori attenzioni.

In ingegneria chimica, lanalisi dei processi chimici di separazione,


di miscelazione e dei reattori chimici (un esempio: la cattura di
anidride carbonica con lutilizzo di sorbenti solidi in un reattore
di assorbimento) si basa sulle equazioni di bilancio di materia e
di energia totale, cio la somma dellenergia interna e dellenergia
meccanica. Da un punto di vista matematico, questi bilanci sono
rappresentati da un sistema di equazioni alle derivate ordinarie, in
cui la variabile indipendente data dal tempo. In condizioni di
stazionariet (eliminando quindi la dipendenza dal tempo), queste
equazioni diventano un sistema algebrico di equazioni non lineari
in pi variabili. Come risolverlo? Una strada utilizzare il metodo
di Newton per sistemi di pi variabili. Ed quello che faremo noi!

In ingegneria aerospaziale, un problema molto attuale legato


alla misura della posizione di un punto rispetto a un sistema di
riferimento implicitamente definito dalle coordinate di un certo
numero n di punti noti (pensiamo al sistema GPS, basato su un
certo numero di satelliti, per poter determinare la posizione di
un punto). Una tecnica utilizzata in questo ambiti data dallintersezione inversa e dai minimi quadrati, che vengono applicati
mediante una linearizzazione, come vedremo nel seguito.

Vediamo, dunque, che si tratta di allargare il campo delle conoscenze gi fatte:

come usare il metodo di Newton-Raphson studiato per trovare


gli zeri di una funzione se ora abbiamo pi funzioni e queste
dipendono da pi variabili?

Ho affermato che le matematiche sono molto utili per abituare la mente a un raziocinio
esatto e ordinato; con ci non che io creda
necessario che tutti gli uomini diventino dei
matematici, ma quando con questo studio
hanno acquisito il buon metodo di ragionare,
essi lo possono usare in tutte le altri parti delle nostre conoscenze.
John Locke

160

annamaria mazzia

come applicare la tecnica di approssimazione ai minimi quadrati


su un problema pi complicato della retta di approssimazione, che
abbiamo gi visto?

In questo capitolo, cercheremo di rispondere a queste due domande.

10.2

Metodo di Newton per sistemi di equazioni in pi


variabili

Consideriamo, per semplicit, un sistema di due equazioni in due


incognite

f (x , x ) = 0
1 1 2
f 2 ( x1 , x2 ) = 0
Questo stesso sistema si pu scrivere in forma vettoriale come f(x) =
0 dove x = ( x1 , x2 ) T e f(x) = ( f 1 (x), f 2 (x)) T .
Esempio Consideriamo il sistema di equazioni in cui f 1 ( x1 , x2 ) =
+ 4x22 36 e f 2 ( x1 , x2 ) = x12 x2 1. Lequazione f 1 ( x1 , x2 ) = 0
rappresenta lequazione di unellisse, mentre lequazione f 2 ( x1 , x2 ) =
0 descrive la parabola x2 = x12 1
Dalla figura 10.1, si vede come la parabola e lellisse si intersecano
in due punti, 1 e 2 di coordinate date, in maniera approssimata,
dai valori 1 (1.65, 1.71) e 2 (1.65, 1.71). Daltra parte, non
difficile trovare in maniera analitica le radici del sistema proposto

9x2 + 4x2 36 = 0
2
1
x 2 x2 1
=0
9x12

Figura 10.1: Lintersezione di unellisse e di


una parabola.

Basta scrivere x2 in funzione di x1 nella seconda equazione e sostituire


nella prima.
facilmente che le soluzioni reali per x1 sono date
sSi ricava

1 + 513
da x1 =
= 1.64504951695277, da cui x2 = x12 1 =
8
1.70618791322653. Le radici del sistema corrispondono ai punti di
intersezione delle due curve. Non sempre, per, si riesce a trovare
una soluzione analitica! Ed per questo che ci serve un metodo per
trovarle numericamente.
_
Vediamo, quindi, come possiamo generalizzare il metodo di NewtonRaphson. Nel seguito assumiamo che la funzione vettoriale f ammetta
derivate parziali e che siano limitate almeno fino allordine due.
Seguendo una strada del tutto analoga a quella percorsa per il
metodo di Newton-Raphson per trovare le radici di unequazione
(in una sola variabile), e come abbiamo fatto per i metodi iterativi
per sistemi lineari, cercheremo di costruire un metodo iterativo che,
partendo da un vettore iniziale x(0) generi una successione di vettori
x(k) che converga alla soluzione esatta x del problema, per cui vale
la relazione f(x ) = 0. Il caso che stiamo studiando, per semplicit,

Ricordiamo che, data una funzione di due


variabili f ( x1 , x2 ) la derivata parziale di f rispetto alla variabile x1 in un punto ( x1 , x2 ),

f ( x1 , x2 )
, altro non
x1
che la derivata della funzione g( x1 ) =
f ( x1 , x2 ) nel punto x1 (consideriamo fissata
la variabile x2 = x2 e facciamo variare solo
la x1 ). Allo stesso modo la derivata parziale della f rispetto alla variabile x2 nel punto
f ( x1 , x2 )
( x1 , x2 ), che chiamiamo
, la
x2
derivata della funzione h( x2 ) = f ( x1 , x2 )
nel punto x2 . Nel caso di una funzione vettoriale come f = ( f 1 , f 2 ) lipotesi che chieche denotiamo come

diamo sia soddisfatta che ciascuna delle


funzioni di cui composta, f 1 e f 2 , ammetta
derivate parziali prime e seconde e queste
derivate siano continue e limitate.

appunti di calcolo numerico

161

ha dimensione 2 (la funzione vettoriale e i vettori sono di dimensione


2), ma il discorso vale anche per problemi non lineari di dimensione
maggiore.
Quando abbiamo ricavato lo schema di Newton-Raphson per funzioni scalari, abbiamo utilizzato la formula di Taylor. Ci serve, allora,
lanaloga formula per funzioni vettoriali (ci limitiamo a considerare
la formula per il caso particolare che stiamo esaminando).
Sia data, quindi, una funzione vettoriale f = ( f 1 , f 2 ) T , dove f 1 e
f 2 sono funzioni che dipendono dalle variabili ( x1 , x2 ), che possiamo
scrivere come vettore x = ( x1 , x2 ). Assumiamo che la funzione f
abbia le derivate continue e limitate almeno fino allordine 2. Allora,
(0) (0)
dati i vettori x(0) = ( x1 , x2 ) e x = x(0) + p, dove p = ( p1 , p2 ) un
vettore di direzione, la formula di Taylor di centro x(0) in x si pu
scrivere come
f(x(0) + p) = f(x(0) ) + J (x(0) )p + termini che dipendono dakpk2 .
dove k k una norma su vettori mentre J (x(0) ) la cosiddetta
matrice Jacobiana della funzione f in x(0) , i cui elementi sono dati
dalle derivate parziali prime delle componenti di f in x(0) :

(0) (0)
(0) (0)
f 1 ( x1 , x2 ) f 1 ( x1 , x2 )

x1
x2
J ( x (0) ) =

f 2 ( x (0) , x (0) ) f 2 ( x (0) , x (0) )


2
2
1
1
x1
x2
Componente per componente, la formula di Taylor diventa
(0)

(0)

(0)

(0)

(0)

(0)

(0)

(0)

f 1 ( x1 + p1 , x2 + p2 ) = f 1 ( x1 , x2 ) +

(0)

(0)

f 1 ( x1 , x2 )
f 1 ( x1 , x2 )
p1 +
p2 + termini di ordine superiore
x1
x2

(0)
f 2 ( x1

(0)
p1 , x2

f 2 ( x1 , x2 )
f 2 ( x1 , x2 )
p1 +
p2 + termini di ordine superiore
x1
x2

(0)

+ p2 ) =

(0)

(0) (0)
f 2 ( x1 , x2 ) +

Per capire la formula di Taylor in due dimensioni e, successivamente, il metodo di Newton, conviene pensare al vettore x(0) come ad un
2
punto dello spazio R e a p come ad un vettore di direzione. Quando
ci muoviamo dal punto x(0) nella direzione data da p, arriviamo al
punto x(0) + p (si veda figura 10.2).
A questo punto, possiamo ricavare il metodo di Newton. Come
2
nel caso scalare, partiamo da un punto iniziale (questa volta in R )
x(0) e generiamo una successione di punti x(1) , x(2) , . . ., x(k) , . . . dove
il valore x(k+1) si ottiene applicando la formula di Taylor di centro
x(k) e secondo una direzione p scelta in questo modo: se da x(k)
volessimo arrivare in un solo passo alla soluzione esatta x , (dove vale
f(x ) = 0), basterebbe scegliere come direzione p la differenza tra x
e x(k) : p = x x(k) . In tal caso 0 = f(x ) = f(x(k) + p). Applicando
la formula di Taylor, avremmo
0 = f(x(k) + p) = f(x(k) ) + J (x(k) )p + termini di ordine superiore
Tuttavia, noi non conosciamo la soluzione esatta e quindi neanche
sappiamo la direzione p da considerare. Usiamo, per, la relazione

162

annamaria mazzia

Figura 10.2: Il vettore x(0) , visto come punto,


la direzione data da p e il vettore x(0) + p,
visto come punto.

precedente per definire una direzione p(k) che ci permetta di costruire


la nuova approssimazione x(k+1) . Trascurando i termini di ordine
superiore e richiedendo
f ( x(k) ) + J ( x(k) ) p(k) = 0
possiamo trovare la direzione p(k) in modo tale che la nuova approssimazione sia il vettore dato da x(k+1) = x(k) + p(k) .
Il ragionamento che abbiamo fatto stato molto simile a quello
per il metodo di Newton-Raphson per funzioni scalari. Solo che
ora stiamo lavorando con vettori e per trovare la nuova direzione
p(k) dobbiamo risolvere un sistema (questa volta lineare perch i
coefficienti della matrice J sono valutati in un vettore assegnato)
J ( x(k) ) p(k) = f ( x(k) )
Osserviamo subito che non assicurato che la matrice Jacobiana sia
sempre non singolare, per qualunque scelta di x(k) (e quindi non
detto che possiamo sempre risolvere il sistema precedente). Tuttavia,
nei vettori soluzione del sistema da risolvere e in un intorno di essi, il
determinante della matrice Jacobiana diverso da zero: ci assicura
che possiamo utilizzare questo metodo localmente.
Lalgoritmo di Newton per trovare le radici di sistemi non lineari
diventa quindi

G
G

Partire da unapprossimazione iniziale x(0)


Per k = 0, 1, 2, . . . fino a convergenza
Risolvere il sistema J (x(k) )p(k) = f(x(k) )
Porre la nuova approssimazione x(k+1) = x(k) + p(k)

La convergenza basata sul controllo della norma degli scarti tra due
approssimazioni successive, vale a dire sulla norma della direzione
p(k) . Si pu anche aggiungere un controllo sulla norma di f(x(k) ).

appunti di calcolo numerico

Esempio Riprendiamo lesempio di pag. 160. La matrice


jacobiana data da
J (x) =

18x1
2x1

8x2
1

Se consideriamo x(0) = (0, 0) T , la matrice jacobiana ha determinante


uguale a zero, quindi non possiamo applicare il metodo partendo da
questo punto.
Partiamo invece da x(0) = (1, 1) T : il metodo converge alla soluzione 1 . Ecco i valori che troviamo, per ogni iterazione, della norma
euclidea di p(k) e di f(x(k) ) e delle componenti del vettore x(k) .

k
0
1
2
3
4
5
6

k p ( k ) k2
2.000000e-10
1.228623e+00
2.729148e-01
1.924654e-02
1.112225e-04
3.759668e-09
2.633315e-16

kf(x(k) )k2
2.302173e+01
1.022848e+01
6.073071e-01
3.326709e-03
1.120144e-07
7.108896e-15
0.000000e+00

(k)

x1
1.0000000000000000
1.9117647058823530
1.6642652418726938
1.6451607390354450
1.6450495207124343
1.6450495169527666
1.6450495169527668

(k)

x2
1.0000000000000000
1.8235294117647058
1.7085228106205075
1.7061888752349927
1.7061879132266946
1.7061879132265310
1.7061879132265312

Se, invece, partiamo da x(0) = (0.5, 1) T , il metodo converge a 2 ,


come possiamo vedere dalla tabella:

k
0
1
2
3
4
5
6

k p ( k ) k2
2.000000e-10
2.702083e+00
1.102160e+00
3.044172e-01
2.769474e-02
2.330903e-04
1.651351e-08

kf(x(k) )k2
2.980143e+01
6.267123e+01
1.093291e+01
8.391335e-01
6.945470e-03
4.919889e-07
0.000000e+00

(k)

x1
-0.5000000000000000
-3.0735294117647061
-1.9773856415813829
-1.6729773676003774
-1.6452826237649281
-1.6450495334662778
-1.6450495169527668

(k)

x2
1.0000000000000000
1.8235294117647058
1.7085228106205077
1.7061888752349932
1.7061879132266946
1.7061879132265312
1.7061879132265312

_
Si pu dimostrare che, se in un intorno di una radice semplice x ,
la matrice Jacobiana J (x) ha inversa limitata e le derivate continue,
allora il metodo di Newton converge quadraticamente, cio esiste una
costante M R tale che

k x x ( k +1) k M k x x ( k ) k 2
in un intorno di x , quindi per kx x(k) k sufficientemente piccoli.
Nellesempio precedente, si pu vedere convergenza quadratica
utilizzando gli scarti al posto degli errori:

k x ( k +1) x ( k ) k M k x ( k ) x ( k 1) k 2

163

164

10.3

annamaria mazzia

Minimi quadrati non lineari

Il problema dellapprossimazione ai minimi quadrati, che abbiamo


visto brevemente al Capitolo 7, molto vasto e richiederebbe un
approfondimento che non pu essere fatto in un semplice corso di
Calcolo Numerico. Proprio per questo, ora affronteremo solo un
aspetto dei minimi quadrati non lineari, applicandolo direttamente al
problema che vogliamo affrontare.
Il sistema GPS (Global Positioning System) permette di determinare
la posizione di un ricevitore utilizzando le distanze misurate rispetto
a punti dalle coordinate note. Questi punti dalle coordinate note sono
i satelliti, che trasmettono un segnale in direzione della terra.
Un ricevitore GPS misura il tempo richiesto da un segnale per
propagarsi da un satellite GPS fino al ricevitore stesso. Poich il
segnale viaggia alla velocit della luce, lintervallo di tempo pu essere
convertito in distanza moltiplicandolo per la velocit della luce stessa.
In assenza di errori (quindi sincronizzazione perfetta tra lorologio
presente nel ricevitore e quello nel satellite, mancanza di ionosfera e
troposfera, che, invece, rallentano larrivo del segnale, ...), una misura
di questo tipo ci permette di avere informazioni sulla posizione del
ricevitore: esso deve trovarsi in qualche punto della superficie della
sfera centrata nel satellite e con raggio uguale alla distanza misurata.
Chiamiamo questa distanza d1 . Se, contemporaneamente, un secondo
satellite invia un segnale allo stesso ricevitore, allora il ricevitore deve
trovarsi anche da qualche parte sulla superficie sferica con centro
nel secondo satellite e raggio dato dalla distanza misurata, d2 . Le
due superfici sferiche, quindi, si intersecano e sulla circonferenza
generata dalla loro intersezione si trover il nostro ricevitore. Un
terza e simultanea misura, d3 , data da un terzo satellite, d una terza
superficie sferica che interseca le altre due in soli due punti: uno di
questi punti pu essere eliminato subito perch non si trova sulla
terra e rimane quindi un solo punto, che permette di identificare la
posizione del ricevitore. Quanto abbiamo appena detto vale in linea
teorica, in condizioni ideali. Infatti, in genere, lorologio atomico
presente nel ricevitore GPS e gli orologi presenti nei satelliti non
sono sincronizzati perfettamente. Gli stessi orologi nei satelliti sono
sincronizzati luno con laltro con un certo errore che, per quanto
piccolo (un millisecondo) esiste. Gli intervalli di misura del ricevitore
sono affetti, quindi, da errori e, per questo motivo, sono chiamati
pseudoranges. Un errore di tempo in termini di millisecondi pu dare
un errore nella posizione di circa 300 chilometri e questo, chiaramente,
un errore troppo grande!
Le misure osservate, inoltre, sono affette da errori anche di altra
natura, come gli effetti della ionosfera e troposfera, lerrore di misura
del ricevitore stesso, errori di orbita ... Nella pratica, dunque non
bastano le distanze prese rispetto a tre satelliti, ma ne occorrono molte
di pi, per cercare di individuare le coordinate del ricevitore, tenendo
in conto il fatto che le misure sono affette da errore. Semplifichiamo

appunti di calcolo numerico

165

il problema applicandolo allo spazio R .


Sono date n misure di (con i = 1, 2, . . . , n) tra un punto incognito P0
di coordinate ( x0 , y0 ) (il ricevitore) ed n punti noti Pi ( xi , yi ) (i satelliti
GPS). La distanza osservata affetta da errore di misura ei . Quindi
abbiamo la relazione tra distanza osservata, distanza esatta (data dalla
ben nota formula di Euclide) ed errore data da
q
d i = ( x i x 0 ) 2 + ( y i y 0 ) 2 + ei ,
i = 1, 2, . . . , n
Abbiamo n equazioni non lineari in due incognite ( x0 , y0 ). Per risolvere questo problema si minimizza la somma dei quadrati delle
differenze tra il valore della distanza misurata e il valore della distanza
esatta, vale a dire
n

S ( x0 , y0 ) =


di

( x i x0 )2 + ( y i y0 )2

i =1

2

(=

ei2 )

i =1

Questa funzione assomiglia alla funzione S( a0 , a1 ) che avevamo costruito per ottenere la retta di regressione lineare ai minimi quadrati.
Una differenza fondamentale, tuttavia, che S( x0 , y0 ) non lineare.
p
Andiamo allora a considerare la funzione i ( x, y) = ( xi x )2 + (yi y)2 ,
p
per i = 1, 2, . . . , n. Osserviamo che i ( x0 , y0 ) = ( xi x0 )2 + (yi y0 )2 :
la distanza esatta tra il punto P0 e il punto Pi , da cui di = i ( x0 , y0 ) +
ei .
Consideriamo un valore provvisorio noto di coordinate ( x, y) vicino
a ( x0 , y0 ) in modo da poter linearizzare la funzione i ( x, y), applicando la formula di Taylor di centro ( x, y) e trascurando i termini di
ordine superiore. Si ha
Abbiamo
i ( x, y) = i ( x, y) +

i ( x, y)
( x, y)
(x x) + i
(y y)
x
y

la formula di Taylor applicata ad


ununica funzione che dipende da due
variabili.

Allora
i ( x0 , y0 ) = i ( x, y) +

i ( x, y)
( x, y)
( x0 x ) + i
( y0 y )
x
y

Per i = 1, . . . , n, la differenza bi = di i ( x, y) data da


bi = di i ( x, y) = i ( x0 , y0 ) + ei i ( x, y)
i ( x, y)
( x, y)
( x0 x ) + i
(y0 y) + ei i ( x, y)
x
y
( x, y)
( x, y)
= i
( x0 x ) + i
( y 0 y ) + ei
x
y
(10.1)

= i ( x, y) +

Le derivate parziali sono, per i = 1, . . . , n:


p
( xi x )2 + (yi y)2
i ( x, y)
( xi x )
(x x)
=
= i
( x,y)=( x,y) = p
2
2
x
x
i ( x, y)
( xi x ) + ( yi y )
p
( xi x )2 + (yi y)2
i ( x, y)
( yi y )
(y y)
=
= i
( x,y)=( x,y) = p
2
2
y
y
i ( x, y)
( xi x ) + ( yi y )

166

annamaria mazzia

Consideriamo, ora, il vettore b = (b1 , b2 , . . . , bn ) T , il vettore e =


(e1 , e2 , . . . , en )T e la matrice A di n righe e 2 colonne data da

1 ( x, y) 1 ( x, y)

x
y

2 ( x, y) 2 ( x, y)

x
y
A=

...

n ( x, y) n ( x, y)
x
y
Dalla relazione (10.1), introducendo il vettore = ( x0 x, y0 y) T
abbiamo
A + e = b

o, quivalentemente, e = b A

Se andiamo a riprendere la funzione S( x0 , y0 ) da minimizzare,


abbiamo S( x0 , y0 ) = in=1 ei2 . In termini vettoriali, S si pu anche
scrivere come S = e T e, e, dal momento che e dipende da , risulta
che S funzione del vettore :
S( ) = (b A ) T (b A )
Sviluppando abbiamo
S( ) = b T b b T A T A T b + T A T A
La quantit b T A scalare e, quindi, coincide con la sua trasposta,
da cui b T A = (b T A ) T = T A T b. Perci
S( ) = b T b 2 T A T b + T A T A
Per trovare il minimo di S dobbiamo imporre uguale a zero la sua
derivata rispetto al vettore , vale a dire rispetto a ciascuna sua
componente. Poich b T b uno scalare che non dipende da , la sua
derivata vale zero; quando deriviamo T A T b, si ha A T b, mentre la
derivata di T A T A vale 2 T A T A = 2( T A T A) T = 2A T A, da cui

Per ricavare le derivate di una funzione vettoriale, consideriamo un vettore y di dimensione m, che funzione di un vettore che
chiamiamo x, di dimensione n, tramite la relazione y = (x). Per definizione, la deri-

y
data dalla matrice che ha come
x
elemento di posto (i, j) la derivata parziale
yi
(i = 1, . . . , m, j = 1, . . . , n).
x j
Data una matrice A, di dimensione m
n
y
=A
se y = Ax si ha
x

vata

Si prova questo risultato considerando

essere visto come una matrice di dimensione 1 n, da cui = w T x e, per il

S( )
= 2A T b + 2A T A

Poniamo questa derivata uguale a zero

caso precendente, si ha

y T A.

se = x T Ax, con A matrice n n,

= x T ( A + A T ) Infatti =
x
n
n
i=1 j=1 aij xi x j Quindi
n
n

= aki xi + a jk x j
xk
i =1
j =1

per k = 1, 2, . . . , n.
In forma compatta, ci significa

= xT AT + xT A = xT ( AT + A)
x
se A simmetrica, la derivata di =

x T Ax diventa, di conseguenza,
2x T A

Esempio In Figura 10.3 sono evidenziati in blu n = 6 punti noti


(che corrispondono alle coordinate dei satelliti, in due dimensioni).

= wT =
x

allora

S( )
= 0 2A T A = 2A T b A T A = A T b

Per ricavare il vettore che minimizza S, dobbiamo dunque risolvere


questo sistema dove la matrice A T A una matrice 2 2. Dal vettore
possiamo ricavare i valori x0 e y0 (le coordinate del ricevitore GPS).
Perch il sistema abbia soluzione, la matrice deve essere non singolare:
questa condizione assicurata se le distanze prese sono linearmente
indipendenti, cio i punti ( xi , yi ), i = 1, . . . , n non si trovano lungo
una stessa retta passante per il punto ( x0 , y0 ).

yi
= aij ,
x j
per i = 1, . . . , m e j = 1, . . . , n da cui
otteniamo la matrice A.

= yT A
se = y T Ax si ha
x
T
Infatti, se poniamo w = y T A, w T pu
che yi = nj=1 aij x j da cui

=
x

appunti di calcolo numerico

167

Il puntino rosso rappresenta il punto provvisorio ( x, y), grazie al


quale possiamo calcolare le distanze effettive rispetto agli n punti
precedenti.
Gli n punti hanno coordinate (espresse in chilometri) date, rispettivamente, da

(7, 9), (2, 7), (1, 4), (10, 15), (5, 8), (20, 15)

Figura 10.3: Esempio di minimi quadrati non


lineari: in blu i punti noti, il puntino in rosso
il punto provvisorio, il puntino in nero
il punto incognito che si ricava mediante il
procedimento ai minimi quadrati.

Il punto ( x, y) ha coordinate (4.04, 4.96). Le distanze osservate dagli


n punti rispetto al punto incognito ( x0 , y0 ) sono date dai valori (in
chilometri)
5, 2.83, 3.16, 11.66, 9.48, 31.24
Con questi dati a disposizione, siamo in grado di calcolare le distanze
i ( x, y) e successivamente la matrice A. Applicando il metodo ai
minimi quadrati linearizzato, si ottiene come matrice A T A la matrice
data da
!
3.50953 0.89221
T
A A=
0.89221 2.49047
Il vettore A T b ha componenti (0.111826, 0.065088) T , da cui, risolvendo il sistema, si ricava = (0.042366, 0.041313) T . Le coordinate
( x0 , y0 ) sono dunque date da ( 1 + x, 2 + y) cio da (3.997634, 5.001312).
_

11 Integrazione numerica
11.1

Integrazione numerica e giri di pista...

Unautomobile effettua il giro di una pista in 84 secondi. La velocit


dellauto viene misurata ogni 6 secondi usando unapparecchiatura
radar per il controllo della velocit, ricavando i valori che si trovano
in Tabella 11.1.
In base ai dati in possesso, quanto lunga la pista?
ds
Sapendo che la velocit v data da v(t) =
(dove s rappresenta
dt
lo spostamento e t il tempo), per calcolare la lunghezza della pista
(data dallo spostamento effettuato dallauto), dobbiamo integrare la
velocit tra il tempo iniziale e quello finale.
Z 84
0

v(t)dt =

Z s(84)
ds

dt

s (0)

dt =

Z s(84)
s (0)

ds

Essendo s(0) = 0 e s(84) = L la lunghezza della pista, si ha


Z 84
0

v(t)dt =

Z s(84)
s (0)

ds = L

Quindi, se riusciamo a risolvere lintegrale in cui la funzione integranda la velocit, per le uguaglianze date, sapremo dire quanto
vale L.
Sfruttando i dati della velocit misurati ogni 6 secondi, dobbiamo
essere in grado di poter risolvere numericamente questo integrale.
In questo Capitolo studieremo come fare. Ci occuperemo, infatti,
di approssimare lintegrale definito
I=

Z b
a

f ( x )dx

dove f una funzione definita nellintervallo [ a, b] (e f pu essere nota


oppure data su determinati punti dellintervallo, come nellesempio
appena visto).
Una formula di integrazione numerica (detta anche formula di
Rb
quadratura numerica) approssima lintegrale esatto I = a f ( x )dx
mediante la sommatoria data da nj=0 a j f ( x j ):
I=

Z b
a

f ( x )dx

aj f (xj )

j =0

dove x j , j = 0, . . . , n sono le ascisse o punti di appoggio della formula


di quadratura e a j sono i pesi della formula.

Dio non si preoccupa delle nostre difficolt


matematiche. Lui integra empiricamente.
Albert Einstein

0
38
6
41
12
45
48
18
24
45
41
30
36
37
42
33
30
48
54
26
60
24
66
27
72
32
35
78
84
37
Tabella 11.1: Dati della velocit misurati ogni
6 secondi. Il tempo (t) espresso in secondi
e la velocit (v) data in metri al secondo.

170

annamaria mazzia

Formula dei trapezi

11.2

Consideriamo la retta che interpola la f negli estremi dellintervallo di


integrazione. Per semplicit, seguiamo costruiamo la retta partendo
dalla tabella delle differenze divise di Newton:
a

f ( a)

f (b)

f (b) f ( a)
ba

Il polinomio di interpolazione (retta) che interpola la f in a e in b (gli


estremi dellintervallo di integrazione) dato da
p( x ) = f ( a) +

f (b) f ( a)
( x a)
ba

Lerrore di interpolazione, utilizzando lespressione del resto di Lagrange (e, quindi, considerando valide le ipotesi, per questo caso, di
f continua fino alla derivata seconda) dato da
E( x ) =

f 00 ( x )
( x a)( x b)
2

dove x un punto incognito dellintervallo [ a, b] che varia al variare


di x. Per quanto abbiamo studiato sullinterpolazione, sappiamo
che la funzione f ( x ) si pu scrivere come somma del polinomio e
dellerrore: f ( x ) = p( x ) + E( x ). Nel nostro caso, abbiamo
f ( x ) = f ( a) +

f (b) f ( a)
f 00 ( x )
( x a) +
( x a)( x b)
ba
2

Dovendo integrare la f tra a e b e valendo luguaglianza precedente,


integrando ambo i membri, otteniamo:

Z b
Z b
Z b
f (b) f ( a)
f 00 ( x )
f ( x )dx =
f ( a) +
( x a) dx + ( x a)( x b)
dx
ba
2
a
a
a
ovvero
Z b
a

f ( x )dx = (b a)

f ( a) + f (b) 1
+
2
2

Z b
a

( x a)( x b) f 00 ( x ))dx

Poich il prodotto ( x a)( x b) ha segno costante in [ a, b], per il


teorema del Valor Medio del calcolo integrale (si veda il Teorema 3.6.6)
si ha
1
2

Z b
a

( x a)( x b) f 00 ( x ))dx =

1 00
f ( )
2

Z b
a

1
( b a )3
( x a)( x b)dx = f 00 ( )
2
3!

dove un punto interno allintervallo [ a, b], incognito ma che non


dipende pi da x!
Possiamo dunque scrivere,
Z b
a

f ( x )dx = (b a)

f ( a) + f (b) 1 00
( b a )3
f ( )
2
2
3!

Lintegrale della funzione f pu essere visto, dunque, come la somma


f ( a) + f (b)
di due termini, il primo dato da (b a)
che riusciamo
2

appunti di calcolo numerico

171

1
( b a )3
facilmente a calcolare e il secondo dato da f 00 ( )
il cui
2
3!
valore dipende da un punto che non conosciamo.
Perci, noi possiamo approssimare lintegrale utilizzando il primo
termine della somma, cio calcolando lintegrale della retta passante
per f ( a) e f (b). Lerrore che commetteremo sar dato dal termine che non possiamo calcolare, vale a dire dalla quantit Eint =
1
f 00 ( )(b a)3 .
12
Indicando con M = maxa xb | f 00 ( x )| possiamo maggiorare lerrore mediante la relazione

| Eint | M

( b a )3
12

La formula dei trapezi approssima lintegrale di f in [ a, b] mediante lintegrale della retta passante passante per i punti ( a, f ( a))
e (b, f (b)):
I=

Z b
a

f ( x )dx Itrap =

ba
[ f ( a) + f (b)]
2

Se la funzione f ( x ) 0 si pu vedere facilmente che lintegrale della retta che passa


per i punti ( a, f ( a)) e (b, f (b)), altro non
che larea del trapezio sottesa alla corda passante per f ( a) e f (b). Da qui il nome della
formula come formula dei trapezi.

Figura 11.1: Formula dei trapezi: lintegrale


della funzione f (zona tratteggiata in blu) viene approssimata mediante larea del trapezio
sotteso alla retta di interpolazione per f ( a) e
f (b) (zona verde).

11.3

Formule di Newton-Cotes

Se, al posto di una retta, prendiamo come funzione interpolante


la f un polinomio di grado pi elevato, otterremo altre formule di
quadrature.
Supponiamo di poter valutare la f in n + 1 punti x0 , x1 , . . . , xn
e costruiamo il polinomio interpolatore di grado n utilizzando la
formula di Lagrange.

172

annamaria mazzia

Avremo pn ( x ) = in=0 f ( xi ) Li ( x ), dove i polinomi di Lagrange


sono dati dalla nota formula
n

Li ( x ) =

x xj

xi x j
j =0
j 6 =i

x j = x0 + jh, con j = 0, 1, . . . , n e per un generico punto x compreso


tra x0 e xn vale x = x0 + sh con 0 s n, s numero reale.
Quindi x x j = x0 + sh ( x0 + jh) = (s j)h e xi x j = (i j)h,
da cui il polinomio di Lagrange si pu scrivere come
n

Li ( x ) =

sj

ij

= Li ( s )

j =0
j 6 =i

Scrivere il polinomio di Lagrange in funzione di s e non di x ci libera


dallintervallo [ a, b] in cui dobbiamo integrare e tiene conto soltanto
del grado del polinomio che viene considerato.
Infatti, tenendo conto che, f ( x ) = pn ( x ) + E( x ) dove E( x ) lerrore
della formula di interpolazione, passando allintegrale, abbiamo
Z b
a

f ( x )dx =

Z b
a

pn ( x )dx +

Z b
a

E( x )dx

Il primo integrale a secondo membro rappresenta la formula che


approssima lintegrale della f mentre il secondo integrale rappresenta
lerrore della formula di quadratura.
La formula di quadratura quindi data dal valore dellintegrale di
pn :
I=

Z b
a

f ( x )dx

Z b n

a i =0

f ( xi ) Li ( x )dx =

f ( xi )

Z b

i =0

Li ( x )dx

La formula di quadratura ha dunque come nodi i punti xi e come


Rb
pesi gli integrali a Li ( x )dx.
Gli estremi a e b variano al variare dellintegrale da approssimare,
ma se vogliamo utilizzare un polinomio di grado n, allora, ponendo,
x0 = a e xn = b e tenendo presente che Li ( x ) = Li (s) con x = x0 + sh,
Rb
possiamo fare un cambiamento di variabile negli integrali a Li ( x )dx.
Dal momento che dx = hds abbiamo
Z b
a

Li ( x )dx =

Z xn
x0

Li ( x )dx =

Z n
0

Li (s)hds = h

Z n
0

Li (s)ds

La traccia dellintervallo di integrazione in h, mentre lintegrale


da fare non dipende ora dallintervallo [ a, b]. Questo permette di
calcolare una volta per sempre questi integrali e dare una formula di
integrazione numerica.
Infatti
I=

Z b
a

Z n

i =0

f ( x )dx h f ( xi )

Li (s)ds

Definiamo coefficienti di Newton-Cotes le espressioni

Roger Cotes (1682-1716) fu un matematico


inglese che lavor molto con Isaac Newton,
in particolare per la correzione del suo famoso libro Principia. Egli invent le formule
di quadratura che prendono il suo nome e
per primo introdussse quella che oggi conosciamo come formula di Eulero, per cui e x =
cos ( x ) + i sin ( x ) nel campo complesso.

appunti di calcolo numerico

(n)

Ci

1
n

Z n
0

Li (s)ds

i = 0, 1, . . . , n

La formula precedente si scrive, quindi, come


I=

Z b
a

f ( x )dx nh f ( xi )Ci

(n)

i =0

= ( xn x0 ) f ( xi )Ci

(n)

(11.1)

i =0

Lerrore della formula di quadratura dato da


Eint =

Z b
a

E( x )dx =

Z b ( n +1)
f
( x )

( n + 1) !

( x x0 )( x x1 ) ( x xn )dx

Dato un polinomio di interpolazione di grado n mediante il procedimento di Lagrange dunque possibile ricavare una formula di
quadratura numerica che prende il nome di formula di Newton-Cotes.
Per quanto riguarda lerrore si pu osservare che le formule ottenute
con un valore n dispari (cui corrisponde un numero n + 1 pari di
punti di appoggio) solo leggermente inferiore alle formule di ordine
pari che le precedono immediatamente (cui corrisponde un numero
dispari di punti di appoggio).
Per questo motivo le formule di ordine pari sono le pi usate.
Osserviamo che per f ( x ) 1, qualunque sia il grado del polinomio
utilizzato nelle formule di Newton-Cotes, lerrore di integrazione sar
zero. Applicando lequazione (11.1) nellintervallo [ a, b] [0, 1] si ha
1=

Z 1
0

dx =

Ci

(n)

i =0

Troviamo che la somma dei coefficienti di Newton-Cotes vale 1.


Formula di Newton-Cotes con n = 1. Per n = 1 (ci sono due punti di
appoggio, x0 e x1 ) i coefficienti di Cotes sono quelli gi ricavati nella
formula dei trapezi

(1)

C0

(1)

C1

1
1 1
L0 (s)ds =
1 0
0
Z
Z 1
1 1
=
L (s)ds =
1 0 1
0

( s 1)
1
ds =
1
2
s
1
ds =
1
2

e la formula di integrazione diventa, appunto, la formula dei


trapezi
I=

11.3.1

Z b
a

f ( x )dx h f ( xi )Ci

(1)

= ( x1 x0 )

i =0

f ( x0 ) + f ( x1 )
2

Formula di Cavalieri-Simpson
Considerando n = 2 (quindi 3 punti di appoggio nellintervallo [ a, b],
a+b
x0 = a, x1 =
e x2 = b, i due estremi dellintervallo e il punto
2

173

174

annamaria mazzia

centrale) la formula di quadratura prende il nome di formula di


Cavalieri-Simpson

(2)

C0

(2)

C1

(2)

C2

1 2
1 2
L0 (s)ds =
2 0
2 0
Z
Z
1 2
1 2
L1 (s)ds =
=
2 0
2 0
Z
Z
1 2
1 2
=
L2 (s)ds =
2 0
2 0

(s 1)(s 2)
1
ds =
(1)(2)
6
(s)(s 2)
4
ds =
(1)(1)
6
(s)(s 1)
1
ds =
(2)(1)
6

Bonaventura Francesco Cavalieri (15981647) fu un matematico italiano. Studi teologia e geometria. Lavor su problemi di ottica
e di cinematica. famoso soprattutto per il
cosiddetto principio di Cavalieri.
Thomas Simpson (1710-1761) fu un matematico britannico, inventore della formula
di quadratura per il calcolo di integrali definiti, sebbene questa formula fosse stata gi
scoperta 200 anni prima da Keplero e pare
fosse usata anche da Cavalieri nel 1639 e
poi riscoperta da James Gregory. I suoi studi
riguardano anche lastrologia.

La formula di Cavalieri-Simpson approssima lintegrale della f cona+b


siderando come nodi x0 = a, x1 = c =
e x2 = b e come pesi i
2
1 (2)
4 (2)
1
(2)
coefficienti di Cotes C0 = , C1 = , C2 = , ottenendo:
6
6
6
I=

Z b
a

f ( x )dx ICS = ( x2 x0 ) f ( xi )Ci

(2)

i =0

= (b a)(

f ( a) 4 f (c)
f (b)
+
+
)
6
6
6

ba
=
( f ( a) + 4 f (c) + f (b))
6
Con la formula di Cavalieri-Simpson, dunque, lintegrale della f
viene approssimato con lintegrale della parabola passante per i due
estremi a e b e per il punto centrale dellintervallo.

Osserviamo che i valori dei coefficienti di


Newton-Cotes sia per n = 1 che per n = 2
sono simmetrici. Questo risultato va generalizzato a qualunque scelta di n: i coefficienti
di Newton-Cotes sono simmetrici.

Figura 11.2: Formula di Cavalieri-Simpson:


lintegrale della funzione f (zona tratteggiata
in blu) viene approssimata mediante larea
della regione sottesa alla parabola passante
per f ( a), f (c) e f (b) (zona verde).

Per quanto riguarda lerrore che si commette approssimando lintegrale della f con la formula di Cavalieri-Simpson, consideriamo,
seguendo lapproccio visto per la formula dei trapezi, lintegrale
dellerrore del polinomio di interpolazione di Lagrange.
Per il polinomio di secondo grado p2 che interpola la f , lerrore
f 000 ( x )
dato da E( x ) =
( x a)( x c)( x b).
3!

appunti di calcolo numerico

175

Quando facciamo lintegrale, lerrore nellapprossimare lintegrale


esatto con la formula di Cavalieri-Simpson dunque dato da
Eint =

Z b 000
f ( x )
a

3!

( x a)( x c)( x b)dx

Questa volta, la funzione ( x a)( x c)( x b) cambia segno allinterno dellintervallo [ a, b] e non possiamo pi applicare il teorema del
Valor Medio come nella formula dei trapezi. In maniera pi laboriosa,
tuttavia, si ricava per lerrore la seguente formula:


f IV (u) b a 5
f IV (u)
Eint =
( b a )5
=
90
2
2880
dove u un opportuno punto dellintervallo ] a, b[.

11.3.2

Sullerrore della formula di Cavalieri-Simpson


Per capire lerrore che si ha nella formula di Cavalieri-Simpson,
deduciamo la stessa formula seguendo unaltra strada.
Per semplificare il discorso, scegliamo lintervallo [ a, b] simmetrico
rispetto allorigine, quindi del tipo [t, t] con t R, sapendo che,
se non fosse cos, basta applicare una traslazione dellasse x per
ricondursi a questo caso. Scriviamo il polinomio di interpolazione
che passa per i punti t, 0 e t e che interpola anche la derivata prima
della f in 0.
Mediante la tabella delle differenza divise, il punto 0 va contato
due volte e si ha:
t f (t)
f (0) f (t)
0
f (0)
t
f (0) f (t)
f 0 (0)
t f 0 (0) f (0) + f (t)
t
0
0
f (0)
f (0)
=
t
t2
f ( t ) f (0)
f 0 (0)
f ( t ) f (0)
f ( t ) f (0) t f 0 (0)
t
t
f (t)
=
t
t
t2
Il polinomio di interpolazione , dunque

f (t) 2t f 0 (0) f (t)


2t3

f (0) f (t)
t f 0 (0) f (0) + f (t)
f (t) 2t f 0 (0) f (t)
(
x
+
t
)
x
+
( x + t) x2
( x + t) +
t
t2
2t3
Lerrore di interpolazione per questo polinomio di grado 3 vale

p( x ) = f (t) +

f ( IV ) ( x )
( x + t) x2 ( x t)
4!
Quindi da f ( x ) = p( x ) + E( x ), andando a integrare tra t e t si
ha:
E( x ) =

Z t
t

f ( x )dx =

Z t
t

p( x )dx +

Z t
t

E( x )dx

Nellintegrazione del polinomio p( x ) facile vedere che i termini


che dipendono da f 0 (0) portano un contributo nullo. Infatti



Z t  0
Z t 0
f (0)
f 0 (0)
f (0)
x3
( x + t) x 2 ( x + t) x2 dx =
x2 + tx
x2 dx
t
t
t
t
t
t


t
f 0 (0) x 2
x4
=
t
=0
t
2
4t t

176

annamaria mazzia

Gli integrali degli altri termini del polinomio p( x ) portano alla formula di Cavalieri-Simpson. Infatti (omettendo i passaggi matematici
e ricordando che lampiezza dellintervallo su cui stiamo lavorando
h = 2t) si ha
Z t 
t


f (0) f (t)
f (t) f (0)
f (t) f (t)
2
f (t) +
( x + t) +
( x + t) x +
( x + t) x dx =
t
t2
2t3

2t
( f (t) + 4 f (0) + f (t))
6
h
= ( f (t) + 4 f (0) + f (t))
6

Allora lerrore della formula di Cavalieri-Simpson coincide con


lintegrale di E( x ).
R t f ( IV ) ( x )
Quindi Eint = t
( x + t) x2 ( x t)dx
4!
La funzione ( x + t) x2 ( x t) = ( x2 t2 ) x2 non cambia mai segno
allinterno dellintervallo [t, t], quindi si pu applicare il teorema
del Valore Medio del calcolo integrale, per cui

Eint =

f ( IV ) ( )
24

Z t
t

( x2 t2 ) x2 dx =


t
f ( IV ) ( ) x5
f ( IV ) ( ) 5
x3
=
t2
t
24
5
3 t
90

Considerando che lampiezza dellintervallo h = 2t si ha


Eint =

f ( IV ) ( ) h 5
f ( IV ) ( ) 5
( ) =
h
90
2
2880

Troviamo la formula dellerrore per Cavalieri-Simpson.

Formule composte

11.4

Le formule di Newton-Cotes non vanno bene su intervalli molto ampi


perch per avere risultati pi accurati dovremmo utilizzare formule
di grado elevato (in modo da utilizzare un numero elevato di punti
di appoggio). Ci sono vari motivi che sconsigliano questa procedura:

i valori dei coefficienti in formule di grado elevato sono difficili


da ottenere;

le formule di Newton-Cotes, essendo basate su polinomi di interpolazione con nodi equidistanti, danno risultati inaccurati su
intervalli ampi a causa della natura oscillatoria dei polinomi di
grado elevato.

Conviene dunque utilizzare formule di grado basso ma scomponendo lintervallo di integrazione in pi sottointervalli e, in ciascuno
di essi, applicare la stessa formula.
Sfruttiamo il fatto che se lintervallo [ a, b] viene diviso in n sottointervalli in modo che [ a, b] = [ a, x1 ] [ x1 , x2 ] [ x2 , x3 ] . . . [ xn1 , b],
allora
Z b
a

f ( x )dx =

Z x
1
a

f ( x )dx +

Z x2
x1

f ( x )dx +

Z x3
x2

f ( x )dx + . . . +

Z b
x n 1

f ( x )dx

appunti di calcolo numerico

177

Su ciascuno intervallo [ xi1 , xi ] per i = 1, 2, . . . , n, approssimiamo


lintegrale della f mediante una formula di quadratura pi semplice,
utilizzando pochi punti.

11.4.1

Formula composta dei trapezi


Suddividiamo lintervallo [ a, b] in n sottointervalli definiti dai punti
dappoggio x0 , x1 , . . . , xn (per semplicit supponiamo i punti equidiba
stanti con passo h =
, in modo che x0 = a e xn = b, xi = x0 + ih,
n
i = 0, . . . , n).
Lintegrale su [ a, b] si pu dunque ottenere come somma degli
integrali su tali sottointervalli:
Z b
a

f ( x )dx =

n Z xi

i =1 x i 1

f ( x )dx

Ciascuno degli integrali su [ xi1 , xi ] viene approssimato utilizzando la formula dei trapezi:
n Z xi

i =1 x i 1

f ( x )dx

i =1

n
h
x i x i 1
[ f ( xi1 ) + f ( xi )] = [ f ( xi1 ) + f ( xi )]
2
2
i =1

In forma estesa abbiamo


h
[ f ( x0 ) + 2 f ( x1 ) + 2 f ( x2 ) + . . . + 2 f ( xn1 ) + f ( xn )]
2
f ( a) + f (b)
= h[
+ f ( x1 ) + f ( x2 ) + . . . f ( xn1 )]
2

Figura 11.3: Formula composta dei trapezi,


utilizzando 3 sottointervalli (4 punti).

178

11.4.2

annamaria mazzia

Errore nella formula composta dei trapezi


Lerrore che si commette nella formula composta dei trapezi dato
dalla somma degli errori commessi sui singoli sottointervalli
n

Eint =

h3

h3

f 00 ( i ) 12 = f 00 ( i ) 12

i =1

i =1

Supponendo che la derivata seconda della f sia continua e limitata in [ a, b] e chiamando con m e M rispettivamente il minimo e il
massimo di f 00 in [ a, b], si ha:
m f 00 ( i ) M

i = 1, . . . , n

Considerando la somma di queste diseguaglianze, per i = 1, . . . , n si


ricava
n

nm

f 00 ( i ) nM

= m

i =1

in=1 f 00 ( i )
M
n

in=1 f 00 ( i )

n
un valore assunto dalla funzione in qualche punto di [ a, b], vale a
dire, esiste un punto che non conosciamo, allinterno dellintervallo
[ a, b] tale che
Per il teorema del Valor Intermedio (teorema 3.6.3),

f 00 ( ) =

in=1 f 00 ( i )
ovvero
n

f 00 ( i ) = n f 00 ( ).

i =1

Sostituendo la relazione appena trovata nella formula dellerrore e


ba
ricordando che h =
, si ricava
n
n

Eint = f 00 ( i )
i =1

h3
h3
f 00 ( )
f 00 ( ) (b a)3
= n f 00 ( ) =
( b a ) h2 =
12
12
12
12
n2

Quindi per n lerrore tende a zero come


1
mente, come 2 .
n

11.4.3

h2

o, equivalente-

Da nh3 si ha n(b a)/nh2 = (b a) h2


o, in alternativa, nh3 = n(b a)3 /n3 =
(b a)3 /n2 .

Formula composta di Cavalieri-Simpson


Suddividiamo lintervallo [ a, b] in n sottointervalli di ampiezza costante uguale a h e su ciascuno di questi sottointervalli applichiamo la
formula di Cavalieri-Simpson. Abbiamo, in questo modo, la formula
composta di Cavalieri-Simpson.
Su ogni intervallino, quindi, dobbiamo considerare gli estremi
dellintervallino e il punto centrale di esso.
a + bi
Siano ai e bi gli estremi di ciascuna suddivisione e sia ci = i
2
il punto medio di ciascuna suddivisione (per i = 1, . . . , n). In tal
modo, seguendo lo stesso ragionamento fatto per i trapezi si ha:
Z b
a

f ( x )dx =

Z b
1
a1

f ( x )dx +

Z b2
a2

f ( x )dx + . . . +

Z bn
an

f ( x )dx

Lestremo superiore bi di ciascun intervallino, con i = 1, n 1 coincide con lestremo inferiore dellintervallino successivo:
bi = a i + 1 .

appunti di calcolo numerico

179

Applicando la formula di Cavalieri-Simpson su ciascun intervallino


risulta:
Z b
i
ai

f ( x )dx

h
bi a i
( f ( ai ) + 4 f (ci ) + f (bi )) = ( f ( ai ) + 4 f (ci ) + f (bi ))
6
6

In tal modo
Z b
a

f ( x )dx

6 ( f (ai ) + 4 f (ci ) + f (bi ))

i =1

Se gli intervallini non sono uniformi, la formula va scritta considerando il valore hi per
ciascun intervallino.

Si ha la formula composta di Cavalieri-Simpson.


Figura 11.4: Formula composta di CavalieriSimpson, utilizzando 3 sottointervalli (7
punti).

Formula composta di Cavalieri-Simpson in forma compatta. Possiamo vedere la formula composta di Cavalieri-Simpson anche in una forma
compatta. Considerando che, su ogni sottointervallo, dobbiamo prendere il punto medio, facciamo una numerazione progressiva dei punti
di integrazione nel modo seguente:
x0 = a
x2i = x0 + ih

i = 0, . . . n

1
x2i+1 = x0 + (i + )h
2

i = 0, . . . , n 1

I nodi pari corrispondono agli estremi dei


sottointervalli, mentre i nodi dispari sono i
punti centrali di ogni sottointervallo.

Per la formula di quadratura otteniamo


I=

Z b
a

f ( x )dx =

n1 Z x2i+2

i =0
n 1

i =0

x2i

f ( x )dx

h
[ f ( x2i ) + 4 f ( x2i+1 ) + f ( x2i+2 )]
6

h
[ f ( x0 ) + 4 f ( x1 ) + 2 f ( x2 ) + 4 f ( x3 ) + . . . + 2 f ( x2n2 ) + 4 f ( x2n1 ) + f ( x2n )]
6
n 1
n 1
h
= [ f ( x0 ) + 4 f ( x2i+1 ) + 2 f ( x2i ) + f ( x2n )]
6
i =0
i =0

180

11.4.4

annamaria mazzia

Errore nella formula composta di Cavalieri-Simpson


Per quanto riguarda lerrore nella formula composta di CavalieriSimpson, sar dato dall somma degli errori di integrazione sugli
n sottointervalli. Nellipotesi che la derivata quarta sia continua e
limitata, si ha:
 
1 h 5 IV
( f ( 1 ) + f IV ( 2 ) + . . . + f IV ( n ))
Eint =
90 2

h5 n1 IV
( b a )5
f ( i ) =

2880 i=0
2880n5

n 1

1
n

ba
.
n

f IV ( i )

i =0

Si considera quindi il punto tale che


f IV ( ) =

Ricordiamo che stiamo considerando sottointervalli della stessa ampiezza h =

f IV ( i )

i =1

Allora

Per arrivare a questi risultati, il ragionamento del tutto analogo a quanto stato fatto
sulla derivata seconda nella formula composta dei trapezi. Questa volta, per, si deve
considerare la derivata quarta. Per esercizio, si consiglia di ripetere tutti i passaggi per
arrivare al risultato.

(b a)h4 IV
(b a)5 IV
f
(

)
=

f ( )
2880
2880n4
1
Quindi per n lerrore tende a zero come 4 o, equivalentemente,
n
1
come h4 . Nella formula dei trapezi lerrore invece decresce come 2 .
n
Ci aspettiamo quindi che il maggiore sforzo computazionale dia una
maggiore accuratezza nei risultati quando si applica la formula di
Cavalieri-Simpson rispetto alla formula dei trapezi.
Eint =

11.4.5

Confronti tra la formula dei trapezi e di CavalieriSimpson

Esempio Consideriamo f ( x ) = e x . Sia a = 0 e b = 1.


Allora, per lintegrale esatto e per le formule dei trapezi e di
Cavalieri-Simpson, si ha, rispettivamente:
I=

Z 1
0

e x dx = [e x ]10 = e 1 = 1.718281828

1
(1 + e) = 1.859140914
2
1
1
ICS = (1 + 4e1/2 + e) = (1 + 6.594885083 + 2.718281828) = 1.718861152
6
6
La formula di Cavalieri-Simpson d il risultato migliore.
Sia ancora f ( x ) = e x ma gli estremi di integrazione siano a = 0.9 e
b = 1. Allora
Itrap =

I=

Z 1
0.9

0.1 0.9
(e + e) = 2.2 104
2
0.1 0.9
= I
(e + 4e0.95 + e) = 9.0 109
6

I Itrap = I
I ICS

e x dx = e e0.9 = 0.2586787173

appunti di calcolo numerico

181

Ora la formula di Cavalieri-Simpson si rivela particolarmente accurata.


Ci non deve sorprendere se si va a vedere la formula dellerrore, con
lampiezza dellintervallo che da 1 si ridotta a 0.1, per cui (b a)5
da 1 vale ora 105 . Considerato che f 00 = f e f IV = f , queste derivate
possono essere maggiorate dal valore assunto nellestremo superiore
dellintervallo, cio e. Quindi gli errori delle formule dei trapezi e di
Cavalieri-Simpson sono maggiorate da
e
(b a)3 = 2.265 101 (b a)3
12
e
| ECS |
(b a)5 = 9.438 104 (b a)5
2880

| Etrap |

Perci per a = 0 e b = 1 gli errori sono maggiorati da

| Etrap | 2.265 101


| ECS | 9.438 104

Invece per a = 0.9 e b = 1, poich b a = 0.1 = 101 , abbiamo

| Etrap | 2.265 101 103 = 2.265 104


| ECS | 9.438 104 105 = 9.438 109

_
Esempio Si voglia approssimare lintegrale
Z 1
0

e x dx 0.746824.

Suddividiamo lintervallo [0, 1] in 4 sottointervalli. Sia h = 1/4 =


0.25. Per la formula composta dei trapezi abbiamo
Itrap

2
2
2
2
h
= [e0 + 2eh + 2e(2h) + 2e(3h) + e(4h) ]
2
2

= 0.125[1 + 2e0.125 + 2e0.5 + 2e0.75 + e1 ]


= 0.742984

Applichiamo ora la formula di Cavalieri-Simpson su soli 2 sottointervalli, in modo da valutare la funzione negli stessi punti precedenti.
Lampiezza di ciascun sottointervallo dunque h = 0.5.
3 2
2
2
2
h 0
[e + 4e(h/2) + 2e(h) + 4e( 2 h) + e(2h) ]
6
2
2
2
0.25
=
[1 + 4e0.125 + 2e0.5 + 4e0.75 + e1 ]
3
= 0.746855

ICS =

A parit di punti (e non di sottointervalli) la formula di CavalieriSimpson pi accurata di quella dei trapezi.

un integrale che non pu essere risolto


analiticamente.
Se si vuole calcolare
una sua approssimazione senza fare
uso di formule di quadrature, possiamo,
ad esempio, pensare di applicare la

Rb

=
a f ( x ) dx
f ( a + ih(n)) h(n),
con
h(n) = (b a)/n, e considerare come

definizione di integrale

limn in=0

approssimazione dellintegrale la somma


parziale in=0 f ( a + ih(n)) h(n) con
un valore di n molto grande. Per esempio, con n = 107 otteniamo il valore
0.74682420125254.

182

annamaria mazzia

Invece considerando 4 sottointervalli nella formula di CavalieriSimpson dobbiamo considerare anche i punti interni di ascisse 0.125, 0.375, 0.625, 0.875
e il risultato che otteniamo 0.746826, evidentemente maggiormente
accurato.
_
Esempio Riprendiamo lesempio visto allinizio del Capitolo,
in cui misurata la velocit di unautomobile ogni 6 secondi e si vuole
calcolare la lunghezza percorsa dalla macchina.
In base ai dati in possesso, possiamo applicare la formula composta
dei trapezi su 14 intervalli di ampiezza h = 6 secondi. Abbiamo
(ponendo v1 = v(0), v2 = v(6), . . . , v13 = v(78), v14 = v(84)):

L=6

v1 + v14
+ v2 + v3 + . . . + v13
2

= 3009 metri

Possiamo anche applicare la formula di Cavalieri-Simpson, considerando ora 7 intervalli di ampiezza pari a h = 12 secondi. In tal
caso, otteniamo:
L = 2 (v1 + 4v2 + 2v3 + 4v4 + 2v5 + . . . + 2v12 + 4v13 + v14 ) = 3010 metri
In questo caso entrambi i risultati sono accettabili.
_
Se la funzione integranda ha le derivate che sono facili da determinare e da maggiorare, la formula dellerrore pu essere utile per
determinare il numero di sottointervalli su cui applicare una formula
composta di quadratura in modo da ottenere unapprossimazione con
un errore minore di una tolleranza prefissata.

R1
2
Esempio Consideriamo 0 e x dx. In quanti sottointervalli
bisogna suddividere lintervallo di integrazione per applicare la formula dei trapezi e di Cavalieri-Simpson e ottenere un errore che sia
minore di una tolleranza e = 105 ?
Per i trapezi, lerrore maggiorato da
| Etrap |

max0 x1 | f 00 ( x )| (b a)3
12
n2

Per Cavalieri-Simpson si ha

| ECS |

max0 x1 | f IV ( x )| (b a)5
2880
n4
2

Da f ( x ) = e x abbiamo, per le derivate:


f 0 ( x ) = 2xe x

f 00 ( x ) = (2 + 4x2 )e x

f 000 ( x ) = (12x 8x3 )e x

f IV ( x ) = (12 48x2 + 16x4 )e x

appunti di calcolo numerico

Si trova che il massimo di | f 00 | e | f IV | in [0, 1] dato dal loro valore


in x = 0, quindi abbiamo:

| Etrap |

2
1
= 2
2
12n
6n

| ECS |

12
1
=
4
2880n
240n4

La richiesta dellaccuratezza per lerrore diventa:

| Etrap | 105

| ECS | 105

vale a dire, rispettivamente,


1
105
6n2

1
105
240n4

Per i trapezi, il primo intero n che verifica la disuguaglianza n = 130,


per Cavalieri-Simpson si ha, invece, n = 5.
Applicando le formule su 130 intervalli per i trapezi e su 5 intervalli
per Cavalieri-Simpson, otteniamo i risultati:
Itrap = 0.74682050480289

ICS = 0.7468249482544
_

11.5

Estrapolazione di Richardson

Applichiamo la formula di Cavalieri-Simpson sullintero intervallo


[ a, b]. Lerrore che si commette, come sappiamo, vale


f IV ( 1 )
f IV ( 1 ) b a 5
=
( b a )5
E1 =
90
2
2880
Suddividiamo ora lintervallo [ a, b] in due sottointervalli e applichiamo la formula composta di Cavalieri-Simpson. Lerrore che otteniamo
vale
E2 =

f IV ( 2 ) (b a)5
2880
24

e, supponendo che le derivate quarte della f non siano molto diverse


E
tra loro, si ha E2 1 .
16
Lerrore, quindi, diventa 16 volte pi piccolo passando dalla formula di Cavalieri-Simpson in un intervallo alla formula applicata in
due sottointervalli.
Sia I il valore esatto dellintegrale e Q1 e Q2 i due valori approssimati ottenuti considerando la formula di Cavalieri-Simpson con n = 1
e n = 2 sottointervalli. Sia e lerrore, cambiato di segno, che si ha con
n = 2, e = E2 E1 /16. Possiamo scrivere
I + e = Q2 per n = 2
I + 16e = Q1 per n = 1

183

184

annamaria mazzia

Si pu ricavare e dalle due relazioni ottenendo


e=

Q1 Q2
15

Quindi
I Q2 +

Q2 Q1
15

Utilizzando le due approssimazioni Q1 e Q2 possiamo approssimare


lintegrale esatto con una maggiore accuratezza mediante la formula
appena scritta. Questo procedimento prende il nome di estrapolazione di Richardson. Pu essere utilizzato per migliorare lapprossimazione di un integrale ma basato sullipotesi che le derivate quarte
della funzione integranda siano circa uguali e, quindi, va usato con
cautela.

11.6

Si pu dimostrare che la nuova approssimazione ottenuta coincide con la formula di


Newton-Cotes con n = 4, dove lerrore
proporzionale a 1/n6 e alla derivata sesta di
f.

Esercizi

Esercizio 11.6.1 Sia dato lintegrale I =

Z 0
2

e x ( x + 1) dx.

(a) Approssimare il valore dellintegrale applicando la formula dei trapezi con n = 5 suddivisioni in parti uguali dellintervallo di
integrazione.
(b) Trovare una maggiorazione dellerrore commesso e, dopo aver calcolato analiticamente lintegrale esatto, confrontare tale stima con
lerrore esatto.
Svolgimento
(a) Applichiamo la formula dei trapezi con n = 5 suddivisioni dellintervallo dato. Vale, dunque, h = 0.4. I punti da considerare e il
valore della f ( x ) = e x ( x + 1), sono:
i
0
1
2
3
4
5

xi
-2
-1.6
-1.2
-0.8
-0.4
0

f ( xi )
-7.3890561
-2.97181945
-0.664023385
0.445108186
0.895094819
1

La formula dei trapezi


Itrap = h(

f ( x0 ) + f ( x5 )
+ f ( x1 ) + f ( x2 ) + f ( x3 ) + f ( x4 )) = 2.19606715
2

(b) Per calcolare una maggiorazione dellerrore commesso, dobbiamo


calcolare la derivata seconda della f .

appunti di calcolo numerico

Da f ( x ) = e x ( x + 1) segue f 0 ( x ) = e x ( x + 1) + e x = e x x
e f 00 ( x ) = e x x e x = e x ( x 1).
Poich f 00 ( x ) sempre negativa nellintervallo di integrazione e a
noi interessa la funzione valore assoluto della f 00 ( x ), studiamo la
funzione g( x ) = | f 00 ( x )| = e x (1 x ). Si ha che g0 ( x ) = e x ( x
2) < 0 in [2, 0], quindi g decrescente e ha valore massimo
per x = 2. Si ha dunque che M = max | f 00 ( x )| = | f 00 (2)| =
22.1671682968
|(b a)3 |
Quindi | Etrap | M
= 0.591124488
12 52
Analiticamente, facile calcolare lintegrale esatto (per parti):
I=

Z 0
2

f ( x ) dx = e

( x + 1)|02 +

Z 0
2

e x dx = e x ( x + 2)|02 = 2

Quindi lerrore esatto, in valore assoluto, : | I Itrap | = 0.196067154,


un valore minore della maggiorazione trovata prima.

Esercizio 11.6.2 Sia dato lintegrale


Z 2
2
dx
0 x4
(a) Dare una sua approssimazione con la formula dei trapezi e n = 4
suddivisioni in parti uguali dellintervallo di integrazione.
(b) Trovare una maggiorazione dellerrore commesso.
(c) Confrontare lerrore esatto con la stima precedentemente trovata.
(d) Dire in quanti sottointervalli occorre suddividere lintervallo di integrazione per ottenere una maggiorazione dellerrore minore della
tolleranza e = 105 .

Svolgimento
(a) Suddividendo lintervallo di integrazione [0, 2] in n = 4 parti si
trova un passo h = 2/4 = 1/2 = 0.5.
La formula dei trapezi :
b a f ( a) + f (b)
(
+ f ( x1 ) + f ( x2 ) + f ( x3 ))
n
2
f (0) + f (2)
= 0.5(
+ f (0.5) + f (1) + f (1.5))
2
0.5 1
0.571428571 0.666666667 0.8)
= 0.5(
2
= 1.39404762

IT =

f 00 ( ) (b a)3
12
n2
2
2
4
Da f ( x ) =
segue f 0 ( x ) =
e f 00 ( x ) =
.
x4
( x 4)2
( x 4)3

(b) Consideriamo la formula dellerrore: E =

185

186

annamaria mazzia

Per maggiorare lerrore dobbiamo considerare che vale


max0 x2 | f 00 ( x )| (b a)3
| E|
, da cui dobbiamo calcolare M =
12
n2
00
max0 x2 | f ( x )|.
La funzione ( x 4)3 continua, crescente e sempre negativa nel4
4
lintervallo [0, 2]. Quindi |
: osserviamo il
| =
3
( x 4)
(4 x )3
4
cambiamento al denominatore. Poniamo g( x ) =
. Ri(4 x )3
12
sulta g0 ( x ) =
> in [0, 2], quindi la g crescente e ha
(4 x )4
valore massimo per x = 2. Perci M = max0 x2 | f 00 ( x )| =
4
| f 00 (2)| = 3 = 1/2 = 0.5. Si ha allora la maggiorazione dellerrore
2
M 23
1
| E|
=
= 0.0208333333
12 42
48
(c) Lintegrale esatto si calcola facilmente:

I=

Z 2
0

2
dx = 2 ln (| x 4|)|20 = 2 ln (| 2|) 2 ln (| 4|) = 2 ln (1/2) = ln (1/4) 1.386294361
x4

Lerrore esatto commesso con la formula dei trapezi, in valore


assoluto, | I IT | = 0.00775325793
(d) Perch la maggiorazione dellerrore sia minore della tolleranza
M 23
M 3 5
e = 105 deve essere | E|
105 cio n2
2 10 =
12 n2
12
5
10
= 33333.333333. Quindi n > 182.574186, vale a dire n = 183.
3

Esercizio 11.6.3 Dato lintegrale


Z 0.5
1

I=
dx
0
1 x2
(a) si approssimi I con i valori Q1 e Q2 ottenuti applicando il metodo
di Cavalieri-Simpson prima a tutto lintervallo e poi suddividendo
lintervallo in due parti uguali;
(b) si approssimi I usando la formula di estrapolazione di Richardson;
(c) dopo aver calcolato analiticamente il valore esatto di I, determinare
lerrore esatto commesso con lestrapolazione di Richardson.

Svolgimento
(a) Applichiamo la formula di Cavalieri-Simpson su tutto lintervallo,
considerando che lampiezza dellintervallo b a = 0.5
Q1 =

0.5
( f (0) + 4 f (0.25) + f (0.5)) = 0.523823565
6

Si ha, infatti, f (0) = 1, f (0.25) = 1.03279556 e f (0.5) = 1.15470054.

appunti di calcolo numerico

Suddividendo lintervallo in due parti uguali, abbiamo h = 0.25,


da cui i punti: x0 = a = 0, x1 = 0.125, x2 = 0.25, x3 = 0.375, e
x4 = b = 0.5.
Q2 =

h
( f ( x0 ) + 4( f ( x1 ) + 4 f ( x3 )) + 2 f ( x2 ) + f ( x4 )) = 0.523616326
6

dove f (0.125) = 1.00790526, f (0.375) = 1.07871978 (essendo gi


in possesso degli altri valori, calcolati per Q1 )

(b) La formula di estrapolazione di Richardson : IR = Q2 +


da cui ricaviamo IR = 0.5236025101

Q2 Q1
15

(c) Analiticamente lintegrale esatto :

I=

Z 0.5
0

1
1 x2

dx = arcsin ( x )|0.5
0 = /6 0 = 0.523598775

Lerrore esatto commesso con lestrapolazione di Richardson, in


valore assoluto, : | I IR | = 3.7351 106 .

Esercizio 11.6.4 data la seguente tabella di dati sperimentali


xi
yi

1
3.1

2
5

3
6.2

4
8.6

5
9.8

6
11.4

7
12.9

dove i valori yi approssimano il valore di una certa funzione f nei punti


R7
xi . Calcolare il valore approssimato di I = 1 f ( x )dx impiegando la
formula di Cavalieri-Simpson composta applicata su tutti i valori della
tabella (vale a dire considerando le n = 3 suddivisioni dellintervallo
[1, 7] individuate dalla tabella).

Svolgimento
In questo esercizio, non sappiamo chi sia la funzione f ma abbiamo solo dei dati sperimentali. Perci dobbiamo applicare la formula
di Cavalieri-Simpson utilizzando solo i dati a disposizione. Daltro
canto, le ascisse dei punti, assegnati nellintervallo [1, 7] ci permettono di avere n = 3 suddivisioni dellintervallo su cui applicare
la formula di Cavalieri-Simpson: la suddivisione [1, 3] (con punto
centrale 2), la suddivisione [3, 5] (con punto centrale 4) e infine la
suddivisione [5, 7] con punto centrale 6. Applicando la formula di
Cavalieri-Simpson composta su questi n = 3 si ottiene come valore
I = 49.333333333333333333.

187

188

annamaria mazzia

Esercizio 11.6.5 Sia da calcolare il seguente integrale:


I=

Z 2
1

1 + 6x2 10x4 dx

(a) si approssimi I con la formula di Cavalieri-Simpson applicata su


n = 1 e n = 2 suddivisioni in parti uguali dellintervallo di
integrazione;
(b) dare una maggiorazione dellerrore commesso nei due casi
confrontandolo poi con lerrore esatto;
(c) applicare il metodo di estrapolazione di Richardson e spiegare
lerrore che si ottiene.

Svolgimento
(a) Per n = 1 suddivisione dellintervallo di integrazione, la formula
di Cavalieri-Simpson quella semplice: i punti da considerare
sono gli estremi 1 e 2 e il punto centrale 1.5. Si ricava il valore
In1 = 47.083333333333329.
Per n = 2 suddivisioni dellintervallo, si hanno i sottointervalli
[1, 1.5] e [1.5, 2] che hanno rispettivamente, come punti centrali,
i valori 1.25 e 1.75. Lampiezza della singola suddivisione vale
0.5. Applicando la formula di Cavalieri-Simpson composta di ha
In2 = 47.005208333333329.
(b) Per avere una maggiorazione dellerrore commesso, abbiamo
bisogno della derivata quarta. Si ha f 0 ( x ) = 12x 40x3 , f 00 ( x ) =
12 120x2 , f 000 ( x ) = 240x e f (iv) ( x ) = 240. La derivata quarta
costante. Il massimo di | f (iv) ( x )| vale 240. In questo caso la
maggiorazione dellerrore, in valore assoluto, coincide esattamente
con lerrore vero (proprio perch la derivata quarta costante!).
Quindi | En1 | = 240/2880 = 8.3333333E 002 e | En2 | = 240/(2880
24 ) = 5.2083333E 003.
Quindi, nel calcolare lerrore vero come | I In | ci aspettiamo
di trovare gli stessi risultati. Infatti, lintegrale esatto vale I =
R2
2
4
3
5 2
1 1 + 6x 10x dx = | x + 2x 2x |1 = 47.
Se calcoliamo, ora, | I In1 | e | I In2 | ritroviamo gli stessi valori
trovati prima.
(c) Se applichiamo la formula di estrapolazione di Richardson otteniamo IRich = In2 + ( In2 In1 )/15 = 47. Con Richardson otteniamo
il valore esatto dellintegrale, dal momento che la relazione che
ora lega il rapporto tra gli errori (tra n = 1 e n = 2 suddivisioni)
e che porta alla formula di Richardson una eguaglianza esatta,
| En1 | = 4| En2 |!

appunti di calcolo numerico

11.7

Domande di riepilogo

1. Come si ricava la formula dei trapezi e quale significato geometrico


ha?
2. Come si ricava lerrore nella formula dei trapezi?
3. Come sono legate le formule della famiglia di Newton-Cotes allinterpolazione secondo Lagrange? Come si ricavano le formule della famiglia di Newton-Cotes? Cosa sono i coefficienti di
Newton-Cotes?
4. Spiegare la formula di Cavalieri-Simpson e il suo errore.
5. Cosa significa formula composta? Quali formule composte
abbiamo studiato?
6. Spiegare la formula dei trapezi composta.
7. Ricavare la formula dellerrore quando si applica la formula dei
trapezi composta. Quali ipotesi occorre fare?
8. Spiegare la formula di Cavalieri-Simpson composta.
9. Ricavare la formula dellerrore quando si applica la formula di
Cavalieri-Simpson composta. Quali ipotesi occorre fare?
10. Cosa succede se si fa il rapporto tra gli errori passando da una
formula composta con n suddivisioni in parti uguali dellintervallo
di integrazione ad una formula con 2n suddivisioni in parti uguali?
Quali ipotesi devono essere verificate? Esaminare il caso in cui la
formula composta data dai trapezi e poi quello in cui si applica
la formula composta di Cavalieri-Simpson.
11. Spiegare lestrapolazione di Richardson.
12. Quando lestrapolazione di Richardson d il valore esatto dellintegrale?
13. Mostrare che il procedimento di estrapolazione di Richardson se
applicato alla formula dei trapezi produce la formula di CavalieriSimpson.

189

12 Differenziazione numerica ed
equazioni alle derivate ordinarie

12.1

Un esempio

Allinizio del 900, van der Pol studi fenomeni non lineari e
propose lequazione differenziale
y00 (t) + e(y2 (t) 1)y0 (t) + y(t) = 0
Questa equazione governa lintensit di corrente in un circuito oscillante a triodo e viene utilizzata nello studio di circuiti che contengono
valvole termoioniche, i cosiddetti tubi a vuoto, come il tubo catodico
del televisore o il magnetron nei forni a microonde. La quantit
e indica lintensit dello smorzamento non lineare: quanto pi e
elevato tanto pi il sistema perde energia rapidamente.
Lequazione differenziale del secondo ordine si pu ricondurre
ad un sistema di equazioni differenziali del primo ordine. Ponendo
u = (u1 , u2 ) = (y, y0 ) si ha
!
!
u10
u2
=
u20
e((u1 )2 1)u2 u1
Come si risolve numericamente un sistema di equazioni differenziali come quello appena scritto? In questo Capitolo, daremo una
piccola introduzione ad alcune tecniche di differenziazione numerica
e ad alcuni metodi numerici che permettono di risolvere equazioni
differenziali del primo ordine.

12.2

Differenziazione numerica

Dallanalisi matematica, sappiamo come si calcolano le derivate di una


funzione. Tuttavia utile conoscere anche delle tecniche numeriche
di differenziazione, sia perch, molte volte, la funzione non nota in
maniera esplicita ma solo per punti, sia perch, a volte, la funzione
troppo complicata!

Luniverso unequazione differenziale.


Jules Henri Poincar

Balthasar van der Pol (1889-1959) fu un fisico


e matematico olandese. Nel 1916 lavor per
un anno con lingegnere John Ambrose Fleming a Londra (Fleming aveva gi inventato il
diodo nel 1904). Si trasfer successivamente
a Cambridge e inizi una collaborazione con
John Joseph Thomson al Cavendish Laboratory (Thomson aveva scoperto lelettrone nel
1897). Qui divenne amico di Edward Appleton che, nel 1947, ricevette il premio Nobel
per la fisica per i suoi contributi alla conoscenza della ionosfera studi fatti insieme a
van der Pol. La loro collaborazione riguard
anche lo studio di fenomeni non lineari usando circuiti triodi per verificare le loro teorie.
Quando van del Pol rientr in Olanda, continu a occuparsi di ottica, elettromagnetismo,
onde radio e fisica atomica. Il nome di van der
Pol associato con lequazione differenziale
che porta il suo nome. Questa equazione apparve per la prima volta sul suo articolo On
relaxation oscillation pubblicato sulla rivista
Philosophical Magazine nel 1926.

192

annamaria mazzia

Dallanalisi, sappiamo che, assegnata una funzione y = f ( x ) e dato


un punto x0 nel suo insieme di definizione, la derivata f 0 ( x0 data
da
f 0 ( x0 ) = lim

h 0

f ( x0 + h ) f ( x0 )
h

Per ottenere una formula che approssima la derivata prima di


f 0 ( x0 ), useremo nodi equidistanti in un intorno di x0 : x0 h, x0 , x0 +
h, . . . con h una quantit positiva sufficientemente piccola.
Consideriamo la f sufficientemente regolare per applicare la formula di Taylor ( f continua e limitata insieme alle sue derivate, fino
ad un ordine sufficientemente elevato). La formula di Taylor della
funzione f di centro x0 , se ci fermiamo alla derivata seconda, data
da
f ( x ) = f ( x0 ) + f 0 ( x0 )( x x0 ) +

( x x0 )2 00
f ( )
2

dove un punto, che non conosciamo, nellintervallo di estremi x e


x0 ..
Prendiamo come x il valore x = x0 h: la formula di Taylor si
legge come
f ( x0 h ) = f ( x0 ) h f 0 ( x0 ) +

h2 00
f ( )
2

Portiamo a primo membro f 0 ( x0 ), ottenendo


f 0 ( x0 ) =

f ( x0 ) f ( x0 h) h 00
+ f ( )
h
2

h2 00
f ( ) abbiamo una formula che appros2
0
sima f ( x0 ) e che si chiama backward difference formula, formula delle
differenze allindietro (stiamo usando infatti il punto x0 h).
Se trascuriamo il termine

La backward difference formula data da


f ( x0 ) f ( x0 h )
f 0 ( x0 ) =
h
Questa formula richiede la conoscenza del valore della f in due punti
x0 e x0 h ed del primo ordine (trascuriamo, infatti, un termine che
h
dipende da h: f 00 ( )).
2
Se, invece, applichiamo la formula di Taylor a x = x0 + h abbiamo
la forward difference formula, formula delle differenze in avanti:
f ( x0 + h ) = f ( x0 ) + h f 0 ( x0 ) +

h2 00
f ( )
2

da cui
f 0 ( x0 ) =

f ( x0 + h) f ( x0 ) h 00
f ( )
h
2

La forward formula f 0 ( x0 ) =

f ( x0 + h ) f ( x0 )
h

appunti di calcolo numerico

Lerrore sempre del primo ordine.


Una formula di grado pi elevato si ottiene considerando tre punti
x0 h, x0 , x0 + h. Prendiamo le formule di Taylor di centro x0 h e
x0 + h scritte fino alla derivata terza di f ,
h2 00
f ( x0 ) +
2
h2 00
f ( x0 h ) = f ( x0 ) h f 0 ( x0 ) +
f ( x0 )
2
f ( x0 + h ) = f ( x0 ) + h f 0 ( x0 ) +

h3 000
f ( 1 )
6
h3 000
f ( 2 )
6

Sottraendo membro a membro abbiamo


f ( x0 + h) f ( x0 h) = 2h f 0 ( x0 ) +

h3 000
( f ( 1 ) + f 000 ( 2 ))
6

Ora le due derivate terze nei due punti 1 e 2 (che non conosciamo)
sono comprese tra un valore minimo e un valore massimo, da cui
f 000 ( 1 ) + f 000 ( 2 )
anche il loro valore medio
compreso tra il minimo
2
000
e il massimo della funzione f stessa (si veda il Teorema del Valore
Intermedio), cio esiste (compreso tra 1 e 2 e, quindi, tra x0 h e
f 000 ( 1 ) + f 000 ( 2 )
. Sostituendo abbiamo
x0 + h) per cui f 000 ( ) =
2
f ( x0 + h) f ( x0 h) = 2h f 0 ( x0 ) +

h3 000
2 f ( )
6

Risolviamo ora per f 0 ( x0 ), ottenendo


f 0 ( x0 ) =

f ( x0 + h) f ( x0 h) h2 000
f ( )
2h
6

Se trascuriamo il termine che dipende da h2 otteniamo unapprossimazione di f 0 ( x0 ).


La formula centrata data da f 0 ( x0 ) =

f ( x0 + h ) f ( x0 h )
2h

Il termine che trascuriamo per ottenere le formule di differenziazione numerica, cio lerrore di discretizzazione, prende il nome di
errore di troncamento.
La formula centrata valuta il valore della f in soli due punti, come
stato fatto per le formule backward e forward ma ha un ordine di
accuratezza pi elevato.
Formule pi accurate si possono ottenere usando pi punti nellintorno di x0 e considerando espansioni di Taylor che coinvolgono
derivate di ordine pi elevato. Ad esempio, prendendo i punti x0 2h,
x0 h, x0 + h e x0 + 2h si pu ricavare
f 0 ( x0 ) =

1
h4
( f ( x0 2h) 8 f ( x0 h) + 8 f ( x0 + h) f ( x0 + 2h)) + f (v) ( )
12h
30

Da questa, otteniamo la formula detta a 5 punti perch, oltre al


punto in cui vogliamo approssimare la derivata, ne consideriamo altri
quattro.

193

194

annamaria mazzia

La formula a 5 punti data da


f 0 ( x0 )

1
( f ( x0 2h) 8 f ( x0 h) + 8 f ( x0 + h) f ( x0 + 2h))
12h

Lerrore di troncamento dipende da h4 .


Nellapplicare queste formule, dobbiamo ricordarci che, oltre allerrore di troncamento dovuto al tipo di approssimazione fatto, c anche
lerrore di arrotondamento. Nellesempio di pag. 39, avevamo visto
come, per piccoli valori di h, il fenomeno di cancellazione numerica
portava a crescite degli errori.
La scelta di h dovrebbe, perci, dipendere, dallordine dellerrore
di troncamento (che conosciamo) e da una maggiorazione sul termine
derrore darrotondamento (valore che in genere non conosciamo).
Per evitare che domini lerrore di arrotondamento (che pu portare al
fenomeno di cancellazione numerica) importante non prendere h
troppo vicino alla precisione di macchina.
Esempio Riprendiamo lesempio di pag. 39 per confrontare le
diverse formule che abbiamo introdotto.
Dobbiamo derivare f ( x ) = sin ( x ) in x0 = 1.2. Per confrontare le
diverse formule, partiamo da h = 1 e lo riduciamo fino ad arrivare a
h = 1012 . In Figura 12.1, in un grafico semilogaritmico, confrontiamo
gli errori assoluti ottenuti dalle varie formule: da un certo punto in
poi, prevale lerrore di arrotondamento.

Altre tecniche di differenziazione numerica


sono basate sullinterpolazione polinomiale
di Lagrange (se p( x ) approssima f ( x ) allora p0 ( x ) approssima f 0 ( x )) o su un procedimento di estrapolazione di Richardson
(simile a quello che abbiamo visto per le formule di integrazione numerica). Il discorso si
estende, inoltre, per approssimare derivate
di ordine superiore.

Figura 12.1: Grafico semilogaritmico che


mette a confronto lerrore esatto al variare di h [1012 , 1] delle formule forward,
backward, centrata e a 5 punti.

12.3

Sulle equazioni differenziali ordinarie

Passiamo ora a studiare le equazioni differenziali ordinarie.


Vogliamo trovare una funzione y(t) che soddisfi la seguente equazione differenziale ordinaria del primo ordine:
dy
= f (t, y),
dt

atb

La funzione f (t, y) assegnata. Ci riferiamo a t come alla variabile


indipendente. Dobbiamo trovare quella funzione y = y(t) tale che la
dy(t)
sua derivata prima y0 = y0 (t) =
coincida con f (t, y(t)).
dt
Esempio Sia f (t, y) = y + t definita per t 0 e per qualunque y reale. Si ha
y0 = y + t,

t0

Si verifica che, per qualunque scalare la funzione y(t) = t 1 +


soddisfa la ODE.
Se, inoltre, assegnato un valore iniziale, per esempio y(0) = 1,
allora, dovendo essere 1 + = y(0) = 1, risulta = 2. Assegnare
et

Una abbreviazione per indicare unequazione


differenziale ordinaria data dalla sigla ODE:
Ordinary Differential Equation.

appunti di calcolo numerico

un valore iniziale determina ununica soluzione allODE. Si parla di


problema a valori iniziali (IVP).
Nel caso in cui y(0) = 1 si ricava lunica soluzione y(t) = t 1 +

2e t .
_
Problemi in cui abbiamo equazioni alle derivate ordinarie di ordine pi elevato possono essere trasformati in sistemi equivalenti di
equazioni del primo ordine.
Esempio La seconda legge del moto di Newton dice che la
forza F uguale al prodotto della massa m per laccelerazione a:
F = ma. Questa equazione una ODE del secondo ordine in quanto
laccelerazione a data da a = y00 , dove y la coordinata della
F
posizione. LODE pu essere riscritta come: y00 = . Definendo
m
u1 = y e u2 = y0 si ha il sistema (equivalente allequazione di prima)
di due equazioni del primo ordine di ODE:
!
!
u2
u10
=
u20
F/m
Per risolvere il sistema, possiamo usare metodi che vanno bene per
risolvere equazioni differenziali del primo ordine. La prima componente della soluzione u1 corrisponde alla posizione y dellequazione
da cui siamo partiti. La seconda componente u2 fornisce la velocit
y0 .
_
Sistemi del primo ordine di ODE hanno la forma
y0 (t) = f(t, y)
n +1

dove y : R R con y = (y1 y2 . . . yn ), f : R


R e y0 (t) =
dy
denota la derivata rispetto a t (per cui la i-sima componente del
dt
dy (t)
vettore derivata data da yi0 (t) = i ). La funzione f assegnata e
dt
noi vogliamo determinare il vettore di funzioni y che soddisfa lODE.
Per semplicit noi studieremo il caso di una singola equazione
scalare, n = 1. Ma lapproccio del tutto simile nel caso di sistemi di
equazioni del primo ordine.
Sia data lODE
y0 = f (t, y(t))

atb

con valore iniziale


y( a) = y a .
Per risolvere questa ODE discretizziamo lintervallo [ a, b] in n + 1
punti, equidistanti per semplicit: ti = a + ih, h = 0, 1, . . . , n, con
h = (b a)/n.
Il passo di discretizzazione (temporale se t assume il significato
della variabile temporale) dunque h. Nelle applicazioni pratiche,

195

196

annamaria mazzia

il passo h variabile (cio i punti non sono equidistanti), tuttavia,


per capire meglio come funzionano i metodi, noi useremo sempre un
passo h costante.
Sia y(t) la soluzione esatta del nostro problema a valori iniziali.
Allora y(ti ) il valore esatto della soluzione calcolata nel punto ti .
Indichiamo invece con yi il valore approssimato al tempo ti che
ricaviamo applicando un metodo numerico che risolve il problema
proposto.

12.4

Metodo di Eulero esplicito

Con il metodo di Eulero esplicito applichiamo la formula di Taylor


(del secondo ordine) alla funzione y(t), di centro ti , in modo da poter
successivamente approssimare la derivata prima y0 (ti ):
y ( t ) = y ( ti ) + ( t ti ) y 0 ( ti ) +

(t ti )2 00
y ( i )
2

(t ti )2 00
y ( i ) il resto della formula di Taylor con i un
2
punto opportuno nel segmento di estremi t e ti .
Prendiamo come t il valore ti + h vale a dire ti+1 , da cui si ha
t ti = ti+1 ti = h. Sostituendo si ottiene:
La quantit

h2 00
y ( i )
2
Esplicitando y0 (ti ) rispetto agli altri termini si ha:
y(ti+1 ) = y(ti ) + hy0 (ti ) +

y(ti+1 ) y(ti ) h 00
y ( i )
h
2
Ora si sostituisce il valore trovato per y0 (ti ) nella ODE y0 =
f (t, y(t)) per t = ti :
y 0 ( ti ) =

y(ti+1 ) y(ti ) h 00
y ( i ) = f (ti , y(ti ))
h
2
h
Trascurando il termine y00 ( i ) non abbiamo pi i valori della so2
luzione esatta, ma otterremo i valori della soluzione approssimata.
Scriviamo dunque:
y i +1 y i
= f ( ti , yi )
h
La formula di Eulero esplicito : yi+1 = yi + h f (ti , yi ).
La formula di tipo esplicito perch per passare dal livello i al
livello i + 1 sfruttiamo i dati che gi conosciamo del livello i.
Si parte infatti da y0 = y(t0 ) = y( a) = y a e si ricava:
y1 = y0 + f ( t0 , y0 )
y2 = y1 + f ( t1 , y1 )
..
.=

..
.

Leonhard Euler (1707-1783) fu un matematico svizzero. Fu studente di Johann Bernoulli


che comprese le sue grandi potenzialit e
favor i suoi studi. Eulero noto soprattutto
per i suoi contributi nel campo della geometria, della teoria dei numeri, delle equazioni
differenziali, del calcolo delle variazioni.
lui che introdusse il simbolo f ( x ) per indicare le funzioni, e per la base naturale, i per
la radice quadrata di 1, di , il simbolo di
sommatoria e altri ancora.

appunti di calcolo numerico

197

Si arriva alla stessa formula integrando lODE e approssimando


lintegrale della f mediante il valore in f (t0 , y(t0 )): da y0 = f (t, y(t))
integrando ambo i membri da t0 a t, otteniamo
Z t
dy
t0

dt

dt =

Z t
t0

f (t, y(t)) dt =

Z y(t)
y0

dy =

Z t
t0

f (t, y(t)) dt

Rt
Al secondo membro, approssiamo t f (t, y(t)) dt mediante il valore
0
(t t0 ) f (t0 , y(t0 )) (approssimiamo la f mediante la retta f (t0 , y(t0 ))).
Abbiamo:
y(t) = y0 + (t t0 ) f (t0 , y0 )) + errore della formula di quadratura.
Per t = t1 , numericamente: y1 = y0 + h f (t0 , y0 )).
Ai passi successivi: yi+1 = yi + h f (ti , yi ))
Esempio Supponiamo di applicare il metodo di Eulero esplicito alla ODE y0 = y con passo h a partire dal punto iniziale t0 = 0 e
avanziamo al tempo t1 = t0 + h
y1 = y0 + h f (t0 , y0 ) = y0 hy0 = (1 h)y0
Il valore y1 che otteniamo affetto da errore: y1 6= y(t1 ) Per esempio,
se per t0 si ha y0 = 1, la soluzione esatta y(t) = et . Per h = 0.5, si
ha y1 = 0.5 mentre y(0.5) = e0.5 0.60653
_
Figura 12.2: Interpretazione geometrica del
metodo di Eulero esplicito. Si considerato il
problema y0 = y con y(0) = 1 la cui soluzione esatta y(t) = et . I valori numerici
ottenuti dal metodo di Eulero esplicito sono
cerchiati e si trovano sulla linea spezzata che
li interpola. La linea spezzata tangente, allinizio di ogni passo, alla traiettoria che passa per il corrispondente punto, soluzione del
problema y0 = y con y(ti ) = yi .

Da un punto di vista geometrico (si veda la Figura 12.2), il valore


in ti+1 approssimato utilizzando il valore della retta la cui pendenza
data da f (ti , yi ): come se ad ogni passo cercassimo di risolvere il

198

annamaria mazzia

problema a valori iniziali:


y0 (t) = f (t, y(t))
y ( ti ) = yi
per cui il valore che otteniamo per il tempo ti+1 tangente alla
traiettoria della soluzione di questo IVP.

12.5

Metodo di Eulero implicito

Se applichiamo la formula di Taylor di punto iniziale ti+1 , abbiamo


y ( t ) = y ( t i +1 ) + ( t t i +1 ) y 0 ( t i +1 ) +

(t ti+1 )2 00
y ( i )
2

Per t = ti , si ha t ti+1 = ti ti+1 = ti (ti + h) = h. Sostituendo,


abbiamo:
y(ti ) = y(ti+1 ) hy0 (ti+1 ) +

h2 00
y ( i )
2

Otteniamo quindi
y 0 ( t i +1 ) =

y(ti+1 ) y(ti ) h 00
+ y ( i )
h
2

Andando a sostituire nella ODE al tempo ti+1 , si ha :


y(ti+1 ) y(ti ) h 00
+ y ( i ) = f (ti+1 , y(ti+1 ))
h
2
Trascurando il termine del resto di Taylor

h 00
y ( i ) abbiamo:
2

y i +1 y i
= f (ti+1 , yi+1 ))
h
La formula di Eulero implicito vale yi+1 = yi + h f (ti+1 , yi+1 )).
La differenza rispetto alla formula esplicita che la f valutata non
pi al tempo ti ma al tempo ti+1 Quindi il calcolo di yi+1 dipende
implicitamente da yi+1 stesso! La valutazione di yi+1 diventa quindi
pi laboriosa e complicata (se si ha unequazione non lineare in yi+1 ,
la si risolve tramite un metodo di punto fisso o di Newton-Raphson).
In termini di accuratezza si hanno risultati migliori.
Esempio Consideriamo sempre y0 = y con y(0) = 1 (soluzione esatta y(t) = et ).
Il metodo di Eulero implicito diventa: yi+1 = yi hyi+1 ovvero
(1 + h ) y i +1 = y i
yi
La soluzione numerica yi+1 =
.
(1 + h )
Per h = 0.5 ricaviamo y1 = 0.66667 contro un valore esatto y(1)
0.60653.
_

appunti di calcolo numerico

Esempio Si abbia lequazione y0 = y3 con condizione iniziale


y(0) = 1. Usando il metodo di Eulero implicito con passo h = 0.5,
per ricavare y1 otteniamo lequazione implicita
y1 = y0 + h f (t1 , y1 ) = 1 0.5y31
Questa equazione non lineare in y1 pu essere risolta mediante metodo di punto fisso (x = g( x ) = 1 0.5x3 ) oppure utilizzando il
metodo di Newton-Raphson per F ( x ) = 0 con F ( x ) = x 1 + 0.5x3 ) .
Lapprossimazione iniziale per ottenere y1 pu essere o la soluzione
al passo precedente, y0 , oppure usare il metodo di Eulero esplicito,
che d y1 = y0 0.5y30 = 0.5. Otteniamo, come y1 il valore finale
y1 0.7709.
_
Esempio Vogliamo discretizzare il problema a valori iniziali
y 0 = y2
y (0) = 1
con passo h = 0.1 applicando il metodo di Eulero esplicito per ricavare
y1 e y2 .
Il metodo di Eulero esplicito :
yi+1 = yi + h f (ti , yi ) = yi + h(y2i ) = yi hy2i
Partendo da y0 = 1 si ricava:
y1 = 1 0.1(12 ) = 0.9
y2 = 0.9 0.1(0.92 ) = 0.819
Per confronto, calcoliamo la soluzione esatta y(t) =

1
, ottenendo:
t+1

y(t1 ) = y(0.1) = 1/(0.1 + 1) = 0.9090909090


y(t2 ) = y(0.2) = 1/(0.2 + 1) = 0.8333333333
Applichiamo ora il metodo di Eulero implicito con lo stesso passo
h = 0.1.
yi+1 = yi + h f (ti+1 , yi+1 ) = yi hy2i+1
Per ricavare y1 la formula diventa:
y1 = y0 + h f (t1 , y1 ) = 1 0.1(y21 )
Abbiamo unequazione non lineare in y1 . Per trovare y1 , possiamo
pensare di applicare lo schema di punto fisso alla funzione g(y) =
1 0.1(y2 ) partendo da y(0) = y0 = 1, in quanto y1 = g(y1 ) punto
fisso per la funzione g. Applichiamo tre passi dello schema di punto
fisso:
y(1) = g(y(0) ) = 1 0.1(12 ) = 0.9
y(2) = g(y(1) ) = 1 0.1(0.92 ) = 0.919
y(3) = g(y(2) ) = 1 0.1(0.9192 ) = 0.9155439

199

200

annamaria mazzia

Se prendiamo y(3) come approssimazione di y1 ricaviamo y1 =


0.9155439 (per confronto, il valore esatto 0.90909090).
Calcoliamo ora y2 :
y2 = y1 + h f (t2 , y2 ) = 0.9155439 0.1(y22 )
La funzione di punto fisso diventa g(y) = 0.9155439 0.1(y2 ). Applichiamo lo schema di punto fisso partendo da y(0) = y1 = 0.9155439.
y(1) = g(y(0) ) = 0.9155439 0.1(0.91554392 ) = 0.8317218367
y(2) = g(y(1) ) = 0.9155439 0.1(0.83172183672 ) = 0.8463677786
y(3) = g(y(2) ) = 0.9155439 0.1(0.84636777862 ) = 0.8439100583
Troviamo quindi y2 = 0.8439100583 (valore esatto 0.8333333333).
Vediamo, adesso, cosa accade in Eulero implicito se il punto iniziale
del metodo di punto fisso dato da un passo del metodo di Eulero
esplicito.
Per ricavare y1 , considero come y(0) = y0 + h f (t0 , y0 ) = 1 0.1 =
0.9. In tal caso, lapprossimazione iniziale quella che, nel caso di
prima, era il valore y(1) .
Applichiamo tre volte lo schema di punto fisso:
y(1) = g(y(0) ) = 1 0.1(0.92 ) = 0.919
y(2) = g(y(1) ) = 1 0.1(0.9192 ) = 0.9155439
y(3) = g(y(2) ) = 1 0.1(0.91554392 ) = 0.9161779367
Quindi y1 = 0.9161779367.
Al secondo passo, lo schema di punto fisso dato dalla funzione
g(y) = y1 h(y2 ) = 0.9161779367 0.1y2 .
Come approssimazione iniziale prendiamo y(0) = y1 + h f (t1 , y1 ) =
g(y1 ) = 0.8322397355. Si ha:
y(1) = g(y(0) ) = 0.9161779367 0.1(0.83223973552 ) = 0.8469156390
y(2) = g(y(1) ) = 0.9161779367 0.1(0.84691563902 ) = 0.8444513267
y(3) = g(y(2) ) = 0.9161779367 0.1(0.84445132672) = 0.8448681324
Ricaviamo y2 = 0.8448681324.
_

12.6

Metodo di Crank-Nicolson
Partiamo dallODE y0 = f (t, y(t)). Integriamo ambo i membri
dellequazione sullintervallo [ti , ti+1 ]:
Z y(t )
i +1
y ( ti )

dy =

Z t
i +1
ti

f (t, y(t)) dt = y(ti+1 ) y(ti ) =

Z t
i +1
ti

f (t, y(t)) dt

A secondo membro, applichiamo la formula dei trapezi trascurando lerrore di integrazione:


y i +1 y i =

h
[ f (ti , yi ) + f (ti+1 , yi+1 )]
2

John Crank (1916-2006) stato un matematico inglese che si dedicato soprattutto allo
studio di soluzioni numeriche di equazioni alle derivate parziali, in particolare di problemi
di conduzione del calore. noto soprattutto
per il lavoro svolto con Phyllis Nicolson.
Phyllis Nicolson (1917-1968) stata una
matematica inglese. Negli anni della seconda
guerra mondiale lavor sulla teoria del magnetron. nota, appunto, per il metodo di
Crank-Nicolson.

appunti di calcolo numerico

h
Si ha la formula di Crank-Nicolson: yi+1 = yi + [ f (ti , yi ) + f (ti+1 , yi+1 )]
2
La stessa formula la si pu ricavare prendendo la media aritmetica
delle formule di Eulero esplicito e implicito:
y i +1 y i = h f ( t i , y i )
y i +1 y i = h f ( t i +1 , y i +1 )
sommando e dividendo per 2:

y i +1 y i =

h
h
[ f (ti , yi ) + f (ti+1 , yi+1 )] = yi+1 = yi + [ f (ti , yi ) + f (ti+1 , yi+1 )]
2
2

Esempio Lo stesso esempio di prima (y0 = y con y(0) = 1)


h
risolto con Crank-Nicolson d yi+1 = yi + [yi yi+1 )] da cui
2
ricaviamo


h
h
2h
(1 + )yi+1 = (1 )yi = (2 + h)yi+1 = (2 h)yi = yi+1 =
yi
2
2
2+h
Per h = 0.5, confrontiamo i valori ottenuti dai metodi di Eulero
esplicito, implicito e Crank-Nicolson, con la soluzione esatta:
y ( ti )
yi Eul. Espl. yi Eul. Impl. yi C-N
ti
0.0 1.000000 1.0000000
1.000000
1.000000
0.5 0.606531 0.5000000
0.666667
0.600000
1.0 0.367879 0.2500000
0.444444
0.360000
1.5 0.223130 0.1250000
0.296296
0.216000
2.0 0.135335 0.0625000
0.197531
0.129600
2.5 0.082085 0.0312500
0.131687
0.077760
3.0 0.049787 0.0156250
0.087791
0.046656
3.5 0.030197 0.0078125
0.058528
0.027994
4.0 0.018316 0.0039062
0.039018
0.016796
_

12.7

Studio dellerrore

Nel costruire i metodi (di Eulero esplicito, implicito, Crank-Nicolson)


abbiamo trascurato un termine (il resto della formula di Taylor o
lerrore della formula dei trapezi): questo termine che abbiamo trascurato rappresenta lerrore di troncamento locale. Nel caso di Eulero
esplicito avevamo (usando la formula di Taylor):
y 0 ( t i +1 ) =

y(ti+1 ) y(ti ) h 00
y ( i ) = f (ti , y(ti ))
h
2

Per costruire il metodo, abbiamo trascurato il termine del resto, vale


a dire la quantit
di =

y ( t i +1 ) y ( t i )
h
f (ti , y(ti )) = y00 ( i ) = O(h)
h
2

201

202

annamaria mazzia

Questa quantit ci dice di quanto la soluzione esatta fallisce nel


soddisfare la relazione della formula di Eulero esplicito e rappresenta
lerrore di troncamento locale.
Definizione 12.7.1 Si definisce errore totale di troncamento i la quantit:
i = y ( ti ) yi .
Ci aspettiamo che sia dello stesso ordine di grandezza dellerrore
di troncamento locale.
Definizione 12.7.2 Per effetto dellarrotondamento, al tempo ti al posto di
yi otteniamo il valore arrotondato yi . Si definisce errore totale di arrotondamento la quantit:
i = yi yi
Definizione 12.7.3 Lerrore globale dello schema numerico dato dal contributo dellerrore totale di troncamento e dellerrore totale di arrotondamento
ei = y ( t i ) y i = i + i
Gli errori di arrotondamento nellapprossimare la derivata prima
1
di una funzione si comportano come O( ) (si veda lesempio fatto
h
sulla propagazione degli errori a pag. 39). Tuttavia questo aspetto
diventa secondario nella risoluzione delle ODE sia perch il passo
h nelle applicazioni non mai troppo (esageratamente) piccolo per
ragioni di efficienza sia perch la y e non la y0 la funzione che
dobbiamo approssimare. Inoltre, nelleseguire i calcoli in doppia
precisione (come si fa nei moderni linguaggi di programmazione),
laspetto dovuto allarrotondamento si vede poco rispetto ad altri
fenomeni che influenzano la propagazione degli errori.

12.8

Errori di troncamento locale

Nel metodo di Eulero esplicito:


di =

y ( t i +1 ) y ( t i )
h
f (ti , y(ti )) = y00 ( i ) = O(h)
h
2

Nel metodo di Eulero implicito:


di =

y ( t i +1 ) y ( t i )
h
f (ti+1 , y(ti+1 )) = y00 ( i ) = O(h)
h
2

Nel metodo di Crank-Nicolson (derivando la formula dai trapezi


e includendo il termine dellerrore):
y ( t i +1 ) y ( t i ) =

h
f 00 ( i , i ) 3
[ f (ti , y(ti )) + f (ti+1 , y(ti+1 ))]
h
2
12

dove i e i sono opportuni punti. Ma f = y0 da cui f 0 = y00 e


f 00 = y000 .

appunti di calcolo numerico

Perci
y ( t i +1 ) y ( t i ) =

di =

12.9

h
y000 ( i ) 3
[ f (ti , y(ti )) + f (ti+1 , y(ti+1 ))]
h
2
12

y000 ( i ) 2
y ( t i +1 ) y ( t i ) 1
[ f (ti , y(ti )) + f (ti+1 , y(ti+1 ))] =
h = O(h2 )
h
2
12

Convergenza e stabilit

Definizione 12.9.1 Un metodo si dice convergente se lim

h 0 ei
i +

= 0

cio se lerrore va a zero al tendere del passo h a zero e di i allinfinito in


modo che il prodotto ih si mantenga costante (cos t0 + ih tende ad un valore
di t fissato: studiamo lerrore fissato t).

Esempio Vediamo come, fissato un certo istante t, possiamo


fare tendere h a zero e far crescere i allinfinito in modo che t0 + ih
sia sempre uguale a t. Sia t0 = 0 e t = 0.5:
h
i
ih
1
0.5
0.5
0.25
2
0.5
4
0.5
0.125
0.0625
8
0.5
..
..
..
.
.
.
2.4414e-4 2048 0.5
_
Definizione 12.9.2 Un metodo si dice stabile se lerrore iniziale si mantiene limitato al crescere di i (per i ):

| e i | M | e0 |
con M costante positiva.
Studieremo la convergenza e la stabilit dei metodi di Eulero esplicito,
implicito e Crank-Nicolson applicati allequazione test
y0 = y
prendendo > 0 (in modo che < 0) con condizione iniziale
y (0) = y0 .
La soluzione esatta di questo IVP y(t) = y0 et : tende a zero per
valori di t crescenti. Ci aspettiamo che anche la soluzione numerica si
comporti in maniera simile.

203

204

12.9.1

annamaria mazzia

Convergenza di Eulero esplicito


Per semplicit, applichiamo la formula del metodo di Eulero esplicito
allequazione test con = 1.
y1 = y0 + h f (t0 , y0 ) = y0 hy0 = (1 h)y0
y2 = y1 + h f (t1 , y1 ) = y1 hy1 = (1 h)y1
..
.
yi = yi1 + h f (ti1 , yi1 ) = yi1 hyi1 = (1 h)yi1
Andando a ritroso troviamo una formula che lega yi direttamente a
y0 .
y1 = (1 h ) y0
y2 = (1 h ) y1 = (1 h )2 y0
..
.
y i = (1 h ) y i 1 = (1 h ) i y 0
La soluzione numerica al tempo ti data da yi = (1 h)i y0 . Fissato
un tempo t = ih, vediamo se lim ei = 0 cio se lim yi = y(t).
h 0
i +

h 0
i +

ih
1 t
Osserviamo che: (1 h)i = (1 h) h = (1 h) h

ln (1 h)
1
(1/h)
ln
(
1

h
)
h
Perci: (1 h) h = e
=e
Quando facciamo il limite per h 0 e per i + consideriamo
che, per il teorema dell Hpital, facendo la derivata rispetto alla
variabile , vale

1
ln (1 h)
= lim
= 1
h
h 0
h 0 1 h
lim

Di conseguenza limh0 e
Allora

ln (1 h)
h
= e 1

1 t
lim yi = lim y0 (1 h)i = lim y0 (1 h) h = y0 et = y(t)

h 0
i +

h 0
i +

h 0
i +

In questo modo abbiamo provato che il metodo converge. Il


discorso si ripete in maniera del tutto simile, per 6= 1.

12.9.2

Stabilit di Eulero esplicito


Per quanto riguarda la stabilit, dobbiamo provare che lerrore si
mantiene limitato. Sia > 0.
Abbiamo yi+1 = yi hyi = (1 h)yi , vale a dire yi+1 = y0 (1
h)i+1 . La soluzione esatta di questo problema y(t) = y0 et e

Ricordiamo la propriet per la quale


)
= e ln (x) .

x = eln ( x

appunti di calcolo numerico

tende a zero per valori di t crescenti. Vogliamo che tenda a zero


anche la soluzione numerica (in modo da mantenere limitato lerrore).
La soluzione numerica (fissato h e per i grande, cio per valori di t
crescente) tende a zero se |1 h| < 1 cio per 1 < 1 h < 1
2
0 < h < 2 h < .

Il metodo di Eulero esplicito stabile sotto condizione.

12.9.3

Convergenza di Eulero implicito


Il metodo di Eulero implicito applicato allequazione test diventa:
y i +1 =

yi
(1 + h)

Quindi
y0
(1 + h)
y0
y1
=
y2 =
(1 + h)
(1 + h)2
y2
y0
y3 =
=
(1 + h)
(1 + h)3
..
.
y0
y i 1
=
yi =
(1 + h)
(1 + h)i
y1 =

In tal caso

1 ih
y0
lim yi = lim
= lim y0 (1 + h)i = y0 (1 + h) h
= y0 et = y(t)
h 0
h0 (1 + h )i
h 0

i +

i +

i +

(i passaggi sono del tutto simili a quelli visti per Eulero esplicito).
Abbiamo provato la convergenza.

12.9.4

Stabilit di Eulero implicito


y0
, si osser(1 + h)i
va che, per i +, qualunque sia il valore di h, la soluzione
1
tende a zero in quanto limi+
= 0 Si parla di metodo
(1 + h)i
incondizionatamente stabile.
Per la stabilit, dalla soluzione numerica yi =

12.9.5

Convergenza di Crank-Nicolson
Il metodo di Crank-Nicolson applicato allequazione test diventa:
h
y i +1 = y i +
[yi yi+1 ] da cui
2


2 h
y i +1 =
yi
2 + h

205

206

annamaria mazzia

Andando a ritroso si ricava



y i +1 = y 0

2 h
2 + h

 i +1

Per verificare che il metodo converge studiamo il limite lim yi .


h 0
i +

Partiamo dalla relazione


ih
1
2 h h
=
=
2 + h

2 h
2 + h

i

Ma


2 h
2 + h

t
1
2 h h

2 + h

1 2 h
1
h = e h ln ( 2 + h )

Nel fare il limite per h 0 e i + della quantit che si trova


allesponente, applichiamo lHpital e ricordiamo che la derivata
2 h
(2 + h) (2 h)
di
, rispetto alla variabile , vale
=
2 + h
(2 + h)2
4
:
(2 + h)2
ln (
lim

h 0
i +

2 h
)
4
2 + h = lim 2 + h 4
= lim
=
h
h0 (2 + h )(2 h )
h0 2 h (2 + h )2
i +

i +

Quindi
ih
1
2 h h
t
= lim y0
= y(t)
= y0 e
2 + h
h 0


lim yi = lim y0

h 0
i +

h 0
i +

2 h
2 + h

i

i +

La convergenza provata.

12.9.6

Stabilit di Crank-Nicolson

2 h i
.
2 + h
Per i +, qualunque sia il valore di h, la soluzione tende a zero in


2 h i
quanto limi+
= 0. Il metodo incondizionatamente
2 + h
stabile.


Per la stabilit, si vede che la soluzione numerica yi = y0

12.9.7

Sulla stabilit
La stabilit di questi metodi la si pu verificare anche considerando
direttamente lerrore ei , dimostrando che gli errori al passo i e al passo
i + 1 verificano la stessa relazione che hanno yi e yi+1 e mostrando che
lerrore rimane limitato sotto condizione per Eulero esplicito mentre
incondizionatamente stabile per gli altri metodi. In Figura 12.3 si

appunti di calcolo numerico

207

vede come il metodo di Eulero esplicito sia stabile sotto condizione


mentre i metodi di Eulero implicito e Crank-Nicolson sono stabili
qualunque passo di discretizzazione venga utilizzato.
Esempio Consideriamo il metodo di Eulero esplicito e applichiamolo allequazione test. Sappiamo che yi+1 = yi + hyi .
Per la soluzione esatta, sappiamo che vale y(ti+1 ) = y(ti ) + hy(ti ) +
hdi (con di lerrore di troncamento locale).
Sottraendo la prima equazione dalla seconda abbiamo
ei+1 = ei + hei + hdi
h 00
y ( i ) e che, per studiare la stabilit, h fis2
sato mentre i tende a +, il termine hdi non influisce sullandamento
dellerrore e possiamo trascurarlo. Si ha allora la relazione:
Considerato che di =

ei+1 = ei + hei
Ricaviamo ei = e0 (1 + h)i .
Il ragionamento da fare lo stesso che abbiamo fatto in precedenza
e troviamo gli stessi risultati. Dobbiamo infatti verificare quando ei
tende a zero per i che tende a +. . .
_
Figura 12.3: Confronto dei metodi di Eulero esplicito, implicito e Crank-Nicolson sullequazione test y0 = y, prendendo come h il
valore h = 2 (a sinistra) e h = 0.5 (a destra).

12.10

Esercizi

Esercizio 12.10.1 Studiare la stabilit del metodo di Eulero esplicito applicato allequazione differenziale y0 = 2y + 1, con y(0) = 1
e2t + 1
(soluzione esatta y(t) =
)
2

Svolgimento
Per provare la stabilit del metodo dobbiamo verificare che lerrore
iniziale si mantiene limitato per valori crescenti del tempo.
Il metodo di Eulero esplicito applicato allODE del problema
diventa
yi+1 = yi + h(2yi + 1) = (1 2h)yi + h

208

annamaria mazzia

La soluzione esatta soddisfa unequazione del tipo

y(ti+1 ) = y(ti ) + h(2y(ti ) + 1) + hdi = (1 2h)y(ti ) + h + hdi


Nel calcolare lerrore ei+1 = y(ti+1 ) yi+1 abbiamo
ei+1 = (1 2h)ei + hdi
Il termine hdi (di errore locale di troncamento) si pu trascurare.
Abbiamo allora ei+1 = (1 2h)ei .
Possiamo trovare con facilit che ei+1 = (1 2h)i+1 e0 o, ancora,
ei = (1 2h)i e0 .
Se vogliamo che lerrore rimanga limitato per i la quantit
(1 2h)i non deve crescere.
Quindi deve essere |1 2h| < 1, vale a dire 1 < 1 2h < 1 cio
2h < 2, quindi h < 1: stabilit sotto condizione.

12.11

Domande di riepilogo

1. A cosa servono le formule di differenziazione numerica?


2. Ricavare la formula delle differenze allindietro e il corrispondente
errore di discretizzazione.
3. Ricavare la formula delle differenze in avanti e il corrispondente
errore di discretizzazione.
4. Ricavare la formula delle differenze centrali e il corrispondente
errore di discretizzazione.
5. Ricavare il metodo di Eulero esplicito per la soluzione di un
problema a valori iniziali.
6. Ricavare il metodo di Eulero implicito per la soluzione di un
problema a valori iniziali.
7. Scrivere la formula del metodo di Crank-Nicolson.
8. Quali errori vanno considerati nelle formule numeriche per risolvere equazioni alle derivate ordinarie?
9. Cosa significa che un metodo per risolvere equazioni alle derivate
ordinarie un metodo convergente?
10. Cosa significa che un metodo per risolvere equazioni alle derivate
ordinarie un metodo stabile?
11. Per studiare convergenza e stabilit di un metodo numerico per
risolvere equazioni alle derivate ordinarie, si prende in esame la
cosiddetta equazione test: di che cosa si tratta?
12. Dimostrare la convergenza del metodo di Eulero esplicito.

appunti di calcolo numerico

13. Per quale motivo il metodo di Eulero esplicito stabile sotto


condizione? Dimostrare.
14. I metodi di Eulero implicito e di Crank-Nicolson sono stabili sotto
condizione oppure no?

209

Bibliografia
Uri M. Ascher and Chen Greif. A First Course on Numerical Methods.
SIAM, Philadelphia, 2011.
Ake Bjrk and Germund Dahlquist. Numerical Methods in Scientific
Computing, Volume II. Siam, 2008.
Richard L. Burden and J. Douglas Faires. Numerical Analysis. BrooksCole Publishing, 2004.
Germund Dahlquist and Ake Bjrk. Numerical Methods in Scientific
Computing, Volume I. Siam, 2006.
G. Gambolati. Lezioni di Metodi Numerici. Cortina, Padova, 1994.
Walter Gautschi. Numerical Analysis: An Introduction. Birkuser,
Boston, 1997.
Paolo Giangrandi. Dispense del corso di Storia dellInformatica.
Universit degli Studi di Udine, Italia, 2010.
Paolo Giangrandi. Museo on line - Breve storia degli Strumenti di
Calcolo. Tecnoteca, http://www.tecnoteca.it/museo/, ultima visita:
febbraio 2015.
Michael T. Heath.
McGraw-Hill, 2002.

Scientific Computing, An Introductory Survey.

Autar K. Kaw, Egwu E. Kalu, and Duc Nguyen. Numerical Methods


With Applications. Dedicated Website for book, http://http://nm.
mathforcollege.com/topics/textbook_index.html, ultima visita:
febbraio 2015.
H. Jerome Keisler.
Elementary Calculus, An Infinitesimal Approach. Creative Commons Attribution Non-Commercial-ShareAlike
License, http://www.math.wisc.edu/~keisler/calc.html, 2009.
Richard B. Langley. The mathematics of gps. GPS World, 2(8):5559,
1991.
J. OConnor and E. F. Robertson. The MacTutor History of Mathematics
archive. University of St Andrews Scotland, http://www-history.
mcs.st-and.ac.uk/, ultima visita: febbraio 2015.
Gilbert Strang. Calculus. Wellesley-Cambridge Press, 1991.

212

annamaria mazzia

Doron Swade. The Babbage Engine. Computer History Museum,


Mountain View, CA, http://www.computerhistory.org/babbage,
ultima visita: febbraio 2015.