C. Λογισμικό του Μαθήματος «Αριθμητική Επίλυση Συνήθων Διαφορικών Εξισώσεων»


  1. Το πρακτικό ή εφαρμοσμένο μέρος της αριθμητικής επίλυσης αφορά στην υλοποίηση των διαφόρων μεθόδων σε έναν υπολογιστή. Αυτό, όπως είναι γνωστό, μπορεί να πραγματοποιηθεί μέσω προγραμματισμού των αντίστοιχων αλγόριθμων σε μια γλώσσα προγραμματισμού, όπως: BASIC, C, C++, Ch, Fortran, FreeBASIC, Python, R κ.α. Ένας κατάλογος γλωσσών προγραμματισμού υπάρχει στο σύνδεσμο: List of programming languages και μια σύγκριση τους υπάρχει στο σύνδεσμο: Comparison of programming languages. Αποτελεί γενική πεποίθηση ότι:


    «Την αριθμητική ανάλυση την μαθαίνει κανείς καλύτερα με την εκτέλεση συγκεκριμένων αριθμητικών υπολογισμών πάνω σε ειδικά προβλήματα».

    Αναφορικά με αυτό χαρακτηριστικά αναφέρουμε τη ρήση του Αριστοτέλη (384–322 π.Χ.) ο οποίος έλεγε:


    «Τα πράγματα που πρέπει να κάνεις τα μαθαίνεις κάνοντάς τα»,

    καθώς και τη ρήση του:


    «Για να γίνει κανείς ικανός σ' οποιοδήποτε επάγγελμα τρία πράγματα χρειάζονται: φύση, μελέτη και πρακτική εξάσκηση».

    Με βάση τα παραπάνω, ενθαρρύνουμε τον εκπαιδευόμενο που έχει ευχέρεια στον προγραμματισμό, να επιχειρήσει να προγραμματίσει τους αλγορίθμους του μαθήματος σε μια γλώσσα της επιλογής του. Επίσης, να εκτελέσει τα προγράμματα αυτά σε έναν υπολογιστή ώστε να μελετήσει τη συμπεριφορά των αλγορίθμων για διάφορα δεδομένα εισόδου. Ο εκπαιδευόμενος, ο οποίος δεν έχει ευχέρεια στον προγραμματισμό, θα μπορούσε να χρησιμοποιήσει διάφορα δημοφιλή περιβάλλοντα επίλυσης προβλημάτων όπως τα: Maple, Mathcad, Mathematica, Matlab, Maxima, Octave, Photran, SciLab, SPMATH καθώς και έτοιμα προγράμματα. Τέτοια προγράμματα υπάρχουν σε διάφορα συγγράμματα όπως στα:
    1. Burden R.L., Faires J.D., Numerical analysis, Brooks Cole Publishing Company, New York, 1997 — Προγράμματα σε C, Fortran, Pascal, Maple, Mathematica, Matlab.
    2. Forsythe G.E., Malcolm M.A., Moler C.B., Αριθμητικές μέθοδοι και προγράμματα για μαθηματικούς υπολογισμούς, Μετάφραση: Ακρίβης Γ.Δ. και Δουγαλής Β.Α., Πανεπιστημιακές εκδόσεις Κρήτης, Ηράκλειο, 1994 — Προγράμματα σε Fortran.
    3. Κιουστελίδης Ι.Β., Αριθμητική ανάλυση, Μια εισαγωγή με φυσικές και τεχνικές εφαρμογές και προγράμματα σε BASIC, Αθήνα, 1996 — Προγράμματα σε BASIC.
    4. Παπαγεωργίου Γ.Σ., Τσίτουρας Χ.Γρ., Αριθμητική ανάλυση με εφαρμογές σε Matlab και Mathematica, Εκδόσεις Συμεών, Αθήνα, 1997 — Προγράμματα σε Mathematica, Matlab.
    5. Παπαδάκης Κ., Εφαρμοσμένα Μαθηματικά και Mathematica, Εκδόσεις Α. Τζιόλα και Υιοί, Θεσσαλονίκη, 2012 — Προγράμματα σε Mathematica.
    6. Press W.H., Teukolsky S.A., Vetterling W.T., Flannery B.P., Numerical recipes, the art of scientific computing, (Third Edition), Cambridge University Press, New York, U.S.A., 2007 — Προγράμματα σε C, Fortran, Pascal, BASIC.
    7. Τσουμπελής Δ., Ανώτερα μαθηματικά με συστήματα αλγεβρικών υπολογισμών, Εκδόσεις Πανεπιστημίου Πατρών – Εταιρεία Αξιοποιήσης και διαχείρισης Περιουσίας Πανεπιστημίου Πατρών, 2014 — Προγράμματα σε Maple, Mathematica.
    καθώς και σε διάφορους ιστότοπους όπως ενδεικτικά αναφέρουμε τους εξής: Java Programs for Numerical Analysis, Numerical methods, Numerical methods for fortran programmers, Numerical recipes books on–line, Numerical recipes software.
  2. Εκτός από τα παραπάνω, μπορούν εύκολα να βρεθούν έτοιμα προγράμματα, που αφορούν τους αλγορίθμους του μαθήματος, στο διαδίκτυο (internet) σε περιοχές ελεύθερης πρόσβασης (public domain). Ο εκπαιδευόμενος μπορεί να ανακτήσει πληροφορίες για αυτά τα προγράμματα μέσω του ιστότοπου: Netlib repository at UTK and ORNL ή/και μέσω του ιστότοπου: Netlib repository. Για τον ίδιο σκοπό, ο εκπαιδευόμενος μπορεί να χρησιμοποιήσει εναλλακτικά τη διεύθυνση: Requests to each Netlib library ώστε να ανιχνεύσει και να ανακτήσει το λογισμικό που επιθυμεί. Περισσότερες πληροφορίες υπάρχουν στα παρακάτω άρθρα:
    1. Dongarra J.J., Grosse E., Distribution of mathematical software via electronic mail, Communications of the ACM, 30 (1987), pp.403–407.
    2. Dongarra J.J., Rowan T., Wade R., Software distribution using Xnetlib, ACM Transactions on Mathematical Software, 21, No.1 (1995), pp.79–88.
    Τα προγράμματα που μπορούν να βρεθούν με τους παραπάνω τρόπους είναι αποδοτικά, ακριβή και αξιόπιστα, και έχουν πλήρως ελεγχθεί. Επίσης, περισσότερες πληροφορίες για λογισμικό και βιβλιοθήκες λογισμικού υπάρχουν στα:
    1. Dongarra J.J., Walker D.W., Software libraries for linear algebra computation on high performance computers, SIAM Review, 37, No.2 (1995), pp. 151–180.
    2. Köckler N., Numerical methods and scientific computing: Using software libraries for problem solving, Oxford University Press, New York, Ν.Υ., U.S.A., 1994.
  3. Εκτός των παραπάνω, ο εκπαιδευόμενος μπορεί να αντλήσει λογισμικό και από βιβλιοθήκες όπως:
    1. ACM (Association for Computing Machinery). Πρόκειται για μια βιβλιοθήκη πολύ υψηλής ποιότητας μαθηματικών προγραμμάτων σε Fortran 77, Fortran 90, C, C++, Matlab κ.λπ. Αποτελείται από μια συλλογή από περισσότερα από 900 προγράμματα, τα οποία αναπτύσσονται για περισσότερο από 50 χρόνια. Τα προγράμματα αυτά μπορούν να αντληθούν από τη διεύθυνση: Collected Algorithms (CALGO) of the ACM ή εναλλακτικά από τη διεύθυνση: Collected Algorithms (CALGO).
    2. NIST (National Institute of Standards and Technology). Αποτελείται από μια συλλογή από δημόσιες περιοχές (public domains) υψηλής ποιότητας υποπρογραμμάτων Μαθηματικών και Στατιστικής τα οποία μπορούν να αντληθούν πολύ εύκολα. Τα υποπρογράμματα αυτής της βιβλιοθήκης μπορούν να χρησιμοποιηθούν για την επίλυση πολλών προβλημάτων της υπολογιστικής επιστήμης. Η διεύθυνσή της στο διαδίκτυο είναι: Guide to Available Mathematical Software. Επίσης, περιέχει αρκετά γνωστά και χρήσιμα προγράμματα όπως είναι τα: BLAS, EISPACK, FISHPACK, FITPACK, LINPACK, QUADPACK κ.α. (βλ. List of Packages).
    3. CERN Library του Ευρωπαϊκού Οργανισμού Πυρηνικής Έρευνας (European Organization of Nuclear Research), η οποία συντηρείται από το Ευρωπαϊκό Εργαστήριο Φυσικής Σωματιδίων (European Laboratory for Particle Physics). Αυτή η βιβλιοθήκη είναι πρωταρχικά χρήσιμη για τους ερευνητές της φυσικής των υψηλών ενεργειών, αλλά περιέχει πάρα πολλές υπορουτίνες για την επίλυση διαφόρων Μαθηματικών προβλημάτων. Επισκόπηση της διαθεσιμότητας μπορεί να βρεθεί στη διεύθυνση: CERN Service Portal.
    4. ESSL (Engineering and Scientific Subroutine Library) για χρήση σε IBM υπολογιστές. Η βιβλιοθήκη αυτή, αποτελείται από μαθηματικές υπορουτίνες υψηλής ποιότητας για την επίλυση Μαθηματικών και τεχνολογικών εφαρμογών. Η διεύθυνσή της στο διαδίκτυο είναι η: IBM Knowledge Center.
    5. NAG (Numerical Algorithms Group). Η βιβλιοθήκη αυτή, αποτελείται από 1100 υποπρογράμματα σε Fortran 77/90 ή C. Περιέχει επίσης υποπρογράμματα για γραφικά. Μερικά από τα προγράμματά της αναπτύσσονται για περισσότερο από 20 χρόνια. Η διεύθυνσή της στο διαδίκτυο είναι η ακόλουθη: Numerical Algorithms Group.
    6. LAPACK (Linear Algebra Package), η οποία αποτελεί μια βιβλιοθήκη υποπρογραμμάτων σε Fortran που ενσωματώνει βελτιωμένες εκδόσεις δύο παλαιών και πολύ γνωστών βιβλιοθηκών, των LINPACK και EISPACK, κυρίως για την ανάλυση και την επίλυση συστημάτων γραμμικών εξισώσεων. Η διεύθυνσή της στο διαδίκτυο είναι η εξής: LAPACK — Linear Algebra PACKage.
  4. Επιπρόσθετα με τις παραπάνω βιβλιοθήκες, μερικές άλλες βιβλιοθήκες γενικών Μαθηματικών υποπρογραμμάτων είναι και οι ακόλουθες: BSCLIB, NSWC, NUMAL, NUMPAC, PORT, SLATEC, VECLIB και Scientific Desk. Επίσης, ένας κατάλογος λογισμικού της Αριθμητικής Ανάλυσης υπάρχει στο σύνδεσμο: List of numerical analysis software.