« Forum anonimo (sperimentale)

Precisione float

10 replies
Last
Buongiorno, durante l'incontro di oggi pre-compitino si è discusso come argomento la precisione dei numeri float.

il mio dubbio è sul come calcolare a che precisione posso arrivare nel rappresentare numeri in un certo range e come calcolare l'errore relativo che compio rappresentando tali numeri. c'era un esercizio simile nelle esercitazioni ma si parlava di numeri a virgola fissa, per cui mi chiedevo se la procedura di calcolo fosse diversa in base al sistema che di rappresentazione che uso (virgola fissa o virgola mobile).

10 replies
  1. Re: Precisione float
    Non sono sicuro riguardo a come svolgere questi esercizi con la virgola mobile (immagino che si debba calcolare i bit da assegnare ad esponente e mantissa, ma non saprei che proporzioni scegliere sinceramente).

    Per quanto riguarda gli esercizi che ci sono sull'elearning io ho fatto così (come esempi ho preso l'esercizio 21 di esercitazione1-CodificaNumeriTesto.pdf nella sezione di rappresentazione dell'informazione):

    1 - calcolo il range di valori da rappresentare: valore assoluto tra la sottrazione dei 2 numeri che indicano l'inizio e la fine del range -> es. |5-17.8| = 12.8

    2 - calcolo il numero di informazioni rappresentabili tramite il numero di bit che possiamo utilizzare: 2^n dove n = bit utilizzati -> es. 2^7 = 128

    3 - divido il num di informazioni rappr. (2) per il range (1) e ottengo un numero che va arrotondato per difettto alla potenza di 10 più vicina (immagino, vada arrotondata per difetto per logica ma in realtà negli esercizi che ho fatto per ora mi è sempre uscita direttamente una potenza di 10). Da questa potenza possiamo capire il numero di valori da rappresentare dopo la virgola: 10^k dove k sono appunto il numero di valori rappresentabili dopo la virgola -> es. 128 / 12.8 = 10, (10 = 10^1), k=1, possiamo rappresentare un valore dopo la virgola.

    4 - calcoliamo il valore più vicino rappresentabile con il numero di spazi dopo la virgola che abbiamo a disposizione (arrotondandolo per difetto o per eccesso se necessario) -> es. vogliamo rappresentare 14.888 ma sappiamo che possiamo utilizzare solo uno spazio dopo la virgola quindi lo arrotondiamo per eccesso a 14.9

    5 - calcoliamo l'errore di approssimazione, sottraendo al numero che volevamo rappresentarare il numero che possiamo rappresentare con i bit che abbiamo a disposizione -> es. 14.888 - 14.9 = - 0.012

    Potrei aver fatto degli errori, spero di essere stato chiaro.

    2 replies
  2. Re: Precisione float

    Mi spiace di non riuscire a leggere con attenzione questa risposta, ma la preparazione del compitino mi sta assorbendo totalmente. Spero qualche collega possa risponderle in modo adeguato prima di domani.

  3. Re: Precisione float
    Buonasera

    ho visto ora che era rimasta in sospeso questa richiesta di conferma sulla risposta data dal collega.

    Confermo che è corretto per questo tipo di esercizi relativo al calcolo dell'errore con una codifica in virgola fissa.


    1 reply
  4. Re: Precisione float
    Buonasera, so che c'è già stata una discussione a riguardo, volevo chiedere come si facesse un esercizio simile ovvero del calcolo dell'errore ma in virgola mobile.

    Visto che al primo parziale mi ero trovato una domanda del genere e non sapevo come procedere.

    Grazie mille

    1 reply
  5. Re: Precisione float
    Si tratta sempre di capire quanto si sbaglia nel rappresentare un numero reale attraverso un sistema di rappresentazione in cui viene approssimato, cioè rappresentato da un altro numero con un errore quantificabile. 

    Nel caso di un sistema che prevede la virgola mobile, si possono pensare esercizi in cui conosciamo il numero da rappresentare ma il numero di bit messi a disposizione per segno, esponente e mantissa non sono sufficienti per rappresentarlo senza errore; oppure esercizi in cui ci viene chiesto di terminare il numero di bit necessari (ad esempio per l'esponente e/o mantissa) per rappresentare un determinato numero commettendo un determinato errore. 

  6. Re: Precisione float

    Scusate la sintesi, non so se qualche collega riuscirà ad intervenire con maggiore dettaglio, ma sono in ballo con la predisposizione del compitino.

    • oggi nell'inventare sui 2 piedi dei "tipi di esercizio" avevo ipotizzato che il numero di bit dedicati a mantissa ed esponente, oltre che alla loro codifica, vi fosse dato e vi venisse chiesto se fosse possibile ottenere una certa precisione;
    • certamente è possibile ipotizzare anche esercizi in cui vi chiediamo quanti bit debbano avere mantissa ed esponente affinché ci sia una certa precisione in un certo intervallo;
    • calcolare l'errore relativo è invece più semplice: basta dividere l'errore di approssimazione (il delta - delta / 2 - tra 2 codici consecutivi) per il valore di uno dei 2 codici;
    • quindi certamente le procedure sono diverse tra virgola fissa e mobile.
    2 replies
  7. Calcolare precisione con virgola mobile
    Salve, parlo a nome di un grande gruppo di studenti, non abbiamo mai fatto questo tipo di esercizio, come ha indicato nel secondo punto ("esercizi in cui chiedono quanti bit devono avere mantissa ed esponente affinché ci sia una certa precisione in un certo intervallo").

    Può darci una breve spiegazione a riguardo?

    La ringrazio in anticipo e le chiedo scusa per il distrurbo.

    1 reply
  8. Re: Calcolare precisione con virgola mobile

    Se è invece chiaro come capire quale precisione è consentita da una certa scelta di (bit e codifica e "1." sotto inteso) per esponente e mantissa, allora basta "girare il ragionamento": procedendo a tentativi, se sposto ad esempio 1 bit dall'esponente alla mantissa mi domando se riesco con l'esponente a raggiungere grossolanamente la dimensione del numero e con la mantissa ad avere una spaziatura sufficientemente piccola da soddisfare la richiesta. Comunque, non credo che metteremo questo tipo di domanda domani...

  9. Re: Precisione float
    Buongiorno, se possibile potrebbe spiegare brevemente come effettuare il calcolo per ottenere quanti bit debbano avere mantissa ed esponente affinché ci sia una certa precisione in un certo intervallo, perchè riguardando nei pdf che sono presenti nel moodle del corso non riesco a trovare la risoluzione di un esercizio simile. 

    La ringrazio in anticipo per la risposta.

    1 reply
  10. Re: Precisione float

    È sempre possibile, nella vita reale, che appaiano problemi mai incontrati prima... Solo grazie al fatto di aver capito i concetti coinvolti in quel problema si può sperare di riuscire ad identificare una soluzione. Detto questo, se ipotizzassimo di tenere fisso il numero di bit e la codifica dell'esponente, spero sia chiaro che incrementando il numero di bit della mantissa si accresce la precisione ovvero si decrementa l'errore di approssimazione. Pertanto ad un certo punto, se non ci sono altri limiti al crescere del numero di bit per la mantissa, si raggiungerà la precisione richiesta.

    Comunque, come dicevo prima, voi siate pronti, ma non credo che inseriremo questo tipo di esercizio già domani.