80

Tmhma Mhqanikwn Mousikhc Teqnologiac kai Akoustikhc T.E ......H antikat‹stash tou majhmatikoÔ montŁlou apì to arij-mhtikì montŁlo eis‹gei to ˝sf‹lma apokop€c˛. Wc par‹deigma

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

  • ii

    Τμημα Μηχανικων Μουσικης Τεχνολογιας και Ακουστικης Τ.Ε., ΣχοληΕφαρμοσμενων Επιστημων, Τεχνολογικο Εκπαιδευτικο Ιδρυμα Κρητης

    Σημειώσεις στα πλαίσια του μαθήματος

    ΤΑ-Π001–Εφαρμοσμένα Μαθηματικά

    Στοιχεία από τα εφαρμοσμένα μαθηματικάαξιοποιώντας την Climax στο περιβάλλον

    του SDE.

    Χ. Παναγιωτόπουλος

    Χειμερινό εξάμηνο ακαδημαϊκού έτους 2018-2019

  • Περιεχόμενα

    Πρόλογος 1

    1 Μαθηματική μοντελοποίηση 11.1 Σφάλματα . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

    2 Αριθμητική αναζήτηση ριζών και επίλυση εξισώσεων 32.1 Εισαγωγή . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

    2.1.1 Κριτήρια διακοπής επαναλήψεων . . . . . . . . . . . . . 42.2 Μέθοδος μέσου σημείου (ή διχοτόμησης) . . . . . . . . . . . . 52.3 Μέθοδος Newton . . . . . . . . . . . . . . . . . . . . . . . . . 62.4 Μέθοδος της τέμνουσας . . . . . . . . . . . . . . . . . . . . . 82.5 Μέθοδος Muller . . . . . . . . . . . . . . . . . . . . . . . . . . 9

    2.5.1 Εφαρμογές . . . . . . . . . . . . . . . . . . . . . . . . . 11

    3 Αριθμητική επίλυση συστημάτων εξισώσεων 153.1 Γραμμικό σύστημα . . . . . . . . . . . . . . . . . . . . . . . . 15

    3.1.1 Μέθοδοι επίλυσης . . . . . . . . . . . . . . . . . . . . . 163.1.2 ΄Αμεσοι μέθοδοι επίλυσης γραμμικών συστημάτων . . . . 163.1.3 ΄Εμμεσοι μέθοδοι επίλυσης γραμμικών συστημάτων . . . 19

    3.2 Μη γραμμικό σύστημα . . . . . . . . . . . . . . . . . . . . . . 20

    4 Ελαχιστοποίηση και μεγιστοποίηση συνάρτησης 254.1 Μέθοδος διχοτόμησης του διαστήματος . . . . . . . . . . . . . 274.2 Μέθοδος της χρυσής τομής . . . . . . . . . . . . . . . . . . . . 284.3 Μέθοδος Newton . . . . . . . . . . . . . . . . . . . . . . . . . 30

    5 Παρεμβολή 315.1 Πολυώνυμα Lagrange . . . . . . . . . . . . . . . . . . . . . . . 325.2 Τύπος του Newton . . . . . . . . . . . . . . . . . . . . . . . . 335.3 Υπολογισμός συντελεστών πολυώνυμων προσέγγισης . . . . . 34

    i

  • ii ΠΕΡΙΕΧΟΜΕΝΑ

    6 Αριθμητική ολοκλήρωση 376.1 Απλοί κανόνες ολοκλήρωσης . . . . . . . . . . . . . . . . . . . 37

    6.1.1 Κανόνας του ορθογωνίου . . . . . . . . . . . . . . . . . 376.1.2 Κανόνας του τραπεζίου . . . . . . . . . . . . . . . . . . 386.1.3 Κανόνας του Simpson . . . . . . . . . . . . . . . . . . 396.1.4 Κανόνας του Simpson 3/8 . . . . . . . . . . . . . . . . 39

    6.2 Σύνθετοι κανόνες ολοκλήρωσης . . . . . . . . . . . . . . . . . 406.3 Κανόνας ολοκλήρωσης Gauss . . . . . . . . . . . . . . . . . . 41

    7 Αριθμητική Επίλυση Συνήθων Διαφορικών Εξισώσεων 437.1 Επίλυση προβλήματος αρχικών τιμών με την μέθοδο του Euler . 43

    7.1.1 Παράδειγμα πρώτο . . . . . . . . . . . . . . . . . . . . 447.1.2 Σφάλμα μεθόδου και τάξη ακρίβειας . . . . . . . . . . . 45

    7.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477.3 Μέθοδοι Runge-Kutta . . . . . . . . . . . . . . . . . . . . . . 47

    7.3.1 Παράδειγμα δεύτερο . . . . . . . . . . . . . . . . . . . . 487.4 Συστήματα διαφορικών εξισώσεων 1ης τάξης . . . . . . . . . . 497.5 Μετατροπή δευτεροβάθμιας εξίσωσης σε σύστημα πρώτου βαθ-

    μού (εξίσωση για το απλό εκκρεμές). . . . . . . . . . . . . . . 497.6 Υλοποίηση της μεθόδου Euler για συστήματα . . . . . . . . . . 507.7 Διάγραμμα φάσης . . . . . . . . . . . . . . . . . . . . . . . . . 52

    8 Αριθμητική Επίλυση Μερικών Διαφορικών Εξισώσεων 578.1 Πεπερασμένες διαφορές . . . . . . . . . . . . . . . . . . . . . . 57

    8.1.1 Υλοποίηση σε Climax . . . . . . . . . . . . . . . . . . 588.2 Μη-ομοιόμορφος διαμερισμός . . . . . . . . . . . . . . . . . . . 588.3 Μέθοδοι πεπερασμένων διαφορών για παραβολικά προβλήματα . 588.4 Μέθοδοι πεπερασμένων διαφορών για υπερβολικά προβλήματα . 58

    9 Η Groovy και το SDE 599.1 Μεταβλητές . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609.2 Διατάξεις και πινάκες . . . . . . . . . . . . . . . . . . . . . . . 609.3 Εσωτερικές συναρτήσεις . . . . . . . . . . . . . . . . . . . . . 619.4 Δομές ελέγχου . . . . . . . . . . . . . . . . . . . . . . . . . . 61

    9.4.1 Δομή ελέγχου if/else . . . . . . . . . . . . . . . . . . . 629.4.2 Δομή ελέγχου switch . . . . . . . . . . . . . . . . . . . 62

    9.5 Δομές επανάληψης . . . . . . . . . . . . . . . . . . . . . . . . 639.5.1 Δομή επανάληψης for . . . . . . . . . . . . . . . . . . . 639.5.2 Δομή επανάληψης while . . . . . . . . . . . . . . . . . 639.5.3 Δομή επανάληψης σε πεδίο τιμών range . . . . . . . . . 64

  • ΠΕΡΙΕΧΟΜΕΝΑ iii

    9.6 Συναρτήσεις . . . . . . . . . . . . . . . . . . . . . . . . . . . . 649.7 Συναρτησιακά αντικείμενα (closures) . . . . . . . . . . . . . . . 659.8 Είσοδος και έξοδος δεδομένων σε και από αρχεία . . . . . . . . 65

    9.8.1 Αποθήκευση δεδομένων . . . . . . . . . . . . . . . . . . 669.8.2 Ανάκτηση δεδομένων . . . . . . . . . . . . . . . . . . . 66

    9.9 Αρχεία δέσμης εντολών (scripts) ∗ . . . . . . . . . . . . . . . . 679.10 Μητρώα και διανύσματα ∗ . . . . . . . . . . . . . . . . . . . . . 679.11 Μιγαδικοί αριθμοί ∗ . . . . . . . . . . . . . . . . . . . . . . . . 689.12 Διαγράμματα (plotting)∗ . . . . . . . . . . . . . . . . . . . . . 699.13 Αναπαραγωγή ήχου∗ . . . . . . . . . . . . . . . . . . . . . . . 71

    Βιβλιογραφία 73

  • Πρόλογος

    Το παρόν τεύχος γράφτηκε κατά το χειμερινό εξάμηνο του ακαδημαϊκού έτους2018–2019 οπότε και μου είχε ανατεθεί η αυτόνομη διδασκαλία και γενικό-τερη διεξαγωγή του μαθήματος «ΤΠΑ-Π001–Εφαρμοσμένα Μαθηματικά» τουτμήματος Μηχανικών Μουσικής Τεχνολογίας και Ακουστικής της Σχολής Ε-φαρμοσμένων Επιστημών του Τεχνολογικού Εκπαιδευτικού Ιδρύματος Κρήτης.Η ευκαιρία αυτή μου δόθηκε στα πλαίσια της δράσης «Απόκτηση ΑκαδημαϊκήςΔιδακτικής Εμπειρίας σε Νέους Επιστήμονες Κατόχους Διδακτορικού».

    Σε καμία περίπτωση δεν αποτελεί εκτενές οδηγό ούτε πλήρες εγχειρίδιογια το ευρύ πεδίο των Εφαρμοσμένων Μαθηματικών. Από το πεδίο αυτό έχουνεπιλεχθεί θέματα που κυρίως άπτονται της ενότητας της Αριθμητικής Ανάλυσης[4] τα οποία και παρουσιάζονται συνοπτικά.

    Τα υπολογιστικά εργαλεία που χρησιμοποιήθηκαν είναι το περιβάλλον εργα-σίας SDE και η βιβλιοθήκη Climax αμφότερα ανεπτυγμένα σε γλώσσα Javaμε ταυτόχρονη αξιοποίηση της γλώσσας Groovy. Σκοπός μας είναι πέρα απότο να προτείνουμε την χρήση των συγκεκριμένων εργαλείων (Java, Groovy,Climax, SDE) ως μια εναλλακτική για την διδακτική διαδικασία, ταυτόχρονανα πειραματιστούμε και να ελέγξουμε για την καταλληλότητα και προσαρμοστι-κότητα τους.

    Η παρούσα μορφή δεν μπορεί να θεωρηθεί ολοκληρωμένη, αποτελεί όμωςμία ειλικρινή προσπάθεια μιας πρώτης έκδοσης δεδομένου των συνθηκών πουδιαμορφώθηκαν ύστερα από σχετικά προβλήματα (κατάληψη, συμβάσεις, κ.α.)και καθυστερήσεις κατά την έναρξη του χειμερινού εξαμήνου του 2018–2019στο τμήμα Μηχανικών Μουσικής Τεχνολογίας και Ακουστικής ειδικά, αλλάκαι του Τεχνολογικού Εκπαιδευτικού Ιδρύματος Κρήτης γενικότερα.

    Χ. ΠαναγιωτόπουλοςΙανουάριος 2019

    1

  • 2

  • Κεφάλαιο 1

    Μαθηματική μοντελοποίηση

    Τις τελευταίες δεκαετίες με τη ραγδαία ανάπτυξη των ηλεκτρονικών υπολο-γιστών η συστηματική αξιοποίηση των εφαρμοσμένων μαθηματικών και τωναριθμητικών μεθόδων έχει λάβει εξέχουσα θέση στην διαδικασία επίλυσης προ-βλημάτων επιστημονικών εφαρμογών[1].

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

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

    Είναι φανερό ότι η πιο πάνω διαδικασία αντικαταστάσεων, από το φυσικόμοντέλο στο μαθηματικό, από το μαθηματικό στο αριθμητικό και τέλος η επί-λυση του αριθμητικού αυτού μοντέλου, εισάγει κάποια σφάλματα στα οποία θααναφερθούμε συνοπτικά σε αυτό το κεφάλαιο.

    1Βλέπε και στην https://el.wikipedia.org/wiki, στο αντίστοιχο λήμμα (Αλγό-ριθμος).

    1

  • 1.1 Σφάλματα

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

    Το σφάλμα της αντικατάστασης του φυσικού μοντέλου από το μαθηματικόμοντέλο δεν είναι εύκολο να ποσοτικοποιηθεί αν και θα το καλούμε εδώ ‘σφάλμαμοντελοποίησης’. Η αντικατάσταση του μαθηματικού μοντέλου από το αριθ-μητικό μοντέλο εισάγει το ‘σφάλμα αποκοπής’. Ως παράδειγμα μπορεί κανείςνα σκεφτεί την αναλυτική μορφή του αναπτύγματος μια συνάρτησης σε σειράάπειρου πλήθους για τον αριθμητικό υπολογισμό της οποίας χρησιμοποιούνταιπεπερασμένου αριθμού όροι.

    Είναι επίσης σύνηθες στους υπολογισμούς μας να αντικαθιστούμε έναν α-ριθμό με μεγάλο πλήθος δεκαδικών ψηφίων από έναν άλλο με πεπερασμένοπλήθος δεκαδικών ψηφίων. Το σφάλμα που υπεισέρχεται από την προσέγγισηαυτή ονομάζεται ‘σφάλμα στρογγυλοποίησης ’. ΄Οσο αφορά την στρογγυλο-ποίηση ενός αριθμού με χρήση m δεκαδικών ψηφίων, το ψηφίο της m-στηςδεκαδικής θέσης του προσεγγιστικού αριθμού μένει ως έχει ή αυξάνεται κατάμία μονάδα, ανάλογα με το αν το παραλειπόμενο μέρος είναι μικρότερο ή μεγα-λύτερο από μισή μονάδα της m-οστής δεκαδικής τάξης που διατηρείται. ΄Οταντο παραλειπόμενο μέρος είναι ίσο με τη μισή μονάδα τότε αφήνουμε το ψηφίοτης m-οστής δεκαδικής θέσης όπως είναι αν αυτό είναι άρτιο ή το αυξάνουμεκατά μια μονάδα αν αυτό είναι περιττό.

    Η απολυτή διαφορά του αριθμού x∗ που είναι μια προσέγγιση του αριθμούx θα είναι:

    |e| = |x∗ − x|

    και καλείται ‘απόλυτο σφάλμα’. Ο αριθμός αυτός δεν μπορεί να αποδώσει ικα-νοποιητικά την ποιότητα της προσέγγισης του αριθμού x από τον αριθμό x∗

    καθώς αυτή θα εξαρτάται από το μέγεθος του αριθμού x. Για το λόγο αυτόχρησιμοποιούμε το ‘απόλυτο σχετικό σφάλμα’ που είναι:

    |e|/|x|

    η προσεγγιστικά:

    |e|/|x∗|.

    Τέλος στην πράξη πολλές φορές χρησιμοποιούμε το ‘ποσοστιαίο σφάλμα’, τοοποίο θα συναντάμε καμιά φορά και σαν ‘επί της εκατό σφάλμα’, ως:

    100|e|/|x|.

    2

  • Κεφάλαιο 2

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

    2.1 Εισαγωγή

    ΄Ενα απο τα σημαντικότερα προβλήματα που συναντά κανείς είναι αυτό τηςεπίλυσης κάποιας εξίσωσης της μορφής:

    f(x) = 0 (2.1)

    με άλλα λόγια τον υπολογισμό των τιμών της μεταβλητής x για τις οποίες μη-δενίζεται η συνάρτηση f . Οι τιμές αυτές της μεταβλητής x ονομάζονται καιρίζες της εξίσωσης (2.1). ΄Οταν η μοναδική ανεξάρτητη μεταβλητή είναι η x α-ναφερόμαστε σε ένα μονοδιάστατο πρόβλημα. ΄Εχοντας περισσότερες της μιαςανεξάρτητες μεταβλητές x τότε παραπάνω της μιας εξίσωσης μπορούν να ικα-νοποιούνται ταυτόχρονα και θα έχουμε ένα πολυδιάστατο πρόβλημα. Αν οι ανε-ξάρτητες μεταβλητές είναι n στον αριθμό τότε το διάνυσμα x = (x1, x2, . . . , xn)θα μπορεί να ικανοποιεί έως και n εξισώσεις f = (f1, f2, . . . , fn) του ορίζονταςένα n-διαστατο πρόβλημα το οποίο και θα γράφεται ως.

    f(x) = 0 (2.2)

    Η εξ. (2.2) ουσιαστικά αφορά ένα σύστημα n εξισώσεων με n άγνωστους, τιςσυντεταγμένες του διανύσματος x. Στο παρόν κεφάλαιο θα μας απασχολήσειη επίλυση της εξίσωσης (2.1). Οι εξισώσεις f που μελετάμε μπορεί να είναιπολυωνυμικές (αλγεβρικές), της μορφής:

    f(x) = aνxν + aν−1x

    ν−1 + . . .+ a1x+ +a0 (2.3)

    3

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

    f(x) = x− ex2−x3 + x cos(x) sinhx2 (2.4)

    ή παρόμοια.Στην πλειονότητα των περιπτώσεων που συναντάμε σε πρακτικά προβλή-

    ματα η εξ. (2.1) είναι αδύνατο ή πολύ δύσκολο να λυθεί αναλυτικά. Για τολόγο αυτό έχουν αναπτυχθεί οι προσεγγιστικές μέθοδοι εύρεσης της λύσης. Ηπροσεγγιστική λύση x∗ είναι ένας αριθμός που μόνο προσεγγιστικά ικανοποιείτην εξ. (2.1), δηλαδή ισχύει:

    |f(x∗)| = �

    με το � ένα πολύ μικρό αριθμό κοντά στο μηδέν.΄Ενα πολύ βασικό στοιχείο όλων των προσεγγιστικών μεθόδων είναι η α-

    παίτηση να γνωρίζουμε ένα διάστημα στο οποίο θα βρίσκεται τουλάχιστον μιαρίζα της εξίσωσης ή ένα σημείο έναρξης xinit το οποίο υποτίθεται να είναι ‘κο-ντά’ σε σημείο που είναι ρίζα της εξίσωσης. Για να βρούμε τέτοια διαστήματασημείων ή κάποια σημεία εκκίνησης βοηθάει συχνά το διάγραμμα της, γνωστήςκαι δεδομένης, συνάρτησης στη μεταβλητή x. Η επιλογή του διαστήματος ήτου σημείου εκκίνησης παίζει σημαντικό ρόλο για τη σύγκλιση των μεθόδωνστη σωστή ακριβή τιμή της ρίζας της εξίσωσης.

    2.1.1 Κριτήρια διακοπής επαναλήψεων

    Οι προσεγγιστικές μέθοδοι που περιγράφουμε εδώ για την εύρεση των ριζώνμιας εξίσωσης αποτελούν μια επαναληπτική διαδικασία η οποία και θα πρέπεινα εκτελεί πεπερασμένο αριθμό κύκλων επανάληψης. Για τη περίπτωση τουμονοδιάστατου προβλήματος της ελ. (2.1) τα κυριότερα κριτήρια παύσης τηςδιαδικασίας επαναλήψεων δίνονται πιο κάτω. Σε όλα τα κριτήρια θα πρέπει ναορίσουμε ένα μικρό αριθμό � που θα είναι η ανοχή σφάλματος (tolerance). Οδείκτης i δείχνει το τρέχον βήμα επανάληψης.

    • |xi − xi−1| < �

    • |f(xi)| < �

    • |xi−xi−1|xi < � με xi 6= 0

    4

  • 2.2 Μέθοδος μέσου σημείου (ή διχοτόμησης)

    Η μέθοδος του μέσου σημείου η μέθοδος διχοτόμησης (bisection) βασίζεταιστο θεώρημα Bolzano της μέσης τιμής, που λέει ότι, αν μια συνάρτηση f μεπεδίο ορισμού το [a, b] είναι συνεχής σε αυτό και ισχύει f(a)f(b) < 0, τότευπάρχει ένα τουλάχιστον σημείο μηδενισμού της f σε αυτό το διάστημα. Ανη ρίζα αυτή είναι απλή, τότε ο προσδιορισμός της ρίζας μπορεί να γίνει με τοναλγόριθμο της μεθόδου διχοτόμησης (Αλγόριθμος 1.2.1-1 στην αναφορά [5]).

    Αλγόριθμος: Μέθοδος μέσου σημείου (διχοτόμησης)

    • Είσοδος: Συνάρτηση f(x) και [a, b], επίπεδο ακρίβειας �.

    • Αρχικοποίηση:΄Ορισε [a1, b1] ⊂ [a, b], με f(a1)f(b1) < 0, θέσε i = 1.

    • Επαναλήψεις με αυξανόμενο i:

    1. Θέσε xi = (ai + bi)/2·

    2. Αν f(ai)f(xi) < 0, θέσε bi+1 = pi, ai+1 = ai·αλλιώς, θέσε ai+1 = xi, bi+1 = bi·

    3. Αν (bi − ai)/2 > �, θέσε i = i+ 1 μετάβαση στο βήμα 14. Παύση με x∗ = xi = (bi+1 + ai+1)/2.

    Σημειώσεις:΄Αλλα κριτήρια παύσης (σύγκλισης) είναι δυνατό να επιλεχθούν,π.χ. |f(xi)| < �.

    Εδώ δίνεται σε απλό κώδικα Groovy/Climax η επίλυση της εξίσωσης

    f(x) = x3 + 4x2 − 10 = 0 (2.5)

    στο διάστημα [1, 2] (βλέπε Παράδειγμα 1.2.1-1 και Πρόγραμμα 1.2.1-1 στην [5]).

    1 a=1; b=22 a1=a ; b1=b3 Nmax=200; eps=1.0e−64 f={x∗∗3+4∗x∗∗2−10}5 s o l =[ ]6 converge=fa l se7 i t e r=18 while ( i t e r

  • 9 x=(a1+b1 ) /2 .010 fx=f (x )11 s o l . add (x )12 p r i n t f ("%d: x= %8.6f and f(x)= %6.4e \n" , i t e r , x , fx )13 i f ( abs ( fx )0){a1=x} else {b1=x}17 }18 i t e r++19 }20

    21 thePlot . c l e a r ( )22 pf=new p l o t f un c t i on ( s o l )23 thePlot . addFunction ( pf )24 thePlot . setMarker ( true )25 thePlot . show ( )

    2.3 Μέθοδος Newton

    Η μέθοδος Newton είναι γνωστή και ως μέθοδος Newton-Raphson. Η μέθοδοςθα μπορούσε να παρουσιαστεί με χρήση του αναπτύγματος Taylor. ΄Εστω η fστο διάστημα [a, b] με παραγώγους μέχρι και δεύτερης τάξης συνεχείς σε αυτότο διάστημα, τότε έχουμε:

    f(x) ≈ f(ξ) + (x− ξ)f ′(ξ) + (x− ξ)2

    2f ′′(ξ)

    Υποθέτοντας ότι η τιμή x∗ είναι ρίζα της f τότε:

    0 ≈ f(ξ) + (x∗ − ξ)f ′(ξ) + (x∗ − ξ)2

    2f ′′(ξ)

    Θεωρώντας ότι ο αριθμός |x∗−ξ| είναι πολύ μικρός τότε ο όρος (x−ξ)2 μπορείνα παραληφθεί και να έχουμε:

    0 ≈ f(ξ) + (x∗ − ξ)f ′(ξ)

    οπότε και λύνοντας ως προς x∗:

    x∗ ≈ ξ − f(ξ)f ′(ξ)

    (2.6)

    Από την σχέση της εξ. (2.6) μπορεί να προκύψει ο αλγόριθμος της μεθόδουNewton.

    6

  • Αλγόριθμος: Μέθοδος Newton

    • Είσοδος: Συνάρτηση f(x), αρχική τιμή xinit, επίπεδο ακρίβειας �.

    • Αρχικοποίηση:Θέσουμε i = 1 και x0 = xinit.

    • Επαναλήψεις με αυξανόμενο i:

    1. Θέσε xi = xi−1 − f(xi−1)f ′(xi−1) ·

    2. Αν |f(xi)| > �, θέσε i = i+ 1 και xi−1 = xi,μετάβαση στο βήμα 1

    3. Παύση με x∗ = xi.

    Εδώ δίνεται σε απλό κώδικα Groovy/Climax η επίλυση της εξίσωσης

    f(x) = x3 + 2x2 + 10x− 20 = 0 (2.7)

    (βλέπε Παράδειγμα 1.4.1-1 στην [5]).

    1 x0=2.1d2 t o l =1.0e−63 Nmax=1004 f={ i t ∗∗3+2∗ i t ∗∗2+10∗ i t −20}5 df={3∗ i t ∗∗2+4∗ i t +10}6 s o l =[ ]7 converge=fa l se8 i t e r=09 s o l . add ( x0 )

    10 fx=f ( x0 ) ; dfx=df ( x0 )11 p r i n t f ("%d: x= %8.6f and f(x)= %6.4e \n" , i t e r , x0 , fx )12 while ( i t e r

  • 25 thePlot . addFunction ( pf )26 thePlot . setMarker ( true )27 thePlot . show ( )

    2.4 Μέθοδος της τέμνουσας

    ΄Ενα μειονέκτημα της μεθόδου Newton είναι η απαίτηση της ύπαρξης της α-ναλυτικής μορφής της πρώτης παραγώγου της συνάρτησης f(x), δηλαδή τηνf ′(x). Η μέθοδος της τέμνουσας ή αλλιώς της χορδής (secant method) μπορείνα ιδωθεί ως εναλλακτική της μεθόδου Newton, όπου η τιμή της παραγώγουτης συνάρτησης στο σημείο ξ προσεγγίζεται από ένα σχήμα πεπερασμένων διά-φορων.

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

    xi = xi−1 − f(xi−1)xi−1 − xi−2

    f(xi−1)− f(xi−2)(2.8)

    και όπως είναι εμφανές η μέθοδος απαιτεί δυο αρχικά σημεία x0 και x1 τα οποίαπρέπει να είναι κοντά στη ριζά της εξίσωσης.

    Αλγόριθμος: Μέθοδος τέμνουσας

    • Είσοδος: Συνάρτηση f(x), αρχική τιμή xinit1 και xinit2 , επίπεδοακρίβειας �.

    • Αρχικοποίηση:Θεσουμε i = 1 και xa = xinit1 και xb = xinit2 .

    • Επαναλήψεις με αυξανόμενο i:

    1. Θέσε fa = f(xa), fb = f(xb)·

    2. Θέσε xi = xb − fb xb−xafb−fa ·3. Αν |f(xi)| > �,

    θέσε i = i+ 1 και xa = xb, xb = xiμετάβαση στο βήμα 1

    4. Παύση με x∗ = xi.

    Εδώ δίνεται σε απλό κώδικα Groovy/Climax η επίλυση της εξίσωσης

    f(x) = cosx− x = 0 (2.9)

    (βλέπε Παράδειγμα 1.4.2-1 στην [5]).

    8

  • 1 x0=0.5d2 x1=PI /4 .0d3 t o l =1.0e−44 Nmax=1005 f={cos ( i t )− i t }6 converge=fa l se7 i t e r=08 p r i n t f ("%d: x= %12.10f and |x0-x1|= %6.4e \n" , i t e r , x , abs ( x0−x1 ) )9 while ( i t e r

  • διαιρεμένη διαφορά (divided differences1) βλέπε στη βιβλιογραφία [5]. Στην αλ-γοριθμική μορφή της μεθόδου θα δώσουμε μια ίσως πιο κατάλληλη μορφή γιαεφαρμογή σε υπολογιστή που μπορεί να συναντήσει κάνεις στη βιβλιογραφία[6].

    Αλγόριθμος: Μέθοδος Muller

    • Είσοδος: Συνάρτηση f(x), αρχική τιμή xinit1 , xinit2 και xinit3 ,επίπεδο ακρίβειας �.

    • Αρχικοποίηση:Θέτουμε i = 1 και xa = xinit1 , xb = xinit2 και xc = xinit3 .

    • Επαναλήψεις με αυξανόμενο i:

    1. Θέσε fa = f(xa), fb = f(xb), fc = f(xc)·

    2. Θέσε q = xc−xbxb−xa3. Θέσε A = qfc − q(q + 1)fb + q2fa4. Θέσε B = (2q + 1)fc − (1 + q)2fb + q2fa5. Θέσε C = (1 + q)fc

    6. Θέσε xi = xc − (xc − xb)[

    2CB±√B2−4AC

    7. Αν |f(xi)| > �,θέσε i = i+ 1 και xa = xb, xb = xc και xc = xiμετάβαση στο βήμα 1

    8. Παύση με x∗ = xi.

    Ξανά εδώ το πρόσημο από το ± επιλέγεται έτσι ώστε ο παρανομαστής ναέχει το μεγαλύτερο μέτρο.

    Εδώ δίνεται σε κώδικα Groovy/Climax η επίλυση της εξίσωσης

    f(x) = x3 + 5x2 + 9x+ 45 = 0 (2.11)

    Το οποίο παράδειγμα έχουμε πάρει από τον επίσημο ιστότοπο2 της IMSL For-tran Numerical Math Library για να γίνει έλεγχος του αλγόριθμου.

    1https://en.wikipedia.org/wiki/Divided_differences2https://docs.roguewave.com/imsl/fortran/6.0/math/default.htm?

    turl=zanly.htm

    10

  • 1 x0=new Complex (10 . 1 d , 0 . 0 d) ; x1=new Complex (11 . 1 d , 0 . 0 d)2 x2=new Complex (12 . 1 d , 0 . 0 d) ; t o l =1.0e−16 ; Nmax=1003

    4 c2=new Complex ( 2 . 0 d , 0 . 0 d) ; c4=new Complex ( 4 . 0 d , 0 . 0 d)5 c5=new Complex ( 5 . 0 d , 0 . 0 d) ; c9=new Complex ( 9 . 0 d , 0 . 0 d)6 c45=new Complex (45 . 0 d , 0 . 0 d)7

    8 r r =[ ]9 f={

    10 fun=( i t . pow(3)+c5∗ i t . pow(2)+c9∗ i t+c45 )11 for ( i in 0..< r r . s i z e ( ) ) fun/=( i t−r r [ i ] )12 return fun13 }14

    15 converge=fa l se ; i t e r =0; fx=f ( x2 )16 p r i n t f ("%d: x= (%8.6f,%8.6f) and f(x)= (%6.4e,%6.4e) accuracy

    =%6.4e\n" , i t e r , x0 . re ( ) , x0 . im ( ) , fx . re ( ) , fx . im ( ) , fx . abs ( ) )17 while ( i t e r

  • Πίνακας 2.1: Ρίζες r της χαρακτηριστικής εξ. (2.13) για L=100m

    j αναλυτική προσέγγιση μέθοδος τέμνουσας μέθοδος Muller

    1 0.0471238898 0.04730041 0.047300412 0.0785398163 0.07853205 0.078532053 0.1099557429 0.10995608 0.109956084 0.1413716694 0.14137165 0.14137165

    Η χαρακτηριστική εξίσωση καμπτικών ταλαντώσεων συνεχούς αμφίπακτης δο-κού συνολικού μήκους L, προκύπτει να είναι η υπερβατική εξίσωση:

    cos(rL) cosh(rL)− 1 = 0

    Η αναλυτικά προσεγγιστική λύση3 της πιο πάνω εξίσωσης δίνει τις ρίζες,

    rj =

    (j +

    1

    2

    L, για j = 1, 2, . . . ,∞

    Για μήκος δοκού L = 100m να επαληθευθεί το αποτέλεσμα με χρήση κατάλ-ληλης αριθμητικής μεθόδου.

    Οι λύσεις των υπολογιστικών μεθόδων, που να σημειώσουμε εδώ εξαρτώ-νται πολύ από την αρχική τιμή εκτίμησης της ρίζας, βρίσκονται σε συμφωνίαμεταξύ τους και είναι ίδιες με την ακριβή αναλυτική λύση που δίνεται στη βι-βλιογραφία (π.χ. [2] και [3])

    Αξίζει εδώ να σημειωθεί ότι οι αντίστοιχες (κυκλικές) ιδιοσυχνότητες [2]προκύπτουν από τη σχέση,

    ωj = r2j

    √EI

    %AL(2.13)

    Σημειώνεται εδώ πως θα μπορούσαμε να γράψουμε τη πιο πάνω σχέση ως

    rj =

    √ωj

    (EI

    %AL

    )− 12

    (2.14)

    οπότε και η χαρακτηριστική εξίσωση (2.13) να γραφεί σαν σε συνάρτηση τηςάγνωστης κυκλικής ιδιοσυχνότητας ω,

    f(ω) = cos(r(ω)L) cosh(r(ω)L)− 1 (2.15)

    12

  • Πίνακας 2.2: Ρίζες ω της χαρακτηριστικής εξ. (2.15) για L=100m

    j αναλυτική προσέγγιση μέθοδος τέμνουσας μέθοδος Muller

    1 4.822002783 4.8581956825 4.85819568252 13.3944521636 13.3918033112 13.39180331123 26.2531262788 26.2532872516 26.25328725164 43.3980250469 43.3980131361 43.3980131361

    Οι ρίζες της οποίας δινονται στον πιν. 2.2.

    Στην γενικότερη θεώρηση σύμφωνα με την οποία η δοκός εδράζεται πάνωσε σύστημα συνεχών ελατηρίων (Winkler) ελατηριακής σταθεράς k και λαμβά-νοντας υπόψη την επιρροή στην κάμψη κάποιας αξονικής εσωτερικής δύναμηςN η διαφορική εξίσωση θα έχει την πιο σύνθετη μορφή,

    EI∂4u(x, t)

    ∂x4+m

    ∂2u(x, t)

    ∂t2+N

    ∂2u(x, t)

    ∂2x+ ku(x, t) = 0 (2.16)

    ενώ η χαρακτηριστική εξίσωση θα δίνεται από τη σχέση,

    f(ω) =

    (s1 − s4)((

    exp(s2L)− exp(s4L))(s3 exp(s3L)− s4 exp(s4L)

    )−(

    exp(s3L)− exp(s4L))(s2 exp(s2L)− s4 exp(s4L)

    ))+

    (s2 − s4)((

    exp(s3L)− exp(s4L))(s2 exp(s2L)− s4 exp(s4L)

    )−(

    exp(s1L)− exp(s4L))(s3 exp(s3L)− s4 exp(s4L)

    ))+

    (s3 − s4)((

    exp(s1L)− exp(s4L))(s2 exp(s2L)− s4 exp(s4L)

    )−(

    exp(s2L)− exp(s4L))(s1 exp(s1L)− s4 exp(s4L)

    ))(2.17)

    3Η λύση αυτή θεωρείται ακριβής για j > 5, βλ. [3].

    13

  • Πίνακας 2.3: Ρίζες ω της χαρακτηριστικής εξ. (2.17) για συνδυασμούς (N, k)

    j (0, 0) (N, 0) (0, k) (N, k)

    1 4.85819516 6.80749014 21.71861214 21.279629662 13.39180203 16.29553232 22.25534033 22.760492863 26.25328648 29.58892641 25.51545561 27.152209614 43.39801615 46.97780319 34.07246930 36.704259695 64.82914901 68.56222904 48.52922747 51.75530993

    όπου si = si(ω), για i από 1 έως 4. Πιο συγκεκριμένα,

    s1 =

    √N +

    √N2 + 4EI(ω2m− k)

    2EI(2.18)

    s2 =−

    √N +

    √N2 + 4EI(ω2m− k)

    2EI(2.19)

    s3 =

    √N −

    √N2 + 4EI(ω2m− k)

    2EI(2.20)

    s4 =−

    √N −

    √N2 + 4EI(ω2m− k)

    2EI(2.21)

    Η αριθμητική επίλυση της εξίσωσης (2.17) για την εύρεση των ριζών της . . . γιαL=100m και m=0.53tn/m καθώς και για συνδυασμούς των N=10000kN καιk=250kN/m2 δίνει τα αποτελέσματα του αντίστοιχου πίνακα.

    14

  • Κεφάλαιο 3

    Αριθμητική επίλυσησυστημάτων εξισώσεων

    ΄Οπως είδαμε και στο κεφ. 2 ένα πρόβλημα μπορεί να περιγράφεται από Nανεξάρτητες μεταβλητές x = (x1, x2, . . . , xn). ΄Εστω ότι στο ίδιο πρόβλημαυπάρχουν M γραμμικές εξισώσεις επί των μεταβλητών x, ορίζεται τότε ένασύστημα γραμμικών εξισώσεων ή αλλιώς ένα γραμμικό σύστημα.

    3.1 Γραμμικό σύστημα

    Η γενική μορφή ενός γραμμικού συστήματος m-εξισώσεων με n-αγνώστουςx1, x2, . . . , xn, είναι:

    a11x1 + a12x2 + · · ·+ a1jxj + · · ·+ a1nxn = b1...

    ai1x1 + ai2x2 + · · ·+ aijxj + · · ·+ ainxn = bi (3.1)...

    am1x1 + am2x2 + · · ·+ amjxj + · · ·+ amnxn = bm

    Αν bi = 0 για καθε i = 1, 2, . . . ,m, τότε το σύστημα λέγεται ομογενές μεπροφανή (τετριμμένη) λύση την:

    x1 = x2 = . . . = xN = 0,

    ενώ όταν τουλάχιστον ένα bi διάφορο του μηδέν, τότε το σύστημα λέγεται μηομογενές.

    15

  • Με τη βοήθεια των πινάκων το σύστημα μπορεί να γραφτεί ως:a11 a21 . . . a1j . . . a1n...

    ... . . .... . . .

    ...ai1 ai1 . . . aij . . . ain...

    ... . . .... . . .

    ...am1 am1 . . . amj . . . amn

    ︸ ︷︷ ︸

    A

    x1...xi...xm

    ︸ ︷︷ ︸

    x

    =

    b1...bi...bm

    ︸ ︷︷ ︸

    b

    ή αλλιώς

    Ax = b, (3.2)

    όπου A ο πίνακας των συντελεστών των αγνώστων τάξης (m,n) και b διάνυσματάξης (m), με A ∈ Rm×n, αντίστοιχα A ∈ Cm×n και b ∈ Rm, αντίστοιχαb ∈ Cm.

    3.1.1 Μέθοδοι επίλυσης

    Εδώ θα περιοριστούμε στην περίπτωση κατά την οποία έχουμε τόσες εξισώσειςόσος και ο αριθμός των αγνώστων μεταβλητών xi. Θα θεωρήσουμε δηλαδή ότιο πινάκας A είναι τετραγωνικός m = n. Κατά τα γνωστά, ένα τέτοιο γραμμικόμη ομογενές σύστημα της μορφής της εξ. (3.2), θα έχει μια και μόνο λύσηγια κάθε b αν ο πίνακας A είναι αντιστρέψιμος, δηλαδή αν ισχύει det(A) 6= 0,όπου det(A) η ορίζουσα του A που διαφορετικά θα συμβολίζουμε και ως |A|.Η επίλυση του προβλήματος με τον κανόνα Cramer1 είναι υπολογιστικά μηαποδοτικές και για το λόγο αυτό έχουν αναπτυχθεί μέθοδοι υπολογισμού μελιγότερο απαιτούμενο υπολογιστικό κόστος.

    Βασικός διαχωρισμός των υπολογιστικών μεθόδων επίλυσης είναι αυτόςπου τις κατατάσσει στις:

    • άμεσες (direct)

    • έμμεσες ή επαναληπτικές (iterative)

    3.1.2 ΄Αμεσοι μέθοδοι επίλυσης γραμμικών συστημάτων

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

    1https://en.wikipedia.org/wiki/Cramer’s_rule

    16

  • υπάρχουν διαφορές. Επιπλέον ένα γραμμικό σύστημα μπορεί να περιεχέι συ-ντελεστές τέτοιων αριθμητικών τιμών που να ορίζουν μιας κακής κατάστασηςμητρώο (ill-conditioned matrix), σε αυτή την περίπτωση μπορεί να οδηγηθούμεσε αστάθεια της λύσης.

    Μέθοδος απαλοιφής Gauss

    Η μέθοδος απαλοιφής του Gauss χωρίς διάταξη (pivoting) παρουσιάζεται εδώεπιλύοντας το πιο κάτω πρόβλημα (βλέπε Παράδειγμα 2.2.2-1 στην [5]).

    ΄Εστω το σύστημα,

    2x1 + 2x2 + 4x3 = 6

    −x1 + 2x2 − 3x3 = 3x1 + 2x2 − x3 = 5

    να λυθεί με τη μέθοδο Gauss.Στην αναφορά [5] μπορεί να αναζητηθεί και η αντίστοιχη θεωρία καθώς

    και μια πλήρης περιγραφή. Με χρήση του εκπαιδευτικού κώδικα που ακολουθείμπορεί κανείς να λύσει οποιοδήποτε κατάλληλο σύστημα εξισώσεων τάξης n×n.

    1 n=32 A=new Matrix (n , n)3 b=new Matrix (n , 1 )4 x=new Matrix (n , 1 )5

    6 A[ 0 , 0 ]=2 . 0 ; A[ 0 , 1 ]=2 . 0 ; A[ 0 , 2 ]=4 . 0 ; b [ 0 , 0 ]=6 . 07 A[1 ,0 ]= −1 .0 ; A[ 1 , 1 ]=2 . 0 ; A[1 ,2 ]= −3 .0 ; b [ 1 , 0 ]=3 . 08 A[ 2 , 0 ]=1 . 0 ; A[ 2 , 1 ]=2 . 0 ; A[2 ,2 ]= −1 .0 ; b [ 2 , 0 ]=5 . 09

    10 p r i n t l n ("matrix A:") ; A. p r i n t ( ) ;11 p r i n t l n ("vector b:") ; b . p r i n t ( )12

    13

    14 p r i n t l n ("Gauss elimination")15 p r i n t l n ("----------------------------")16 (0 . .

  • 25 A[ i , j ]=A[ i , j ]−A[ step , j ]∗m26 }27 b [ i ,0 ]=b [ i ,0]−b [ step , 0 ] ∗m28 }29 A. pr i n t ( ) ; b . p r i n t ( )30 }31

    32 p r i n t l n ("Back substitution")33 p r i n t l n ("----------------------------")34 (n−1 . . 0 ) . each{35 i=i t36 c=b [ i , 0 ]37 ( i . .

  • όπου LT ο ανάστροφος πίνακας του L.

    3.1.3 ΄Εμμεσοι μέθοδοι επίλυσης γραμμικών συστημά-των

    Μέθοδος Jacobi

    Η μέθοδος απαλοιφής του Jacobi παρουσιάζεται εδώ επιλύοντας το πιο κάτωπρόβλημα (βλέπε Παράδειγμα 2.3.2-1 στην [5]).

    ΄Εστω το σύστημα,

    x1 − 2x2 + 3x3 = −1−3x1 + 9x2 + 1x3 = −5x1 − x2 − 7x3 = 15

    να λυθεί με τη μέθοδο Jacobi.Στην αναφορά [5] μπορεί να αναζητηθεί η αντίστοιχη θεωρία καθώς και μια

    πλήρης περιγραφή. Με χρήση του εκπαιδευτικού κώδικα που ακολουθεί μπορείκανείς να λύσει οποιοδήποτε κατάλληλο σύστημα εξισώσεων τάξης n× n.

    1 n=32 A=new Matrix (n , n)3 b=new Matrix (n , 1 )4 x=new Matrix (n , 1 )5 xp=new Matrix (n , 1 )6

    7 A. s e t ( 0 , 0 , 5 . 0 ) ; A. s e t (0 ,1 ,−2.0) ; A. s e t ( 0 , 2 , 3 . 0 ) ; b . s e t (0 ,0 ,−1.0); x . s e t ( 0 , 0 , 0 . 0 )

    8 A. s e t (1 ,0 ,−3.0) ; A. s e t ( 1 , 1 , 9 . 0 ) ; A. s e t ( 1 , 2 , 1 . 0 ) ; b . s e t (1 ,0 ,−5.0); x . s e t ( 1 , 0 , 0 . 0 )

    9 A. s e t ( 2 , 0 , 1 . 0 ) ; A. s e t (2 ,1 ,−1.0) ; A. s e t (2 ,2 ,−7.0) ; b . s e t( 2 , 0 , 1 5 . 0 ) ; x . s e t ( 2 , 0 , 0 . 0 )

    10

    11 p r i n t l n ("matrix A:") ; A. p r i n t ( ) ;12 p r i n t l n ("vector b:") ; b . p r i n t ( )13 p r i n t l n ("initial vector x:") ; x . p r i n t ( )14

    15 Nmax=5016 t o l =10.0e−617 converge=fa l se18 i t e r=019 while ( i t e r

  • 22 i=i t23 c=0.024 (0 . .< i ) . each{c+=A[ i , i t ]∗ xp [ i t , 0 ] }25 ( i +1..

  • Αναζητούμε λοιπόν μια τιμή για το διάνυσμα x, έστω η x∗ = [x∗1, x∗2, . . . , x

    ∗n]T

    για την οποία θα ισχύει:

    f(x∗) ≈ 0. (3.6)

    Μέθοδος Newton

    Σε αναλογία με την ενότητα 2.3 εδώ θα είναι,

    x∗ = ξ − J−1(ξ)f(ξ) (3.7)

    με J−1 το αντίστροφο του Ιακωβιανού μητρώου (Jacobian),

    J(x) =

    ∂f1(x)∂x1

    ∂f1(x)∂x2

    . . . ∂f1(x)∂xn∂f2(x)∂x1

    ∂f2(x)∂x2

    . . . ∂f2(x)∂xn...

    ... . . ....

    ∂fn(x)∂x1

    ∂fn(x)∂x2

    . . . ∂fn(x)∂xn

    καθώς η εύρεση ενός αντίστροφου μητρώου, ιδιαιτέρα όταν η τάξη n είναι με-γάλη, είναι μια ασύμφορη υπολογιστικά ενέργεια, είναι προτιμητέο να γράψουμεένα πρόβλημα επίλυσης γραμμικού συστήματος (βλ. ενότητα 3.1.1). Πιο α-ναλυτικά, γράφουμε τη σχέση της εξ. (3.7) σε μορφή επαναλήψεων με δεικτηk.

    xk+1 = xk − J−1(xk)f(xk) (3.8)

    θέτουμε

    s(xk) = −J−1(xk)f(xk) (3.9)

    το οποίο ισοδύναμα, αντί με χρήση του αντίστροφου του Ιακωβιανού J−1(xk),προκύπτει από την επίλυση του συστήματος:

    J(xk)s(xk) = −f(xk) (3.10)

    οπότε και δημιουργούμε το απαραίτητο διάνυσμα s(xk) και μπορούμε να γρά-ψουμε την εκτίμηση της λύση στο επόμενο βήμα ως:

    xk+1 = xk + s(xk). (3.11)

    Εδώ δίνεται σε κώδικα Groovy/Climax η επίλυση του συστήματος εξισώ-σεων

    f1(x1, x2) = exp(x1) + x2 − 1 = 0f2(x1, x2) = x21 + x22 − 4 = 0 (3.12)

    το οποίο μπορεί κανείς να βρει ως Παράδειγμα 2.4.4-1 στην [5].

    21

  • 1 n=22 x0=new Matrix (n , 1 )3 t o l =1.0e−124 Nmax=1005

    6 f={ x −>7 fmat=new Matrix (n , 1 )8 // code to d e f i n e fmat9 x1=x [ 0 , 0 ] ; x2=x [ 1 , 0 ]

    10 fmat [0 ,0 ]= exp ( x1 )+x2−1.011 fmat [1 ,0 ]= x1∗x1+x2∗x2−4.012 return fmat13 }14

    15 df={ x −>16 dfmat=new Matrix (n , n)17 // code to d e f i n e dfmat ( Jacobian )18 x1=x [ 0 , 0 ] ; x2=x [ 1 , 0 ]19 dfmat [0 ,0 ]= exp ( x1 ) ; dfmat [ 0 , 1 ]=1 . 020 dfmat [ 1 , 0 ]=2 .0∗ x1 ; dfmat [ 1 , 1 ]=2 .0∗ x221 return dfmat22 }23

    24 x0 [ 0 , 0 ]=1 . 0 ; x0 [1 ,0]=−1.725

    26 converge=fa l se27 i t e r=028

    29 fx=f ( x0 ) ; dfx=df ( x0 )30 p r i n t f ("%d: x= %8.6f and f(x)= %6.4e,%6.4e \n" , i t e r , x0 [ 0 , 0 ] , x0

    [ 1 , 0 ] , fx [ 0 , 0 ] , fx [ 1 , 0 ] )31

    32 while ( i t e r

  • ανεξάρτητες μεταβλητές.

    Μέθοδος Broyden

    Η μέθοδος Broyden2 για τα προβλήματα συστημάτων μη γραμμικών εξισώσεων,είναι το ανάλογο της μεθόδου της τέμνουσας (βλ. ενότητα 2.4) που είδαμε σταμονοδιάστατα προβλήματα εύρεσης της ρίζας μιας μη γραμμικής εξίσωσης.

    2https://en.wikipedia.org/wiki/Broyden’s_method

    23

  • 24

  • Κεφάλαιο 4

    Ελαχιστοποίηση καιμεγιστοποίηση συνάρτησης

    Η ενότητα αυτή θα μπορούσε να έχει τον πιο περιεκτικό τίτλο της βελτιστοποί-ησης.

    Τα προβλήματα ελαχιστοποίησης μπορούν να τεθούν ως [7], ‘ζητούνται οιτιμές των μεταβλητών απόφασης x που ελαχιστοποιούν την αντικειμενική συ-νάρτηση f(x) κάτω από ένα σύνολο περιορισμών οι οποίοι εκφράζονται ως σχέ-σεις ισότητας ή ανισότητας’.

    ελαχιστοποίηση τηςx

    f(x)

    κάτω από τις συνθήκες

    {gi(x) ≤ 0, i = 1, . . . ,mhj(x) = 0, j = 1, . . . , p.

    ενώ για η μεγιστοποίηση ακολουθεί ακριβώς τον ίδιο ορισμό, αν κανείς αλλάξειτη συνάρτηση f(x) με την αντίθετη της, δηλαδή την −f(x), οπότε και θακαταλήξει στο ταυτόσημο πρόβλημα,

    μεγιστοποίηση τηςx

    − f(x)

    κάτω από τις συνθήκες

    {gi(x) ≤ 0, i = 1, . . . ,mhj(x) = 0, j = 1, . . . , p.

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

    25

  • Σχήμα 4.1: Ακρότατα συνάρτησης σε ένα πεδίο [X1, X2]. Τα σημεία A,C καιE αποτελούν τοπικά μέγιστα. Τα σημεία B και F είναι τοπικά ελάχιστα. Τοκαθολικό μέγιστο βρίσκεται στο σημείο G το οποίο και όντας στο σύνορο τουχωρίου δεν απαιτείται μηδενισμός της παράγωγου της συνάρτησης. Το καθο-λικό ελάχιστο είναι στο σημείο D. Στο σημείο E οι παράγωγοι μεγαλύτερηςτης πρώτης τάξης θα είναι μηδενικές, μια συνθήκη στην οποία πολλοί αλγόριθ-μοι θα εύρισκαν δυσκολίες. Τα σημεία X,Y και Z εσωκλείουν (bracket) τοελάχιστο F , καθώς Y είναι μικρότερο από αμφότερα τα X και Z.

    Μια πρώτη κατηγοριοποίηση των προβλημάτων ελαχιστοποίησης (μεγιστο-ποίησης) είναι αυτή του διαχωρισμού σε αναζήτηση τοπικών ακρότατων και σεεκείνη της αναζήτησης καθολικών ακρότατων.

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

    Σε αυτό το εισαγωγικό κεφάλαιο θα παρουσιάσουμε κάποιες βασικές διαδι-κασίες και αλγορίθμους βελτιστοποίησης για μονοδιάστατα προβλήματα συναρ-τήσεων από τον IR στον IR απουσία περιορισμών. Τα προβλήματα βελτιστο-ποίησης με ισοτικούς ή ανισοτικούς περιορισμούς συνήθως αντιμετωπίζονται μεχρήση των πολλαπλασιαστών Lagrange.

    26

  • 4.1 Μέθοδος διχοτόμησης του διαστήματος

    Αλγόριθμος: Μέθοδος διχοτόμησης

    • Είσοδος: Συνάρτηση f(x) και [a, b], επίπεδο ακρίβειας �. Χρήσηπρώτης παραγώγου f ′(x).

    • Αρχικοποίηση: Θέσε i = 1.

    • Επαναλήψεις με αυξανόμενο i:

    1. Θέσε xi = (ai + bi)/2.

    2. Αν f ′(xi) = 0 ή αν |ai − bi| < �, πήγαινε στο βήμα 5.3. Αν f ′(xi) > 0, θέσε bi+1 = xi, ai+1 = ai και πήγαινε στο

    βήμα 1.

    4. Αν f ′(xi) < 0, θέσε ai+1 = xi, bi+1 = bi και πήγαινε στοβήμα 1.

    5. Παύση με x∗ = xi.

    Σημειώσεις:΄Αλλα κριτήρια παύσης (σύγκλισης) είναι δυνατό να επιλεχθούν,π.χ. |f(xi)| < �.

    Εδώ δίνεται σε απλό κώδικα Groovy/Climax η εύρεση του ελάχιστου τηςσυνάρτησης

    f(x) = x4 − 14x3 + 60x2 − 70x (4.1)

    στο διάστημα [0, 2].

    1 a=0; b=22 a1=a ; b1=b3 Nmax=304 t o l =1.0e−65 f={x −> x∗∗4−14∗x∗∗3+60∗x∗∗2−70∗x}6 df={x −> 4∗x∗∗3−3∗14∗x∗∗2+2∗60∗x−70}7 s o l =[ ]8 converge=fa l se9 i t e r=1

    10 while ( i t e r

  • 13 dfx=df ( x )14 s o l . add (x )15 p r i n t f ("%d: x= %12.8f and f(x)= %12.8e \n" , i t e r , x , fx )16 i f ( abs ( dfx )

  • Σχήμα 4.2: Διάγραμμα της αναζήτησης με την χρυσή τομή.

    να ισχύει αυτό θα πρέπει x4 = x1 + (x3 − x2). Συνεχίζει βέβαια να παραμένειτο ερώτημα για το που θα τοποθετηθεί το σημείο x2 σε σχέση με τα x1 και x3.Η απάντηση είναι ότι το x2 θα εντοπίζεται έτσι ώστε αν f(x4) = f4a να ισχύειη αναλογία,

    c

    a=a

    b

    ενώ αν f(x4) = f4b να ισχύει η αναλογία,

    c

    b− c=a

    b

    απαλείφοντας το c από τις δυο προηγούμενες εξισώσεις θα έχουμε,(b

    a

    )2− ba

    = 1φ= b

    a−−−→ φ2 − φ = 1

    με λύση την,

    φ =1 +√

    5

    2

    που είναι ο αριθμός της χρυσής αναλογίας. Οπότε η θέση του σημείου x2υπολογίζεται από τη σχέση,

    x2 =x3 + φx1

    1 + φ

    29

  • Ως συνθήκη τερματισμού προτείνεται η εξής παρακάτω,

    |x3 − x1| < �(|x2|+ |x4|)

    Εδώ δίνεται σε απλό κώδικα Groovy/Climax η εύρεση του ελάχιστου της συ-νάρτησης

    f(x) = x4 − 14x3 + 60x2 − 70x (4.2)

    στο διάστημα [0, 2].

    1 x1=0; x3=22 phi=(1.0+ sq r t ( 5 . 0 ) ) /2 .03 Nmax=304 t o l =1.0e−125 f={x−> x∗∗4−14∗x∗∗3+60∗x∗∗2−70∗x}6 s o l =[ ]7 converge=fa l se ; x=(x1+x3 ) /2 .08 i t e r=19 while ( i t e r

  • Κεφάλαιο 5

    Παρεμβολή

    Το πρόβλημα της παρεμβολής συνίσταται στην εύρεση της f(x) όταν γνω-ρίζουμε τιμές της συνάρτησης για κάποιες δεδομένες τιμές του ορίσματος x.Τα ζεύγη αυτά των δεδομένων τιμών θα συμβολίζονται ως

    (xi, f(xi)

    )για

    i = 1, 2, . . . , n. Τα σημεία xi δεν είναι σε καμιά περίπτωση απαραιτήτως ι-σαπέχοντα. Στο παρόν κεφάλαιο θα θεωρούμε ότι η f(x) είναι μια πολυωνυ-μική συνάρτηση και η αντίστοιχη παρεμβολή θα αποκαλείται και πολυωνυμικήπαρεμβολή.

    Σύμφωνα με το θεώρημα Weierstrass, μια συνεχής συνάρτηση f(x) στοπεδίο [a, b] μπορεί να προσεγγιστεί από ένα πολυώνυμο P (x) με οποιαδήποτεεπιθυμητή ακρίβεια �. Δηλαδή υπάρχει P (x) τέτοιο ώστε,

    |f(x)− P (x)| < �,∀x ∈ [a, b] (5.1)

    το παραπάνω θεώρημα βέβαια αν και αναφέρεται στην ύπαρξη του πολυωνύμουP (x) δεν μας προσδιορίζει τις σχέσεις κατασκευής και υπολογισμού του.

    Μια τέτοια πρώτη απάντηση μπορούμε να λάβουμε από το πολυώνυμο τουTaylor, και αντίστοιχα του Maclaurin (βλ. π.χ. στη Wikipedia1),

    f(x) ≈ Pn(x) = f(ξ) +f ′(ξ)

    1!(x− ξ) + f

    ′′(ξ)

    2!(x− ξ)2 + . . .+ f

    (n)(ξ)

    n!(x− ξ)n,

    όταν το σημείο ξ ανήκει στο πεδίο ορισμού της f . Αντίστοιχα όταν ξ = 0,

    f(x) ≈ Pn(x) = f(0) +f ′(0)

    1!x+

    f ′′(0)

    2!x2 + . . .+

    f (n)(0)

    n!xn.

    Είναι σημαντικό να επισημανθεί εδώ ότι η προσέγγιση είναι ακριβής μόνο γιατιμές του x πλησίον του ξ.

    1https://en.wikipedia.org/wiki/Taylor_series

    31

  • 5.1 Πολυώνυμα Lagrange

    Εστω x0, x1, . . . , xn ειναι n+ 1 διαφορετικα σημεια ενος διαστηματος [a, b] καιf(x) μια πραγματικη συναρτηση της οποιας ειναι γνωστε οι τιμες f(xi) για καθεi = 0, 1, . . . , n. Η πολυωνυμικη παερμβολη οριζεται απο ενα πολυωνυμο, εστωPn βαθμου ≤ n το οποιο διερχεται απο τα σημεια απο τα σημεια (xi, f(xi)),δηλαδη Pn(xi) = f(xi). Το πολυωνυμο θα δινεται απο τη σχεση,

    Pn(x) = l0(x)f(x0) + l1(x)f(x1) + . . .+ ln(x)f(xn)

    =

    n∑i=0

    li(x)f(xi) (5.2)

    οπου

    li(x) =(x− x0)(x− x1 . . . (x− xi−1)(x− xi+1) . . . (x− xn)

    (xi − x0)(xi − x1 . . . (xi − xi−1)(xi − xi+1) . . . (xi − xn)

    =∏

    0≤j≤n,j 6=i

    x− xjxi − xj

    (5.3)

    Για τα πολυώνυμα li(x) ισχύει η σχέση

    li(xj) = δij =

    {1, αν i = j

    0, αν i 6= j.(5.4)

    ΄Εστω τα ζεύγη2 δεδομένων που δίνονται στον πίνακα 5.1, να γίνει η προσέγ-

    Πίνακας 5.1: Δεδομένα για τα ζεύγη σημείων (x,f(xi))

    x 0 20 40 60 80 100f(x) 26.0 48.6 61.6 71.2 74.8 75.2

    γιση της τιμής της συνάρτησης f(x) στο σημείο xp=55 με χρήση πολυωνύμωνLagrange3.

    2Για το αντίστοιχο παράδειγμα σε Matlab/Octave, https://www.youtube.com/watch?v=NZfd-EuBYyo

    3Script at: https://eclass.teicrete.gr/modules/document/file.php/TA221/climax_files/lagrangepol.climax

    32

  • 1 x=[0 ,20 ,40 ,60 ,80 ,100 ]2 fx = [ 2 6 . 0 , 4 8 . 6 , 6 1 . 6 , 7 1 . 2 , 7 4 . 8 , 7 5 . 2 ]3 n=x . s i z e ( )−1 // should be , n

  • 11 }12

    13 ( 1 . . n ) . each{14 k=i t15 ( 0 . . ( n − k ) ) . each{16 i=k+i t ∗217 d i v d i f [ i ] [ k ]=( d i v d i f [ i −1] [ k−1]− d i v d i f [ i +1] [ k−1]) /( xtab [ i−k]−

    xtab [ i+k ] )18 }19 }20 /∗21 ∗ // p r in t d iv ided d i f f e r e n c e s t ab l e22 (0. .

  • τότε με χρήση των δεδομένων για τα ζεύγη σημείων (xi, f(xi)) = (xi, Pn(xi))μπορούμε να καταστρώσουμε τις πιο κάτω εξισώσεις.

    a0 + x0a1 + x20a2 + · · ·+ xn0an = f(x0)

    a0 + x1a1 + x21a2 + · · ·+ xn1an = f(x1)

    ...

    a0 + xna1 + x2na2 + · · ·+ xnnan = f(xn)

    Το οποίο σύστημα με τη βοήθεια των πινάκων μπορεί να γραφτεί ως:1 x0 x

    20 . . . x

    n0

    1 x1 x21 . . . x

    n1

    ...... . . .

    ... . . ....

    1 xn x2n . . . x

    nn

    ︸ ︷︷ ︸

    A

    a0a1...an

    ︸ ︷︷ ︸

    x

    =

    f(x0)f(x1)

    ...f(xn)

    ︸ ︷︷ ︸

    b

    από την επίλυση του οποίου μπορούμε να υπολογίσουμε το διάνυσμα x πουθα εμπεριέχει τους συντελεστές a0, a1, . . . , an και συνεπώς να καθορίσουμε τοπολυώνυμο Pn της εξ. (5.6).

    35

  • 36

  • Κεφάλαιο 6

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

    Η προσεγγιστική αριθμητική τιμή[5] του ορισμένου ολοκληρώματος,

    I(f) =

    ∫ baf(x) dx (6.1)

    χρησιμοποιείται κυρίως, όταν

    1. λόγω της πολύπλοκης μορφής του τύπου μιας συνάρτησης είναι δύσκολος,ή ακόμα και αδύνατος, ο θεωρητικός υπολογισμός του, και

    2. δεν είναι γνωστός ο τύπος της συνάρτησης, αλλά μόνο οι τιμές της σεορισμένα σημεία.

    6.1 Απλοί κανόνες ολοκλήρωσης

    Οι κανόνες αυτοί αριθμητικής ολοκλήρωσης ονομάζονται και Newton–Cotes.Ανάλογα με τον θεωρούμενο αριθμό σημείων παρεμβολής έχουμε τους παρακά-τω κανόνες.

    6.1.1 Κανόνας του ορθογωνίου

    ΄Εστω το ορισμένο ολοκλήρωμα

    I(f) =

    ∫ baf(x) dx (6.2)

    όπου η f(x) μια συνεχής συνάρτηση στο [a, b]. Στη γενικότερη περίπτωση όπουδεν δίνεται ρητά η αναλυτική μορφή της f(x), θεωρείται ότι θα είναι γνωστές οι

    37

  • τιμές της σε n + 1 διαφορετικά σημεία x0, x1, . . . , xn στο [a, b]. Η παρεμβολήτου Newton θα είναι,

    f(x) ≈Pn(x) = f [x0] + f [x0, x1](x− x0) + . . .+ f [x0, x1, . . . , xn](x− x0) · · · (x− xn−1) (6.3)

    Χρησιμοποιώντας ένα σημείο παρεμβολής, έστω το x0 τότε προκύπτει,

    f(x) ≈P0(x) = f [x0] = f(x0) (6.4)

    οπότε

    I(f) =

    ∫ baf(x) dx ≈ f(x0)

    ∫ badx = (b− a)f(x0) (6.5)

    που είναι γνωστό ως ο κανόνας του ορθογωνίου.Ανάλογα με τη θέση x0 διακρίνονται οι εξής περιπτώσεις:

    • για x0 = a, τότε I(f) =∫ ba f(x) dx ≈ (b− a)f(a),

    • για x0 = b, τότε I(f) =∫ ba f(x) dx ≈ (b− a)f(b),

    • για x0 = (b+ a)/2, τότε I(f) =∫ ba f(x) dx ≈ (b− a)f

    (a+b2

    ), που είναι

    γνωστός ως ο κανόνας του μέσου σημείου.

    1 Midpoint={f , a , b−>2 h=(b−a )3 x0=(a+b) /24 return h∗ f ( x0 )5 }

    6.1.2 Κανόνας του τραπεζίου

    Αν έχουμε δύο σημεία για την παρεμβολή (n = 1), οπότε

    f(x) ≈P1(x) = f(x0) + f [x0, x1](x− x0), (6.6)

    θέτοντας x0 = a, x1 = b και h = b− a

    I(f) ≈∫ baP1(x) dx = . . . =

    h

    2

    (f(a) + f(b)

    ). (6.7)

    που είναι γνωστό ως ο κανόνας του τραπεζίου.

    38

  • 1 Trapezo ida l={f , a , b−>2 h=(b−a )3 x0=a ; x1=b4 return h∗( f ( x0 )+f ( x1 ) ) /2 .05 }

    6.1.3 Κανόνας του Simpson

    Αν έχουμε τρία σημεία για την παρεμβολή (n = 2), οπότε

    f(x) ≈ P2(x) = f(x0) + f [x0, x1](x− x0)+ f [x0, x1, x2](x− x0)(x− x1), (6.8)

    θέτοντας x0 = a, x1 = a+b2 , x2 = b και h =b−a2

    I(f) ≈∫ baP2(x) dx = . . . =

    h

    3(f(x0) + 4f(x1) + f(x2)) . (6.9)

    που είναι γνωστό ως ο κανόνας του Simpson.

    1 Simpson={f , a , b−>2 h=(b−a ) /23 x0=a ; x1=(a+b) /2 ; x2=b4 return h∗( f ( x0 )+4∗ f ( x1 )+f ( x2 ) ) /3 .05 }

    6.1.4 Κανόνας του Simpson 3/8

    Για τέσσερα σημεία παρεμβολής (n = 3), θέτοντας x0 = a, x1 = 2a+b3 , x2 =(a+2b)

    3 , x3 = b και h =b−a8

    I(f) ≈∫ baP3(x) dx = . . . = h (f(x0) + 3f(x1) + 3f(x2) + f(x3)) . (6.10)

    που είναι γνωστό ως ο κανόνας των 3/8 του Simpson.

    1 Simpson3 8={f , a , b−>2 h=(b−a ) /83 x0=a ; x1=(2∗a+b) /3 ; x2=(a+2∗b) /3 ; x3=b4 return h∗( f ( x0 )+3∗ f ( x1 )+3∗ f ( x2 )+f ( x3 ) )5 }

    39

  • Αριθμητικό παράδειγμα

    Να υπολογιστεί με τους πιο πάνω κανόνες το ολοκλήρωμα∫ 1.20

    1√(1 + x2)

    dx (6.11)

    και αν δοθεί το απόλυτο λάθος για κάθε ένα από αυτούς.

    1 f ={1/ sq r t (1+ i t ∗∗2) }2 a=0.0; b=1.23 Ian=1.0159734 p r i n t l n ("---------------------------------------")5 p r i n t l n ("Rule Integral Approximation Error")6 p r i n t l n ("---------------------------------------")7 p r i n t l n "Midpoint "+Midpoint ( f , a , b )+" "+abs (Midpoint ( f , a , b )−Ian )8 p r i n t l n "Trapezoidal "+Trapezo ida l ( f , a , b )+" "+abs ( Trapezo ida l (

    f , a , b )−Ian )9 p r i n t l n "Simpson "+Simpson ( f , a , b )+" "+abs ( Simpson ( f , a , b )−Ian )

    10 p r i n t l n "Simpson 3/8 "+Simpson3 8 ( f , a , b )+" "+abs ( Simpson3 8 ( f , a, b )−Ian )

    11 p r i n t l n ("---------------------------------------")

    Αν εκτελέσουμε το πιο πάνω σκριπτ στο SDE θα λάβουμε ως έξοδο παρό-μοια με:

    ---------------------------------------Rule Integral Approximation Error---------------------------------------Midpoint 1.028991510855 0.0130185108550Trapezoidal 0.9841106397986 0.03186236020131Simpson 1.0140312205029 0.0019417794970688Simpson 3/8 1.0152331350974 7.398649025975E-4---------------------------------------

    6.2 Σύνθετοι κανόνες ολοκλήρωσης

    Για να αυξηθεί η ακρίβεια της αριθμητικής ολοκλήρωσης των απλών κανόνωνθα πρέπει κανείς να Θεωρήσει μεγαλύτερη τάξη παρεμβολής μια κατεύθυνσηη οποία δυσχεραίνει πολύ τη διαδικασία. ΄Ενας πολύ πιο απλός και άμεσοςτρόπος είναι ο διαμερισμός του διαστήματος ολοκλήρωσης [a, b] σε επιμέρουςυποδιαστήματα, ο υπολογισμός του ολοκληρώματος σε κάθε ένα από αυτά τα

    40

  • υποδιαστήματα και η πρόσθεση των τιμών σε κάθε ένα από τα διαστήματα αυτάμεταξύ τους.

    Αυτη τη διαδικασία έχουμε γράψει στο παρακάτω σκριπτ.

    1 f ={1/ sq r t (1+ i t ∗∗2) }2 a=0.0; b=1.23 Ian=1.0159734 num=105 s t epwi s e={I f−>6 va l =0.07 ( 1 . . num) . each{8 xs=a+( i t −1)∗(b−a ) /num; xe=xs+(b−a ) /num9 va l+=I f ( f , xs , xe )

    10 }11 return va l12 }13

    14 p r i n t l n ("---------------------------------------")15 p r i n t l n ("Rule Integral Approximation Error")16 p r i n t l n ("---------------------------------------")17 p r i n t l n "Midpoint "+stepwi s e (Midpoint )+" "+abs ( s t epwi s e (

    Midpoint )−Ian )18 p r i n t l n "Trapezoidal "+stepwi s e ( Trapezo ida l )+" "+abs ( s t epwi s e (

    Trapezo ida l )−Ian )19 p r i n t l n "Simpson "+stepwi s e ( Simpson )+" "+abs ( s t epwi s e ( Simpson )−

    Ian )20 p r i n t l n "Simpson 3/8 "+stepwi s e ( Simpson3 8 )+" "+abs ( s t epwi s e (

    Simpson3 8 )−Ian )21 p r i n t l n ("---------------------------------------")

    6.3 Κανόνας ολοκλήρωσης Gauss

    Υπό κατασκευή . . .

    41

  • 42

  • Κεφάλαιο 7

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

    Προσαρμογή από αντίστοιχες σημειώσεις1 της καθ. Χρυσούλας Τσόγκα για τομάθημα «ΕΜ 291/Μ236 – Αριθμητική Επίλυση Συνήθων Διαφορικών Εξισώ-σεων» του Εαρινού Εξαμήνου 2014-2015 στο τμήμα Μαθηματικών και Εφαρ-μοσμένων Μαθηματικών του Πανεπιστήμιου Κρήτης.

    7.1 Επίλυση προβλήματος αρχικών τιμών με τηνμέθοδο του Euler

    Σκοπός αυτού του εργαστηρίου είναι η παρουσίαση αριθμητικής επίλυσης γιαΠροβλήματα Αρχικών Τιμών (Π.Α.Τ.) με την μέθοδο του Euler. Το πρόβληματων αρχικών τιμών: {

    y′(t) = f(t, y), t ∈ [a, b]y(a) = ya

    (7.1)

    Το επόμενο βήμα μας είναι να προσπαθήσουμε να λύσουμε αριθμητικά τοΠ.Α.Τ. (7.1) με την μέθοδοEuler, η οποία δίνεται από τον τύπο

    yn+1 = yn + hf(tn, yn), n = 1, 2, . . . , N, (7.2)

    1http://users.tem.uoc.gr/˜tsogka/Courses/AESDE-spring2015/index.html

    43

  • όπου h = (b− a)/N το βήμα μας και yn η προσέγγιση της λύσης στη χρονικήστιγμή tn, όπου tn = t0 + nh.

    Για να υλοποιήσουμε την μέθοδο του Euler στην Climax, θα δημιουργή-σουμε ένα συναρτησιακό αντικείμενο (closure) που θα ονομάσουμε myeulerκαι προαιρετικά θα μπορούσαμε να το αποθηκεύσουμε σε ένα ξεχωριστό αρχεί-ο, π.χ. το myeuler.climax2, ο κώδικας του οποίου θα είναι όπως παρακάτω3.

    1 myeuler={a , b , y0 ,N, f−>2 h=(b−a ) /N as double3 y= [ ] ; ( 0 . .N) . each{y . add ( 0 . 0 ) }4 y [0 ]= y0 as double5 for (n in 1 . .N)y [ n]=y [ n−1]+h∗ f ( a+h∗(n−1) , y [ n−1]) as double6 return y7 }

    ΄Οπως βλέπουμε τα ορίσματα του συναρτησιακού αντικειμένου είναι το διά-στημα ορισμού [a, b] στο οποίο θα υπολογίσουμε τη λύση, η αρχική συνθήκηy0, ο αριθμός των βημάτων N και τέλος η συνάρτηση (ή και συναρτησιακό α-ντικείμενο) f . Στην γραμμή 2 του κώδικα καθορίζεται το βήμα h, στην γραμμή3 εκχωρούμε μια λίστα (διάταξη) στην μεταβλητή y και ορίζουμε την πρώτητιμή ίση με την αρχική τιμή (γραμμή 4) y[0] = y0, στην επαναληπτική δομήτης γραμμής 5 υλοποιείται η σχέση (7.2). Το συναρτησιακό αντικείμενο τέλος,επιστρέφει στη γραμμή 6, την διάταξη (ArrayList) y που περιέχει τις διακριτέςτιμές της προσεγγιστικής λύσης.

    7.1.1 Παράδειγμα πρώτο

    Θα προσπαθήσουμε τώρα να λύσουμε το παράδειγμα της παρακάτω εξίσωσηςσυνοδεία της αντίστοιχης αρχικής τιμής:{

    y′(t) = −y, t ∈ [0, T ]y(0) = 1.0,

    (7.3)

    το οποίο έχει αναλυτική λύση την y(t) = e−t. Για να υπολογίσουμε τιςπροσεγγίσεις της σχέσης (7.2), εκτελούμε την πιο κάτω δέσμη εντολών.

    2Το όνομα του αρχείου καθώς και η κατάληξη καθορίζονται αυθαίρετα.3Αξίζει να σημειωθεί εδώ ότι στον παραπάνω κώδικα θα μπορούσε να είχε παραληφθεί η

    οδηγία "as double", σε αυτή όμως την περίπτωση ο προκαθορισμένος τύπος μεταβλητήςθα ήταν ο BigDecimal αντί του πιο αποδοτικού αριθμητικού τύπου double, και ως συνέπειαθα ήταν πιθανό να εμφανιστούν αριθμητικά προβλήματα κατά την εκτέλεση.

    44

  • 1 t0=0.0 // de f i n e i n i t i a l time2 T=2.0 // de f i n e f i n a l time3 y0=1.0 // i n i t i a l va lue4 N=16 // number o f s t ep s5 exact={t−>exp(−t ) } // exact s o l u t i o n6 f={t , y−>−y} // rhs7 approx=myeuler ( t0 ,T, y0 ,N, f ) // approximate s o l u t i o n returned by

    myeuler8 h=(T−t0 ) /N as double9 ( 0 . .N) . each{ p r i n t l n exact ( t0+i t ∗h)+" "+approx [ i t ]} // p r in t

    approximation r e s u l t s toge the r with exact s o l u t i o n

    Εναλλακτικά,θα μπορούσαμε να τρέξουμε την συνάρτηση μας χωρίς να α-ναθέσουμε τα ορίσματα της σε κάποια μεταβλητή και θα την καλούσαμε όπωςπαρακάτω.

    approx=myeuler(0.0,2.0,1.0,16,{t,y->-y})

    7.1.2 Σφάλμα μεθόδου και τάξη ακρίβειας

    Υπάρχουν δύο τρόποι για να εξετάσουμε το πόσο καλή είναι η προσεγγιστικήμας λύση. Ο πρώτος τρόπος είναι η ποιοτική εξέταση, όπου κανείς μπορεί ναπαραθέσει τα αποτελέσματα της αναλυτικής λύσης με αυτά της προσεγγιστικήςκαι να τα συγκρίνει. Σε αυτό θα βοηθούσε πολύ η δημιουργία ενός κοινούδιαγράμματος στο πεδίο ορισμούυ. Στην περίπτωση της Climax αυτό είναιεφικτό με το αντικείμενο thePlot που είναι ένα προκαθορισμένο στιγμιότυποτης κλάσης PlotFrame. Οι συναρτήσεις που σχεδιάζονται σε ένα PlotFrameείναι στιγμιότυπα της κλάσης plotfunction.

    11 thePlot . c l e a r ( )12

    13 fp=new p l o t f un c t i on (h , approx )14 fp . setMarker ( true )15 fp . setName ("Euler 1st order")16 thePlot . addFunction ( fp )17

    18 fp=new p l o t f un c t i on ( l i n s p a c e (0 ,N∗h ,N+1) , exact as DoubleFunction )19 fp . setMarker ( true )20 fp . se tMarkerSty le (1 )21 fp . setName ("Exact solution")22 thePlot . addFunction ( fp )23

    24 // −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

    45

  • Σχήμα 7.1: Προσεγγιστική λύση με τη μέθοδο Euler (κόκκινη γραμμή) μαζίμε την αναλυτική λύση (μπλε γραμμή) για την εξίσωση (7.3), για N = 16.

    25 thePlot . setAutoColor ( true )26 thePlot . makeLegend ( )27 thePlot . xLabel ("t")28 thePlot . yLabel ("y(t)")29 // −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−30 thePlot . show ( )

    Το αποτέλεσμα της ομάδας των παραπάνω εντολών είναι το διάγραμμα πουφαίνεται στο Σχήμα 7.1

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

    E = |yN − y(tN )|.

    Αυτό που πρέπει να προσέξουμε, είναι ότι η γραφική παράσταση και το σφάλμαπου υπολογίσαμε, έγιναν για ένα συγκεκριμένο αριθμό σημείων . . .

    46

  • 7.2 Μέθοδος του Euler δεύτερης τάξης

    Στο επόμενο βήμα μας είναι να προσπαθήσουμε να λύσουμε αριθμητικά τοΠ.Α.Τ. (7.1) με την μέθοδοEuler δεύτερης τάξης, η οποία δίνεται από τοντύπο

    yn+1 = yn + h

    (f(tn, yn) +

    h

    2f ′(tn, yn)

    ), n = 1, 2, . . . , N, (7.4)

    όπου h = (b− a)/N το βήμα μας και yn η προσέγγιση της λύσης στη χρονικήστιγμή tn, όπου tn = t0 + nh.

    Παρόμοια του myeuler θα δημιουργήσουμε το συναρτησιακό αντικείμενοmyeuler2nd

    1 myeuler2nd={a , b , y0 ,N, f , df−>2 h=(b−a ) /N as double3 y= [ ] ; ( 0 . .N) . each{y . add ( 0 . 0 ) }4 y [0 ]= y0 as double5 for (n in 1 . .N) {6 xp=a+h∗(n−1)7 y [ n]=y [ n−1]+h∗( f (xp , y [ n−1])+h∗df (xp , y [ n−1]) /2 . 0 ) as double8 }9 return y

    10 }

    7.3 Μέθοδοι Runge-Kutta

    Στη μέθοδο Runge-Kutta δεύτερης τάξης (ή αλλιώς βελτιωμένη Euler μέθοδο)σε κάθε βήμα υπολογίζεται πρώτα μια βοηθητική τιμή . . .

    1 myrungekutta2nd={a , b , y0 ,N, f−>2 h=(b−a ) /N as double3 y=[ ] ; ( 0 . .N) . each{y . add ( 0 . 0 ) }4 y [0 ]= y0 as double5 for (n in 1 . .N) {6 xp=a+h∗(n−1)7 ya=y [ n−1]+h∗ f ( xp , y [ n−1]) as double8 y [ n]=y [ n−1]+h/2∗( f ( xp , y [ n−1])+f (xp , ya ) ) as double9 }

    10 return y11 }

    47

  • Τελος στη μεθοδο Runge-Kutta τέταρτης τάξης σε κάθε βήμα . . .

    1 myrungekutta4th={a , b , y0 ,N, f−>2 h=(b−a ) /N as double3 y=[ ] ; ( 0 . .N) . each{y . add ( 0 . 0 ) }4 y [0 ]= y0 as double5 for (n in 1 . .N) {6 xn=a+h∗n7 xp=a+h∗(n−1)8 k1=h∗ f ( xp , y [ n−1]) as double9 k2=h∗ f ( xp+h/2 , y [ n−1]+k1 /2) as double

    10 k3=h∗ f ( xp+h/2 , y [ n−1]+k2 /2) as double11 k4=h∗ f ( xn , y [ n−1]+k3 ) as double12 y [ n]=y [ n−1]+1/6∗(k1+2∗k2+2∗k3+k4 ) as double13 }14 return y15 }

    7.3.1 Παράδειγμα δεύτερο

    Θα προσπαθήσουμε τώρα να λύσουμε το παράδειγμα της παρακάτω εξίσωσηςσυνοδεία της αντίστοιχης αρχικής τιμής:{

    y′(x) = 1/x2 − y/x− y2, x ∈ [1, 2]y(1) = −1.0,

    (7.5)

    το οποίο έχει αναλυτική λύση την y(x) = −1/x.

    1 a=1.0 // d e f i n e i n i t i a l time2 b=2.0 // de f i n e f i n a l time3 y0=−1.0 // i n i t i a l va lue4 N=16 // number o f s t ep s5 exact={x−>−1/x} // exact s o l u t i o n6 f={x , y−>1/x∗∗2−y/x−y∗∗2} // rhs7 df={x , y−>−2/x∗∗3+y/x−(1/x+2∗y ) ∗(1/x∗∗2−y/x−y∗∗2) }8 approx=myeuler ( a , b , y0 ,N, f ) // approximate s o l u t i o n returned by

    myeuler9 approx2nd=myeuler2nd (a , b , y0 ,N, f , d f ) // approximate s o l u t i o n

    returned by myeuler2nd10 ( 0 . .N) . each{ p r i n t l n exact ( a+i t ∗(b−a ) /N)+" "+approx [ i t ]+" "+

    approx2nd [ i t ]} // p r in t approximation r e s u l t s toge the r withexact s o l u t i o n

    48

  • 7.4 Συστήματα διαφορικών εξισώσεων 1ης τά-ξης

    Σκοπός αυτής της ενότητας είναι η παρουσίαση αριθμητικής επίλυσης συστη-μάτων διαφορικών εξισώσεων (Σ.Δ.Ε.) με χρήση της Climax στο περιβάλλονSDE αξιοποιώντας τον μεταγλωττιστή της Groovy .

    ΄Ενα Σ.Δ.Ε. γράφεται ως εξής: ΄Εστω m ∈ N, F : [a, b] × Rm → Rm καιy0 ∈ Rm. Ζητείται συνάρτηση y : [a, b]× Rm που να ικανοποιεί{

    y′(t) = f(t, y(t)), t ∈ [a, b]y(a) = y0

    (7.6)

    ένα τέτοιο σύστημα λύνεται με αντίστοιχο τρόπο όπως στην περίπτωση τωνβαθμωτών συναρτήσεων, οπότε η μέθοδος Euler σε αυτή τη περίπτωση γράφε-ται:

    yn+1(k) = yn(k) + hf(t

    n, yn(k)), n = 0, 2, . . . , N, k = 0, 2, . . . ,m (7.7)

    όπου h = (b−a)/N το βήμα μας και yn(k) η προσέγγιση της λύσης της k-ιοστήςσυνιστώσας στη χρονική στιγμή tn, όπου tn = t0 + nh.

    Τέτοια συστήματα προκύπτουν πολλές φορές όταν προσπαθούμε να λύσου-με Σ.Δ.Ε. υψηλότερης τάξης την οποία γράφουμε ισοδύναμα ως ένα σύστημα1ης τάξης. ΄Ενα χαρακτηριστικό παράδειγμα είναι το απλό εκκρεμές που θαπαρουσιάσουμε παρακάτω.

    7.5 Μετατροπή δευτεροβάθμιας εξίσωσης σε σύ-στημα πρώτου βαθμού (εξίσωση για το α-πλό εκκρεμές).

    ΄Ενα απλό εκκρεμές αποτελείται από σημειακή μάζα στο άκρο μιας ράβδου μή-κους L που στηρίζεται σε κάποιο καρφί (χωρίς τριβή). Αν η βαρύτητα είναι ημόνη δύναμη που ενεργεί τότε η ταλάντωση του εκκρεμούς διαμορφώνεται απότην εξίσωση,

    d2θ

    dt2= − g

    Lsin(θ) (7.8)

    όπου θ είναι η γωνιακή θέση της ράβδου, με θ = 0 αν η ράβδος κρέμεται κάτωαπό το καρφί και θ = π αν η ράβδος βρίσκεται ακριβώς πάνω από το καρφί.

    49

  • ΄Εστω επιπλέον ότι L = 50cm και g = 9.81m/s2. Οι αρχικές συνθήκες είναι

    θ(0) = θ0, καιdθ

    dt(0) = 0. (7.9)

    Εάν η αρχική γωνία δεν είναι πολύ μεγάλη, τότε η προσέγγιση sin(θ) = θμπορεί να χρησιμοποιηθεί και οδηγεί στο γραμμικό μοντέλο του ταλαντωτή

    d2θ

    dt2= − g

    Lθ (7.10)

    το οποίο και λύνεται εύκολα αναλυτικά για να προκύψει

    θ(t) = θ0 cos(t√g/L). (7.11)

    Η εξίσωση (7.10) μπορεί να γραφτεί ως σύστημα 1ης τάξης κάνοντας την έξηςαλλαγή μεταβλητών: y1 = θ και y2 = dθdt , οπότε και προκύπτει το σύστημα

    dy1dt

    = y2,

    dy2dt

    = − gLy1,

    (7.12)

    ή αλλιώς

    dy

    dt= Ay με y =

    (y1y2

    )και A =

    (0 1− gL 0

    ). (7.13)

    7.6 Υλοποίηση της μεθόδου Euler για συστή-ματα

    Παίρνοντας αφορμή από το παραπάνω παράδειγμα θα προσπαθήσουμε να υλο-ποιήσουμε με τη βοήθεια της Climax τη μέθοδο Euler στο σύστημα (7.13).Ξεκινάμε φτιάχνοντας ένα συναρτησιακό αντικείμενο, το οποίο θα μπορούσε ναείναι μέσα σε ένα ξεχωριστό αρχείο, που θα περιέχει τον παρακάτω κώδικα.

    1 myeuler={a , b , y0 ,N, f1 , f2−>2 h=(b−a ) /N as double3 y = new double [ 2 ] [N+1]4 y [ 0 ] [ 0 ]= y0 [ 0 ]5 y [ 1 ] [ 0 ]= y0 [ 1 ]6 for (n in 1 . .N) {7 tp=a+h∗(n−1)

    50

  • 8 y [ 0 ] [ n]=y [ 0 ] [ n−1]+h∗ f 1 ( tp , y [ 0 ] [ n−1] , y [ 1 ] [ n−1])9 y [ 1 ] [ n]=y [ 1 ] [ n−1]+h∗ f 2 ( tp , y [ 0 ] [ n−1] , y [ 1 ] [ n−1])

    10 }11 return y12 }

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

    1 exac t th={t , th0−> L=0.5; g=9.81; return th0∗ cos ( sq r t ( g/L) ∗ t ) }2 e x a c t t h t={t , th0−> L=0.5; g=9.81; return −th0∗ s q r t ( g/L) ∗ s i n (

    sq r t ( g/L) ∗ t ) }3

    4 f 1={t , y1 , y2−>5 L=0.5; g=9.816 return y27 }8

    9 f 2={t , y1 , y2−>10 L=0.5; g=9.8111 return −g∗y1/L12 }13

    14 th0=PI /6 .015 y0= new double [ 2 ]16 y0 [0 ]= th017 y0 [ 1 ]=0 . 018

    19 T=5∗1.418520 t0=0.021 N=51222

    23 approx=myeuler ( t0 ,T, y0 ,N, f1 , f 2 ) // approximate s o l u t i o n returnedby myeuler

    24 h=(T−t0 ) /N as double25 ( 0 . .N) . each{ p r i n t l n exac t th ( t0+i t ∗h , th0 )+" "+approx [ 0 ] [ i t ]}26 }

    Να σημειώσουμε εδώ πως παρόλο που υποβαθμίσαμε την δεύτερης τάξηςεξίσωση σε ένα σύστημα δύο εξισώσεων πρώτης τάξης, η λύση που ζητάμεείναι αυτό που αντιστοιχεί στην πρώτη στήλη του διανύσματος y ή, αντίστοιχα,το y1 όπως έχει δηλωθεί στο σύστημα (7.13).

    Για τη δημιουργία του διαγράμματος του που φαίνεται στο Σχήμα 7.2, χρη-σιμοποιούμε τον πιο κάτω κώδικα.

    51

  • 1 thePlot . c l e a r ( )2 approx1 = [ ] ; ( 0 . . (N−1) ) . each{approx1 . add ( approx [ 0 ] [ i t ] ) }3 fp=new p l o t f un c t i on (h , approx1 )4 fp . setMarker ( true )5 fp . setName ("Euler 1st order")6 thePlot . addFunction ( fp )7

    8 exact thp = [ ] ; ( 0 . . (N−1) ) . each{ exact thp . add ( exac t th ( t0+i t ∗h , th0) ) }

    9 fp=new p l o t f un c t i on (h , exact thp )10 fp . setMarker ( true )11 fp . se tMarkerSty le (1 )12 fp . setName ("Exact solution")13 thePlot . addFunction ( fp )14

    15 // −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−16 thePlot . setAutoColor ( true )17 thePlot . makeLegend ( )18 thePlot . xLabel ("t")19 thePlot . yLabel ("y(t)")20 // −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−21 thePlot . show ( )

    7.7 Διάγραμμα φάσης

    Για τη δημιουργία του διαγράμματος (φάσης) που φαίνεται στο Σχήμα 7.3,χρησιμοποιούμε τον πιο κάτω κώδικα.

    1 thePlot . c l e a r ( )2 approx0 = [ ] ; ( 0 . . (N−1) ) . each{approx0 . add ( approx [ 0 ] [ i t ] ) }3 approx1 = [ ] ; ( 0 . . (N−1) ) . each{approx1 . add ( approx [ 1 ] [ i t ] ) }4 fp=new p l o t f un c t i on ( approx0 , approx1 )5 fp . setMarker ( true )6 fp . setName ("Euler 1st order")7 thePlot . addFunction ( fp )8

    9 exact thp = [ ] ; ( 0 . . (N−1) ) . each{ exact thp . add ( exac t th ( t0+i t ∗h , th0) ) }

    10 exac t th tp = [ ] ; ( 0 . . (N−1) ) . each{ exac t th tp . add ( e x a c t t h t ( t0+i t∗h , th0 ) ) }

    11 fp=new p l o t f un c t i on ( exact thp , exa c t th tp )12 fp . setMarker ( true )13 fp . se tMarkerSty le (1 )14 fp . setName ("Exact solution")

    52

  • Σχήμα 7.2: Προσεγγιστική λύση με τη μέθοδο Euler (κόκκινη γραμμή) μαζίμε την αναλυτική λύση (μπλε γραμμή) για την εξίσωση (7.13), για N = 512.

    53

  • Σχήμα 7.3: Διάγραμμα φάσης της λύσης με τη μέθοδο Euler (κόκκινη γραμμή)μαζί με την αναλυτική λύση (μπλε γραμμή) για την εξίσωση (7.13), για N =512.

    15 thePlot . addFunction ( fp )16

    17 // −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−18 thePlot . setAutoColo