21
Alcune figure di questi appunti riportano nei commenti esempi in linguaggio MATLAB. In tali esempi i caratteri di peso normale sono prodotti dal computer mentre i caratteri in grassetto sono battuti dall’operatore. I caratteri “>>” sono il prompt del sistema, ossia indicano che MATLAB è in attesa di istruzioni. Ad esempio la sequenza seguente: >> whos significa che MATLAB attendeva ordini e che l’operatore ha battuto il comando “whos”. __________________________________________________________________________________ MATLAB (MATrix LABoratory) è un sistema interattivo basato sul calcolo matriciale per uso scientifico e tecnico. Oltre al trattamento di matrici è in grado di trattare polinomiali, equazioni differenziali e altre applicazioni. Funzionalità aggiuntive sono rese possibili mediante l’installazione di toolbox addizionali. La Homepage di MATLAB è http://www.mathworks.com/ Un sistema simile a MATLAB, di tipo Open Source (ossia gratuito), è Scilab (http://www.scilab.org/). La sintassi di Scilab è molto simile a quella di MATLAB. In particolare, negli esempi che seguono i comandi da dare sono identici, tranne dove esplicitamente dichiarato. L’ output di Scilab è leggermente diverso. Il prompt di Sscilab è “-->”. 1 I numeri reali e la loro rappresentazione

I numeri reali e la loro rappresentazione - mate.polimi.itfracal/teaching/mazarch/calnum/lezioni/CN02... · I numeri reali e la loro ... per effettuare la divisione fra due numeri

Embed Size (px)

Citation preview

Page 1: I numeri reali e la loro rappresentazione - mate.polimi.itfracal/teaching/mazarch/calnum/lezioni/CN02... · I numeri reali e la loro ... per effettuare la divisione fra due numeri

Alcune figure di questi appunti riportano nei commenti esempi in linguaggio MATLAB.

In tali esempi i caratteri di peso normale sono prodotti dal computer mentre i caratteri in grassetto sono battuti dall’operatore.

I caratteri “>>” sono il prompt del sistema, ossia indicano che MATLAB è in attesa di istruzioni. Ad esempio la sequenza seguente:

>> whossignifica che MATLAB attendeva ordini e che l’operatore ha battuto il comando “whos”.

__________________________________________________________________________________

MATLAB (MATrix LABoratory) è un sistema interattivo basato sul calcolo matriciale per uso scientifico e tecnico. Oltre al trattamento di matrici è in grado di trattare polinomiali, equazioni differenziali e altre applicazioni. Funzionalità aggiuntive sono rese possibili mediante l’installazione di toolbox addizionali.

La Homepage di MATLAB è http://www.mathworks.com/

