Ausgabe des Näherungsintegrals
In diesem letzten Schritt erweitern wir unsere Implementierung der Simpsonschen Regel, indem wir detailliertere Ausgaben hinzufügen und die numerische Näherung mit dem exakten Integralwert vergleichen.
Öffnen Sie die vorherige Datei:
cd ~/project
nano simpson_integration.c
Aktualisieren Sie den Code, um umfassendere Ausgaben einzuschließen:
#include <stdio.h>
#include <math.h>
// Funktion zur Integration: f(x) = x^2
double f(double x) {
return x * x;
}
// Exakte Integralberechnung für f(x) = x^2 von a bis b
double exact_integral(double a, double b) {
return (pow(b, 3) - pow(a, 3)) / 3.0;
}
// Implementierung der Simpsonschen Regel
double simpsons_rule(double a, double b, int n) {
double h = (b - a) / n; // Breite jedes Teilintervalls
double sum = f(a) + f(b); // Erste und letzte Punkte
// Berechnung der Summe der geraden und ungeraden Punkte
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() {
// Integrationsintervall [a, b] definieren
double a = 0.0; // Untergrenze
double b = 1.0; // Obergrenze
int n = 100; // Anzahl der Teilintervalle (muss gerade sein)
// Berechnung der Näherung und des exakten Integrals
double approx_integral = simpsons_rule(a, b, n);
double exact_value = exact_integral(a, b);
double error = fabs(exact_value - approx_integral);
// Ausgabe der detaillierten Ergebnisse
printf("Ergebnisse der Integralnäherung:\n");
printf("------------------------------\n");
printf("Funktion: f(x) = x^2\n");
printf("Intervall: [%.2f, %.2f]\n", a, b);
printf("Anzahl der Teilintervalle: %d\n\n", n);
printf("Näherung (Simpsonsche Regel): %.6f\n", approx_integral);
printf("Exakter Wert: %.6f\n", exact_value);
printf("Absoluter Fehler: %.6f\n", error);
printf("Relativer Fehler: %.4f%%\n", (error / exact_value) * 100);
return 0;
}
Kompilieren und ausführen des Codes:
gcc simpson_integration.c -o simpson_integration -lm
./simpson_integration
Beispielausgabe:
Ergebnisse der Integralnäherung:
------------------------------
Funktion: f(x) = x^2
Intervall: [0.00, 1.00]
Anzahl der Teilintervalle: 100
Näherung (Simpsonsche Regel): 0.333333
Exakter Wert: 0.333333
Absoluter Fehler: 0.000000
Relativer Fehler: 0.0000%
Wichtige Ergänzungen in diesem Schritt:
- Hinzufügen der Funktion
exact_integral()
zur Berechnung des tatsächlichen Integralwerts
- Berechnung des absoluten und relativen Fehlers
- Erstellung einer formatierten Ausgabe, die detaillierte Integrationsergebnisse anzeigt