Difference between revisions of "ApCoCoA-1:Ap Tutorial De Example"

From ApCoCoAWiki
(→‎Ein rundes Beispiel: LaTeX -> CoCoAL code)
 
(One intermediate revision by one other user not shown)
Line 6: Line 6:
  
 
<code>
 
<code>
   M:=Mat([[0.9817,-0.191],[0.191,0.9817]]);
+
   M := Mat([[0.9817,-0.191],[0.191,0.9817]]);
   U:=[];
+
   U := [];
   P:=Mat([[1],[0]]);
+
   P := Mat([[1],[0]]);
   For I:=1 To 500 Do
+
   For I:= 1 To 500 Do
     P:=M*P;
+
     P := M*P;
     P[1,1]:=FloatApprox(P[1,1],\,10\^{}(-6));
+
     P[1,1] := FloatApprox(P[1,1], 10^(-6));
     P[2,1]:=FloatApprox(P[2,1],\,10\^{}(-6));
+
     P[2,1] := FloatApprox(P[2,1], 10^(-6));
     Append(U,\,[P[1,1],\,P[2,1]]);
+
     Append(U, [P[1,1], P[2,1]]);
 
   EndFor;
 
   EndFor;
 
</code>
 
</code>
Line 23: Line 23:
  
 
<code>
 
<code>
   A:=[[2+P[2],2+P[1]*1.414,2+P[2]]|P In U];
+
   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];
+
   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));
+
   C := Mat(Concat(A,B));
 
</code>
 
</code>
  
Line 39: Line 39:
  
 
Der ApCoCoA-Befehl
 
Der ApCoCoA-Befehl
<center></tt>L:=Numerical.GBasisOfPoints(C,0.08,False);</tt></center>
+
<center><tt>L:=Numerical.GBasisOfPoints(C,0.08,False);</tt></center>
  
 
berechnet eine sogenannte Gröbner-Basis des approximativen
 
berechnet eine sogenannte Gröbner-Basis des approximativen

Latest revision as of 20:25, 1 August 2008

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 jeweils um ca. weitergedreht. Dann betrachten wir die Kreise vom Radius um den Punkt , die in den Ebenen und 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.

1000Punkte.png

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 verwendet wird. Die resultierende Liste enthält Polynome und mit

und

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

und das zweite entspricht der Gleichung

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

1000Punkte Sphere.png