ApCoCoA-1:Ap Tutorial De Example

From ApCoCoAWiki

Ein rundes Beispiel

Zuallererst konstruieren wir uns eine gestörte Menge von Punkten. Hierfür verwenden wir in ApCoCoA die folgenden kleinen Programme.

Mit Hilfe der Befehle

 M := Mat([[0.9817,-0.191],[0.191,0.9817]]);
 U := [];
 P := Mat([[1],[0]]);
 For I:= 1 To 500 Do
   P := M*P;
   P[1,1] := FloatApprox(P[1,1], 10^(-6));
   P[2,1] := FloatApprox(P[2,1], 10^(-6));
   Append(U, [P[1,1], P[2,1]]);
 EndFor;

erzeugen wir zunächst 500 Punkte, die in der Nähe des Einheitskreises liegen. Hierbei wird der Punkt (1,0) jeweils um ca. 11 weitergedreht. Dann betrachten wir die Kreise vom Radius 2 um den Punkt (2,2,2), die in den Ebenen E1:xz=0 und E2:x+yz=6 liegen. Mit

 A := [ [2+P[2], 2+P[1]*1.414, 2+P[2]] | P In U ];
 B := [ [2+P[1]+P[2]*0.577, 2-2*P[2]*0.577, 2-P[1]+P[2]*0.577] | P In U ];
 C := Mat(Concat(A,B));

erzeugen wir dann 1000 Punkte, die wie zwei Gürtel stark gestört um die beiden Kreise liegen.

Nun suchen wir nach polynomialen Relationen, die an diesen Punkten approximativ verschwinden. Wir machen über die Gestalt der zu berechnenden Gleichungen nur geringe Annahmen: Die in den Relationen vorkommenden Variablen seien bekannt, und die gesuchten Relationen seien von polynomialer Natur.

Der ApCoCoA-Befehl

L:=Numerical.GBasisOfPoints(C,0.08,False);

berechnet eine sogenannte Gröbner-Basis des approximativen Verschwindungsideals der 1000 Punkte, wobei ε=0.08 verwendet wird. Die resultierende Liste L=[f1,f2,] enthält Polynome f1 und f2 mit

f10.07x20.07y20.07z2+0.29x+0.29y+0.29z0.71

und

f12.3f20.07x20.07xy+0.07yz+0.07z2+0.43x0.43z

Das erste ist ziemlich genau das 0.07-fache der definierenden Gleichung der Sphäre

(x2)2+(y2)2+(z2)2=2

und das zweite entspricht der Gleichung

(xz)(x+y+z6)=0

der beiden Ebenen, die wir ja zur Konstruktion der Punkte verwendet hatten.