A01 · La risoluzione dei modelli non può prescindere dall’uso di metodi di calcolo numerico,...

21
A

Transcript of A01 · La risoluzione dei modelli non può prescindere dall’uso di metodi di calcolo numerico,...

A

Enza PellegrinoElisabetta Santi

Calcolo numericoMetodi ed applicazioni

usando Matlab

Copyright © MMXIVARACNE editrice S.r.l.

[email protected]

via Raffaele Garofalo, /A–B Roma()

----

I diritti di traduzione, di memorizzazione elettronica,di riproduzione e di adattamento anche parziale,

con qualsiasi mezzo, sono riservati per tutti i Paesi.

Non sono assolutamente consentite le fotocopiesenza il permesso scritto dell’Editore.

I edizione: settembre

5

Indice

PREFAZIONE............................................................................................ 9

ALCUNI CONCETTI DI BASE DEL CALCOLO NUMERICO ............................. 11

1.1 INTRODUZIONE ........................................................................................ 11 1.2 I SISTEMI DI NUMERAZIONE ........................................................................ 15 1.3 LA RAPPRESENTAZIONE DEI NUMERI SUL CALCOLATORE ................................... 16 1.4 ARROTONDAMENTO DI UN NUMERO REALE .................................................. 21 1.5 OPERAZIONI DI MACCHINA IN ARITMETICA FLOATING POINT ............................ 25 1.6 ERRORI NELLA RISOLUZIONE DEI PROBLEMI ................................................... 29

COMPLEMENTI DI ALGEBRA LINEARE ..................................................... 47

2.1 SPAZI VETTORIALI ..................................................................................... 47 2.2 I VETTORI DI nn . LE NORME VETTORIALI ..................................................... 53 2.3 LE MATRICI. LE NORME DI MATRICI .............................................................. 56 2.4 ALCUNI RICHIAMI SU AUTOVALORI ED AUTOVETTORI ...................................... 67 2.5 MATRICI CON CARATTERISTICHE PARTICOLARI ............................................... 78

SISTEMI LINEARI .................................................................................... 83

3.1 CONCETTI GENERALI ................................................................................. 83 3.2 CONDIZIONAMENTO DI UN SISTEMA LINEARE ................................................ 88 3.3 METODI DIRETTI: METODO DI GAUSS .......................................................... 96 3.4 FATTORIZZAZIONE DI UNA MATRICE ........................................................... 105 3.4.1 Fattorizzazione di Gauss: A = L U� ................................................ 106 3.4.2 Fattorizzazione di Cholesky ............................................................ 110 3.4.3 Fattorizzazione Q R� ..................................................................... 112 3.4.4 Fattorizzazione SVD ........................................................................ 114 3.5 RAFFINAMENTO ITERATIVO ...................................................................... 118

Indice6 Indice

3.6 SISTEMI RETTANGOLARI .......................................................................... 121 3.7 GLI OPERATORI MATLAB \ , / ................................................................ 131 3.8 METODI ITERATIVI (INDIRETTI) DI TIPO PICARD ............................................ 134 3.8.1 Generalità ....................................................................................... 134 3.8.2 Criteri d’arresto .............................................................................. 139 3.8.3 I metodi di Jacobi, Gauss-Seidel e le loro generalizzazioni ............ 143 3.8.4 Altri risultati di convergenza .......................................................... 147

EQUAZIONI E SISTEMI NON LINEARI ..................................................... 155

4.1 CONCETTI GENERALI. CASO MONODIMENSIONALE ....................................... 155 4.2 APPROSSIMAZIONE DELLE SOLUZIONI. ORDINE DI CONVERGENZA ................... 165 4.3 METODO DELLA BISEZIONE (O DI BIPARTIZIONE O DICOTOMICO) .................... 167 4.4 METODI ITERATIVI AD UN PUNTO (O METODI DI PUNTO FISSO)....................... 171 4.5 METODO DI NEWTON O DELLE TANGENTI .................................................. 189 4.6 RADICI MULTIPLE. RADICI VICINE .............................................................. 201 4.6.1 Radici multiple ................................................................................ 201 4.6.2 Radici molto vicine ......................................................................... 203 4.7 CRITERI DI ARRESTO. STIMA DELL’ORDINE E DELLA COSTANTE ASINTOTICA ....... 207 4.8 LE FUNZIONI MATLAB FZERO E ROOTS .................................................... 212 4.8.1 La function fzero ............................................................................ 212 4.8.2 La function roots ed altre function relative ai polinomi ............... 215 4.9 SISTEMI NON LINEARI ............................................................................. 218 4.9.1 Metodo del punto fisso .................................................................. 218 4.9.2 Metodo di Newton ......................................................................... 226 4.10 LA FUNZIONE DI MATLAB FSOLVE............................................................ 231

PROBLEMI DIFFERENZIALI DI CAUCHY .................................................. 235

5.1 INTRODUZIONE ...................................................................................... 235 5.2 IL METODO DI EULERO ............................................................................ 254 5.3 GENERALITÀ SUI METODI NUMERICI .......................................................... 256 5.4 ERRORI DI TRONCAMENTO, CONSISTENZA, CONVERGENZA ............................ 263 5.5 I METODI DI RUNGE-KUTTA ESPLICITI A R STADI ........................................... 268 5.6 CONVERGENZA DEI METODI ONE-STEP ESPLICITI. ......................................... 273 5.7 CENNO SUI METODI DI RUNGE-KUTTA IMPLICITI A R STADI ............................ 285

