Top Qs
Tijdlijn
Chat
Perspectief
Algoritmes om pi te bepalen
Van Wikipedia, de vrije encyclopedie
Remove ads
Er bestaan verscheidene manieren om met behulp van de computer een schatting te maken van de waarde van het getal pi.
Met de door Euler gegeven reeks
Samenvatten
Perspectief
Het volgende programma in de programmeertaal C gebruikt een iteratie om de waarde van te berekenen met behulp van de door Euler gegeven reeks:
Het programma laat per miljoen berekende waarden een tussenresultaat zien.
#include <math.h>
#include <stdio.h>
#define JUIST 1
int main() {
long double som = 0;
long double i = 0;
long double toon = 0;
while (JUIST) {
i++;
toon++;
som += 1/(i*i);
if (toon == 1000000) {
toon = 0;
printf("Pi is ongeveer %.50f\n", sqrt(som*6));
}
}
return 0;
}
Remove ads
Met het Wallis-product
kan met behulp van het Wallis-product worden benaderd. Iedere twee breuken worden samen genomen.
#include <stdio.h>
int main () {
unsigned long i = 0;
double j, pi = 2;
while (1) {
i += 2;
j = (double) i * i;
j /= j - 1;
pi *= j;
printf ("pi: %.20f\n", pi);
}
}
Met de formule van Leibniz
Het volgende programma in C berekent de waarde van steeds nauwkeuriger volgens de formule van Leibniz en laat telkens als er een nauwkeurigere boven- en ondergrens zijn gevonden zien tussen welke 2 waarden ligt.
#include <stdio.h>
int main() {
double pi=4;
double i;
for(i=3;;i+=4) {
pi-= (double) 4/i;
printf("Pi ligt tussen %.50f en ",pi);
pi+= (double) 4/(i+2);
printf("%.50f\n",pi);
}
return 0;
}
Met een Monte-Carloreeks

Teken in een vierkant een kwart cirkel met het middelpunt op een hoekpunt en de straal gelijk aan een zijde. De kans dat een willekeurig punt binnen het vierkant ook binnen de cirkel ligt is . Zo'n willekeurig punt heeft twee willekeurige coördinaten. Om te kijken of een punt binnen de cirkel ligt vergelijkt het programma de afstand tot het middelpunt van de cirkel met de straal. Naarmate het aantal gekozen punten groter is, wordt de benadering van nauwkeuriger.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main () {
int i, punten, binnen;
float x, y;
srand(time(NULL));
printf("Geef het aantal punten: ");
fflush(stdout);
scanf("%d", &punten);
binnen = 0;
for (i = punten; i > 0; i--) {
x = (float) rand() / (RAND_MAX + 1.0f);
y = (float) rand() / (RAND_MAX + 1.0f);
if (x * x + y * y < 1.0f) {
binnen++;
}
}
printf ("Pi is ongeveer %f\n", (float) binnen / punten * 4.0f);
return 0;
}
Remove ads
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads