next up previous
Next: About this document ...

Το πρόγραμμα KASH
Το πρόγραμμα KASH είναι ένα πρόγραμμα συμβολικής άλγεβρας βασισμένο στην βιβλιοθήκη KANT V4 (Computational Algebraic Number Theory. Μπορεί να εκτελέσει υπολογισμούς τόσο σε σώματα αριθμών όσο και σε σώματα αλγεβρικών συναρτήσεων. Μέσω του πακέτου PVM υποστηρίζει κατανεμημένους υπολογισμούς σε πολλούς υπολογιστές που τρέχουν διαφορετικές εκδόσεις του Unix.

Χρήση Για να το ξεκινήσουμε γράφουμε στο prompt kash και ο υπολογιστής ανταποκρίνεται με

kash>
που σημένει ότι το πρόγραμμα είναι έτοιμο να δεχθεί εντολές. Για να τερματίσουμε το πρόγραμμα πληκτορλογούμε
kash>quit;
Το KASH είναι πρόγραμμα συμβολικών υπολογισμών και δεν καταφεύγει σε αριθμιτική κινητής υποδιαστολής και πεπερασμένης ακρίβειας. Έτσι για παράδειγμα δίνουμε
kash> 1/3+1/2;
5/6
Το αποτέλεσμα είναι 5/6 και όχι 0.833333333333! Το KASH μπορεί να χειριστεί αριθμούς απεριόριστου μεγέθους (που περιορίζονται μόνο από τις αποθηκευτικές δυνατότητες του υπολογιστή). Έτσι
kash> 666^666;
271541759288712855826087455170021786027838521065016987178223004696578367534784\
603688013417861287317081040369394618136925376390776734814142359269954981438585\
309058005792575777286547766974032030622709400636076630337695472357344193883258\
618859601636747029392705682480231361672383305593666601292142319787714400226324\
514478109346054646257736974663071867802948304106037331337648245560659985653200\
111117423345076820028856039271697478224170953365430292002540313209626985629026\
842226720098365723596644589192169647865964771608482657447815673166354263425761\
875056075351412658924918167675222004537186685221728745459415025183608088786527\
610184833513790116757654287910149888366373032818151480800952809005528561125366\
155648578375191671516389923637068612545908928591509856524061271778433035659907\
099937099027157651275866007333020305683709128393004786162164158503634595479326\
165593895852888778701548580946457862112993933286295883107151254097505408450243\
425177831253342079786634358573748818965808816613570280697021834844832652027344\
442640175038787842736503395375213097324598270999348133857903750526167553966478\
796074667482527451958013385703152678559571864116226566032365908052857936209172\
690002387460244899885396862691793991738773357078062613492707085820369352745180\
327438422889555512909451485998615969501470146470402649889349212006778573387292\
851099036349527469520676832881968856724904460084994793476708042987577163193492\
415961223417659787157202545333783334777830218014905077675699766649698676892834\
587204825046787698439067298022983708693783338395078457245428904542657506873425\
865596233432542160135568886423752229229562648133533088569487318295430287726946\
641649809356760113688980954104973336888392785547924780056268147894207107543052\
594542403021659363655062233931413319416693234844064515946449947016545969427094\
539246444208735559647539174640853111520180776757872042024272504000286839563050\
880598016
KASH και Αλγεβρική Θεωρία Αριθμών
Ας θεωρήσουμε ένα ακ. αλγεβρικό αριθμό στο $ \mathbb{C}$. Για παράδειγμα έστω μια ρίζα του πολυωνύμου

$\displaystyle f(x)=x^5+4x-56x^2-16x+192 \in \mathbb{Z}[x]. $

Είναι αυτό ανάγωγο? Ξεχάστε τα κριτήρια του Eisenstein της τοπικότητας κτλ. Με την εντολή
kash>f:=Poly(Zx,[1,4,0,-56,-16,129]);
x^5 + 4*x^4 - 56*x^2 - 16*x + 129
kash>PolyIsIrreducible(f);
true

Στο KASH o δακτύλιος $ \mathbb{Z}[x]$ συμβολίζεται με $ Zx$. Δίνουμε λοιπόν

kash>f:=Poly(Zx,[1,4,0,-56,-16,129]);
x^5 + 4*x^4 - 56*x^2 - 16*x + 129
kash>  o:=Order(f);
Generating polynomial: x^5 + 4*x^4 - 56*x^2 - 16*x + 129

Η συνάρτηση $ Order(f)$ καταχωρεί τον δακτύλιο των αλγεβρικών $ \mathbb{Z}[\rho]$, όπου $ \rho $ είναι μία ρίζα του πολυωνύμου $ f$. Τώρα μπορούμε να κάνουμε πράξεις με τα στοιχεία του $ o$ αρκεί να τα ορίσουμε. Κάθε στοιχείο του $ \mathbb{Z}[\rho]$ δέχεται παράσταση της μορφής $ a=a_1+a_2\rho+a_3 \rho^2 +a_4 \rho^3 +a_5 \rho ^4$. Ορίζουμε λοιπόν το $ a:=3\rho+5\rho^3$ και υπολογίζουμε το $ a^2+1$.

kash> rho:=Elt(o,[0,1,0,0,0]);
[0, 1, 0, 0, 0]
kash> a:=Elt(0,[0,3,0,5,0]);  
Error, usage : Elt (<Order>, <element expression>)
kash> a:=3*rho+5*rho^3;     
[0, 3, 0, 5, 0]
kash> a^2+1;
[12901, -4825, -5191, 1400, 430]
Νόρμες και ίχνη μπορούν πολύ εύκολα να υπολογιστούν ως εξείς:
kash> EltNorm(rho);
-129
kash> Elt(a^2+1);
Error, usage : Elt (<Order>, <element expression>)
kash> EltNorm(a^2+1);
119283257604086997021
kash>

Το KASH έχει επεκτεταμένο σύστημα online βοήθειας. Αν δουλεύουμε σε περιβάλλον γραφικών και δώσουμε

kash>?poly
τότε θα δούμε το σχετικό λήμμα στην οθόνη μας μέσω του xdvi.



Aristides Kontogeorgis 2001-02-08