6 Indice

Indice6 Indice

3.6 SISTEMI RETTANGOLARI .......................................................................... 121 3.7 GLI OPERATORI MATLAB \ , / ................................................................ 131 3.8 METODI ITERATIVI (INDIRETTI) DI TIPO PICARD ............................................ 134 3.8.1 Generalità ....................................................................................... 134 3.8.2 Criteri d’arresto .............................................................................. 139 3.8.3 I metodi di Jacobi, Gauss-Seidel e le loro generalizzazioni ............ 143 3.8.4 Altri risultati di convergenza .......................................................... 147

EQUAZIONI E SISTEMI NON LINEARI ..................................................... 155

4.1 CONCETTI GENERALI. CASO MONODIMENSIONALE ....................................... 155 4.2 APPROSSIMAZIONE DELLE SOLUZIONI. ORDINE DI CONVERGENZA ................... 165 4.3 METODO DELLA BISEZIONE (O DI BIPARTIZIONE O DICOTOMICO) .................... 167 4.4 METODI ITERATIVI AD UN PUNTO (O METODI DI PUNTO FISSO)....................... 171 4.5 METODO DI NEWTON O DELLE TANGENTI .................................................. 189 4.6 RADICI MULTIPLE. RADICI VICINE .............................................................. 201 4.6.1 Radici multiple ................................................................................ 201 4.6.2 Radici molto vicine ......................................................................... 203 4.7 CRITERI DI ARRESTO. STIMA DELL’ORDINE E DELLA COSTANTE ASINTOTICA ....... 207 4.8 LE FUNZIONI MATLAB FZERO E ROOTS .................................................... 212 4.8.1 La function fzero ............................................................................ 212 4.8.2 La function roots ed altre function relative ai polinomi ............... 215 4.9 SISTEMI NON LINEARI ............................................................................. 218 4.9.1 Metodo del punto fisso .................................................................. 218 4.9.2 Metodo di Newton ......................................................................... 226 4.10 LA FUNZIONE DI MATLAB FSOLVE............................................................ 231

PROBLEMI DIFFERENZIALI DI CAUCHY .................................................. 235

5.1 INTRODUZIONE ...................................................................................... 235 5.2 IL METODO DI EULERO ............................................................................ 254 5.3 GENERALITÀ SUI METODI NUMERICI .......................................................... 256 5.4 ERRORI DI TRONCAMENTO, CONSISTENZA, CONVERGENZA ............................ 263 5.5 I METODI DI RUNGE-KUTTA ESPLICITI A R STADI ........................................... 268 5.6 CONVERGENZA DEI METODI ONE-STEP ESPLICITI. ......................................... 273 5.7 CENNO SUI METODI DI RUNGE-KUTTA IMPLICITI A R STADI ............................ 285

Indice 7

5.8 METODI MULTISTEP LINEARI..................................................................... 286 5.9 ANALISI DEI METODI MULTISTEP................................................................ 295 5.9.1 Consistenza ..................................................................................... 296 5.9.2 Zero stabilità ................................................................................... 300 5.9.3 Propagazione dell’errore. Assoluta stabilità .................................. 304 5.10 METODI DI TIPO PREDICTOR-CORRECTOR ................................................. 310 5.11 PROBLEMI STIFF ................................................................................... 315 5.12 ODE SUITE ........................................................................................... 321

APPROSSIMAZIONE DI DATI E FUNZIONI .............................................. 329

6.1 INTRODUZIONE ...................................................................................... 329 6.2 INTERPOLAZIONE POLINOMIALE ................................................................ 333 6.3 ALCUNE PROPRIETÀ DELLE DIFFERENZE DIVISE ............................................. 343 6.4 QUESTIONI NUMERICHE ED ALGORITMI ...................................................... 347 6.5 L’ERRORE NELL’INTERPOLAZIONE POLINOMIALE ........................................... 351 6.6 FUNZIONI SPLINE INTERPOLANTI ............................................................... 360 6.7 LE FUNCTION MATLAB PER L’APPROSSIMAZIONE DI DATI E FUNZIONI ............. 371 6.8 APPROSSIMAZIONE DISCRETA AI MINIMI QUADRATI ...................................... 377 6.9 APPROSSIMAZIONE POLINOMIALE AI MINIMI QUADRATI ................................ 382

BIBLIOGRAFIA ..................................................................................... 391

7Indice

9

Prefazione

Il Calcolo Numerico è quel ramo della Matematica che sviluppa, analizza ed applica metodi atti a risolvere i modelli matematici propo-sti nei tempi desiderati e con la precisione richiesta. La simulazione matematica è divenuta infatti, nel corso degli ultimi anni, strumento indispensabile per lo studio delle scienze applicate ed in particolare di fenomeni fisici, a volte sostituendo la stessa sperimentazione fisica, con notevoli vantaggi in termini di sicurezza, costi e tempi.

