💾 Archived View for magaz.hellug.gr › 30 › 03_yacas › index.gmi captured on 2024-02-05 at 09:31:51. Gemini links have been rewritten to link to archived content
-=-=-=-=-=-=-
Πίπιλας Κων/νος(mailto:pilotos@hellug.gr) Σεπ 2001
1. ΕΙΣΑΓΩΓΗ
2. ΕΓΚΑΤΑΣΤΑΣΗ
3. ΧΡΗΣΗ
4. ΕΠΙΠΛΕΟΝ ΣΤΟΙΧΕΙΑ
5. Yacas vs Others
Πρόκειται για ένα πολύ ισχυρό και επεκτάσιμο πρόγραμμα, που για να εκμεταλευτείτε όλη του τη δύναμη "θα πρέπει να του μιλήσετε στη δική του γλώσσα". Δεν είναι και τίποτα ιδιαίτερο, ιδίως αν έχετε μια βασική γνώση προγραμματισμού. Αλλά και εντελώς αρχάριοι να είστε, νομίζω ότι είναι απλά θέμα εξοικείωσης και λίγων λεπτών για να μπορέσετε να κάνετε τις βασικές εργασίες.
Αν λοιπόν θέλετε να εκτελείτε σε δευτερόλεπτα διάφορα προβλήματα όπως υπολογισμός παραγώγου, ολοκληρωμάτων, ορίων, πολλαπλασιασμός πινάκων, επίλυση γραμμικών εξισώσεων, απλοποίηση παραστάσεων, υπολογισμός σειρών Taylor κτλ., που απαιτούν ένα σωρό πράξεις σίγουρα το Yacas θα το αγαπήσετε.
Το Yacas μπορείτε να το κατεβάσετε από το επίσημο site:
url name="http://www.xs4all.nl/%C2%A0apinkus/%5C[1]" url="http://www.xs4all.nl/%C2%A0apinkus/%5C%22%5C%3E%5C[2] ή από κάποιο κοντινό mirror
(http://linuxberg.ntua.gr[3] στο Ε.Μ.Π. στην κατηγορία X11/Scientific/Math/).
Το μέγεθος του είναι περίπου 450ΚΒ.
1: http://www.xs4all.nl/%C2%A0apinkus/%5C
2: http://www.xs4all.nl/%C2%A0apinkus/%5C%22%5C%3E%5C
Είναι συμβατό με όλες τις Unixοειδή πλατφόρμες (αφού η είσοδος και η έξοδος του Yast είναι σε μορφή text) οπως τα Linux, FreeBSD κτλ., αρκεί να έχετε εγκατεστημένο ένα compiler C++, πχ. τον g++.
Αφού το κατεβάσετε εκτελέστε την εντολή :
tar -xzvf yacas-έκδοση.tgz
στον κατάλογο που επιθυμείτε. Στην συνέχεια μπείτε σε αυτόν τον κατάλογο και πληκτρολογήστε τις εξής εντολές :
./configure make make install
Αν όλα πάνε καλά τότε είστε έτοιμοι να χρησιμοποιήσετε το πρόγραμμα με την εντολή yacas. Εκτός από τη Source μορφή, μπορείτε να το κατεβάσετε και σε RPM ή DEB.
Για να ξεκινήσει το 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;
Οι δυνατότητες του Yacas δεν σταματούν βέβαια εδώ. Το Yacas μπορεί να συνεργαστεί με άλλα προγράμματα όπως το Gnuplot και να μας δίνει πχ. το αποτέλεσμα από έναν υπολογισμό πάνω στο καρτεσιανό επίπεδο σε ένα παράθυρο στα X-Windows.
Μπορεί να προσπελάσει αρχεία που έχουμε δημιουργήσει (κάποιον αλγόριθμο) και να τα εκτελέσει.Μια πολύ μεγάλη δυνατότητα που μας δίνει αυτό το πρόγραμμα είναι οτι μπορούμε να ορίσουμε τις δικές μας συναρτήσεις που χρησιμοποιούμε καθημερινά και να το φέρουμε στα μέτρα μας. Όλα αυτά ελπίζω να τα προσθέσω σε μια καινούρια έκδοση αυτής της παρουσίασης.
Πολλοί από σας θα αναρωτηθήκατε γιατί να μπω στον κόπο να μάθω άλλο ένα τέτοιο πρόγραμμα, την στιγμή που υπάρχουν διάφορα άλλα, με πλήρη κατάλογο συναρτήσεων, καλύτερη οργάνωση, τεράστια και αναλυτικά εγχειρίδια χρήσης, που είναι και καθιερωμένα στο χώρο και τα χρησιμοποιεί και πολύς κόσμος (βλέπε Mathematica και Scilab).
Η απάντηση είναι απλή : γιατί το Yacas μπορεί να το αποκτήσει οποιοσδήποτε αφού διανέμεται κάτω από GNU General Public License (δεν γνωρίζω αν το Scilab είναι κάτω από GPL αλλά νομίζω πως είναι) με ολόκληρο τον κώδικα μπροστά του και από την αλλή γιατί το μέγεθος του είναι ελάχιστο σε σχέση με τα άλλα παρόμοια προγράμματα και με τις δυνατότητες που έχει.
Οπότε το μόνο που έχετε να κάνετε τώρα είναι να το κατεβάσετε στον υπολογιστή σας και να το δοκιμάσετε, γιατί όπως λέει ο λαός: "καλό ακούγεται αλλά αν δεν το