Summieren der Terme bis zur gewünschten Genauigkeit
In diesem Schritt modifizieren wir unser vorheriges Programm, um die Approximation von e zu berechnen, indem wir Terme summieren, bis eine gewünschte Genauigkeit erreicht ist. Dieser Ansatz ermöglicht es uns, die Präzision unserer Berechnung zu steuern.
Aktualisieren wir die vorherige C-Datei:
cd ~/project
nano e_approximation.c
Ersetzen Sie den vorherigen Inhalt durch folgenden verbesserten Code:
#include <stdio.h>
#include <math.h>
double factorial(int n) {
if (n == 0 || n == 1) return 1;
double result = 1;
for (int i = 2; i <= n; i++) {
result *= i;
}
return result;
}
double approximate_e_with_accuracy(double desired_accuracy) {
double e = 0;
double term = 1;
int n = 0;
while (fabs(term) > desired_accuracy) {
e += term;
n++;
term = 1.0 / factorial(n);
}
return e;
}
int main() {
double accuracy = 1e-6; // Gewünschte Genauigkeit
double e_approximation = approximate_e_with_accuracy(accuracy);
printf("Approximation von e mit Genauigkeit %e: %f\n", accuracy, e_approximation);
printf("Standardwert von e aus math.h: %f\n", M_E);
return 0;
}
Kompilieren und ausführen des aktualisierten Programms:
gcc e_approximation.c -o e_approximation -lm
./e_approximation
Beispielausgabe:
Approximation von e mit Genauigkeit 1.000000e-06: 2.718282
Standardwert von e aus math.h: 2.718282
Diese Version des Programms fügt weiterhin Terme zur Reihe hinzu, bis der nächste Term kleiner als die angegebene Genauigkeitsschwelle ist. Die Funktion fabs()
stellt sicher, dass wir mit dem Absolutwert des Terms arbeiten.
Wichtige Punkte:
- Wir verwenden
1e-6
als gewünschte Genauigkeit.
- Das Programm bestimmt dynamisch, wie viele Terme benötigt werden.
- Wir vergleichen unsere Approximation mit dem Standardwert von e aus der math-Bibliothek.