[C][?]Cálculo del seno por suma de Taylor

Iniciado por Diego CCH, 25 Septiembre 2021, 08:32 AM

0 Miembros y 1 Visitante están viendo este tema.

Diego CCH

Hola, esta es la primera vez que escribo, estoy aprendiendo a programar en C y uno de los ejercicios me pedía hallar el seno usando sumas de Taylor, empecé escribiendo un pseudocódigo e Psint, funcionó sin problemas pero al momento de escribir el código en C y al ejecutarlo e ingresar el ángulo da como resultado #INF00 cuando es mayor a 1.5 rad.

He revisado varias veces mi código y no llego a encontrar el error por mi mismo, agradecería mucho que me ayudaran a identificar mi error.

#include<stdio.h>
#include<math.h>

int main(){

int n_termino,factorial;
double angulo,sumatoria,termino;
printf("Ingrese el angulo:\n"); //Ángulo en radianes
scanf("%lf",&angulo);

termino=angulo; //El primer término es igual al ángulo
sumatoria=0; //Sumatoria total
n_termino=1; //Número de orden del término
factorial=1;

while(fabs(termino)>=0.0000001){ //Se detiene cuando el valor de los terminos es muy pequeño

if(n_termino==1){ //Para el primer termino

sumatoria=sumatoria+termino;
n_termino=n_termino+1;

printf("Termino %d Valor %lf\n",n_termino-1,termino);

}
else{

if((n_termino&2)==0){ //Demas terminos y variacion de signos

factorial=factorial*(2*n_termino-1)*(2*n_termino-2);
termino=(-1)*((double)pow(angulo,2*n_termino-1)/factorial);
n_termino=n_termino+1;
sumatoria=sumatoria+termino;

printf("Termino %d Valor %lf\n",n_termino-1,termino);

}
else{

factorial=factorial*(2*n_termino-1)*(2*n_termino-2);
termino=((double)pow(angulo,2*n_termino-1)/factorial);
n_termino=n_termino+1;
sumatoria=sumatoria+termino;

printf("Termino %d Valor %lf\n",n_termino-1,termino);

}

}

}

printf("El seno es %lf\n",sumatoria);

return 0;

}

MAFUS


Diego CCH

Ahh, cierto, ahí era % en lugar de &.
Lo corregí y se arregló el problema de los signos, antes no eran + - + - + -,etc
pero me sigue apareciendo #INF00 como valor de términos cuando ingreso un ángulo mayor a 1.5 rad