Συγκριτικό: Πακέτα αριθμητικής ανάλυσης

dimitris | Δευ, 09/22/2014 - 13:01 | 37' | 6

Σε περιπτώσεις πράξεων για τις οποίες δεν αρκεί το χαρτί ή το απλό κουμπιουτεράκι, εκεί αναλάμβάνουν δράση τα πακέτα αριθμητικών υπολογισμών για να κάνετε τη δουλειά σας σωστά και (μερικές φορές) εύκολα. Σε αυτό το άρθρο, συγκρίνουμε τα Scilab, Οctave, Sage, Euler, Matlab...

Πίσω στην δεκαετία του 1980, οι περισσότεροι μαθητές σχολείων υποχρεωνόμασταν να κάνουμε ανάλυση, άλγεβρα κλπ με τα γνωστά κουμπιουτεράκια. Όχι ότι μας επέτρεπαν να τα χρησιμοποιήσουμε και πολύ μια και τα περισσότερα πράγματα
"έπρεπε" να γίνουν με χαρτί και μολύβι. Το κομπιουτεράκι ήταν για "ειδικές περιπτώσεις", εκεί όπου οι αριθμοί ήταν δύσκολοι. Αργότερα, στο πανεπιστήμιο, έπρεπε να γράψουμε τα δικά μας προγράμματα για αριθμητικούς υπολογισμους. Αυτό απαιτούσε ατέλειωτες ώρες μπροστά σε ένα τερματικό για να κάνουμε τον κώδικα να δουλεύει σωστά. Αλλά σύντομα βρέθηκε ένας καλύτερος τρόπος.

Στην αρχή, ξεκίνησαν σαν βιβλιοθήκες συναρτήσεων που θα μπορούσαν να χρησιμοποιηθούν σε προγράμματα για επίλυση υπολογιστικών προβλημάτων, αλλά πολύ γρήγορα εξελίχθηκαν σε πανίσχυρες, αλληλεπιδραστικές, και προγραμματιζόμενες εφαρμογές που επιτρέπουν την επίλυση πολύπλοκων μαθηματικών και μηχανικών προβλημάτων σε μερικά λεπτά της ώρας. Πρόκειται για τα πακέτα αριθμητικών υπολογισμών που έχουν γίνει σήμερα θεμελιώδη εργαλεία του επιστήμονα και του μηχανικού. Χρησιμοποιούνται σχεδόν σε κάθε τομέα της σύγχρονης επιστήμης για διαχείριση δεδομένων, ανάλυση και οπτικοποίηση.

Ο ηγέτης

Από όλα τα πακέτα αυτού του Συγκριτικού, το Matlab είναι αναμφισβήτητα το πιο γνωστό και πιο διαδεδομένο. Η σύγκριση με το Matlab είναι αναπόφευκτη για κάθε άλλο πακέτο αριθμητικών υπολογισμών είτε είναι ανοικτού κώδικα είτε όχι. Ωστόσο, το Matlab έχει ένα μεγάλο μειονέκτημα: το κόστος του. Ένα μεγάλο μέρος της ελκυστικότητας του Matlab βασίζεται στο πόσες έξτρα εργαλειοθήκες θέλετε και πόσα χρήματα είστε διατεθειμένοι να δώσετε. Για όσους από μας όμως τα χρήματα είναι περιορισμένα, το να έχουμε ικανοποιητικές και ελεύθερες εναλλακτικές επιλογές είναι πραγματικά σημαντική δυνατότητα.

Όταν ψάχναμε για εναλλακτικές του Matlba, ξέραμε ήδη δύο από αυτές: το Scilab και το Octave. Για να βρούμε τις άλλες δύο έπρεπε να ψάξουμε αρκετά. Αφήσαμε απ' έξω από το Συγκριτικό, εφαρμογές που δεν έχουν ανανεωθεί εδώ και ένα χρόνο. Επίσης δεν συμπεριλάβαμε το EngLab, μια ελληνική εφαρμογή ανοικτού κώδικα που ανέπτυσσε μια ομάδα φοιτητών του Αριστοτελείου, μια και από ότι φαίνεται η ανάπτυξη έχει μείνει πίσω.

Οι δοκιμές μας

Όλα τα πακέτα αριθμητικών υπολογισμών του Συγκριτικού έχουν αρκετά κοινά χαρακτηριστικά. Υπάρχει όμως το θέμα των επιδόσεων των αλγορίθμων τους, πράγμα σημαντικό όταν δουλεύουμε με πολύ μεγάλα σύνολα δεδομένων.

Οι παράγοντες που αξιολογήσαμε ήταν η ευκολία της εγκατάστασης, το γραφικό περιβάλλον, η τεκμηρίωση, η υποστήριξη από την κοινότητα και οι διαθέσιμες εργαλειοθήκες (τα toolboxes). Για τη σύγκριση των αλγορίθμων τρέξαμε τις συναρτήσεις εύρεσης ιδιοτιμών (svd) και μετασχηματισμού Fast Fourier (fft) για έναν πίνακα 500x500 πραγματικών τιμών, 100 φορές, υπολογίζοντας το χρόνο που χρειάστηκε κάθε πακέτο και παράλληλα τη μέση τιμή και την τυπική απόκλιση των αποτελεσμάτων μας.

