Imprimir la Aproximación de la Integral
En este paso final, mejoraremos nuestra implementación de la Regla de Simpson agregando una salida más detallada y comparando la aproximación numérica con el valor exacto de la integral.
Abre el archivo anterior:
cd ~/project
nano simpson_integration.c
Actualiza el código para incluir una salida más completa:
#include <stdio.h>
#include <math.h>
// Función a integrar: f(x) = x^2
double f(double x) {
return x * x;
}
// Cálculo de la integral exacta para f(x) = x^2 desde a hasta b
double exact_integral(double a, double b) {
return (pow(b, 3) - pow(a, 3)) / 3.0;
}
// Implementación de la Regla de Simpson
double simpsons_rule(double a, double b, int n) {
double h = (b - a) / n; // Anchura de cada subintervalo
double sum = f(a) + f(b); // Primeros y últimos puntos
// Calcular la suma de los puntos pares e impares
for (int i = 1; i < n; i++) {
double x = a + i * h;
sum += (i % 2 == 0 ? 2 : 4) * f(x);
}
return (h / 3) * sum;
}
int main() {
// Definir el intervalo de integración [a, b]
double a = 0.0; // Límite inferior
double b = 1.0; // Límite superior
int n = 100; // Número de subintervalos (debe ser par)
// Calcular la aproximación y la integral exacta
double approx_integral = simpsons_rule(a, b, n);
double exact_value = exact_integral(a, b);
double error = fabs(exact_value - approx_integral);
// Imprimir resultados detallados
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 Subintervalos: %d\n\n", n);
printf("Aproximación (Regla de Simpson): %.6f\n", approx_integral);
printf("Valor Exacto: %.6f\n", exact_value);
printf("Error Absoluto: %.6f\n", error);
printf("Error Relativo: %.4f%%\n", (error / exact_value) * 100);
return 0;
}
Compila y ejecuta el código:
gcc simpson_integration.c -o simpson_integration -lm
./simpson_integration
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 Subintervalos: 100
Aproximación (Regla de Simpson): 0.333333
Valor Exacto: 0.333333
Error Absoluto: 0.000000
Error Relativo: 0.0000%
Adiciones clave en este paso:
- Se agregó la función
exact_integral() para calcular el valor real de la integral.
- Se calcularon el error absoluto y relativo.
- Se creó una salida formateada que muestra los resultados detallados de la integración.