Πρόλογος#

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

Η έκταση της βιβλιογραφίας και μάλιστα σύγχρονης μαρτυρά την σημασία των αριθμητικών μεθόδων. Ο ενδιαφερόμενος αναγνώστης μπορεί να εντρυφήσει στο θέμα μέσω συγγραμμάτων γραμμένων [1] ή μεταφρασμένων [2] στα ελληνικά. Από την ξενόγλωσση βιβλιογραφία ξεχωρίζουν τα ελεύθερα διαδικτυακά μαθήματα που διατίθενται σε μορφή σημειωματάριων jupyter [3, 4, 5] και συνοδεύονται από αντίστοιχα ηλεκτρονικά ή έντυπα βιβλία.

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

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

  • Fortran

  • C/C++

  • Excel

  • Mathcad

  • Matlab/Octave

  • R

  • Python

  • Julia

  • Mojo

Η λίστα περιλαμβάνει τόσο εργαλεία που έχουν αναπτυχθεί πρόσφατα, όσο και εργαλεία με μεγάλη ιστορία και διαρκή εξέλιξη. Σημαντικά χαρακτηριστικά για την επιλογή ενός εργαλείου αριθμητικής ανάλυσης είναι:

  • Η υποστήριξη πολυδιάστατων πινάκων

  • Οι υποστηριζόμενες αριθμητικές μέθοδοι

  • Οι απαιτήσεις σε υπολογιστικούς πόρους

  • Η ταχύτητα υπολογισμών και οι δυνατότητες παράλληλης επεξεργασίας

  • Η ευκολία χρήσης

  • Οι δυνατότητες γραφικής απεικόνισης των δεδομένων

  • Η διαλειτουργικότητα με άλλα εργαλεία (interoperability)

  • Η διαθεσιμότητα ανοιχτού κώδικα (όχι υποχρεωτικά)

Για το μάθημα επιλέχθηκε η Python καθώς αποτελεί μια γλώσσα υψηλού επιπέδου και γενικής χρήσης, η οποία αποτελεί την δημοφιλέστερη επιλογή τα τελευταία χρόνια σύμφωνα με τον δείκτη TIOBE. Η Python υποστηρίζεται από τον διερμηνευτή (interpreter) και μεταγλωττιστή (compiler) CPython και συνοδεύεται από ένα πολύ ευρύ οικοσύστημα μονάδων κώδικα για εφαρμογες σε κάθε τομέα της επιστήμης και της τεχνολογίας. Στις μονάδες κώδικα της Python περιλαμβάνονται οι πιο σύγχρονες υλοποιήσεις της επιστήμης δεδομένων, της μηχανικής μάθησης, της αναγνώρισης εικόνας και της τεχνητής νοημοσύνης. Η Python και οι μονάδες κώδικά της είναι κατά κανόνα ελεύθερα διαθέσιμες και συναγωνίζονται με αξιώσεις εμπορικά πακέτα.