MATLAB

Αν θέλετε (και μπορείτε) να έχετε το καλύτερο...
Ιστοσελίδα: www.mathworks.com
Τιμή:  $135 για home χρήση

Το Matlab είναι στην ευχάριστη θέση να θεωρείται ο ηγέτης μια και προσφέρει την καλύτερη υπολογιστική πλατφόρμα και χρησιμοποιείται από τους περισσότερους επιστήμονες και μηχανικούς. Το Matlab είναι επίσης βασικό εργαλείο σε πολλά πανεπιστημιακά μαθήματα (Μαθηματικών, Μηχανικών, κλπ) πράγμα που του δίνει αρκετό έδαφος για χρήση από τους μελλοντικούς επαγγελματίες και μετά το Πανεπιστήμιο. Μια μικρή περιήγηση στο περιβάλλον του Matlab αρκεί για να αντιληφθεί κανείς το γιατί αυτό το πρόγραμμα θέτει τον πήχη ψηλά για όλα τα υπόλοιπα.

Για αρχή, το Matlab προσφέρει ένα μοντέρνο IDE (περιβάλλον ανάπτυξης) για να δουλέψει κανείς. Αυτό περιλαμβάνει ένα παράθυρο εισαγωγής εντολών, ένα παράθυρο "ιστορικού" και ένα διαχειριστή αρχείων. Στο ιστορικό, οι εντολές εμφανίζουν ετικέτα με ημερομηνία, και από εκεί μπορείτε να επιλέξετε εντολές ή ομάδες εντολών για να τις ξανατρέξετε. Εάν δουλεύετε σε πολύ μικρές εφαρμογές όπου αρκούν μερικά αρχεία για να ολοκληρώσετε τη δουλειά σας, τότε αυτό το IDE θα σας φανεί περιττό. Όμως, αν φτιάχνετε μια εφαρμογή πολλών αρχείων, τότε το IDE είναι μεγάλο πλεονέκτημα. Το Matlab χρησιμοποιείται συχνά για την κατασκευή μεγάλων και πολύπλοκων εφαρμογών όπου χρειάζεται καλή διαχείριση κώδικα. Κανένα από τα υπόλοιπα πακέτα του Συγκριτικού μας δεν φτάνει κοντά στο να δώσει ένα πραγματικό IDE για υπολογισμούς όπως το Matlab.

Η γλώσσα των πινάκων του Matlab είναι εύκολη στην εκμάθηση, και μόλις εξοικειωθείτε με τη χρήση διανυσμάτων και πινάκων τότε όλα φαίνονται πολύ φυσικά. Απλές πράξεις με πίνακες που θα χρειάζονται πολλές γραμμές κώδικα, ή πολύπλοκοι πολλαπλασιασμοί που θα χρειάζονταν ολόκληρα προγράμματα μπορούν να γίνουν με μόλις μία γραμμή κώδικα. Το βασικό πακέτο του Matlab έρχεται με μια τεράστια γκάμα μαθηματικών συναρτήσεων, την οποία προσπαθούν να "φτάσουν" και οι υπόλοιπες εφαρμογές. Επιπρόσθετα, το Matlab διαθέτει και υποστήριξη αντικειμενοστραφούς προγραμματισμού (OOP), πράγμα επίσης το κάνει να ξεχωρίζει από τα υπόλοιπα πακέτα της κατηγορίας. Με τον OOP, το Matlab διευκολύνει τη δημιουργία μεγάλων και πολύπλοκων εφαρμογών για όσους προτιμούν γλώσσες όπως η C++. To Matlab προσφέρει ακόμα τη δυνατότητα δημιουργίας γραφικών περιβαλλόντων στις εφαρμογές, δηλαδή μας γλυτώνει από δουλειά που όπως και να' χει θα κάναμε κάποια στιγμή αργότερα.

Ταχύτητα

Οι επιδόσεις είναι ένας τομέας όπου το Matlab είχε αρκετές δυσκολίες στο να κρατήσει μια απόσταση από τα υπόλοιπα πακέτα. Στην δοκιμή με τις ιδιοτιμές - μια σημαντική και συνηθισμένη ανάλυση πίνακα σε διάφορους αλγόριθμους - το Matlab ήταν ελαφρά πάνω από 20% ταχύτερο από το Scilab και το Octave.

Πρέπει να τονίσουμε όμως ότι οι μετρήσεις επιδόσεων εξαρτώνται από πολλούς παράγοντες και χρειάζεται να επαναλαμβάνονται αρκετές φορές για να έχουν κάποια αξιοπιστία. Επομένως, τα αποτελέσματά μας είναι για σχετική και μόνο σύγκριση των πακέτων. Ωστόσο, ακόμα και μικρές διαφορές δεκάτων του δευτερολέπτου μπορούν να έχουν δραματικές συνέπειες στην απόδοση μιας εφαρμογής όταν οι υπολογισμοί γίνονται τεράστιοι ή απαιτούνται δεκάδες χιλιάδες επαναλήψεις. Στην περίπτωση των μικρών εφαρμογών ή προβλημάτων, όμως, αυτές οι διαφορές είναι αμελητέες.

