Gauß bestimmt PI
Prof. Dr. Dörte Haftendorn: Mathematik mit MuPAD 4, Juni 06 Update 10.06.06
Web: www.mathematik-verstehen.de https://mathe.web.leuphana.de
----------------------------------------------------------------------------------------------------------------------
Diese Darstellung folgt dem Voschlag : Hans J. Schmidt: "Historische Verfahren..." Aulis-Verlag
------------------------
Grundidee: Gauß zeichnet in ein Einheitsgitter einen Keis mit dem Radius r und ein umbeschriebenes
Quadrat. Ein Viertel dieses Quadrates -also r 2 - soll n Punkte haben.
Schmidt geht von n aus und bestimmt dann r als Gaußklammer von Wurzel(n) .
Im Bild ist n=100 und daher r=10. Nun werden 4 Mengen A,B,C,D definiert, die hier
farbig unterschieden sind. A ist der Ursprung allein. B sind die Punkte auf den Achsen.
Es sin 4 r Punkte. Für die roten Punkte wird das rechte obere Quadrat betrachtet.
In seiner Diagonale haben die Punkte den Abstand Wurzel(2). Die Anzahl der Diagonalpunkte
im 1. Quadranten erhält man also, wenn man r durch Wurzel(2) teilt. Diese Zahl, unten c genannt, ist
dann aber auch die Kantenlänge des roten Quadrates rechts oben.
Bei Schmidt ist das der Term Wurzel(n:2) , hier aber r/Wurzel(2) , bz..w. r/sqrt(2).
Davon wird wieder der Gaußklammer-Wert genommen ( hier floor(..))
Von den roten Punkten gibt es insgesamt 4* [r/Wurzel(2)] also etwa 2 r^2.
Bleiben noch die grünen Punkte. Es sind 8 mal die Reihen, die im 1. Quadranten oben
waagerecht liegen. Die 1. Reihe hat die Ordinate r/Wurzel(2)+1. Die Abszissen sind 1, 2,....
bis zum Kreis, der ist aber an der Stelle Wurzel(r^2-y^2). Dann zählt man die nachst höhere Reihe u.s.w
Hier sind es 6 + 4 Punkte, grün also 10*8 Punkte.
Für n=100 ergeben sich 317 Punkte. Die repräsentieren die Kreisfläche Pi r^2 . Also muss man die Anzahl durch
r^2 teilen. Schmidt teilt durch n. Das ist aber nur für Quadratzahlen n richtig, unten sind die Werte verglichen.
Z.B. bei n=200 ist der Schmidt-Wert schlecht. Er wird systematisch zu klein, wenn n nicht r^2 ist.
Das Verfahren konvergiert ziemlich langsam.
//############# n=100####
n:=100;r:=floor(sqrt(n));
kreis:=x^2+y^2=r^2;
kreisg:=plot::Implicit2d(kreis,x=-r..r, y=-r..r,
Scaling=Constrained,GridVisible=TRUE):
A:=[[0,0]];
B:=[[k,0]$ k=1..r,[-k,0]$ k=1..r,[0,k]$ k=1..r,[0,-k]$ k=1..r];
nops(B);
Ap:=plot::Listplot(A, LinesVisible=FALSE, PointColor=RGB::Black, PointSize=2):
Bp:=plot::Listplot(B, LinesVisible=FALSE, PointColor=RGB::Blue, PointSize=2):
//Gesucht ist das größte i, dessen Wurzel(2)-faches höchsten r erreicht.
c:=floor(r/sqrt(2));
C1:=[([i,j] $ i=1..c)$j=1..c]: nops(C1);
C2:=[([-i,j] $ i=1..c)$j=1..c]:
C3:=[([-i,-j] $ i=1..c)$j=1..c]:
C4:=[([i,-j] $ i=1..c)$j=1..c]:
C:=C1.C2.C3.C4:nops(C);
Cp:=plot::Listplot(C, LinesVisible=FALSE, PointColor=RGB::Red, PointSize=2):
floor(sqrt(r^2-i^2));
D1:=[([i,k] $ i=1..floor(sqrt(r^2-k^2)))$ k=c+1..r];
D2:=[([-i,k] $ i=1..floor(sqrt(r^2-k^2)))$ k=c+1..r]:
D3:=[([-i,-k] $ i=1..floor(sqrt(r^2-k^2)))$ k=c+1..r]:
D4:=[([i,-k] $ i=1..floor(sqrt(r^2-k^2)))$ k=c+1..r]:
D5:=[([k,i] $ i=1..floor(sqrt(r^2-k^2)))$ k=c+1..r]:
D6:=[([-k,i] $ i=1..floor(sqrt(r^2-k^2)))$ k=c+1..r]:
D7:=[([-k,-i] $ i=1..floor(sqrt(r^2-k^2)))$ k=c+1..r]:
D8:=[([k,-i] $ i=1..floor(sqrt(r^2-k^2)))$ k=c+1..r]:
DD:=D1.D2.D3.D4.D5.D6.D7.D8: nops(DD);
Dp:=plot::Listplot(DD, LinesVisible=FALSE, PointColor=RGB::Green, PointSize=2):
plot(kreisg,Dp,Cp, Ap,Bp);anzahl:=nops(A)+nops(B)+nops(C)+nops(DD);
;anteilKeisImQuadtrat=float(anzahl/n);
anteilKeisImQuadtrat2=float(anzahl/r^2);
//############# n=200####
n:=200;r:=floor(sqrt(n));
kreis:=x^2+y^2=r^2;
kreisg:=plot::Implicit2d(kreis,x=-r..r, y=-r..r,
Scaling=Constrained,GridVisible=TRUE):
A:=[[0,0]];
B:=[[k,0]$ k=1..r,[-k,0]$ k=1..r,[0,k]$ k=1..r,[0,-k]$ k=1..r]:
nops(B);
Ap:=plot::Listplot(A, LinesVisible=FALSE, PointColor=RGB::Black, PointSize=1):
Bp:=plot::Listplot(B, LinesVisible=FALSE, PointColor=RGB::Blue, PointSize=1):
//Gesucht ist das größte i, dessen Wurzel(2)-faches höchsten r erreicht.
c:=floor(r/sqrt(2));
C1:=[([i,j] $ i=1..c)$j=1..c]: nops(C1);
C2:=[([-i,j] $ i=1..c)$j=1..c]:
C3:=[([-i,-j] $ i=1..c)$j=1..c]:
C4:=[([i,-j] $ i=1..c)$j=1..c]:
C:=C1.C2.C3.C4:nops(C);
Cp:=plot::Listplot(C, LinesVisible=FALSE, PointColor=RGB::Red, PointSize=1):
floor(sqrt(r^2-i^2));
D1:=[([i,k] $ i=1..floor(sqrt(r^2-k^2)))$ k=c+1..r]:
D2:=[([-i,k] $ i=1..floor(sqrt(r^2-k^2)))$ k=c+1..r]:
D3:=[([-i,-k] $ i=1..floor(sqrt(r^2-k^2)))$ k=c+1..r]:
D4:=[([i,-k] $ i=1..floor(sqrt(r^2-k^2)))$ k=c+1..r]:
D5:=[([k,i] $ i=1..floor(sqrt(r^2-k^2)))$ k=c+1..r]:
D6:=[([-k,i] $ i=1..floor(sqrt(r^2-k^2)))$ k=c+1..r]:
D7:=[([-k,-i] $ i=1..floor(sqrt(r^2-k^2)))$ k=c+1..r]:
D8:=[([k,-i] $ i=1..floor(sqrt(r^2-k^2)))$ k=c+1..r]:
DD:=D1.D2.D3.D4.D5.D6.D7.D8: nops(DD);
Dp:=plot::Listplot(DD, LinesVisible=FALSE, PointColor=RGB::Green, PointSize=1):
plot(kreisg,Dp,Cp, Ap,Bp);anzahl:=nops(A)+nops(B)+nops(C)+nops(DD);
;anteilKeisImQuadtrat=float(anzahl/n);
anteilKeisImQuadtrat2=float(anzahl/r^2);
//############# n=400####
n:=400;r:=floor(sqrt(n));
kreis:=x^2+y^2=r^2;
kreisg:=plot::Implicit2d(kreis,x=-r..r, y=-r..r,
Scaling=Constrained,GridVisible=TRUE):
A:=[[0,0]];
B:=[[k,0]$ k=1..r,[-k,0]$ k=1..r,[0,k]$ k=1..r,[0,-k]$ k=1..r]:
nops(B);
Ap:=plot::Listplot(A, LinesVisible=FALSE, PointColor=RGB::Black, PointSize=1):
Bp:=plot::Listplot(B, LinesVisible=FALSE, PointColor=RGB::Blue, PointSize=1):
//Gesucht ist das größte i, dessen Wurzel(2)-faches höchsten r erreicht.
c:=floor(r/sqrt(2));
C1:=[([i,j] $ i=1..c)$j=1..c]: nops(C1);
C2:=[([-i,j] $ i=1..c)$j=1..c]:
C3:=[([-i,-j] $ i=1..c)$j=1..c]:
C4:=[([i,-j] $ i=1..c)$j=1..c]:
C:=C1.C2.C3.C4:nops(C);
Cp:=plot::Listplot(C, LinesVisible=FALSE, PointColor=RGB::Red, PointSize=1):
floor(sqrt(r^2-i^2));
D1:=[([i,k] $ i=1..floor(sqrt(r^2-k^2)))$ k=c+1..r]:
D2:=[([-i,k] $ i=1..floor(sqrt(r^2-k^2)))$ k=c+1..r]:
D3:=[([-i,-k] $ i=1..floor(sqrt(r^2-k^2)))$ k=c+1..r]:
D4:=[([i,-k] $ i=1..floor(sqrt(r^2-k^2)))$ k=c+1..r]:
D5:=[([k,i] $ i=1..floor(sqrt(r^2-k^2)))$ k=c+1..r]:
D6:=[([-k,i] $ i=1..floor(sqrt(r^2-k^2)))$ k=c+1..r]:
D7:=[([-k,-i] $ i=1..floor(sqrt(r^2-k^2)))$ k=c+1..r]:
D8:=[([k,-i] $ i=1..floor(sqrt(r^2-k^2)))$ k=c+1..r]:
DD:=D1.D2.D3.D4.D5.D6.D7.D8: nops(DD);
Dp:=plot::Listplot(DD, LinesVisible=FALSE, PointColor=RGB::Green, PointSize=1):
plot(kreisg,Dp,Cp, Ap,Bp);anzahl:=nops(A)+nops(B)+nops(C)+nops(DD);
;anteilKeisImQuadtrat=float(anzahl/n);
anteilKeisImQuadtrat2=float(anzahl/r^2);
//############# n=10000####
n:=10000;r:=floor(sqrt(n));
kreis:=x^2+y^2=r^2;
kreisg:=plot::Implicit2d(kreis,x=-r..r, y=-r..r,
Scaling=Constrained,GridVisible=TRUE):
A:=[[0,0]];
B:=[[k,0]$ k=1..r,[-k,0]$ k=1..r,[0,k]$ k=1..r,[0,-k]$ k=1..r]:
nops(B);
Ap:=plot::Listplot(A, LinesVisible=FALSE, PointColor=RGB::Black, PointSize=1):
Bp:=plot::Listplot(B, LinesVisible=FALSE, PointColor=RGB::Blue, PointSize=1):
//Gesucht ist das größte i, dessen Wurzel(2)-faches höchsten r erreicht.
c:=floor(r/sqrt(2));
C1:=[([i,j] $ i=1..c)$j=1..c]: nops(C1);
C2:=[([-i,j] $ i=1..c)$j=1..c]:
C3:=[([-i,-j] $ i=1..c)$j=1..c]:
C4:=[([i,-j] $ i=1..c)$j=1..c]:
C:=C1.C2.C3.C4:nops(C);
Cp:=plot::Listplot(C, LinesVisible=FALSE, PointColor=RGB::Red, PointSize=1):
floor(sqrt(r^2-i^2));
D1:=[([i,k] $ i=1..floor(sqrt(r^2-k^2)))$ k=c+1..r]:
D2:=[([-i,k] $ i=1..floor(sqrt(r^2-k^2)))$ k=c+1..r]:
D3:=[([-i,-k] $ i=1..floor(sqrt(r^2-k^2)))$ k=c+1..r]:
D4:=[([i,-k] $ i=1..floor(sqrt(r^2-k^2)))$ k=c+1..r]:
D5:=[([k,i] $ i=1..floor(sqrt(r^2-k^2)))$ k=c+1..r]:
D6:=[([-k,i] $ i=1..floor(sqrt(r^2-k^2)))$ k=c+1..r]:
D7:=[([-k,-i] $ i=1..floor(sqrt(r^2-k^2)))$ k=c+1..r]:
D8:=[([k,-i] $ i=1..floor(sqrt(r^2-k^2)))$ k=c+1..r]:
DD:=D1.D2.D3.D4.D5.D6.D7.D8: nops(DD);
Dp:=plot::Listplot(DD, LinesVisible=FALSE, PointColor=RGB::Green, PointSize=1):
plot(kreisg,Dp,Cp, Ap,Bp);anzahl:=nops(A)+nops(B)+nops(C)+nops(DD);
;anteilKeisImQuadtrat=float(anzahl/n);
anteilKeisImQuadtrat2=float(anzahl/r^2);