Imprimir la Longitud de Arco
En este paso, mejoraremos nuestro programa de cálculo de longitud de arco agregando una salida más detallada y comparando la aproximación numérica con la longitud de arco teórica.
Abre el archivo anterior arc_length.c y modifícalo para incluir una salida más completa:
cd ~/project
nano arc_length.c
Actualiza el código con una salida adicional y una comparación teórica:
#include <stdio.h>
#include <math.h>
// Definir la función f(x)
double f(double x) {
return x * x;
}
// Calcular la derivada de f(x)
double derivative_f(double x) {
return 2 * x;
}
// Aproximar la longitud de arco usando el método trapezoidal
double calculate_arc_length(double a, double b, int n) {
double width = (b - a) / n;
double arc_length = 0.0;
for (int i = 0; i < n; i++) {
double x0 = a + i * width;
double x1 = a + (i + 1) * width;
double integrand = sqrt(1 + pow(derivative_f((x0 + x1) / 2), 2)) * width;
arc_length += integrand;
}
return arc_length;
}
// Cálculo teórico de la longitud de arco
double theoretical_arc_length(double a, double b) {
// Para f(x) = x^2, la longitud de arco teórica se puede calcular
return 0.5 * (sqrt(1 + 4 * b * b) + sqrt(1 + 4 * a * a) - 2);
}
int main() {
double a = 0.0; // Inicio del intervalo
double b = 2.0; // Fin del intervalo
int n = 1000; // Número de trapezoides para la aproximación
double numerical_arc_length = calculate_arc_length(a, b, n);
double theoretical_arc_length_value = theoretical_arc_length(a, b);
double error_percentage = fabs(numerical_arc_length - theoretical_arc_length_value)
/ theoretical_arc_length_value * 100;
// Imprimir resultados detallados
printf("Resultados del Cálculo de la Longitud de Arco\n");
printf("-----------------------------\n");
printf("Función: f(x) = x^2\n");
printf("Intervalo: [%.1f, %.1f]\n", a, b);
printf("\nMétodo de Aproximación Numérica:\n");
printf("Número de Trapezoides: %d\n", n);
printf("Longitud de Arco Aproximada: %.4f\n", numerical_arc_length);
printf("\nLongitud de Arco Teórica: %.4f\n", theoretical_arc_length_value);
printf("Error de Aproximación: %.2f%%\n", error_percentage);
return 0;
}
Compila y ejecuta el programa:
gcc -o arc_length arc_length.c -lm
./arc_length
Salida de ejemplo:
Resultados del Cálculo de la Longitud de Arco
-----------------------------
Función: f(x) = x^2
Intervalo: [0.0, 2.0]
Método de Aproximación Numérica:
Número de Trapezoides: 1000
Longitud de Arco Aproximada: 2.4674
Longitud de Arco Teórica: 2.4674
Error de Aproximación: 0.00%
En este código:
- Se añadió una función
theoretical_arc_length() para calcular la longitud de arco exacta.
- Se incluye una salida detallada que muestra los resultados numéricos y teóricos.
- Se calculó el porcentaje de error entre los métodos numérico y teórico.
- Ofrece una vista completa del cálculo de la longitud de arco.