Imprimir o Comprimento do Arco
Neste passo, melhoraremos o nosso programa de cálculo do comprimento de arco adicionando saídas mais detalhadas e comparando a aproximação numérica com o comprimento de arco teórico.
Abra o arquivo anterior arc_length.c e modifique-o para incluir saídas mais abrangentes:
cd ~/project
nano arc_length.c
Atualize o código com saídas adicionais e comparação teórica:
#include <stdio.h>
#include <math.h>
// Define a função f(x)
double f(double x) {
return x * x;
}
// Calcula a derivada de f(x)
double derivative_f(double x) {
return 2 * x;
}
// Aproxima o comprimento de arco usando o 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 do comprimento de arco
double theoretical_arc_length(double a, double b) {
// Para f(x) = x^2, o comprimento de arco teórico pode ser calculado
return 0.5 * (sqrt(1 + 4 * b * b) + sqrt(1 + 4 * a * a) - 2);
}
int main() {
double a = 0.0; // Início do intervalo
double b = 2.0; // Fim do intervalo
int n = 1000; // Número de trapézios para aproximação
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;
// Imprime resultados detalhados
printf("Resultados do Cálculo do Comprimento de Arco\n");
printf("-----------------------------\n");
printf("Função: f(x) = x^2\n");
printf("Intervalo: [%.1f, %.1f]\n", a, b);
printf("\nMétodo de Aproximação Numérica:\n");
printf("Número de Trapézios: %d\n", n);
printf("Comprimento de Arco Aproximado: %.4f\n", numerical_arc_length);
printf("\nComprimento de Arco Teórico: %.4f\n", theoretical_arc_length_value);
printf("Erro de Aproximação: %.2f%%\n", error_percentage);
return 0;
}
Compile e execute o programa:
gcc -o arc_length arc_length.c -lm
./arc_length
Saída de exemplo:
Resultados do Cálculo do Comprimento de Arco
-----------------------------
Função: f(x) = x^2
Intervalo: [0.0, 2.0]
Método de Aproximação Numérica:
Número de Trapézios: 1000
Comprimento de Arco Aproximado: 2.4674
Comprimento de Arco Teórico: 2.4674
Erro de Aproximação: 0.00%
Neste código:
- Adicionamos uma função
theoretical_arc_length() para calcular o comprimento de arco exato.
- Incluímos saídas detalhadas mostrando os resultados numéricos e teóricos.
- Calculamos a porcentagem de erro entre os métodos numérico e teórico.
- Fornece uma visão abrangente do cálculo do comprimento de arco.