Εάν ακόμα πλεονέκτημα του Matlab είναι ο τεράστιος αριθμός των διαθέσιμων εργαλειοθηκών του (που είναι πρόσθετα add-ons στο βασικό πακέτο). Αυτές οι εργαλειοθήκες αφορούν σε εξειδικευμένες επιστημονικές εφαρμογές όπως επεξεργασία εικόνας, μοριακή βιολογία, οικονομετρία, αριθμητική ανάλυση, κ.α, και γλυτώνουν πολύ χρόνο όταν χρειάζεστε αποτελέσματα γρήγορα χωρίς να ανακαλύπτει ξανά τον τροχό. Η MathWorks, η εταιρεία πίσω από το Matlab, έχει φτιάξει ένα website όπου οι χρήστες μπορούν να μοιράζονται κώδικα και να αλληλοβοηθιούνται. Αν και τα υπόλοιπα πακέτα προσφέρουν παρόμοιες εργαλειοθήκες, εκείνες του Matlab δείχνουν πιο "καλογυαλισμένες".

Ακριβό το τίμημα

Συνολικά, το Matlab είναι καταπληκτικό προϊόν, αλλά το μεγάλο του μειονέκτημα είναι προφανώς η τιμή του. Ουσιαστικά, η χρήση του Matlab έξω από τα πανεπιστήμια είναι αδύνατη για έναν μέσο χρήστη. Ακόμα και μικρές εταιρείες όμως θα δυσκολευτούν να καλύψουν τα έξοδα του Matlab, όταν μάλιστα υπάρχουν οι δωρεάν εναλλακτικές επιλογές που θα δούμε παρακάτω. Το Matlab είναι καθαρά η πλατφόρμα αριθμητικών υπολογισμών για όσους μπορούν να την αποκτήσουν και δεν έχουν πρόβλημα με κλειστές άδειες. Διαφορετικά, αξίζει περισσότερο να στραφείτε σε κάποιο αντίστοιχο ελεύθερο πακέτο.

Το IDE του Matlab. Αριστερά, ο επεξεργαστής του workspace και, από κάτω, το ιστορικό εντολών ακριβώς.

Αξιολόγηση

Το Matlab είναι το πιο προηγμένο πακέτο, αλλά θέλει πολλά λεφτά για να το αποκτήσετε. Αυτός ήταν και ο λόγος που μειώσαμε τη βαθμολογία του.

Βαθμολογία 9/10

 

OCTAVE

Η κατά GNU εναλλακτική επιλογή....
Ιστοσελίδα: www.octave.org
Τιμή: Δωρεάν υπό την GPL

Το Octave ξεκίνησε σαν εργασία ενός μαθήματος χημικών μηχανικών το 1988 αλλά σήμερα έχει εξελιχθεί σε έναν αξιόλογο και χρήσιμο κλώνο του Matlab. Έχει φτάσει σε σημείο να θεωρείται ένα από τα καλύτερα πακέτα αριθμητικής ανάλυσης του ανοικτού κώδικα ενώ παράλληλα οι προγραμματιστές καταβάλλουν προσπάθειες ώστε να είναι όσο πιο συμβατό γίνεται με το Matlab. Το ίδιο το website του Octave έχει αρκετές οδηγίες για το πως μπορείτε να γράφετε κώδικα που να παίζει τόσο στο Matlab όσο και στο Octave.

Το Octave εγκαταστάθηκε χωρίς πρόβλημα στον υπολογιστή της δοκιμής μας. Αρχικά, εμφανίζει ένα παράθυρο κελύφους, που φαίνεται πολύ γυμνό όταν το χρησιμοποιείτε. Ωστόσο, μπορείτε να κατεβάσετε το περιβάλλον Octclipse (από το sourceforge.net), που απ' ότι φαίνεται βασίζεται στο Eclipse IDE. Εναλλακτικά υπάρχει το QtOctave, ένα γραφικό περιβάλλον για το Octave σε Qt, που αφήνει τρομερές υποσχέσεις. Με λίγα λόγια μπορείτε να έχετε ένα IDE και στο Octave αλλά θα πρέπει να ψάξετε λίγο για να το βρείτε. Το καλό είναι ότι αν δεν σας αρέσει το ένα περιβάλλον, μπορείτε άνετα να χρησιμοποιήσετε το άλλο.

Οι διαφορές ανάμεσα στη βασική γλώσσα πινάκων του Octave και του Matlab είναι ολιγάριθμες. Τα περισσότερα προγράμματα σας δεν θα έχουν πρόβλημα συμβατότητας. Αυτό ίσως αλλάξει στο μέλλον λόγω της προσθήκης αντικειμενοστραφούς προγραμματισμού στο Matlab. Στο Wiki του Octave θα βρείτε μια λίστα όλων των συναρτήσεων της πιο πρόσφατης έκδοσης του Matlab που δεν υπάρχουν στο Octave. Πενήντα από αυτές αφορά σε αντικειμενοστραφείς λειτουργίες. Επομένως, αν οι χρήστες του Matlab αρχίσουν να εκμεταλλεύονται αυτές τις νέες δυνατότητες του, τότε η συμβατότητα του Octave θα μειωθεί σημαντικά.