La risoluzione dei modelli non può prescindere dall’uso di metodi di calcolo numerico, anche quando è nota la soluzione analitica, so-prattutto quando il modello è complicato e la rappresentazione della soluzione risulta inutilizzabile o troppo costosa in termini di operazio-ni aritmetiche.

Il testo è rivolto a studenti delle lauree in Ingegneria, Matematica e Fisica che affrontano per la prima volta lo studio del Calcolo Numeri-co. Vengono affrontate le problematiche che ispirano la costruzione dei metodi numerici di base che sono spesso passi intermedi nella ri-soluzione di modelli più complessi; si esaminano le proprietà di stabi-lità ed accuratezza degli algoritmi, i vantaggi e gli svantaggi di un me-todo.

Ogni capitolo è corredato di esempi ed esercizi, atti a chiarire la teoria trattata ed a permettere allo studente di acquisire le conoscenze necessarie per decidere sulle metodologie numeriche da utilizzare. Es-si vengono risolti utilizzando il programma MATLAB che presenta semplicità di approccio ed ampia diffusione.

10 Prefazione

Il contenuto del testo si sviluppa su sei capitoli. Il primo è dedicato all’introduzione dei concetti generali e degli elementi di base dell’aritmetica discreta; il secondo è dedicato ai richiami di algebra li-neare. I successivi capitoli sono dedicati alla risoluzione di sistemi li-neari (Capitolo III), di equazioni e sistemi non lineari (Capitolo IV), di problemi differenziali di Cauchy alle derivate ordinarie (Capitolo V); il Capitolo VI, infine, tratta dell’approssimazione di dati e funzioni.

Chi desidera conoscere il codice MATLAB delle function utilizzate nei vari capitoli del testo, può rivolgere la richiesta ad uno dei seguen-ti indirizzi:

[email protected]; [email protected]. L’Aquila, luglio 2014

Enza Pellegrino Elisabetta Santi

10 Prefazione

Il contenuto del testo si sviluppa su sei capitoli. Il primo è dedicato all’introduzione dei concetti generali e degli elementi di base dell’aritmetica discreta; il secondo è dedicato ai richiami di algebra li-neare. I successivi capitoli sono dedicati alla risoluzione di sistemi li-neari (Capitolo III), di equazioni e sistemi non lineari (Capitolo IV), di problemi differenziali di Cauchy alle derivate ordinarie (Capitolo V); il Capitolo VI, infine, tratta dell’approssimazione di dati e funzioni.

Chi desidera conoscere il codice MATLAB delle function utilizzate nei vari capitoli del testo, può rivolgere la richiesta ad uno dei seguen-ti indirizzi:

[email protected]; [email protected]. L’Aquila, luglio 2014

Enza Pellegrino Elisabetta Santi

11

Capitolo I

Alcuni concetti di base del Calcolo Numerico

Desideriamo porre, in questo capitolo le basi per poter comprende-re meglio le potenzialità del Calcolo Numerico, conoscere come ana-lizzare i risultati evidenziandone soprattutto gli errori, per capire co-me evitarli e, se ciò non fosse possibile, come ridurli al minimo.

1.1 Introduzione Molti problemi delle Scienze Applicate, dalla Fisica all’Economia

alla Medicina, possono essere affrontati e risolti attraverso lo studio del corrispondente modello matematico che in generale si ottiene dan-do una formulazione matematica del problema reale mediante oppor-tune procedure d’astrazione e semplificazione.

Modello matematico è una relazione in termini logico-matematici

tra le variabili caratteristiche del problema in esame. La risoluzione del problema matematico così ottenuto, fornirà in

generale, le informazioni riguardanti l’evoluzione del fenomeno dopo avere effettuato una validazione del risultato ovvero un confronto con la realtà.

Un operatore di Scienze Applicate procederà secondo il seguente

schema:

12 Calcolo Numerico: metodi ed applicazioni usando Matlab

Come si può osservare dallo schema, il Calcolo Numerico (o Ana-

lisi Numerica o Calcolo Scientifico) interviene nella risoluzione e

nell’esame della soluzione ottenuta.

Possiamo dire che:

Obiettivo del CALCOLO NUMERICO è trovare gli algoritmi che

risolvono un problema matematico nel minor tempo possibile e con la

massima accuratezza.

La necessità di operare in tal modo è determinata dal fatto che mol-

to spesso i problemi da trattare non possono essere risolti con metodi

esclusivamente analitici; a volte poi, pur possedendo la soluzione in

forma analitica essa è difficile da trattare in ulteriori operazioni quali

ad esempio l’integrazione, e molto spesso inoltre, ha notevole impor-

tanza la conoscenza dei valori numerici che essa assume per dati asse-

gnati.

Consideriamo i seguenti due esempi legati alla dinamica di una po-

polazione.

Un semplice modello di crescita di una popolazione può essere ot-

tenuto considerando tale crescita dipendente dal numero di nascite n(t)

e dal numero delle morti m(t), per unità di tempo.

Per semplificare ulteriormente, indicando con y(t) il numero di in-

dividui della popolazione al tempo t, supponiamo che n(t) e m(t) siano

proporzionali ad esso, ossia n(t) = y(t), m(t) = y(t) con e va-

