Difference between revisions of "ApCoCoA-1:Fundamentals Tutorial De Ring"
Line 17: | Line 17: | ||
Wichtig ist hier, dass der Befehl eigentlich aus drei Teilen (<tt>Using</tt>, <tt>Do</tt> und <tt>EndUsing</tt>) besteht und nur ein Semikolon am Ende von <tt>EndUsing</tt> bedarf. | Wichtig ist hier, dass der Befehl eigentlich aus drei Teilen (<tt>Using</tt>, <tt>Do</tt> und <tt>EndUsing</tt>) besteht und nur ein Semikolon am Ende von <tt>EndUsing</tt> bedarf. | ||
− | <center>[[Image: | + | <center>[[Image:1to25.png]]</center> |
Die Syntax der <tt>For</tt>-Schleife ist mit der von <Using> vergleichbar und der Befehl <tt>PrintLn;</tt> verursacht einen Zeilenumbruch. Ziemlich vorhersagbar ist der Befehl <tt>Charakteristic(S)</tt>, welcher uns die Charakteristik des Körpers <math>\mathbb{F}_5</math>, also 5 liefert. | Die Syntax der <tt>For</tt>-Schleife ist mit der von <Using> vergleichbar und der Befehl <tt>PrintLn;</tt> verursacht einen Zeilenumbruch. Ziemlich vorhersagbar ist der Befehl <tt>Charakteristic(S)</tt>, welcher uns die Charakteristik des Körpers <math>\mathbb{F}_5</math>, also 5 liefert. | ||
Revision as of 14:05, 17 July 2008
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: 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.
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.
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.