Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Devo risolvere il seguente esercizio: "Scrivere una function C per calcolare una somma con il criterio di arresto naturale." Non sapendo quale particolare somma utilizzare, ho scelta una sommatoria decrescente: fissato n, abbiamo
1
_
i^2 con i che va da 1 a n
Come criterio di arresto naturale, uso il seguente criterio: continuo a calcolare le somme fin quando somma temp è maggiore o uguale di somma_temp per l'epsilon macchina. Il programma, inoltre, mi chiede anche di calcolare l'errore di roundoff, inteso come valore assoluto di (risultato_esatto-risultato)/(risultato_esatto). Risultato_esatto è calcolato come double per ottere la massima precisione possibile, mentre risultato come float.
Ecco il codice:
Codice sorgente - presumibilmente C
#include <stdio.h>
#include <float.h>
#include <math.h>
void sommatoria (short n);
void main()
{
short n;
printf("Inserisci il numero n delle delle somme da fare: ");
printf("\nIl risultato calcolato come double e' = %lf\nIl risultato e' = %f\nL'errore di roundoff e' = %e\n", risultato_esatto, risultato, errore_roundoff);
if(errore_roundoff<(0,5*FLT_EPSILON))
printf("Il risultato e' di massima accuratezza!\n\n");
else
printf("il risultato non e' di massima accuratezza!\n\n");
}
Sembra funzionare correttamente. Qualcuno ha qualche consiglio da darmi? Ho sbagliato qualcosa secondo voi? Grazie in anticipo per le risposte.
Ultima modifica effettuata da MagoAntò il 01/06/2010 alle 20:17
Il risultato "esatto" dovresti calcolarlo algebricamente (a carta e penna), perchè anche il double ha delle approssimazioni, e quindi un relativo errore di arrotondamento (o round-off come lo vuoi chiamare)
Il risultato "esatto" dovresti calcolarlo algebricamente (a carta e penna), perchè anche il double ha delle approssimazioni, e quindi un relativo errore di arrotondamento (o round-off come lo vuoi chiamare)
Si, su questo hai ragione, ma è la professoressa che a lezione ci ha detto di usare il double come risultato esatto ed il float come sua approssimazione.