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

Σχετικά έγγραφα
Πεπερασμένες Διαφορές.

Πρόβλημα δύο σημείων. Κεφάλαιο Διακριτοποίηση

ΜΑΣ 473/673: Μέθοδοι Πεπερασμένων Στοιχείων

MEM 253. Αριθμητική Λύση ΜΔΕ * * *

11 ΣΥΝΗΘΕΙΣ ΔΙΑΦΟΡΙΚΕΣ ΕΞΙΣΩΣΕΙΣ

Αριθμητικές Μέθοδοι σε Προγραμματιστικό Περιβάλλον (Εργαστήριο 5)

Βασικά στοιχεία στο Matlab

Κεφάλαιο 0: Εισαγωγή

ΣΥΝΗΘΕΙΣ ΔΙΑΦΟΡΙΚΕΣ ΕΞΙΣΩΣΕΙΣ ΣΤΗ MATLAB

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

Αριθμητική Ανάλυση και Εφαρμογές

Τυπικές χρήσεις της Matlab

QR είναι ˆx τότε x ˆx. 10 ρ. Ποιά είναι η τιµή του ρ και γιατί (σύντοµη εξήγηση). P = [X. 0, X,..., X. (n 1), X. n] a(n + 1 : 1 : 1)

Εργαστήρια Αριθμητικής Ανάλυσης Ι. 7 ο Εργαστήριο. Διανύσματα-Πίνακες 2 ο Μέρος

4. Παραγώγιση πεπερασμένων διαφορών Σειρά Taylor Πολυωνυμική παρεμβολή

Πεπερασμένες διαφορές για την ελλειπτική εξίσωση στις δύο διαστάσεις

Αριθμητική Επίλυση Συνήθων Διαφορίκών Εξισώσεων 3ο Εργαστήριο 27/03/2015 1

Εργαστήρια Αριθμητικής Ανάλυσης Ι. 9 ο Εργαστήριο. Απαλοιφή Gauss με μερική οδήγηση - Παρεμβολη

Μαθηµατικοί Υπολογισµοί στην R

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ - ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΩΝ ΜΑΘΗΜΑΤΙΚΩΝ ΕΙΣΑΓΩΓΙΚΕΣ ΜΕΤΑΠΤΥΧΙΑΚΕΣ ΕΞΕΤΑΣΕΙΣ 26 ΙΟΥΛΙΟΥ 2009 ΕΥΤΕΡΟ ΜΕΡΟΣ :

Αριθμητική Ανάλυση & Εφαρμογές

Συνήθεις διαφορικές εξισώσεις προβλήματα οριακών τιμών

MEM 253. Αριθμητική Λύση ΜΔΕ * * *

4. Παραγώγιση πεπερασμένων διαφορών Σειρά Taylor Πολυωνυμική παρεμβολή

Συστήματα Αναμονής (Queuing Systems)

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ

Είναι γνωστό ότι η δύναμη που ασκείται σε ένα ελατήριο και ονομάζεται δύναμη επαναφοράς δίνεται από τη σχέση : F = kx (3.1)

ημιουργία και διαχείριση πινάκων

Μαθηματική Εισαγωγή Συναρτήσεις

Μαθηματική Εισαγωγή Συναρτήσεις

Αριθμητική Ανάλυση και Εφαρμογές

Matrix Algorithms. Παρουσίαση στα πλαίσια του μαθήματος «Παράλληλοι. Αλγόριθμοι» Γ. Καούρη Β. Μήτσου

5269: Υπολογιστικές Μέθοδοι για Μηχανικούς Συστήματα Γραμμικών Αλγεβρικών Εξισώσεων

5269: Υπολογιστικές Μέθοδοι για Μηχανικούς Συστήματα Γραμμικών Αλγεβρικών Εξισώσεων

Μέθοδοι μονοδιάστατης ελαχιστοποίησης

Εισαγωγή στη Matlab Εισαγωγή στην Αριθμητική Ανάλυση Διδάσκων: Γεώργιος Ακρίβης Βοηθός: Δημήτριος Ζαβαντής

Matrix Algorithms. Παρουσίαση στα πλαίσια του μαθήματος «Παράλληλοι Αλγόριθμοι» Γ. Καούρη Β. Μήτσου

Κεφάλαιο 4: Στοιχεία της εκδοχής hp της ΜΠΣ στις 2- διαστάσεις

Εργαστήρια Αριθμητικής Ανάλυσης Ι. 4 ο Εργαστήριο. Διανύσματα-Πίνακες 1 ο Μέρος

Συνέλιξη Κρουστική απόκριση

Μέθοδοι μονοδιάστατης ελαχιστοποίησης

Αριθμητικές Μέθοδοι σε Προγραμματιστικό Περιβάλλον

Εισαγωγή στο MATLAB. Κολοβού Αθανασία, ΕΔΙΠ,

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

ΕΙΣΑΓΩΓΗ ΣΤΟ MATHLAB Α ΜΕΡΟΣ

Μαθηματικά. Ενότητα 2: Διαφορικός Λογισμός. Σαριαννίδης Νικόλαος Τμήμα Διοίκησης Επιχειρήσεων (Κοζάνη)

Ρητή μετατροπή αριθμητικής τιμής σε άλλο τύπο. Τι θα τυπωθεί στον παρακάτω κώδικα;

Αριθμητική εύρεση ριζών μη γραμμικών εξισώσεων

ΑΡΙΘΜΗΤΙΚΕΣ ΜΕΘΟΔΟΙ ΓΙΑ ΠΡΟΒΛΗΜΑΤΑ ΜΗΧΑΝΙΚΗΣ ΕΦΑΡΜΟΓΕΣ ΜΕ ΧΡΗΣΗ MATLAB ΔΕΥΤΕΡΗ ΕΚΔΟΣΗ [ΒΕΛΤΙΩΜΕΝΗ ΚΑΙ ΕΠΑΥΞΗΜΕΝΗ]

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Aριθμητική Ανάλυση, 4 ο Εξάμηνο Θ. Σ. Παπαθεοδώρου