Un sistema simile a MATLAB, di tipo Open Source (ossia gratuito), è Scilab (http://www.scilab.org/).

La sintassi di Scilab è molto simile a quella di MATLAB. In particolare, negli esempi che seguono i comandi da dare sono identici, tranne dove esplicitamente dichiarato.

L’ output di Scilab è leggermente diverso.

Il prompt di Sscilab è “-->”.

1

I numeri reali e la loro rappresentazione

Page 2: I numeri reali e la loro rappresentazione - mate.polimi.itfracal/teaching/mazarch/calnum/lezioni/CN02... · I numeri reali e la loro ... per effettuare la divisione fra due numeri

Paaina 2Elementi di Teoria degli Errorii

2

Classi di numeriClassi di numeri

��������

��������

��

���������

�2

�����

���������������� NUMERO FINITO DI RELATIVI

infiniti razionali

infiniti irrazionali

(irrazionali)

Ogni classe esterna (più ampia) include le classi interne: ad esempio i numeri relativi comprendono anche i numeri naturali.

In ogni classe più esterna sono possibili le operazioni delle classi interne, più altre: nella classe dei razionali è sempre possibile la divisione (eccetto che con denominatore nullo), che con i relativi non è sempre possibile.

Le classi di numeri vengono comunemente identificate con i simboli seguenti:

Naturali: N

Relativi: Q

Razionali: Z

Reali: R

Page 3: I numeri reali e la loro rappresentazione - mate.polimi.itfracal/teaching/mazarch/calnum/lezioni/CN02... · I numeri reali e la loro ... per effettuare la divisione fra due numeri

Paaina 3Elementi di Teoria degli Errorii

3

Interi (positivi): 10 simboli Interi (positivi): 10 simboli →→→→→→→→ Notazione posizionaleNotazione posizionale

��������

������

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

���

+��+���

+��

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

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

������ � ������+ ���

��+ ���+ �

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

cifra meno significativacifra più significativa

b = 2,3,…ai = 0,…,b-1

Il numero è la combinazione lineare di tanti numeri di una cifra, ognuno moltiplicato per un peso che è una potenza della base.

“Posizionale”: il peso di una cifra dipende dalla posizione in cui si trova la cifra.

Le cifre più a sinistra sono più significative (hanno un peso maggiore).

Gli interi negativi hanno la stessa rappresentazione, con l’aggiunta del simbolo “-”.

Page 4: I numeri reali e la loro rappresentazione - mate.polimi.itfracal/teaching/mazarch/calnum/lezioni/CN02... · I numeri reali e la loro ... per effettuare la divisione fra due numeri

Paaina 4Elementi di Teoria degli Errorii

4

Numeri interi: rappresentazione in basi diverseNumeri interi: rappresentazione in basi diverse

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

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

!�"���� !�"�� !�"����

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

������

#�$10 =#����$2 =#�$16

Una cifraUna cifraesadecimaleesadecimale

equivale a equivale a quattro cifre quattro cifre binarie (bit).binarie (bit).

Nelle rappresentazioni in basi diverse da 10 si usano:

•per i primi numeri (zero, uno,…) le stesse cifre usate per la rappresentazione decimale;

•se la base è >10 si aggiungono, in coda al 9, le prime lettere dell’alfabeto latino (A, B,…).

Per capire che una sequenza di cifre rappresenta un numero in una base b si usa la notazione (cifre…)b, dove il numero b è sempre scritto in base 10. Se la base non è indicata si sottintende b=10.

La rappresentazione binaria (base 2) è quella usata intrinsecamente nei computer. Le cifre binarie (che sono solo lo 0 e 1) dono chiamate BIT (Binary unIT).

Una cifra esadecimale corrisponde a quattro bit. Quindi rappresentazione in base 2 e in base 16 sono equivalenti purché si usi un numero di bit multiplo di 4.

La notazione in base 16 è pertanto una comune rappresentazione, utilizzante 16 simboli, dei numeri in un computer.

In effetti in un computer l’informazione è comunemente organizzata in byte (o ottetti). Un byte è una sequenza di 8 cifre binarie, per cui un byte corrisponde a due cifre esadecimali il cui valore va da (00)16 a (FF)16 (ossia da 0 a 255).

In MATLAB il comando dec2hex(n) converte un numero intero positivo da base 10 a base 16.

Esempio:

>> dec2hex(17)

ans =

11

Page 5: I numeri reali e la loro rappresentazione - mate.polimi.itfracal/teaching/mazarch/calnum/lezioni/CN02... · I numeri reali e la loro ... per effettuare la divisione fra due numeri

Paaina 5Elementi di Teoria degli Errorii

5

Rappresentazione posizionale dei numeri razionaliRappresentazione posizionale dei numeri razionali

��� = ������+ ����� �%��

+���

+��

����

+��� �

ππππ

= ��+ ���� + ����� + �������+�� �%����=�%�

Non tutti i numeri razionali sono rappresentabili Non tutti i numeri razionali sono rappresentabili con un numero finito di cifre.con un numero finito di cifre.

= %�������������

��

cifra più significativa

cifra meno significativa

periodo

I numeri irrazionali:I numeri irrazionali:–– Non sono rappresentabili con un numero finito di cifre.Non sono rappresentabili con un numero finito di cifre.–– Non hanno periodo.Non hanno periodo.

Nella rappresentazione di un razionale è essenziale il simbolo di separazione fra le parte intera (a sinistra) e la parte frazionaria (a destra). Tale simbolo è spesso il carattere “.” (punto), tuttavia alcuni software possono richiedere il carattere “,” (virgola), ad esempio Excel in edizione italiana e se opportunamente configurato. MATLAB accetta solo il punto.

Page 6: I numeri reali e la loro rappresentazione - mate.polimi.itfracal/teaching/mazarch/calnum/lezioni/CN02... · I numeri reali e la loro ... per effettuare la divisione fra due numeri

Paaina 6Elementi di Teoria degli Errorii

6

Numeri razionali: rappresentazione in basi diverseNumeri razionali: rappresentazione in basi diverse

�� �%� ��� ������ �%� ���� ������ �%�� ����� ���

����� %���������������� ��

!�"���� !�"�� !�"����

��� �%� ���������������=�%����

������

Un numero può essere finito in una base e Un numero può essere finito in una base e periodico in un’altra.periodico in un’altra.

Page 7: I numeri reali e la loro rappresentazione - mate.polimi.itfracal/teaching/mazarch/calnum/lezioni/CN02... · I numeri reali e la loro ... per effettuare la divisione fra due numeri

Paaina 7Elementi di Teoria degli Errorii

7

Notazione esponenzialeNotazione esponenziale

����� = %��� = %���⋅���

Notazione esponenziale

= �%��⋅�� �

= �%����⋅��

= �%���⋅���

Esponenziale normalizzata

=0 ≠≠≠≠0

CIFRE SIGNIFICATIVE

�� ��������!�������"����� �"���� ���������

�������b = 2,3,…ai = 0,…,b-1a1 ≠≠≠≠ 0

MANTISSA ESPONENTE

Page 8: I numeri reali e la loro rappresentazione - mate.polimi.itfracal/teaching/mazarch/calnum/lezioni/CN02... · I numeri reali e la loro ... per effettuare la divisione fra due numeri

Paaina 8Elementi di Teoria degli Errorii

8

Numero di macchinaNumero di macchinaÈ un numero reale rappresentato da È un numero reale rappresentato da NN cifrecifre

(N(N prefissatoprefissato).).

Esempio: N = 4 (b = 10) �� � � �� ai = 0,…,9

������ # ���� ���

��������$ $�%&�'�(!��� )

���"�� ���� ��

� � � �

� � � � = 0,01

���"�� �'� = 99,99

������� *���%&"�� ��+!��� )

�,� � ����$ $ �

���"�� ��� � � � � = 0,1⋅10-4

Esponente - 4

= 0,0001

���"�� �'� � � � � = 0,999⋅105 = 99900

���-��������.��

Page 9: I numeri reali e la loro rappresentazione - mate.polimi.itfracal/teaching/mazarch/calnum/lezioni/CN02... · I numeri reali e la loro ... per effettuare la divisione fra due numeri

Paaina 9Elementi di Teoria degli Errorii

9

L’insieme dei Numeri di macchinaL’insieme dei Numeri di macchina

OVERFLOW!Errore diarrotondamento

I numeri di macchina, comunemente rappresentati in virgola I numeri di macchina, comunemente rappresentati in virgola mobile, costituiscono un insieme limitato e finito di razionali.mobile, costituiscono un insieme limitato e finito di razionali.

���"�� ���� �

���"�� �'/

,

&"%,)

,

0

,UNDERFLOW!

����������"� � 0,1 &"%,)

