YACAS (Yet Another Computer Algebra System): ΧΡΗΣΗ
Description: This is issue 30 of Magaz, the Hellenic LinuxMagazine
Keywords: magaz hellenic greek hellas greece hellug linux magazine

Magaz, The Greek Linux Magazine
Τεύχος #30
Περιληπτικά Περιεχόμενα Αναλυτικά Περιεχόμενα Mirrors Links Πληροφορίες Συντάκτες Αναζήτηση Επικοινωνία
Επόμενο Προηγούμενο Περιεχόμενα ### 3. ΧΡΗΣΗ Για να ξεκινήσει το Yacas όπως είπαμε και πιο πάνω γράψτε
    yacas
ή αν είστε στα X-Windows ανοίξτε ένα παράθυρο προσωμοίωσης τερματικού και κάντε το ίδιο. Στις πρώτες σειρές θα δείτε κάποιες πληροφορίες για το πρόγραμμα και την βοήθεια. Στην συνέχεια βλέπετε το command prompt του Yacas:
    In>
στο οποίο εισάγετε όλες τις εντολές.Στο τέλος κάθε εντολής μπαίνει ένα ελληνικό ερωτηματικό. Σε κάθε γραμμή μπορείτε να εισάγετε μια μόνο εντολή.Πχ:
    In>N(Cos(Pi));
Οι ``απαντήσεις'' του Yacas στις εντολές που του δίνουμε εμφανίζονται μετά το prompt:
    Out>
Για να κλείσουμε το πρόγραμμα πληκτρολογούμε `Exit()` ή `quit` ή `^C (Ctrl+C)`. Το Yacas συνοδεύεται από ένα πολύ καλό documentation, που εξηγούνται όλες οι λεπτομέρειες του προγράμματος και η πρόσβαση σ' αυτό γίνεται με την εντολή `??` όπου και θα ανοίξει ο Browser Lynx για να δείτε τις HTML σελίδες του documentation. Επίσης μπορείτε να πάρετε βοήθεια για μια συνάρτηση δίνοντας `?συνάρτηση()`, πχ.
    ?Sin()
Το συντακτικό που χρησιμοποιεί το Yacas είναι C-like. Δηλαδή οι αριθμητικές πράξεις παριστάνονται ως εξής: πρόσθεση : + αφαίρεση : - πολ/σμος : * διαίρεση : / δύναμη : ^ (δηλαδή το 2 στον κύβο παριστάνεται 2^3). Δύο άλλα σύμβολα που χρησιμοποιούνται είναι: ανάθεση τιμής : = ισότητα : == Επίσης υπάρχουν διάφορες συναρτήσεις εκ των οποίων οι βασικότερες είναι οι: ημίτονο = `Sin()` συνημίτονο = `Cos()` εφαπτομένη = `Tan()` Υπολογισμός `e^x = Exp(x)` νεπέριος λογάριθμος του `x = Ln(x)` ρίζα του `x=Sqrt(x)` απόλυτη τιμή αριθμού = `Abs(x)` η αριθμητική τιμή μιας έκφρασης = `N(έκφραση)` n παραγοντικό = `n!` Για μια ολοκληρωμένη εικόνα των συναρτήσεων που συναντούνται στο Yacas υπάρχει το functions reference (το βρίσκετε με την εντολή `??`). Για παράδειγμα ένας αριθμητικός υπολογισμός που θα μπορούσε να εκτελεστεί στο Yacas θα ήταν:
    In>(3*6^2+7*897)/(N(Sin(5)*Tan(6)));
και η έξοδος από το Yacas θα ήταν :
    Out>22888.1333231108;
Όταν δουλεύουμε με δεκαδικούς αριθμούς τότε μπορούμε από την αρχή να καθορίσουμε την ακρίβεια των δεκαδικών ψηφίων. Αυτό γίνεται με την συνάρτηση `Precision(n)`, όπου n ο αριθμός των δεκαδικών ψηφίων. Πχ.:
    In> Precision(15);
    Out> True;
    In> N(7/23);
    Out> 0.304347826086956;
Το κύριο χαρακτηριστικό του Yacas είναι η χρήση λιστών για την παρουσίαση πιο σύνθετων αλγορίθμων όπως ο πολ/σμος πινάκων, διανυσμάτων κτλ. (η ιδέα αυτή προέρχεται από την γλώσσα προγραμματισμού LISP). Μια λίστα είναι ένα αριθμημένο σύνολο από αντικείμενα. Στο Yacas μια λίστα δημιουργείται βάζοντας μέσα σε άγκυστρα τα αντικείμενα και χωρίζοντάς τα με κώμμα. Πχ. αν `a, b, c, d` είναι αντικείμενα, μια λίστα θα είχε τη μορφή : {a,b,c,d}. Έτσι ένα διάνυσμα παριστάνεται στο Yacas σαν μια λίστα και ένας πίνακας σαν μια λίστα από λίστες. Για να προσπελάσουμε ένα αντικείμενο μιας λίστας χρησιμοποιούμε την εντολή: `ls[n]`, όπου `ls` είναι το όνομα της λίστας και `n` είναι η θέση του αντικειμένου που ζητάμε από τη λίστα. Οπότε αν είχαμε το διάνυσμα
    ls{a,b,c,d,e,f}