lori costanti chiamati rispettivamente tasso di natalità e di mortalità.

12 Calcolo Numerico: metodi ed applicazioni usando Matlab

Come si può osservare dallo schema, il Calcolo Numerico (o Ana-

lisi Numerica o Calcolo Scientifico) interviene nella risoluzione e nell’esame della soluzione ottenuta.

Possiamo dire che: Obiettivo del CALCOLO NUMERICO è trovare gli algoritmi che

risolvono un problema matematico nel minor tempo possibile e con la massima accuratezza.

La necessità di operare in tal modo è determinata dal fatto che mol-

to spesso i problemi da trattare non possono essere risolti con metodi esclusivamente analitici; a volte poi, pur possedendo la soluzione in forma analitica essa è difficile da trattare in ulteriori operazioni quali ad esempio l’integrazione, e molto spesso inoltre, ha notevole impor-tanza la conoscenza dei valori numerici che essa assume per dati asse-gnati.

Consideriamo i seguenti due esempi legati alla dinamica di una po-

polazione. Un semplice modello di crescita di una popolazione può essere ot-

tenuto considerando tale crescita dipendente dal numero di nascite n(t) e dal numero delle morti m(t), per unità di tempo.

Per semplificare ulteriormente, indicando con y(t) il numero di in-dividui della popolazione al tempo t, supponiamo che n(t) e m(t) siano proporzionali ad esso, ossia n(t) = � y(t), m(t) = � y(t) con � e � va-lori costanti chiamati rispettivamente tasso di natalità e di mortalità.

Alcuni concetti di base del Calcolo Numerico 13

Misurando quindi con � �y t� la variazione del numero di individui-nell’unità di tempo, otteniamo l’equazione differenziale lineare ed omogenea proposta da Malthus nel 1798 � � � � � � � �y t y t y t� � �� � � � , � � �� � è detto tasso di crescita.

Si può considerare quindi, il seguente problema: conoscendo il nu-

mero di individui y(0) = 0 ,y al tempo t = 0, e sapendo che al tempo t

= ,t tale numero è diventato y � �t , si individui il valore del tasso di crescita � .

La soluzione si ottiene allora, risolvendo il problema di Cauchy

(1.1.1) 0 0

'( ) ( )(0) 0

y t y ty y y

���� � ��

;

essa coincide con la funzione 0( ) ty t y e�� . Il richiesto valore di � si determina pertanto, risolvendo

l’equazione � � 0ty t y e�� la cui soluzione è:

(1.1.2) � �0

1 ln .y t

t y�

� �� � �

� �

La soluzione del problema in questo caso, è ottenuta nella forma chiusa (analitica) (1.1.2).

Si supponga ora, che la popolazione non sia isolata ma sia soggetta a fenomeni di immigrazione od emigrazione nell’unità di tempo, la variazione � �y t� soddisfa quindi la relazione ( ) ( ) ( ) ( ),y t n t m t s t� � � dove s(t) indica in questo caso, il numero di individui che si aggiun-gono nell’unità di tempo.

Consideriamo allora un problema analogo al precedente ma relativo al diverso problema di Cauchy:

(1.1.3) 0 0

'( ) ( ) ( )(0) 0

y t y t s ty y y

�� �� � ��

.

Supponiamo anche, s(t) = d; il valore di s(t) è perciò costante. La soluzione del problema (1.1.3) è:

13Alcuni concetti di base del Calcolo Numerico

14 Calcolo Numerico: metodi ed applicazioni usando Matlab

� � 0 0( ) 1t t td d dy t e e y y e� � �

� � ��� � � �� � � � � � �� �� �� � � �

e per determinare ,� si dovrà risolvere l’equazione non lineare

� �y t � 0td dy e�

� �� �� �� �� �

la cui soluzione, diversamente dal caso pre-

cedente, non può essere ottenuta in forma chiusa, come combinazione di funzioni elementari.

Da questo semplice esempio si deduce quindi la necessità di utiliz-zare opportune procedure basate su tecniche che risultano efficaci in più situazioni, come ad esempio i procedimenti iterativi.

Dal momento che uno stesso problema può essere risolto con più metodi numerici, la scelta di un metodo sarà dettata sia dalle sue carat-teristiche (efficienza, velocità di convergenza, ecc.), che dagli obiettivi che si vogliono raggiungere (approssimazione più o meno raffinata, costi computazionali ecc.) ed è affidata anche all’abilità ed esperienza di chi deve risolvere il problema.

Tale scelta è quindi il risultato di: un’attenta analisi del problema; un’analisi comparativa dei diversi metodi numerici disponibili,

sulla base del loro costo e della loro accuratezza. Ai metodi numerici come si è già detto, si associano gli algoritmi:

descrizioni complete e ben definite di operazioni logiche ed aritmeti-che che consentono di ottenere in un numero finito di passi i risultati y dai dati x.

Infine, componente imprescindibile di un progetto di algoritmo è la

disponibilità di un calcolatore e l’uso di un linguaggio di programma-zione.

In ciascuna delle fasi che conducono dal problema reale alla deter-minazione dei risultati, si introducono errori che possono essere classi-ficati e, per quanto possibile, valutati, ridotti o tenuti in debito conto all’atto della validazione del modello (valutazione della sua attendibi-lità).

