ApCoCoA-1:Fundamentals Tutorial De Ring

From ApCoCoAWiki

Wo bin ich? (... und wie kann ich umziehen?)

In CoCoA rechnet man üblicherweise in einem Polynomring, also idealerweise in Polynomen, welche über einem Körper definiert sind. Dieser Körper muss natürlich Computerverträglich sein: Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \mathbb{R}} ist zwar ein schöner Körper, aber für den Einsatz in der Computeralgebra total ungeeignet, da sich Elemente wie und nun einfach nicht in endlich vielen Stellen abspeichern lassen. Jedoch wollen wir nicht so schnell aufgeben, symbolisch kann CoCoA}mit dem Objekt ohne Probleme umgehen.

Im Gegensatz zu normalen Definitionen werden Ringe mit ::= festgelegt, so wird der Polynomring mit S::=Z/(5)[x,y]; unter dem Namen S bereitgestellt.

Mit Use S; wird dann bis auf weiteres auf den neuen Ring umgestellt. Wenn man nur für eine Berechnung umschalten möchte, so kann man das Befehlspaar Using und EndUsing; verwenden:

 Using S Do
   For I:= 1 To Characteristic(S) Do}
     I^2;
     PrintLn;
   EndFor;
 EndUsing; 

Wichtig ist hier, dass der Befehl eigentlich aus drei Teilen (Using, Do und EndUsing) besteht und nur ein Semikolon am Ende von EndUsing bedarf.

1to25.png

Die Syntax der For-Schleife ist mit der von <Using> vergleichbar und der Befehl PrintLn; verursacht einen Zeilenumbruch. Ziemlich vorhersagbar ist der Befehl Charakteristic(S), welcher uns die Charakteristik des Körpers , also 5 liefert.

Aber eigentlich wollten wir doch modulo rechnen. Das Problem ist nun, das das {\CoCoA} ja nicht ahnen kann, also müssen wir dies explizit angeben:

 Using S Do
   For I:= 1 To Characteristic(S) Do
     (I^2)%Characteristic(S);
     PrintLn;
   EndFor;
 EndUsing; 

Ohne die runden Klammern um I^2 funktioniert die Rechnung nicht. Klar, wir wissen ja schon, dass CoCoA nicht raten kann was wir meinen. Wie soll CoCoA entscheiden, ob mit der Eingabe I^2%Characteristic(S); nun (I^2)%Characteristic(S); oder I^(2%Characteristic(S)); gemeint ist.

1To25modulo.png

CoCoA gibt also immer den betragsmäßig kleinsten modulo-Wert aus.

Nach einiger Zeit verliert man schon mal den Überblick, welche Ringe einem zur Verfügung stehen, hier schafft der Befehl RingEnvs(); Abhilfe.

Ringenvs.png




Weiter geht's im Kapitel Hilfe - Das CoCoA-Manual.