Από την άλλη μεριά, το Octave έχει και μερικά ξεχωριστά χαρακτηριστικά. Ένα από αυτά είναι η inline δήλωση των συναρτήσεων. Δηλαδή, αν δουλεύουμε από τη γραμμή εντολών μπορούμε να "πακετάρουμε" επαναλαμβανόμενες εντολές εξοικονομώντας χρόνο αντί να τις γράψουμε και να τις σώσουμε σε ένα ξεχωριστό αρχείο. Αυτό δεν γίνεται στο Matlab. Ένα ακόμα πρακτικό στοιχείο που δεν υπάρχει στο Matlab είναι η υποστήριξη τόσο διπλών όσο και μονών εισαγωγικών στον ορισμό strings, όπως γίνεται και στην Python. Παρόμοια, στο Octave χρησιμοποιείται και το σύμβολο # για σχόλια.

Αυτό σημαίνει ότι αν βάλετε το

#! ./usr/bin/octave -q

στην αρχή ενός αρχείου, και το εκτελέσετε, τότε το Linux θα επιχειρήσει να το τρέξει με το Octave. Αυτό μπορεί να έχει πολύ ενδιαφέρουσες χρήσεις στην εγκατάσταση εφαρμογών.

Αυτές οι "καινοτομίες" δεν φαίνονται σημαντικές αλλά ήταν σίγουρα αιτήματα των χρηστών του Octave και γι' αυτό ενσωματώθηκαν. Άλλωστε ένα project σαν το Octave μπορεί να είναι πολύ πιο ευήκοο στους χρήστες του απ' ότι μια εταιρεία σαν την MathWorks.

Επιδόσεις

Θα ήταν μεγάλη απογοήτευση αν η ταχύτητα των υπολογισμών σε ένα πακέτο ανοικτού κώδικα υπολειπόταν δραματικά ενός αντίστοιχου πακέτου κλειστού κώδικα. Ευτυχώς, δεν συμβαίνει αυτό εδώ. Το Octave φάνηκε να τρέχει στο 80% της ταχύτητας του Matlab στις ιδιοτιμές (svd) και στο μισό της ταχύτητας του στο μετασχηματισμό Fourier (fft). Ωστόσο, στην περίπτωση του fft, η τελική διαφορά μετράτε σε εκατοστά του δευτερολέπτου...

Δεν μπορούμε να ξέρουμε ποιες είναι οι εσωτερικές διαφορές του Matlab από το Octave (ή το Scilab) που επιτρέπουν στο πρώτο να υπερτερεί έστω και λίγο. Το να βρει κανείς τι φταίει και να το διορθώσει δεν είναι εύκολη δουλειά, μια και υπάρχουν πολλοί παράγοντες που μπορεί να προκαλούν αυτή τη διαφορά επιδόσεων, όπως η χρήση της μνήμης και του επεξεργαστή την ώρα της δοκιμής, οι δομές δεδομένων κλπ. Η ουσία είναι όμως ότι η απόδοση του Octave είναι κάτι παραπάνω από αποδεκτή για μεσαίου μεγέθους προβλήματα.

Στο octave.sourceforge.net θα βρείτε έξτρα πακέτα με εργαλειοθήκες για το Octave. Η λίστα είναι αρκετά μεγάλη και καλύπτονται όλοι οι τομείς που θα βρείτε και στο Matlab. Η ύπαρξη μιας τόσο μεγάλης γκάμας εξειδικευμένου κώδικα που μπορείτε να κατεβάσετε και να τρέξετε χωρίς κόστος είναι πολύ μεγάλο πλεονέκτημα για το Octave. Επομένως, για τους χρήστες που δίνουν σημασία στην ελευθερία και την επιλογή, το Octave είναι ιδανική επιλογή.

Με το Octave θα τα βρείτε λίγο σκούρα στην αρχή, μια και δεν υπάρχει IDE. Μπορείτε όμως πολύ εύκολα να εγκαταστήσετε το QtOctave, που υπάρχει στα αποθετήρια των περισσότερων διανομών...

Αξιολόγηση

To Octave είναι μια στέρεα πλατφόρμα αριθμητικής ανάλυσης και όχι μόνο, χάρη στις εκατοντάδες εργαλειοθήκες του. Όσο για IDE μπορείτε να δοκιμάσετε το QtOctave.

Βαθμολογία 8/10

 

SAGE

Για "χοντρά" μαθηματικά....
Web: www.sagemath.org
Τιμή: Δωρεάν υπό την GPL

Το Sage δεν είναι απλά ένα πακέτο αριθμητικών υπολογισμών/ανάλυσης. Ναι κάνει και αυτά, αλλά δουλεύει επίσης και σαν CAS (σύστημα υπολογιστικής άλγεβρας) πράγμα που του δίνει έξτρα πόντους μια και εκτός από ανάλυση και άλγεβρα, μπορείτε να το αξιοποιήσετε για κρυπτογραφία, θεωρία αριθμών, θεωρία γράφων κοκ.