Prima di intraprendere la loro trattazione è conveniente premettere dei richiami sui sistemi di numerazione e rappresentazione dei numeri.

14 Calcolo Numerico: metodi ed applicazioni usando Matlab

14 Calcolo Numerico: metodi ed applicazioni usando Matlab

� � 0 0( ) 1t t td d dy t e e y y e� � �

� � ��� � � �� � � � � � �� �� �� � � �

e per determinare ,� si dovrà risolvere l’equazione non lineare

� �y t � 0td dy e�

� �� �� �� �� �

la cui soluzione, diversamente dal caso pre-

cedente, non può essere ottenuta in forma chiusa, come combinazione di funzioni elementari.

Da questo semplice esempio si deduce quindi la necessità di utiliz-zare opportune procedure basate su tecniche che risultano efficaci in più situazioni, come ad esempio i procedimenti iterativi.

Dal momento che uno stesso problema può essere risolto con più metodi numerici, la scelta di un metodo sarà dettata sia dalle sue carat-teristiche (efficienza, velocità di convergenza, ecc.), che dagli obiettivi che si vogliono raggiungere (approssimazione più o meno raffinata, costi computazionali ecc.) ed è affidata anche all’abilità ed esperienza di chi deve risolvere il problema.

Tale scelta è quindi il risultato di: un’attenta analisi del problema; un’analisi comparativa dei diversi metodi numerici disponibili,

sulla base del loro costo e della loro accuratezza. Ai metodi numerici come si è già detto, si associano gli algoritmi:

descrizioni complete e ben definite di operazioni logiche ed aritmeti-che che consentono di ottenere in un numero finito di passi i risultati y dai dati x.

Infine, componente imprescindibile di un progetto di algoritmo è la

disponibilità di un calcolatore e l’uso di un linguaggio di programma-zione.

In ciascuna delle fasi che conducono dal problema reale alla deter-minazione dei risultati, si introducono errori che possono essere classi-ficati e, per quanto possibile, valutati, ridotti o tenuti in debito conto all’atto della validazione del modello (valutazione della sua attendibi-lità).

Prima di intraprendere la loro trattazione è conveniente premettere dei richiami sui sistemi di numerazione e rappresentazione dei numeri.

Alcuni concetti di base del Calcolo Numerico 15

1.2 I sistemi di numerazione Un qualsiasi numero intero B > 1 può essere assunto come base di

un Sistema di Numerazione S, che utilizza quindi i B simboli 0, 1, ..., B�1.

Anche se dal punto di vista astratto tutte le basi sono tra loro equi-valenti, tre sono le basi generalmente usate: base 2 o binaria, base 10 o decimale, base 16 o esadecimale. Potremo quindi assumere che la base B sia un numero pari.

Nel sistema binario B = 2, si utilizzano i simboli 0, 1 in quello de-cimale B =10, si utilizzano i simboli 0, 1,...,9; in generale, se B � 11, si utilizzano numeri e lettere. Se ad esempio B = 16, (sistema esadecima-le) si utilizzano 0, 1, ..., 9, A, B, C, D, E, F.

In S ogni numero reale x ha la forma detta rappresentazione posi-

zionale (1.2.1) 1 0 1 2... . ..., 0n n nx c c c c c c� � �� � � il punto che compare tra 0 1e c c� è detto punto decimale se la base è 10, punto binario se la base è 2. La (1.2.1) si può scrivere nella forma seguente:

(1.2.2) � �1 0 1 2

1 0 1 2

0

... ...n nn n

n in i

i

x c B c B c B c B c B

B c B

� � �� � �

��

��

� � � � � � � �

� � �

e gli interi ic , con 0 � ic � B�1, sono detti Cifre della Rappresenta-zione.

In generale � �0x� � �� �0� , eccetto il caso in cui è presente una suc-cessione di infinite cifre 1,ka B� � 1,k � per x si ha un’unica rap-presentazione in S nella forma detta normalizzata (il primo coefficien-te della somma è diverso da 0):

(1.2.3) 1

( ) e kk

kx sign x B a B

��

� �

15Alcuni concetti di base del Calcolo Numerico

16 Calcolo Numerico: metodi ed applicazioni usando Matlab

con e� intero, 10 1a B� � � , e 0 1,ka B� � � 2.k� �

Nella (1.2.3) la serie 1

,kk

ka B

��

�� è una serie convergente. Le sue ridotte

1,

nk

n kk

S a B�

�� per n � 1, costituiscono infatti, una successione

� � 0n nS

� non decrescente e superiormente limitata, e quindi conver-

gente. Per l’ipotesi di positività dei coefficienti, si verifica che 1n nS S ��

infatti: 1

( 1)1 1

1 1

n nk k n

n k k n nk k

S a B a B a B S�

� � � �� �

� �

� � � �� � .

Per verificare la limitatezza basta considerare che:

1

11 1

1( 1) ( 1) 1 1.

1

nn nk k n

n k

k k

BS a B B B B B B

B

� � � �

� �

�� � � � � � � �

�� �

Il numero verso cui converge la serie 1

e kk

kB a B�

�� è inoltre positivo

