Αριθμητική Ανάλυση
Σχολή Μηχανολόγων Μηχανικών ΕΜΠ
Υποχρεωτικό Μάθημα 4ου Εξαμήνου
Διδάσκων: Κ.Χ. Γιαννάκογλου
Διανομή Σημειώσεων ή Λογισμικού

Το e-βιβλίο του μαθήματος

Ο διδάσκων και οι συν-συγγραφείς του βιβλίου, εκτιμώντας την κατάσταση (κλείσιμο πανεπιστημίων λόγω ιού και τεχνικές δυσκολίες της εκτυπωτικής μονάδας του ΕΜΠ να ετοιμάσει εγκαίρως τα ανάτυπα του βιβλίου) αποφάσισαν και θέτουν στη διάθεση των σπουδαστών το ΒΙΒΛΙΟ του μαθήματος σε ηλεκτρονική μορφή.

ΔΙΑΝΟΜΗ ΓΕΝΙΚΟΥ ΛΟΓΙΣΜΙΚΟΥ

Για τη σχεδίαση γραφημάτων συναρτήσεων προτείνεται το λογισμικό gnuplot. Μπορείτε να το εγκαταστήσετε και να αρχίσετε να το χρησιμοποιείτε.

Διανομή Λογισμικού (σε Fortran 77 και C++) για το Μάθημα

Αριθμητική Επίλυση Μη-Γραμμικών Εξισώσεων

Παραδόσεις σχετικής ύλης (27/02/2021)

Ασκήσεις (παλιά θέματα) σχετικής ύλης (5/11/2006)

Παραδόσεις σχετικής ύλης (06/03/2021)

Μέθοδος Διαδοχικών Διχοτομήσεων

Σας παρέχεται λογισμικό επίλυσης μιας μη-γραμμικής εξίσωσης με τη μέθοδο των Διαδοχικών Διχοτομήσεων. Το λογισμικό δίνεται στη μορφή της υπορουτίνας bisect που θα την βρείτε στο αρχείο bisect.for. Η συνάρτηση, τη ρίζα της οποίας αναζητούμε, προγραμματίζεται χωριστά στη συνάρτηση-υποπρόγραμμα FF που θα την βρείτε στο αρχείο testfun.for. Αυτή που σας δίνεται αντιστοιχεί σε μια γνωστή άσκηση από το βιβλίο σας. Με τον τρόπο αυτό, που βασίζεται στην εντολή include, ο χρήστης μπορεί να επεμβαίνει απλά στο τελευταίο αρχείο για να προγραμματίσει τη δική του συνάρτηση και έτσι να λύνει το δικό του πρόβλημα με το λογισμικό που του δόθηκε. Τέλος, υπάρχει το κυρίως πρόγραμμα στο αρχείο master.for, το οποίο καλεί την υπορουτίνα για τη μέθοδο των διαδοχικών διχοτομήσεων αφού πρώτα ζητήσει από το χρήστη να πληκτρολογήσει τα απαραίτητα δεδομένα.

Παρέχεται το ίδιο λογισμικό και σε C++: bisect.cpp, master.cpp,

Μέθοδος Διαδοχικών Αντικαταστάσεων ή Σταθερού Σημείου

