Προσεγγιστική λύση Γραμμικών Συστημάτων με την μέθοδο Gauss-Seidel. Δημιουργία κώδικα στο Matlab



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

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

ΘΕΜΑΤΑ ΕΞΕΤΑΣΗΣ ΚΑΙ ΑΠΑΝΤΗΣΕΙΣ ΕΞΕΤΑΣΤΙΚΗ ΠΕΡΙΟ ΟΣ:

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

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

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

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

Εργαστήριο 2 - Απαντήσεις. Επίλυση Γραμμικών Συστημάτων

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

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

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

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

Β ΜΕΡΟΣ: ΕΦΑΡΜΟΓΗ ΤΟΥ MATLAB ΣΤΗΝ ΑΡΙΘΜΗΤΙΚΗ ΑΝΑΛΥΣΗ

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

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

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

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

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

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

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

ΚΕΦΑΛΑΙΟ 3 ΑΡΙΘΜΗΤΙΚΗ ΕΠΙΛΥΣΗ ΓΡΑΜΜΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. nn n n

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

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

Σύντομες εισαγωγικές σημειώσεις για την. Matlab

Παναγιώτης Ψαρράκος Αν. Καθηγητής

Q 12. c 3 Q 23. h 12 + h 23 + h 31 = 0 (6)

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

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

Αριθµητική Ανάλυση. 27 Οκτωβρίου Αριθµητική Ανάλυση 27 Οκτωβρίου / 72

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

Εισαγωγή στους Υπολογιστές

ΒΑΣΙΚΑ ΣΤΟΙΧΕΙΑ ΘΕΩΡΙΑΣ ΤΗΣ ΜΕΘΟΔΟΥ SIMPLEX

Εισαγωγή στον Προγραµµατισµό. Ανάλυση (ή Επιστηµονικοί8 Υπολογισµοί)

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

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

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια:

ΤΟΠΟΓΡΑΦΙΚΑ ΔΙΚΤΥΑ ΚΑΙ ΥΠΟΛΟΓΙΣΜΟΙ Η ΣΥΝΟΡΘΩΣΗ ΤΩΝ ΟΡΙΖΟΝΤΙΩΝ ΔΙΚΤΥΩΝ (ΤΟ ΣΥΣΤΗΜΑ ΤΩΝ ΚΑΝΟΝΙΚΩΝ ΕΞΙΣΩΣΕΩΝ)

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΠΟΛΙΤΙΚΩΝ ΜΗΧΑΝΙΚΩΝ ΤΟΜΕΑΣ ΥΔΡΑΥΛΙΚΗΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΙΚΗΣ ΤΕΧΝΙΚΗΣ. Διάλεξη 6: Εξίσωση διάχυσης (συνέχεια)

β) Με τη βοήθεια του αποτελέσµατος της απαλοιφής υπολογίστε την ορίζουσα του πίνακα του συστήµατος. x x = x

Κεφ. 2: Επίλυση συστημάτων εξισώσεων. 2.1 Επίλυση εξισώσεων

Νέο υλικό. Matlab2.pdf - Παρουσίαση μαθήματος 2. Matlab-reference.pdf Σημειώσεις matlab στα ελληνικά (13 σελίδες).

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

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

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

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

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

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

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

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

Πώς γίνεται το debug? Το debug γίνεται με δύο τρόπους, ως επί το πλείστον. Τουλάχιστον, εγώ δύο έμαθα, και αυτούς αναφέρω.

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΠΟΛΙΤΙΚΩΝ ΜΗΧΑΝΙΚΩΝ ΤΟΜΕΑΣ ΥΔΡΑΥΛΙΚΗΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΙΚΗΣ ΤΕΧΝΙΚΗΣ. Διάλεξη 3: Περιγραφή αριθμητικών μεθόδων (συνέχεια)

Εργαστήριο Γραμμικής Άλγεβρας. H Matlab ως γλώσσα προγραμματισμού