essendo 1 1a � . Osservazioni 1 - La serie di tipo (1.2.3) si riduce ad una somma finita se risulta

0,ka � per k n� � , in questo caso il numero x rappresentato, ha un numero finito di cifre. 2 - Considerando per semplicità, un numero reale x > 0, esiste un uni-co esponente e� tale che 1 .e eB x B� � �

1.3 La rappresentazione dei numeri sul calcolatore Ogni operazione effettuata su calcolatore è affetta da errori di arro-

tondamento (round off). Essi sono dovuti al fatto che su un calcolatore può essere rappre-

sentato solo un sottoinsieme finito dell’insieme dei numeri reali.

16 Calcolo Numerico: metodi ed applicazioni usando Matlab

16 Calcolo Numerico: metodi ed applicazioni usando Matlab

con e� intero, 10 1a B� � � , e 0 1,ka B� � � 2.k� �

Nella (1.2.3) la serie 1

,kk

ka B

��

�� è una serie convergente. Le sue ridotte

1,

nk

n kk

S a B�

�� per n � 1, costituiscono infatti, una successione

� � 0n nS

� non decrescente e superiormente limitata, e quindi conver-

gente. Per l’ipotesi di positività dei coefficienti, si verifica che 1n nS S ��

infatti: 1

( 1)1 1

1 1

n nk k n

n k k n nk k

S a B a B a B S�

� � � �� �

� �

� � � �� � .

Per verificare la limitatezza basta considerare che:

1

11 1

1( 1) ( 1) 1 1.

1

nn nk k n

n k

k k

BS a B B B B B B

B

� � � �

� �

�� � � � � � � �

�� �

Il numero verso cui converge la serie 1

e kk

kB a B�

�� è inoltre positivo

essendo 1 1a � . Osservazioni 1 - La serie di tipo (1.2.3) si riduce ad una somma finita se risulta

0,ka � per k n� � , in questo caso il numero x rappresentato, ha un numero finito di cifre. 2 - Considerando per semplicità, un numero reale x > 0, esiste un uni-co esponente e� tale che 1 .e eB x B� � �

1.3 La rappresentazione dei numeri sul calcolatore Ogni operazione effettuata su calcolatore è affetta da errori di arro-

tondamento (round off). Essi sono dovuti al fatto che su un calcolatore può essere rappre-

sentato solo un sottoinsieme finito dell’insieme dei numeri reali.

Alcuni concetti di base del Calcolo Numerico 17

Ma questo non delegittima la rappresentazione dei numeri reali su calcolatore (dunque con un numero finito di cifre) perché tutti i nume-ri reali si possono approssimare bene con numeri aventi una rappre-sentazione finita.

Se si fissa infatti la base B, vale la seguente proprietà (1.3.1) 0, , :x y x y� �� � � � � � �y,, :::, : dove y ha rappresentazione posizionale finita.

Un numero reale x è infatti, sempre compreso tra due numeri ra-zionali cioè:

1 2 1 22 2

1. . . . ,n nn n

a aa a a aA p i x p i CB B B B B B

�� � � � � � � � � � � �

1 ,n

a a2a 11 C12

n1 2n2

a22111111

B B B Bn 222

�x p ix p i 1 21. ... . 2n1 21

si è indicata con p.i. la parte intera del numero.

Fissato quindi 0� � , si può scegliere n in modo che C A �� � e la relazione (1.3.1) è pertanto dimostrata.

Ricordiamo anche che più piccola è la base, più lunga è la stringa dei caratteri necessari per rappresentare lo stesso numero.

Ad esempio x = 1/10 si scrive � �100.1 , nella base 2 diventa

� �20.000110011.... ; il numero x ha quindi un numero finito di cifre in

base 10 ma ne ha infinite (e periodiche) nella base binaria. Per ogni numero reale viene resa disponibile nel calcolatore una

parola costituita da un numero finito N di bit (binary digit). Il modo più intuitivo per utilizzare le N posizioni di memoria per la

rappresentazione di un numero 0x � sarebbe quello di fissarne una per il segno del numero, N – k – 1 per la parte intera, e k per le cifre dopo il punto cioè: (1.3.2) � �� �2 3 1 0.N N k kx sign x a a a a a� � �� �1 0k ka a a1k kk .

Un insieme di numeri di questo tipo è detto sistema dei numeri a virgola fissa o fixed point.

L’uso della virgola fissa limita però il valore del numero massimo e minimo rappresentabili sul calcolatore a meno di non avere N molto grande e quindi viene limitato alla rappresentazione dei numeri interi.

Per superare l’inconveniente suddetto, si utilizza per un numero reale non nullo, la rappresentazione in virgola mobile o floating point

17Alcuni concetti di base del Calcolo Numerico

18 Calcolo Numerico: metodi ed applicazioni usando Matlab

data da: (1.3.3) � �� � � �1 20. ,e e t

tx sign x a a a B sign x m B �� ��t ��t �� e�� con e, numero intero, detto esponente; il numero naturale t, fornisce il numero consentito di cifre significative ,ia 0 1, 1,..., ,ia B i t� � � � con 1 0a � (mantissa normalizzata). Il numero intero m è detto infatti mantissa; esso è definito da:

