Professional Documents
Culture Documents
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 2018
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/)
2 Struttura dell’elaboratore 11
3 Richiami di analisi 23
5 Zeri di funzione 49
6 Interpolazione 81
7 Approssimazione 105
Bibliografia 205
Istruzioni per l’uso
Annamaria Mazzia
1.1 Si parte!
In tutti gli esempi che abbiamo visto, si parte da un problema, che può
essere un fenomeno osservato nei vari settori dell’ingegneria (chimica,
civile, informatica, dell’energia, meccanica ...) ma anche in biologia,
chimica, fisica, economia (e, abbiamo visto, anche in letteratura).
Il fenomeno da studiare viene tradotto in modello matematico.
Dal momento che il modello matematico è difficile da risolvere
o non può essere affatto risolto analiticamente, occorre passare al
Calcolo Numerico. Si applica, cioè, un metodo numerico che risolva
il problema matematico e arrivi ad una soluzione numerica che sia
efficiente, accurata ed affidabile.
Il Calcolo Numerico sviluppa i diversi metodi in modo da dire
sotto quali ipotesi essi possano dare risultati buoni, quando possono
essere usati e per quali tipi di problemi.
Gli algoritmi numerici vanno poi sviluppati per essere implemen-
tati al calcolatore: tutto ciò ha portato allo sviluppo di linguaggi o am-
bienti di programmazione (Fortran, C++, MATLAB, Octave,...). Infatti
solo con l’aiuto del calcolatore si riesce a dare una risposta esauriente
e completa ai problemi che il Calcolo Numerico può risolvere.
Perciò, in un corso di Calcolo Numerico, si cerca di combinare gli
elementi della teoria degli algoritmi numerici per risolvere determi-
nati problemi matematici insieme alla conoscenza di un linguaggio
di programmazione che permetta di risolvere numericamente quei
problemi al calcolatore.
È importante, quindi, 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, formule di quadratura numerica,
10 annamaria mazzia
tenza oltre il mondo della matematica. Sempre la Lovelace intuì che Augusta Ada Lovelace (1815-1852) fu la fi-
la soluzione dei problemi matematici si sarebbe effettuata attraverso glia del famoso poeta Lord Byron. I genitori
si separono subito dopo la sua nascita e la
delle procedure di calcolo (quelli che noi chiamiamo programmi). bambina crebbe insieme alla madre (Lord
Alla luce degli sviluppi che si sono avuti nel ventesimo secolo, la Byron partì dall’Inghilterra senza farvi più ri-
torno e morì in Grecia quando Ada aveva otto
visione di Babbage e della Lovelace appare profetica.
anni). Poichè la madre era appassionata di
matematica e non voleva che la figlia seguis-
se la strada del padre, incoraggiò la figlia in
2.3 Gli albori questa direzione, impartendole un’istruzione
legata alla matematica e alla musica. Nel
1835 sposò William King, di dieci anni più
anziano. Nel 1838 il marito ricevette il titolo
Il 1800 si chiude con una grande invenzione: nel 1896, Guglielmo nobiliare di Conte di Lovelace. Ebbero tre figli.
Marconi inventa la radio. Il 1900 si apre con altre importanti in- La Lovelace morì di cancro a soli 37 anni.
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 l’americano Claude Shannon. Il Claude Shannon (1916-2002) fu fisico e
matematico del MIT.
suo contributo fondamentale fu quello di elaborare un metodo siste-
matico 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). Nel 1948, l’articolo di Shannon, A Mathe-
matical Theory of Communication, pubblica-
Il lavoro di Shannon diede l’avvio allo studio delle tecniche indi-
to sulla rivista The Bell System Technical
spensabili per progettare in modo sistematico tutti i circuiti logici di Journal getta le basi teoriche dell’informa-
base necessari per realizzare i circuiti di calcolo dei futuri computer. tica. Per prima volta viene usato il termine
bit come abbreviazione di binary digit, termi-
Da un punto di vista propriamente ”pratico“ invece, la nascita e lo ne suggeritogli dal chimico e statistico J. W.
sviluppo dei calcolatori elettronici inizia nel 1938: il tedesco Konrad Tukey.
Zuse costruisce Z1, una macchina costruita e pensata in maniera Konrad Zuse, ingegnere civile (1910-1995).
completamente meccanica, tutta da migliorare, ma che può essere
considerata come il primo calcolatore. Zuse passa subito al progetto
Z2, dove l’aritmetica meccanica è sostituita da relè elettromeccanici.
L’inizio della seconda guerra mondiale interrompe bruscamente il
lavoro di Zuse, che viene chiamato alle armi, ma riesce a persuadere
l’Istituto 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 l’unità aritmetica
ma anche la memoria realizzata con relè elettromeccanici, ben 2600.
Z3 fu la prima macchina di calcolo programmabile e venne usata
dall’industria 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 all’uso 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
Figura 2.2: L’ENIAC. Foto presa da
lavori di John Eckert e John Mauchly negli Stati Uniti e di A. Turing http://www.computerhistory.org/
in Inghilterra. Eckert e Mauchly costruirono l’ENIAC (Electronic revolution/birth-of-the-computer/
Integrator and Computer). L’ENIAC fu costruito, con progetto di 4/78/316, copyright dell’Università di
Pennsylvania.
Eckert, in piena seconda guerra mondiale, a partire dal 1943, pres- Alan Turing (1912-1954), matematico inglese,
so il Ballistic Research Laboratory e fu completato nel febbraio del si interessò di logica matematica e di teoria
della probabilità. Introdusse il concetto di una
1946. La macchina era pensata per compiere operazioni di carattere
macchina astratta, detta macchina di Turing,
generale, ma fu costruita con lo scopo preciso di compilare tabelle e pose questioni riguardanti l’intelligenza arti-
per le traiettorie di bombe. L’ENIAC conteneva circa 18. 000 valvole ficiale. Si occupò di problematiche riguardanti
un macchina di calcolo digitale astratta, con
termoioniche e misurava circa 2 metri e mezzo di altezza per 24 metri una memoria senza limiti.
di lunghezza! La macchina era più di mille volte veloce di tutti i John Presper Eckert (1919-1995) e John
William Mauchly (1907-1980) lavorarono a
predecessori elettromeccanici costruiti fino a quel momento e poteva
quello che si può considerare il vero primo
eseguire 5000 addizioni al secondo. Le sue operazioni erano controlla- calcolatore elettronico.
14 annamaria mazzia
x fornire gli strumenti per l’uso corretto delle risorse di tipo hard-
I primi computer come lo Z3 di Zuse o l’E-
ware e software del sistema
NIAC non avevano sistema operativo. Per
per la visualizzazione su video dei risultati). Per risolvere i problemi legati all’uso delle
schede, queste furono sostituite da appositi
Alla fine del 1950 si introdusse il concetto di time-sharing che
terminali collegati al computer e furono cam-
permetteva l’esecuzione di più processi in modo da poter soddisfare biate le modalità di gestione dell’unità cen-
le esigenze di più utenti contemporaneamente. Con il time-sharing trale modificando i sistemi operativi esistenti.
Si arrivò all’interazione con il computer non
si assegna, infatti, un piccolo intervallo di tempo a ciascun processo più mediante schede perforate bensì tramite
dando l’impressione che ciascun processo vada avanti parallelamente tastiera-stampante o tramite tastiera-monitor.
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:
x uso del processore (multitasking: l’uso della CPU è permesso
ad un programma alla volta per brevi intervalli di tempo, quindi
l’utente può eseguire più programmi contemporaneamente)
18 annamaria mazzia
x uso della memoria centrale (memoria virtuale) cuoco, il suo aiutante, una cucina, i came-
rieri e i clienti. I clienti scelgono un piatto
x riconoscimento e gestione degli utenti (multiutenza) dal menu, un cameriere prende l’ordine e lo
porta al capo-cuoco. Il capo-cuoco riceve
(CAD), risoluzione di problemi matematici. x gli ingredienti sono l’input del pro-
gramma,
Per migliorare le prestazioni di un computer si inserisce una me-
moria intermedia tra CPU e RAM, detta cache. Si trova all’interno x il piatto è l’output del programma,
del processore. È più veloce della RAM ma anche più costosa. x il menu e il cameriere sono l’interfac-
cia verso il sistema operativo,
Il sistema operativo gestisce le informazioni su dispositivi di memoria x pentole, fornelli etc, sono le parti che
compongono il computer.
secondaria (dischi). L’aiuto cuoco, quindi, rappresenta la CPU
La gestione delle informazioni avviene mediante file Un file costi- mentre il tavolo da lavoro, su cui appoggia
gli ingredienti e la ricetta per preparare il piat-
tuisce un insieme di informazioni della stessa natura e logicamente
to, rappresenta la memoria centrale. Prima
correlate. In genere un file contiene un programma (programma di iniziare a lavorare, il cuoco deve svolge-
sorgente o programma eseguibile), oppure una sequenza di dati. re alcune mansioni (sempre le stesse ogni
volta: pulire il tavolo, controllare lo stato di
L’informazione è rappresentata da files, organizzati in maniera ge- pentole, tegami, coltelli. . . , ricevere le ordi-
rarchica (pensiamo ad una struttura ad albero) in directories (cartelle). nazioni). Supponiamo che queste mansioni
siano incise su un pezzo del tavolo da lavo-
Una directory è un file che svolge il ruolo di ”raccoglitore“.
ro: corrispondono alla memoria ROM (quella
I files possono contenere dati (abbiamo i cosiddetti files di testo) che non può essere alterata). La RAM invece
oppure programmi (i files di applicazioni). è la parte del tavolo che può essere alte-
rata a piacimento (spostare pentole, tegami,
Un file è caratterizzato da: ingredienti).
x
immagazzinare i dati.
estensione: la parte del nome del file che segue l’ultimo punto
. (dati.txt prova.f matrice.dat welcome.html fo-
to.jpeg )
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 l’utente. Il Macintosh utilizzava un interfaccia grafico
chiamato GUI (Graphic User Interface) com-
Le novità della Apple furono molto apprezzate e la Microsoft,
posto da icone, finestre, menù... Gli oggetti
per colmare questa lacuna, lanciò un altro sistema operativo basato dell’ambiente operativo erano rappresentati
su interfaccia grafica: nel 1985 nacque il primo Windows 1.0 che con simboli grafici di facile intuizione senza
dover comprendere a fondo tutti i tecnicismi
trovò pochi consensi perchè troppo lento e instabile. Nel 1986, con informatici. L’interfaccia GUI non era un’inve-
la comparsa di nuovi microprocessori, il sistema Windows cominciò zione della Apple perchè era stata già spe-
rimentata nel corso degli anni settanta dalla
a funzionare in modo adeguato tanto che le versioni di Windows
Xerox, che però non aveva intuito le poten-
3.1 e di Windows 95 portarono al sopravvento del sistema operativo zialità di questo lavoro, lasciandone invece la
Windows rispetto al Macintosh. fortuna e il successo alla Apple che, insieme
ad esso, introdusse il mouse.
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. Durante gli studi universitari, Torvalds si era
interessato di sistemi operativi e aveva studia-
Nel 1991 fu completata la prima versione del sistema, che fu chia-
to una versione semplificata di Unix, chiama-
mata Linux e venne messa a disposizione di tutti. Torvalds si riservò ta Minix. Questo sistema poteva funzionare
il compito di coordinare i diversi miglioramenti via via introdotti su personal computer e veniva distributo con
i programmi sorgenti disponibili. Torvalds mi-
dagli altri sviluppatori. gliorò il sistema Minix, in modo da poterlo
Linux si è dimostrato e si dimostra tuttora un valido sistema utilizzare come alternativa a Windows, nel-
la logica di non realizzare profitti (cioè non
operativo, affidabile, sicuro e di buone prestazioni, in grado di gestire
diventare milionario) ma di realizzare un si-
situazioni multiutente e multitasking. stema utilizzabile gratuitamente da tutti e mi-
Ed è il sistema operativo di riferimento del corso di Calcolo gliorabile con il contributo di tutti (la filosofia
dell’open source).
Numerico.
Tra le tante distribuzioni attualmente in uso
ricordiamo: Debian, Ubuntu, Fedora, Gentoo,
Slackware. . .
2.8 Lavorare in ambiente Linux
Esempio: studente@george:~$ls
x Per cambiare directory, si deve digitare Un volta cliccato Invio, compare l’elenco
delle directories presenti nello spazio di la-
cd nome-directory voro disponibile per l’utente studente sulla
macchina george, ad esempio (i numeri a
(cd sta per "change directory"). sinistra delle directories o files sono indicatori
x Il comando cd .. fa tornare nella directory precedente. dello spazio che occupano in memoria):
5 appunti/ 4 mail/
studente@george:~ $ cd due
studente@george:~/due $ ls
total 1
1 prova.f
. (il punto finale serve per copiare il file prova.f nella directory x cd : per cambiare directory
Con cp abbiamo due file identici, quello nella directory uno e x cp: per copiare files
quello copiato nella directory due. x mv: per trasferire o rinominare files
Possiamo anche scrivere cp prova.f prova2.f: in questo modo x rm: per cancellare files
creiamo il file prova2.f nella stessa directory in cui si trova prova.f. x rmdir: per cancellare directories
x tan ( x ) ≡ tangente( x ) =
sin ( x )
cos ( x )
, sec ( x ) ≡ secante( x ) =
1
cos ( x )
,
mio di grado 2: radici reali e distinte (in alto),
radici reali e coincidenti (al centro), nessuna
radice reale (in basso).
24 annamaria mazzia
1x = 1
a x +y = a x ay a xy = ( a x )y
aloga ( x) = x a0 = 1
a x−y = a x /ay a x b x = ( ab) x
loga ( xy) = loga ( x ) + loga (y) loga ( x/y) = loga ( x ) − loga (y)
loga ( x y ) = y loga ( x ) loga ( a x ) = x
loga ( x )
logb ( x ) = b x = a x loga (b)
loga (b)
Diamo ora una tabella delle derivate e degli integrali delle funzioni
più note (per gli integrali lasciamo fuori la costante di integrazio-
ne). Usiamo la simbologia arcsin( x ) ≡ arcoseno( x ), arccos( x ) ≡
arcocoseno( x ), cot( x ) ≡ cotangente ( x ), arctan( x ) ≡ arcotangente( x ),
arccot( x ) ≡, arcocotangente( x ).
f f0 f f0
1
ln( x ) ex ex
x
sin ( x ) cos ( x ) cos ( x ) − sin ( x )
1 1
tan ( x ) 2
(= sec2 ( x )) cot ( x ) − 2
cos ( x ) sin ( x )
1 1 1 1
tan ( x ) − cot ( x )
cos ( x ) cos ( x ) sin ( x ) sin ( x )
1 1
arcsin ( x ) √ arccos ( x ) −√
1 − x2 1 − x2
1 1
arctan ( x ) arccot( x ) −
1 + x2 1 + x2
R R
f fd x f fd x
x r +1
xr (r 6 = 1) x −1 ln | x |
r+1
ex ex ln | x | x ln | x | − x
sin ( x ) − cos ( x ) cos ( x ) sin ( x )
1
tan ( x ) ln | | cot ( x ) ln | sin ( x )|
cos ( x )
1 1 1 1
ln | + tan ( x )| ln | + cot ( x )|
cos ( x ) cos ( x ) sin ( x ) sin ( x )
1 1
tan ( x ) − cot ( x )
cos2 (x) 2
sin ( x )
tan ( x ) 1 cot ( x ) 1
−
cos ( x ) cos ( x ) sin ( x ) sin ( x )
√ √
arcsin ( x ) x arcsin ( x ) + 1 − x2 arccos ( x ) x arccos ( x ) − 1 − x2
1 1
arctan ( x ) x arctan ( x ) − ln (1 + x2 ) arccot( x ) xarccot( x ) − ln (1 + x2 )
2 2
1 1
√ arcsin ( x ) arctan ( x )
1 − x2 1 + x2
Quindi, per funzioni continue, un valore compreso tra i due estremi Figura 3.2: Teorema di Rolle: f 0 (c) = 0
dell’insieme 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 dell’intervallo [ a, b]) allora esiste
almeno un punto ξ tale che f (ξ ) = 0, cioè esiste almeno una radice
dell’equazione f ( x ) = 0 nell’intervallo [ a, b].
Teorema 3.6.4 (Esistenza del punto fisso) Data una funzione g defini-
ta 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: Teorema del Valor Medio:
f (b) − f ( a)
Dimostrazione. Dire che una funzione g ammette almeno un f 0 (c) =
b−a
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
nell’intervallo [ a, b] e, in particolare a ≤ g( a) ≤ b e a ≤ g(b) ≤ b.
Definiamo, perciò, la funzione continua Φ( x ) mediante la relazione
Φ( x ) = g( x ) − x
Teorema 3.6.5 (Esistenza e unicità del punto fisso) Data una funzio-
ne 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.
|ξ − η | = | g(ξ ) − g(η )|
appunti di calcolo numerico 27
|ξ − η | ≤ m|ξ − η | < |ξ − η |
f 00 ( x0 ) f ( n ) ( x0 )
f ( x ) = f ( x0 ) + f 0 ( x0 )( x − x0 ) + ( x − x0 )2 + . . . + ( x − x0 ) n + R n
2! n!
dove
f ( n +1) ( ξ x )
Rn ( x ) = ( x − x 0 ) n +1
( n + 1) !
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 nell’atmosfera di Marte ad una altezza
di circa 150 km mentre il veicolo spaziale entrò ad una altezza di
Figura 4.3: La Mars Climate Orbiter. Foto
circa 60 km. Per un errore di conversione delle unità di misura, il tratta da http://www.visionlearning.
velivolo entrò nell’atmosfera con una traiettoria inferiore rispetto a com/blog/2012/09/21/
tragedies-in-science-the-crash-of-the-mars-
quella pianificata. La velocità del mezzo era molto elevata e portò alla
climate-orbiter/, copyright della
distruzione non solo del veicolo spaziale ma anche della stessa Polar NASA/JPL.
Lander.
appunti di calcolo numerico 31
3 1 4 1 5
π = 3.14159265358979 . . . = + 1 + 2 + 3 + 4 . . . × 100
100 10 10 10 10
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 } | {z }
parte intera parte frazionaria
Nel seguito, non affronteremo gli aspetti teorici del passaggio da una
base ad un altra per rappresentare lo stesso numero, ma vedremo
l’implementazione pratica per convertire un numero dalla base 10
alla base 2 e viceversa.
32 annamaria mazzia
10001000.010 =
= 1 · 27 + 0 · 26 + 0 · 25 + 0 · 24 + 1 · 23 + 0 · 22 + 0 · 21 + 0 · 20 + 0 · 2−1 + 1 · 2−2 + 0 · 2−2
| {z } | {z }
parte intera parte frazionaria
11
Esempio Scriviamo il numero , che è 1.1 in base 10, nella
10
base 2.
Per la parte intera:
Per la parte decimale:
: 2 = quoziente resto
.1 × 2 = 0.2 x−1 = 0
1 0 1 x0
.2 × 2 = 0.4 x−2 = 0
.4 × 2 = 0.8 x−3 = 0
.8 × 2 = 1.6 x−3 = 1
.6 × 2 = 1.2 x−4 = 1
.2 × 2 = 0.4 x−5 = 0
.4 × 2 = 0.8 x−6 = 0
.8 × 2 = 1.6 x−7 = 1
.6 × 2 = 1.2 x−8 = 1
.2 × 2 = 0.4 x−9 = 0
Osserviamo che nella parte decimale si ripetono all’infinito le cifre
|{z} 0011
0011. Il numero in base 2 si scrive quindi come: 1.0 0011 |{z} . . .
_
dove
x 1+ f −1 2
−1
+ f −2 2−2 + . . . + f −n 2−n è la mantissa, normaliz-
zata, cui sono riservati un numero n di bits,
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
| {z. . . 0} ×2 L = 2 L
bits n Singola precisione Doppia precisione
Se si vuole rappresentare un numero al di fuori di questo intervallo Massimo ≈ 3.4 × 1038 ≈ 10308
Minimo ≈ 1.2 × 10−38 ≈ 2.2 × 10−308
si ha overflow o underflow.
_
Consideriamo, ora, la rappresentazione dei numeri speciali.
Per convenzione si pone uguale a 0 la rappresentazione che vede
tutti zero sia nel segno, sia nell’esponente 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).
appunti di calcolo numerico 37
x 1
arrotondamento simmetrico: x ∗ = arr ( x ) = tronc( x + N −t+1 N p ),
2
aggiungiamo un’unità a x−t+1 se x−t ≥ N/2.
N 1− t N p nel troncamento
|x − x∗ | ≤ 1
N 1− t N p nell’arrotondamento
2
|x − x∗ |
Per l’errore relativo (in valore assoluto) , invece, si ha:
|x|
|x − x∗ | N 1− t nel troncamento
≤ 1
|x| N 1− t nell’arrotondamento
2
1 1− t
Il valore 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 l’errore di arrotondamento relativo che
|x − x∗ |
si commette è ≤ 2−(n+1) .
|x|
In singola precisione (n = 23), avremo
|x − x∗ |
≤ 2−24 ≈ 5.96 × 10−8
|x|
|x − x∗ |
≤ 2−53 ≈ 1.11 × 10−16
|x|
|x − x∗ |
≤ 5 × 10−t
|x|
Nell’esempio precedente, i tre numeri sono
Se il numero x è rappresentato al calcolatore in floating point, rappresentati con due cifre significative dal
mediante la rappresentazione data da f l ( x ), sappiamo che vale momento che 0.166666 × 10−1 ≤ 5 × 10−2
e 0.166666 × 10−1 > 5 × 10−3 .
| x − f l ( x )| 1
≤ N 1−t (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
|x − x∗ |
≤ 0.5 × 101−t = 5 × 10−t
|x|
x 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
1
Abbiamo scritto = (1 − ey + e2y +
1 + ey
Si ha ex/y = ex − ey : gli errori si accumulano additivamente . . .) come risultato della formula polinomiale
1
x Somma algebrica (addizione o sottrazione, a seconda del segno
di Taylor della funzione f (ey ) =
centro 0.
1 + ey
di
di x e y)
x y
x (1 + ex ) + y(1 + ey ) = x + y + xex + yey = ( x + y)(1 + ex + ey )
x+y x+y
x y
L’errore è ex+y = ex + ey , una combinazione lineare che
x+y x+y Supponiamo di avere due numeri molto vicini
dipende da x e y. 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 stes-
– xy > 0 =⇒ |ex+y | ≤ |ex | + |ey |
se per entrambi i numeri (usiamo i simboli
|x| |y| vvv e www per esprimere le cifre corrotte):
– xy < 0 =⇒ e possono essere molto grandi e, in
| x + y| | x + y| f l ( x ) = 1.d−1 d−2 . . . b−( p+1) b−( p+2) vvv × 2e
tal caso, ci sarà un’amplificazione notevole dell’errore. Si ha
0 0 e
il fenomeno di cancellazione se non si fa attenzione al numero di
f l (y) = 1.d−1 d−2 . . . b−( p+1) b−( p+2) www × 2
Quando andiamo a fare la sottrazione le pri-
cifre significative dei numeri che vengono sommati. me p cifre buone si annullano. Da p + 2 cifre
buone, ne abbiamo ora solo 2 e tutte le altre
Ricordiamo, infine, che in aritmetica di macchina non valgono più sono quelle corrotte. Con la normalizzazione
la proprietà distributiva o associativa del prodotto. il risultato diventa del tipo (ora qqqqq sono le
cifre corrotte):
00 00 e
f l ( x − y) = 1.b− 1 b−2 qqqqqq × 2
Esempio Sia x = 0.1103 e y = 0.009963. Se consideriamo
un sistema decimale a 4 cifre, normalizzando i numeri, abbiamo
x = 1.103 · 10−1 e y = 9.963 · 10−3
Facendo la sottrazione di questi due numeri, abbiamo 1.103 · 10−1 −
9.963 · 10−3 = 0.1103 − 0.009963 = 0.100337. Facendo l’arrotondamen-
to a 4 cifre abbiamo il valore 1.0034 · 10−1 .
|0.100337 − 0.10034|
L’errore relativo che commettiamo è: ≈ 2.99 ×
0.100337
− 5
10 . Questo errore è minore della precisione di macchina (considera-
1
ta la base 10 e le 4 cifre) · 10−3 .
2
Tuttavia, se non teniamo conto delle cifre significative ma tronchia-
mo i numeri alle prime 4 cifre, abbiamo la sottrazione di 0.1103 −
0.0099 = 0.1004.
|0.100337 − 0.1004|
Questa volta l’errore relativo è ≈ .63 × 10−3 .
0.100337
L’errore è maggiore della precisione di macchina.
_
√
−b ± b2 − 4ac
Applicando la formula x1/2 = abbiamo x1/2 =
2a
√ 0.01786284073
28 ± 783 = 28 ± 27.98213716 = . L’arrotonda-
55.98213716
mento delle due radici in virgola mobile normalizzata a 4 cifre
decimali dà: x1 = 1.7863 · 10−2 e x2 = 5.5982 · 101 .
Consideriamo ora la macchina a 4 cifre decimali per risolvere
l’equazione:
√
x1 = 28 − 783 = 2.8 · 101 − 2.7982 · 101 = 0.0018 · 101 = 0.018 = 1.8 · 10−2
√
x2 = 28 + 783 = 2.8 · 101 + 2.7982 · 101 = 5.5982 · 101
h2 00 h3 h4 IV
f ( x0 + h ) = f ( x0 ) + h f 0 ( x0 ) + f ( x0 ) + f 000 ( x0 ) + f ( x0 ) + . . .
2 6 24
Allora
f ( x0 + h ) − f ( x0 ) h h2 h3
f 0 ( x0 ) = − ( f 00 ( x0 ) + f 000 ( x0 ) + f IV ( x0 ) + . . .)
h 2 6 24
f ( x0 + h ) − f ( x0 )
Approssimiamo, quindi, la f 0 ( x0 ) calcolando .
h
L’errore, detto errore di discretizzazione, che si commette è
f ( x0 + h ) − f ( x0 ) h h2 h3
| f 0 ( x0 ) − | = | f 00 ( x0 ) + f 000 ( x0 ) + f IV ( x0 ) + . . . |
h 2 6 24
42 annamaria mazzia
4.8.1 Instabilità
En ≈ c0 nE0
Analiticamente, si ha:
x + 10x n−1
Z 1 n Z 1 n −1 Z 1
x ( x + 10) 1
yn + 10yn−1 = dx = dx = x n−1 dx =
0 x + 10 0 x + 10 0 n
Vale anche la relazione
Z 1
1
y0 = dx = ln (11) − ln (10).
0 x + 10
Possiamo pensare, quindi, di calcolare numericamente il valore di
yn attraverso il seguente algoritmo:
Da un programma Matlab:
L’errore che si commette applicando questo algoritmo (tenendo conto
che noi non avremo i valori yn esatti ma dei valori approssimati y∗n , n yn
0 9.5310e-2
dovuti all’arrotondamento) sarà del tipo yn − y∗n ≈ (−10)n (y0 − y0∗ ) 1 4.6898e-2
cioè En ≈ (−10)n E0 . L’algoritmo, quindi, presenta un errore En con 2 3.1018e-2
3 2.3154e-2
crescita di tipo esponenziale. Difatti, numericamente, otteniamo valori
4 1.8465e-2
che via via si allontanano dall’intervallo di ammissibilità [0, 1]. ... ....
I risultati che ricaviamo sono riportati nelle tabelle a lato (osser- 7 1.1481-2
8 1.0194e-2
viamo che sono leggermente diversi a seconda dal linguaggio usato, 9 9.1673e-3
proprio per effetto dell’instabilità). 10 8.3270e-3
1 1 18 -9.1694e+1
Se invece, consideriamo yn−1 = ( − yn ), partendo da un valore 27 -9.1699e+9
10 n 30 -9.1699e+13
di n molto grande e andando a ritroso, l’errore diminuisce. Infatti:
y n0 = 0
1 1
y n0 −1 =
10 n0
1 1 1 1 1
y n0 −2 = ( − )= + costante
10 n0 − 1 10 n0 (−10)2 n0
.. ..
. .
1
yn = + costanten0 −n
(−10)n0 −n n0
1
L’errore al passo n dipende, quindi, (in valore assoluto) da
10n0 −n
(dal momento che n0 − n > 0, l’errore decresce per n che tende a
appunti di calcolo numerico 45
n yn n yn
26 0.000000 11 7.62944e-3
25 3.84615e-3 10 8.32797e-3
24 3.61538e-3 9 9.16720e-3
23 3.80513e-3 8 1.01944e-2
22 3.96731e-3 7 1.14806e-2
21 4.14872e-3 6 1.31377e-2
20 4.34703e-3 5 1.53529e-2
19 4.56530e-3 4 1.84647e-2
18 4.80663e-3 3 2.31535e-2
17 5.07489e-3 2 3.10180e-2
16 5.37486e-3 1 4.68982e-2
15 5.71251e-3 0 9.53102e-2
14 6.09542e-3
13 6.53332e-3
12 7.03898e-3
4.8.2 Malcondizionamento
0
x f (x)
(cond f )( x ) =
f (x)
0
f (x)
(cond f )( x ) =
f (x)
(cond f )( x ) = | f 0 ( x )|
x
sarà affrontato con la dovuta competenza in
il rendimento della macchina (maggiore è il rendimento più uno dei corsi del terzo anno di Ingegneria
dell’Energia, con indirizzo elettrico. L’esem-
competitiva è la macchina); pio vuole mostrare come il Calcolo Numerico
x
√
partire da x0 prossimo a b;
x considerare x
Per
√ esempio, per calcolare
1 b
1 = ( x0 + ); 2 ≈ 1.41421356237310, sapendo
2 x0 che il valore che dobbiamo approssimare
x
è compreso tra 1 e 2, possiamo partire da
1 b x0 = 1.5, ottenendo:
generalizzando: xn+1 = ( x n + ).
2 xn x0 = 1.5
2
Il metodo usato dai Babilonesi non è altro che il metodo di Newton- x1 = 21 (1.5 + ) = 1.41666667
1.5
2
Raphson (che vedremo più avanti) per trovare gli zeri della funzione 1
x2 = 2 (1.41666667 + ) = 1.41421569
1.41666667
f ( x ) = x2 − b. x3 = 12 (1.41421569 +
2
) = 1.41421356
1.41421569
Abbiamo visto ora due esempi, uno specifico dell’Ingegneria e
uno tipico della Matematica, in cui dobbiamo risolvere un’equazione
del tipo g( x ) = x o f ( x ) = 0. Siamo pronti per passare allo studio
di metodi numerici che ci permettano di risolvere questi due tipi di
equazioni.
b−a
|ξ − cn | ≤ .
2n +1
Da questa relazione, si può determinare il numero di iterazioni n
necessarie per calcolare un’approssimazione della radice ξ entro una
certa tolleranza tol richiesta. Infatti
b−a
≤ tol =⇒ |ξ − cn | ≤ tol
2n +1
Ma
b−a
log
b−a b−a 2tol
≤ tol ⇐⇒ 2n ≥ =⇒ n ≥ .
2n +1 2tol log(2)
Una funzione può ammettere uno o più punti fissi o non ammet-
terne affatto.
Un modo per calcolare un punto fisso di una funzione g è dato da
iterazioni successive sulla funzione g stessa.
x 2
Figura 5.2: Radici di f ( x ) = −
2
Esempio sin ( x ).
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 , ottenen-
do 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
x 2
Figura 5.3: Punti fissi di g( x ) = −
2
sin ( x ) + x.
appunti di calcolo numerico 53
Esempio
1
Consideriamo la funzione g( x ) = 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 Figura 5.4: Punto fisso di g( x ) = 1/2x + 2.
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 l’iterazione 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 succes-
sione converge a ξ = 0. Le sole successioni che convergono a ξ = 1
sono le ovvie successioni generate da x0 = ±1. Se si prende come
Figura 5.5: Punti fissi di g( x ) = x2 .
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,
54 annamaria mazzia
ξ = g(ξ )
x n +1 = g ( x n )
ξ − x1 = g0 (ξ 0 )(ξ − x0 )
ξ − x2 = g0 (ξ 1 )(ξ − x1 )
ξ − x3 = g0 (ξ 2 )(ξ − x2 )
.. ..
.=.
ξ − xn = g0 (ξ n−1 )(ξ − xn−1 )
| ξ − x1 | · | ξ − x2 | · . . . · | ξ − x n | =
| g0 (ξ 0 )| · | g0 (ξ 1 )| · | g0 (ξ 2 )| · . . . · | g0 (ξ n−1 )| · |ξ − x0 | · |ξ − x1 | · . . . · |ξ − xn−1 |
|ξ − xn | = | g0 (ξ 0 )| · | g0 (ξ 1 )| · | g0 (ξ 2 )| · · . . . · | g0 (ξ n−1 )||ξ − x0 |
| ξ − x n | ≤ m n | ξ − x0 |
appunti di calcolo numerico 55
Esempio
Consideriamo ora g( x ) = x − sin ( x ) nell’intervallo [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.9.
_
Figura 5.9: Il metodo di punto fisso: esempio
Nel caso in cui il metodo di punto fisso converge, si possono
con g( x ) = x − sin ( x ). ξ = 0 e ξ = 2π
ricavare maggiorazioni per l’errore che si commette approssimando ξ sono punti fissi attrattivi, al contrario di ξ = π
mediante xn . Vale infatti la disuguaglianza in cui g0 (ξ ) = g0 (π ) = 2
m
|ξ − xn | ≤ | x n − x n −1 | (5.1)
1−m
dove m, come prima, è una maggiorazione di | g0 ( x )|.
| ξ − x n | ≤ m | ξ − x n −1 | (5.2)
ξ − 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)|ξ − xn−1 | ≤ | xn − xn−1 |
1
| ξ − x n −1 | ≤ | x n − x n −1 |
1−m
Andando a sostituire questa maggiorazione nella disuguaglianza (5.2),
troviamo il risultato espresso nell’equazione (5.1).
Il metodo di Newton-Raphson è uno dei metodi più potenti e più Il metodo fu descritto da Isaac Newton in
due suoi scritti del 1669 e del 1671, anche
famosi per risolvere equazioni non lineari. Ci sono diversi approcci
se era riferito solo a polinomi (in particolare
per introdurre questo metodo – tra questi c’è anche quello di vedere a x3 − 2x − 5 = 0). Il metodo di Newton fu
il metodo di Newton-Raphson come un particolare schema di punto pubblicato per la prima volta nel 1685. Nel
1690 Joseph Raphson ne pubblicò una de-
fisso, come vedremo in seguito. scrizione semplificata in termini di approssi-
Supponiamo ora che la derivata prima e seconda di f esistano e mazioni successive xn piuttosto che di se-
siano continue e assumiamo che la derivata prima f 0 sia valutabile quenze di polinomi. Fu solo nel 1740 che
Thomas Simpson descrisse il metodo di New-
con sufficiente facilità. ton come un metodo iterativo per risolvere
Lo schema di Newton-Raphson è uno schema iterativo che produce equazioni non lineari (e non solo polinomi) e
diede una versione generalizzata per sistemi
una successione di approssimazioni x0 , x1 , . . . , xn della radice della di due equazioni.
funzione f . Isaac Newton (1643-1727), inglese, fu fisi-
co, matematico, astronomo, alchimista, inven-
Sia xn l’iterata corrente. Applicando la formula di Taylor di centro
tore, filosofo naturalista. È visto come uno dei
xn si ha: più grandi scienzati nella storia dell’umanità.
Su Joseph Raphson (1648-1715) non si
f ( x ) = f ( xn ) + f 0 ( xn )( x − xn ) + f 00 (ξ x )( x − xn )2 /2 hanno molti dettagli. Pare che Newton stes-
so gli permettesse di vedere e studiare i suoi
dove ξ x è un punto (che non conosciamo) compreso tra x e xn . scritti matematici. Il suo lavoro del 1690 "Ana-
lysis aequationum universalis" gli valse l’in-
Sia x = ξ, dove ξ è radice di f , f (ξ ) = 0. Se f fosse lineare,
gresso nella Royal Society, nel 1691 ben-
avremmo f 00 ≡ 0 e quindi potremmo trovare la radice risolvendo chè fosse uno studente (si laureò nel 1692)
direttamente piuttosto anziano (aveva 43 anni).
0 = f (ξ ) = f ( xn ) + f 0 ( xn )(ξ − xn )
Osserviamo che
Supponendo f 0 ( xn ) 6= 0, otterremmo, con semplici passaggi,
y( x ) = f ( xn ) + f 0 ( xn )( x − xn )
f ( xn ) altro non è che l’equazione della retta
ξ = xn −
f 0 ( xn ) tangente alla f nel punto ( xn , f ( xn )).
f ( xn+1 ) = f ( xn + h) = f ( xn ) + f 0 ( xn )h + f 00 (ξ h )h2 /2
f ( xn )
x n +1 = x n − , n = 0, 1, 2, . . . (5.3)
f 0 ( xn )
f 0 ( x )2 − f ( x ) f 00 ( x ) f ( x ) f 00 ( x )
| g0 ( x )| = |1 − | = | |
f 0 ( x )2 f 0 ( x )2
x
2 f (ξ )
a convergenza quadratica se esi-
ste una costante M tale che, per n
x Nel metodo del punto fisso, nell’ipotesi in cui g0 (ξ ) 6= 0, la sufficientemente grande, vale
La costante asintotica per lo schema di punto fisso, nel caso Ricordiamo che, se il metodo di punto
generale vale, dunque, M = | g0 (ξ )|. fisso converge linearmente, deve essere
| g0 (ξ )| < 1. Infatti, se un metodo è lineare,
Se invece | g0 (ξ )| = 0, il metodo converge sempre ma con ordine di affinchè l’errore al passo n + 1 decresca di
convergenza maggiore di uno. M rispetto all’errore al passo n, deve essere
M < 1.
Per esercizio, si ricavi ordine di convergen-
Esempio
Consideriamo l’equazione f ( x ) = 2x − cos ( x ) + 1 = 0 che ammet-
te come unica radice ξ = 0.
Poichè f 0 ( x ) = 2 + sin ( x ), il metodo di Newton-Raphson diventa:
2xn − cos ( xn ) + 1
x n +1 = x n − Figura 5.11: Radice della funzione f ( x ) =
2 + sin ( xn ) 2x − cos ( x ) + 1.
n xn dn
0 0.5
1 0.4730746270E-01 0.4526925E+00
2 0.5462695134E-03 0.4676119E-01
3 0.7458221874E-07 0.5461949E-03
4 0.1395426403E-14 0.7458222E-07
5 0.7647622253E-17 0.1387779E-14
f (ξ ) − f ( xn ) = f 0 (ξ n )(ξ − xn )
− f ( xn ) ≈ f 0 ( xn )(ξ − xn )
vale a dire
Nell’ esempio appena visto
d2
x n +1 − x n ≈ ξ − x n cioè d n +1 ≈ e n . = 0.2282
( d1 )2
d3
Ma in condizioni di convergenza, dn+1 < dn da cui, per l’errore, vale = 0.2498
( d2 )2
la maggiorazione en < dn . d4
= 0.2500
Perciò gli scarti sono molto vicini agli errori e possono essere ( d3 )2
utilizzati sia per controllare il numero di iterazioni da effettuare per d5
= 0.2495
( d4 )2
approssimare la radice entro una certa tolleranza sia per approssimare
d 1 Abbiamo una stima di M usando gli scarti.
M applicando la formula M ≈ n+ .
d2n
Una volta stimato M, si può anche avere una stima più accurata
dell’errore all’ultimo passo (cioè al passo n + 1). Da una parte, infatti,
d n +2
vale en+1 ≈ dn+2 , dall’altra M ≈ . Se siamo arrivati fino
( d n +1 )2
all’iterazione 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 l’equazione f ( x ) = 0 con f ( x ) = x3 + x. Si vede
subito che l’unica radice reale di f è ξ = 0. Dal momento che
Figura 5.12: Radice della funzione f ( x ) =
f 0 ( x ) = 3x2 + 1 e f 00 ( x ) = 6x, risulta che f 0 (0) = 1 6= 0 mentre x3 + x.
62 annamaria mazzia
1 1.7105e+00
2 1.1620e+00
3 8.0644e-01
4 5.8158e-01
5 4.3318e-01
6 2.6142e-01
7 4.4651e-02
8 1.7912e-04
9 1.1494e-11
Abbiamo detto che il metodo di Newton-
Proviamo a vedere, sperimentalmente, quale può essere l’ordine di Raphson ha, in genere, ordine 2. Ma se noi,
convergenza e la costante asintotica. Mettiamo in tabella i rapporti ipotizzando ordine 2, troviamo una costante
dn dn asintotica M nulla o che tende a zero, deve
(convergenza lineare?) (convergenza quadratica?) e suonare un campanello di allarme! La costan-
d n −1 ( d n −1 )2 te asintotica di un metodo iterativo non può
dn mai valere zero. Quindi l’ordine non è quel-
(convergenza cubica?). Sappiamo già che non può esserci
( d n −1 )3 lo che ci aspettiamo ma bisogna indagare
convergenza quadratica. ulteriormente sui risultati!
Attenzione: in questo esempio, una volta
Per i vari rapporti degli scarti, si ha: accertata che la convergenza non è quadrati-
ca, non potremmo neanche pensare ad una
dn dn dn convergenza di tipo lineare perchè, se aves-
n en
d n −1 ( d n −1 )2 ( d n −1 )3 simo limn→+∞
e n −1
= M 6= 0, avrem-
2 6.7934e-01 3.9715e-01 2.3218e-01 en en
mo limn→+∞ = limn→+∞ ·
( e n −1 )2 e n −1
3 6.9399e-01 5.9723e-01 5.1395e-01 1 1
= M limn→+∞ = +∞ e non
4 7.2117e-01 8.9426e-01 1.1089e+00 e n −1 e n −1
zero (ciò che invece abbiamo).
5 7.4484e-01 1.2807e+00 2.2021e+00
6 6.0348e-01 1.3931e+00 3.2160e+00
7 1.7081e-01 6.5339e-01 2.4994e+00
8 4.0115e-03 8.9840e-02 2.0120e+00
9 6.4168e-08 3.5824e-04 2.0000e+00
Allo stesso risultato si arriva anche per via
I rapporti che indicano convergenza lineare e quadratica tendono a ze- teorica (sapendo qual è la radice), applican-
dn do lo sviluppo di Taylor alla formula dell’errore
ro, mentre i rapporti tendono a 2: ciò dice che la convergenza
( d n −1 )3 dell’algoritmo di Newton-Raphson. e consi-
derando che la radice è un punto di flesso
è cubica e che la costante asintotica vale 2.
non orizzontale.
_
Esempio
√ x
per x ≥ 0
Si consideri f ( x ) = √ .
− − x per x < 0
La radice di questa funzione è ξ = 0.
√ 1
per x ≥ 0
2 x
0
Per la derivata prima, si ha f ( x ) = .
1
√ per x < 0
2 −x Figura 5.14: Esempio in cui il metodo di
Se partiamo da x0 > 0 abbiamo Newton-Raphson oscilla tra due valori.
√
x0
x1 = x0 − = x0 − 2x0 = − x0
1
√
2 x0
x n +1 = − x n , n = 0, 1, 2, . . .
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 richieden-
Figura 5.15: La funzione f ( x ) = x5 − 6
do una tolleranza 10−8 , sono necessarie 88 iterazioni per arrivare a
ξ = 1.430969081115725849. Vediamo in tabella, come cambia il nume-
ro delle iterazioni al variare di x0 :
x0 0.05 0.1 0.5 0.8 1.0 1.4 1.5 2. 3. 10. 20. 100.
iterazioni 59 46 18 10 7 4 4 6 8 14 17 24
_
64 annamaria mazzia
x Cn =
f ( x1 ) − f ( x0 )
x1 − x0
: abbiamo sempre una costante che approssi-
ma la derivata f 0 ( x0 ) utilizzando i valori di x1 e x0 . Lo schema è
detto della secante fissa.
x Cn =
f ( x n ) − f ( x n −1 )
x n − x n −1
. La derivata f 0 ( xn ) è approssimata uti-
lizzando il rapporto incrementale della f valutata in xn e xn−1 .
Abbiamo il metodo delle secante variabile, che chiameremo nel
seguito anche metodo della Regula Falsi. Attenzione! In letteratura viene descritto un
altro metodo (simile ma non lo stesso) con
In forma estesa, l’iterazione n + 1 della Regula Falsi si scrive come: il nome della Regula Falsi o Falsa Posizione
che genera i valori xn+1 in modo che la ra-
dice ξ sia sempre compresa tra le iterazioni
f ( xn )( xn − xn−1 ) successive.
x n +1 = x n −
f ( x n ) − f ( x n −1 )
E = p1/s
Metodo p s E
√
Newton-Raphson 2 2 2 ≈ 1.414
Regula Falsi 1.618 1 1.618
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
n xn f ( xn ) f 0 ( xn ) dn dn /d2n−1
0 1.3 -5.410581854E-01 0.382501171
1 2.714526871831 1.427962127E+00 2.26744846 1.41452687E+00
2 2.084760792766 2.157545986E-01 1.53401376 6.29766079E-01 0.314743565
3 1.944113685369 1.377189572E-02 1.33676314 1.40647107E-01 0.354627390
4 1.933811265085 7.60156095E-05 1.32199993 1.03024203E-02 0.520808008
5 1.933753764621 2.37200355E-09 1.32191743 5.75004640E-05 0.541742396
6 1.933753762827 -1.00668172E-16 1.79436599E-09 0.542710632
f ( x n ) − f ( x n −1 )
n xn f ( xn ) dn dn /d1.618
n −1
x n − x n −1
0 1.3 -5.41058185E-01
1 1.35 -5.20098358E-01 0.419196552
2 2.590702853065 1.15448972E+00 1.34970922 1.24070285E+00
3 1.735341043061 -2.33640901E-01 1.62285784 8.55361810E-01 0.603386215
4 1.879309845941 -6.98346071E-02 1.13779020 1.43968803E-01 0.185374473
5 1.940687248331 9.19996444E-03 1.28768192 6.13774024E-02 1.412310765
6 1.933542654410 -2.79035921E-03 1.32673746 7.14459392E-03 0.653100215
7 1.933752971771 -1.04570967E-06 1.32176540 2.10317362E-04 0.623935239
8 1.933753762918 1.19824825E-10 1.32191686 7.91146198E-07 0.704441455
9 1.933753762827 -1.00668172E-16 9.06448250E-11 0.676026603
Attraverso gli scarti, abbiamo fatto una stima della costante asin-
totica dell’errore, considerando che, al limite per k → ∞, xn → ξ. Le
ultime colonne delle tabelle, infatti, valutano i rapporti dn /d2n−1 e
dn /d1.618
n −1 .
Diamo un’ulteriore stima di tali costanti facendo uso della defini-
zione teorica e considerando ξ ≈ xn .
| f 00 (ξ )|
Per il metodo di Newton-Raphson dobbiamo calcolare M =
2| f 0 (ξ )|
mentre per la Regula Falsi dobbiamo considerare il valore M 0.618 .
Poichè f 00 ( x ) = 1/2 + sin ( x ), abbiamo, per ξ ≈ x6 (di Newton-
Raphson) 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
_
Esempio
Consideriamo l’equazione x2 − 8x + 16 = 0. Si tratta di trovare le
radici di un polinomio di grado 2. L’equazione che abbiamo scritta
si può riscrivere, in modo del tutto equivalente, come ( x − 4)2 = 0.
Figura 5.18: Radice doppia di f ( x ) = x2 −
Troviamo una radice, da contarsi due volte, cioè ξ = 4 è una radice 8x + 16.
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.
_
Quando si ha una radice multipla, il metodo di Newton-Raphson
diventa un metodo del primo ordine in quanto la formula che lega
l’errore al passo n + 1 con l’errore al passo n diventa: Il procedimento da seguire per arrivare a que-
sto risultato è del tutto simile a quanto è stato
r−1 fatto nell’ipotesi in cui f 0 (ξ ) 6= 0. Si consiglia
e n +1 = en di ricavare questo risultato come esercizio.
r
r−1
da cui la costante asintotica è M = . Per poter avere un metodo
r
che sia di nuovo a convergenza quadratica, occorre modificare l’algo-
ritmo, ottenendo la formula di Newton-Raphson modificata, nel modo
seguente:
f ( xn )
x n +1 = x n − r
f 0 ( xn )
Esempio
Riprendiamo la funzione f ( x ) = x2 − 8x + 16 (di cui sappiamo
che ξ = 4 è una radice doppia). Applicando il metodo di Newton-
x2 − 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 l’algoritmo tenendo conto della molteplicità della
( x n − 4)2
radice, otteniamo: xn+1 = xn − 2 = xn − ( xn − 4) = 4.
2( x n − 4)
Qualunque sia il punto iniziale, arriviamo alla radice in una sola
iterazione! Per esercizio si dimostri che, data la funzione
La funzione che abbiamo preso in esame è particolare, essendo un f ( x ) = ( x − ξ )2 = 0, il metodo di Newton-
Raphson modificato converge a ξ in una sola
polinomio di grado 2, perciò abbiamo una sola iterazione per arrivare iterazione qualunque sia il punto x0 iniziale.
a convergenza.
68 annamaria mazzia
_
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.
Quindi
M M
e n +1 ≤ d ≤ tol
1 − M n +1 1−M
M M
Perciò, per < 1 (vale a dire per M < 1/2), se dn+1 ≤ tol anche La disequazione < 1 si può riscrive-
1−M 1−M
en+1 ≤ tol. Se, invece, M ≥ 1/2, allora l’errore può essere un po’ più re come M < 1 − M da cui 2M < 1 ovvero
M < 1/2.
grande della tolleranza richiesta.
Se tol = 10−10 e M = 0.8 (maggiore
Per quanto riguarda il metodo della secante variabile, poichè è di 1/2), l’errore sarà minore o uguale a
superlineare, in base alla definizione alternativa che abbiamo dato, 4 · 10−10 .
si può dire che en+1 ≈ Mn+1 en con Mn+1 → 0: si può vedere come
un caso limite di convergenza lineare con fattore di convergenza che
tende a zero, e quindi il controllo dello scarto permette un buon
controllo dell’errore.
Quando si implementa un metodo iterativo, si può fare il grafico
semilogaritmico di convergenza del metodo, ponendo sull’asse delle
ascisse i valori delle iterazioni e sull’asse delle ordinate i logaritmi (in
base 10) degli scarti.
Asintoticamente, infatti, nella definizione di ordine di convergenza
di un metodo, possiamo sostiture l’errore con lo scarto da cui dn ≈
p
Mdn−1 .
Nel caso in cui p = 1, si ha:
dn ≈ Mdn−1
dn−1 ≈ Mdn−2
dn−2 ≈ Mdn−3
.. ..
. .
d2 ≈ Md1
d1 ≈ Md0
d2 d3
Da ≈ ricaviamo facilmente
( d1 ) p ( d2 ) p
p p
d2 (d ) p d1 d3 d2
≈ 1 p = oppure, passando ai reciproci, si ha ≈
d3 ( d2 ) d2 d2 d1
Passando ai logaritmi si ha
d2
log
d2 d1 d d3
log ≈ p log da cui p≈ 3 log
d
d3 d2 d1 In modo equivalente, p ≈ 2
log d2
d2 log
d1
Lavorando allo stesso modo sugli altri rapporti tra gli scarti abbiamo:
d n +1
log
d3 dn d
log log In modo equivalente p ≈ n
dn
d d n +1 log
p≈ 4, ... p≈ d n −1
d2 d n −1
log log
d3 dn
Man mano che ci stiamo avvicinando a convergenza il valore di p
tenderà ad un valore ben preciso, l’ordine di convergenza del metodo.
E, una volta trovato p, possiamo stimare M usando la formula del
rapporto tra gli scarti.
Esempio
Riprendiamo l’esempio di pag. 65 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 dn (N-R) p (N-R) dn (R-F) p (R-F)
1 1.41452687E+00 5.E-02
2 6.29766079E-01 1.24070285E+00
3 1.40647107E-01 1.8526 8.55361810E-01 -0.11581
4 1.03024203E-02 1.7436 1.43968803E-01 4.7913
5 5.75004640E-05 1.9849 6.13774024E-02 0.47845
6 1.79436599E-09 1.9997 7.14459392E-03 2.5226
7 2.10317362E-04 1.6392
8 7.91146198E-07 1.5836
9 9.06448250E-11 1.6254
5.14 Esercizi
Svolgimento
k xk g( xk ) k xk g( xk )
(c) 0 1 5 0 2.5 2.75
1 5 9 1 2.75 2.8125
2 9 45 2 2.8125 2.84765625
3 45 1809 3 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.21, 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.
appunti di calcolo numerico 73
Svolgimento
k xk f ( xk ) f 0 ( xk )
0 0.50000000E+00 -0.18294415E+01 0.50000000E+01
1 0.86588831E+00 -0.41401211E+00 0.31964267E+01
2 0.99541173E+00 -0.13775443E-01 0.30046517E+01
3 0.99999643E+00
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.
74 annamaria mazzia
f ( x n ) − f ( x n −1 )
k xk f ( xk )
x n − x n −1
0 0.50000000E+00 -0.18294415E+01 -
1 0.86588831E+00 -0.41401211E+00 0.38684741E+01
2 0.97291038E+00 -0.81656072E-01 0.31054906E+01
3 0.99920448E+00
Svolgimento
Graficamente, da f ( x ) = 0 si ha sin ( x ) = 1 − x. Se si studia
l’intersezione delle due curve, sin ( x ) e 1 − x nell’intervallo [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 dell’intervallo dato:
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 =⇒
1
q
=⇒ 0 ≤ 1 − (1 − x )2 ≤ 1 =⇒ 1 ≤ p
1 − (1 − x )2
appunti di calcolo numerico 75
sin ( x ) + x − 1
x k +1 = x k − .
cos ( x ) + 1
k xk f ( xk ) f 0 ( xk ) | x k − x k −1 |
0 0.1 -0.80016658E+00 0.19950042E+01 -
1 0.50108517E+00 -0.18537249E-01 0.18770618E+01 0.40108517E+00
2 0.51096084E+00 -0.23565955E-04 0.18722750E+01 0.98756733E-02
3 0.51097343E+00 -0.38737166E-10 - 0.12586802E-04
Svolgimento
f (0.7) = −0.566674943938732
f (2.3) = 3.8229091229351
f ( xk )
(c) Il metodo di Newton-Rapshon è xk+1 = 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
f ( x k ) − f ( x k −1 )
k xk f ( xk )
x k − x k −1
1 1.002654656 0.5312842078E-02 0.2054513650E+01
2 1.000068720 0.1374413812E-03 0.2001364094E+01
3 1.000000046
Svolgimento
k xk f ( x k −1 ) f 0 ( x k −1 ) dk
0 1.00000000000000
1 0.1386294361E+01 0.3862943611E+00 -0.1000000000E+01 0.3862944E+00
2 0.1354628119E+01 -0.3801950159E-01 -0.1200631922E+01 0.3166624E-01
3 0.1354392386E+01 -0.2788886518E-03 -0.1183069825E+01 0.2357330E-03
| x3 − x2 |
Usando gli scarti, la stima per la costante asintotica vale =
| x2 − x1 |2
0.2350863. Per una stima dell’errore commesso, si può utilizza-
re il fatto che, per il metodo di Newton-Raphson vale ek < dk e,
quindi, dire che e3 ≤ 0.2357330E − 03. Se si vuole essere parti-
colarmente precisi, dalla relazione dk+1 ≈ ek (ricavata nell’Esem-
d
pio 5.6), e considerando che k+2 1 ≈ M, abbiamo e3 ≈ d4 ≈ Md23 =
dk
2
0.2350863 · (0.2357330E − 03) = 1.306375E − 08.
78 annamaria mazzia
6.2 Interpolazione
v( x ) = c0 φ0 ( x ) + . . . + cn φn ( x )
x costruire la funzione interpolante, cioè determinare i coefficienti da interpolare. Il secondo punto può essere
applicato tutte le volte che si vuole valutare
c0 , c1 , . . . , cn per un’assegnata base φ0 , φ1 , . . . , φn ; la funzione interpolante.
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.
In forma compatta, sotto forma matriciale le equazioni del sistema si Questo argomento verrà approfondito nel
Capitolo 9, dove rimandiamo per i dettagli.
possono scrivere come
1 x0 x02 . . . x0n
c0 y0
1 x x 2 . . . xn c y
1 1 1 1 1
1 x2 x22 . . . x2n c2 = y2
.. .. .. .. .. ..
. . . . . .
1 xn xn . . . xnn
2 cn yn
La matrice dei coefficienti è una matrice ben nota in letteratura
e prende il nome di matrice di Vandermonde. È una matrice con Alexandre-Theophile Vandermonde, (1735-
1796), abbandonò una carriera da violinista
determinante diverso da zero, e quindi il sistema ammette una ed una
per dedicarsi alla matematica quando aveva
sola soluzione. Osserviamo che la prima colonna ha tutti gli elementi 35 anni. Si occupò di vari problemi di algebra,
uguali a 1, la seconda colonna ha le ascisse dei punti di appoggio, la di topologia, calcolo combinatoriale, e teoria
dei determinanti.
terza colonna ha i quadrati di esse, e così via.
( x − 2)( x − 4) ( x − 2)( x − 4)
L0 ( x ) = =
(1 − 2)(1 − 4) 3
Figura 6.4: Polinomi di Lagrange L0 ( x ),
( x − 1)( x − 4) ( x − 1)( x − 4) L1 ( x ), L2 ( x ), con x0 = 1, x1 = 2, x2 = 4.
L1 ( x ) = =−
(2 − 1)(2 − 4) 2 Si osservi, per ciascuno di essi, la proprie-
tà per la quale L j ( xi ) = 1 se i = j e
( x − 1)( x − 2) ( x − 1)( x − 2) L j ( xi ) = 0 se i 6= j.
L2 ( x ) = =
(4 − 1)(4 − 2) 6
Il polinomio si scrive, quindi, come
1 3 3
p2 ( x ) = L0 ( x ) · 1 + L1 ( x ) · 3 + L2 ( x ) · 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 all’unicità del polinomio interpolatore.
_
n
F(x) = ∏ ( x − xk )
k =0
p( x ) = c0 + c1 ( x − x0 ) + c2 ( x − x0 )( x − x1 ) + . . . + cn ( x − x0 )( x − x1 ) · . . . ( x − xn−1 )
Esempio Consideriamo sempre le tre coppie di punti degli Questo esempio ci permette di capire come
si costruiscono i coefficienti c0 , c1 , ....
esempi precedenti, (1, 1), (2, 3) e (4, 3).
Per costruire p2 ( x ) abbiamo bisogno di φ0 , φ1 e φ2 :
φ0 ( x ) = 1
φ1 ( x ) = ( x − x0 ) = ( x − 1)
φ2 ( x ) = ( x − x0 )( x − x1 ) = ( x − 1)( x − 2)
Quindi c1 = 1 = f ( x0 ).
In x1 = 2 abbiamo:
f ( x1 ) − f ( x0 ) 3−1
Ricaviamo quindi c1 = = = 2. Chiamiamo
x1 − x0 2−1
questa quantità differenza divisa del primo ordine tra x0 e x1 e la
indichiamo con f [ x0 , x1 ]. Quindi
f ( x1 ) − f ( x0 )
c1 = f [ x0 , x1 ] =
x1 − x0
Infine,
Per ottenere una formula per c2 che abbia carattere generale, riscri-
viamo l’equazione 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 ).
88 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 )
Ma = f [ x1 , x2 ] è la differenza divisa del primo ordine
x2 − x1
tra x1 e x2 da cui
f [ x1 , x2 ] − f [ x0 , x1 ]
f [ x1 , x2 ] − f [ x0 , x1 ] = c2 ( x2 − x0 ) =⇒ c2 =
x2 − x0
f [ x1 , x2 ] − f [ x0 , x1 ]
f [ x0 , x1 , x2 ] = .
x2 − x0
4 2
Facendo le opportune sostituzioni si ricava c2 = − = − . Quin-
6 3
di, p2 ( x ) = f ( x0 ) + f [ x0 , x1 ]( x − x0 ) + f [ x0 , x1 , x2 ]( x − x0 )( x − x1 )
2
Nell’esempio considerato: p2 ( x ) = 1 + 2( x − 1) − ( x − 1)( x − 2)
3
_ Date le stesse coppie di punti, cambia il
modo per arrivare al polinomio di interpola-
Da questo esempio, si può vedere come la rappresentazione se-
zione, usando come funzioni base i mono-
condo Newton sia di tipo ricorsivo: il polinomio p1 ( x ) = f ( x0 ) + mi, o i polinomi di Lagrange e ora la formu-
f [ x0 , x1 ]( x − x0 ) (che si ha arrestandosi ai primi due passi del pro- lazione di Newton, ma il polinomio finale è
sempre lo stesso essendo unico il polinomio
cedimento appena effettuato) è un polinomio, in tal caso una retta, interpolatore.
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 pn−1 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ò:
f [ x0 ] = c0 , f [ x0 , x1 ] = c1 , . . . , f [ x0 , x1 , . . . , x n ] = c n
f [ xi ] = f ( xi )
f [ x i +1 , . . . x j ] − f [ x i , . . . , x j −1 ]
f [ xi , . . . , x j ] =
x j − xi
f [ x1 ] − f [ x0 ]
f [ x0 , x1 ] =
x1 − x0
x1 f ( x1 ) f [ x0 , x1 , x2 ] =
f [ x1 , x2 ] − f [ x0 , x1 ]
=
x2 − x0
f [ x2 ] − f [ x1 ]
f [ x1 , x2 ] = f [ x0 , x1 , x2 , x3 ] =
x2 − x1
f [ x1 ,x2 ,x3 ]− f [ x0 ,x1 ,x2 ]
= x3 − x0
x2 f ( x2 ) f [ x1 , x2 , x3 ] = f [ x0 , x1 , x2 , x3 , x4 ] =
f [ x2 , x3 ] − f [ x1 , x2 ] f [ x1 ,x2 ,x3 ,x4 ]− f [ x0 ,x1 ,x2 ,x3 ]
= = x4 − x0
x3 − x1
f [ x3 ] − f [ x2 ]
f [ x2 , x3 ] = f [ x1 , x2 , x3 , x4 ] =
x3 − x2
f [ x2 ,x3 ,x4 ]− f [ x1 ,x2 ,x3 ]
= x4 − x1
..
x3 f ( x3 ) f [ x2 , x3 , x4 ] = .
f [ x3 , x4 ] − f [ x2 , x3 ]
=
x4 − x2
f [ x4 ] − f [ x3 ] ..
f [ x3 , x4 ] = .
x4 − x3
..
x4 f ( x4 ) .
..
.
.. ..
. .
I coefficienti della diagonale principale sono i coefficienti c j del
polinomio interpolatore di Newton.
2
Il polinomio p2 ( x ) si scrive: p2 ( x ) = 1 + 2( x − 1) − ( x − 1)( x −
3
2).
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.
f ( k ) ( x0 )
f [ x|0 ,x{z
0 ,...,x0 ] =
} k!
k +1 volte
pn+1 ( x ) = f ( x ) = pn ( x ) + f [ x0 , x1 , . . . , xn , x ]( x − x0 )( x − x1 ) · . . . ( x − xn ).
appunti di calcolo numerico 91
xi −5 −2.5 0 2.5 5
yi = f ( xi ) 3.846154e − 2 1.379310e − 1 1. 1.379310e − 1 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 dell’intervallo
[−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 dell’origine, possiamo vedere come il profilo del polinomio
p16 si avvicini bene alla funzione – si veda la Figura 6.6 (in basso)!
92 annamaria mazzia
L’esempio di Runge è utile per capire che la scelta dei nodi equi-
distanti non si rivela sempre la scelta giusta e che occorrono altre
strategie nella scelta dei nodi per ottenere migliori risultati. Nell’e-
f (n+1) (ξ ( x ))
sempio di Runge, infatti, il rapporto , che compare nella
( n + 1) !
formula dell’errore, cresce, al crescere di n, agli estremi dell’intervallo
di interpolazione, perciò aumentando il grado del polinomio di in-
terpolazione, aumenta l’errore! Per indagare ulteriormente su questo
problema, si rimanda alla letteratura specializzata del settore.
Se, in alcuni casi, la scelta dei nodi, fatta in maniera opportuna, può
risolvere determinati problemi che si incontrano nell’interpolazione,
94 annamaria mazzia
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
si ( xi ) = yi , i = 1, 2, . . . , m − 1
s i ( x i +1 ) = y i +1 , i = 1, 2, . . . , m − 1
si ( xi+1 ) = si0+1 ( xi+1 ),
0
i = 1, 2, . . . , m − 2
si00 ( xi+1 ) = si00+1 ( xi+1 ), i = 1, 2, . . . , m − 2
Da un punto di vista storico, il termine spli-
ne deriva da un sottile e flessibile strumento
Osserviamo che le condizioni di continuità delle derivate prime e per disegnare curve, fatto di legno o metal-
seconde le possiamo imporre solo nei punti interni, e non in x1 e xm , lo, utilizzato prima dell’avvento dei compu-
ter, soprattutto nell’industria navale. Per po-
il primo e l’ultimo punto. Le condizioni che abbiamo appena scritto
ter passare per determinati punti, la spline
sono 2(m − 1) + 2(m − 2) = 4(m − 1) − 2. Abbiamo 2 condizioni in era tenuta ferma da alcuni pesi, mentre alle
meno rispetto alle 4(m − 1) incognite che dobbiamo determinare! Le estremità non aveva costrizioni (quindi deri-
vata seconda nulla, come accade nelle spline
due condizioni che mancano vengono imposte su punti estremi x1 naturali). La spline naturale minimizza l’ener-
e xm e, in base alle condizioni imposte si hanno le cosiddette spline gia di tensione tra tutte le funzioni che sono
costrette a passare per quei punti e con la
naturali, complete e not-a-knot.
stessa continuità.
Nelle spline naturali si richiede s100 ( x1 ) = s00m−1 ( xm ) = 0. Nelle
spline complete, vengono specificati i valori delle derivate prime
per s10 ( x1 ) e per s0m−1 ( xm ). Invece per le spline not-a-knot si richie-
de la continuità della derivata terza di s1 e di sm−1 in x2 e in xm−1
96 annamaria mazzia
ai = yi , i = 1, 2, . . . , m − 1
Da quest’ultima otteniamo
c i +1 − c i
di = , i = 1, 2, . . . , m − 2 (6.3)
3hi
Questa equazione si ha per i = 1, . . . , m − 2, quindi abbiamo un Il procedimento seguito fino a questo punto
è valido qualunque sia il tipo di spline che
sistema di m − 2 equazioni, ma le incognite ci che abbiamo introdotto
vogliamo generare.
sono m: c1 , c2 , . . . , cm . Aggiungendo le due condizioni che mancano,
Aggiungiamo, allora, le condizioni per le spline naturali: deve il procedimento si distingue da spline a spline.
essere s100 ( x1 ) = s00m−1 ( xm ) = 0. Si ha
s100 ( x1 ) = 2c1 = 0
s00m−1 ( xm ) = 2cm−1 + 6dm−1 hm−1 = 0
c m −1
da cui c1 = 0 e, dm−1 = − . Di conseguenza, ponendo cm =
3hm−1
0 possiamo estendere all’indice i = m − 1 la relazione (6.3) per i
c m − c m −1
coefficienti di : dm−1 = .
3hm−1
Con la posizione c1 = cm = 0 le equazioni (6.5), per i = 1 e per
i = m − 2 si semplificano, rispettivamente, in
···
2( h1 + h2 ) h2 0 0
..
h2 2( h2 + h3 ) h3 0 .
0 h3 2( h3 + h4 ) h4 ...
A= .. .. ..
0 . . . 0
..
. h m −3 2 ( h m −3 + h m −2 ) h m −2
0 ··· 0 h m −2 2 ( h m −2 + h m −1 )
c2 3( f [ x2 , x3 ] − f [ x1 , x2 ])
c3 3( f [ x3 , x4 ] − f [ x2 , x3 ])
c= .. ψ= ..
. .
c m −1 3( f [ xm−1 , xm ] − f [ xm−2 , xm−1 ])
ai = yi
(2ci + ci+1 )hi
bi = f [ x i , x i + 1 ] −
3
c i +1 − c i
di =
3hi
( t1 , x1 ) , ( t2 , x2 ) . . . ( t m , x m )
( t1 , y1 ) , ( t2 , y2 ) . . . ( t m , y m )
6.6 Esercizi
xi -1 0 2 3 4
f ( xi ) 9 0 0 15 84
Svolgimento
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
100 annamaria mazzia
0−0 0+9
2 0 =0 = 3
2−0 2 − (−1)
15 − 0 15 − 0 5−3
3 15 = 15 =5 = 0.5
3−2 3−0 3 − (−1)
84 − 15 69 − 15 27 − 5 11 11/2 − 1/2
4 84 = 69 = 27 = =1
4−3 4−2 4−0 2 4 − (−1)
Svolgimento
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 )
p00 ( x ) = 0
p10 ( x ) = −5.2
p20 ( x ) = 16x − 6
Il polinomio è:
e raccogliendo i termini
p2 ( x ) = 8x2 − 6x + 1
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 00 (0)
f [0, 0] = f 0 (0) = 7 f [0, 0, 0] = =9 f [1, 1] = f 0 (1) = 60
2!
0 2
f 0 (0)=7
0 2 f 00 (0)/2=9
18 − 9
f 0 (0)=7 =9
1−0
25 − 7 17 − 9
0 2 =18 =8
1−0 1−0
27 − 2 35 − 18
=25 =17
1−0 1−0
60 − 25
1 27 =35
1−0
f 0 (1)= 60
1 27
p( x ) = 8x4 + x3 + 9x2 + 7x + 2.
Svolgimento
La tabella delle differenze divise è:
appunti di calcolo numerico 103
x p0 ( x ) = 17.62
14. Spiegare cosa è una spline e quali sono le condizioni che vanno
imposte per ottenere i coefficienti delle spline.
x 0.00000 0.04200 0.08000 0.11800 0.15600 Tabella 7.1: Dati sperimentali per la legge di
Hooke
F 1.472481 2.418165 3.363849 4.309533 5.255217
n n
∂S( a0 , a1 ) ∂
0=
∂a0
=
∂a0 ∑ [(a0 + a1 xi ) − yi ]2 = 2 ∑ [(a0 + a1 xi ) − yi ] Data una funzione f ( x, y) che dipende da
i =1 i =1 ∂f
n n due variabili, il simbolo rappresenta la
∂S( a0 , a1 ) ∂
∑ [(a0 + a1 xi ) − yi ] = 2 ∑ [( a0 + a1 xi ) − yi ] xi
2 ∂x
0= = derivata parziale della f rispetto alla variabile
∂a1 ∂a1 i =1 i =1 x, che altro non è che la derivata della fun-
zione g( x ) = f ( x, y) considerando y come
Queste equazioni si semplificano nel sistema delle cosiddette equa- una costante. Viceversa, con il simbolo
∂f
si
∂y
zioni normali: indica la derivata parziale della f rispetto alla
variabile y, che, per definizione, è la derivata
na + a ∑n x = ∑n y della funzione h(y) = f ( x, y), dove ora x
0 1 i =1 i i =1 i
a0 ∑ n x i + a1 ∑ n x 2 = ∑ n x i y i è considerata costante. L’argomento viene
i =1 i =1 i i =1 trattato nei dettagli in Analisi Matematica 2.
a0 + a1 X = Y
La funzione da minimizzare è
n h i2
S( a0 , a1 , . . . , am ) = ∑ ( a0 + a1 xi + a2 xi2 + . . . + am xim ) − yi
i =1
Ricaviamo, quindi
n
2 ∑ ( a0 + a1 xi + . . . + am xim − yi ) xi = 0
j
per j = 0, 1, . . . , m
i =1
A T Aa = A T b
1 x2 x22 . . . x2m
A= .. .. .. ..
. . . .
ln (y) = ln ( a) + bx
7.5 Esercizi
xi -1 0 2 3 4
f ( xi ) 9 0 0 15 84
(c) Calcolare il punto di intersezione delle due rette e dire di che punto
si tratta.
Svolgimento
∑5i=1 xi −1 + 2 + 3 + 4 ∑5i=1 yi 9 + 15 + 84
X= = = 1.6 Y= = ) = 21.6
5 5 5 5
Svolgimento
Per trovare la curva di approssimazione del tipo y = ax b , dobbiamo
prima passare ai logaritmi:
dove n = 10.
Si ha ∑in=1 Xi = 16.6995268, ∑in=1 Xi2 = 28.2537116, ∑in=1 Yi =
52.0472913, ∑in=1 Xi Yi = 87.6541085
Il sistema da risolvere diventa
10a + 16.6995268a = 52.0472913
0 1
16.6995268a0 + 28.2537116a1 = 87.6541085
Svolgimento
Per la curva di approssimazione y = cx d si passa ai logaritmi, in
modo da ricondursi all’equazione 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
dove f è una funzione definita nell’intervallo [ a, b]. La funzione f può essere nota, come nel-
l’esempio appena visto, oppure assegna-
Una formula di integrazione numerica (detta anche formula di
Rb ta su determinati punti dell’intervallo, come
quadratura numerica) approssima l’integrale esatto I = a f ( x )dx vedremo alla fine del capitolo.
mediante una sommatoria data da ∑nj=0 a j f ( x j ):
Z b n
I=
a
f ( x )dx ≈ ∑ aj f (xj )
j =0
f 00 (ξ x )
Z b Z b Z b
f (b) − f ( a)
f ( x )dx = f ( a) + ( x − a) dx + ( x − a)( x − b) dx
a a b−a a 2
appunti di calcolo numerico 115
ovvero
Z b Z b
f ( a) + f (b) 1
f ( x )dx = (b − a) + ( x − a)( x − b) f 00 (ξ x ))dx
a 2 2 a
( b − a )3
Z b Z b
1 1 00 1
( x − a)( x − b) f 00 (ξ x ))dx = f (ξ ) ( x − a)( x − b)dx = − f 00 (ξ )
2 a 2 a 2 3!
( b − a )3
Z b
f ( a) + f (b) 1 00
f ( x )dx = (b − a) − f (ξ )
a 2 2 3!
( b − a )3
| Eint | ≤ M
12
La formula dei trapezi approssima l’integrale di f in [ a, b] me- Se la funzione f ( x ) ≥ 0 si può vedere fa-
cilmente che l’integrale della retta che passa
diante l’integrale della retta passante passante per i punti ( a, f ( a)) per i punti ( a, f ( a)) e (b, f (b)), altro non è
e (b, f (b)): che l’area del trapezio sottesa alla corda pas-
sante per f ( a) e f (b). Da qui il nome della
Z b
b−a formula come formula dei trapezi.
I= f ( x )dx ≈ Itrap = [ f ( a) + f (b)]
a 2
1 1 1 ( s − 1) 1
Z Z
(1)
C0 = L0 (s)ds = ds =
1 0 0 −1 2
Z 1 Z 1
(1) 1 s 1
C1 = L (s)ds = ds =
1 0 1 0 1 2
Z b 000
f (ξ x )
Eint = ( x − a)( x − c)( x − b)dx
a 3!
5
f IV (u) b−a f IV (u)
Eint =− =− ( b − a )5
90 2 2880
−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)
0 f (0) f 0 (0) t =
t t2
f ( t ) − f (0)
f ( t ) − f (0) − f 0 (0) f ( t ) − f (0) − t f 0 (0) f (t) − 2t f 0 (0) − f (−t)
t f (t) t =
t t t2 2t3
Il polinomio di interpolazione è, dunque
f (0) − f (−t) t f 0 (0) − f (0) + f (−t) f (t) − 2t f 0 (0) − f (−t)
p( x ) = f (−t) + ( x + t) + ( x + t ) x + ( x + t) x2
t t2 2t3
L’errore di interpolazione per questo polinomio di grado 3 vale
f ( IV ) (ξ x )
E( x ) = ( x + t) x2 ( x − t)
4!
Quindi da f ( x ) = p( x ) + E( x ), andando a integrare tra −t e t si
ha:
Z t Z t Z t
f ( x )dx = p( x )dx + E( x )dx
−t −t −t
Nell’integrazione del polinomio p( x ) è facile vedere che i termini
che dipendono da f 0 (0) portano un contributo nullo. Infatti
Z t 0
f 0 (0)
Z t 0
x3
f (0) f (0)
( 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
Gli integrali degli altri termini del polinomio p( x ) portano alla for-
mula di Cavalieri-Simpson. Infatti (omettendo i passaggi matematici
e ricordando che l’ampiezza dell’intervallo su cui stiamo lavorando è
h = 2t) si ha
Z 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 t t2 2t3
2t
= ( f (−t) + 4 f (0) + f (t))
6
h
= ( f (−t) + 4 f (0) + f (t))
6
Allora l’errore della formula di Cavalieri-Simpson coincide con
l’integrale 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
all’interno dell’intervallo [−t, t], quindi si può applicare il teorema
del Valore Medio del calcolo integrale, per cui
t
f ( IV ) (ξ ) f ( IV ) (ξ ) x5 x3 f ( IV ) (ξ ) 5
Z t
Eint = ( x2 − t2 ) x2 dx = − t2 =− t
24 −t 24 5 3 −t 90
Considerando che l’ampiezza dell’intervallo è h = 2t si ha
f ( IV ) (ξ ) h 5 f ( IV ) (ξ ) 5
Eint = − ( ) =− h
90 2 2880
Troviamo la formula dell’errore per Cavalieri-Simpson.
appunti di calcolo numerico 121
a
f ( x )dx = ∑ f ( x )dx
i =1 x i −1
m ≤ f 00 (ξ i ) ≤ M i = 1, . . . , n
∑in=1 f 00 (ξ i )
Per il teorema del Valor Intermedio (teorema 3.6.3), è
n
un valore assunto dalla funzione in qualche punto ξ di [ a, b], vale a
dire, esiste un punto ξ che non conosciamo, all’interno dell’intervallo
[ a, b] tale che
∑in=1 f 00 (ξ i ) n
f 00 (ξ ) =
n
ovvero ∑ f 00 (ξ i ) = n f 00 (ξ ).
i =1
In tal modo
Z b n
h
a
f ( x )dx ≈ ∑ 6 ( f (ai ) + 4 f (ci ) + f (bi )) Se gli intervallini non sono uniformi, la for-
mula va scritta considerando il valore hi per
i =1
ciascun intervallino.
x0 = a
x2i = x0 + ih i = 0, . . . n I nodi pari corrispondono agli estremi dei
1 sottointervalli, mentre i nodi dispari sono i
x2i+1 = x0 + ( i + ) h i = 0, . . . , n − 1 punti centrali di ogni sottointervallo.
2
Per la formula di quadratura otteniamo
Z b n−1 Z x2i+2
I=
a
f ( x )dx = ∑ x2i
f ( x )dx
i =0
n −1
h
≈ ∑ 6
[ f ( x2i ) + 4 f ( x2i+1 ) + f ( x2i+2 )]
i =0
h
= [ f ( x0 ) + 4 f ( x1 ) + 2 f ( x2 ) + 4 f ( x3 ) + . . . + 2 f ( x2n−2 ) + 4 f ( x2n−1 ) + f ( x2n )]
6
n −1 n −1
h
= [ f ( x0 ) + 4 ∑ f ( x2i+1 ) + 2 ∑ f ( x2i ) + f ( x2n )]
6 i =0 i =0
Si considera quindi il punto ξ tale che Per arrivare a questi risultati, il ragionamen-
to è del tutto analogo a quanto è stato fatto
n
1 sulla derivata seconda nella formula compo-
f IV (ξ ) =
n ∑ f IV (ξ i ) sta dei trapezi. Questa volta, però, si deve
i =1 considerare la derivata quarta. Per eserci-
zio, si consiglia di ripetere tutti i passaggi per
Allora arrivare al risultato.
(b − a)5 IV (b − a)h4 IV
Eint = − f ( ξ ) = − f (ξ )
2880n4 2880
1
Quindi per n → ∞ l’errore tende a zero come o, equivalentemente,
n4
1
come h4 . Nella formula dei trapezi l’errore 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.
appunti di calcolo numerico 125
_
126 annamaria mazzia
Esempio Si voglia approssimare l’integrale È un integrale che non può essere risolto
analiticamente. Se si vuole calcolare
Z 1 una sua approssimazione senza fare
2
e− x dx ≈ 0.746824. uso di formule di quadrature, possiamo,
0 ad esempio, pensare di applicare la
Rb
definizione di integrale a f ( x ) dx =
Suddividiamo l’intervallo [0, 1] in 4 sottointervalli. Sia h = 1/4 = limn→∞ ∑in=0
f ( a + ih(n)) · h(n), con
h(n) = (b − a)/n, e considerare come
0.25. Per la formula composta dei trapezi abbiamo approssimazione dell’integrale la somma
parziale ∑in=0 f ( a + ih(n)) · h(n) con
h 0 2 2 2 2 un valore di n molto grande. Per esem-
Itrap = [e + 2e−h + 2e−(2h) + 2e−(3h) + e−(4h) ] pio, con n = 107 otteniamo il valore
2 0.74682420125254.
2 2 2
= 0.125[1 + 2e−0.125 + 2e−0.5 + 2e−0.75 + e−1 ]
= 0.742984
h 0 2 2 3 2 2
IC−S = [e + 4e−(h/2) + 2e−(h) + 4e−( 2 h) + e−(2h) ]
6
0.25 2 2 2
= [1 + 4e−0.125 + 2e−0.5 + 4e−0.75 + e−1 ]
3
= 0.746855
Per Cavalieri-Simpson si ha
2
Da f ( x ) = e− x abbiamo, per le derivate:
2
f 0 ( x ) = −2xe− x
2
f 00 ( x ) = (−2 + 4x2 )e− x
2
f 000 ( x ) = (12x − 8x3 )e− x
2
f IV ( x ) = (12 − 48x2 + 16x4 )e− x
2 1 12 1
| Etrap | ≤ = 2 | EC−S | ≤ =
12n2 6n 2880n4 240n4
1 1
≤ 10−5 ≤ 10−5
6n2 240n4
f IV (ξ 2 ) (b − a)5
E2 = −
2880 24
e, supponendo che le derivate quarte della f non siano molto diverse
E
tra loro, si ha E2 ≈ 1 .
16
128 annamaria mazzia
I + e = Q2 per n = 2
I + 16e = Q1 per n = 1
cautela.
L = 2 (v1 + 4v2 + 2v3 + 4v4 + 2v5 + . . . + 2v12 + 4v13 + v14 ) = 3010 metri
8.7 Esercizi
Z 0
Esercizio 8.7.1 Sia dato l’integrale I = e− x ( x + 1) dx.
−2
Svolgimento
i xi f ( xi )
0 -2 -7.3890561
1 -1.6 -2.97181945
2 -1.2 -0.664023385
3 -0.8 0.445108186
4 -0.4 0.895094819
5 0 1
Svolgimento
b − a f ( a) + f (b)
IT = ( + 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.5( − 0.571428571 − 0.666666667 − 0.8)
2
= −1.39404762
f 00 (ξ ) (b − a)3
(b) Consideriamo la formula dell’errore: E = −
12 n2
2 −2 4
Da f ( x ) = segue f 0 ( x ) = 2
e f 00 ( x ) = .
x−4 ( x − 4) ( x − 4)3
Per maggiorare l’errore dobbiamo considerare che vale
max0≤ x≤2 | f 00 ( x )| (b − a)3
| E| ≤ , da cui dobbiamo calcolare M =
12 n2
max0≤ x≤2 | f 00 ( x )|.
La funzione ( x − 4)3 è continua, crescente e sempre negativa nel-
4 4
l’intervallo [0, 2]. Quindi | | = : osserviamo il
( x − 4)3 (4 − x )3
4
cambiamento al denominatore. Poniamo g( x ) = . Ri-
(4 − x )3
12
sulta g0 ( x ) = > 0 in [0, 2], quindi la g è crescente e
(4 − x )4
ha valore massimo per x = 2. Perciò M = max0≤ x≤2 | f 00 ( x )| =
4
| f 00 (2)| = 3 = 1/2 = 0.5. Si ha allora la maggiorazione dell’errore
2
M 23 1
| E| ≤ = = 0.0208333333
12 42 48
(c) L’integrale esatto si calcola facilmente:
132 annamaria mazzia
Z 2
2
I= dx = 2 ln (| x − 4|)|20 = 2 ln (| − 2|) − 2 ln (| − 4|) = 2 ln (1/2) = ln (1/4) − 1.386294361
0 x−4
L’errore esatto commesso con la formula dei trapezi, in valore
assoluto, è | I − IT | = 0.00775325793
Svolgimento
xi 1 2 3 4 5 6 7
yi 3.1 5 6.2 8.6 9.8 11.4 12.9
Svolgimento
In questo esercizio, non sappiamo chi sia la funzione f ma abbia-
mo solo dei dati sperimentali. Perciò dobbiamo applicare la formula
di Cavalieri-Simpson utilizzando solo i dati a disposizione. D’altro
canto, le ascisse dei punti, assegnati nell’intervallo [1, 7] ci permet-
tono di avere n = 3 suddivisioni dell’intervallo 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.
Svolgimento
q1 = C11 φ1
q2 = C21 φ1
q3 = C31 φ1
q4 = C41 φ1
a11 a12 a13 ... a1n
a a22 a23 ... a2n
21
a a32 a33 ... a3n
A = aij =
31
.. .. .. ..
. . . ... .
an1 an2 an3 ... ann
appunti di calcolo numerico 139
Esempio:
Per indicare che una matrice A ha n righe e m colonne, diremo che
2 10 5
A ha dimensione n × m. Quando lavoreremo con matrici quadrate A=
3 1 0
di n righe e n colonne, parleremo di dimensione n della matrice per è una matrice 2 × 3 con elementi a11 = 2,
indicare che il numero di righe è uguale al numero di colonne e vale a12 = 10, a13 = 5, a21 = 3, a22 = 1 e
n. a23 = 0.
GA + B = B + A G( A + B ) + C = A + ( B + C )
GA + O = O + A = A G A + (− A) = − A + A = O
Gλ( A + B) = λA + λB G(λ + µ) A = λA + µA
Gλ(µA) = (λµ) A G1A = A
140 annamaria mazzia
x In generale, AB 6= BA.
trovano sulla diagonale principale e sugli elementi delle diagonali Esempio di matrice tridiagonale:
che si trovano sopra e sotto la diagonale principale. −2
1 0 0 0
x
1
−2 1 0 0
Una matrice si dice triangolare se ha tutti gli elementi nulli A=
0 1 −2 1 0
0 0 1 −2 1
ad eccezione di quelli che si trovano tutti sopra (o tutti sotto) la
0 0 0 1 −2
diagonale principale.
uij = 0 per i = j + 1, j + 2, . . . , n
Esempi:
1 −2 5.3
– Si definisce matrice triangolare inferiore L (L sta per lower) di U = 0 3.2 −4
dimensione n, la matrice per la quale, per i = 1, 2, . . . , n, si ha 0 0 10
1 0 0
lij = 0 per j = i + 1, i + 2, . . . , n L= 2 −21 0
−3.4 5.7 −4
Ax = b
AA−1 = A−1 A = I
La matrice A−1 si chiama matrice inversa della A. Una matrice che non ha
inversa si dice, invece, singolare (o non invertibile).
x A è unica
−1
x A è nonsigolare e ( A ) = A
−1 −1 −1
Esempio:
Teorema 9.2.4 Valgono le seguenti proprietà (per matrici per cui è possi-
1 4 8 1 4 8
bile eseguire le seguenti operazioni): A = 4 2 6 A T = 4 2 6
8 6 5 8 6 5
G( A ) T T =A G( A + B ) = A + B
T T T
bi − ∑nj=i+1 aij x j
xi =
aii
bi − ∑ij− 1
=1 aij x j
xi =
aii
4x1 + x2 + 2x3 = 12 −
4x1 + 2x2 + 4x3 = 20 =
− x2 − 2x3 = −8
1
moltiplicata per :
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ù l’incognita x1 .
x3 = 3
a21 a a a
( a22 − a ) x + ( a23 − 21 a13 ) x3 + . . . + ( a2n − 21 a1n ) xn = b2 − 21 b1
a11 12 2 a11 a11 a11
a31
– sottraiamo la prima equazione moltiplicata per dalla terza
a11
equazione.
– ...
an1
– sottraiamo la prima equazione moltiplicata per dalla n-sima
a11
equazione.
a11 a12 ... a1n x1 b1
(1) (1) (1)
0 a22 ... a2n x2 b2
.. .. .. .. =
.
. . ... . . ..
(1) (1) xn (1)
0 an2 ... ann bn
(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 suppo-
sto, 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 cor-
rispondente incognita non può essere eliminata attraverso quella
equazione nel procedimento di sostituzione all’indietro.
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 l’elimina-
zione di Gauss?
Si hanno le cosiddette strategie di pivoting:
x pivoting parziale
Mano mano che si va avanti nell’eliminazione, per i = 1, 2, . . . , n −
1 a ciascuno stadio si sceglie il più piccolo intero q tale che Si opera, dunque, un controllo sulla colonna
i-sima dalla posizione i fino alla posizione n,
( i −1) ( i −1)
| aqi | = max | a ji | andando a cercare il coefficiente massimo in
i ≤ j≤n modulo.
e si scambiano le righe i e q.
148 annamaria mazzia
e, infine, a
x1 + x2 + x3 = 1
0.0001x2 + 1x3 = 1
−9999x3 = −10000
e, infine,
x1 + x2 + x3 = 1
1x2 + 1x3 = 0
0.9999x3 = 1
appunti di calcolo numerico 149
1 0 0 a11 a12 a13 a11 a12 a13
PA = 0 0 1 a21 a22 a23 = a31 a32 a33
0 1 0 a31 a32 a33 a21 a22 a23
a11 a12 a13 1 0 0 a11 a13 a12
AP = a21 a22 a23 0 0 1 = a21 a23 a22
a31 a32 a33 0 1 0 a31 a33 a32
_
Quindi, il teorema LDU si può applicare alla matrice A o ad
un’opportuna matrice PA, se si effettua il pivoting parziale, o a PAQ
appunti di calcolo numerico 151
j −1
lij = aij − ∑ lim umj i = 1, 2, . . . n j = 1, 2, . . . , i
m =1
i −1
1
uij = ( aij − ∑ lim umj ) i = 1, 2, . . . , n − 1 j = i + 1, . . . n
lii m =1
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 all’indietro. Nell’eliminazione di Gauss noi ricaviamo
espressamente solo la U mentre le modi-
Lo sforzo computazionale maggiore è quindi quello per il calcolo
fiche operate sulla colonna dei termini noti
dei coefficienti di L e U. è equivalente al prodotto L−1 b (quindi da
LUx = b risolviamo Ux = L−1 b).
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
appunti di calcolo numerico 153
x indefinita altrimenti.
Osserviamo che non tutti gli autori richiedono
Si ha un’analoga definizione per matrici definite negative e semi- la simmetria per definire una matrice defi-
nita positiva, e distinguono tra matrici defi-
definite negative. nite positive e matrici simmetriche definite
positive.
Definizione 9.5.5 Una matrice A di dimensione n si dice
∑nj=1 a1j x j
n
∑ j=1 a2j x j
n n
= x1 x2 ... xm
.. = ∑ ∑ aij xi x j > 0
. i =1 j =1
n
∑ j=1 anj x j
Il seguente risultato ci permette di eliminare certe matrici dalla
classe delle matrici definite positive, se non soddisfano certi requisiti.
Basarsi sulla definizione per verificare che
una matrice sia o meno definita positiva può
essere molto difficile. Fortunatamente, ci so-
no molti criteri che ci permettono di dire se
una matrice è definita positiva oppure no.
154 annamaria mazzia
quadrata, e il risultato è un numero reale in virtù del fatto che gli ele-
menti 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
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
i −1
u
∑
u
l = t( a −
ii ii l2 ) ik i = 2, 3, . . . , n
k =1
j −1
1
l jj ij k∑
lij = (a − lik l jk ) j = 2, . . . , n i = j + 1, . . . , n
=1
9.6 Esercizi
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:
l11 0 0 l11 l21 l31 l2 l11 l21 l11 l31
11 2 + l2
l21 l22 0 0 l22 l32 = l21 l11 l21 l21 l31 + l22 l32
22
l31 l32 l33 0 0 l33 l31 l11 l31 l21 + l32 l22 2 + l2 + l2
l31 32 33
156 annamaria mazzia
2
l11 = 1 =⇒ l11 = 1
l21 l11 = 0 =⇒ l21 = 0
l31 l11 = 2 =⇒ l31 = 2
2 2
√
l21 + l22 = 4 =⇒ l22 = 4 − 0 = 2
l21 l31 + l22 l32 = 8 =⇒ l32 = 8/2 = 4
2 2 2
p √ √
l31 + l32 + l33 = 29 =⇒ l33 = 29 − 22 − 42 = 29 − 4 − 16 = 9 = 3
La matrice L è dunque
1 0 0
0 2 0
2 4 3
Svolgimento
!
0.2 1
a11 = 0.2 6= 0 det = 0.3 6= 0 det A = 0.375 6= 0
1 6.5
0.2 1 0.2 l11 0 0 1 u12 u13
A=1 6.5 1.75 = LU = l21 l22 0 0 1 u23
0 2 2.25 l31 l32 l33 0 0 1
appunti di calcolo numerico 157
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 1 5 1
L = 1 1.5 0 U = 0 1 0.5
0 2 1.25 0 0 1
(d) Da Ax = b si ha LUx = b.
Si pone Ux = y e si hanno i due sistemi da risolvere per sostituzio-
ne in avanti e all’indietro: Ly = b e Ux = y.
0.2 0 0 y1 2.8 y1 = 2.8/0.2 = 14
1 1.5 0 y2 = 19.25 =⇒ y2 = (19.25 − 14)/1.5 = 3.5
0 2 1.25 y3 10.75
y3 = (10.75 − 2 · 3.5)1.25 = 3
1 5 1 x1 14 x3 = 3
0 1 0.5 x2 = 3.5 =⇒ x2 = 3.5 − 3 · 0.5 = 2
0 0 1 x3 3
x1 = 14 − 3 − 5 · 2 = 1
Quindi x = (1, 2, 3) T .
(a) Calcolare k Ak∞ (norma massima per righe), k Ak1 (norma massima
per colonne) e norma F ( A) (norma di Frobenius).
Svolgimento
vale a dire
u11 u12 u13 2 0.5 0.5
l21 u11 l21 u12 + u22 l21 u13 + u23 = 0 1 −1
l31 u11 l31 u12 + l32 u22 l31 u13 + l32 u23 + u33 1 −0.5 10.5
Inoltre
l31 2 = 1 =⇒ l31 = 0.5
0.5 · 0.5 + l32 = −0.5 =⇒ l32 = −0.75
u33 = 9.5
1 0 0 y1 4.5 y1 = 4.5
Ly = b =⇒ 0 1 0 y2 = −1 =⇒ y2 = −1
0.5 −0.75 1 y3 31.5
y3 = 28.5
2 0.5 0.5 x1 4.5 x3 = 3 1
Ux = y =⇒ 0 1 −1 x2 = −1 =⇒ x2 = 2 =⇒ x = 2
0 0 9.5 x3 28.5
x1 = 1 3
Svolgimento
16 > | − 8| + |4| = 12
20 > | − 8| + |4| = 12
12.25 > |4| + |4| = 8
La matrice L è dunque
4 0 0
L = −2 4 0
1 1.5 3
HT = q
x kxk = 0 se e solo se x = 0
x kx + yk ≤ kxk + kyk
Le principali norme vettoriali sono:
x Norma assoluta (o norma l1 ), indicata con k · k1 : kxk1 = ∑in=1 | xi |
x
√
qNorma euclidea (o norma l 2 ), indicata con k · k 2 : k x k 2 = xT x =
n
∑ i =1 | x i | 2
Tra le norme 1, ∞ e 2 valgono le seguenti relazioni (che pongono
n
un’equivalenza 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 ∞
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
x k Ak = 0 se e solo se A = 0
x kαAk = |α|k Ak
x k A + Bk ≤ k Ak + k Bk
x k ABk ≤ k Akk Bk
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. Una definizione alternativa a quella che ab-
biamo dato per la norma naturale su matrici
n
Definizione 10.4.2 Se k · k è una norma su vettori in R , si defini- è data da k Ak = maxy6=0
k Ayk
. Infatti,
sce come norma naturale o indotta su matrici la norma data da k Ak = kyk
preso un qualunque vettore y 6= 0, si può
maxkxk=1 k Axk. considerare il vettore x = y/kyk che ha
norma unitaria. Allora (sfruttando le proprie-
Le norme di matrici indotte dalla norma 1 e dalla norma infinito tà delle norme su vettori e considerando la
su vettori sono: relazione che lega x a y) abbiamo
x
y
Norma 1: k Ak1 = max j ∑in=1 | aij | (data dal massimo sulla somma
k Ak = max k Axk = max
A
kyk
kxk=1 y6=0
delle colonne)
da cui
x Norma infinito: k Ak∞ = maxi ∑nj=1 | aij | (data dal massimo sulla k Ak = max
y6=0
k Ayk
kyk
somma delle righe)
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
r
∑ni=1 | aij |2 .
p
T A) = tr ( AA T ) =
j =1
Tra le norme naturali su matrici e le norme di vettori da cui sono
generate, è facile provare la seguente proposizione.
Proposizione 10.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
Ax = λx
appunti di calcolo numerico 165
( A − λI )x = 0
Una strada per localizzare gli autovalori di una matrice è data dal
teorema dei cerchi di Gershgorin.
166 annamaria mazzia
(λ − aii ) xi = ∑ aij x j
j 6 =i
xj xj
|λ − aii | = | ∑ aij | ≤ ∑ | aij |
j 6 =i
xi j 6 =i
xi
|λ − aii | ≤ ∑ |aij | = ri
j 6 =i
x
Quindi esistono n coefficienti α1 , α2 , . . . , αn
Se tutti gli n autovalori di una matrice A sono distinti, allora gli per cui x = α1 u(1) + α2 u(2) + . . . + αn u(n) .
Inoltre, per vettori linearmente indipenden-
n autovettori u(1) , u(2) , . . . u(n) sono linearmente indipendenti. ti vale il risultato: α1 u(1) + α2 u(2) + . . . +
ρ( A) = max |λ|
λ autovalore di A
Se λ è un numero complesso, si può scrivere
Quindi il raggio spettrale è il massimo, in modulo, degli autovalori come√λ = α + iβ, con α e β numeri reali e
di A. i = −1 la cosiddetta unità
p immaginaria.
Per il modulo si ha |λ| = α2 + β2 .
Possiamo ora definire la norma 2 su matrici indotta dalla norma 2
su vettori. Si può, infatti, provare che
G k Ak 2
p
= ρ ( A T A ).
Inoltre, per ogni norma naturale, vale il risultato
ρ( A) ≤ k Ak
lim ( Ak )ij = 0, i, j = 1, 2, . . . , n
k→∞
Si ha il seguente teorema.
4. ρ( A) < 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 Lo schema iterativo appena descritto è un
metodo stazionario (cioè non dipende dall’i-
M−1 , perchè risolviamo problemi del tipo Mp(k) = r(k) = b − Ax(k)
terazione k) e può essere visto come caso
in modo da porre x(k+1) = x(k) + p(k) . La matrice E = I − M−1 A è particolare di uno schema di punto fisso per
detta matrice di iterazione del metodo. Nel seguito, per semplicità, equazioni nonlineari: la funzione g tale che
x(k+1) = g(x(k) ) converga alla soluzione
poniamo q = M−1 b. del sistema Ax = b, è data da g(x) =
x + M−1 (b − Ax) o equivalentemente da
g(x) = Ex + q.
168 annamaria mazzia
10.6.1 Convergenza
e(k) = Ee(k−1)
e(k−1) = Ee(k−2)
e(k−2) = Ee(k−3)
.. ..
.=.
e(2) = Ee(1)
e(1) = Ee(0)
k e(k) k
≈ ρ( E)
k e ( k −1) k
k e (0) k 1
ρ ( E ) k k e (0) k ≈ =⇒ ρ( E)k ≈
10 10
Applicando il logaritmo in base 10 ad ambo i membri si ha
1
k log10 (ρ( E)) ≈ −1 =⇒ k ≈ −
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
− log10 (ρ( Ek ))
R = − log10 (ρ( E)) =
k
Osserviamo che, essendo ρ( E) < 1, nelle ipotesi in cui il metodo
converge, log10 (ρ( E)) < 0 e, di conseguenza, R > 0.
Se vogliamo ridurre l’errore iniziale di una certa quantità e, rifacen-
do i conti come prima, dobbiamo cercare l’intero 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
− log10 (e)
k log10 (ρ( E)) ≤ log10 (e) =⇒ −k log10 (ρ( E)) ≥ − log10 (e) =⇒ k ≥
R
Troviamo in questo modo quante iterazioni (il primo intero k che
verifica la relazione precedente) occorre fare per poter ridurre l’errore
iniziale di e.
10.6.3 I metodi
Il metodo di Jacobi (o degli spostamenti simultanei - o rilassamento Carl Gustav Jacob Jacobi (1804-1851) fu un
grande matematico tedesco. Tra i suoi nume-
simultaneo) si ha ponendo M = D da cui la matrice di iterazione
rosi studi ricordiamo quelli sulle funzioni ellitti-
diventa E J = I − D −1 A = I − D −1 ( L + D + U ) = − D −1 ( L + U ). che, sulla teoria dei numeri e sulla meccanica
Scrivendo lo schema iterativo per Jacobi, si ha, in forma matriciale: celeste.
x ( k +1) = E J x ( k ) + D −1 b
x ( k +1) = − D −1 ( L + U ) x ( k ) + D −1 b
172 annamaria mazzia
( L + D + U )x = b
si porta a secondo membro ( L + U )x
Dx = −( L + U )x + b
si moltiplicano ambo i membri per l’inversa della matrice D
x = − D −1 ( L + U ) x + D −1 b
si innesca il metodo iterativo considerando il vettore x
a primo membro all’iterazione k + 1
a secondo membro all’iterazione k
x ( k +1) = − D −1 ( L + U ) x ( k ) + D −1 b
( D −1 )ii (( L+U )x(k) )i
n
1
∑
( k +1)
bi − (k)
xi = aij x j
aii
j=1,j6=i
⇑
⇑
o, equivalentemente,
( Lx(k) )i
( D −1 )ii (Ux(k) )i
i − 1 n
1
∑ ∑
( k +1)
bi − (k) (k)
xi = aij x j − aij x j per i = 1, . . . , n
aii
j =1 j = i +1
⇑
⇑ ⇑
" #
i −1 n
1
aii i j∑
− ∑ aij x j
( k +1) ( k +1) (k)
xi = b − aij x j per i = 1, . . . , n
=1 j = i +1
( k +1) 1 h
(k) (k) (k)
i
x1 = b1 − a12 x2 + a13 x3 + . . . + a1n xn
a11
( k +1) 1 h
( k +1) (k) (k)
i
x2 = b2 − a21 x1 + a23 x3 + . . . + a2n xn
a22
.. ..
.= .
( k +1) 1 h
( k +1) ( k +1) ( k +1) (k) (k)
i
xi = bi − ai1 x1 + ai2 x2 + . . . aii−1 xi−1 + aii+1 xi+1 + . . . + ain xn
aii
.. ..
.= .
( k +1) 1 h
( k +1) ( k +1) ( k +1) ( k +1)
i
xn = bn − an1 x1 + an2 x2 + an3 x3 + . . . + ann−1 xn−1
ann
Usando il residuo, lo schema di Gauss-Seidel si scrive come
x ( k +1) = x ( k ) + ( D + L ) −1 r ( k )
" #
i −1 n
ω
aii i j∑
− ∑ aij x j
( k +1) (k) ( k +1) (k)
xi = (1 − ω ) x i + b − aij x j per i = 1, . . . , n
=1 j = i +1
176 annamaria mazzia
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.
x A è a diagonalmente dominante (per righe o per colonne) ed è D’altra parte, se A è diagonalmente dominan-
te in senso stretto | aii | > ∑ j6=i | aij | da cui
irriducibile. aij
∑ j6=i < 1 ovvero gli autovalori della ma-
aii
Si ha inoltre, questo risultato: trice E J sono minori di 1, da cui concludiamo
x
una matrice che è sempre triangolare), gli
La convergenza del metodo di rilassamento si ha, inoltre, per elementi della diagonale principale sono gli
elementi della matrice diagonale D ciascuno
A simmetrica con elementi diagonali positivi ed elementi extra-
dei quali moltiplicati per (1 − ω ). Perciò:
diagonali negativi o nulli, se e solo se A è definita positiva. det [(1 − ω ) D − ωU )] = (1 − ω )n det D.
Arriviamo perciò al risultato: det Eω =
(det D )−1 (1 − ω )n det D = (1 − ω )n .
Un altro interessante teorema mette in relazione il metodo di rilas- Inoltre, considerando λi autovalori della
samento con i metodi di Jacobi e di Gauss-Seidel, sia per quanto matrice Eω , per i = 1, 2, . . . , n e ρ( Eω )
il raggio spettrale, si ha | det Eω | =
riguarda la convergenza, sia per quanto riguarda il valore ottimale | ∏in=1 λi | ≤ ∏in=1 ρ( Eω ) = ρ( Eω )n da
del parametro ω, in corrispondenza di matrici A che godono della cui segue |(1 − ω )n | ≤ ρ( Eω )n , cioè
cosidetta proprietà A e che siano coerentemente ordinate. ρ( Eω ) ≥ |1 − ω |.
0 0 0 1
0 1 0 0
P= si ha
0 0 1 0
1 0 0 0
2 0 −1 0 !
0 2 −1 −1 2 0
PAP T = =⇒ D1 = D2 =
−1 −1 2 0 0 2
0 −1 0 2
Usando l’altra definizione, basta scegliere come insiemi S e T, gli
insiemi S = {1, 3} e T = {2, 4}.
_ Considerando la matrice dell’esempio prece-
dente, si può prendere il vettore di ordinamen-
Definizione 10.6.2 Una matrice si dice coerentemente ordinata in relazio- to q = (q1 , q2 , q3 , q4 ) = (1, 2, 3, 4). Si veri-
fica infatti, per a12 , q2 − q1 = 2 − 1 = 1; per
ne ad un vettore di ordinamento q, di lunghezza n, se per ogni coefficiente a21 , q1 − q2 = 1 − 2 = −1 e così via per
aij non nullo, con i 6= j, si verifica: gli altri elementi non nulli. Quindi la matrice è
x se j > i allora q − q = 1
j i
coerentemente ordinata.
x se j < i allora q − q = −1
j i
10.7 Esercizi
10.7.1
Esercizio Sia
dato il lineare Ax = b, dove
sistema
8 2 6 30
A = 7 5 0 b = 34
1 0 5 7
Svolgimento
8 2 6
7 5 0
1 0 5
−µ −1/4 −3/4
3 1 1 7
−7/5 −µ 0 = − µ3 + · µ + · µ = 0
4 5 4 5
−1/5 0 −µ
3 7
Si ha: 0 = det ( E J − µI ) = −µ3 + (+ )µ,
20 20
√ √
Una radice è µ = 0, e le altre due sono µ = ± 1/2 = ± 0.5 =
0.707106781.
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
Lo schema di Jacobi è:
Partendo dal vettore x (0) con
( k +1) 1 (k) (k)
x1 = (30 − 2x2 − 6x3 ) componenti tutte nulle, abbiamo
8
k x(1k) x(2k) x(3k)
(b)
1
( k +1) (k)
x2 = (34 − 7x1 ) 0 0 0 0
5
1 3.75 6.8 1.4
x ( k +1) = 1 (7 − x ( k ) )
2 1.0 1.55 0.65
3 5 1
Lo schema di Seidel è:
Partendo dal vettore x (0) con
x (k+1) = 1 (30 − 2x (k) − 6x (k) )
componenti tutte nulle, abbiamo
1 8 2 3
(k) (k) (k)
k x1 x2 x3
1
( k +1) ( k +1)
x2 = (34 − 7x1 ) 0 0 0 0
5
1 3.75 1.55 0.65
x ( k +1) = 1 (7 − x ( k +1) )
2 2.875 2.775 0.825
3 5 1
10.7.2
Esercizio il sistema Ax = b con
Dato
5 0 10
A = 0 3 15
2 1 α
Svolgimento
appunti di calcolo numerico 181
3
Ricaviamo gli autovalori µ = 0 e µ = ± √ .
α
3
Perchè ci sia convergenza deve dunque essere √ < 1 ovvero
√ α
3 < α. Ricaviamo la relazione α > 9.
2
(b) Dalla relazione dell’ωopt , ωopt = q , 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:
2 3 1 √ −8 9 81
√ = =⇒ = 1 − 9/α =⇒ = − =⇒ α = = 10.125
1+ 1 − 9/α 2 3 9 α 8
3
Da ωopt = = 1.5 segue λopt = ωopt − 1 = 0.5, da cui R =
2
− log10 (λopt ) = 0.3010299957.
10.7.3
Esercizio Dato Ax = b dove:
il sistemalineare
6 1 3 9
A = 1 8 2 b=3
4 3 10 14
Svolgimento
−0.403125000000000 −7.836588541666667E − 002
d2 = x2 − x1 = −0.135546875000000 e d3 = x3 − x2 = −4.068277994791664E − 002
0.201914062500000 4.355118815104175E − 002
11. Che relazione c’è tra gli autovalori di una matrice e la sua traccia
e determinante?
14. Che relazione esiste tra il raggio spettrale di una matrice e una
norma naturale su matrice?
36. Abbiamo studiato alcune matrici che sono sia bicicliche sia coe-
rentemente ordinate: quali sono?
All’inizio del ’900, van der Pol studiò fenomeni non lineari e Balthasar van der Pol (1889-1959) fu un fisico
e matematico olandese. Nel 1916 lavorò per
propose l’equazione differenziale
un anno con l’ingegnere John Ambrose Fle-
ming a Londra (Fleming aveva già inventato il
y00 (t) + e(y2 (t) − 1)y0 (t) + y(t) = 0 diodo nel 1904). Si trasferì successivamente
a Cambridge e iniziò una collaborazione con
Questa equazione governa l’intensità di corrente in un circuito oscil- John Joseph Thomson al Cavendish Labora-
tory (Thomson aveva scoperto l’elettrone nel
lante a triodo e viene utilizzata nello studio di circuiti che contengono 1897). Qui divenne amico di Edward Apple-
valvole termoioniche, i cosiddetti tubi a vuoto, come il tubo catodico ton che, nel 1947, ricevette il premio Nobel
del televisore o il magnetron nei forni a microonde. La quantità per la fisica per i suoi contributi alla cono-
scenza della ionosfera – studi fatti insieme a
e indica l’intensità dello smorzamento non lineare: quanto più e è van der Pol. La loro collaborazione riguardò
elevato tanto più il sistema perde energia rapidamente. anche lo studio di fenomeni non lineari usan-
do circuiti triodi per verificare le loro teorie.
L’equazione differenziale del secondo ordine si può ricondurre Quando van del Pol rientrò in Olanda, conti-
ad un sistema di equazioni differenziali del primo ordine. Ponendo nuò a occuparsi di ottica, elettromagnetismo,
u = (u1 , u2 ) = (y, y0 ) si ha onde radio e fisica atomica. Il nome di van der
Pol è associato con l’equazione differenziale
! ! che porta il suo nome. Questa equazione ap-
u10 u2 parve per la prima volta sul suo articolo On
=
u20 −e((u1 )2 − 1)u2 − u1 relaxation oscillation pubblicato sulla rivista
Philosophical Magazine nel 1926.
h2 00
f ( x0 − h ) = f ( x0 ) − h f 0 ( x0 ) + f (ξ )
2
Portiamo a primo membro f 0 ( x0 ), ottenendo
f ( x0 ) − f ( x0 − h) h 00
f 0 ( x0 ) = + f (ξ )
h 2
h2 00
Se trascuriamo il termine f (ξ ) abbiamo una formula che appros-
2
0
sima f ( x0 ) e che si chiama backward difference formula, formula delle
differenze all’indietro (stiamo usando infatti il punto x0 − h).
h2 00
f ( x0 + h ) = f ( x0 ) + h f 0 ( x0 ) + f (ξ )
2
da cui
f ( x0 + h) − f ( x0 ) h 00
f 0 ( x0 ) = − f (ξ )
h 2
f ( x0 + h ) − f ( x0 )
La forward formula è f 0 ( x0 ) =
h
appunti di calcolo numerico 187
h2 00 h3 000
f ( x0 + h ) = f ( x0 ) + h f 0 ( x0 ) + f ( x0 ) + f (ξ 1 )
2 6
h2 00 h3 000
f ( x0 − h ) = f ( x0 ) − h f 0 ( x0 ) + f ( x0 ) − f (ξ 2 )
2 6
f ( x0 + h) − f ( x0 − h) h2 000
f 0 ( x0 ) = − f (ξ )
2h 6
Se trascuriamo il termine che dipende da h2 otteniamo un’approssi-
mazione di f 0 ( x0 ).
f ( x0 + h ) − f ( x0 − h )
La formula centrata è data da f 0 ( x0 ) =
2h
1 h4
f 0 ( x0 ) = ( 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.
188 annamaria mazzia
1
f 0 ( x0 ) ≈ ( f ( x0 − 2h) − 8 f ( x0 − h) + 8 f ( x0 + h) − f ( x0 + 2h))
12h
y0 = −y + t, t≥0
Per risolvere il sistema, possiamo usare metodi che vanno bene per
risolvere equazioni differenziali del primo ordine. La prima compo-
nente della soluzione u1 corrisponde alla posizione y dell’equazione
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 n +1 n
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 l’ODE.
Per semplicità noi studieremo il caso di una singola equazione
scalare, n = 1. Ma l’approccio è del tutto simile nel caso di sistemi di
equazioni del primo ordine.
Sia data l’ODE
y( a) = y a .
Con il metodo di Eulero esplicito applichiamo la formula di Taylor Leonhard Euler (1707-1783) fu un matemati-
co svizzero. Fu studente di Johann Bernoulli
(del secondo ordine) alla funzione y(t), di centro ti , in modo da poter
che comprese le sue grandi potenzialità e
successivamente approssimare la derivata prima y0 (ti ): favorì i suoi studi. Eulero è noto soprattutto
per i suoi contributi nel campo della geome-
(t − ti )2 00
y ( t ) = y ( ti ) + ( t − ti ) y 0 ( ti ) + y (ξ i ) tria, della teoria dei numeri, delle equazioni
2 differenziali, del calcolo delle variazioni. È
lui che introdusse il simbolo f ( x ) per indica-
(t − ti )2 00
La quantità y (ξ i ) è il resto della formula di Taylor con ξ i un re le funzioni, e per la base naturale, i per
2 la radice quadrata di −1, di π , il simbolo di
punto opportuno nel segmento di estremi t e ti . sommatoria ∑ e altri ancora.
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:
h2 00
y(ti+1 ) = y(ti ) + hy0 (ti ) + y (ξ i )
2
Esplicitando y0 (ti ) rispetto agli altri termini si ha:
y(ti+1 ) − y(ti ) h 00
y 0 ( ti ) = − y (ξ i )
h 2
Ora si sostituisce il valore trovato per y0 (ti ) nella ODE y0 =
f (t, y(t)) per t = 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 so-
2
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 ).
y1 = y0 + f ( t0 , y0 )
y2 = y1 + f ( t1 , y1 )
.. ..
.= .
appunti di calcolo numerico 191
Rt
Al secondo membro, approssimiamo t f (t, y(t)) dt mediante il valo-
0
re (t − t0 ) f (t0 , y(t0 )) (approssimiamo la f mediante la retta f (t0 , y(t0 ))).
Abbiamo:
per cui il valore che otteniamo per il tempo ti+1 è tangente alla
traiettoria della soluzione di questo IVP.
(t − ti+1 )2 00
y ( t ) = y ( t i +1 ) + ( t − t i +1 ) y 0 ( t i +1 ) + y (ξ i )
2
Per t = ti , si ha t − ti+1 = ti − ti+1 = ti − (ti + h) = −h. Sostituendo,
abbiamo:
h2 00
y(ti ) = y(ti+1 ) − hy0 (ti+1 ) + y (ξ i )
2
Otteniamo quindi
y(ti+1 ) − y(ti ) h 00
y 0 ( t i +1 ) = + 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
h 00
Trascurando il termine del resto di Taylor y (ξ i ) abbiamo:
2
y i +1 − y i
= f (ti+1 , yi+1 ))
h
y1 = y0 + h f (t1 , y1 ) = 1 − 0.5y31
y 0 = − y2
y (0) = 1
Partendo da y0 = 1 si ricava:
y1 = 1 − 0.1(12 ) = 0.9
y2 = 0.9 − 0.1(0.92 ) = 0.819
1
Per confronto, calcoliamo la soluzione esatta y(t) = , 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
y1 = y0 + h f (t1 , y1 ) = 1 − 0.1(y21 )
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:
h
Si ha la formula di Crank-Nicolson: yi+1 = yi + [ f (ti , yi ) + f (ti+1 , yi+1 )]
2
y i +1 − y i = h f ( t i , y i )
y i +1 − y i = h f ( t i +1 , y i +1 )
h h
y i +1 − y i = [ f (ti , yi ) + f (ti+1 , yi+1 )] =⇒ yi+1 = yi + [ f (ti , yi ) + f (ti+1 , yi+1 )]
2 2
ε i = y ( ti ) − yi .
Definizione 11.7.3 L’errore globale dello schema numerico è dato dal con-
tributo dell’errore totale di troncamento e dell’errore totale di arrotondamen-
to
ei = y ( t i ) − y i = ε i + ε i
h f 00 (ξ i , τi ) 3
y ( t i +1 ) − y ( t i ) = [ 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 197
Perciò
h y000 (ξ i ) 3
y ( t i +1 ) − y ( t i ) = [ f (ti , y(ti )) + f (ti+1 , y(ti+1 ))] − h
2 12
y ( t i +1 ) − y ( t i ) 1 y000 (ξ i ) 2
di = − [ f (ti , y(ti )) + f (ti+1 , y(ti+1 ))] = − h = O(h2 )
h 2 12
| e i | ≤ M | e0 |
y0 = −λy
y1 = (1 − h ) y0
y2 = (1 − h ) y1 = (1 − h )2 y0
..
.
y i = (1 − h ) y i −1 = (1 − h ) i y 0
ln (1 − h)
Di conseguenza limh→0 e h = e −1
Allora
1 t
Quindi
y0
y1 =
(1 + hλ)
y1 y0
y2 = =
(1 + hλ) (1 + hλ)2
y2 y0
y3 = =
(1 + hλ) (1 + hλ)3
..
.
y i −1 y0
yi = =
(1 + hλ) (1 + hλ)i
In tal caso
1 −ih
y0
lim yi = lim = lim y0 (1 + hλ)−i = y0 (1 + hλ) h = y0 e−tλ = y(t)
h →0 h→0 (1 + hλ )i h →0
i →+∞ i →+∞ i →+∞
(i passaggi sono del tutto simili a quelli visti per Eulero esplicito).
Abbiamo provato la convergenza.
y0
Per la stabilità, dalla soluzione numerica yi = , 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.
Ma
1 1 2 − hλ
2 − hλ
h = e h ln ( 2 + hλ )
2 + hλ
Nel fare il limite per h → 0 e i → +∞ della quantità che si trova
all’esponente, applichiamo l’Hôpital 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
2 − hλ
ln ( )
lim 2 + hλ = lim 2 + hλ −4λ = lim
−4λ
= −λ
h →0 h h→0 2 − hλ (2 + hλ )2 h→0 (2 + hλ )(2 − hλ )
i →+∞ i →+∞ i →+∞
Quindi
ih
1
i
2 − hλ 2 − hλ h
−tλ
lim yi = lim y0 = lim y0 = y0 e = y(t)
h →0 h →0 2 + hλ h →0 2 + hλ
i →+∞ i →+∞ i →+∞
La convergenza è provata.
2 − λh i
Per la stabilità, si vede che la soluzione numerica è yi = y0 .
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.
ei+1 = ei + hλei
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 +∞. . .
_
11.10 Esercizi
Svolgimento
Per provare la stabilità del metodo dobbiamo verificare che l’errore
iniziale si mantiene limitato per valori crescenti del tempo.
Il metodo di Eulero esplicito applicato all’ODE del problema
diventa
10. Cosa significa che un metodo per risolvere equazioni alle derivate
ordinarie è un metodo stabile?