Το Sage διαφέρει από τα υπόλοιπα πακέτα του Συγκριτικού στο ότι χρησιμοποιεί την Python αντί για κάποια δική του "γλώσσα προγραμματισμού", και τρέχει σε web server. Για όσους ξέρουν Python, αυτό θα είναι σημαντικό ατού, μια και δεν θα χρειαστεί να μάθουν άλλη γλώσσα. Όσον αφορά την ταχύτητα, το Sage χρησιμοποιεί την NumPy και ήταν συγκρίσιμο με το Scilab και το Octave στον μετασχηματισμό Fourier ενώ μας εξέπληξε στην ανάλυση ιδιοτιμών όπου βγήκε με διαφορά πρώτο, πάνω κι από το Matlab!

To Sage είναι μια ιδιαίτερη εφαρμογή, με κώδικα σε Python, C/C++, Lisp και Fortran, που βασίζεται σε πάνω από 100 πακέτα ανοικτού λογισμικού που αναπτύσσονται εδώ και χρόνια όπως π.χ. το R και το Maxima. To τελευταίο είναι ένα πολύ γνωστό σύστημα υπολογιστικής άλγεβρας που βασίζεται με τη σειρά του στο Macsyma που αναπτύχθηκε στο MIT τη δεκαετία του 1960. Με το Maxima, το GAP και τα άλλα πακέτα, το Sage γίνεται ουσιαστικά μια εκλεκτή πρόταση για μαθηματικούς.

Online εργασία

Ο βασικός στόχος του Sage είναι όμως η εύκολη διάδοση και χρήση των μαθηματικών ιδεών, και αυτό το καταφέρνει με τα online "φύλλα εργασίας" (notebooks). Μέσω της web εφαρμογής του Sage μπορείτε να εισάγετε εντολές και να τις τρέξετε εκεί. Είναι σαν να έχετε έναν υπολογιστή στο Διαδίκτυο. Μπορείτε μάλιστα να αποθηκεύετε και να μοιράζεστε τα "βιβλία" σας, πράγμα που μπορεί να σας βοηθήσει στην έρευνα και τις συνεργασίες σας. Για να δοκιμάσετε το Sage, αρκεί να φτιάξετε έναν δωρεάν λογαριασμό στο website και μπορείτε άμεσα να γράψετε τα δικά σας notebooks.

 

Το Sage τρέχει μέσα σε τοπικό web server και τα γραφικά απεικονίζονται σε ξεχωριστή μικροεφαρμογή Java...

ΑΞΙΟΛΟΓΗΣΗ

Επιλέξτε το Sage εάν χρειάζεστε μια πολύ ισχυρή μηχανή για τα μαθηματικά σας προβλήματα. Η καμπύλη μάθησης όμως δεν είναι ομαλή...

Βαθμολογία 7/10

 

EULER MATH TOOLBOX

Αν προτιμάτε να δουλεύετε μόνοι σας...
Web: http://euler.rene-grothmann.de/
Τιμή: Δωρεάν υπό την GPL

Το Euler Math Toolbox (EMT) είναι παρόμοιο με το Matlab, αλλά δεν στοχεύει να είναι ένας ακόμα κλώνος του. Έχει γραφτεί ως ένα πλήρες μαθηματικό εργαστήριο, αλλά αφού το χρησιμοποιήσαμε λίγο νομίζουμε ότι πρόκειται περισσότερο για ένα προσωπικό εργαλείο. Μπορείτε φυσικά να αποθηκεύσετε και να μοιραστείτε με άλλους τα φύλλα εργασίας σας, αλλά δεν μπορείτε να φτιάξετε εφαρμογές με αυτό.

Το μειονέκτημα του EMT είναι ότι δεν είναι γνήσια εφαρμογή Linux. Υπάρχει μεν πηγαίος κώδικας αλλά για παλιότερη έκδοση. Αντίθετα, για να δοκιμάσετε την τελευταία έκδοση του, οι ίδιοι οι developers συστήνουν να το τρέξετε μέσω του Wine. Αυτό ήταν η μοναδική λύση για μας, κι αυτό κάναμε. Ετρεξε πάντως μια χαρά με το Wine του Ubuntu 8.04. Το επόμενο ερώτημα μας ήταν "πόσο καλά τα πάει;"...

Επιδόσεις

Όπως περιμέναμε, η ταχύτητα του EMT κάτω από το Wine δεν ήταν ικανοποιητική. Η ανάλυση ιδιοτιμών SVD χρειάστηκε 4 φορές περισσότερο χρόνο απ' ότι στο Scilab και το Octave. Ο μετασχηματισμός FFT δεν έγινε με πίνακα 500x 500 αλλά με διάνυσμα 262.144 στοιχείων. Παρατηρήστε ότι πρόκειται για δύναμη του 2, πράγμα που μας λέει ότι ο αλγόριθμος FFT δεν χειρίζεται περισσότερες από μια διαστάσεις κάθε φορά, οπότε ο χρήστης είναι υπεύθυνος για να δίνει δεδομένα κατάλληλου μήκους

Τα πλεονεκτήματα

