DETERMINAZIONE DEL MACHEPS IN SINGOLA PRECISIONE

Contenuto

Script per la determinazione del Macheps in singola precisione

%----------------------------------------------------
%  Calcoli di Processo dell'Ingegneria Chimica
%  Davide Manca
%   5-Oct-2003 16:46:24
%  19-Nov-2004 16:46:39
%----------------------------------------------------

Testo del problema

Il macheps nel linguaggio dell'analisi numerica e in quello programmativo
è il più piccolo numero che sommato a 1 produce un nuovo numero maggiore di 1.
Ovvero: 1. + macheps > 1.
In Analisi Classica, relativamente a questo argomento, non possiamo parlare
prettamente di numero bensì di quantità tendente a zero: epsi.
Secondo le nozioni topologiche dell'analisi classica, preso un intorno epsi di 1,
piccolo a piacere, in tale intervallo cadono infiniti numeri reali (infiniti irrazionali ed
infiniti razionali).
Viceversa, l'Analisi Numerica a calcolatore, mostra come la capacità di risoluzione e
descrizione dei numeri da parte di un calcolatore, in virgola mobile, sia assolutamente
finita e limitata.
Realizzare un programma in Matlab per la determinazione del macheps in singola ed in doppia precisione.

Inizializzazione dell'ambiente

clear
clc
format long

Calcolo del Macheps in Singola Precisione (ciò è possibile da Matlab 7.0 in poi)

theSum = single(0.);
epsi = single(1.);
two = single(2.);
one = single(1.);

while theSum ~= one
   epsi = epsi / two;
   theSum = one + epsi;
end
epsi = two * epsi;   %  Fondamentale
disp('Macheps numerico = ')
disp(epsi)
Macheps numerico = 
   1.1920929e-007

Confronto con il Macheps secondo il formato previsto per i processori IEEE a 32 bit

disp('Macheps IEEE in singola precisione = ')
epsi2 = 2^-23;       %  Nel processore IEEE in singola precisione il numero di cifre della mantissa è pari a 23
disp(epsi2)
disp('Errore assoluto = ')
disp(abs(epsi-epsi2))
Macheps IEEE in singola precisione = 
    1.192092895507813e-007

Errore assoluto = 
     0