τότε θα μπορούσαμε να εκτελέσουμε τις εξής εντολές:
    ls[3];
και η έξοδος του προγράμματος θα ήταν το `c`.
    ls[2 .. 4];
και η έξοδος θα ήταν η λίστα `{b,c,d}` (οι 2 τελείες ".." μεταφράζονται "εως" και χρησιμοποιούνται για λόγους συντομίας). Ας κάνουμε τώρα ενα παράδειγμα πολ/σμού πινάκων. Έστω ο πίνακας Κ23 είναι 2x3 και ο M34 είναι 3x4. Για να τους ορίσουμε δίνουμε στο prompt:
    In> K23:={{x,y,2},{4,y,x)}; και
    In> M34:={{3,x,y,x+1},{x+y,y-2,2,y},{y^2-1,4,y,2*x^2}};
Οπότε αν τώρα δώσουμε
    K23*M34
θα πάρουμε το γινόμενο των 2 αυτών πινάκων που είναι ένας νέος πίνακας 2x4. Υπάρχουν αρκετές συναρτήσεις για τους πίνακες και γενικά για την γραμμική Άλγεβρα όπως η συνάρτηση `Determinant(M)`, που μας επιστρέφει την ορίζουσα του πίνακα M, η `Inverse(Μ)` που επιστρέφει τον αντίστροφο του M κτλ. Στο Yacas μπορούμε να δουλέψουμε άνετα με συναρτήσεις και να κάνουμε τους συνήθεις υπολογισμούς όπως υπολογισμός τιμών συνάρτησης, παραγώγου, ολοκληρώματος και ορίου. Πχ. έστω ότι έχουμε την συνάρτηση `f(x)=2x+3` και θέλουμε να υπολογίσουμε το `f(4)`, την παράγωγο της `f`,το ολοκλήρωμα της `f` από `a` εως `b` και το όριο της `f` όταν το `x` τείνει στο 0. Τότε θα είχαμε τα παρακάτω :
    In> f(x):=2*x+3; /* Ορισμός συνάρτησης */
    Out> true;
    In>f(4); /* Υπολογισμός του f(4) */
    Out>11;
    In>D(x) f(x); /* Υπολογισμός παραγώγου της f */
    Out>2;
    In>Integrate(x,a,b) f(x); /* Υπολογισμός ολοκληρώματος */
    Out>(2*b^2)/2+3*b-((2*a^2)/2+3*a);
    In>Limit(x,0) f(x); /* Υπολογισμός ορίου της f όταν x->0 */
    Out>3;
Με το Yacas έχουμε την δυνατότητα επίλυσης συστημάτων γραμμικών (προς το παρόν) εξισώσεων, αρκεί να μην το παρακάνετε (μην του βάλετε ένα σύστημα 100x100 γιατί θα σας πάρει κάποια χρόνια:). Για παράδειγμα έστω ότι θέλουμε να λύσουμε το σύστημα :
    4x+6y+z=2
    x-4z=4
    y+2z=2
Θα χρησιμοποιήσουμε την συνάρτηση `Solve` πέρνωντας κάθε εξίσωση και κάθε μεταβλητή σαν στοιχεία μιας λίστας :
    In> Solve({4*x+6*y+z==2,x-4*z==4,y+2*z==2},{x,y,z});
    Out> {{-84/5,62/5,-26/5}};
Μπορούμε ακόμη να κάνουμε απλοποίηση παραστάσεων με την συνάρτηση `Simplify`:
    In> Simplify((x-8)^2+(x-6)^2);
    Out> 2*x^2-28*x+100;
Πολλές φορές τα αποτελέσματα που παίρνουμε από το Yacas είναι μεγάλα και δύσκολα στο διάβασμα. Γι' αυτό μας δίνεται η δυνατότητα να εκτυπώνονται τα αποτελέσματα έτσι ώστε να τα καταλαβαίνουμε εύκολα με την βοήθεια της συνάρτησης `PrettyForm` (σε ASCII text). Πχ. αν είχαμε ως αποτέλεσμα από έναν υπολογισμό την παράσταση:
    ((3*x^2+1)/2!)+7*x+1/2*x^2-2*x+3/8
δίνοντας:
    In> PrettyForm(%); /* Το % παίρνει την προηγούμενη τιμή της εξόδου */
Θα πέρναμε ως έξοδο:
         2
    3 * x + 1           1    2           3
    --------- + 7 * x + - * x - 2 * x +  -
        2               2                8
    Out>True;
Επόμενο Προηγούμενο Περιεχόμενα