Το EMT δεν είναι τέλειο, αλλά μπορεί να βρει μια θέση ανάμεσα στα Matlab, Scilab, και Octave. Το Sage ίσως είναι κάπως ...βαρύ για όσους θέλουν ένα απλό εργαλείο για να μελετήσουν μαθηματικά ή για να κάνουν μια μικρή εργασία, αλλά το EMT απευθύνεται ειδικά σε όσους αρέσκονται σε αυτό το στυλ αριθμητικών υπολογισμών. Χρησιμοποιεί μάλιστα τις ίδιες μαθηματικές συναρτήσεις του Maxima, όπως και το Sage. Συνολικά, είναι μια λύση που απευθύνεται σε συγκεκριμένα γούστα και ενδιαφέροντα.


Το Euler Math Toolbox έχει ένα "καθαρό" και απλό περιβάλλον, αφήνοντας στον χρήστη τον χώρο για να γράψει τις ιδέες του.

ΑΞΙΟΛΟΓΗΣΗ

Δεν είναι τόσο περιεκτικό όσο τα υπόλοιπα πακέτα, αλλά είναι καλή επιλογή για αρχάριους.

Βαθμολογία 7/10

 

SCILAB
Ο πραγματικός αντίπαλος του Matlab.
Web: www.scilab.org
Τιμή: Ελεύθερο για μη-εμπορική χρήση

Τα περισσότερα πακέτα αυτού του Συγκριτικού ξεκίνησαν και αναπτύχθηκαν από μεμονωμένα και αφοσιωμένα άτομα ή ομάδες χρηστών που ήθελαν μια ανοικτού κώδικα εναλλακτική επιλογή στο Matlab. Το Scilab είναι ένα τέτοιο παράδειγμα και έχει εξελιχθεί αρκετά τα τελευταία χρόνια με τις προσπάθειες ενός φορέα, του Scilab Consortium, που εδρεύει στο INRIA (Γαλλικό Ινστιτούτο Ερευνών για την Επιστήμη των Υπολογιστών). Το Consortium αποτελείται από 25 εταιρείες και εκπαιδευτικά ιδρύματα με εκτελεστική επιτροπή και επιστημονικό συμβούλιο. Πείτε ότι θέλετε για τις επιτροπές και τον τρόπο που δουλεύουν, αλλά η συγκεκριμένη ομάδα κατάφερε να κάνει πολύ καλή δουλειά στο Scilab.

Από όλες τις εφαρμογές του Συγκριτικού, το Scilab είναι αυτό που φτάνει πιο κοντά στο να αντικαταστήσει το Matlab. Πρώτον, αν και το περιβάλλον του Scilab δεν μπορεί να θεωρηθεί IDE, το παράθυρο εντολών είναι συνδεδεμένο με ένα παράθυρο επεξεργασίας όπου μπορούμε να αναπτύξουμε συναρτήσεις. Πολλές από τις λειτουργίες που είναι διαθέσιμες στο IDE του Matlab υπάρχουν και στο παράθυρο εντολών ή τον επεξεργαστή του Scilab.

Αυτός δεν είναι κλώνος

Πρέπει να τονίσουμε ότι το Scilab δεν στοχεύει να είναι αποκλειστικά κλώνος του Matlab. Στο wiki του υπάρχει πάντως ένα μεγάλο τμήμα για τη διαδικασία μεταφοράς προγραμμάτων από το Matlab, ενώ και στην τεκμηρίωση της εφαρμογής θα βρείτε ένα τμήμα με συμβουλές για την μετατροπή του κώδικα. Το πακέτο περιλαμβάνει μάλιστα και ένα σετ εργαλείων (mfile2sci, macr2tree, κλπ) που κάνουν τη μετατροπή πολύ πιο εύκολη.

Εάν ρίξετε μια ματιά στην τεκμηρίωση που υπάρχει στο website του Scilab, θα βρείτε όχι μόνο μια εντυπωσιακή λίστα από ενσωματωμένες συναρτήσεις αλλά επίσης και έναν αριθμό από ενσωματωμένες εργαλειοθήκες. Αυτές καλύπτουν αρκετές από τις περιοχές των εργαλειοθηκών του Matlab. Μάλιστα, έτσι όπως αναφέρονται οι εργαλειοθήκες στην τεκμηρίωση (ξεχωριστά από εκείνες που έχουν προσφέρει οι χρήστες) βγάζει κανείς το συμπέρασμα ότι πρόκειται για ανεξάρτητο κομμάτι του Scilab που έχει στόχο να μένει πάντα ενημερωμένο με το Matlab.

