Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: elisichi en 8 Junio 2017, 17:21 PM

Título: Sumatorio de e^x
Publicado por: elisichi en 8 Junio 2017, 17:21 PM
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;

}
Título: Re: Sumatorio de e^x
Publicado por: MAFUS en 8 Junio 2017, 18:39 PM
Tu problema es el factorial de 30. ¡Es muy grande!