Vielecke | © C. Wolfseher

Berechnung der Kreiszahl π nach Archimedes mit TURBO PASCAL

Einem Kreis werden reguläre n-Ecke mit Umfang un bzw. Un ein- bzw. umbeschrieben. Mit Kreisradius 0,5 gilt: un < π < Un.

Im Listing 1 treten schon nach wenigen Iterationsschritten wegen der kleinen Werte unter der Wurzel Rundungsfehler auf, was durch eine algebraische Umformung im Listing 2 behoben wird. Listing 3 berechnet sowohl den Umfang ein- als auch umbeschriebener n-Ecke.

PROGRAM PI_Archimedes_1;
USES crt;
VAR u:real;
    n,max: longint;
BEGIN
     clrscr;
     writeln('PI-Berechnung nach Archimedes');
     writeln;
     write('maximale Eckenzahl? ');readln(max);
     writeln;
     writeln('n            u(n)');
     n:=6; u:=3; {Start mit Sehnen-6-Eck}
     REPEAT
           writeln(n:9,'    ',u:11:10);
           u:=n*sqrt(2-2*sqrt(1-sqr(u/n)));
           n:=n*2;
     UNTIL n>max;
     readln;
END.
n            u(n)
        6    3.0000000000
       12    3.1058285412
       24    3.1326286132
       48    3.1393502029
       96    3.1410319508
      192    3.1414524712
      384    3.1415575977
      768    3.1415838514
     1536    3.1415904255
     3072    3.1415916208
     6144    3.1415895717
    12288    3.1415868397
    24576    3.1415868397
    49152    3.1414994119
    98304    3.1409747940
   196608    3.1402751671
   393216    3.1374750995
   786432    3.1374750995
  1572864    3.0000000000
  3145728    3.0000000000
  6291456    0.0000000000
 12582912    0.0000000000
PROGRAM PI_Archimedes_2;
USES crt;
VAR u:real;
    n,max: longint;
BEGIN
     clrscr;
     writeln('PI-Berechnung nach Archimedes');
     writeln;
     write('maximale Eckenzahl? ');readln(max);
     writeln;
     writeln('n            u(n)');
     n:=6; u:=3; {Start mit Sehnen-6-Eck}
     REPEAT
           writeln(n:9,'    ',u:11:10);
           u:=2*u/sqrt(2+2*sqrt(1-sqr(u/n)));
           n:=n*2;
     UNTIL n>max;
     readln;
END.
n            u(n)
        6    3.0000000000
       12    3.1058285412
       24    3.1326286133
       48    3.1393502030
       96    3.1410319509
      192    3.1414524723
      384    3.1415576079
      768    3.1415838921
     1536    3.1415904632
     3072    3.1415921060
     6144    3.1415925167
    12288    3.1415926193
    24576    3.1415926450
    49152    3.1415926514
    98304    3.1415926530
   196608    3.1415926534
   393216    3.1415926535
   786432    3.1415926535
  1572864    3.1415926536
  3145728    3.1415926536
  6291456    3.1415926536
 12582912    3.1415926536
PROGRAM PI_Archimedes_3;
USES crt;
VAR uein,uum:real;
    n,max: longint;
BEGIN
 clrscr;
 writeln('PI-Berechnung nach Archimedes');
 writeln;
 write('maximale Eckenzahl? ');readln(max);
 writeln;
 writeln('n            u(n)          U(n)');
 n:=6; uein:=3; uum:=2*sqrt(3); {Start mit 6-Eck}
 REPEAT
  writeln(n:9,'    ',uein:11:10,'  ',uum:11:10);
  uein:=2*uein/sqrt(2+2*sqrt(1-sqr(uein/n)));
  n:=n*2;
  uum:=uein/(sqrt(1-sqr(uein/n)));
 UNTIL n>max;
 readln;
END.

n            u(n)          U(n)
        6    3.0000000000  3.4641016151
       12    3.1058285412  3.2153903092
       24    3.1326286133  3.1596599421
       48    3.1393502030  3.1460862151
       96    3.1410319509  3.1427145996
      192    3.1414524723  3.1418730500
      384    3.1415576079  3.1416627470
      768    3.1415838921  3.1416101766
     1536    3.1415904632  3.1415970343
     3072    3.1415921060  3.1415937488
     6144    3.1415925167  3.1415929274
    12288    3.1415926193  3.1415927220
    24576    3.1415926450  3.1415926707
    49152    3.1415926514  3.1415926578
    98304    3.1415926530  3.1415926546
   196608    3.1415926534  3.1415926538
   393216    3.1415926535  3.1415926536
   786432    3.1415926535  3.1415926536
  1572864    3.1415926536  3.1415926536
  3145728    3.1415926536  3.1415926536
  6291456    3.1415926536  3.1415926536
 12582912    3.1415926536  3.1415926536

© C. Wolfseher