Difference between revisions of "ApCoCoA-1:Fundamentals Tutorial De Ring"

From ApCoCoAWiki
Line 1: Line 1:
 
== Wo bin ich? (... und wie kann ich umziehen?) ==
 
== 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.
+
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: <math>\mathbb{R}</math> ist zwar ein schöner Körper, aber für den Einsatz in der Computeralgebra total ungeeignet, da sich Elemente wie <math>\pi</math> und <math>\sqrt{2}</math> nun einfach nicht in endlich vielen Stellen abspeichern lassen. Jedoch wollen wir nicht so schnell aufgeben, symbolisch kann CoCoA}mit dem Objekt <math>\sqrt{2}</math> 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.
+
Im Gegensatz zu normalen Definitionen werden Ringe mit <tt>::=</tt> festgelegt, so wird der Polynomring <math>\mathbb{F}_5\left[x,y\right]:=\mathbb{Z}/\!\;\!_{5\mathbb{Z}}\left[x,y\right]</math> mit <tt>S::=Z/(5)[x,y];</tt> unter dem Namen <tt>S</tt> 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:  
 
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:  

Revision as of 13:46, 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 \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}