Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα.

 

Θα ήθελα να ανοίξω ένα θέμα που ίσως έχει απασχολήσει  και στο παρελθόν.

 

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

 

Για παράδειγμα, πριν από αρκετά χρόνια, είχα χρησιμοποιήσει την Δ-Prolog (μια παραλλαγή, από ερευνητές του Ε.Ι. "Δημόκριτος", βασισμένη στην Arity Prolog) που ο πηγαίος κώδικάς της περιείχε:

α) τους βασικούς κανόνες παραγώγισης συναρτήσεων 

β) τις παραγώγους των θεμελιωδών, μη υπερβατικών, συναρτήσεων (τριγωνομετρικές, εκθετικές, κ.λπ.)

Έτσι όταν το έτρεχε κάποιος (με 2 ορίσματα) μπορούσε είτε να πάρει την παράγωγο μιας σύνθετης έκφρασης είτε την παράγουσα (δηλαδή το ολοκλήρωμα -δίχως αυτό, ως έννοια, να περιέχεται εκπεφρασμένα στον κώδικα!) μιας έκφρασης. Ο δε κώδικας ήταν μόνο λίγες γραμμές (~20-30).

 

Κάτι τέτοιο έχω στο μυαλό σε γενικές γραμμές. Δηλαδή το πρόβλημα που θέλω να επιλύσω μπαίνει σε ένα μαθηματικό "καλούπι" με πεπερασμένο αριθμό, πολύ συγκεκριμένων μαθηματικών κανόνων (που πρέπει να κωδικοποιηθούν).

Ξέρω για πακέτα/βιβλιοθήκες όπως SymPy, Sage, κ.λπ. αλλά:

1. Ούτως ή άλλως πρέπει να αφιερωθεί χρόνος για την εκμάθησή τους. Επιπλέον, τα "έτοιμα" πακέτα δεν καλύπτουν όλες τις ανάγκες -άρα πάντα υπάρχει η περίπτωση του να θέλει κάποιος να επεκτείνει τις δυνατότητες. Τα δε έτοιμα πακέτα (για το θέμα που θέλω) δεν είναι και από τα "πλέον συντηρημένα"...

2. Υπάρχει άλλος έλεγχος/ευελιξία σε κάτι που φτιάχνεις εξ αρχής.

 

Ίσως να είναι κάπως ουτοπικό αυτό που ζητάω, με την έννοια ότι δεν σκοπεύω (ούτε θα μπορούσα άλλωστε) να φτιάξω εξ αρχής ένα CAS (computer algebra system). Θα ήθελα απλά να επιλύσω ένα αρκετά εστιασμένο πρόβλημα.

 

Ιδέες, προτάσεις, υποδείξεις, σκέψεις και (κυρίως) προσωπική εμπειρία ... όλα είναι όχι μόνο ευπρόσδεκτα αλλά και το ζητούμενο.

 

Ευχαριστώ.

Δημοσ.

Με άλλα λόγια, αν κατάλαβα καλά, δεν ψάχνεις για μια τέτοια γλώσσα, αλλά θέλεις να φτιάξεις μία.

Σωστά;

  • Moderators
Δημοσ.

Με άλλα λόγια, αν κατάλαβα καλά, δεν ψάχνεις για μια τέτοια γλώσσα, αλλά θέλεις να φτιάξεις μία.

Σωστά;

 

Εγώ κατάλαβα ότι θέλει να λύσει ένα πρόβλημα που έχει συμβολικά μαθηματικά μέσα, να φτιάξει ένα script που να το λύνει.

Δημοσ.

Εγώ κατάλαβα ότι θέλει να λύσει ένα πρόβλημα που έχει συμβολικά μαθηματικά μέσα, να φτιάξει ένα script που να το λύνει.

 

Κι εγώ το ίδιο κατάλαβα στην αρχή, αλλά μετά με μπέρδεψε η διαφοροποίηση από τα "έτοιμα".

Δημοσ.

Δεν νομίζω ότι έχει αλλάξει κάτι από εδώ.

 

Από πρακτικής πλευράς δεν τίθεται ζήτημα ότι η χρήση ενός εμπορικού CAS (πχ Mathematica/Mapple) είναι η καλύτερη επιλογή.

 

Από πλευράς δυνατότητας παρέμβασης εννοείται ότι κάτι open source όπως το sympy είναι η καλύτερη επιλογή. Βέβαια το πόσο εύκολο θα είναι να παρέμβεις είναι άλλου παπα ευαγγέλιο. Τα μαθηματικά που απαιτούνται είναι hard-core.

 

Το να κάτσεις να φτιάξεις μόνος σου κάτι το οποίο θα λύνει γενικά προβλήματα (όχι μόνο τα 5-10 ολοκληρώματα του λυκείου) είναι σαν να λέμε να κάνεις διδακτορικό (και παραπάνω).

Δημοσ.

@gon1332

έχεις εμπειρία με αυτά; Αν ναι μπορείς να μας πεις δυο λόγια σχετικά με δυνατότητες, ευχρηστία κτλ;

Δημοσ.

@gon1332

έχεις εμπειρία με αυτά; Αν ναι μπορείς να μας πεις δυο λόγια σχετικά με δυνατότητες, ευχρηστία κτλ;

 

Έχω μερική εμπειρία (ενός εξαμήνου), αλλά μπορώ να πω την άποψή μου.

 

