ApCoCoA-1:Fundamentals Tutorial De Ring

From ApCoCoAWiki
Revision as of 13:10, 17 July 2008 by StK (talk | contribs) (New page: == 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 sin...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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: $\mathbb{R}$ ist zwar ein schöner Körper, aber für den Einsatz in der Computeralgebra total ungeeignet, da sich Elemente wie $\pi$ und $\sqrt{2}$ nun einfach nicht in endlich vielen Stellen abspeichern lassen. Jedoch wollen wir nicht so schnell aufgeben, symbolisch kann {\CoCoA} mit dem Objekt $\sqrt{2}$ ohne Probleme umgehen. \medskip

Im Gegensatz zu normalen Definitionen werden Ringe mit \texttt{::=} festgelegt, so wird der Polynomring $\mathbb{F}_5\left[x,y\right]:=\mathbb{Z}/\!\;\!_{\textstyle 5\mathbb{Z}}\left[x,y\right]$ mit \texttt{S::=Z/(5)[x,y];} unter dem Namen \texttt{S} bereitgestellt. \medskip

Mit \texttt{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 \texttt{Using} und \texttt{EndUsing;} verwenden: \begin{center} \begin{tabular}{l} \texttt{Using S Do}\\ \quad \texttt{For I:= 1 To Characteristic(S) Do}\\ \qquad \texttt{I\textasciicircum 2;}\\ \qquad \texttt{PrintLn;}\\ \quad \texttt{EndFor;}\\ \texttt{EndUsing;} \end{tabular} \end{center} Wichtig ist hier, dass der Befehl eigentlich aus drei Teilen (\texttt{Using}, \texttt{Do} und \texttt{EndUsing}) besteht und nur ein Semikolon am Ende von \texttt{EndUsing} bedarf. \begin{center} \includegraphics[width=0.4\textwidth]{./../images/1To25} \end{center} Die Syntax der \texttt{For}-Schleife ist mit der von \texttt{Using} vergleichbar und der Befehl \texttt{PrintLn;} verursacht einen Zeilenumbruch. Ziemlich vorhersagbar ist der Befehl \texttt{Charakteristic(S)}, welcher uns die Charakteristik des Körpers $\mathbb{F}_5$, also $5$ liefert. \medskip


\pagebreak


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: \begin{center} \begin{tabular}{l} \texttt{Using S Do}\\ \quad \texttt{For I:= 1 To Characteristic(S) Do}\\ \qquad \texttt{(I\textasciicircum 2){\%}Characteristic(S);}\\ \qquad \texttt{PrintLn;}\\ \quad \texttt{EndFor;}\\ \texttt{EndUsing;} \end{tabular} \end{center} Ohne die runden Klammern um \texttt{I\textasciicircum 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 \texttt{I\textasciicircum 2{\%}Characteristic(S);} nun \texttt{(I\textasciicircum 2){\%}Characteristic(S);} oder \texttt{I\textasciicircum (2{\%}Characteristic(S));} gemeint ist. \begin{center} \includegraphics[width=0.4\textwidth]{./../images/1To25modulo} \end{center} {\CoCoA} gibt also immer den betragsmäßig kleinsten modulo-Wert aus. \medskip

Nach einiger Zeit verliert man schon mal den Überblick, welche Ringe einem zur Verfügung stehen, hier schafft der Befehl \texttt{RingEnvs();} Abhilfe. \begin{center} \includegraphics[width=0.6\textwidth]{./../images/ringenvs} \end{center}