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

MATLAB εναντίον Fortran!


Vas77

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

Δημοσ.
Να ξεκινήσει δηλαδή με μία πεθαμένη γλώσσα; Αν θες κάτι στα δεδομένα τις Fortran αλλά πολύ καλύτερη με τεράστια υποστήριξη και συνεχή εξέλιξη ξεκίνα με MATLAB. :-)

 

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

 

Ανέφερα τη Fortran γιατί είναι μια γλώσσα προγραμματισμού που θα βοηθήσει τον

mikelamar να μπει αμέσως στον προγραμματισμό, χωρίς να μάθει για pointers, κλπ. Η python, perl είναι επισης καλές και απλές γλώσσες προγραμματισμού, όπως είναι οι javascript,php. Η ερώτηση είναι τι θέλει ο mikelamar να κάνει

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

 

Ανέφερα τη Fortran γιατί είναι μια γλώσσα προγραμματισμού που θα βοηθήσει τον

mikelamar να μπει αμέσως στον προγραμματισμό, χωρίς να μάθει για pointers, κλπ. Η python, perl είναι επισης καλές και απλές γλώσσες προγραμματισμού, όπως είναι οι javascript,php. Η ερώτηση είναι τι θέλει ο mikelamar να κάνει

 

Στην περίπτωση μου ασχολούμαι κυρίως με αριθμητικές μεθόδους. Fortran γνωρίζω όπως έχει τύχει στο παρελθόν να την διδάξω επίσης. Είναι η γλώσσα ΜΑTLAB! Για πες μου λοιπόν τι λάθος λύση μπορεί να δώσει; Επίσης για να το λες αυτό θα ξέρεις ίσως κάποια πλεονεκτήματα του να χρησιμοποιείς Fortran αντί ΜΑTLAB; Για βοήθησε με να καταλάβω. :-)

Δημοσ.
Στην περίπτωση μου ασχολούμαι κυρίως με αριθμητικές μεθόδους. Fortran γνωρίζω όπως έχει τύχει στο παρελθόν να την διδάξω επίσης. Είναι η γλώσσα ΜΑTLAB! Για πες μου λοιπόν τι λάθος λύση μπορεί να δώσει; Επίσης για να το λες αυτό θα ξέρεις ίσως κάποια πλεονεκτήματα του να χρησιμοποιείς Fortran αντί ΜΑTLAB; Για βοήθησε με να καταλάβω. :-)

 

Θα σου αναφέρω δύο πλεονεκτήματα;

 

1) Καλύτερη χρήση των resources του υπολογιστή σου. Με το MATLAB θα πρέπει να φορτώσει ένα σωρό περιττά προγράμματα τα οποία ίσως ποτέ να μην τα χρειαστείς.

 

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

 

Η αλήθεια είναι ότι έχω μείνει σε παλιές εκδόσεις αυτών των προγραμμάτων. Οπότε είναι πιθανόν οι νέες εκδόσεις να έχουν βελτιώσει πολλά από τα προβλήματα που είχαν οι προηγούμενες. Θυμάμαι μαι φορά που το Mathematica (νομίζω δοκίμασα και το MATLAB) μου δίνανε λάθος λύση σε μια διαφορική 2ου βαθμού.

 

Το θέμα είναι ότι υπάρχουν προβλήματα τα οποία το MATLAB δεν μπορεί να στα λύσει, και θα πρέπει να χρησιμοποιήσει Fortran. Οπότε όσο καλό και αν το MATLAB, η Fortran είναι απαραίτητει

Δημοσ.
Θα σου αναφέρω δύο πλεονεκτήματα;

 

1) Καλύτερη χρήση των resources του υπολογιστή σου. Με το MATLAB θα πρέπει να φορτώσει ένα σωρό περιττά προγράμματα τα οποία ίσως ποτέ να μην τα χρειαστείς.

 

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

 

Το θέμα είναι ότι υπάρχουν προβλήματα τα οποία το MATLAB δεν μπορεί να στα λύσει, και θα πρέπει να χρησιμοποιήσει Fortran. Οπότε όσο καλό και αν το MATLAB, η Fortran είναι απαραίτητει

 