ΑΡΙΘΜΗΤΙΚΕΣ ΜΕΘΟΔΟΙ, 5 Ο ΕΞΑΜΗΝΟ, ΠΕΡΙΕΧΟΜΕΝΑ ΠΑΡΑΔΟΣΕΩΝ. Κεφ. 1: Εισαγωγή (διάρκεια: 0.5 εβδομάδες)

ιδάσκοντες :Τµήµα Α ( Αρτιοι) : Καθηγητής Ν. Μισυρλής,Τµήµα Β (Περιττοί) : Αριθµητική Επίκ.

Παραδείγματα (2) Διανυσματικοί Χώροι

4. ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ (Α' μέρος: for)

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ομή Επανάληψης

Επαναληπτικές μέθοδοι

Επιστηµονικός Υπολογισµός Ι Ενότητα 1 - Εισαγωγή. Ευστράτιος Γαλλόπουλος

( ) ( ) ( ) ( ) ενώ η εξίσωση της παραβολής είναι η

Ειδικά θέματα στην επίλυση

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

Παράδειγμα 2. Λύση & Επεξηγήσεις. Τέλος_επανάληψης Εμφάνισε "Ναι" Τέλος Α2

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

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

Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη.

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

ΕΠΙΛΥΣΗ ΕΚΦΥΛΙΣΜΕΝΩΝ ΚΑΙ ΓΕΝΙΚΩΝ ΓΡΑΜΜΙΚΩΝ ΠΡΟΒΛΗΜΑΤΩΝ. 4.1 Επίλυση Εκφυλισμένων Γραμμικών Προβλημάτων

Δρ. Σταύρος Καραθανάσης

Δομή Επανάληψης. Σενάριο για μαθητές Γ γυμνασίου διάρκειας 3+ ωρών

Παρουσίαση 3ης Άσκησης

Κεφάλαια Εντολές επανάληψης. Τρεις εντολές επανάληψης. Επιλογή εντολής επανάληψης ΟΣΟ...ΕΠΑΝΑΛΑΒΕ. Σύνταξη στη ΓΛΩΣΣΑ

Κεφάλαιο 5ο: Εντολές Επανάληψης

2η Οµάδα Ασκήσεων. ΑΣΚΗΣΗ 3 (Θεωρία-Αλγόριθµοι-Εφαρµογές)

Χρονικές σειρές 1 ο μάθημα: Εισαγωγή στη MATLAB

Άσκηση 1. Α. Υπολογίστε χωρίς να εκτελέσετε κώδικα FORTRAN τα παρακάτω: Ποιά είναι η τελική τιμή του Z στα παρακάτω κομμάτια κώδικα FORTRAN:

Χρονικές σειρές 4 o μάθημα: ΠΙΝΑΚΕΣ ΚΑΙ ΔΙΑΝΥΣΜΑΤΑ

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 3: Συναρτήσεις

Παραδείγματα Απαλοιφή Gauss Απαλοιφή Gauss-Jordan Παραγοντοποίηση LU, LDU

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

4.1 Πράξεις με Πολυωνυμικές Εκφράσεις... 66

Πανεπιστήμιο Αθηνών Τμήμα Φυσικής Κβαντομηχανική ΙΙ

1 η ΑΣΚΗΣΗ. 1. Θεωρία (Κεφ. 1, 2) ξ = 2 της εξίσωσης fx ( ) = 0 για x

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

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

Δομή Επανάληψης. Σενάριο για μαθητές Γ γυμνασίου διάρκειας 3+ ωρών

Ενότητα εκπαίδευσης και κατάρτισης για τις δεξιότητες ηγεσίας. Αξιολόγηση Ικανοτήτων

1. Κατασκευάστε ένα διάνυσμα με στοιχεία τους ζυγούς αριθμούς μεταξύ του 31 και 75

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

Ενότητα 2: Εντολές Επανάληψης

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

Οι εντολές ελέγχου της ροής ενός προγράμματος.

Γλώσσα Προγραμματισμού C

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

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

A = x x 1 + 2x 2 + 4

Διάλεξη 1. Πράξεις Τελεστές Έλεγχος Ροής

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

ΕΝΤΟΛΕΣ. 7.1 Εισαγωγικό μέρος με επεξήγηση των Εντολών : Επεξήγηση των εντολών που θα

Transcript:

Προσεγγιστική λύση Γραμμικών Συστημάτων με την μέθοδο Gauss-Seidel Δημιουργία κώδικα στο Matlab Χατζηγεωργίου Αντώνης Νοέμβριος 2013

Περιεχόμενα 1. Αρχικό πρόβλημα.... 3 2. Εφαρμογή της θεωρίας.... 4 3. Ανάπτυξη κώδικα στο Matlab.... 5 3.1 Επεξήγηση του κώδικα.... 6 2

1. Αρχικό πρόβλημα. Στο παρών έγγραφο, για την ανάπτυξη-παρουσίαση του κώδικα που επιλύει προσεγγιστικά, γραμμικά προβλήματα με την μέθοδο των Gauss-Seidel, θα χρησιμοποιηθεί το παρακάτω σύστημα: Ουσιαστικά αυτό το σύστημα αποτελείτε από τον πίνακα των συντελεστών των αγνώστων(α), τον πίνακα των αγνώστων( ), και τον πίνακα των αποτελεσμάτων(b). 3

2. Εφαρμογή της θεωρίας. Η γενική μορφή ενός γραμμικού συστήματος, με την βοήθεια των πινάκων είναι: Δηλαδή Υπάρχουν διάφοροι μέθοδοι επίλυσης αυτών των συστημάτων. Η μέθοδος των Gauss-Seidel που χρησιμοποιώ εγώ, είναι μια επαναληπτική μέθοδος. Απαιτεί μια αρχική τιμή και στη συνέχεια, τη δημιουργία μιας ακολουθίας διανυσμάτων,.. ώστε τελικά να γίνει σύγκλιση στο. Ο αλγόριθμος που περιγράφει την διαδικασία είναι: Ο παραπάνω αλγόριθμος, είναι μια εξέλιξη της μεθόδου του Jacobi. Περιγράφει, πως από το πρώτο βήμα της εφαρμογή της μεθόδου, κάθε άγνωστος που υπολογίζεται, μπαίνει στο αμέσως επόμενο βήμα υπολογισμού, του επόμενου αγνώστου. Εκτός από τον παραπάνω αλγόριθμο που μπορεί να χρησιμοποιηθεί άμεσα, ο πίνακας Α, μπορεί να γραφτεί και ως: Όπου στην περίπτωση του συγκεκριμένου προβλήματος: 4

Συνεπώς, το μπορεί να γραφτεί ως άρα Έτσι λοιπόν, έχοντας τον τύπο (2) στο μυαλό μας, προκύπτει η παρακάτω επαναληπτική σχέση: όπου 3. Ανάπτυξη κώδικα στο Matlab. Κατά την δημιουργία του κώδικα, αυτό που έπρεπε να κάνω, είναι να φτιάξω μια Function, όπου εισήγαγα μέσα: Το αρχικό σύστημα, με όλους τους πίνακες που αναλύουν τον πίνακα των συντελεστών των αγνώστων. Επίσης, ένα πίνακα με τις αρχικές τιμές Τον μέγιστο αριθμό των επαναλήψεων που θέλω να κάνει το πρόγραμμα. Τον τύπο (3) μέσα σε μία επαναλαμβανόμενη διαδικασία. Την επιθυμητή ακρίβεια μέχρι την οποία θέλω να φτάσει το πρόγραμμα. 5

Έχοντας όλα τα παραπάνω, δημιουργήθηκε ο παρακάτω κώδικας function Gauss_Seidel_method(A,B,D,L,U) A=input('Matrix Α='); B=input('Matrix Β='); D=diag(diag(A)); L=tril(A-diag(diag(A))); U=triu(A-diag(diag(A))); x=zeros(length(b),1); N=input('Maximum number of iterations='); e=input('accuracy='); for k = 1:N xold = x; x=-((d+l)^-1)*u*x+((d+l)^-1)*b; if norm( x - xold ) < e break; end format long end k x 3.1 Επεξήγηση του κώδικα. Είναι φανερό, ότι οι 2 πρώτες γραμμές, αναφέρονται στο να εισάγει ο χρήστης τους πίνακες Α και Β. Με τις εντολές δεξιά στα D, L, και U είναι η διάσπαση του πίνακα Α, όπως προανέφερα παραπάνω. Δηλαδή το D είναι η διαγώνιος, το L είναι τα στοιχεία κάτω από την διαγώνιο(η εντολή tril, είναι ουσιαστικά tri (lower)), και το U είναι τα στοιχεία πάνω από την διαγώνιο(κι εδώ αντίστοιχα η εντολή triu είναι ουσιαστικά tri(upper)). Η αμέσως επόμενη εντολή είναι η : x=zeros(length(b),1); Αυτό που λέω στο πρόγραμμα, είναι να φτιάξει έναν πίνακα, ίδιου μεγέθους με αυτόν των αποτελεσμάτων (Β). Αυτός ο πίνακας θα είναι μηδενικός, και θα εκφράζει τις αρχικές τιμές. Στην συνέχεια, όρισα στο πρόγραμμα να ρωτάει τον χρήστη τον μέγιστο αριθμό των επαναλήψεων και την μέγιστη ακρίβεια που επιθυμεί. Το μόνο που χρειάζεται πλέον, είναι να διατυπωθεί ο γενικός τύπος, μέσα σε μία επαναληπτική διαδικασία. Σε μία λούπα. Αυτό γίνεται με ένα For το οποίο θα ξεκινάει από την πρώτη επανάληψη, έως τις μέγιστες επαναλήψεις που του έχουμε ορίσει. 6

Το πρόγραμμα ολοκληρώνεται, με την έκφραση της ακρίβειας. Δηλαδή, μπορεί εμείς να έχουμε πει μια συγκεκριμένη ακρίβεια, αλλά το πρόγραμμα δεν καταλαβαίνει σε ποια επανάληψη θα φτάσει αυτή την ακρίβεια. Αυτό γίνεται με μια norm μέσα σε ένα IF. Η συνθήκη είναι, πως μόλις η διαφορά, των τελικών τιμών των Χ από τις αρχικές μηδενικές τιμές( x - xold ) γίνει μικρότερη από την ακρίβεια που έχουμε ορίσει, τότε το πρόγραμμα να σταματήσει(break), και να βγει από το For. Να σταματήσει δηλαδή τις πράξεις. Στο τέλος, γράφοντας Χ και Κ, χωρίς ερωτηματικό δίπλα, του λέω να μου δώσει τα αποτελέσματα των Χ, καθώς επίσης και τις επαναλήψεις που χρειάστηκε να κάνει, μέχρι την ακρίβεια που του έχουμε ορίσει. Τρέχοντας την function, εμφανίζονται στο Command Window τα παρακάτω: Για το συγκεκριμένο παράδειγμα, η μέθοδος αυτή χρειάστηκε 8 επαναλήψεις για να φτάσει στην ακρίβεια του 10-3. Τα αποτελέσματα συγκεντρωτικά φαίνονται και στον παρακάτω πίνακα: Χ 1 1.99993865 Χ 2 1.99995966 X 3 2.00000700 Επαναλήψεις 8 7

Στην παρακάτω εικόνα, εμφανίζονται τα αποτελέσματα των τιμών των Χ, έχοντας χρησιμοποιήσει αντίστοιχη Function με την μέθοδο του Jacobi(το συγκεκριμένο πρόγραμμα δεν θα αναπτυχθεί στα παρών έγγραφο), χάριν της σύγκρισης την ταχύτητας των δυο μεθόδων. Έτσι λοιπόν, έχοντας τρέξει και τα δυο προγράμματα ταυτόχρονα, παρατηρούμε πως η μέθοδος των Gauss Seidel είναι κατά πολύ γρηγορότερη από αυτή του Jacobi. Παρακάτω, παρατίθεται συγκεντρωτικός πίνακας. Μέθοδος Jacobi Μέθοδος Gauss-Seidel Χ 1 2.00016 1.99994 Χ 2 1.99980 1.99996 X 3 2.00020 2.00001 Επαναλήψεις 15 8 8