I numeri reali e la loro rappresentazione -...
Transcript of I numeri reali e la loro rappresentazione -...
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
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
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 “-”.
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
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.
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.
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
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
���-��������.��
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!
!��-������ �" �!��-������ �����
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εεεε
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).
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.
13
Propagazione degli errori
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|
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.
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
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.
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.
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
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
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.