1) Λάθος! Φορτώνεις μόνο ότι χρειάζεσαι, αν θες το κάνεις και standalone! Συγκριτικά το MATLAB είναι πολύ πιο γρήγορο από την Fortran.

 

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

 

Δεν υπάρχουν προβλήματα που δεν μπορεί να λύσει, αντιθέτως υπάρχουν κακοί προγραμματιστές, μαθηματικοί, μηχανικοί κλπ! A bad engineer always blames its tools!

 

:-)

Δημοσ.

Δεν υπάρχουν προβλήματα που δεν μπορεί να λύσει, αντιθέτως υπάρχουν κακοί προγραμματιστές, μαθηματικοί, μηχανικοί κλπ! A bad engineer always blames its tools!

 

:-)

 

Για να βάλω μια τελεία σε αυτή τη συζήτηση, μπορείς με το MATLAB να λυσεις τη Navier-Stokes ή την Laplace εξίσωση σε μία όχι και τόσο απλή γεωμετρία? Μπορείς με το MATLAB να λύσεις FSI προβλήματα? Και αν για να τα κάνεις όλα αυτά πρέπει να γράψεις κώδικα, γιατί να μη τον γράψεις απευθείας στη Fortran?

Δημοσ.

Γιατι παντα οταν καποιος ρωτα "τι να αρχισω", η συζητηση παει στο ποια γλωσσα ειναι καλυτερη.... Και δε φτανει μονο αυτο, εχουμε και ακυρες συγκρισεις.

 

Υγ: Μερικες γλωσσες δεν συγκρινονται

Δημοσ.
Για να βάλω μια τελεία σε αυτή τη συζήτηση, μπορείς με το MATLAB να λυσεις τη Navier-Stokes ή την Laplace εξίσωση σε μία όχι και τόσο απλή γεωμετρία? Μπορείς με το MATLAB να λύσεις FSI προβλήματα? Και αν για να τα κάνεις όλα αυτά πρέπει να γράψεις κώδικα, γιατί να μη τον γράψεις απευθείας στη Fortran?

 

Είμαστε off-topic αλλά με προκαλείς να σου απαντήσω! Όλα τα προβλήματα που αναφέρεις λύνονται με MATLAB. Γιατί; Έχει έτοιμα functions οπότε δεν χρειάζεται να ανακαλύψεις τον τροχό από την αρχή και επίσης συγκριτικά ο κώδικας θα τρέχει πολύ πιο γρήγορα από ότι σε Fortran. :-)

Δημοσ.
Είμαστε off-topic αλλά με προκαλείς να σου απαντήσω! Όλα τα προβλήματα που αναφέρεις λύνονται με MATLAB. Γιατί; Έχει έτοιμα functions οπότε δεν χρειάζεται να ανακαλύψεις τον τροχό από την αρχή και επίσης συγκριτικά ο κώδικας θα τρέχει πολύ πιο γρήγορα από ότι σε Fortran. :-)

 

Και άλλο λίγο off-topic: Ένας καλογραμμένος κώδικας Fortran θα είναι ΣΙΓΟΥΡΑ γρηγορότερος από έναν καλογραμμένο κώδικα MATLAB. Όμως ένας μέτρια γραμμένος κώδικας MATLAB μπορεί, λόγω χρήσης έτοιμων, optimized συναρτήσεων, να είναι γρηγορότερος από ένα μέτρια γραμμένο κώδικα FORTRAN.

 

Τώρα για τα λάθος αποτελέσματα... no comment. Καμία πλατφόρμα ανάπτυξης δε βγάζει λάθος αποτελέσματα, αρκεί να κωδικοποιήσεις σωστά τον αλγόριθμό σου και να καταλαβαίνεις και 5 πράγματα από αριθμητική κινητής υποδιαστολής και τους περιορισμούς της.

Δημοσ.