Όσον αφορά το GIAC/XCAS, είναι μία ολοκληρωμένη εφαρμογή, με το δικό της περιβάλλον και scripting γλώσσα η οποία μοίαζει πολύ με C. Περιέχει πάρα πολλές μαθηματικές συναρτήσεις και αριθμητική άπειρης ακρίβειας. Είναι, αν όχι πλήρως, κατά μεγάλο ποσοστό μεταφρασμένο και στα ελληνικά. Τα αρνητικά για μένα είναι η αστάθεια του γραφικού περιβάλλοντος. Κάποια ψιλοκολλήματα, κυρίως στην έκδοση για Linux. Το προτείνω περισσότερο για Windows. Είναι δωρεάν και δυνατό και συνεχίζει να ανπτύσσεται.

 

Όσον αφορά το PARI/GP, είναι ο συνδιασμός βιβλιοθήκης - scripting language (όπως και με το GIAC/XCAS). Δεν έχει δικό του γραφικό περιβάλλον. Δουλεύται μέσω κονσόλας ενώ μπορείς να γράφεις τα script-άκια σου σε κάποιο text editor και να τα εισάγεις στη συνέχεια στον interpreter. Το συγκεκριμένο εργαλείο, είναι ιδιαίτερα χρήσιμο για όσους επιθυμούν να ασχοληθούν με κρυπτογραφία και ιδιαίτερα ελλειπτικές καμπύλες. Η γλώσσα του θυμίζει ελάχιστα C. Είναι κι αυτό σε κατάσταση βελτίωσης. Το κακό είναι ότι δεν υποστηρίζει επαρκές string-manipulation. Στην τελευταία του έκδοση πρόσθεσαν κάποια χρήσιμα στοιχεία στον μηχανισμό exceptions που διαθέτει (ανάκτηση τιμής των μεταβλητών μετά τη διακοπή του προγράμματος).

 

Και τα δύο, όσον αφορά τις μαθηματικές συναρτήσεις είναι δυνατά, με το GIAC/XCAS να περιέχει περισσότερες. Γνώμη μου είναι ότι το ένα είναι συμπληρωματικό του άλλου. Μάλιστα το GIAC/XCAS υποστηρίζει inlining κώδικα GP, αλλά αυτό το χαρακτηριστικό είναι λίγο "ανώριμο" ακόμη. Αξίζουν μία δοκιμή. Είναι δωρεάν.

Δημοσ.

έχεις χρησιμοποιήσει τις αντίστοιχες δυνατότητες των matlab/mathematica/mapple/sympy κτλ? Πως θα τα συνέκρινες μαζί τους;

Δημοσ.

έχεις χρησιμοποιήσει τις αντίστοιχες δυνατότητες των matlab/mathematica/mapple/sympy κτλ? Πως θα τα συνέκρινες μαζί τους;

 

Μόνο Matlab. Και αυτό το χρησιμοποιώ περαστισιακά όχι για τρελά πράγματα. Σε σχέση με το Matlab είναι πολύ νέα. Το GIAC/XCAS υστερεί πολύ στο GUI. ΑΛΛΑ υποστηρίζει "άπειρα" ψηφία και άρα ακρίβεια! Αν δεν κάνω λάθος το Matlab όχι. Το Matlab περιέχει γενικά πολλά καλούδια (παραλληλοποίηση εφαρμογών σε GPU). Το GIAC/XCAS ξεκίνησε από ένα άτομο και αν δεν κάνω λάθος ακόμη αυτός το συντηρεί και έχει αρκετές συνεισφορές και υποστήριξη από επιστημονικές κοινότητες. Είναι παιδί ακόμη. To PARI/GP είναι άλλο φρούτο. Κανένα από αυτά δεν προσπαθεί να ανταγωνιστεί τα θηρία. Προσπαθούν να προσφέρουν κάτι εξειδικευμένο (όπως συμβαίνει ειδικά με το PARI/GP) και δωρεάν.

 

Δεν έχω ασχοληθεί με mathematica/sympy (αν και έχω ακούσει λίγα γι' αυτά). Παίζει να μη σε κάλυψα ιδιαίτερα γιατί η υπολογιστική άλγεβρα δεν είναι το κύριο ενδιαφέρον μου οπότε δεν έχω και εμπειρία με όλα αυτά τα εργαλεία. Έτσι όπως το βλέπω όμως τα δύο που πρότεινα, αξίζουν μία δοκιμή. Όχι επειδή το πρότεινα, αλλά επειδή είναι αξιόλογες προσπάθειες από τους δημιουργούς τους. Έστω ένα check-άρισμα των συναρτήσεων που προσφέρουν.

Δημοσ.

Καλά και εγώ δεν είναι ότι ασχολούμαι όλη μέρα με CAS. Βασικά τον τελευταίο καιρό καθόλου, για αυτό και ρωτάω :)

 

Την άπειρη ακρίβεια δεκαδικων μπορείς να την έχεις σε όλες τις γλώσσες προγραμματισμού με τις κατάλληλες βιβλιοθήκες και φαντάζομαι και σε όλα τα εμπορικά προγράμματα. Ο λόγος που ρωτάω είναι πχ γιατί έχω βρει ολοκληρώματα που δεν τα έλυνε το sympy και τα έλυνε το mathematica κτλ. Όπως και αν έχει ευχαριστώ.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...