Fortran e precisione nei calcoli

From: H A L <dario.unipdRIMUOVI_at_libero.it>
Date: Wed, 23 Apr 2003 13:12:33 GMT

Ciao a tutti!

        Scusate la lunghezza del post, ma ho dubbio su come migliorare
l'approssimazione dei calcoli di un programma che ho scritto in Fortran
90 per agevolarmi la vita, ma che in realt� non ha ancora espresso le
sue potenzialit�.

        Il dubbio � presto detto: ho un campione di dati e ne devo
calcolare il relativo generico scarato medio, lo scarto quadratico
medio, il rapporto tra i precedenti valori, ecc...

        I dati sperimentali sono discreti al decimo di centimetro (la
media � 7.4cm). Ho inizializzato l'array contente i dati sperimentali
come REAL (KIND=4), e forse � questo che sbaglio.

        Per calcolare i generici scarti, sottraggo ad ogni valore
sperimentale la media aritmetica. Divido poi per il numero delle misure
e trovo il generico scarto medio (theta).

        Se stampo a monitor i risultati degli scarti per ogni singolo
valore sperimentale, vedo che i calcoli hanno una pesante
approssimazione, per esempio:


Valore Sperimentale Media Scarto
6.7 6.6 9.999971E-02
6.3 6.6 -0.2999999
6.6 6.6 -0.6000001
7.0 6.6 0.3999999


Mi rendo conto di quanto poco varia lo scarto, ma vi assicuro che
quegli errori si ripercuotono al centesimo sullo scarto quadratico
medio e su altri valori... al punto da ottenere un determinato valore
di aspettazione come 0.41231 al posto di 0.67...

Allora, chiedo, c'� un modo per aumentare le cifre dopo la virgola?
Basterebbero anche 12 cifre decimali, credo, per abbattere in buona
misura l'approssimazione (forse KIND=8, o qualcosa di simile?). Oppure,
c'� un modo per formattare i valori alla approssimazione voluta?

Scusate le domande, forse banali, ma sono un po' autodidatta... :-)

PS: Scusate se posto sia in *.fisica c he in *.matematica, ma non sono
sicuro di chi sarebbe stata la competenza...
__________________________
H A L
Received on Wed Apr 23 2003 - 15:12:33 CEST

This archive was generated by hypermail 2.3.0 : Sun Nov 24 2024 - 05:10:35 CET