Imprimir la Integral Aproximada
En este paso, mejoraremos nuestro programa de aproximación de integrales agregando una salida más detallada y comparando el resultado numérico con el valor exacto de la integral.
Abre el archivo fuente anterior y actualiza el código:
cd ~/project
nano integral_approximation.c
Modifica el código para incluir una salida más completa:
#include <stdio.h>
#include <math.h>
// Definir la función a integrar f(x)
double f(double x) {
return x * x;
}
// Cálculo de la integral exacta para x^2 de 0 a 1
double exactIntegral() {
return 1.0 / 3.0;
}
// Implementación de la Regla del Trapecio
double trapezoidalRule(double a, double b, int n) {
double h = (b - a) / n; // Anchura de cada trapecio
double sum = 0.5 * (f(a) + f(b)); // Primeros y últimos puntos
for (int i = 1; i < n; i++) {
double x = a + i * h;
sum += f(x);
}
return sum * h;
}
int main() {
// Definir el intervalo [a, b]
double a = 0.0; // Límite inferior
double b = 1.0; // Límite superior
int n = 100; // Número de trapecios
double approximateIntegral = trapezoidalRule(a, b, n);
double exact = exactIntegral();
double error = fabs(approximateIntegral - exact);
double percentError = (error / exact) * 100.0;
// Salida formateada con información detallada
printf("Resultados de la Aproximación de la Integral\n");
printf("------------------------------\n");
printf("Función: f(x) = x^2\n");
printf("Intervalo: [%.2f, %.2f]\n", a, b);
printf("Número de Trapecios: %d\n", n);
printf("\nResultados Numéricos:\n");
printf("Integral Aproximada: %.6f\n", approximateIntegral);
printf("Integral Exacta: %.6f\n", exact);
printf("\nAnálisis de Error:\n");
printf("Error Absoluto: %.6f\n", error);
printf("Error Porcentual: %.4f%%\n", percentError);
return 0;
}
Compila y ejecuta el código actualizado:
gcc -o integral_approximation integral_approximation.c -lm
./integral_approximation
Salida de ejemplo:
Resultados de la Aproximación de la Integral
------------------------------
Función: f(x) = x^2
Intervalo: [0.00, 1.00]
Número de Trapecios: 100
Resultados Numéricos:
Integral Aproximada: 0.333333
Integral Exacta: 0.333333
Análisis de Error:
Error Absoluto: 0.000000
Error Porcentual: 0.0000%
Mejoras clave en esta versión:
- Se agregó la función
exactIntegral() para comparar el resultado numérico.
- Se calcularon los errores absoluto y porcentual.
- Se proporcionó una salida más detallada y formateada.