Foros del Web » Programación » C/C++ »

[SOLUCIONADO] progama e^x

Estas en el tema de progama e^x en el foro de C/C++ en Foros del Web. Hola espero que me puedan ayudar. debo programar esta ecuacion ya tengo gran parte del programa pero no se como hacer que las iteraciones lleguen ...
  #1 (permalink)  
Antiguo 24/03/2013, 15:43
 
Fecha de Ingreso: marzo-2013
Mensajes: 11
Antigüedad: 1 año, 1 mes
Puntos: 0
Pregunta progama e^x

Hola espero que me puedan ayudar.

debo programar esta ecuacion
ya tengo gran parte del programa pero no se como hacer que las iteraciones lleguen a infinito
Código C:
Ver original
  1. #include<stdio.h>
  2.  
  3. main(){
  4.     float p,w=1,x,sum=0;
  5.     printf("Programa para calcular e^x\n");
  6.     printf("Dame X ");
  7.     scanf("%f",&x);
  8.     float fac;
  9.     float d=0;
  10.     for(int n=0;n<=20;n++){
  11.         fac=1;
  12.         if(n==0){
  13.         p=1;
  14.         fac=1;
  15.         }
  16.         else {
  17.         p=x*w;
  18.         w=p;
  19.         for(int b=1;b<=n;b++){
  20.              fac=fac*b;
  21.              }
  22.         }
  23.         d=w/fac;
  24.        
  25.         sum=sum+d;
  26.     }
  27. printf ("Exponencial es = %f",sum);
  28. }
  #2 (permalink)  
Antiguo 24/03/2013, 16:55
 
Fecha de Ingreso: julio-2012
Mensajes: 291
Antigüedad: 1 año, 9 meses
Puntos: 21
Respuesta: progama e^x

Cita:
Iniciado por nandaarea Ver Mensaje
ya tengo gran parte del programa pero no se como hacer que las iteraciones lleguen a infinito
Deja el segundo campo del for (n<20) en blanco.

Pero eso no tendría ningún sentido, el programa continuaría hasta el infinito y nunca obtendría un resultado... Tienes que programar con aproximaciones (puedes hacer 30 iteraciones o pedirle al usuario cuantas iteraciones quiere realizar).
  #3 (permalink)  
Antiguo 25/03/2013, 09:54
 
Fecha de Ingreso: marzo-2013
Mensajes: 11
Antigüedad: 1 año, 1 mes
Puntos: 0
Respuesta: progama e^x

Cita:
Iniciado por amchacon Ver Mensaje
Deja el segundo campo del for (n<20) en blanco.

Pero eso no tendría ningún sentido, el programa continuaría hasta el infinito y nunca obtendría un resultado... Tienes que programar con aproximaciones (puedes hacer 30 iteraciones o pedirle al usuario cuantas iteraciones quiere realizar).
es cierto ya le pregunte al profe y me dijo que pusiera de limite la division; que cuando d>0.1 ya dejara de hacer iteraciones lo modifique y asi queda.

Código C:
Ver original
  1. #include<stdio.h>
  2.  
  3. main(){
  4.     double p,w=1,x,sum=0,r=0,f,d=0;
  5.     int k=0;
  6.     printf("Programa para calcular e^x\n");
  7.     printf("Dame X");
  8.     scanf("%lf",&x);
  9.     do{
  10.        if(k==0){
  11.           w=1;
  12.           f=1;
  13.          }
  14.        else{
  15.          p=x*w;
  16.          w=p;        
  17.          f=1;
  18.          int b;
  19.          for(b=1;b<=k;b++){
  20.              f=f*b;
  21.             }
  22.          }
  23.        k++;
  24.        d=w/f;
  25.        
  26.        sum=sum+d;
  27.     }while(d>0.1);
  28.     printf ("\n\n e^x = %.5lf",sum);
  29.    }
pero ahora hay otro problema en teoria el programa debiería hacer hasta e^100 pero cuando lo ingreso me da de resultado esto e^x=-1.#INDO ¿porque sale eso?
  #4 (permalink)  
