Estoy intentando hacer un programa que calcule e^x, partiendo de su polinomio de Taylor:
http://recursostic.educacion.es/descartes/web/materiales_didacticos/Desarrollo_serie_taylor/expo.gif
Este es mi código. El programa compila, y da valores similares cuando elevo a valores menores que dos. Sin embargo, al elevar a valores más grandes, se dispara y se aleja del resultado. ¿Sabéis que error puede tener? Muchas gracias.
#include "stdafx.h"
#define N 30
double pot (float base, int exponente);
long int factorial (int k);
int _tmain(int argc, _TCHAR* argv[])
{
float base;
printf("Digite un numero para evaluar");
scanf("%f", &base);
double res=0;
double a;
long int b;
double r=0;
int k;
for (k=0; k<=N;k++)
{
a=pot(base,k);
b= factorial (k);
res=a/b;
r+=res;
}
printf("La evaluacion pedida es %.8lf", r);
return 0;
}
double pot (float base, int exponente)
{
int k;
double res=1;
for (k=1;k<=exponente;k++)
{res*=base;}
return res;
}
long int factorial (int k)
{
long int res=1;
int j;
for(j=k;j>=2;j--)
{res*=j;}
return res;
}
Tu problema es el factorial de 30. ¡Es muy grande!