Cálculo Numerico de Integrales

Por lo metido que he tenido que estar en mi cuento académico estas ultimas semanas no tengo contenidos muy interesantes para el blog, me “limito” a compartir una tarea para cálculo 2.

Se trata de un pequeño programa en c++ que calcula la integral definida de una función polinomial mediante el metodo de simpson y luego mediante el método de los trapecios.

Utilice el TAD polinomio (post anterior), añadiedole una función extra para evaluar al polinomio:

  • long Polinomio::resultado(Polinomio &p1, int valor) {
    long suma=0;
    Polinomio::PtrNodo pr1;
    pr1 = p1.Inicio;
    while(pr1!=0) {
    suma+=pr1->coef*potencia(valor,pr1->expo);
    pr1 = pr1->siguiente;
    }
    return suma;
    }

Lo importante y que mas me costo

Método de los Trapecios:

  • void trapezoide (int n, float h, float *f, float &sum) {
    int i;
    for (i = 0; i < n ; i++){
    sum = sum + (f[i] + f[i+1])*1/2;
    }
    }

Método de Simpson

  • void simpson (int n, float h, float *f, float &sum) {
    int i;
    sum = f[0]+f[n];
    sum+=4*f[1];
    for(i=2; i {
    sum+=2*f[i] + 4*f[i+1];
    }
    sum=sum*1/3;
    }

Luego, simplemente solicito ingresar el polinomio y los limites de integración.

Evalué en cada uno de los puntos la función y guarde sus resultados en un vector f

  • f = new float [sup-inf]; //este vector guardara los resultados
    n=0;
    for(i=inf;i<=sup;i++){
    f[n]=poli.resultado(poli,i); //función definida anteriormente
    cout <<"\t f(" <<<");" << f[n] <<"\n"; //resultados en pantalla
    n++;
    }

Y listo… luego solo aplico las funciones pasandole los parametros correspondientes:

simpson (n, 1, f, sum);

  • n es la diferencia entre los limites de integración (limite superior – limite inferior)
  • El 1 representa la distancia que hay entre cada trapecio, se supone que si hay menos distancia el resultado sera mas preciso, pero se necesitaría evaluar la función en mas puntos a su vez.
  • f es el vector donde esta la función evaluada
  • sum es el puntero en el que se almacenaran los datos, importante es primero hacer sum = 0;

El archivo completo lo puedes bajar desde aquí.

Saludos ;)

0 comments on “Cálculo Numerico de IntegralesAdd yours →

Leave a Reply

Your email address will not be published. Required fields are marked *