Esercizi riguardanti la teoria di aritmetica floating-point
Buongiorno,
ho avrei qualche domanda di teoria riguardante l'aritmetica floating point, in effetti ho il pdf proposto dalla professoressa.
Vi volevo chiedere se posso pubblicarlo, cossiché dopo averlo commentato ne facciamo un confronto.
Ciao
ho avrei qualche domanda di teoria riguardante l'aritmetica floating point, in effetti ho il pdf proposto dalla professoressa.
Vi volevo chiedere se posso pubblicarlo, cossiché dopo averlo commentato ne facciamo un confronto.
Ciao
Risposte
Quali sono i tuoi dubbi sull'aritmetica floating-point? Puoi inserire il link se vuoi o riportare la parte del documento che non ti è chiara.

Buongiorno si dovrebbe vedere la foto.
Rispondo alle prim sei domande presenti nella foto, ovviamente se le risposte sono incomplete aggiungete pure


Per il seguito considero l'insieme dei numeri macchina $F(N,t,U,L)$ dove $N$ base, $t$ cifre a disposizione per la mantissa, $U,L$ range per l'esponente del numero macchina, inoltre con $a=p*N^q$ intendo un numero già in forma normalizzata ed con $a'=p'N^q$ numero macchina relativo ad $a.$
1. Nella somma con uno, la precisione di macchina viene sentita poco ma viene sentita, invece il più piccolo numero rappresentabile no.
2. E' il massimo errore relativo che si commette nel rappresentare un numero reale $x$ nel sistema floatig-point, ossia sia $a'$ una approsimazione di $a$ con la tecnica di arrotondamento, risulta $|a-a'|/|a| le 1/2*N^(1-t)="eps"$
3. Quì si dovrebbero fare dei conti:
Sia $a in R\:\ a=pN^q$ e $a'=p'N^q$,
Osserviamo che $p,p'$ risultano $|p-p'|le 1/2*N^(-t)$, inoltre
$|a'|=|p'|*N^q geN^(-1)N^qgeN^(-1) leftrightarrow 1/(|a'|) le 1/N^(-1)$
Infine
$(|a-a'|)/(|a|) le1/2(N^(-t))/N^(-1)=1/2N^(1-t)="eps"$
4. Siano $a'=p'N^q$ numero macchina, se $q>L$ allora si ha overflow.
Per un esempio, consideriamo l'insieme dei numeri macchina $F(10,4,-99,+99)$
$a=9.3122*10^99$ risulta $a'=0.9312*10^100$, in tal caso $a'$ ci da il fenomeno di overflow.
5. E' simile alla precedente.
6. Sia $a=p*N^q in R$ l'arrotondamento avviene quando $a$ è rappresentabile, ma non esattamente in $F$ in particolare quado $U le q le L$.
Quindi per poter rappresentare si hanno a disposizione due tecniche: troncamento, arrotondamento.
Parlo dell'arrotondamento poiché è il maggiormente usato.
Considero esplicitamente $a'=0.p_1p_2p_3...p_tp_(t+1)...N^q$
la tecnica dell'arrotondamento consiste nel sommare la quantità $1/2*N$ alla $(t+1)$ esima cifra della sua mantissa e poi troncare la mantissa ottenuta alla t-esima cifra, un esempio
$F(10,4,-99,+99)$
$a=1,23767*10^8 \to\a'=0.123767*10^9$ mediante la tecnica dell'arrotondamento, otteniamo
$a'=0.1238*10^9$
Giusto per non creare confusione, controlliamo prima queste risposte poi rispondo alle rimanenti domande.
1. Personalmente non ho idea di cosa dovrebbe significare la risposta alla domanda 1.
2. La risposta 2 mi sembra corretta.
3. L'errore relativo è sempre lo stesso.. per cui suppongo non fosse necessario alcun calcolo.
4. Ok
5. Ok
6. Le tecniche possibili sono più di due. In ogni caso c'è anche da parlare di cosa fare nel caso intermedio nell'arrotondamento. Quando insomma il valore è esattamente tra i due valori rappresentabili.
2. La risposta 2 mi sembra corretta.
3. L'errore relativo è sempre lo stesso.. per cui suppongo non fosse necessario alcun calcolo.
4. Ok
5. Ok
6. Le tecniche possibili sono più di due. In ogni caso c'è anche da parlare di cosa fare nel caso intermedio nell'arrotondamento. Quando insomma il valore è esattamente tra i due valori rappresentabili.
"apatriarca":
1. Personalmente non ho idea di cosa dovrebbe significare la risposta alla domanda 1
Nel senso che non hai la minima idea dell'eventuale risposta alla 1 domanda, oppure ho la risposta che ho dato è priva di senso.
"apatriarca":
2. La risposta 2 mi sembra corretta.
Come avresti risposto ?
"apatriarca":
6. Le tecniche possibili sono più di due. In ogni caso c'è anche da parlare di cosa fare nel caso intermedio nell'arrotondamento. Quando insomma il valore è esattamente tra i due valori rappresentabili.
Si mi sono espresso male io, volevo intendere che io ne conosco due, ovvero conosco la tecnica del troncamento e la tecnica dell'arrotondamento.
Comunque, osserviamo che le mantisse $p'$ dei numeri macchina $N^(-1)le|p'|<1$, non hanno più di $t$ cifre, e la distanza tra due numeri macchina $p'_1, p'_2$ è $N^(-t)$, quindi è possibile supporre che un numero reale con mantissa $p$, tale mantissa sia compresa tra due mantisse macchine.
Con la tecnica di arrotondamento, tutte le mantisse comprese nell'intervallo $(p'_1,p'_1+1/2N^(-t))$ vengono sostituite con $p'_1$ invece tutte le mantisse comprese nell'intervallo $[p'_1+1/2N^(-t),p'_2)$ vengono sostituite con $p'_2$.
Per quanto riguarda la tua prima risposta, non credo risponda alla domanda. Una qualsiasi risposta dovrebbe chiarire che cosa siano le due grandezze di cui ti chiede il confronto.
Il valore \(p'_1 + N^{-t}/2\) non appartiene ad alcuno dei due insiemi numerici per cui è necessario scegliere una regola per decidere se il valore restituito dall'approssimazione è \(p'_1\) p \(p'_2\). In questa pagina di wikipedia sono descritte un po' di regole diverse: https://en.wikipedia.org/wiki/Rounding
EDIT: Avevo letto male gli insiemi e non avevo notato che consideravi il valore intermedio appartenente al secondo insieme. Tuttavia il primo insieme è sbagliato perché dovrebbe essere chiuso a sinistra. La tua scelta è comunque totalmente arbitraria e in effetti non è quella comunemente usata in pratica.
Il valore \(p'_1 + N^{-t}/2\) non appartiene ad alcuno dei due insiemi numerici per cui è necessario scegliere una regola per decidere se il valore restituito dall'approssimazione è \(p'_1\) p \(p'_2\). In questa pagina di wikipedia sono descritte un po' di regole diverse: https://en.wikipedia.org/wiki/Rounding
EDIT: Avevo letto male gli insiemi e non avevo notato che consideravi il valore intermedio appartenente al secondo insieme. Tuttavia il primo insieme è sbagliato perché dovrebbe essere chiuso a sinistra. La tua scelta è comunque totalmente arbitraria e in effetti non è quella comunemente usata in pratica.
Per quanto riguarda il punto 1. l'ho riletta, non sono stato molto chiaro..stress esami
comunque volevo dire:
$"eps" in F$ è il più piccolo numero in valore assoluto diverso da zero che sommato con uno, dà un risultato diverso da uno, invece, il più piccolo numero rappresantibile è il più piccolo numero in valore assoluto diverso da zero dell'insieme dei numeri macchina $F$.
Si hai ragione l'insieme deve essere chiuso a sinitra, invece per la scelta, l'ha decisa la prof.

$"eps" in F$ è il più piccolo numero in valore assoluto diverso da zero che sommato con uno, dà un risultato diverso da uno, invece, il più piccolo numero rappresantibile è il più piccolo numero in valore assoluto diverso da zero dell'insieme dei numeri macchina $F$.
"apatriarca":
EDIT: Avevo letto male gli insiemi e non avevo notato che consideravi il valore intermedio appartenente al secondo insieme. Tuttavia il primo insieme è sbagliato perché dovrebbe essere chiuso a sinistra. La tua scelta è comunque totalmente arbitraria e in effetti non è quella comunemente usata in pratica.
Si hai ragione l'insieme deve essere chiuso a sinitra, invece per la scelta, l'ha decisa la prof.