Ausgabe des Näherungsintegrals
In diesem Schritt erweitern wir unser Programm zur Integralapproximation, indem wir detailliertere Ausgaben hinzufügen und das numerische Ergebnis mit dem exakten Integralwert vergleichen.
Öffnen Sie die vorherige Quelldatei und aktualisieren Sie den Code:
cd ~/project
nano integral_approximation.c
Ändern Sie den Code, um umfassendere Ausgaben einzuschließen:
#include <stdio.h>
#include <math.h>
// Definition der zu integrierenden Funktion f(x)
double f(double x) {
return x * x;
}
// Berechnung des exakten Integrals für x^2 von 0 bis 1
double exactIntegral() {
return 1.0 / 3.0;
}
// Implementierung der Trapezregel
double trapezoidalRule(double a, double b, int n) {
double h = (b - a) / n; // Breite jedes Trapezes
double sum = 0.5 * (f(a) + f(b)); // Erste und letzte Punkte
for (int i = 1; i < n; i++) {
double x = a + i * h;
sum += f(x);
}
return sum * h;
}
int main() {
// Definition des Intervalls [a, b]
double a = 0.0; // Untere Grenze
double b = 1.0; // Obere Grenze
int n = 100; // Anzahl der Trapeze
double approximateIntegral = trapezoidalRule(a, b, n);
double exact = exactIntegral();
double error = fabs(approximateIntegral - exact);
double percentError = (error / exact) * 100.0;
// Formatierte Ausgabe mit detaillierten Informationen
printf("Ergebnisse der Integralapproximation\n");
printf("-------------------------------------\n");
printf("Funktion: f(x) = x^2\n");
printf("Intervall: [%.2f, %.2f]\n", a, b);
printf("Anzahl der Trapeze: %d\n", n);
printf("\nNumerische Ergebnisse:\n");
printf("Näherungsintegral: %.6f\n", approximateIntegral);
printf("Genaues Integral: %.6f\n", exact);
printf("\nFehleranalyse:\n");
printf("Absoluter Fehler: %.6f\n", error);
printf("Prozentualer Fehler: %.4f%%\n", percentError);
return 0;
}
Kompilieren und ausführen Sie den aktualisierten Code:
gcc -o integral_approximation integral_approximation.c -lm
./integral_approximation
Beispielausgabe:
Ergebnisse der Integralapproximation
-------------------------------------
Funktion: f(x) = x^2
Intervall: [0.00, 1.00]
Anzahl der Trapeze: 100
Numerische Ergebnisse:
Näherungsintegral: 0.333333
Genaues Integral: 0.333333
Fehleranalyse:
Absoluter Fehler: 0.000000
Prozentualer Fehler: 0.0000%
Verbesserungen in dieser Version:
- Hinzufügen der Funktion
exactIntegral()
zum Vergleich mit dem numerischen Ergebnis.
- Berechnung des absoluten und prozentualen Fehlers.
- Bereitstellung einer detaillierteren und formatierten Ausgabe.