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


WTF!
Que miedo!!!
:(