• Lunes 13 de Mayo de 2024, 14:07

Autor Tema:  Ayuda Con Sumatorias  (Leído 1683 veces)

sebastian69

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Ayuda Con Sumatorias
« en: Domingo 5 de Junio de 2005, 19:20 »
0
Wolas amigos foreros quisiera que alguien me ayudase con las sumatorias, la sumatoria es la sgte

Suma(n)= x - [(x^3)/(3*3!)] + [(x^5)/(5*5!)] - [(x^7)/(7*7!)]...  ...termino n-simo
termino n-simo=[((-1)^(n+1))*(x^2n)]/[x*(2n-1)*(2n-1)!

esta expresion no es otra cosa que el desarrollo en series de la integral del seno de x entre x, pero weno eso no interesa mucho, el asunto es que quiero que la suma se realize hasta que el error sea menor que 0.00000001, si mi suma tiene n terminos el error estaria dado por:
error=Suma(n)-Suma(n-1) que no es otra cosa que el termino n-simo
en mi codigo la variable"termino" vendria a ser el termino n-simo
Desde ya muchas gracias por las respuestas
Este es el codigo que hize pero bota resultados que no son

#include<conio.h>
#include<iostream.h>
#include<iomanip.h>
#include<math.h>
void main (void)
{
    float x,termino,suma=0;
    int signo=1,t1=1,t2,t3,t4=1,n=0;
    cout<<"ingrese el valor de x ";cin>>x;
    do
    {
    n=n+1;
    t1=t1*x*x;   
    t2=x;
    t3=2*n-1;
    termino=t1/(t2*t3*t4);   // t1/t2 me dara x^(2n-1)
    suma=suma+signo*termino;
    t4=t4*2*n*(2*n+1);   // con t4 creamos 3! 5! 7!... (2*n-1)!
    signo=-signo;   //con esto cambiamos de signo a cada termino
    }
    while(termino>=0.00000001);
    cout<<"la suma vale = "<<suma<<endl;
    getch();
}

pitukilloloco

  • Miembro MUY activo
  • ***
  • Mensajes: 104
    • Ver Perfil
Re: Ayuda Con Sumatorias
« Respuesta #1 en: Domingo 5 de Junio de 2005, 21:15 »
0
Me parece que estás implementado mal el polinomio. Vamos analizando que valores toman tus variable al entrar y ejecutar el primer ciclo. Los valores de tus variables al comenzar son
Código: Text
  1.  
  2. suma=0;
  3. signo=1, t1=1, t4=1, n=0;
  4.  
  5.  
y el valor de la variable x que introduces por el teclado. Las líneas que tienes dentro del ciclo son
Código: Text
  1.  
  2. n=n+1;
  3. t1=t1*x*x;
  4. t2=x;
  5. t3=2*n-1;
  6. termino=t1/(t2*t3*t4)
  7. suma=suma+signo*termino;
  8. t4=t4*2*n*(2*n+1);
  9. signo=-signo;
  10.  
  11.  
así que sustituyendo sus valores serán
Código: Text
  1.  
  2. n=1;
  3. t1=x^2;
  4. t2=x;
  5. t3=1;
  6. termino=x;
  7. suma=x;
  8. t4=6 = 3!;
  9. signo=-1;
  10.  
  11.  
Hasta aquí todo va bien, ya tienes al primer término del polinomio cuyo valor es x, pero en la siguiente iteración estos serán sus valores
Código: Text
  1.  
  2. n=2;
  3. t1=x^2*x*x = x^4;
  4. t2=x;   // fíjate que este valor nunca cambia o sea que no tiene sentido poner
  5.            // esta asignación dentro del ciclo
  6. t3=2*n-1;
  7. termino=x4/(x*1*6) = x^3/3!; // debió ser x^3/3*3!
  8. suma=x-x^3/3!;
  9. t4=6*2*2*(2*2+1);
  10. signo=1;
  11.  
  12.  
que como ves ya se aleja del resultado.
Aquí está una manera en que lo haría yo
Código: Text
  1.  
  2.   int x;
  3.   cout&#60;&#60;&#34;ingrese el valor de x &#34;;cin&#62;&#62;x;
  4.   const int DELTA = 0.00000001;
  5.   float x2 = x * x;
  6.   int n = 0;
  7.   float xexp = x; // Contiene el término x^n, al principio
  8.           // tiene el valor de x; entrando al ciclo
  9.           // su valor será x * x2 = x * x* x = x^3;
  10.           // después xexp * x2 = x^3 * x * x = x^5, etc.
  11.   float factimp = 1;  // Tiene el factorial impar. Al comienzo
  12.             // tiene 1; al entrar al ciclo su valor será
  13.             // 1 * (n + 2) * (n + 3) = 1 * 2 * 3 = 3!
  14.             // en la siguiente iteración n se incrementa en 2
  15.             // y factimp es igual a 3! * (n + 2) * (n + 3)
  16.             // o sea 3! * 4 * 5 = 5!, etc
  17.   int signo = -1;
  18.   suma = x;
  19.   int termino = 1;
  20.   for (int n = 0; termino &#62;= DELTA; n += 2) {
  21.     xexp *= x2;
  22.     factimp *= (n + 2) * (n + 3);
  23.     termino = xexp / ((n + 3) * factimp);
  24.     suma += signo * termino;
  25.     n += 2;
  26.     signo *= -1;
  27.   }
  28.  
  29.  
es una entre muchas maneras de implementarlo.

sebastian69

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Ayuda Con Sumatorias
« Respuesta #2 en: Domingo 5 de Junio de 2005, 23:57 »
0
Juas, ps se agradece bastante lo revisare y vere que otras formas hay ya que mi profe ta enamorao ta enamorao de las sumatorias
Saludos :D