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

From ApCoCoAWiki
Line 51: Line 51:
  
 
Listenkonstruktionen sind in {\CoCoA} so wichtig und nützlich, dass ihnen eine eigene Seite  
 
Listenkonstruktionen sind in {\CoCoA} so wichtig und nützlich, dass ihnen eine eigene Seite  
gewidmet wird, siehe [[ApCoCoA:Exampels_Tutorial_De_List|Die List mit den Listen]].
+
gewidmet wird, siehe [[ApCoCoA:Examples_Tutorial_De_List|Die List mit den Listen]].
  
 
----
 
----

Revision as of 07:26, 16 July 2008

Zahlen, Vektoren, Matrizen oder einfach nur Listen?

CoCoA stellt verschiedene Objekttypen zur Verfügung, aber eh wir uns diese genauer anschauen, müssen wir erst etwas über Zuweisungen und neue Objekte in Erfahrung bringen.

Wie die CoCoA-Befehle, so beginnen auch die Objekte in CoCoA mit einem Großbuchstaben. Die einzigen Objekte, welche klein geschrieben werden sind Variablen, d.h. aber auch, dass CoCoA zum Beispiel quit; als das Produkt 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 q\cdot u\cdot i\cdot t} betrachtet. Dies ist eine beliebte Fehlerquelle. \medskip

Wollen wir z.B. dem Objekt MeineZahl den Wert 5 zuweisen, so schreiben wir MeineZahl:=5;. CoCoA legt also ein neues Objekt (MeineZahl) an und weist ihm den Wert 5 zu. Zuweisungen werden mit := gemacht und natürlich mit einem Semikolon abgeschlossen. \medskip

Aber was ist 5 nun für ein Objekt-Typ? Dies lässt sich mit dem Befehl Type(...); herausfinden.

Type.png

Also ist MeineZahl vom Wert INT, also eine ganze Zahl, was bei 5 auch durchaus ersichtlich ist. Die folgende Liste umfasst die häufigsten Objekt-Typen in CoCoA.


INT: Die ganzen Zahlen , also z.B. die Mersensche Zahl , eine Zahl mit 9808358 Stellen, welche zugleich auch die größte bekannte Primzahl ist. Speichert man diese Zahl in einer Text-Datei ab, so hat diese alleine 9,4MB. Hingegen ist die größte ganze Zahl, die auf einem 32-Bit-Computer üblicherweise verwendet werden kann , bzw. auf 64-Bit-Computer .


RAT: Rationale Zahlen $\mathbb{Q}$. In CoCoA sind dies wirklich zwei ganze Zahlen, die geteilt und gekürzt werden. Für CoCoA ist etwas völlig anderes als (). CoCoA kann nicht in rechnen, wie denn auch, um z.B. einzulesen (eine transzendente Zahl, also eine Zahl, mit unendlich vielen Nachkommastellen) müsste man, auch mit noch so schnellen Computern) unendlich lange warten. Aber so schlimm ist das Ganze ja nun auch wieder nicht Zum einen kann CoCoA symbolisch mit dem Objekt hervorragend umgehen und zum anderen liegt dicht in . Das bedeutet für uns, dass wir beliebig nahe mit einer rationalen Zahl an eine reelle Zahl herankommen können. So hat schon Archimedes von Syrakus (282-212 v. Chr.), durch die Betrachtung des regelmäßigen 96-Ecks, wie folgt angenähert:


LIST: Listen, sind eine der mächtigsten Konstruktionen in CoCoA. Eine Liste wird immer mit eckigen Klammern beschrieben. So erzeugt z.B. M:=[1..10]; in CoCoA eine Liste vom Namen M, welche die Liste der Zahlen 1 bis 10 enthält, also [ [1,2,3,4,5,6,7,8,9,10] ]. Aber eigentlich wollten wir doch nur eine Liste der Zahlen 1 bis 10 erzeugen, wir können dazu einfach den Befehl Flatten(M); ausführen, dieser vereinfacht die Liste M und wir erhalten nun [1,2,3,4,5,6,7,8,9,10]. Dies hätten wir aber auch direkt durch M:=1..10; erhalten.

Listenkonstruktionen sind in {\CoCoA} so wichtig und nützlich, dass ihnen eine eigene Seite gewidmet wird, siehe Die List mit den Listen.


ZMOD: CoCoA kann auch direkt modulo rechnen. Modulo-Zahlen werden mit n%p, also ein- und ausgegeben, so liefert die Eingabe 4%7 + 5%7; die Antwort 2%7. Wohingegen die Anweisung 4%7 * 5; die Antwort -1%7 liefert. CoCoA rechnet also automatisch weiter modulo, sobald eine modulo-Zahl dabei ist.


STRING: Eine Texteingabe, hierbei wird die Eingabe (in Anführungsstrichen) einfach als Zeichenfolge ohne Bedeutung behandelt. Dieser Datentyp ist für Fehlermeldungen oder Ausgaben sehr wichtig, so verursacht z.B. Print "Dies ist ein Text!"; die Ausgabe Dies ist ein Text!.


BOOL: Die Boolschen Werte sind beim Vergleich von Elementen unumgänglich, es gibt nur TRUE und FALSE. So liefert etwa die Anfrage 1=0; im Allgemeinen die Ausgabe FALSE, wohingegen 1%2=-1%2; TRUE liefert.


MAT: Der Datentyp Matrix: Eine Matrix ist einfach betrachtet eine Liste von Listen, wobei die Teillisten alle gleich lang sind, d.h. man gibt jede Zeile einer Matrix als Liste (innerhalb einer Liste) ein. Wichtig ist nun, dass man CoCoA sagt, dass es sich um eine Matrix handelt. So erzeugt L:=[ [2,4],[1,7] ]; die Liste der beiden Listen [2,4] und [1,7], wohingegen M:=Mat([ [2,4],[1,7] ]); eine Matrix mit den beiden Zeilen [2,4] und [1,7] erzeugt. Mit Mat(...); kann man aus jeder Liste (sofern ihre Proportionen stimmen) eine Matrix machen und mit List(...); kann man aus einer Matrix wieder eine Liste von Listen machen.

Bsp mat.png


POLY: Ein Polynom in CoCoA wird im Prinzip genau so eingegeben, wie man es normalerweise schreibt; so wird das Polynom mit P:=3x^ 2-y+z-5; eingegeben. Exponenten werden mit der ^-Taste eingegeben. Unbestimmte in CoCoA sind die einzigen Elemente, welche klein geschrieben werden. Man kann immer nur die Unbestimmten verwenden, die im (aktuellen) Polynomring vordefiniert sind. Standardmäßig benutzt CoCoA zu Beginn immer Q[x,y,z], wenn wir mit mehr Variablen rechnen wollen, so brauchen wir einen größeren Ring, z.B. den Ring Q[x[1..10]], dieser stellt uns die Variablen x[1] bis x[10] zur Verfügung.


IDEAL: Ein Ideal des Polynomrings ist die Teilmenge , für die gilt und dass eine Untergruppe von ist. Für uns ist vor allem die erste Eigenschaft wichtig. So ist Ideal(x);, die Menge aller Vielfachen von x, bzw. aller Polynome, die x enthalten, d.h. das Polynom y ist nicht in Ideal(x).

So ist dann das Ideal von die Menge aller Polynome , wobei die beliebige Polynome aus unserem Polynomring sind.


VECTOR: Ein Vector ist der gewohnte Vektor, also eine 1xn-Matrix, nur dass die Elemente in der CoCoA-Version des Vektors Polynome sind. Dies lässt natürlich die gewohnten Vektoren wie z.B. zu.