Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Ezeqro en 27 Septiembre 2016, 17:23 pm



Título: Sumatoria c++
Publicado por: Ezeqro en 27 Septiembre 2016, 17:23 pm
Ayuda, ya tengo mi codigo de area bajo la curva, pero no se como hacer la sumatoria,

Código
  1. #include<stdio.h>
  2. main()
  3. {
  4. float base, altura, area, i, liminferior, limsuperior, ancho, segmentos, vsegmento, incremento, formula;
  5. printf("CALCULADORA DE INTEGRALES\n\n");
  6. printf("La integral a calcular es x^2+5\n\n");
  7.  
  8. printf("Introduze el valor del limite Inferior(a):  ");
  9. scanf("%f", &liminferior);
  10.  
  11. printf("Introduze el valor del limite Superior(b):  ");
  12. scanf("%f", &limsuperior);
  13.  
  14. ancho=limsuperior-liminferior;
  15.    printf( "ancho= %f\n\n", ancho );
  16.  
  17. printf("¿En cuantos segmentos vamos a dividir el ancho del area(iteracciones)?:  ");
  18. scanf("%f", &segmentos);
  19.  
  20. vsegmento = ancho / segmentos;
  21. printf( "El valor para cada Segmento es de: %f\n\n", vsegmento );
  22.  
  23.  
  24. for (i=liminferior; i<=limsuperior; i++)
  25.  
  26. {
  27. area= vsegmento*(i*i+5);
  28. printf("%f x %f+5=%f\n",vsegmento,i,area);
  29.  
  30.  
  31. }
  32.        // se supone que aqui debo de ingresar el codigo para la sumatoria, pero no se como  :-\
  33.  
  34. }


Mod: Los códigos deben ir en etiquetas GeSHi


Título: Re: Sumatoria c++
Publicado por: AlbertoBSD en 27 Septiembre 2016, 17:37 pm
Al parecer no estas entendiendo vien el termino de Integral por sumatoria.

Si te ubicas en X^2 + 5 Eso es una Parabola hacia arriba con vertice en (0,5)  Y digamos que queremos calcula el area bajo la curba de -5 a 5  (Eje X) y lo divides en 10 pedasos o segmentos entonces cada segmento tendra una longitud de 1 si haces la formula:

Código:
vsegmento = ancho / segmentos;
Donde el ancho es X2-X1 (5 -(-5))  =  10 entre 10 seria uno...

Entonces el primer punto en tu for debe de ser -5  (limite inferior)

Código
  1.   area = 0-0;
  2.   for (i=liminferior; i<=limsuperior; i++)
  3.  
  4.   {
  5.   area += vsegmento*(i*i+5); // ESTA ES LA SUMATORIA
  6.   i+= vsegmento;
  7.   }
  8. printf("Area %f\n",area);
  9.  



Título: Re: Sumatoria c++
Publicado por: MAFUS en 27 Septiembre 2016, 19:41 pm
Te diría que llenaras el área con trapecios rectángulos verticales. La base de este trapecio será igual a la diferencia entre el X final y X inicial dividido entre la cantidad de divisiones que se hagan en la muestra.

La altura izquierda y derecha del trapecio depende del cálculo de la función en ese punto.

Ahora te queda solamente calcular el área de cada trapecio y sumarlas todas.
Área de un trapecio rectángulo = base * (altura_1 + altura_2) / 2

(https://blogdelingeniero1.files.wordpress.com/2013/04/punto-fijo10.png?w=676)