11/01/10 22:54
Puffetta
Ciao!!!!!!!
Ho fatto questo codice per fare un programma che approssimi la funzione cos(x)con il polinomio di taylor. Solo che non riesco a far tornare il valore esatto del cos(x) dopo il ciclo. Mi sapete dire dove sbaglio?
Grazie mille in anticipo, mi siete di grande aiuto!
Ho fatto questo codice per fare un programma che approssimi la funzione cos(x)con il polinomio di taylor. Solo che non riesco a far tornare il valore esatto del cos(x) dopo il ciclo. Mi sapete dire dove sbaglio?
/*Scrivere un programma C++ che realizza un'approssimazione polinomiale (facendo uso del polinomio di Taylor con x0=0) della funzione cos(x) che sia accurata entro la tolleranza epsilon acquisita da tastiera. Considerare per il criterio di arresto il modulo dell'errore assoluto.*/ #include <stdio.h> #include<stdlib.h> #include <math.h> double power(double, int); double fattoriale (double, int); main() { float x/*angolo in radianti da inserire*/, eps/*tolleranza*/, app=1/*risultato approssimato*/; int x0=0, n=0;//grado polinomio int sign=1; do { printf("\n CALCOLO DELLA FUNZIONE cos x\n\n"); printf("\n Di quanti radianti e' l'angolo x= "); scanf("%lf", &x); } while((x>0)&&(x<(M_PI)/2)); printf("\n\n Inserire la tolleranza richiesta eps="); scanf("%lf", &eps); do { sign=-sign; app=sign*(app+(power(x, n)/ fattoriale(x, n))); n +=2; } while((fabs(cos(x)-app))<eps); printf("\n Il risultato finale e' cos(x)=%lf \n\n", app); printf("\n La libreria matematica dice cos(x)=%lf\n\n", cos(x)); system("PAUSE"); return 0; } double power (double x, int n) { int i; double p=1; for (i=1; i<=n; ++i) p=p*x; return p; } double fattoriale (double x, int n) { double fattoriale=1; for (int i=1; i<=n; i++) fattoriale=(fattoriale*i); return fattoriale; }
Grazie mille in anticipo, mi siete di grande aiuto!
aaa