��������"� �2� 0,1 &"%,)

,

Con i numeri di macchina gli Con i numeri di macchina gli errori di rappresentazione errori di rappresentazione

sono inevitabili!sono inevitabili!

!��-������ �" �!��-������ �����

Page 10: I numeri reali e la loro rappresentazione - mate.polimi.itfracal/teaching/mazarch/calnum/lezioni/CN02... · I numeri reali e la loro ... per effettuare la divisione fra due numeri

Paaina 10Elementi di Teoria degli Errorii

10

Precisione: zero macchina e Precisione: zero macchina e epsilonepsilon macchina macchina

Quante più cifre si dedicano alla mantissa tanto più aumenta la precisione.

In particolare:1. Diminuisce lo zero macchina (“reale minimo”):

minimo numero positivo rappresentabile;2. Diminuisce l’epsilon macchina (“precisione di

macchina”): minimo numero positivo che sommato a 1 fornisce un risultato diverso da 1:

Quante più cifre si dedicano all’esponente Quante più cifre si dedicano all’esponente tanto più aumenta il campo di variazione tanto più aumenta il campo di variazione

dei numeri di macchina.dei numeri di macchina.

11 >>>>++++ Mεεεε 121 ====++++ Mεεεε

Page 11: I numeri reali e la loro rappresentazione - mate.polimi.itfracal/teaching/mazarch/calnum/lezioni/CN02... · I numeri reali e la loro ... per effettuare la divisione fra due numeri

Paaina 11Elementi di Teoria degli Errorii

11

Numeri di macchina: lo standard IEEE 754Numeri di macchina: lo standard IEEE 754

8 bit

32 bit

�,�/ � ����$ $ �

S(egno)

23 bit

11 bit

64 bit

�,�/ � ����$ $ �

S(egno)

52 bit

$ �� ����������$ ���

# ���������$ ��� %� ����*��'-�")

