Ver Mensaje Individual
  #4 (permalink)  
Antiguo 28/07/2014, 08:03
Avatar de leosansan
leosansan
 
Fecha de Ingreso: mayo-2012
Ubicación: GRAN CANARIA
Mensajes: 194
Antigüedad: 12 años
Puntos: 49
Respuesta: problema con resultado de e^x

Uno de los problemas que te pueden surgir radica en que el número de sumandos, que tienes fijado en 20, varía con el valor de x, a mayor valor más sumandos. Así, por ejemplo, para x = 10 tendrías que tomar para una buena aproximación 30 sumandos. Una forma de contemplar este hecho sería ir comparando el valor de "e" actual con el anterior y si es menor que un valor de precisión que fijas tú se aborta el sumatorio.

¿He dicho 30?. Pues sí. Basta con declarar las dos funciones y a la variable "fact" como double.

Y una cosita curiosa, puedes prescindir de la librería math, que por cierto en C++ es más correcto poner <cmath> que <math.h> (que es más propio de C), así como de la función "pow "mediante una variable estática, esas que conservan su valor entre las distintas llamadas a la función. Algo como:

Código C++:
Ver original
  1. double exponencial( double x , int n ) {
  2.     double exp;
  3.     static double poW = 1 ;
  4.     exp = poW / factorial( n );
  5.     poW *= x ;
  6.     return exp;
  7. }

¡¡¡Saluditos!!!