1 2 01 2 1 2: t t

t tm a a a a B a B a B� �� � � �1 2 0t 1t t1 2a a B a B a B2t 1

t1 211a a B a B 2

1 21t t1

1 21 .

Risulta allora: � � � �1

1

0

11 1 11

ttt k t

k

BB m B B B BB

��

�� � � � � � �

�� .

Se non considerassimo la mantissa normalizzata, non avremmo un’unica rappresentazione per ogni numero reale, caratteristica impor-tante per evitare qualsiasi ambiguità.

Ad esempio, nella base B = 10, supponendo t = 4, il numero 1 po-trebbe avere le seguenti rappresentazioni: 10.1000 10 ,� 20.0100 10 ,�

3 40.0010 10 , 0.0001 10� � ed altre ancora. Nella rappresentazione in virgola mobile, le N posizioni di memo-

ria, che costituiscono una parola, vengono quindi distribuite tra il se-gno (una posizione), le cifre significative (t posizioni), e le cifre dell’esponente (N – t – 1 posizioni).

Il numero 0 che non può esprimersi nella forma (1.3.3) ha, pertan-to, una rappresentazione a parte.

Tipicamente sui calcolatori sono disponibili due formati per la rap-

presentazione floating point di un numero: la semplice precisione (N = 32 bit) e la doppia precisione (N = 64 bit). Il MATLAB lavora in doppia precisione e base B=2 ma è in grado di lavorare in singola pre-cisione utilizzando comandi opportuni.

Rappresentazione floating point in semplice precisione N= 32 bit

s e ( 8 bit) m (23 bit)

18 Calcolo Numerico: metodi ed applicazioni usando Matlab

18 Calcolo Numerico: metodi ed applicazioni usando Matlab

data da: (1.3.3) � �� � � �1 20. ,e e t

tx sign x a a a B sign x m B �� ��t ��t �� e�� con e, numero intero, detto esponente; il numero naturale t, fornisce il numero consentito di cifre significative ,ia 0 1, 1,..., ,ia B i t� � � � con 1 0a � (mantissa normalizzata). Il numero intero m è detto infatti mantissa; esso è definito da:

1 2 01 2 1 2: t t

t tm a a a a B a B a B� �� � � �1 2 0t 1t t1 2a a B a B a B2t 1

t1 211a a B a B 2

1 21t t1

1 21 .

Risulta allora: � � � �1

1

0

11 1 11

ttt k t

k

BB m B B B BB

��

�� � � � � � �

�� .

Se non considerassimo la mantissa normalizzata, non avremmo un’unica rappresentazione per ogni numero reale, caratteristica impor-tante per evitare qualsiasi ambiguità.

Ad esempio, nella base B = 10, supponendo t = 4, il numero 1 po-trebbe avere le seguenti rappresentazioni: 10.1000 10 ,� 20.0100 10 ,�

3 40.0010 10 , 0.0001 10� � ed altre ancora. Nella rappresentazione in virgola mobile, le N posizioni di memo-

ria, che costituiscono una parola, vengono quindi distribuite tra il se-gno (una posizione), le cifre significative (t posizioni), e le cifre dell’esponente (N – t – 1 posizioni).

Il numero 0 che non può esprimersi nella forma (1.3.3) ha, pertan-to, una rappresentazione a parte.

Tipicamente sui calcolatori sono disponibili due formati per la rap-

presentazione floating point di un numero: la semplice precisione (N = 32 bit) e la doppia precisione (N = 64 bit). Il MATLAB lavora in doppia precisione e base B=2 ma è in grado di lavorare in singola pre-cisione utilizzando comandi opportuni.

Rappresentazione floating point in semplice precisione N= 32 bit

s e ( 8 bit) m (23 bit)

Alcuni concetti di base del Calcolo Numerico 19

Rappresentazione floating point in doppia precisione N = 64 bit

Denotiamo con F(B, t, L, U) l’insieme dei numeri macchina (o nu-meri floating point), con base 2B � e t cifre significative; si ha inol-tre 0 1,ia B� � � 1,..., ,i t� 1 0,a � esponente ,L e U� � dove

0, 0.L U� � Tale insieme è definito da:

(1.3.4) � � � � � �1

0 : 1, , , :t

s e ii

ix x BF B t L U a B�

� ��� � � �� �� �

��: �: 1�� 1� 1�: ���

dove si è indicato con � �1 , 0,1s s� � il segno di x. Con semplici passaggi si trova che il più piccolo numero positivo

nell’insieme dei numeri macchina è 1 1min ,L Lx B B B� �� � il più grande

è � � � �max1

1 1 .t

U i U t

ix B B B B B� �

� � � �

N. B. Volendo valutare quest’ultima quantità dovremmo scrivere

� �1 1U tBB B� �� , questo per evitare la situazione di overflow che si avrebbe calcolando invece la quantità UB che verrebbe scritta in mantissa normalizzata, 10.1U UB B �� .

I valori estremi relativamente a MATLAB, si ottengono digitando

rispettivamente: realmin e si ottiene la risposta: ans = 2.2251e-308, realmax la risposta in questo caso è: ans = 1.7977e+308.

Naturalmente ogni numero positivo in F ha il suo corrispondente negativo ancora contenuto in F.