παντως να αρχισει τωρα καποιος fortran για να μαθει προγραμματισμο ειναι λιγο απιθανο ακομα και αν εχει σχεση η δουλεια του με μαθηματικα ποιο συχνα ακουγεται η matlab η fortran ειναι πιο πολυ για εκεινους που την εμαθαν οταν ευδοκιμουσε και τωρα εκνευριζονται που με τη matlab οι πιτσιρικαδες και μη, κανουν θαυματα ...συμφωνω ομως οτι ενας καλογραμμενος fortran κωδικας ειναι πιο γρηγορος απο εναν αντιστοιχο σε matlab το θεμα ειναι ποσες μερες θα σου παρει να γινει κατι στην μια και ποσες στην αλλη ..

Δημοσ.

και όμως παιδιά ένας καλογραμμένος κώδικας σε MATLAB (vectorized χωρίς for-loops) είναι πολύ γρηγορότερος από τον αντίστοιχο σε Fortran. Αν κιόλας γίνει compile σε ΜΕΧ τότε είναι ακόμα πιο γρήγορος. Το MATLAB έχει εξελιχθεί πάρα πολύ και συνεχίζει σε κάθε release ανά 6αμηνο σε αντίθεση με την Fortran. Υπάρχουν πολλά συγκριτικά αν ψάξετε.

 

Για τα λάθος αποτελέσματα δεν το σχολιάζω ούτε εγώ.

:-)

Δημοσ.
συμφωνω ομως οτι ενας καλογραμμενος fortran κωδικας ειναι πιο γρηγορος απο εναν αντιστοιχο σε matlab

 

Έχει γίνει κανένα benchmark κάπου?

 

(matlab= LAPACK, BLAS ..ktl)

Δημοσ.
έχετε σκεφτεί την τιμή του matlab;

 

Single, multi, individual, concurrent, academic license υπάρχουν πάρα πολλά options και φυσικά μπορείς να αγοράσεις μόνο τα toolboxes που χρειάζεσαι. Το academic αν δεν κάνω λάθος είναι ~150-200 euro.

 

Φυσικά υπάρχουν πάντα και free επιλογές αρκετά καλές: FreeMat, Scilab, Octave, κα

 

:-)

 

---------- Το μήνυμα προστέθηκε στις 04:28 ----------

 

Έχει γίνει κανένα benchmark κάπου?

 

(matlab= LAPACK, BLAS ..ktl)

 

http://ubuntuforums.org/archive/index.php/t-1295370.html

 

http://www.mathworks.com/company/newsletters/news_notes/clevescorner/winter2000.cleve.html

 

και πάει λέγοντας. :-)

Δημοσ.

Θα ήθελα να ζητήσω συγνώμη από τον/την κύριο/κυρία που ξεκίνησε το topic, και κατέληξε σε off topic συζήτηση.

 

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

 

---------- Το μήνυμα προστέθηκε στις 11:22 ----------

 

Έχει γίνει κανένα benchmark κάπου?

 

(matlab= LAPACK, BLAS ..ktl)

 

Δεν ξέρω αν έχει γίνει επίσημα, αλλά κάποτε έκανα εγώ.

Για την επίλυση γραμμικού συστήματος, η σειρά είναι (αργό => γρήγορο)

 

Gauss - Elimination

Lapack

UFMPACK

 

---------- Το μήνυμα προστέθηκε στις 11:24 ----------

 

[quote=Dr.Fuzzy;3038908

Για τα λάθος αποτελέσματα δεν το σχολιάζω ούτε εγώ.

:-)

 

Δε θυμάμαι αν χρησιμοποιήσα και το MATLAB, αλλά είχα σίγουρα χρησιμοποιήσει το Mathematica. Ενώ ήξερα ότι η ορίζουσα ήταν μηδέν μου έδινε μια τρελή τιμή. Η λύση ήταν απλά λάθος γιατί το Mathematica (και ίσως και το MATLAB) δεν έκανε pivoting.

 

 

Kαι στη Fortran μπορεί να γίνει vectorization. Η F90 έχει πολλές έτοιμες εντολές για πολλαπλασιασμό πινάκων, Όσο για την ταχύτητα, δοκίμασε να κάνεις compile τον κώδικα με -O3 -fast -parallel (intel compiler)

Αρχειοθετημένο

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

  • Δημιουργία νέου...