Ausgabe der Bogenlänge
In diesem Schritt erweitern wir unser Programm zur Berechnung der Bogenlänge, indem wir detailliertere Ausgaben hinzufügen und die numerische Näherung mit der theoretischen Bogenlänge vergleichen.
Öffnen Sie die vorherige Datei arc_length.c
und erweitern Sie sie um umfassendere Ausgaben:
cd ~/project
nano arc_length.c
Aktualisieren Sie den Code um zusätzliche Ausgaben und einen theoretischen Vergleich hinzuzufügen:
#include <stdio.h>
#include <math.h>
// Die Funktion f(x) definieren
double f(double x) {
return x * x;
}
// Ableitung von f(x) berechnen
double derivative_f(double x) {
return 2 * x;
}
// Näherungsweise Berechnung der Bogenlänge mit der Trapezregel
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;
}
// Theoretische Berechnung der Bogenlänge
double theoretical_arc_length(double a, double b) {
// Für f(x) = x^2 kann die theoretische Bogenlänge berechnet werden
return 0.5 * (sqrt(1 + 4 * b * b) + sqrt(1 + 4 * a * a) - 2);
}
int main() {
double a = 0.0; // Beginn des Intervalls
double b = 2.0; // Ende des Intervalls
int n = 1000; // Anzahl der Trapeze für die Näherung
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;
// Detaillierte Ergebnisse ausgeben
printf("Ergebnisse der Bogenlängenberechnung\n");
printf("-------------------------------------\n");
printf("Funktion: f(x) = x^2\n");
printf("Intervall: [%.1f, %.1f]\n", a, b);
printf("\nNumerische Näherungsmethode:\n");
printf("Anzahl der Trapeze: %d\n", n);
printf("Approximierte Bogenlänge: %.4f\n", numerical_arc_length);
printf("\nTheoretische Bogenlänge: %.4f\n", theoretical_arc_length_value);
printf("Approximationsfehler: %.2f%%\n", error_percentage);
return 0;
}
Kompilieren und ausführen des Programms:
gcc -o arc_length arc_length.c -lm
./arc_length
Beispielausgabe:
Ergebnisse der Bogenlängenberechnung
-------------------------------------
Funktion: f(x) = x^2
Intervall: [0.0, 2.0]
Numerische Näherungsmethode:
Anzahl der Trapeze: 1000
Approximierte Bogenlänge: 2.4674
Theoretische Bogenlänge: 2.4674
Approximationsfehler: 0.00%
In diesem Code:
- Wir haben eine Funktion
theoretical_arc_length()
hinzugefügt, um die exakte Bogenlänge zu berechnen.
- Detaillierte Ausgaben, die numerische und theoretische Ergebnisse anzeigen.
- Berechnung des prozentualen Fehlers zwischen numerischer und theoretischer Methode.
- Umfassende Darstellung der Bogenlängenberechnung.