Friday, 26 June 2009

Maxima

To Maxima είναι ένα σύστημα υπολογιστικής άλγεβρας (computer algebra system) για την επεξεργασία συμβολικών και αριθμητικών εκφράσεων. Συμπεριλαμβάνει παραγώγιση, ολοκλήρωση, σειρές Taylor, μετασχηματισμοί Laplace, κανονικές διαφορικές εξισώσεις, συστήματα γραμμικών εξισώσεων, πολυώνυμα καθώς και σύνολα, διανύσματα, πίνακες και τανυστές.Το Maxima προσφέρει υψηλής ακρίβειας αριθμητικά αποτελέσματα χρησιμοποιώντας ακριβή κλάσματα, μεταβλητής ακρίβειας ακεραίους και μεταβλητής ακρίβειας πραγματικούς αριθμούς. Έχει τη δυνατότητα σχεδιασμού συναρτήσεων και δεδομένων σε δύο και τρεις διαστάσεις.

Το πρόγραμμα Maxima είναι τώρα πλέον ελεύθερο λογισμικό υπό την άδεια GNU GPL ενώ κατάγεται από το Macsyma, το θρυλικό σύστημα υπολογιστικής άλγεβρας που αναπτύχθηκε στα τέλη του 1960 στο πανεπιστήμιο της Μassachussetts.

Οι δυνατότητες του Maxima είναι απεριόριστες και εδώ θα περιοριστούμε στην παρουσίαση μερικών μόνο. Η γραμμή εντολών του χωρίζεται σε inputs και outputs, οπότε γράφοντας 9+7; θα πάρουμε ως αποτέλεσμα 16 (τo ; στο τέλος είναι απαραίτητο κατάλοιπο από τη C). Τίποτε το συνταρακτικό. Αν όμως δώσουμε 2/6; θα μας επιστρέψει 1/3, θα απλοποιήσει δηλαδή το κλάσμα χωρίς να υπολογίσει την προσέγγισή του. Αν θέλουμε ένα ρητό αριθμό ως προσέγγιση τότε θα πρέπει να γράψουμε float(1/3); για να πάρουμε το αποτέλεσμα 0.333333333333. Αλλά ας περάσουμε σε κάτι πιο θεαματικό. Ας υποθέσουμε ότι χρειαζόμαστε να αναπτύξουμε τον αριθμό 30! (30 παραγοντικό είναι 1*2*3*...*28*29*30) σε γινόμενο πρώτων παραγόντων, τότε γράφοντας factor(30!); παίρνουμε ως αποτέλεσμα 2^26*3^14*5^7*7^4*11^2*13^2*17*19*23*29. Φυσικά με τον ίδιο τρόπο μπορούμε να παραγοντοποιήσουμε πολυώνυμα factor(x^2 + x -6); για να δούμε (x-2)(x+3).

H επίλυση εξισώσεων γίνεται το ίδιο εύκολα solve(x^2-4,x); Το δεύτερο όρισμα, x, δηλώνει ως προς ποια μεταβλητή θα πρέπει να λυθεί η εξίσωση. Η παραγώγιση πραγματοποιείται με τη συνάρτηση diff(sin(x), x); Πάλι το δεύτερο όρισμα δηλώνει ως προς ποιά μεταβλητή πρέπει να παραγωγηθεί η δεδομένη συνάρτηση. Παρόμοια λειτουργεί και η αόριστη ολοκλήρωση integrate(1/x,x); και η ορισμένη ολοκλήρωση integrate(x+2/(x-3), x, 0, 1); H ανάπτυξη μιας συνάρτησης σε σειρά Taylor γίνεται με δύο τρόπους: niceindices(powerseries(%e^x, x, 0)); ή taylor(%e^x, x, 0, 5); Το όρισμα 0 δηλώνει σε ποιο σημείο να υπολογισθεί η σειρά ενώ στο δεύτερο τρόπο το όρισμα 5 δηλώνει πόσους όρους να δείξει στο αποτέλεσμα.

Φυσικά ένα τέτοιο πρόγραμμα θα ήταν ελλειπές αν δεν είχε δυνατότητες σχεδιασμού. Χρησιμοποιεί το πρόγραμμα gnuplot για το σχεδιασμό. Οι συναρτήσεις plot2d και plot3d δίνουν αυτή τη δυνατότητα. Tα αποτελέσματα των εντολών plot2d([x^2, x^3, x^4-x+1], [x,-10,10]);


και f(x,y):= sin(x) + cos(y); plot3d(f(x,y), [x,-5,5], [y,-5,5]); δίνουν τα αντίστοιχα διδιάστατα και τριδιάστατα γραφήματα. Στη δεύτερη περίπτωση ορίσαμε προηγουμένως μια νέα συνάρτηση χρησιμοποιώντας τον τελεστή := για να αποφύγουμε μια μακροσκελή εντολή.



To πρόγραμμα είναι γραμμένο σε Common Lisp και περιλαμβάνει μια πλήρη γλώσσα προγραμματισμού και σύνταξη παρόμοια με την ALGOL. Mπορεί να προσπελαστεί προγραμματιστικά και να επεκταθεί καθώς η υποκείμενη Lisp μπορεί να κληθεί μέσα από το Maxima. Μία άλλη πολύ ενδιαφέρουσα δυνατότητα του Maxima είναι η δημιουργία κώδικα για compiled γλώσσες προγραμματισμού όπως η FORTRAN.

Εγκαθίσταται πολύ απλά από τη γραμμή εντολών με sudo apt-get install maxima ή από το μενού Εφαρμογές > Προσθαφαίρεση Προγραμμάτων. Πρόσθετα πακέτα που μπορούν να φανούν χρήσιμα είναι τα maxima-doc, maxima-emacs, kayali (ένα GUI γραμμένο σε Qt), xmaxima (ένα GUI γραμμένο σε tcl/tk). Περισσότερες λεπτομέρειες μπορούν να βρεθούν στην ιστοσελίδα http://maxima.sourceforge.net/

No comments:

Post a Comment