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

Thumb

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
Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads