Παρασκευή 27 Ιουνίου 2025

Απόστολος Συρόπουλος – Αναστάσιος Δήμου: «Python για μηχανικούς»

 


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

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

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

Στο τρίτο κεφάλαιο παρουσιάζονται οι απλές και σύνθετες εντολές στην Python. Αναλύονται οι επαναληπτικές δομές εντολών (for, while loop) και η εκτέλεση κώδικα υπό συνθήκες (if loop). Επίσης, παρουσιάζεται ο χειρισμός των εξαιρέσεων στις επαναληπτικές δομές και η δημιουργία καινούργιων λειτουργιών (functions). Τέλος, παρουσιάζεται η εντολή match, η οποία πρόσφατα προστέθηκε στη γλώσσα προγραμματισμού.

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

Στο τέταρτο κεφάλαιο παρουσιάζονται οι δομές δεδομένων με πρώτη τις πλειάδες (tuple). Στις πλειάδες μπορούμε να διατρέξουμε τις τιμές τους με την εντολή for, να εφαρμόσουμε λογικές παραστάσεις, αλλά δεν μπορούμε να αλλάξουμε τις τιμές που έχουν ήδη προσδιοριστεί. Κατόπιν, αναλύεται μια πολύ βασική δομή δεδομένων για την Python, η δομή list (λίστα). Στις λίστες μπορούμε να χρησιμοποιήσουμε ενσωματωμένες μεθόδους για να τις διατρέξουμε, να μεταβάλουμε και να ταξινομήσουμε τις τιμές τους. Στη συνέχεια, παρουσιάζεται η δομή των συνόλων (set), όπου με τη χρήση ενσωματωμένων μεθόδων στη δομή, μπορούμε να βρούμε την τομή, το άθροισμα και τις διαφορές ανάμεσα σε δυο σύνολα. Έπειτα, παρουσιάζεται το δομοστοιχείο nympy, ένα βασικό εργαλείο για την αριθμητική ανάλυση. Παρουσιάζονται οι παρατάξεις στην numpy (arrays) που μπορούν να χρησιμοποιηθούν για τη δημιουργία πινάκων και για τις πράξεις μεταξύ τους (πολλαπλασιασμός πινάκων, αντιστροφή πίνακα, ορίζουσα πίνακα κτλ.). Ακολουθεί η δομή των λεξικών (dictionaries), όπου κάθε στοιχείο αποτελείται από ένα ζεύγος κλειδιού αναφοράς-τιμής. Τέλος, παρουσιάζεται το πώς μπορούμε να ανοίξουμε και να διαβάσουμε στην Python υπάρχοντα αρχεία, να δημιουργήσουμε νέα αρχεία και να καταγράψουμε δεδομένα σε αυτά.

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

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

Στο έβδομο κεφάλαιο παρουσιάζεται η επίλυση γραμμικών και μη γραμμικών εξισώσεων με χρήση των δομοστοιχείων numpy, scipy, sympy. To πρώτο παράδειγμα είναι η επίλυση συστήματος γραμμικών εξισώσεων με χρήση πινάκων και τη λειτουργία matmul ή τη λειτουργία linalg.solve. Κατόπιν, δίνεται το παράδειγμα επίλυσης μιας πιο γενικής μη γραμμικής εξίσωσης με χρήση του δομοστοιχείου scipy. Με το δομοστοιχείο sympy μπορούμε να επιλύσουμε μη γραμμικές εξίσωσης με μία ή περισσότερες άγνωστες μεταβλητές. Στη συνέχεια παρουσιάζεται η επίλυση μη γραμμικών εξισώσεων με τη μέθοδο Newton-Raphson. Κατά τη διαδικασία εφαρμογής της μεθόδου δίνεται και ο τρόπος υπολογισμού παραγώγου συνάρτησης πρώτης ή μεγαλύτερης τάξης.

Στο όγδοο κεφάλαιο παρουσιάζεται η επίλυση του προβλήματος της παρεμβολής (interpolation). Δηλαδή, πώς μπορούμε να προσεγγίσουμε με την python, χρησιμοποιώντας μια απλή εξίσωση, δεδομένα που έχουν αποκτηθεί πειραματικά; Μερικές από τις μεθόδους που χρησιμοποιούνται για την επίτευξη του στόχου αυτού είναι οι Lagrange, Newton, Neville, Hermite. Παρουσιάζεται η επίλυση του προβλήματος με χρήση των δομοστοιχείων numpy, scipy ενώ οι γραφικές παραστάσεις των λύσεων παράγονται με το δομοστοιχείο matplotlib. Η εφαρμογή των παραπάνω μεθόδων, αν υπάρχει μια μικρή απόκλιση σε κάποιο υποδιάστημα, οδηγεί σε σημαντική απόκλιση σε όλο το διάστημα μελέτης. Για τον λόγο αυτό μπορούμε να διαμερίσουμε το διάστημα μελέτης σε υποδιαστήματα και για κάθε υποδιάστημα να υπολογίσουμε ένα διαφορετικό πολυώνυμο προσέγγισης. Η μέθοδος αυτή ονομάζεται παρεμβολή με συναρτήσεις splines. Κατόπιν, παρουσιάζεται η μέθοδος των ελαχίστων τετραγώνων, στην οποία επιδιώκουμε να προσεγγίσουμε με πολυωνυμική συνάρτηση ένα πλήθος πειραματικών δεδομένων χρησιμοποιώντας ως μέτρο το άθροισμα των τετραγώνων των αποστάσεων της προσεγγιστικής πολυωνυμικής συνάρτησης από τα πειραματικά σημεία. Όλες οι παραπάνω μέθοδοι βοηθούν στο πέρασμα από τα πειραματικά δεδομένα σε μοντέλα που προσεγγίζουν τη συμπεριφορά του υπό μελέτη συστήματος και την εφαρμογή του μοντέλου για τον σχεδιασμό τελικών προϊόντων. Ένας μηχανικός επομένως πρέπει να μπορεί να χρησιμοποιήσει τις μεθόδους που αναπτύσσονται στο κεφάλαιο αυτό. Επιπλέον, καλό θα ήταν να δημιουργήσει δικές του λειτουργίες, που θα τις χρησιμοποιεί για επιμέρους τμήματα του σχεδιασμού που πραγματοποιεί.

Ένα εξαιρετικά χρήσιμο βιβλίο για κάθε μηχανικό, δεδομένου μάλιστα ότι η γλώσσα προγραμματισμού Python αποτελεί ελεύθερο λογισμικό.

Στο ένατο κεφάλαιο αντιμετωπίζεται το πρόβλημα αριθμητικής παραγώγισης-ολοκλήρωσης συναρτήσεων. Το δομοστοιχείο findiff παρέχει τη λειτουργία FinDiff, η οποία υπολογίζει προσεγγιστικά την παράγωγο οποιασδήποτε τάξης μιας συνάρτησης. Σε συμβολική μορφή μπορούμε να υπολογίσουμε την παράγωγο συνάρτησης με χρήση του δομοστοιχείου sympy. Η ολοκλήρωση αριθμητικά μπορεί να επιτευχθεί με τη μέθοδο του τραπεζίου και τον κανόνα του Simpson χρησιμοποιώντας το δομοστοιχείο numpy. Με τη λειτουργία quad από το υποδομοστοιχείο scipy.integrate μπορούμε να υπολογίσουμε προσεγγιστικά ορισμένα ολοκληρώματα με το x να εκτείνεται μέχρι το άπειρο. Παρομοίως με τη λειτουργία dblquad υπολογίζουμε διπλά ολοκληρώματα. Με χρήση του δομοστοιχείου sympy μπορούμε να υπολογίσουμε ορισμένα και αόριστα ολοκληρώματα. Για τις παραπάνω μεθόδους δίνονται παραδείγματα εφαρμογής τους και επίλυσης προβλημάτων φυσικής εύρεσης ταχύτητας κινούμενου ελατηρίου, εύρεσης ταχύτητας και θέσης κινούμενου αεροπλάνου.   

Στο δέκατο κεφάλαιο αναλύεται η επίλυση διαφορικών εξισώσεων. Οι διαφορικές εξισώσεις είναι μαθηματικές εξισώσεις που περιέχουν μεταβλητές και τις παραγώγους τους. Αυτές οι εξισώσεις χρησιμοποιούνται για να περιγράψουν τη συμπεριφορά και την εξέλιξη διάφορων φυσικών, κοινωνικών, οικονομικών και μηχανικών φαινομένων. Αρχικά αναλύεται η μέθοδος Runge-Kuta και με χρήση του δομοστοιχείου numpy δίνεται κώδικας επίλυσης για διαφορικές εξισώσεις πρώτης και δεύτερης τάξης. Κατόπιν παρουσιάζεται η επίλυση διαφορικών εξισώσεων με χρήση της λειτουργίας odeint από το υποδομοστοιχείο scipy.integrate. Από το ίδιο υποδομοστοιχείο παρουσιάζεται η λειτουργία solve_ivp που επίσης επιλύει διαφορικές εξισώσεις, αλλά είναι πιο ευέλικτη από την odeint. Ακολούθως, παρουσιάζεται η επίλυση του επιδημιολογικού μοντέλου SIR με χρήση της λειτουργίας solve_ivp. Η μέθοδος των πεπερασμένων διαφορών είναι μια αριθμητική τεχνική για την επίλυση προβλημάτων όπου οι αναλυτικές λύσεις είναι δύσκολο ή αδύνατο να βρεθούν. Στη μέθοδο αυτή οι παράγωγοι προσεγγίζονται με τη χρήση των πεπερασμένων διαφορών. Έτσι λαμβάνουμε ένα σύστημα γραμμικών ή μη γραμμικών εξισώσεων, το οποίο επιλύεται με χρήση πινάκων.

Στο ενδέκατο κεφάλαιο παρουσιάζεται η μέθοδος των πεπερασμένων στοιχείων. Χρησιμοποιείται για την επίλυση προβλημάτων που περιγράφονται από διαφορικές εξισώσεις, γραμμικές ή μη γραμμικές, οριζόμενες σε έναν γεωμετρικό χώρο μίας, δύο ή τριών διαστάσεων. Για την επίλυση και τον μετασχηματισμό του προβλήματος σε μορφή πίνακα, χρησιμοποιούνται οι μέθοδοι Galerkin, Rayleigh-Ritz. To δομοστοιχείο το οποίο μας δίνει τη δυνατότητα επίλυσης με τη μέθοδο πεπερασμένων στοιχείων είναι το SfePy. To παράδειγμα που δίνεται αφορά την επίλυση προβλήματος αγωγής θερμότητας και αναλύεται το αποτέλεσμα κάθε γραμμής του κώδικα python.

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

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

[Ο Στέργιος Βράτολης είναι χημικός μηχανικός, διδάκτωρ Ατμοσφαιρικών Επιστημών. Εργάζεται στο ΕΚΕΦΕ «Δημόκριτος».]

 

Python για μηχανικούς
Απόστολος Συρόπουλος – Αναστάσιος Δήμου
Κλειδάριθμος
248 σελ.
ISBN 978-960-645-638-1
Τιμή €15,00

https://diastixo.gr/kritikes/meletesdokimia/24212-apostolos-siropoulos-anastasios-dimou-python-gia-michanikous


https://diastixo.gr

Δεν υπάρχουν σχόλια:

Δημοσίευση σχολίου