Sumatorio de e^x

Iniciado por elisichi, 8 Junio 2017, 17:21 PM

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

elisichi

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;

}

MAFUS

Tu problema es el factorial de 30. ¡Es muy grande!