Ciao a tutti, qualcuno mi può dare delle dritte? Devo trovare il valore della funzione tangente con angolo noto. Ho provato prima a farlo solo per cosx e mi viene:
poi ho provato con senx, ma il risultato non so per quale motivo non viene:codice:#include <stdio.h> #include <math.h> float cosine(float, float); int main() { float ang,rad,acc; ang=10; rad=((ang*3.141592)/180); acc=4; printf("Programma per il calcolo del coseno di un angolo\n"); printf("mediante sviluppo in serie di Taylor\n"); printf("Il coseno di %f vale %f\n",ang,cosine(rad,acc)); #ifdef DEBUG printf("Per confronto la funzione di libreria fornisce il valore %f\n", cos(rad)); #endif system("PAUSE"); return 0; } float cosine(float rad, float acc) { float previsto, corrente, x; int nfatt=1, sign=1; int n, nmax=120; previsto = 1; x = 1; for (n=1; n<nmax; n++) { nfatt = nfatt*(2*n)*(2*n-1); sign = sign*(-1); x = x*rad*rad; corrente = previsto + (sign*x)/nfatt; if ( fabs(previsto - corrente) < fabs(acc) ) return corrente; previsto = corrente; } printf("Numero massimo di cicli superato\n"); return corrente; }
per ultimo ho provato a d unirli per ricavare la tangente tramite senx/cosx....ma non so come implementare tan=senx/cosx:codice:#include <stdio.h> #include <math.h> float senine(float,float); int main() { float ang,rad,acc; ang=10; rad=((ang*3.141592)/180); acc=4; printf("Programma per il calcolo di sen(10)\n"); printf("con sviluppo in serie di Taylor\n"); printf("il seno di 10 vale %f\n",ang,senine(rad,acc)); #ifdef DEBUG printf("Per confronto la funzione di libreria fornisce il valore %f\n", sen(ang)); #endif system("PAUSE"); return 0; } float senine(float rad, float acc) { float pre, cur, y, z; int fatt=1, segn=1; int m, ntot=70; pre = 1; y=1; z=1; for (m=1; m<ntot; m++) { fatt = fatt*(2*m+1)*(2*m); segn = segn*(-1); y=y*rad*rad; z=y*rad; cur = pre + (segn*z)/fatt; if ( fabs(pre - cur) < fabs(acc) ) return cur; pre = cur; } }
mi potete aiutare??codice:#include <stdio.h> #include <math.h> float coseno(float,float); float seno(float,float); int main() { float ang,rad,acc,tan; ang=10; rad=((ang*3.141592)/180); acc=4; tan=(seno(rad,acc)/coseno(rad,acc)); printf("Programma per il calcolo della tangente di 10 gradi sessagesimali\n"); printf("mediante sviluppo in serie di Taylor\n"); printf("la tangente di 10 vale %f\n",tan); system("PAUSE"); return 0; } float coseno(float rad, float acc) { float prev, curr, x; int nfatt=1, sign=1; int n, nmax=70; prev = 1; x = 1; for (n=1; n<nmax; n++) { nfatt = nfatt*(2*n)*(2*n-1); sign = sign*(-1); x = x*rad*rad; curr = prev + (sign*x)/nfatt; if ( fabs(prev - curr) < fabs(acc) ) return curr; prev = curr; } printf("Numero massimo di cicli superato\n"); return curr; } float seno(float rad, float acc) { float pre, cur, y, z; int fatt=1, segn=1; int m, ntot=70; pre = 1; y=1; z=1; for (m=1; m<ntot; m++) { fatt = fatt*(2*m+1)*(2*m); segn = segn*(-1); y=y*rad*rad; z=y*rad; cur = pre + (segn*z)/fatt; if ( fabs(pre - cur) < fabs(acc) ) return cur; pre = cur; } printf("Numero massimo di cicli superato\n"); return cur; }![]()

Rispondi quotando
