Foros del Web » Programación para mayores de 30 ;) » C/C++ »

problema con la serie de senx

Estas en el tema de problema con la serie de senx en el foro de C/C++ en Foros del Web. Hola estoy que intento hacer un algoritmo que me haga la funcion senx solo datos de entrada el angulo en radianes, tengo algo la idea ...
  #1 (permalink)  
Antiguo 13/04/2009, 21:44
 
Fecha de Ingreso: enero-2009
Mensajes: 53
Antigüedad: 15 años, 3 meses
Puntos: 1
problema con la serie de senx

Hola estoy que intento hacer un algoritmo que me haga la funcion senx solo datos de entrada el angulo en radianes, tengo algo la idea de como hacer la serie pero nose como hacerle el pare (ya q no existe infinito) , no lo quiero en funciones solo asi directo en el int main();


Código a:
Ver original
  1. #include <iostream.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <conio.h>
  5. #include <math.h>
  6.              
  7. int main()
  8. {  int op,i,fact,t,j,n;
  9.    
  10.     float serie1,serie2,suma,x;
  11.  
  12. printf("Introduce el valor en radianes:");
  13. scanf("%f",&x);
  14.  
  15.  
  16.  
  17. serie1=0.0;
  18. serie2=x;
  19. i=1;
  20. fact=1;
  21.  
  22. for(i=1;i<=n;i++)
  23. {
  24.  t=2i-1;
  25.  for(j=1;j<=t;j++)
  26.   { fact=fact*j;}
  27.  if((i%2)==0)
  28.  { suma=suma+pow(x,t)/fact;}
  29.  else
  30.  {suma=suma-pow(x,t)/fact;}
  31.  
  32. }
  33.  
  34. printf("El valor de senx es =%f",suma);
  35.       system("PAUSE");
  36.       return 0;
  37. }

asi es como lo estoy haciendo aunque no se si salga, espero me puedan ayudar como hacerle el pare como dije sin separar en funciones ya que todavia no me enseñan . espero su ayuda muchisimas gracias
  #2 (permalink)  
Antiguo 14/04/2009, 01:04
Avatar de fradve  
Fecha de Ingreso: abril-2009
Mensajes: 157
Antigüedad: 15 años
Puntos: 7
Respuesta: problema con la serie de senx

Hola que tal;


En primer lugar estás un poco confundido, porque usas un for que cuente hasta una variable que no has ingresado, tan solo has declarado n.

Para parar el calculo de la serie, como tienes declaradas serie1 y serie2 que por cierto no las usas, el valor de ambas debe coincidir. en tu variables necesitas un auxiliar que guarde el valor anterior alcanzado por la serie para poder hacer dicha comparación, por ejemplo serie1 puede ser quien almacene el valor anterior y serie2 donde se calcule el nuevo valor (todo esto dentro de un bucle).

Ademas el tipo de datos que utilizas para almacenar el factorial no es suficiente ya que te darán cifras muy grandes, puedes utilizar por ejemplo un long float, también antes de iniciar el bucle para el factorial debes porne en uno la variable fact.

Voy a ayudarte con el code:


Código:
#include<stdio.h>
#include<conio.h>
#include<math.h>

void main()
{
  long float ang=0,serie1=0,serie2=0,ex=3,sig=-1,fact=6;

  textmode(C80);
  clrscr();

  printf("CALCULO DEL SEN(X) MEDIANTE SERIES\n\n");
  printf("INGRESA EL VALOR DEL ANGULO EN RADIANES: ");
  scanf("%lf",&ang);

  serie2=ang;
  while(serie1!=serie2)
  {
    serie1=serie2;
    serie2=serie2+(sig*(pow(ang,ex)/fact));
    ex+=2;
    sig=sig*-1;
    fact=1;
    for(int i=1;i<=ex;i++)
     fact=fact*i;
  }
  printf("El Seno de %4.5f es: %4.8f",ang,serie2);
  printf("\nEl Seno exacto de %4.5f es: %4.8f ",ang,sin(ang));
  getch();
}
Espero que te sea de ayuda, y pon mucha atención a las recomendaciones de arriba sip...

Última edición por David; 14/04/2009 a las 21:25 Razón: Firma en el cuerpo del mensajes
  #3 (permalink)  
Antiguo 02/05/2009, 12:53
 
Fecha de Ingreso: enero-2009
Mensajes: 53
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: problema con la serie de senx

muchas gracias por la ayuda tenia una gran duda con la condicion del mientras pero ya me la quitaste.
  #4 (permalink)  
Antiguo 31/05/2012, 14:53
 
Fecha de Ingreso: mayo-2012
Mensajes: 8
Antigüedad: 12 años
Puntos: 0
Respuesta: problema con la serie de senx

me a servido de mucho ami tambien, gracias
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 13:47.