Problema C: e^x mediante serie de Taylor

Buenos días!
Vereis, estoy haciendo una práctica de C en la que el enunciado es el siguiente:
Calcular (e^x), mediante una serie de Taylor. Desde teclado se introducirá el valor del exponente (numero entero) y el numero de términos de la serie.
e^x=1+(x^1/1!)+(x^2/2!)+(x^3/3!)+....


Yo lo que he hecho ha sido esto:
#include <stdio.h>
#include <math.h>
int factorial(int x){
   int resul;
   resul = 1;
   if(x>0) {
      while(x>1){
      resul = x * resul;
      x--;
   }
}
   return(resul);
}

void  main(){
   int i,n;
    float resul,x;
   resul=0;
   printf("Introduzca el numero por el que quiere elevar e y el numero de terminos de la serie\n");
   scanf("%f%i", &x, &n);
   for(i = 0;i < n;i++){
      resul=resul+(pow(x, i)/factorial(i));
   }
   resul=resul+1;
   printf("El resultado es %f",resul);
   getch();
}



La cuestión es que el profesor me ha dicho que así no se hace, y no tengo ni idea de como se debe hacer...
Alguna sugerencia??
Gracias!!
Por lo que veo, en la primera iteración (que debería valer 1), le acabas sumando otro 1 con lo que empiezas la serie con "2+...". Empezaría dándole a resul el valor 1, y el for lo empezaría a partir de i=1.

Aparte te aconsejaría que crearas una función para calcular la serie, igual que has hecho con el factorial, de manera que el main quedara más limpio (sólo recoger los datos, mandarlos a la función para que se realice el cálculo, y mostrar el resultado).

Taiyou
Taiyou escribió:Por lo que veo, en la primera iteración (que debería valer 1), le acabas sumando otro 1 con lo que empiezas la serie con "2+...". Empezaría dándole a resul el valor 1, y el for lo empezaría a partir de i=1.

Aparte te aconsejaría que crearas una función para calcular la serie, igual que has hecho con el factorial, de manera que el main quedara más limpio (sólo recoger los datos, mandarlos a la función para que se realice el cálculo, y mostrar el resultado).

Taiyou


Así lo haré, muchas gracias!!
Y no sera que lo quiere recursivo?

Es decir, una funcion tal que:

float Taylor(int x)
{
if(x==0) return 1;

return e^x/x! + Taylor(x-1);
}

(con sus pow y demas, tomatelo como un pseudocodigo)
darix escribió:Y no sera que lo quiere recursivo?

Es decir, una funcion tal que:

float Taylor(int x)
{
if(x==0) return 1;

return e^x/x! + Taylor(x-1);
}

(con sus pow y demas, tomatelo como un pseudocodigo)



No, no, es iterativo :)

Ya lo he solucionado, muchas gracias a los dos!
Es normal que estando en 1 (dentro de un mes 2) de bachillerato no me entere de casi nada de esto?

es decir entiendo lo que son las funciones en programación y tal, es más hice un proyecto en Lua, algo es algo xD.
kirtashtan escribió:Es normal que estando en 1 (dentro de un mes 2) de bachillerato no me entere de casi nada de esto?

es decir entiendo lo que son las funciones en programación y tal, es más hice un proyecto en Lua, algo es algo xD.


Yo en bachillerato no di absolutamente nada de programación...
PiraBeLiO escribió:
kirtashtan escribió:Es normal que estando en 1 (dentro de un mes 2) de bachillerato no me entere de casi nada de esto?

es decir entiendo lo que son las funciones en programación y tal, es más hice un proyecto en Lua, algo es algo xD.


Yo en bachillerato no di absolutamente nada de programación...



digo por mi edad, en el colegio no damos nada de programación Imagen
lo que se lo se por iniciativa propia XD
kirtashtan escribió:Es normal que estando en 1 (dentro de un mes 2) de bachillerato no me entere de casi nada de esto?

es decir entiendo lo que son las funciones en programación y tal, es más hice un proyecto en Lua, algo es algo xD.


Hombre... es que si no sabes lo que es una serie de Taylor, pues...

En primero de Bachillerato casi no sabes lo que es una función
kirtashtan escribió:Es normal que estando en 1 (dentro de un mes 2) de bachillerato no me entere de casi nada de esto?

es decir entiendo lo que son las funciones en programación y tal, es más hice un proyecto en Lua, algo es algo xD.


Seguro que ni cuando acabes segundo y hayas estudiado para la sele lo sabrás porque en bachillerato no se hace ni programación ni series de Taylor, ahora bien, en tu primer semestre de uni lo deberías de saber de sobra (Suponiendo que hagas alguna ingeniería o ciencias puras xD)

Un saludo
9 respuestas