Antiguo 25/03/2013, 10:50
Avatar de L3m0n  
Fecha de Ingreso: diciembre-2011
Mensajes: 219
Antigüedad: 2 años, 3 meses
Puntos: 46
Respuesta: progama e^x

Los int y double tienen un limite, no puedes ponerles el numero que te rote porque tienen un limite, creo que podias saber el limite haciendo #include <limits.h> y un INT_MAX o algo así. Si quieres usar numeros mucho mas grandes tendras que usar alguna libreria de matematicas, como la de GNU.



Saludos
  #5 (permalink)  
Antiguo 28/03/2013, 02:03
Avatar de dontexplain  
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 1 año, 10 meses
Puntos: 126
Respuesta: progama e^x

Pero cómo vas a llegar al infinito?

¿Hablas en serio o tratas de trolearnos?

¿Puedo saber qué estás estudiando? Supongo que hace falta un arreglo profundo del sistema educativo elemental porque ni a mí con 12 años se me hubiera ocurrido que un programa pudiera llegar al infinito numérico.
__________________
21añero.
HTML/CSS, PHP, JS/jQuery, Mysql; NodeJS/Socket.io (& V8); C++ ; Python (wxpy); Ensamblador.
Músico (clarinetista/pianista) y compositor
  #6 (permalink)  
Antiguo 01/04/2013, 23:49
 
Fecha de Ingreso: septiembre-2012
Ubicación: Lima
Mensajes: 46
Antigüedad: 1 año, 7 meses
Puntos: 4
Respuesta: progama e^x

puedes usar long long double o long double no estoy seguro cual es el maximo, para forzar la utilizacion de numeros muy grandes, esa serie deberia converger rapido si es que existe convergencia, no vas a necesitar mas de 50 terminos
  #7 (permalink)  
Antiguo 02/04/2013, 02:12
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 496
Antigüedad: 3 años, 10 meses
Puntos: 60
Respuesta: progama e^x

Esa serie siempre es convergente, y converge rápidamente incluso para valores de 'd' muy pequeños. El programa funciona correctamente. Lo que sí que he observado es que, al menos en mi compilador (Gcc 4.7.3 con Codeblocks 12.11 en Windows XP), en el printf final, si especifico %lf siempre me da como resultado 0.00000 pero sí que me da el resultado correcto si especifico %f. Hasta donde yo sé, el formato %lf es obligatorio si quieres leer un double con scanf, pero para printf daba igual %f que %lf, debe ser que han debido cambiar eso en la última revisión del estándar.
  #8 (permalink)  
Antiguo 04/04/2013, 09:42
Avatar de dontexplain  
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 1 año, 10 meses
Puntos: 126
Respuesta: progama e^x

Los registros más grandes de la CPU son los xmm (del 0 al 15 o más), de 128 bits, que permiten varias posibilidades de almacenamiento

1. 2 números de 64 bits (flotantes de doble precisión o estándar)
2. 4 enteros de 32 bits (normales, int)
3. 8 enteros cortos (short int)
4. 16 chars (1 byte)

El máximo sería entonces un número de 64 bits flotante, de 52 bits la fracción y 11 bits el exponente y un bit adicional para el signo.
__________________
21añero.
HTML/CSS, PHP, JS/jQuery, Mysql; NodeJS/Socket.io (& V8); C++ ; Python (wxpy); Ensamblador.
Músico (clarinetista/pianista) y compositor
  #9 (permalink)  
Antiguo 22/04/2013, 14:30
 
Fecha de Ingreso: marzo-2013
Mensajes: 11
Antigüedad: 1 año, 1 mes
Puntos: 0
Respuesta: progama e^x

Gracias a amchacon, L3m0n, dontexplain, pepon01 yFw190 por sus comentario y aportes ya modifique el programa utilizando el double float. Asi que espero contar con sus comentario en otra duda futura posible.

Gracias

Etiquetas: programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:12.
SEO by vBSEO 3.3.2