Lo Standard 754, emesso da IEEE (Institute of Electrical and Electronics Engineers) è equivalente allo standard internazionale ISO/IEC 60559, Binary floating-point arithmetic for microprocessor systems. Prevede diversi formati, di cui quello doppia precisione è il più usato, ad esempio da software come MATLAB/Scilab ed Excel.

Nel formato doppia precisione il 1° bit (il più significativo) vale 0 se il numero è positivo, 1 se negativo. Gli 11 bit successivi contengono l’esponente EXP. Dei 2048 valori possibili (fra 0 e 2047) di questi 11 bit i valori da 1 a 2046 sono utilizzati per rappresentare EXP-1023. I valori 0 e 2047 servono a rappresentare situazioni speciali quali +INF (Infinito positivo, risultato ad esempio di un overflow), -INF (Infinito negativo), NaN (Not a Number, risultato ad esempio di una divisione 0/0).

Page 12: I numeri reali e la loro rappresentazione - mate.polimi.itfracal/teaching/mazarch/calnum/lezioni/CN02... · I numeri reali e la loro ... per effettuare la divisione fra due numeri

Paaina 12Elementi di Teoria degli Errorii

12

Numeri di macchina, MATLAB e ExcelNumeri di macchina, MATLAB e Excel(alcuni comandi MATLAB per evidenziare effetti liminali dei numeri di macchina).

realmin (determina il minimo intero positivo rappresentabile)

realmax (determina il massimo intero)

eps (determina epsilon macchina)

format long e (output con 15 cifre decimali – purché non tutte =0)

format hex (output evidenziato come 8 cifre esadecimali)

format (torna a default)

(con EXCEL è possibile costruire epsilon macchina).

=== Scilab ======================

•Il comando “realmin” è sostituito da “number_properties("tiny")”

•Il comando “realmax” è sostituito da “number_properties(“huge")”

•La variabile “eps” si chiama “%eps”

•Il comando “format” ha una sintassi differente, ad esempio:

-->format(‘v’,12) (usa 12 simboli al massimo, formato esponenziale oltre certi limiti)

-->format(‘e’,12) (usa 12 simboli, formato esponenziale sempre)(non esiste l’equivalente di “format hex”).Per maggiori dettagli vedere l’help di sistema.

Page 13: I numeri reali e la loro rappresentazione - mate.polimi.itfracal/teaching/mazarch/calnum/lezioni/CN02... · I numeri reali e la loro ... per effettuare la divisione fra due numeri

13

Propagazione degli errori

Page 14: I numeri reali e la loro rappresentazione - mate.polimi.itfracal/teaching/mazarch/calnum/lezioni/CN02... · I numeri reali e la loro ... per effettuare la divisione fra due numeri

Paaina 14Elementi di Teoria degli Errorii

14

Propagazione degli errori nelle operazioni elementariPropagazione degli errori nelle operazioni elementari

Relazione fra un numero reale x e il suo “rappresentante di macchina” fl(x):

x)x(flx

x

−−−−====εεεε )(x)x(fl xεεεε−−−−==== 1

Volendo effettuare operazioni fra numeri reali, si opera in realtà sui loro “rappresentanti di macchina”.

Ciò ha per conseguenza che gli errori di arrotondamento dei numeri su cui si opera producono errori di arrotondamento sul risultato dell’operazione.

|εεεεx | < |εεεεM|

Page 15: I numeri reali e la loro rappresentazione - mate.polimi.itfracal/teaching/mazarch/calnum/lezioni/CN02... · I numeri reali e la loro ... per effettuare la divisione fra due numeri

Paaina 15Elementi di Teoria degli Errorii

15

Esempio: errore di moltiplicazioneEsempio: errore di moltiplicazione

fl(xy) ≅≅≅≅ fl(x)⋅⋅⋅⋅fl(y) εεεεxy ='3 1 &"%')&"%3)

'3

εεεεxy ='3 1 '%�4 εεεεx)3%�4 εεεεy)

'3

= εεεεx 5εεεεy 4 εεεεxεεεεy

≅≅≅≅ εεεεx 5εεεεy

Nel prodotto l’errore relativo non viene Nel prodotto l’errore relativo non viene amplificato.amplificato.

Page 16: I numeri reali e la loro rappresentazione - mate.polimi.itfracal/teaching/mazarch/calnum/lezioni/CN02... · I numeri reali e la loro ... per effettuare la divisione fra due numeri

Paaina 16Elementi di Teoria degli Errorii

16

Errore nella somma: cancellazione numericaErrore nella somma: cancellazione numerica

fl(x+y) ≅≅≅≅ fl(x)+fl(y) εεεεx+y ='531 %'%�4εεεεx)53%�4εεεεy ))

