Eine kurze Einführung in Pari

Das Arithmetik-Programmpaket Pari kann man von der Seite http://pari.math.u-bordeaux.fr/ der Uni Bordeaux herunterladen, wo das Entwicklerteam um Henri Cohen beheimatet ist. Es ist unter allen gängigen Plattformen lauffähig; die Installationsdetails werden in der Online Dokumentation und den begleitenden Texten beschrieben. Ich gehe im folgenden von einem Windows-System aus.

Wichtige Begleitdokumente sind das User Manual (users.pdf), das Tutorial (tutorial.pdf) und die Reference Card (refcard.pdf) . Man sollte am Anfang ein paar Beispiele aus dem Tutorial ausprobieren, welches sich dann aber bald in zahlentheoretischen Spezialitäten verliert. Nach kurzer Übung reicht i.A. ein Blick auf die 4-seitige Reference Card, um etwa eine Befehlssyntax nachzuschlagen.

Hat man Pari erfolgreich gestartet, öffnet sich ein Kommandozeilenfenster, in welches man direkt Befehle eingeben kann, z.B.

A=matrix(3,3,i,j,Mod(random(7),7)) wodurch man z.B. folgenden Output erhält

[Mod(3, 7) Mod(6, 7) Mod(4, 7)]
[Mod(0, 7) Mod(5, 7) Mod(1, 7)]
[Mod(6, 7) Mod(4, 7) Mod(4, 7)]

demnach eine zufällige 3x3 Matrix mit Koeffizienten im Restklassenkörper modulo 7 gegeben wird. Studieren Sie die Pari-Befehle matrix, Mod, random, um dies zu verstehen. Mit dem Befehl matdet(A) , welcher den Output Mod(6, 7) liefert, stellen Sie fest, daß diese Matrix invertierbar ist und berechnen die Inverse, indem Sie einfach A^(-1) ins Befehlsfenster eingeben und den Output

[Mod(5, 7) Mod(1, 7) Mod(0, 7)]
[Mod(1, 7) Mod(5, 7) Mod(3, 7)]
[Mod(2, 7) Mod(4, 7) Mod(6, 7)]

erhalten.

Im folgenden ein Beispiel mit antisymmetrischen Matrizen, das in der Vorlesung angesprochen wurde. Zunächst generieren wir eine zufällige antisymmetrische 3x3 Matrix mit reellen Koeffizienten durch die Befehle A=lift(A) mit dem Output

[3 6 4]
[0 5 1]
[6 4 4]

und A=A-mattranspose(A) mit dem Output

[0 6 -2]
[-6 0 -3]
[2 3 0]

In der Vorlesung wurde besprochen, daß dann exp(A) eine orthogonale Matrix sein muß. Nun kann man nicht einfach den Pari-Befehl exp(A) eingeben, denn dabei würde das System lediglich die Matrix berechnen, die entsteht, wenn man jeden einzelnen Koeffizienten in die Exponentialfunktion einsetzt. Tatsächlich wollen wir die Matrix A als solche in die Exponentialreihe einsetzen, alsoberechnen. Dazu definiere ich die Parifunktion f(n)=if(n==0,1.0*matid(3),f(n-1)*A/n) , umzu berechnen (Machen Sie sich dies klar! Warum wurde wohl der Faktor 1.0 verwendet?) Anschließend berechne ich die Reihe durch den Pariausdruck B=suminf(n=0,f(n)) . Um allzuviele Stellen hinter dem Komma zu vermeiden, gebe ich vorher noch den Paribefehl \p 2 . Das Ergebnis in diesem Fall ist

[0.80 0.53 -0.28]
[-0.59 0.77 -0.22]
[0.097 0.34 0.93]

Man überzeugt sich leicht, daß dies eine orthogonale Matrix ist, indem man überprüft, daß, also “auf Pari” den Befehl B*mattranspose(B) gibt. Der Output

[1.0 0.000000069 -0.000000017]
[0.000000069 1.0 0.000000029]
[-0.000000017 0.000000029 1.0]

entspricht hinreichend gut der Einheitsmatrix.

Man könnte Befehle wie die obigen auch in eine Datei schreiben, z.B. die Datei “LinaTest.gp”, die z.B. den folgenden Inhalt besitzt:

\\ ******************************************************
\\ Pari Test
\\ Michael Hortmann
\\ 17.2.2006
\\ ******************************************************

A=matrix(3,3,i,j,random(10)):
A=A-mattranspose(A);
f(n)=if(n==0,1.0*matid(3),f(n-1)*A/n);
B=suminf(n=0,f(n));
B*mattranspose(B);

Diese Datei “LinaTest.gp” habe ich auf meinem Rechner im Verzeichnis D:\Document\Uni\Lehrveranstaltungen\Lineare Algebra I, WS05-06\Pari abgespeichert. Jetzt muß man Pari per Hand darüber informieren, wo es diese Datei finden kann. Dies geschieht durch den Befehl

default(path,”D:/Document/Uni/Lehrveranstaltungen/Lineare Algebra I, WS05-06/Pari”)

auf der Kommandozeile. Man beachte, daß Pari das Zeichen / im Pfadnamen erwartet, nicht die DOS/Windows-Konvention \ .