C - Die Länge eines halben Einheitskreises
Eine Möglichkeit, π zu berechnen, besteht darin, einfach die Entfernung zu messen, auf die sich der Punkt (1, 0)
bewegt, wenn er um den Ursprung herum gedreht wird , (-1, 0)
da dies die Hälfte des Umfangs eines Einheitskreises ( 2π ) ist.
Es ist jedoch kein sin(x)
oder cos(x)
erforderlich, da dies durchgeführt werden kann, indem der Ursprung vollständig umrundet und die Entfernung addiert wird, die der Punkt für jeden Schritt zurücklegt . Je kleiner die Größe für jeden Schritt ist, desto genauer ist π .
Hinweis: Die Schrittfolge endet, wenn y unter Null liegt (was genau so ist, wie es passiert (-1, 0)
).
#include <stdio.h> // for printf
#define length(y, x) ((x * x) + (y * y))
int main()
{
double x, y;
double pi, tau, step;
// start at (2, 0) which actually calculates tau
x = 2;
y = 0;
// the step needs to be very low for high accuracy
step = 0.00000001;
tau = 0;
while (y >= 0)
{ // the derivate of (x, y) is itself rotated 90 degrees
double dx = -y;
double dy = x;
tau += length(dx, dy) * step; // add the distance for each step to tau
// add the distance to the point (make a tiny rotation)
x += dx * step;
y += dy * step;
}
pi = tau / 2; // divide tau with 2 to get pi
/* ignore this line *\ pi *= 2; /* secret multiply ^-^ */
// print the value of pi
printf("Value of pi is %f", pi); getchar();
return 0;
}
Es gibt die folgende Ausgabe:
Value of pi is 6.283185