'53

Nella somma l’errore relativo può essere Nella somma l’errore relativo può essere notevolmente amplificato.notevolmente amplificato.Ciò accade se xCiò accade se x++y y ≅≅≅≅≅≅≅≅ 00

εεεεx+y ='εεεεx 53εεεεy

'53

Page 17: I numeri reali e la loro rappresentazione - mate.polimi.itfracal/teaching/mazarch/calnum/lezioni/CN02... · I numeri reali e la loro ... per effettuare la divisione fra due numeri

Paaina 17Elementi di Teoria degli Errorii

17

Cancellazione numerica con MATLABCancellazione numerica con MATLAB

a=2; b=eps;c=a + 2*b;d=a +b +b; (nell’algebra comune risulta d=c !)

(si verifica che c>d)

a=2^28; b=2^(-26);si verifica che:

a+b – a – b < 0(a+b) – (a+b) = 0(a – b) – (a – b) = 0a – b – a+b > 0

Per verificare che c>d (1° esempio) basta battere:

>> c-d

Si ottiene un numero positivo (maggiore di realmin).

Con Scilab ricordarsi di usare %eps al posto di eps.

Page 18: I numeri reali e la loro rappresentazione - mate.polimi.itfracal/teaching/mazarch/calnum/lezioni/CN02... · I numeri reali e la loro ... per effettuare la divisione fra due numeri

Paaina 18Elementi di Teoria degli Errorii

18

Instabilità di un algoritmoInstabilità di un algoritmo

Algoritmo: Sequenza organizzata di operazioni su alcuni dati, per ottenere un risultato. Es: algoritmo per effettuare la divisione fra due numeri.

Instabilità: Fenomeno per cui un algoritmo amplifica gli errori sui dati.

Esistono alcuni algoritmi instabili, che per loro natura amplificano gli errori.

Page 19: I numeri reali e la loro rappresentazione - mate.polimi.itfracal/teaching/mazarch/calnum/lezioni/CN02... · I numeri reali e la loro ... per effettuare la divisione fra due numeri

Paaina 19Elementi di Teoria degli Errorii

19

Esempio di algoritmo instabileEsempio di algoritmo instabile

Successione per approssimare ππππ:

z2 = 2;

zn+1 = 2n-1/2 21411 nn z−−−−−−−−−−−− n = 2,3,…

La successione z2, z3, z4, . . . converge a ππππ.L’errore diminuisce nelle prime 16 iterazioni, poi

aumenta nuovamente.

Un programma MATLAB per verificare le prime 21 iterazioni può essere il seguente:

>>z(2)=2;

>>for n=2:20;z(n+1)=2^(n-1/2)*sqrt(1-sqrt(1-4^(1-n)*z(n)^2));end>>format long e;errore=z-pi(viene visualizzato un vettore errore di 21 valori che contiene gli errori alle

varie iterazioni).

=== Scilab ======================

lo stesso programma in Scilab:

--> z(2)=2;

--> for n=2:20;z(n+1)=2^(n-1/2)*sqrt(1-sqrt(1-4^(1-n)*z(n)^2));end--> format('e',12);errore=z-%pi

Page 20: I numeri reali e la loro rappresentazione - mate.polimi.itfracal/teaching/mazarch/calnum/lezioni/CN02... · I numeri reali e la loro ... per effettuare la divisione fra due numeri

Paaina 20Elementi di Teoria degli Errorii

20

Sensitività (condizionamento) di un problemaSensitività (condizionamento) di un problema

Esistono problemi per loro natura sensibili a variazioni dei dati.

Esempio, risolvere l’equazione:(x-2)2 = 10-6

Soluzione: x = 2 ±±±±10-3

alteriamo il secondo membro: (x-2)2 = 4⋅⋅⋅⋅10-6

Soluzione: x = 2 ±±±± 2⋅⋅⋅⋅10-3

Page 21: I numeri reali e la loro rappresentazione - mate.polimi.itfracal/teaching/mazarch/calnum/lezioni/CN02... · I numeri reali e la loro ... per effettuare la divisione fra due numeri

Paaina 21Elementi di Teoria degli Errorii

21

ConclusioniConclusioni

1. Nelle computazioni gli errori sono sempre presenti (finitezza della rappresentazione su elaboratore)

2. Utilizzare algoritmi stabili per evitare di propagare gli errori

3. Esistono problemi sensibili alle variazioni sui dati (problemi mal condizionati) che vanno trattati con particolare attenzione.