Calcoliamo allora la cardinalità dell’insieme F, cioè il numero de-gli elementi in esso contenuti, risulta: (1.3.5) � � � � � �12 1 1 1,tcard F B B U L�� � � � �

s e (11 bit) m (52 bit)

19Alcuni concetti di base del Calcolo Numerico

20 Calcolo Numerico: metodi ed applicazioni usando Matlab

essendo 11 tB B le possibili configurazioni della mantissa, (U – L

+1) le possibili configurazioni dell’esponente; compare il fattore 2

perché ci sono i numeri positivi e negativi, ed infine va aggiunto 1 per

lo zero.

N. B. Il Matlab lavora di default in doppia precisione (t = 52), in

base binaria, con L=1021 e U=1024, cioè usa l’insieme

2,52, 1021,1024F e visualizza i risultati in formato decimale,

10,16, 308,308F , cioè con 16 cifre significative.

Esempio 1.3.1 Si determinino i numeri positivi contenuti

nell’insieme F(2, 3, 1, 2): B = 2, t = 3, L = 1, U = 2.

Nella Figura 1.3.1 sono visualizzati i punti corrispondenti ai valori

trovati per l’insieme considerato al fine di evidenziarne la distribuzio-

ne.

Figura 1.3.1 Distribuzione dei valori positivi di F sulla retta reale

Tali numeri sono complessivamente 3 12 1 2 2 1 1 16 , il

numero più piccolo è 1 1 12

4

ed il più grande è 2 3 72 1 2 .

2

Calcoliamo tutti i numeri positivi contenuti in F. Essi sono:

0 0.5 1 1.5 2 2.5 3 3.5 4

-0.2

0

0.2

20 Calcolo Numerico: metodi ed applicazioni usando Matlab

essendo � � 11 tB B �� le possibili configurazioni della mantissa, (U – L +1) le possibili configurazioni dell’esponente; compare il fattore 2 perché ci sono i numeri positivi e negativi, ed infine va aggiunto 1 per lo zero.

N. B. Il Matlab lavora di default in doppia precisione (t = 52), in

base binaria, con L=�1021 e U=1024, cioè usa l’insieme� �2,52, 1021,1024F � e visualizza i risultati in formato decimale,

� �10,16, 308,308F � , cioè con 16 cifre significative. Esempio 1.3.1 Si determinino i numeri positivi contenuti

nell’insieme F(2, 3, �1, 2): B = 2, t = 3, L = �1, U = 2. Nella Figura 1.3.1 sono visualizzati i punti corrispondenti ai valori

trovati per l’insieme considerato al fine di evidenziarne la distribuzio-ne.

Figura 1.3.1 Distribuzione dei valori positivi di F sulla retta reale

Tali numeri sono complessivamente � � � �3 12 1 2 2 1 1 16�� � � � , il

numero più piccolo è 1 1 124

� � � ed il più grande è � �2 3 72 1 2 .2

�� �

Calcoliamo tutti i numeri positivi contenuti in F. Essi sono:

0 0.5 1 1.5 2 2.5 3 3.5 4

-0.2

0

0.2

Alcuni concetti di base del Calcolo Numerico 21

� � � � � � � �

� � � � � � � �

� � � � � � � �

� � � � � � � �

2 2 2 2

1 1 1 1

0 0 0 0

1 1 1 1

7 5.111 2 , .110 2 3, .101 2 , .100 2 2,2 27 3 5.111 2 , .110 2 , .101 2 , .100 2 1,4 2 47 3 5 1.111 2 , .110 2 , .101 2 , .100 2 ,8 4 8 27 3 5 1.111 2 , .110 2 , .101 2 , .100 2 .

16 8 16 4� � � �

� � � �

� � � �

� � � �

� � � �

1.4 Arrotondamento di un numero reale Su un calcolatore è quindi disponibile solo l’insieme discreto F(B,

t, L, U ) che è un sottoinsieme di ;; questo pone alcuni problemi pra-tici, primo fra tutti quello della rappresentazione interna di un generi-co numero reale x e delle conseguenze nell’esecuzione delle operazio-ni. Se x�F (B, t, L, U ) si pone allora il problema di associare, in modo adeguato, a x un numero macchina che indichiamo con � �fl x .

Supponiamo per semplicità x > 0 (analoghi risultati si hanno, ov-viamente, se x < 0), e B numero pari (ipotesi verificata per le basi uti-lizzate in questo contesto). Si possono verificare le seguenti situazioni una volta che si sia scritto x nella forma floating point (1.2.3):

a) l’esponente e�[L, U]. Possiamo distinguere due casi: 1a � e < L situazione di underflow. Solitamente si assume come

valore approssimato del numero x il valore zero. In generale viene segnalata una warning ma il calcolo prosegue.

2a � e > U situazione di overflow. Tale situazione viene segna-lata ed il calcolo si arresta.

b) � �,e L U� ma x�F (B, t, L, U) perché le cifre ,ia con i > t, non sono tutte nulle.

Allora, l’approssimazione di x con il numero � �fl x � F (B, t, L, U) può essere effettuata mediante due procedimenti:

21Alcuni concetti di base del Calcolo Numerico