Σας παρέχεται λογισμικό επίλυσης μιας μη-γραμμικής εξίσωσης με τη μέθοδο των Διαδοχικών Αντικαταστάσεων ή Σταθερού Σημείου. Το λογισμικό δίνεται στη μορφή της υπορουτίνας fixpoint που θα την βρείτε στο αρχείο fixpoi.for. Συνδυάστε την με το αρχείο master.for που χρησιμοποιήθηκε προηγουμένως στη μέθοδο των Διαδοχικών Διχοτομήσεων (κάνοντας μικρές αλλαγές ως προς τα απαιτούμενα δεδομένα, καλώντας πλέον τη νέα υπορουτίνα και κάνοντας include το νέο αρχείο. Η χρήση της συνάρτησης FF, που θα την βρείτε στο αρχείο testfun.for, είναι ίδια.

Αν θέλετε, μπορείτε να δημιουργήσετε ενιαίο κυρίως πρόγραμμα (το αντίστοιχο του master.for) όπου με επιλογές (menu) ο χρήστης θα επιλέγει ποιά μέθοδο θα χρησιμοποιήσει. Σε αυτό μπορείτε διαρκώς να ενσωματώνετε κάθε νέα μέθοδο που σας δίνουμε ή που εσείς προγραμματίζετε.

Παρέχεται το ίδιο λογισμικό και σε C++: fixpoi.cpp.

Μέθοδος Newton-Raphson

Σας παρέχεται λογισμικό επίλυσης μιας μη-γραμμικής εξίσωσης με τη μέθοδο Newton-Raphson. Το λογισμικό δίνεται στη μορφή της υπορουτίνας newton που θα την βρείτε στο αρχείο newraph.for. Πρέπει εσείς να την προσαρμόσετε στο κυρίως πρόγραμμα ή να κάνετε include οτιδήποτε αυτή απαιτεί, σύμφωνα με τα παραπάνω.

Παρέχεται το ίδιο λογισμικό και σε C++: newraph.cpp.

Αριθμητική Επίλυση Γραμμικών Συστημάτων

Μέθοδος Απαλοιφής κατά Gauss

Σας παρέχεται λογισμικό επίλυσης γραμμικών συστημάτων με τη μέθοδο Απαλοιφής κατά Gauss. Το λογισμικό δίνεται στο αρχείο gauss.for. Μπορείτε να το δοκιμάσετε με αρχείο δεδομένων το matrix.dat, να πάρετε τα αποτελέσματα στο αρχείο solution.dat και να τα συγκρίνετε με τα σωστά που σας δίνονται στο αρχείο knownsolution.dat. Μπορείτε να εμπλουτίσετε το λογισμικό αυτό με κανονικοποίηση ή οδήγηση. Μπορείτε, ακόμη, να τροποποιήσετε το λογισμικό δημιουργώντας νέο που να εφαρμόζει τη μέθοδο Gauss-Jordan, ώστε να υπολογίζεται και ο αντίστροφος του πίνακα των συντελεστών.

Παρέχεται το ίδιο λογισμικό και σε C++: gauss.cpp.

Μέθοδος Επίλυσης Τριδιαγώνιων Συστημάτων

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

Παρέχεται το ίδιο λογισμικό και σε C++: thomas.cpp.

Μέθοδος Gauss-Seidel με χαλάρωση

Σας παρέχεται λογισμικό για τη μέθοδο Gauss-Seidel με χαλάρωση, στο αρχείο gauss_seidel.for. Μπορείτε να το δοκιμάσετε με αρχείο δεδομένων το matrix.dat, όπως περιγράφεται προηγουμένως. Διερευνήστε, με αυτό το ρόλο της υπερ-χαλάρωσης, και της υπο-χαλάρωσης. Μπορείτε, ακόμη, να τροποποιήσετε το λογισμικό δημιουργώντας νέο που να εφαρμόζει τη μέθοδο Jacobi και να κάνετε συγκρίσεις ως προς το ρυθμό σύγκλισης. σύγκλισης

Παρέχεται το ίδιο λογισμικό και σε C++: gauss_seidel.cpp.

Μέθοδος Crout

Σας παρέχεται λογισμικό για τη μέθοδο ανάλυσης σε άνω και κάτω τριγωνικό μητρώο κατά Crout, στο αρχείο crout.for. Μπορείτε να το δοκιμάσετε με αρχείο δεδομένων το matrix.dat, όπως περιγράφεται προηγουμένως. Μπορείτε, ακόμη, να τροποποιήσετε το λογισμικό δημιουργώντας νέο που να εφαρμόζει τη μέθοδο Doolittle.

Παρέχεται το ίδιο λογισμικό και σε C++: crout.cpp.

Αριθμητική Παρεμβολή και Προσέγγιση

Μέθοδος Ελαχίστων Τετραγώνων

Σας παρέχεται λογισμικό προσέγγισης με τη μέθοδο των ελαχίστων τετραγώνων. Το λογισμικό δίνεται στο αρχείο least.for. Μπορείτε δοκιμαστικά να το τρέξετε με το αρχείο δεδομένων data.leastsq αφού πρώτα το μετονομάσετε σε data.

Παρέχεται το ίδιο λογισμικό και σε C++: least.cpp.

Μέθοδος Προσέγγισης με Πολυώνυμα Bezier

Σας παρέχεται λογισμικό προσέγγισης με Πολυώνυμα Bezier. Το λογισμικό δίνεται στο αρχείο beztest.for. Μπορείτε δοκιμαστικά να το τρέξετε με το αρχείο δεδομένων bezier.dat.

Παρέχεται το ίδιο λογισμικό και σε C++: beztest.cpp.

Αριθμητική Επίλυση Συνήθων Διαφορικών Εξισώσεων

Μέθοδος Runge-Kutta για Σύστημα Δύο Εξισώσεων

Σας παρέχεται λογισμικό επίλυσης που υπάρχει και στο βιβλίο του μαθήματος, για το παράδειγμα των λαγών και των αλεπούδων, με τη μέθοδο Runge-Kutta τέταρτης τάξης. Το λογισμικό δίνεται στο αρχείο runge4sys.for.

Παρέχεται το ίδιο λογισμικό και σε C++: runge4sys.cpp.

Αριθμητική Ολοκλήρωση

Μέθοδος Τραπεζίου

Σας παρέχεται λογισμικό ολοκλήρωσης με τη μέθοδο του τραπεζίου. Το λογισμικό δίνεται στο αρχείο trapezio.for.

Παρέχεται το ίδιο λογισμικό και σε C++: trapezio.cpp,

ΔΙΑΝΟΜΗ ΣΥΜΠΛΗΡΩΜΑΤΙΚΩΝ ΣΗΜΕΙΩΣΕΩΝ

Αριθμητική Επίλυση Γραμμικών Συστημάτων

Μέθοδοι LU (Doolittle και Crout)

Ακολουθούν συμπληρωματικές σημειώσεις.

Μέθοδος Cholesky για Συμμετρικά Μητρώα

Ακολουθούν συμπληρωματικές σημειώσεις.

Μέθοδος Ολοκλήρωσης κατά Romberg

Ακολουθεί τυπολόγιο για τη μέθοδο Romberg.

Μέθοδος Ολοκλήρωσης κατά Gauss (Ορθογώνια Πολυώνυμα)

Ακολουθεί συμπληρωματικές σημειώσεις.

ΔΙΑΝΟΜΗ ΔΙΑΛΕΞΕΩΝ

Εισαγωγικό Μάθημα

Ακολουθούν οι διαφάνειες.

Αριθμητική Επίλυση Μη-Γραμμικών Εξισώσεων

Ακολουθούν οι διαφάνειες.

Αριθμητική Επίλυση Γραμμικών Συστημάτων

Ακολουθούν οι διαφάνειες.

Βασικές Μέθοδοι Παρεμβολής

Ακολουθούν οι διαφάνειες.

Προσέγγιση με Ελάχιστα Τετράγωνα

Ακολουθούν οι διαφάνειες.

Καμπύλες Bezier

Ακολουθούν οι διαφάνειες.

Μέθοδος Παρεμβολής με Κυβικές Splines και b-Splines

Παραδόσεις σχετικής ύλης (10/1/2013)

Αριθμητική Ολοκλήρωση

Ακολουθούν διαφάνειες διαλέξεων.

Σφάλματα Αριθμητικών Υπολογισμών

Ακολουθούν διαφάνειες διαλέξεων.

Αριθμητική Επίλυση Σ.Δ.Ε.

Ακολουθούν διαφάνειες διαλέξεων 1, διαφάνειες διαλέξεων 2, και διαφάνειες διαλέξεων 3.