Newsgroup: it.cultura.linguistica.italiano
Titolo: Approssimazione e arrotondamento

 `rounding'.
"Approximation" e "rounding" sono due concetti ben diversi, che solo
in taluni casi possono coincidere.
Non c'è bisogno dell'esperto per verificarlo: basta un dizionario.

 Non c'� bisogno dell'esperto per verificarlo: basta un dizionario.
Appunto. Perch� li confondi? Traduco in inglese, magari ti � pi� chiaro:
"what you are insistently calling approximation is actually called 
rounding".
A me � chiarissimo che approssimazione e arrotondamento sono due
concetti ben diversi, senza bisogno che me lo dica tu. L'inciso
tra parentesi � la spiegazione di ci� che /tu/ chiami approssimazione,
non quello che penso io. Magari non l'avevi capito. Devo andare in
cerca delle tue parole esatte o te le ricordi?
Ciao
Enrico

 cerca delle tue parole esatte o te le ricordi?
E' a cura dell'accusa portare prove.

 E' a cura dell'accusa portare prove.
====
Trovo paradossale, anche alla luce di ci� che affermi successivamente
a proposito di Excel, che tu preferisca il risultato sbagliato
chiamandolo approssimato e chiami non corretto quello che � invece
stato correttamente approssimato.
La migliore conversione che si possa fare da binario a decimale �
quella che d� il numero approssimato pi� vicino esprimibile con le
cifre decimali visualizzabili correttamente. Non certo il numero
troncato alle cifre visualizzabili. In altre parole si tratta di
perseguire il minimo errore possibile.
====
Devo aspettare l'arrampicata sugli specchi o la pianti?
Ciao
Enrico

 Devo aspettare l'arrampicata sugli specchi o la pianti?
Ho riletto più volte il mio scritto.
Continuo a non vederci alcuna inesattezza su quanto ho affermato a
proposito dei risultati di Excel.
Trovo invece fenomenale che tu insista su una posizione che non è
supportata da alcunché.
A seconda dei casi, Excel fornisce il risultato corretto oppure
risultati non corretti.
A tuo parere i risultati che io chiamo corretti sembrano tali perché
sono approssimati.
Dalle prove fatte in pratica non c'è alcun arrotondamento del
risultato (a meno che sia eplicitamente richiesto) ma la
visulizzazione di tutte le cifre decimali richieste dall'utente anche
se a causa della propagazione degli errori sono sbagliate e quindi non
sono certo significative.
Non mi pare un'arrampicata sugli specchi e non ho difficoltà a portare
il tema sul NG più appropriato.
Scoccia solo che all'interno di un discorso di treni tu riapra un tema
che avevi chiuso.

 che avevi chiuso.
Scoccia solo che tu continui a scrivere "approssimare" quando va 
scritto "arrotondare". Secondo W. Kahan, che non � un pimpinello
qualsiasi, come ben sai, Excel arrotonda /sempre/, quando propone
il risultato convertito in decimale. Cos� come gli algoritmi che 
seguono lo standard IEEE 754 /arrotondano/ i risultati alla 53esima 
cifra binaria (dal momento che lavorano con pi� di 53 cifre).
Questione solo terminologica? Non credo. I calcoli sono approssimati,
e il risultato � un'approssimazione del valore "vero". Qualche volta
l'approssimazione � buona, qualche volta lo � meno, dipende da molti
fattori. Qualche volta il risultato � "apparentemente esatto", cio� 
coincide con il valore atteso; questo non � prevedibile in anticipo.
Casi come il quadrato della radice quadrata di 2 possono trarre in
inganno chi osserva il fenomeno ingenuamente o superficialmente.
Le tue "prove pratiche" non tengono conto dei calcoli effettivamente
svolti.
Ciao
Enrico

 svolti.
Questo non inficia minimamente il loro valore.
Le tue prove pratiche invece non sono neppure riproducibili!
Dal punto di vista scientifico contano infinitamente di più delle
prove che tutti possono riprodurre dalle prove pratiche fatte (forse)
da chi vuolo dimostrare qualcosa che di fatto NON avviene!
Ancora attendo di sapere cosa avrei scritto di sbagliato su
approssimazione e arrotondamento.

 wrote in message 
news:b4e07f54-fd37-4265...@l28g2000vba.googlegroups.com...
Ho riletto pi� volte il mio scritto.
Continuo a non vederci alcuna inesattezza su quanto ho affermato a
proposito dei risultati di Excel.
Trovo invece fenomenale che tu insista su una posizione che non �
supportata da alcunch�.
A seconda dei casi, Excel fornisce il risultato corretto oppure
risultati non corretti.
[...]
===========================================
Se ti riferisci al VBA l'asserzione � esatta per i VarType
Single e Double, laddove entra in ballo il Floating Point.
Per quanto riguarda le Worksheet Functions invece i calcoli
sono sempre esatti, tenendo presente che il massimo numero
di cifre significative in Excel � 15.
Ma, generally speaking, direi che si pu� parlare di approssimazione
solo quando il risultato di un'operazione non pu� essere determinato
con un numero finito di cifre.
In tale caso si avr� un'approssimazione con arrotondamento alla
seconda, alla quinta, alla ventesima... cifra.
Se il risultato consiste in un numero finito di cifre (n) come si fa a
parlare di approssimazione? si parler� di arrotondamento alla
m-esima cifra (m<n).
Certo che si pu� dire che 1.41 � il valore approssimato di Sqrt(2)
arrotondato alla seconda cifra decimale, che � il valore di Sqrt(2)
approssimato alla seconda cifra decimale, che � il valore di Sqrt(2)
arrotondato alla seconda cifra decimale.
E da sotto l'ombrellone, fra un ghiacciolo e l'altro, farne una bella
discussione...
Se no a che servon le vacanze?
Bruno

 approssimazione e arrotondamento.
"Prendere il numero pi� vicino" non si chiama approssimazione,
ma arrotondamento. Fin qui ci arrivi? Adesso ti svelo tutto il
segreto.
I calcoli in virgola mobile (binari) producono una mantissa con
53 cifre binarie. Dico giusto fin qui? Il numero 53 � scelto per
poter convertire correttamente in 15 cifre decimali. Ovviamente
i calcoli interni non si limitano a 53 cifre; il valore ottenuto
viene arrotondato alla 53esima cifra binaria. Ci siamo?
� il calcolo che � approssimato e il risultato � un'approssimazione
del risultato "vero". Questo � l'uso corretto del termine, che ti
piaccia o no.
� evidente a chiunque abbia gli occhi per vedere che Excel arrotonda
anche al numero di cifre decimali chieste nel formato della cella. Il
processore fornisce un numero in binario, gi� sottoposto a un
arrotondamento, come visto; poi Excel converte il numero in decimale e 
fa un secondo arrotondamento. Nel caso dell'operazione che ti sta tanto 
a cuore, il secondo arrotondamento non fa nulla, dal momento  che le 
cifre sono gi� tutte 0. In altri casi l'arrotondamento c'�. Ah, gli
arrotondamenti in realt� sono tre, perch� c'� anche quello iniziale
nella conversione da decimale a binario. Ma /tu/ non li vedi. Siccome 
ne ho trovato conferma in un interessante scritto di W. Kahan, mi fido 
perch� so riconoscere l'autorit� scientifica. La tua per me vale zero.
Ciao
Enrico

 perché so riconoscere l'autorità scientifica. La tua per me vale zero.
Ovvero preferisci il sentito dire (se mai lo comprendi) alle prove
pratiche?
Ti ripropongo quel semplice calcolo che dimostra che non c'è alcun
arrotondamento degno di tale nome.
Calcola 1 / 3 - 0,33333333333333
Il risultato esatto (si può calcolare a mente) è 3,3 periodico *
10^-15.
Excel restituisce 3,330669073875470000000000000000E-15
Ora, ti pare che 3,330669073875470 sia l'arrotondamento di
3,33333333333333333333?

 m-esima cifra (m<n).
Puoi parlare di approssimazione se non hai abbastanza cifre per
rappresentare correttamente il numero, anche se di lunghezza finita.

 3,33333333333333333333?
Ovviamente no. Il risultato non viene calcolato come pensi tu. Prima di 
tutto Excel converte i numeri in binario (con due arrotondamenti, nota, 
perch� i numeri sono due), poi chiede al processore di eseguire le 
operazioni richieste. Il processore fornisce un risultato senza alcuna 
pretesa che sia un arrotondamento di alcunch�. Ci� che fa � arrotondare 
al numero di cifre richiesto (53) il risultato ottenuto e passarlo a 
Excel che fa la conversione in decimale per mostrare il risultato, 
arrotondando al numero di cifre richieste nella cella in questione.
Quanti sono gli arrotondamenti eseguiti? Ho perso il conto. Per il
programma questa � la migliore approssimazione al risultato "vero".
Se per� scrivessi un'operazione del genere in un compito di analisi 
numerica, ti prenderesti una bella insufficienza. Continui a non capire 
come funziona il calcolo in virgola mobile. Complimenti.
Ti propongo questo: calcola il quadrato di 123456789,12346; Excel
(io ho provato con Calc) dovrebbe fornire il valore 
15241578780674500,000000000000000
mentre il valore esatto �
15241578780674471,3551223716
Se provi a calcolare la radice quadrata di 15241578780674500, trovi
(con Excel) proprio il numero di partenza, mentre la radice "vera"
� 123456789,12346011601175533471... Adesso li vedi gli arrotondamenti?
Che poi il calcolo sia in binario o in decimale cambia poco, visto che
gli algoritmi sono stati studiati con cura.
Chiamalo "approssimazione" se preferisci. Rimane un arrotondamento.
Ciao
Enrico

 Chiamalo "approssimazione" se preferisci. Rimane un arrotondamento.
Poco sopra, tu stesso l'hai chiamata "approssimazione".
Non si tratta di preferenze: ciascuno dei due termini ha un ben
preciso significato.

 preciso significato.
Infatti. Quello che tu non conosci.
Ciao
Enrico

 Infatti. Quello che tu non conosci.
Risposta degna di un personaggio come te.
Blateri blateri e blateri, ma finora, gli unici FATTI CONCRETI che
sono emersi finora sono eslusivamente errori tuoi, in particolare
l'attribuire a Excel ciò che è invece dovuto alla rappresentazione
"double precision" secondo lo standard IEEE 754 e che quindi riguarda
quasiasi programma fatto con qualsiasi linguaggio di programmazione
che utilizzi questo standard di formato numerico.

 che utilizzi questo standard di formato numerico.
Molto bene. Tu insisti che Excel non arrotonda; opinione non suffragata
dai fatti. Insisti che non c'� arrotondamento quando si calcola il
quadrato di un valore approssimato della radice di 2 e che la macchina
sa calcolare /esattamente/ radice di 2 al quadrato. Ovviamente non �
vero: il risultato � 2 /perch�/ c'� un arrotondamento. Lo fa la FPU o
lo fa Excel? Lo fanno entrambi, solo che il secondo arrotondamento �
inutile, visto che il numero ottenuto dalla FPU /�/ tondo.
Quanto alle "cifre sporche", un uso normale di Excel non le farebbe
vedere mai: nessuna persona sensata usa 15 cifre decimali in un foglio 
di lavoro. Cos� ci si sottopone agli arrotondamenti di Excel, 
ovviamente, che per�, se i calcoli sono impostati correttamente, non
fanno danni. Potrebbero, se qualche fesso prova a fare (1/3 - 0,333)*6
impostando tre cifre decimali nella cella. Il risultato � 0,002. Ancora
convinto che Excel non arrotondi? E se invece mette 1/3 nella cella A1,
0,333 nella A2 e nella A3 pone (A1-A2)*3 ottiene come risultato 0,000.
Naturalmente ci� accade perch� il valore mostrato nella cella /�/ quello
usato da Excel dimenticandosi di tutte le cifre successive. Secondo me
questo � sbagliato, perch� introduce errori grossolani. Ah, prima che
tu gridi alla menzogna, ti avviso che nelle preferenze generali ho
chiesto calcoli con 15 cifre decimali (che spiega il valore ottenuto
con il primo calcolo).
Ancora pi� carino � che se usi il formato "parte intera pi� frazione"
e scrivi "=2/3" nella cella ottieni "5/7". Non so se dipende da Calc,
non avendo Excel; puoi anche chiedere frazioni con numeratore e 
denominatore a due cifre, 2/3 diventa 65/97. :) Direi che � un formato
da evitare.
Puoi, per favore, piantarla di attribuirmi stupidit� quando � solo tua
testardaggine?
Ciao
Enrico

 [...] impostando tre cifre decimali nella cella [...]
Come ripetutamente detto, se io SCELGO di arrotondare è affar mio.
Qui si discuteva di arrotondamenti fatti da Excel CONTRO la mia
volontà.
Meno male che poco fa scrivevo di non tirare di nuovo in ballo questa
faccenda degli arrotondamenti utente: di nuovo su quelli siamo finiti!
Vedo che non c'è altro. Erano i tuoi ultimi colpi di coda?
Quindi rinunci definitamente a dimostrare le mie fesserie?
Neppure una sola, singola dimostrazione?

 dai fatti.
Innanzitutto io non ho scritto che non arrotonda mai, ma che non ha
arrotondato di sua iniziativa i risultati dei due calcoli portati a
esempio.
I fatti che lo dimostrano sono che quei risultati sono ben motivati
dalla rappresentazione IEEE 754 (come tu stesso hai finalmente
ammesso) e che gli stessi risultati vengono anche, per esempio, usando
variabili "double" in C#.

 15241578780674471,3551223716
La mia replica, in perfetta analogia alla tua, dovrebbe essere:
Il risultato, con 15 cifre, è 15241578780674500.

 No. È il risultato di un calcolo /stupido/.
Già! :-)
Allora spiegami come si determina il grado di stupidità dei calcoli,
visto che hai definito /stupido/ il calcolo 1 / 3 - 0,33333333333333
il cui risultato esatto, calcolabile con carta e penna, è 3,3
periodico * 10^-15.