Autor Tema: funcion exp()  (Leído 4172 veces)

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

Desconectado hectdiaf

  • PIC10
  • *
  • Mensajes: 18
funcion exp()
« en: 31 de Marzo de 2010, 01:33:00 »
buenas noches

pregunta sencilla, alguien sabe como utilizar la funcion exp(), necesito calcular potencias negativas( 2^-1, 2^-2...)
 pero el resultado siempre es cero no se que tengo mal .

Código: CSS
  1. #include <16f873a.h>
  2. #use delay(clock=4000000)
  3. #FUSES XT,NOWDT
  4. #include <math.h>
  5. #include <LCD.c>
  6.  
  7. void main()
  8. {
  9. int i;
  10. int valor;
  11. lcd_init();
  12.  
  13.     for(i=0;i<=32;i++)
  14.    {
  15.     valor=1/exp(i*log(2));
  16.     printf(lcd_putc,"\f %u  - %u",valor,i);
  17.    }
  18. }

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: funcion exp()
« Respuesta #1 en: 31 de Marzo de 2010, 12:15:53 »
Hola

Ni valor ni i están declaradas como flotantes.

Código: [Seleccionar]
float i, valor;

Desconectado hectdiaf

  • PIC10
  • *
  • Mensajes: 18
Re: funcion exp()
« Respuesta #2 en: 31 de Marzo de 2010, 14:45:11 »
migsantiago grcias por tu respuesta

si tienes razon con lo de que mi variable valor tiene que ser float no habia caido en cuenta .

pero aun asi el problema persiste,  deje el programa aun mas sencillo el resultado deberia ser 0.5 y el resultado que me arroja es -16.16

Código: CSS
  1. #include <16f873a.h>
  2. #use delay(clock=4000000)
  3. #FUSES XT,NOWDT
  4. #use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8, parity=N)
  5. #include <math.h>
  6. #include <LCD.c>
  7.  
  8. int i;
  9. float valor;
  10.  
  11. void main()
  12. {
  13.  lcd_init();
  14.  
  15.  i=1;
  16.    valor = 1/exp(i*log(2));
  17.    printf(lcd_putc,"\f %f %u",valor,i);
  18.  
  19. }

igual esa expresion matematica aparece en la ayuda del compilador.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: funcion exp()
« Respuesta #3 en: 31 de Marzo de 2010, 14:48:26 »
Prueba haciendo una conversión de valor int a float sobre la variable i y escribiendo los decimales de 2.0.

Código: [Seleccionar]
i=1;
  valor = 1 / exp( (float)i * log(2.0));
  printf(lcd_putc,"\f %f %u",valor,i);

Desconectado alexysar

  • PIC16
  • ***
  • Mensajes: 206
    • e-Kit
Re: funcion exp()
« Respuesta #4 en: 31 de Marzo de 2010, 18:00:40 »
probe la forma que puso migsantiago y anda bien. Algunas aclaraciones:

log() , es una función que da el logaritmo neperiano, es decir, lo que nosotros anotariamos   ln()
exp() , eleva el número de euler a la potencia, es decir, nosotros anotariamos exp(5)=e^5

para hacer 2^-5 se puede usar;  pow(2,(-5));