1 Αριθμητική κινητής υποδιαστολής και σφάλματα στρογγύλευσης

Αριθμητική παραγώγιση εκφράσεις πεπερασμένων διαφορών

ΜΑΣ 371: Αριθμητική Ανάλυση ΙI ΑΣΚΗΣΕΙΣ. 1. Να βρεθεί το πολυώνυμο Lagrange για τα σημεία (0, 1), (1, 2) και (4, 2).

ΓΡΑΜΜΙΚΑ ΣΥΣΤΗΜΑΤΑ ΜΗ ΓΡΑΜΜΙΚΑ ΣΥΣΤΗΜΑΤΑ ΣΥΝΑΡΤΗΣΕΙΣ ΜΟΝΟΤΟΝΙΑ-ΑΚΡΟΤΑΤΑ-ΣΥΜΜΕΤΡΙΕΣ ΣΥΝΑΡΤΗΣΗΣ

Αριθμητικές Μέθοδοι σε Προγραμματιστικό Περιβάλλον (Εργαστήριο 6)

Αριθμητική Ανάλυση και Εφαρμογές

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΣΤΑΤΙΣΤΙΚΗ ΤΩΝ ΕΠΙΧΕΙΡΗΣΕΩΝ. Κεφάλαιο 8. Συνεχείς Κατανομές Πιθανοτήτων


Βασίλειος Μαχαιράς Πολιτικός Μηχανικός Ph.D.

Αριθμητική Ολοκλήρωση της Εξίσωσης Κίνησης

ΜΕΛΕΤΗ ΤΩΝ ΓΡΑΦΙΚΩΝ ΠΑΡΑΣΤΑΣΕΩΝ ΤΗΣ ΚΙΝΗΜΑΤΙΚΗΣ. Κίνηση Εξίσωση της α Εξίσωση της U Εξίσωση της Δx Ευθύγραμμη Ομαλή

Εργαστήριο Μαθηματικής Ανάλυσης Ι. Εισαγωγή στη Matlab Βασικές Συναρτήσεις-Γραφικές παραστάσεις. Πανεπιστήμιο Θεσσαλίας. Σχολή Θετικών Επιστημών

ΜΕΘΟΔΟΣ ΕΛΑΧΙΣΤΩΝ ΤΕΤΡΑΓΩΝΩΝ

2.0 ΔΙΑΝΥΣΜΑΤΙΚΟΙ ΧΩΡΟΙ ΚΑΙ ΓΡΑΜΜΙΚΑ ΣΥΣΤΗΜΑΤΑ

ΧΡΟΝΙΚΗ ΟΛΟΚΛΗΡΩΣΗ. Για την επίλυση χρονομεταβαλλόμενων προβλημάτων η διακριτοποίηση στο χώρο γίνεται με πεπερασμένα στοιχεία και είναι της μορφής:

1 η Εργαστηριακή Άσκηση MATLAB Εισαγωγή

Συναρτήσεις Θεωρία Ορισμοί - Παρατηρήσεις

f x και τέσσερα ζευγάρια σημείων

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

Κεφ. 6Β: Συνήθεις διαφορικές εξισώσεις (ΣΔΕ) - προβλήματα αρχικών τιμών

Εφαρμοσμένα Μαθηματικά 3η εργαστηριακή άσκηση

(a 1, b 1 ) (a 2, b 2 ) = (a 1 a 2, b 1 b 2 ).

1 of 79 ΘΕΜΑ 2. Δίνεται η συνάρτηση f(x) = x 2 4x + 5, x R

Κεφ. 7: Συνήθεις διαφορικές εξισώσεις (ΣΔΕ) - προβλήματα αρχικών τιμών

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

Περιεχόμενα. Κεφάλαιο 1 ΣΥΣΤΗΜΑΤΑ ΣΥΝΤΕΤΑΓΜΕΝΩΝ ΣΕ ΜΙΑ ΕΥΘΕΙΑ Οι συντεταγμένες ενός σημείου Απόλυτη τιμή...14

A Τελική Εξέταση του μαθήματος «Αριθμητική Ανάλυση» Σχολή Θετικών Επιστημών, Τμήμα Μαθηματικών, Πανεπιστήμιο Αιγαίου

Λογικός τύπος Τελεστές σύγκρισης Λογικοί τελεστές Εντολές επιλογής Εμβέλεια Μαθηματικές συναρτήσεις Μιγαδικός τύπος ΔΕΥΤΕΡΗ ΔΙΑΛΕΞΗ

ΓΡΑΜΜΙΚΗ ΑΛΓΕΒΡΑ (Εξ. Ιουνίου - 02/07/08) ΕΠΙΛΕΓΜΕΝΕΣ ΑΠΑΝΤΗΣΕΙΣ

Εισαγωγή στην Αριθμητική Ανάλυση

1 Επανάληψη εννοιών από τον Απειροστικό Λογισμό

Αριθμητικές Μέθοδοι σε Προγραμματιστικό Περιβάλλον

ΤΟΠΙΚΟ ΜΟΝΤΕΛΟ ΠΕΠΕΡΑΣΜΕΝΩΝ ΣΤΟΙΧΕΙΩΝ

ΜΑΘΗΜΑΤΑ ΜΑΘΗΜΑΤΙΚΑ ΘΕΤΙΚΟΥ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ Β ΛΥΚΕΙΟΥ

Γραμμική Άλγεβρα και Μαθηματικός Λογισμός για Οικονομικά και Επιχειρησιακά Προβλήματα

Κεφάλαιο 2. Μέθοδος πεπερασµένων διαφορών προβλήµατα οριακών τιµών µε Σ Ε

Μάθημα 3 ο a. Τυχαία Μεταβλητή-Έννοιες και Ορισμοί

Επιστηµονικός Υπολογισµός Ι - Πρώτη εργαστηριακή άσκηση