Μια εργαλειοθήκη του Scilab που δεν έχει αντίστοιχη στο Matlab είναι η Metanet για γράφους και δίκτυα. Το demo της είναι ο υπολογισμός της διαδρομής μέσα στο Παρισινό Μετρό. Επιλέγετε τον σταθμό αφετηρίας και τερματισμού και το demo απεικονίζει με έντονα την συντομότερη διαδρομή, μαζί με τους ενδιάμεσους σταθμούς και το συνολικό χρόνο που θα χρειαστείτε. Για όσους ασχολούνται με γράφους και ανάλυση δικτύων, αυτή η εργαλειοθήκη μπορεί να είναι χρήσιμη - αντίστοιχη εργαλειοθήκη υπάρχει στο πακέτο R (δείτε παρακάτω), ενώ υπάρχει και και μια εφαρμογή Qt για κοινωνικά δικτυα (http://socnetv.sourceforge.net).

Το Scilab έχει πάντως ένα κρυμμένο άσο, το  Xcos (Scicos). Πρόκειται για ένα εργαλείο οπτικής μοντελοποίησης, που επιτρέπει να την κατασκευή συστημάτων που μπορούν να προσομειώθούν δυναμικά. Το Scicos είναι πανίσχυρο εργαλείο και με αυτό το Scilab καταφέρνει να ξεπεράσει τους ανταγωνιστές του στο Συγκριτικό. Για το μέσο χρήστη, το πακέτο αυτό έχει μια αρκετά απότομη καμπύλη μάθησης αλλά μόλις το μάθετε θα σας λύσει τα χέρια αν ασχολείστε με σχεδίαση συστημάτων και προσομειώσεις. Το Xcos είναι η ελεύθερη εναλλακτική στο Simulink της MathWorks, το οποίο όμως πρέπει να αγοράσετε ξεχωριστά στο Matlab. Από τη μεριά τους, το Scilab και το Xcos μπορεί να μην έχουν την λεπτομέρεια του Matlab και του Simulink, αλλά είναι ικανοί ανταγωνιστές και δωρεάν!

Από την έκδοση 5.0 και μετά, το Scilab απέκτησε ένα μοντέρνο γραφικό περιβάλλον σε Java, νέο επεξεργαστή εντολών και χρήση OpenGL για τα γραφικά.


Αυτό που βλέπετε είναι το Xcos, το δωρεάν εργαλείο οπτικής μοντελοποίησης του Scilab. Πρέπει να δώσετε αρκετά χρήματα για να κάνετε κάτι αντίστοιχο στο Matlab.

Το περιβάλλον του Scilab έχει αρκετά χαρακτηριστικά που βρίσκουμε στο IDE του Matlab.

ΑΞΙΟΛΟΓΗΣΗ

Το Scilab είναι μια άριστη πλατφόρμα υπολογισμών που προσφέρει χαρακτηριστικά και λειτουργίες που δεν υπάρχουν στις υπόλοιπες εφαρμογές. Δικαιούται την πρώτη θέση....

Βαθμολογία 9/10

 

Η ΕΤΥΜΗΓΟΡΙΑ

Scilab 9/10

Το Scilab έχει πάρα πολλά όπλα στην φαρέτρα του: εργαλειοθήκες, οπτική μοντελοποίηση και προσομειώσεις, καθώς και μια λίστα ενσωματωμένων συναρτήσεων που αποδεικνύονται ισαξιες του Matlab (αναφερόμαστε στον αριθμό – όχι την συμβατότητα!). Με απλά λόγια, το Scilab είναι ένα σκαλί πιο πάνω στον ανταγωνισμό έναντι των υπολοίπων πακέτων. Κάποια από τα χαρακτηριστικά του οφείλονται στο γεγονός ότι το Scilab είχε το πλεονέκτημα της χρηματοδότησης, πράγμα που δεν είχαν τα υπόλοιπα projects (ή όχι στον ίδιο βαθμό). Η τελική αξία που προκύπτει από το βάθος και την ποιότητα των εργαλειοθηκών του Scilab, το φέρνει αρκετά πιο πάνω από τον κοντυνότερο ανταγωνιστή του στον ανοικτό κώδικα.

Το Octave αξίζει ειδικής αναφοράς. Εάν προτιμάτε να χρησιμοποιείτε μόνο ελεύθερο λογισμικό ή θέλετε να είστε μέρος ενός project όπου μπορείτε να συνεισφέρετε εύκολα, το Octave είναι η καλύτερη λύση μια και έχει μια στέρεη βάση από λειτουργίες που επεκτείνονται από πακέτα χρηστών. Η άποψή μας είναι ότι, εφόσον υπάρχουν ήδη δύο IDEs για το Octave, οι developers θα πρέπει να ενσωματώσουν ένα από αυτά στο Octave ή να φτιάξουν ένα δικό τους. Ένα οποιοδήποτε γραφικό περιβάλλον είναι πολύ πιο ελκυστικό και χρησιμο από ένα παράθυρο εντολών και έναν κειμενογράφο, αν και σίγουρα θα υπάρξουν αρκετοί που θα διαφωνήσουν...

Η ευχάριστη έκπληξη

Το Sage και το Euler Math Toolbox μπήκαν σε αυτό το Συγκριτικό πιο πολύ για να έχουμε ποικιλία επιλογών, μια και αυτό που αρέσει σε εκατό χρήστες μπορεί να μην αρέσει σε δέκα χιλιάδες και αντίστροφα. Μας έκανε λοιπόν πολύ καλή εντύπωση το Sage, που είναι αξιόλογη πρόταση όχι μόνο για αριθμητική ανάλυση αλλά και για συμβολικούς υπολογισμούς. Τα πλεονεκτήματά του είναι ότι βασίζεται σε μια υπάρχουσα γλώσσα προγραμματισμού, την Python, αντί να φτιάχνει τη δική του, και το ότι επιτρέπει τη δημιουργία και δημοσίευση μαθηματικών εγγράφων απευθείας στο Διαδίκτυο. Ειδικά το τελευταίο είναι κάτι που δεν υπάρχει και αξίζει συγχαρητηρίων...

ΤΟ ΠΑΚΕΤΟ R

Εάν ασχολείστε περισσότερο με Στατιστική, τότε πρέπει οπωσδήποτε να δείτε το GNU R, ένα πρόγραμμα που δεν είδαμε καθόλου εδώ. Πρόκειται για μια ελεύθερη υλοποίηση της γλώσσας S (όχι δεν κάνουμε πλάκα) που αναπτύχθηκε από τα Bell Laboratories (τώρα Lucent Technologies). Ουσιαστικά, το R είναι για το S ότι το Octave για το Matlab, δηλαδή κλώνος, αλλά εστιάζει στη Στατιστική. Παρόλα αυτά έχουν αναπτυχθεί εκατοντάδες εργαλειοθήκες που εξειδικεύονται στη διαχείριση δεδομένων, τους στατιστικούς ελέγχους και τις γραφικές απικεονίσεις, πράγματα δηλαδή που θα χρειαζόντουσαν πολύ κώδικα για να υλοποιηθούν στο Octave. Μπορείτε να βρείτε το R στο www.r-project.org και τις εργαλειοθήκες στο cran.r-project.org.

Ενα παράδειγμα από τις δυνατότητες βελτιστοποίησης του Scilab.

 

Δώσε αστέρια!

MO: 5 (ψήφοι: 1)

Σχόλια

Πολύ καλό το άρθρο! Επιτέλους έμαθα τι παίζει σχετικά με τις ελεύθερες εφαρμογές και ποια μπορεί να αντικαταστήσει τις εμπορικές καλύτερα.. Εγώ προσωπικά είχα ασχοληθεί πολύ λίγο με το matlab για τις ανάγκες ενός μαθήματος στη σχολή και λίγο παραπάνω με το mathematica. Σχετικά με τα Scilab και Gnu octave η σύνταξη  είναι η ίδια με αυτή του matlab? Δηλαδή αν κάποιος ασχοληθεί με αυτά θα μπορεί να χειριστεί αργότερα το matlab αν χρειαστεί?

Για το Octave μπορώ να σου πω γιατί το είχα χρησιμοποιήσει αρκετά. Το Octave έχει πρακτικά την ίδια γλώσσα στις περισσότερες περιπτώσεις με το Matlab (κυκλοφορούν και scripts μετατροπής στο διαδίκτυο). Δεν θα έχεις τύχη όμως αν κάνεις χρήση κάποιων toolkits που είναι διαθέσιμα μόνο στο Matlab.  Οπότε για ένα απλό number-crunching πρόγραμμα ή μια υλοποίηση κάποιου αλγορίθμου στο Matlab δεν θα έχεις πρόβλημα να το μεταφέρεις σχεδόν αυτούσιο και να το τρέξεις στο Octave.

το octave έχει πλεονεκτήματα και μειονεκτήματα σε σχέση με το matlab (και δεν αναφέρομαι μόνο στο κόστος σαν πλεονέκτημα) αλλά στην τελική πάντα θα μειονεκτεί γιατί εξορισμού ακολουθεί.

το sage είναι εξαιρετικά ισχυρό. Η ισχύς του είναι το ανακάτεμα από τεχνολογίες ανοικτού κώδικα. Δεν προσπαθεί να μιμηθεί σε δυνατότητες μόνο το matlab αλλά και το mathematica και το magma και το maple! Ταυτοχρόνως όμως καταλήγει υπερβολικά χαοτικό και πιστεύω ότι έχει πάρει λάθος δρόμο σε αυτήν την προσπάθεια συνένωσης. Στην παρούσα του μορφή η δύναμή του είναι και η αδυναμία του.

Το άρθρο όμως έχει μια τεράστια έλλειψη. Πριν πάμε στο sage υπάρχει πολύ ισχύς από την «κανονική» python χρησιμοποιώντας τα αρθρώματα κυρίως τού scipy.org. Αυτό είναι κατά την ταπεινή μου άποψη εξαιρετικά πιο ισχυρό από το matlab και δεν έχει τα μειονεκτήματα τού sage.

Έχει κάπου γραφτεί "Έτρεξε καλά με το wine του ubuntu 8.04".

Mήπως είναι λίγο παλίο το 8.04;

Ωραίο άρθρο!

Θα μπορούσατε να συμπεριλάβετε και το Maxima,αν και είναι καθαρό CAS μιας και έχετε περιλάβει το R project.

και πάλι συγχαρητήρια,θα πρέπει να γίνουν γνωστά σε περισσότερους.
 

To Maxima μ' αρέσει και εμένα, αλλά όπως λες είναι πιο πολύ για computer algebra παρά γενικότερου number-crunching σκοπού όπως τα υπόλοιπα πακέτα που παρουσιάζουμε.