Die Approximation ausgeben
In diesem letzten Schritt verbessern wir unser π-Approximationsprogramm, indem wir eine Funktion zum Ausgeben der Ergebnisse erstellen und die Ausgabeformatierung optimieren.
Ändern wir die Datei random_points.c
:
cd ~/project
nano random_points.c
Aktualisieren Sie den Code mit einer neuen Ausgabefunktion und einer verbesserten Ausgabe:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#define NUM_POINTS 1000000
// Funktion zum Ausgeben der Approximationsergebnisse
void print_pi_approximation(int total_points, int points_inside_circle) {
double pi_approximation = 4.0 * points_inside_circle / total_points;
printf("π Approximationsergebnisse\n");
printf("=====================\n");
printf("Generierte Gesamtzahl der Punkte: %d\n", total_points);
printf("Punkte im Viertelkreis: %d\n", points_inside_circle);
printf("Approximierter π-Wert: %.8f\n", pi_approximation);
printf("Exakter π-Wert: %.8f\n", M_PI);
printf("Absoluter Unterschied: %.8f\n", fabs(pi_approximation - M_PI));
printf("Genauigkeit der Approximation: %.4f%%\n",
(1 - fabs(pi_approximation - M_PI) / M_PI) * 100);
}
int main() {
// Den Zufallszahlengenerator initialisieren
srand(time(NULL));
int points_inside_circle = 0;
// Zufällige Punkte generieren und diejenigen zählen, die innerhalb des Viertelkreises liegen
for (int i = 0; i < NUM_POINTS; i++) {
double x = (double)rand() / RAND_MAX;
double y = (double)rand() / RAND_MAX;
// Überprüfen, ob der Punkt innerhalb des Viertelkreises liegt
if (x*x + y*y <= 1.0) {
points_inside_circle++;
}
}
// Ausgabe der Approximationsergebnisse
print_pi_approximation(NUM_POINTS, points_inside_circle);
return 0;
}
Kompilieren und ausführen des Programms:
gcc random_points.c -o random_points -lm
./random_points
Beispielausgabe:
π Approximationsergebnisse
=====================
Generierte Gesamtzahl der Punkte: 1000000
Punkte im Viertelkreis: 785398
Approximierter π-Wert: 3.14159200
Exakter π-Wert: 3.14159265
Absoluter Unterschied: 0.00000065
Genauigkeit der Approximation: 99.9998%
Wichtige Verbesserungen:
- Erstellung einer dedizierten Funktion
print_pi_approximation()
.
- Erhöhung der Punktanzahl auf 1.000.000 für höhere Genauigkeit.
- Detailliertere Ausgabeformatierung.
- Einschließlich der Genauigkeit der Approximation in Prozent.