Π Κ Τ Μ Ε Μ Λύσεις των ασκήσεων

Διάλεξη 1 Βασικές έννοιες

Μαρία Λουκά. Εργαστήριο Matlab. Αριθμητικός υπολογισμός ιδιοτιμών και ιδιοδιανυσμάτων. Τμήμα Πληροφορικής και Τηλεπικοινωνιών.

ΜΑΣ 473: Μέθοδοι Πεπερασμένων Στοιχείων Χειμερινό Εξάμηνο 2017

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

ΜΕΜ251 Αριθμητική Ανάλυση

ΠΛΗΡΟΦΟΡΙΚΗ Ι (MATLAB) Ενότητα 5

21. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 4 - ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΜΕ ΤΟ BYOB BYOB. Αλγόριθμος Διαδικασία Παράμετροι

Σ ΤΑΤ Ι Σ Τ Ι Κ Η. Statisticum collegium iv

Αριθμητικές Μέθοδοι σε Προγραμματιστικό Περιβάλλον

Pr(10 X 15) = Pr(15 X 20) = 1/2, (10.2)

Transcript:

Αριθμητική Επίλυση Μερικών Διαφορίκών Εξισώσεων ο Εργαστήριο 9 Οκτωβρίου 5 Πεπερασμένες Διαφορές Εστω το πρόβλημα συνοριακών τιμών { u (x)+q(x)u(x) = f(x), x [a,b] u(a) = u(b) = () όπου q(x) γιακάθε x [a,b]. Θεωρούμεομοιόμορφοδιαμερισμότουδιαστήματος [a,b]με βήμα h = (b a)/n,τασημεία x i τουοποίουδίνονταιαπότησχέση x i = a+(i )h, i =,,...,N +, όπουξεκινάμετηναρίθμησηαπόκαιόχιαπό,γιατίέχουμευπ όψιντηνυλοποίησητηςμεθόδου στο Matlab. Σκοπός μας είναι να υλοποιήσουμε μία αριθμητική μέθοδο η οποία να υπολογίζει μία προσεγγιστικήλύσητης()στασημεία x i τηςδιαμέρισης,τιςοποίεςθασυμβολίσουμεμε U i,όπου U i u(x i ), i =,...,N +. Η μέθοδος που θα χρησιμοποιήσουμε εδώ για τον υπολογισμό της προσεγγιστικής λύσης ονομάζεται μέθοδος πεπερασμένων διαφορών και βασίζεται στην προσέγγιση της παραγώγου από πηλίκα διαφορών, τα οποία προέρχονται από τα αναπτύγματα Taylor. Μια προσέγγιση της πρώτης παραγώγουτης uστοσημείο x i,είναιη u (x i ) u( ) ( x i + h u xi ) h, () h η οποία είναι μία προσέγγιση βασισμένη στις εξισώσεις κεντρικών διαφορών. Χρησιμοποιώντας την ίδια τεχνική όπως στην(), μια προσέγγιση της δεύτερης παραγώγου με τη χρήση κεντρικών διαφορών είναι η u (x i ) u ( x i + ) ( ) h u x i h. (3) h

Με αντικατάσταση και λίγες πράξεις εύκολα επιβεβαιώνουμε ότι η δεύτερη παράγωγος μπορεί να εκφραστεί συναρτήσει της u ως u (x i ) u(x i +h) u(x i )+u(x i h) h = u(x i+) u(x i )+u(x i ) h (4) Ετσιλοιπόν, γιαένασημείο x i, i =,...,N, μπορούμενααντικαταστήσουμετονόροτης δεύτερης παραγώγου στην εξίσωση() με την έκφραση που δίνεται από την(4) και λαμβάνουμε ήισοδύναμα u(x i+) u(x i )+u(x i ) h +q(x i )u(x i ) = f(x i ), u(x i+) (+h q(x i ))u(x i )+u(x i ) h = f(x i ). Αντικαθιστώνταςμετιςζητούμενεςποσότητες U i,καταλήγουμεστοδιακριτόσχήμακεντρικών διαφορών h ( Ui+ (+h q(x i ))U i +U i ) = f(xi ) Εδώπρέπεινασημειώσουμεπωςολόγοςγιατονοποίονπαραλείπουμετασημεία x και x N+ είναι ότιανπροσπαθήσουμεναυπολογίσουμετηνπροσέγγισητου u σεαυτάτασημεία,θαχρειαστεί ναυπολογίσουμετηντιμή u(x )γιατηνπροσέγγισηστο x καιτην u(x N+ )γιατο x N+. Ομως τασημεία x και x N+ δενανήκουνστηδιαμέρισήμας,επομένωςθαπρέπειναχειριστούμετο πρώτο και το τελευταίο σημείο ξεχωριστά. Στην περίπτωσή μας, οι συνοριακές συνθήκες μας διευκολύνουν,μιαςκαιγια i = έχουμε και για το τελευταίο σημείο έχουμε επίσης U = u(a) = U N+ = u(b) =, οπότε δεν χρειάζεται να υπολογίσουμε τις προσεγγίσεις στα άκρα του διαστήματος. Συνοψίζοντας λοιπόν, το αριθμητικό σχήμα κεντρικών πεπερασμένων διαφορών δίνεται από τις εξισώσεις U = U i+ + ( +h q(x i ) ) U i U i = h f(x i ), i =,...,N U N+ = Είναι εύκολο να γράψει κανείς την εξίσωση(5) ως ένα γραμμικό σύστημα KU = F, (5)

όπου στην συγκεκριμένη περίπτωση θα έχει τη μορφή (+h q(x )) U f(x ) (+h q(x 3 )) U 3 f(x............. = h 3 )... } {{ (+h q(x N )) U N }}{{} f(x N ) }{{} K U F Είναιπλέονξεκάθαροότιανμαςδοθούνοισυναρτήσεις q(x)και f(x)καιξέρουμεπώςναδιακριτοποιήσουμε το διάστημα [a, b], είμαστε σε θέση να υπολογίσουμε μια προσέγγιση της λύσης της () με τη μέθοδο πεπερασμένων διαφορών. Αυτό θα γίνει πιο σαφές στο παρακάτω παράδειγμα.. Υλοποίηση σε Matlab Θα θεωρήσουμε το πρόβλημα { u (x)+u(x) = sin(πx), x [,], u() = u() = (6) δηλαδή έχουμε επιλέξει q(x) = και f(x) = sin(πx). Για να υλοποιήσουμε τη μέθοδο στη Matlab, θα πρέπει αρχικά να κατασκευάσουμε με κάποιον τρόπο τις συναρτήσεις q(x) και f(x). Αυτό μπορεί να γίνει εύκολα με τη δημιουργία δύο αρχείων με τα αντίστοιχα ονόματα, μέσα στα οποία θα δηλώσουμε τον τύπο της κάθε συνάρτησης. Για να δημιουργήσουμε το αρχείο f.m μπορούμε να γράψουμε στη Matlab την εντολή >> edit f.m και θα ανοίξει ο επεξεργαστής κειμένου όπου μπορούμε να γράψουμε τον κώδικα της συνάρτησης. Συγκεκριμένα, για τη συνάρτηση f ο κώδικας είναι ο παρακάτω. function v = f(x) v = sin(pi*x); Αρχείο: f.m Με τον ίδιο τρόπο δημιουργούμε και το αρχείο q.m στο οποίο θα ορίσουμε τη σταθερή συνάρτηση q(x) =. function v = q(x) v = ones(size(x)); Αρχείο: q.m 3

Εδώ πρέπει να προσέξει κανείς την ιδιαίτερη σύνταξη της εντολής που χρησιμοποιήσαμε. Το x που λαμβάνουμε σαν είσοδο μπορεί να είναι είτε αριθμός, είτε διάνυσμα. Σε οποιαδήποτε περίπτωση, ησυνάρτηση qόπωςτηνεπιλέξαμεπρέπειναμαςεπιστρέφει. Στηνπερίπτωσηπουτο xείναι αριθμός, περιμένουμε να πάρουμε ως αποτέλεσμα έναν αριθμό, αλλά όταν το x είναι διάνυσμα, η qθαέπρεπεναμαςεπιστρέφειμιατιμήγιακάθεστοιχείοτου x,καιαυτήητιμήθαείναιπάντα. Επομένωςαρκείναεπιστρέψουμεένασύνολοαπόμονάδεςταοποίαέχουντηδιάστασητου x (αυτό λειτουργεί καλά ακόμα και όταν το x είναι απλά αριθμός). Τώρα είμαστε έτοιμοι να δημιουργήσουμε το κυρίως αρχείο στο οποίο θα υλοποιήσουμε τη μέθοδό μας. Θαονομάσουμετοαρχείο fdd.mκαιθαορίσουμεμιασυνάρτησημετοίδιοόνομαστο εσωτερικότου. Ησυνάρτησηαυτήθαδέχεταισανείσοδοτιςπαραμέτρους a, bκαι N,καιθα επιστρέφει σαν έξοδο το διάνυσμα με τις προσεγγίσεις U, υπολογισμένο με τη μέθοδο πεπερασμένων διαφορών που περιγράψαμε, καθώς και την διακριτοποίηση x του διαστήματος[a, b]. Αρχικά λοιπόν τοαρχείοέχειαυτήτημορφή: function [U, x] = fdd(a, b, N) Αρχείο: fdd.m Μπορούμε τώρα να ορίσουμε μια διακριτοποίηση του διαστήματος [a, b] ως εξής Αρχείο: fdd.m h = (b-a)/n; % Compute the step size x = a:h:b; % Compute the discretization of the interval [a, b] Πρέπεινατονίσουμεότιηπαράμετρος N ορίζειτοπλήθοςτωνυποδιαστημάτωντου [a,b],το οποίοσημαίνειότιτοδιάνυσμα xθαέχει N +σημεία,καιόχι N. Ως επόμενο βήμα, θα κατασκευάσουμε τον πίνακα του γραμμικού συστήματος που περιγράψαμε στην προηγούμενη ενότητα. Πρέπει να θυμηθούμε ότι ο πίνακας έχει διάσταση κατά μικρότερη από τη διάσταση της διακριτοποίησης, καθώς οι τιμές στα δύο άκρα του διαστήματος είναι γνωστές και θα χειριστούν ξεχωριστά. Ο πίνακας K λοιπόν έχει διάσταση (N ) (N ), και επίσης είναι τριδιαγώνιος και συμμετρικός, όπως είδαμε. Μπορούμε να εκμεταλλευτούμε την ειδική μορφή του πίνακα και να τον κατασκευάσουμε πιο εύκολα με τις δυνατότητες που μας προσφέρει η Matlab. Αρχικά,αςπαρατηρήσουμεότιταδιαγώνιαστοιχείατου Kείναι N στοπλήθος,ενώταστοιχεία πάνωκαικάτωαπότηδιαγώνιοείναι N καιείναιόλαίσαμε-. Εύκολα αντιλαμβάνεται κανείς ότι αρκούν μόλις διανύσματα για να κατασκευάσουμε τον πίνακα K. Θα κατασκευάσουμε το διάνυσμα που περιέχει τα διαγώνια στοιχεία, καθώς και ένα διάνυσμα με το κατάλληλο μήκος το οποίο θα περιέχει τα στοιχεία, και χρησιμοποιώντας την εντολή diag θα δημιουργήσουμε τον K. Η διαδικασία είναι η εξής: 4

Αρχείο: fdd.m dd = + h*h*q(x(:-)); % Compute the diagonal values d = - * ones(n-, ); % Compute the - vector K = diag(d, -) + diag(dd) + diag(d, ); % Construct K Παρατηρήστε ότι για τον υπολογισμό των τιμών q(x) δεν χρησιμοποιήσαμε ολόκληρο το διάνυσμα xαλλάμόνοαπότοδεύτερομέχρικαιτοπροτελευταίοστοιχείο. Ηλέξη μπορείνα χρησιμοποιηθεί μονάχα για να δείξει στοιχείο σε διάνυσμα ή πίνακα, και δείχνει το τελευταίο στοιχείο, επομένως το - δείχνει το προτελευταίο. Ο λόγος για τον οποίο πήραμε τιμές μόνο στα συγκεκριμένα στοιχεία είναι και πάλι επειδή θα χειριστούμε τις τιμές στα άκρα με ξεχωριστό τρόπο. Τομόνοπουμαςλείπειπλέονείναιτοδιάνυσματουδεξιούμέλους,καιγιανατοκατασκευάσουμε δίνουμε τις εξής εντολές. Αρχείο: fdd.m F = h*h*f(x(:-)); % Compute the values of the right-hand side F = F(:); % Take care of orientation Και εδώ υπολογίζουμε τις τιμές της συνάρτησης f μόνο στα κατάλληλα στοιχεία του x, και επίσης πρέπει να φροντίσουμε το διάνυσμα να έχει τις κατάλληλες διαστάσεις. Θυμηθείτε από τη Γραμμική Άλγεβρα ότι για να ορίζεται ο πολλαπλασιασμός πίνακα με διάνυσμα, πρέπει οι διαστάσεις να συμφωνούν, και μάλιστα το διάνυσμα πρέπει να είναι σε μορφή στήλης. Αν έχουμε ένα οποιοδήποτε διάνυσμα yστη Matlab,αλλάδενξέρουμεανείναιγραμμήήστήλη,ηεντολή y(:)τοεπιστρέφει σαν διάνυσμα στήλη. Για να λύσουμε λοιπόν το γραμμικό σύστημα αρκεί να δώσουμε την εντολή U = K \ F; % Solve the linear system Αρχείο: fdd.m καιστο Uέχουμετιςπροσεγγίσειςτιςλύσηςστασημεία x,x 3,...,x N. Πρέπειναεπιβάλλουμε τιςσυνθήκεςσταάκρα,καιοτρόποςγιανατοκάνουμεείναιοεξής. Αρχείο: fdd.m U = [; U; ]; % Impose the boundary conditions Επειδή το διάνυσμα U είναι σε μορφή στήλης, πρέπει να προσέξουμε τη σύνταξη της εντολής η οποίααπλάπροσθέτειέναμηδενικόστηναρχήκαιστοτέλοςτου U. Αυτό ήταν! Ολόκληρος ο κώδικας ακολουθεί στο επόμενο πλαίσιο. 5

Αρχείο: fdd.m function [U, x] = fdd(a, b, N) h = (b-a)/n; % Compute the step size x = a:h:b; % Compute the discretization of the interval [a, b] dd = + h*h*q(x(:-)); % Compute the diagonal values d = - * ones(n-, ); % Compute the - vector K = diag(d, -) + diag(dd) + diag(d, ); % Construct K F = h*h*f(x(:-)); % Compute the values of the right-hand side F = F(:); % Take care of orientation U = K \ F; % Solve the linear system U = [; U; ]; % Impose the boundary conditions Αν τώρα στη Matlab εκτελέσουμε την εντολή >> [sol, x] = fdd(,, ); θα πάρουμε πίσω το διάνυσμα sol διάστασης το οποίο περιέχει τις προσεγγίσεις της πραγματικής λύσης του προβλήματος, καθώς επίσης και το διάνυσμα x επίσης διάστασης το οποιο περιέχει τα σημεία της διακριτοποίησης του [a, b]. Πρέπει όμως με κάποιον τρόπο να ελέγξουμε πόσο σωστά λειτουργεί ο αλγόριθμός μας, και για αυτό το σκοπό θα δημιουργήσουμε τη συνάρτηση exact η οποία θα μας δίνει τις τιμές για την ακριβή λύση του προβλήματος. Σημειώνουμε ότι η ακριβής λύση του προβλήματος(6) είναι η συνάρτηση u(x) = sin(πx) +π. Δημιουργούμε το αρχείο exact.m και γραφουμε σε αυτό function v = exact(x) v = sin(pi*x)/(+pi*pi); Αρχείο: exact.m Μπορούμε τώρα να χρησιμοποιήσουμε την διακριτοποίηση x για να υπολογίσουμε τις τιμές της ακριβούς λύσης στα ίδια σημεία στα οποία υπολογίσαμε προσεγγίσεις, έτσι ώστε να μπορούμε να τα συγκρίνουμε άμεσα. Εκτελούμε την εντολή >> ex = exact(x); καιστοδιάνυσμα ex,διάστασης,έχουμετιςτιμέςτιςακριβούςλύσης.μπορούμετώρανα συγκρίνουμε τα αποτελέσματα δημιουργώντας ένα κοινό γράφημα. 6

>> plot(x, ex, 'b'); >> hold all >> plot(x, sol, 'r--'); >> leg('exact solution', 'Approximation') Πρέπειναπροκύπτειέναγράφημαστοοποίοηακριβήςλύσηκαιηπροσέγγισησχεδόνδενξεχωρίζουνμετομάτι,όπωςφαίνεταιστοΣχήμα.. Plot of exact solution and computed approximation.9.8.7.6.5.4.3.. Exact solution u(x i ) Approximation U i...3.4.5.6.7.8.9 X values Σχήμα : Ακριβής λύση της(6)(μπλε γραμμή) και η προσεγγιστική λύση U(κόκκινη γραμμή), για N =. Μπορούμε όμως να υπολογίσουμε τη διαφορά ή αλλιώς το σφάλμα της προσέγγισής μας μέσω του υπολογισμού της νόρμας της διαφοράς. >> norm(ex' - sol, inf) ans = 6.878e-6 Η δεύτερη παράμετρος στην εντολή norm ορίζει ποιά νόρμα θέλουμε να υπολογιστεί. Οι επιλογές πουέχουμεείναιηνόρμα,και (τηνοποίαέχουμεδιαλέξειεδώ). Η ποσότητα της νόρμας είναι μια καλή ένδειξη για την ποιότητα της προσέγγισής μας, αλλά αυτό που μας ενδιαφέρει ακόμα περισσότερο είναι να ελέγξουμε την τάξη ακρίβειας ή τάξη σύγκλισης της μεθόδου. Η τάξη σύγκλισης είναι ένας αριθμός που χαρακτηρίζει την ίδια τη μέθοδο και μας δίνει πληροφορίες για την ποιότητα της προσέγγισης ανάλογα με το βήμα h που θα διαλέξουμε. Μια απλή περιγραφή της έννοιας είναι η εξής: υποθέστε ότι έχουμε εκτελέσει τη μέθοδό μας με 7

Nσημεία,καιέχουμεπάρειμιαπροσέγγισηηοποίαέχεισφάλμα ε N. Ανεκτελέσουμεξανάτη μέθοδο,αυτήτηφοράμε Ñ Nσημεία,θαπάρουμεέναδεύτεροσφάλμα ε Ñ.Τισχέσηέχουνοι ποσότητες αυτές; Οπως ξέρουμε γενικά, λέμε ότι μια αριθμητική μέθοδος έχει τάξη ακρίβειας p όταν υπάρχει κάποια σταθερά Cανεξάρτητηαπότο hκαιτο Nέτσιώστεναισχύει ε = Ch p Γιαλόγουςαπλότηταςθαυποθέσουμεότιείναι Ñ = N,επομένωςαν hείναιτοβήμαδιακριτοποίησηςπουαντιστοιχείστο N,τότετοβήμαδιακριτοποίησηςγιατο Ñείναι h/.θεωρούμετώρα το πηλίκο των σφαλμάτων και έχουμε ( ( ) ε ε N Chp ε N C ( ) h p = p εn log N p log = log() Εδώ log συμβολίζειτολογάριθμομεβάση,ενώlogείναιολογάριθμοςστηναγαπημένησαςβάση (θυμηθείτε τους κανόνες αλλαγής βάσης λογαρίθμων). Επίσης, αυτή είναι μια ειδική περίπτωση στηνοποία Ñ = N.Στηγενικήτουμορφή,οτύποςείναι ( ) ε log N εñ p ) log(ñ N Τώρα λοιπόν, αφού ξέρουμε πώς να εκτιμήσουμε αριθμητικά την τάξη ακρίβειας της μεθόδου πεπερασμένων διαφορών, μπορούμε να την προσεγγίσουμε. Αρχικά θα πρέπει να υπολογίσουμε δύο προσεγγίσεις της λύσης, με διαφορετικό πλήθος σημείων. Ακολουθεί ενδεικτικός κώδικας με τοοποίομπορείναγίνειαυτό. ε N ε N ) Αρχείο: fddorder.m % Number of intervals for each execution N = ; N = ; % Find error with N+ points [U, x] = fdd(,, N); ex = exact(x); err = norm(ex' - U, inf) % Find error with N+ points [U, x] = fdd(,, N); ex = exact(x); err = norm(ex' - U, inf); Ετσι, σύμφωνα με όσα είπαμε, μια εκτίμηση για την τάξη ακρίβειας της μεθόδου είναι η ποσότητα 8

Αρχείο: fddorder.m p = log(err/err)/log(n/n); fprintf(, 'Estimated method order: %g \n', p); Η τελευταία εντολή απλά αναλαμβάνει την εμφάνιση κατάλληλου μηνύματος στην οθόνη και στην περίπτωσή μας, θα τυπώσει Estimated method order:.5 κάτιπουμαςυποδεικνύειπωςητάξηακρίβειαςτηςμεθόδουμαςείναι. Μη-ομοιόμορφος διαμερισμός Εστω το πρόβλημα δύο σημείων: { u +qu = f, x [a,b] u(a) = u(b) =, (7) αλλάτώραθαθεωρήσουμεέναδιαμερισμότου [a,b], a = x < x <... < x N < x N+ = b, πουδενθαείναικατ ανάγκηνομοιόμορφος. Θασυμβολίζουμε h i := x i+ x i, i =,,...,N, U i u(x i ),καιμε x i /, x i+/,ταμέσατωνδιαστημάτων [x i,x i ], [x i,x i+ ],αντίστοιχα(βλ. Σχήμα). h i h i a... x x i i / x x i i+/ x i+... b Σχήμα : Αναπαράσταση του μη-ομοιόμορφου διαμερισμού. Τότεηπροσέγγισητηςδευτέραςπαραγώγου u (x i )μπορείναγίνειωςεξής: u (x i ) = (u (x i )) u (x i+/ ) u (x i / ) h i + h i 9 u(x i+ ) u(x i ) h i u(x i) u(x i ) h i (h i +h i ).

Ετσι καταλήγουμε στο ακόλουθο σχήμα πεπερασμένων διαφορών για την επίλυση του(7): ( Ui+ U i U ) i U i +q(x i )U i = f(x i ), i =,3,...,N, (8) h i +h i h i h i όπουλόγωτωνσυν.συνθηκών Dirichletέχουμεότι U = U N+ =. Πολλαπλασιάζουμετην(8)με h i +h i και καταλήγουμε στην ισοδύναμη μορφή: ( U i + + + h ) i +h i q(x i ) U i U i+ = h i +h i f(x i ), (9) h i h i h i h i για i =,3,...,N, με U = U N+ =. (Παρατηρήστεότιαν h i = h := (b a)/n, για i =,,...,N,δηλαδήγιαομοιόμορφοδιαμερισμό,καταλήγουμεστογνωστόμαςσχήμαπεπερασμένων διαφορών με τρία σημεία.) Η(9) μπορεί επίσης να γραφεί στη μορφή του ακόλουθου γραμμικού συστήματος: όπου K = KU = F, () h + h + h +h q(x ) h... U = (U,...,U N ) T και F = h h + h 3 + h +h 3 q(x 3 ) h 3............ h N h N + h N + h N +h N q(x N ) ( h +h f(x ), h +h 3 f(x 3 ),..., h N +h N f(x N )) T. Εναπαράδειγμα. Θεωρούμετοπρόβλημα(7)με [a,b] = [,4], q(x) := 4, f(x) := 6π(πsin(4πx)+cos(4πx)) e x.τότεηακριβήςλύσηείναι: u(x) = sin(4πx)e x. Οπως και στο προηγούμενο παράδειγμα, δημιουργούμε τα απαραίτητα αρχεία στα οποία ορίζουμε τις αντίστοιχες συναρτήσεις., function v = q(x) v = 4.*ones(size(x)); Αρχείο: q.m

Αρχείο: f.m function v = f(x) v = 6*pi*(pi*sin(4*pi*x) + cos(4*pi*x)).*exp(-*x); function v = exact(x) v = sin(4*pi*x).*exp(-*x); Αρχείο: exact.m Προσέξτε τη χρήση του τελεστή«τελεία» ο οποίος αντί για πολλαπλασιασμό διανυσμάτων με την κλασσική έννοια προκαλεί πολλαπλασιασμό κατά συνιστώσα. Αν η μεταβλητή εισόδου x είναι ένα διάνυσμα, είναι απαραίτητο να λάβουμε υπόψη μας τέτοιες λεπτομέρειες. Στην περίπτωση που το x είναι απλά ένας αριθμός, ο τελεστής«τελεία» δεν αλλάζει τίποτα. Προκειμένου να προχωρήσουμε, θα πρέπει να κατασκευάσουμε έναν μη ομοιόμορφο διαμερισμό του διαστήματος στο οποίο θα δουλέψουμε. Ενας τρόπος είναι ο ακόλουθος: Ξεκινάμε από έναν ομοιόμορφοδιαμερισμότου[,], z i = (i )h, i =,,...,N +,όπου h = /N,καιστη συνέχεια χρησιμοποιούμε κάποια κατάλληλη απεικόνιση X(z) για να ορίσουμε τους κόμβους του μηομοιόμορφουδιαμερισμού x i := X(z i ).ΣτοΣχήμα3έχουμετοποθετήσειστονκάθετοάξονα τα zκαιστονοριζόντιοτα x. (ΜεαυτήτηνεπιλογήαξόνωνστοΣχήμα3ουσιαστικάδίνεταιη γραφικήπαράστασητηςαντίστροφηςσυνάρτησης z = X (x).)παρατηρήστεπώςταομοιόμορφα κατανεμημένα σημεία στον άξονα των z αντιστοιχούν στα μη ομοιόμορφα κατανεμημένα σημεία τουάξονατων x. z a x Σχήμα 3 b Για να καταλάβουμε τι πρέπει να κάνουμε, παραθέτουμε τη γραφική παράσταση της ακριβους λύσης του προβλήματος στο διάστημα[, 4].

.8.6.4. -. -.4 -.6.5.5.5 3 3.5 4 Σχήμα 4 Από το Σχήμα 4 γίνεται σαφές ότι η συνάρτηση που μελετάμε παρουσιάζει περισσότερες αλλαγές στοαριστερόκομμάτιτουάξονα,κοντάστο. Κοντάστο4,απότηνάλλη,ησυμπεριφοράτης είναι πολύ πιο ομαλή. Αυτό σημαίνει ότι θα ήταν ιδανικό να πάρουμε περισσότερα σημεία στο αριστερόκομμάτιτουάξονατων x,καιλιγότεραστοδεξί.αυτόμπορείναεπιτευχθείπ.χ. μετη βοήθεια της συνάρτησης X(z) = (b a) ekz e k +a, z [,], () όπου k είναι κατάλληλος συντελεστής ενίσχυσης της πύκνωσης. Στο Σχήμα 5 απεικονίζεται ο τρόποςλειτουργίαςτης()στοδιάστημα[,4]με k =..9.8.7.6 z.5.4.3...5.5.5 3 3.5 4 x Σχήμα 5 Για την υλοποίηση της λογικής αυτής θα χρησιμοποιήσουμε την έτοιμη συνάρτηση xgrid το περιεχόμενο της οποίας ακολουθεί.

Αρχείο: xgrid.m function x = xgrid(ax,bx,m,gridchoice) % % Specify grid points in space for solving a -point boundary value problem % or time-depent PDE in one space dimension. % % Grid has m- interior points on the interval [ax, bx]. % gridchoice specifies the type of grid (see below). % m+ grid points (including boundaries) are returned in x. % % This file is a modified version of the original function taken from % http://www.amath.washington.edu/ rjl/fdmbook/ (7) z = linspace(,, m+)'; % uniform grid in [,] switch gridchoice case 'uniform' x = ax + (bx-ax)*z; case 'rtlayer' % Clustered near right boundary x = ax + (bx-ax) * ((exp(-*z) - )/(exp(-)-)); case 'ltlayer' % Clustered near left boundary x = ax + (bx-ax) * ((exp(*z) - )/(exp()-)); case 'random' x = ax + (bx-ax)*sort(rand(m+,)); x() = ax; x(m+) = bx; case 'chebyshev' % Chebyshev extreme points x = ax + (bx-ax) *.5*( + cos(pi*(-z))); Η συνάρτηση υποστηρίζει τη δημιουργία ομοιόμορφων και μη διαμερισμών στο ζητούμενο διάστημα [ax, bx] με m υποδιαστήματα. Η παράμετρος gridchoice ορίζει τον τύπο του διαμερισμού, και οι τιμές που μπορούμε να δώσουμε είναι: uniform : ομοιόμορφος διαμερισμός rtlayer : μη ομοιόμορφος διαμερισμός με συγκέντρωση δεξιά ltlayer : μη ομοιόμορφος διαμερισμός με συγκέντρωση αριστερά random : τυχαίος διαμερισμός 3

chebyshev : διαμερισμός τύπου Chebyshev(πυκνός στα άκρα και αραιός στη μέση) Στην περίππτωσή μας λοιπόν η κατάλληλη χρήση της συνάρτησης είναι με την εντολή >> x = xgrid(, 4, N, ltlayer ); όπου N το πλήθος των υποδιαστημάτων που θέλουμε στο διάστημα[, 4]. Μπορούμε τώρα να περάσουμε στην υλοποίηση του κεντρικού αρχείου για το παράδειγμά μας, το οποίο όπως και πριν έχουμε ονομάσει fdd.m Αρχείο: fdd.m function [U, x] = fdd(a, b, N, grid type) % Compute the discretization of the interval [a, b] x = xgrid(a, b, N, grid type); % Compute the step sizes h = zeros(n, ); for i = :N h(i) = x(i+) - x(i); % Compute diagonal entries for K dd = zeros(n-, ); for i = :N- dd(i) = /h(i) + /h(i+) + (h(i)+h(i+))*q(x(i+))/; % Compute off-diagonal entries for K d = zeros(n-, ); for i = :N- d(i) = -/h(i+); % Compute right-hand side F = zeros(n-, ); for i = :N- F(i) = (h(i)+h(i+))*f(x(i+))/; % Construct the coefficients matrix A K = diag(d, -) + diag(dd) + diag(d, ); % Solve the linear system and impose boundary conditions U = K \ F; U = [; U; ]; 4

Οπως μπορείτε να παρατηρήσετε, αυτή η μορφή του αρχείου είναι αρκετά διαφορετική από αυτήν που είχαμε στο προηγούμενο παράδειγμα. Η συνάρτηση δέχεται ένα παραπάνω όρισμα το οποίο θα μας επιρέψει να συγκρίνουμε τα αποτελέσματα της μεθόδου χρησιμοποιώντας ομοιόμορφο και μηομοιόμορφοδιαμερισμό.επιπλέον,οιτιμές h i υπολογίζονταιεπαναληπτικά,καιηκατασκευήτου πίνακα K επίσης απαιτεί λίγη παραπάνω δουλειά. Παρατηρήστε όμως ότι το κομμάτι της επίλυσης και της επιβολής των συνοριακών συνθηκών έχει μείνει αμετάβλητο. Στο Σχήμα 6 απεικονίζονται η ακριβής λύση και η προσεγγιστική λύση με τη μέθοδο πεπερασμένων διαφορώνγιαομοιόμορφοδιαμερισμότου[,4]α)με N = καιβ)με N = 4υποδιαστήματα. Οπως ήταν αναμενόμενο, ακόμα και με διπλάσιο πλήθος σημείων δεν πετυχαίνουμε κάτι πολύ καλύτερο, και αυτό οφείλεται στη φύση του προβλήματος που λύνουμε. Πρέπει να φροντίσουμε λοιπόν ώστε ο(ομοιόμορφος) διαμερισμός μας να είναι αρκετά λεπτός έτσι ώστε να να περιέχονται αρκετά σημεία στο διάστημα που η λύση μας μεταβάλλεται απότομα, το οποίο σημαίνει ότι θα κάνουμε περισσότερες πράξεις και στο διάστημα στο οποίο δεν χρειάζεται. Uniform grid, N = Uniform grid, N = 4.8.8.6.6.4.4.....4.4.6.6.8 approx. exact.5.5.5 3 3.5 4 x.8 approx. exact.5.5.5 3 3.5 4 x Σχήμα6:Ομοιόμορφοςδιαμερισμός, N = (αριστερά)και N = 4(δεξιά). Χρησιμοποιώντας τώρα το μη ομοιόμορφο διαμερισμό, αναδιατάσσουμε τους κόμβους της διαμέρισης ώστε να περιέχονται περισσότερα σημεία στο«δύσκολο» διάστημα και λιγότερα στο«εύκολο». Στο Σχήμα 7 απεικονίζονται η ακριβής λύση και η προσεγγιστική λύση με τη μέθοδο πεπερασμένων διαφορώνγιαμηομοιόμορφοδιαμερισμότου[,4],α)με N = καιβ)με N = 4υποδιαστήματα. Παρατηρήστε ότι οι κόμβοι πυκνώνουν όσο πλησιάζουμε προς το αριστερό άκρο του διαστήματος, και ότι τώρα η προσέγγισή μας είναι πολύ καλύτερη από την αντίστοιχη για ομοιόμορφο διαμερισμό. 5

Nonuniform grid, N = Nonuniform grid, N = 4.8.8.6.6.4.4.....4.4.6.6.8 approx. exact.5.5.5 3 3.5 4 x.8 approx. exact.5.5.5 3 3.5 4 x Σχήμα7:ΜηΟμοιόμορφοςδιαμερισμός, N = (αριστερά)και N = 4(δεξιά). Στον ακόλουθο πίνακα δίνεται το σχετικό σφάλμα E(N) = max u(x i) U i i N+ max u(x, i) i N+ για ομοιόμορφο και μη ομοιόμορφο διαμερισμό του[,4] σε N υποδιαστήματα. E(N) Ομοιόμορφος διαμ. Μη ομοιόμορφος διαμ. N =.88.89 N = 4.74.3 N = 8.83.56 N = 6.7.4 Παρατήρηση: Φυσικά αυτό που θα επιθυμούσε κανείς από μια αριθμητική μέθοδο θα ήταν η επιλογή των κόμβων να γίνεται«αυτόματα» και χωρίς εκ των προτέρων γνώση της συμπεριφοράς της λύσης. Κάτι τέτοιο ξεφεύγει από τους σκοπούς αυτού του μαθήματος. 6