Παράδειγμα #4 ΑΛΓΕΒΡΙΚΑ ΣΥΣΤΗΜΑΤΑ ΕΞΙΣΩΣΕΩΝ

Σχετικά έγγραφα
Παράδειγμα #3 EΠΙΛΥΣΗ ΓΡΑΜΜΙΚΩΝ ΑΛΓΕΒΡΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΜΕ ΑΠΕΥΘΕΙΑΣ ΜΕΘΟΔΟΥΣ Επιμέλεια: Ν. Βασιλειάδης

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

ΑΡΙΘΜΗΤΙΚΗ ΑΝΑΛΥΣΗ, 2004, 3 Ο ΕΞΑΜΗΝΟ ΕΡΓΑΣΙΑ #4: ΠΑΡΕΜΒΟΛΗ

0.5, Μεταφορά θερμότητας ανάμεσα σε κυλίνδρους μεγάλου μήκους (χωρίς ασπίδα):

Παράδειγμα #6 ΕΠΙΛΥΣΗ ΑΛΓΕΒΡΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΕΠΙΜΕΛΕΙΑ: Σ. Μισδανίτης

Παράδειγμα #4 EΠΙΛΥΣΗ ΓΡΑΜΜΙΚΩΝ ΑΛΓΕΒΡΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΜΕ ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΜΕΘΟΔΟΥΣ ΕΠΙΜΕΛΕΙΑ: Ν. Βασιλειάδης

Παράδειγμα #5 ΕΠΙΛΥΣΗ ΓΡΑΜΜΙΚΩΝ & ΜΗ ΓΡΑΜΜΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΕΠΙΜΕΛΕΙΑ: Σ. Βαρούτης

πεπερασμένη ή Η αναλυτική λύση της διαφορικής εξίσωσης δίνεται με τη βοήθεια του Mathematica: DSolve u'' r 1 u' r 1, u 1 0, u' 0 0,u r,r

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

Επιμέλεια απαντήσεων: Ιωάννης Λυχναρόπουλος

Παράδειγμα #5 EΠΙΛΥΣΗ ΜΗ ΓΡΑΜΜΙΚΩΝ ΑΛΓΕΒΡΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΜΕ ΜΕΘΟΔΟ NEWTON ΕΠΙΜΕΛΕΙΑ: Ν. Βασιλειάδης. ( k ) ( k)

Επιµέλεια: Γιάννης Λυχναρόπουλος Οµάδα Α: Άσκηση 2 Έχουµε να επιλύσουµε την εξίσωση: 2

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

Επιλύστε αριθμητικά με τη μέθοδο των πεπερασμένων διαφορών το παρακάτω πρόβλημα δύο οριακών τιμών: ( )

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

Μάθημα Επιλογής 8 ου εξαμήνου

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

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

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

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

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

f στον κόμβο i ενός πλέγματος ( i = 1, 2,,N

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

y 1 και με οριακές συνθήκες w

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

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

Επίλυση Γραµµικών Συστηµάτων

i. Επιλύστε με απαλοιφή Gauss μερικής οδήγησης το σύστημα:

ΑΡΙΘΜΗΤΙΚΗ ΑΝΑΛΥΣΗ, 2004, 3 Ο ΕΞΑΜΗΝΟ ΕΡΓΑΣΙΑ #5: ΑΡΙΘΜΗΤΙΚΗ ΟΛΟΚΛΗΡΩΣΗ

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Δομή Επανάληψης. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

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

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

Πίνακες. FORTRAN και Αντικειμενοστραφής Προγραμματισμός

ΥΠΟΛΟΓΙΣΤΙΚΕΣ ΜΕΘΟΔΟΙ, , 5 Ο ΕΞΑΜΗΝΟ ΕΡΓΑΣΙΑ #5: ΥΠΕΡΒΟΛΙΚΑ ΠΡΟΒΛΗΜΑΤΑ ΗΜΕΡΟΜΗΝΙΑ ΠΑΡΑΔΟΣΗΣ: ΕΠΙΜΕΛΕΙΑ: Ιωάννης Λυχναρόπουλος

Oι εντολές COMMON και PARAMETER

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

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

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

8 FORTRAN 77/90/95/2003

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

Αριθµητική Ανάλυση. Ενότητα 3 Αριθµητικές Μέθοδοι για την επίλυση Γραµµικών Συστηµάτων. Ν. Μ. Μισυρλής. Τµήµα Πληροφορικής και Τηλεπικοινωνιών,

Πίνακες. (i) FORTRAN και Αντικειµενοστραφής Προγραµµατισµός

ΑΡΙΘΜΗΤΙΚΕΣ ΜΕΘΟΔΟΙ, , 5 Ο ΕΞΑΜΗΝΟ ΔΙΔΑΣΚΩΝ: Δ. Βαλουγεώργης Απαντήσεις: ΠΡΟΟΔΟΣ 1, Επιμέλεια λύσεων: Γιώργος Τάτσιος

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

Παράδειγμα #3 ΡΙΖΕΣ ΕΞΙΣΩΣΕΩΝ ΕΠΙΜΕΛΕΙΑ: ΓΙΑΝΝΗΣ ΛΥΧΝΑΡΟΠΟΥΛΟΣ

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

Παραδείγματα Απαλοιφή Gauss Απαλοιφή Gauss Jordan

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

Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Πολυτεχνική Σχολή Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

ΦΥΣ 145 Υπολογιστικές Μέθοδοι στη Φυσική. Πρόοδος 26 Μαρτίου 2007 Ομάδα 1 η

Εφαρμοσμένα Μαθηματικά ΙΙ

Αριθµητική Γραµµική Αλγεβρα

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ. Δρ. Ιωάννης Λυχναρόπουλος Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας

Μορφοποίηση της εξόδου

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

ΒΟΗΘΗΤΙΚΕΣ ΣΗΜΕΙΩΣΕΙΣ ΣΤΑ ΓΕΝΙΚΑ ΜΑΘΗΜΑΤΙΚΑ

ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΒΙΟΜΗΧΑΝΙΑΣ ΑΡΙΘΜΗΤΙΚΗ ΑΝΑΛΥΣΗ, 3 Ο ΕΞΑΜΗΝΟ, ΔΙΔΑΣΚΩΝ: Δρ Ιωάννης Αθ. Σταυράκης

Εφαρμοσμένα Μαθηματικά ΙΙ 7ο Σετ Ασκήσεων (Λύσεις) Ορίζουσες Επιμέλεια: Ι. Λυχναρόπουλος

ΑΡΙΘΜΗΤΙΚΗ ΑΝΑΛΥΣΗ, , 3 ο ΕΞΑΜΗΝΟ ΑΠΑΝΤΗΣΕΙΣ ΕΡΓΑΣΙΑΣ #1: ΑΡΙΘΜΗΤΙΚΗ ΚΙΝΗΤΗΣ ΥΠΟ ΙΑΣΤΟΛΗΣ ΚΑΙ ΡΙΖΕΣ ΕΞΙΣΩΣΕΩΝ ΕΠΙΜΕΛΕΙΑ: Σ.

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ - ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΑΡΙΘΜΗΤΙΚΗ ΑΝΑΛΥΣΗ, 3 Ο ΕΞΑΜΗΝΟ, ΔΙΔΑΣΚΩΝ: Δρ Ιωάννης Αθ.

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

ΥΠΟΛΟΓΙΣΤΕΣ Ι. Τι είναι μια υπορουτίνα; με υπορουτίνα ΥΠΟΡΟΥΤΙΝΕΣ. Παράδειγμα #1: η πράξη SQ. Ποια η διαφορά συναρτήσεων και υπορουτίνων;

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

Ιδιοτιμές & Ιδιοδιανύσματα Επαναληπτικές Μέθοδοι

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

Kεφάλαιο 4. Συστήματα διαφορικών εξισώσεων. F : : F = F r, όπου r xy

Απαντήσεις στα Θέµατα Ιουνίου 2012 (3 και 4)

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

Επιστηµονικοί Υπολογισµοί (Αρ. Γρ. Αλγεβρα)Επαναληπτικές µέθοδοι και 31 Μαρτίου Ηµι-Επαναληπτικές Μέθοδο / 17

Επιλύστε αριθμητικά το με τη μέθοδο των πεπερασμένων διαφορών το παρακάτω πρόβλημα δύο οριακών τιμών:

3. Γραμμικά Συστήματα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ - ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΑΡΙΘΜΗΤΙΚΗ ΑΝΑΛΥΣΗ, 3 Ο ΕΞΑΜΗΝΟ, ΔΙΔΑΣΚΩΝ: Δρ Ιωάννης Αθ.

Παράδειγμα #9 ΠΡΟΒΛΗΜΑΤΑ ΔΥΟ ΟΡΙΑΚΩΝ ΤΙΜΩΝ ΕΛΛΕΙΠΤΙΚΕΣ ΣΔΕ ΕΠΙΜΕΛΕΙΑ: Ν. Βασιλειάδης

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

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

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

Αριθµητική Γραµµική ΑλγεβραΚεφάλαιο 4. Αριθµητικός Υπολογισµός Ιδιοτιµών 2 Απριλίου και2015 Ιδιοδιανυσµάτων 1 / 50

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

Υπολογιστές Ι. Άδειες Χρήσης. Υποπρογράμματα. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

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

Μετατροπή μήτρας από μορφή πίνακα σε μορφή καταλόγου μη-μηδενικών στοιχείων και αντιστρόφως

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

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

ΑΝΤΩΝΙΟΥ Ν. ΑΝΔΡΙΩΤΗ ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ (Β

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

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

(συνθήκη συμμετρίας) (4) Το παραπάνω πρόβλημα μπορεί να περιγράψει τη μεταβατική πλήρως ανεπτυγμένη ροή σε κυλινδρικό αγωγό.

Άσκηση εφαρμογής της μεθόδου Newton Raphson

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ -ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ. Λύσεις των Θεμάτων εξέτασης προόδου στο μάθημα «Γραμμική Άλγεβρα» (ΗΥ119)

Εφαρμοσμένα Μαθηματικά ΙΙ 7ο Σετ Ασκήσεων (Λύσεις) Γραμμικά Συστήματα- Απαλοιφή Gauss Επιμέλεια: I. Λυχναρόπουλος

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

Επιμέλεια απαντήσεων: Ιωάννης Λυχναρόπουλος

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

ΘΕΩΡΙΑ ΠΙΝΑΚΩΝ. Ορισμός 1: Ένας πίνακας Α με m γραμμές και n στήλες,

ΘΕΜΑ 2ο. Άσκηση εφαρµογής της µεθόδου Newton Raphson

Πρόλογος Εισαγωγή στη δεύτερη έκδοση Εισαγωγή... 11

FORTRAN και Αντικειμενοστραφής Προγραμματισμός

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

ΥΠΟΛΟΓΙΣΤΕΣ Ι. Τι είναι μια συνάρτηση; ΣΥΝΑΡΤΗΣΕΙΣ. Δήλωση συνάρτησης sq. Παράδειγμα συνάρτησης: υπολογισμός τετραγώνου

Transcript:

Παράδειγμα #4 ΑΛΓΕΒΡΙΚΑ ΣΥΣΤΗΜΑΤΑ ΕΞΙΣΩΣΕΩΝ Επιμέλεια: ΓΙΑΝΝΗΣ ΛΥΧΝΑΡΟΠΟΥΛΟΣ Άσκηση 1 Τα ισοζύγια µάζας του συστήµατος διανοµής ατµού σε µονάδα διυλιστηρίου δίνονται από τις παρακάτω εξισώσεις: 181.60 x 3 132.57 x 4 x 5 = 5.1 1.17x 3 x 6 = 0 132.57 0.745x 7 = 61.2 x 5 + x 7 x 8 x 9 x 10 + x 2 = 99.1 x 8 + x 9 +x 10 + x 11 x 12 x 13 = 8.4 x 6 x 2 = 24.2 1.15(181.60) + x 3 x 6 +x 12 +x 1 = 19.7 181.60 4.594x 12 0.11x 1 = 35.05 0.0423(181.60) + x 11 = 2.88 0.016(181.60) + x 4 = 0 x 8 0.0147x 1 = 0 x 5 0.07x 14 = 0 0.0805(181.60) + x 9 = 0 x 12 x 14 + x 1 = 97.9 Τα έχουν µονάδες σε 1000 kg/hr. Οι εξισώσεις (1-14) αντιστοιχούν σε ισοζύγια µάζας στις συσκευές: Header 680-psia, De-super heater, Alternator turbine, Header 170-psia, Header 37-psia, Header 215-psia, BFW balance, Condensate drum, Blow down flash drum, Boiler atomizing, Treated feed-water pump, Boiler feed-water pump, Boiler fan, De-aerator. Να προσδιορισθούν οι 14 άγνωστοι, λύνοντας το γραµµικό σύστηµα µε την µεθόδους Απαλοιφή Gauss και Gauss Seidel. Στην περίπτωση της επαναληπτικής µεθόδου Gauss Seidel να υπολογισθούν µε χρήση υπολογιστικού πακέτου οι ιδιοτιµές του πίνακα επανάληψης και να σχολιασθεί η σύγκλιση της µεθόδου. Με βάση τα αποτελέσµατα να σχολιασθούν τα πλεονεκτήµατα και µειονεκτήµατα των δύο προσεγγίσεων. 1

Απάντηση: Κάνοντας πράξεις και αναδιατάσσοντας τις εξισώσεις έτσι ώστε τα διαγώνια στοιχεία τους να είναι διάφορα του μηδενός παίρνουμε το ακόλουθο σύστημα: x1 +x3 -x6 +x12 = 189.14 -x2 +x6 = 24.2 x3 +x4 +x5 = 43.93 x4 = 2.9056 x5-0.07 x14 = 0 1.17 x3 -x6 = 0 0.745 x7 = 71.37-0.0147 x1 +x8 = 0 x9 = 14.6188 x2 +x5 +x7 -x8 -x9 -x10 = 99.1 x11 = 10.5617 0.11 x1 +4.594 x12 = 146.55 x8 +x9 +x10 +x11 -x12 -x13 = -8.4 x1 +x12 -x14 = -97.9 Άρα με μορφή πινάκων έχουμε να λύσουμε το γραμμικό σύστημα Ax = B, όπου: Α= 1 0 1 0 0-1 0 0 0 0 0 1 0 0 0-1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0-0.07 0 0 1.17 0 0-1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.745 0 0 0 0 0 0 0-0.0147 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1-1 -1-1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0.11 0 0 0 0 0 0 0 0 0 0 4.594 0 0 0 0 0 0 0 0 0 1 1 1 1-1 -1 0 1 0 0 0 0 0 0 0 0 0 0 1 0-1 και Β= 189.14 24.2 43.93 2.9056 0 0 71.37 0 14.6188 99.1 10.5617 146.55-8.4-97.9 2

Λύνοντας το σύστημα στη Mathematica παίρνουμε: a b 1 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0.07 0 0 1.17 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.745 0 0 0 0 0 0 0 0.0147 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0.11 0 0 0 0 0 0 0 0 0 0 4.594 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 189.14 24.2 43.93 2.9056 0 0 71.37 0 14.6188 99.1 10.5617 146.55 8.4 97.9 LinearSolve[a,b] {{164.7},{0.00196857},{20.6854},{2.9056},{20.339},{24.202},{95.7987},{2. 42109},{14.6188},{-0.000304565},{10.5617},{27.9567},{8.0446},{290.557}} Το πρόγραμμα σε Fortran που κάνει επίλυση γραμμικού συστήματος με τη μέθοδο Gauss είναι το ακόλουθο: Program Gauss_Jordan USE DFPORT! Απαιτείται για την μέτρηση του CPU Time implicit none doubleprecision,allocatable::a(:,:),x(:) integer,allocatable::tx(:) integer::n=14,i,j,k,status real::t,pivot,s,tim,ta(2) allocate(a(n,n+1),x(n),tx(n)) if (status/=0) Stop 'Not enough memory' 3

! Ορισμός του συστήματος a(1,:)=(/1.,0.,1.,0.,0.,-1.,0.,0.,0.,0.,0.,1.,0.,0.,189.14/) a(2,:)=(/0.,-1.,0.,0.,0.,1.,0.,0.,0.,0.,0.,0.,0.,0.,24.2/) a(3,:)=(/0.,0.,1.,1.,1.,0.,0.,0.,0.,0.,0.,0.,0.,0.,43.93/) a(4,:)=(/0.,0.,0.,1.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,2.9056/) a(5,:)=(/0.,0.,0.,0.,1.,0.,0.,0.,0.,0.,0.,0.,0.,-0.07,0./) a(6,:)=(/0.,0.,1.17,0.,0.,-1.,0.,0.,0.,0.,0.,0.,0.,0.,0./) a(7,:)=(/0.,0.,0.,0.,0.,0.,0.745,0.,0.,0.,0.,0.,0.,0.,71.37/) a(8,:)=(/-0.0147,0.,0.,0.,0.,0.,0.,1.,0.,0.,0.,0.,0.,0.,0./) a(9,:)=(/0.,0.,0.,0.,0.,0.,0.,0.,1.,0.,0.,0.,0.,0.,14.6188/) a(10,:)=(/0.,1.,0.,0.,1.,0.,1.,-1.,-1.,-1.,0.,0.,0.,0.,99.1/) a(11,:)=(/0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,1.,0.,0.,0.,10.56168/) a(12,:)=(/0.11,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,4.594,0.,0.,146.55/) a(13,:)=(/0.,0.,0.,0.,0.,0.,0.,1.,1.,1.,1.,-1.,-1.,0.,-8.4/) a(14,:)=(/1.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,1.,0.,-1.,-97.9/)! Ο πίνακας ΤΧ «θυμάται» τις αλλαγές των στηλών σε πλήρη οδήγηση do i=1,n TX(i)=i call print_table k=1 do while (k<=n)! Επιλογή οδηγού pivot=find_pivot(3,k)! 3= Πλήρης οδήγηση if (pivot==0) then print*, 'Pivot = 0. Gauss elimination can not continue' stop endif! Αρχή «τριγωνοποίησης» πίνακα do j=k,n+1 a(k,j)=a(k,j)/pivot do i=k+1,n t=a(i,k) do j=k,n+1 a(i,j)=a(i,j)-a(k,j)*t call print_table read* k=k+1! Η «τριγωνοποίηση» του πίνακα ολοκληρώθηκε! Οπισθοδρόμηση x(n)=a(n,n+1) do i=n-1,1,-1 s=0 4

do j=i+1,n s=s+a(i,j)*x(j) x(i)=a(i,n+1)-s!εμφάνιση του αποτελέσματος do i=1,n print*,'x(',tx(i),')= ',x(i)!υπολογισμός του CPU Time tim = ETIME(TA) print*, 'Program has used', tim, 'seconds of CPU time.'! Υποπρογράμματα Contains! Εκτύπωση πίνακα subroutine print_table integer::i print*, '----------------------------------------------------------' do i=1,n print*, a(i,:) end subroutine print_table!εύρεση οδηγού της k-γραμμής! s=1 χωρίς οδήγηση! s=2 μερική οδήγηση! s=3 πλήρης οδήγηση real function find_pivot(s,k) integer,intent(in)::s,k integer::i,maxi,maxj,t real::max,temp if (s==1) then! No pivoting max=a(k,k) elseif (s==2) then! Partial Pivoting max=a(k,k) maxi=k do i=k,n if (abs(a(i,k))>abs(max)) then max=a(i,k) maxi=i endif if (maxi/=k) then do j=1,n+1 temp=a(k,j) a(k,j)=a(maxi,j) a(maxi,j)=temp endif elseif (s==3) then! Full Pivoting 5

max=a(k,k) maxi=k maxj=k do i=k,n do j=k,n if (abs(a(i,j))>abs(max)) then max=a(i,j) maxi=i maxj=j endif if (maxi/=k) then do j=1,n+1 temp=a(k,j) a(k,j)=a(maxi,j) a(maxi,j)=temp endif if (maxj/=k) then do i=1,n temp=a(i,k) a(i,k)=a(i,maxj) a(i,maxj)=temp t=tx(k) TX(k)=TX(maxj) TX(maxj)=t endif endif print*,'after pivoting' call print_table do i=1,n print*, TX(i) find_pivot=max end function find_pivot end Τρέχοντας το πρόγραμμα δίνει τα εξής αποτελέσματα: 6

Αρχικός Πίνακας 1 0 1 0 0-1 0 0 0 0 0 1 0 0 189.140 0-1 0 0 0 1 0 0 0 0 0 0 0 0 24.200 0 0 1 1 1 0 0 0 0 0 0 0 0 0 43.930 0 0 0 1 0 0 0 0 0 0 0 0 0 0 2.906 0 0 0 0 1 0 0 0 0 0 0 0 0-0.070 0 0 0 1.170 0 0-1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.745 0 0 0 0 0 0 0 71.370-0.015 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 14.619 0 1 0 0 1 0 1-1 -1-1 0 0 0 0 99.100 0 0 0 0 0 0 0 0 0 0 1 0 0 0 10.562 0.110 0 0 0 0 0 0 0 0 0 0 4.594 0 0 146.550 0 0 0 0 0 0 0 1 1 1 1-1 -1 0-8.400 1 0 0 0 0 0 0 0 0 0 0 1 0-1 -97.900 Γραμμή = 1 Οδηγός = 4.594 Στη θέση 12,12 (του προηγούμενου πίνακα) 1 0 0 0 0 0 0 0 0 0 0 0.024 0 0 31.900 0-1 0 0 0 1 0 0 0 0 0 0 0 0 24.200 0 0 1 1 1 0 0 0 0 0 0 0 0 0 43.930 0 0 0 1 0 0 0 0 0 0 0 0 0 0 2.906 0 0 0 0 1 0 0 0 0 0 0 0 0-0.070 0 0 0 1.170 0 0-1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.745 0 0 0 0 0 0 0 71.370 0 0 0 0 0 0 0 1 0 0 0-0.015 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 14.619 0 1 0 0 1 0 1-1 -1-1 0 0 0 0 99.100 0 0 0 0 0 0 0 0 0 0 1 0 0 0 10.562 0 0 1 0 0-1 0 0 0 0 0 0.976 0 0 157.240 0 0 0 0 0 0 0 1 1 1 1 0.024-1 0 23.500 0 0 0 0 0 0 0 0 0 0 0 0.976 0-1 -129.800 Γραμμή = 2 Οδηγός = 1.170 Στη θέση 6,3 1 0 0 0 0 0 0 0 0 0 0 0.024 0 0 31.900 0 1 0 0 0-0.855 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0.855 0 0 0 0 0 0 0 0 43.930 0 0 0 1 0 0 0 0 0 0 0 0 0 0 2.906 0 0 0 0 1 0 0 0 0 0 0 0 0-0.070 0 0 0-1 0 0 1 0 0 0 0 0 0 0 0 24.200 0 0 0 0 0 0 0.745 0 0 0 0 0 0 0 71.370 0 0 0 0 0 0 0 1 0 0 0-0.015 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 14.619 0 0 1 0 1 0 1-1 -1-1 0 0 0 0 99.100 0 0 0 0 0 0 0 0 0 0 1 0 0 0 10.562 0 0 0 0 0-0.145 0 0 0 0 0 0.976 0 0 157.240 0 0 0 0 0 0 0 1 1 1 1 0.024-1 0 23.500 0 0 0 0 0 0 0 0 0 0 0 0.976 0-1 -129.800 Γραμμή = 3 Οδηγός = 1 Στη θέση 3,4 1 0 0 0 0 0 0 0 0 0 0 0.024 0 0 31.900 0 1 0 0 0-0.855 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0.855 0 0 0 0 0 0 0 0 43.930 0 0 0 0-1 -0.855 0 0 0 0 0 0 0 0-41.024 0 0 0 0 1 0 0 0 0 0 0 0 0-0.070 0 0 0 0-1 0 1 0 0 0 0 0 0 0 0 24.200 0 0 0 0 0 0 0.745 0 0 0 0 0 0 0 71.370 0 0 0 0 0 0 0 1 0 0 0-0.015 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 14.619 0 0 0 1 1 0 1-1 -1-1 0 0 0 0 99.100 0 0 0 0 0 0 0 0 0 0 1 0 0 0 10.562 0 0 0 0 0-0.145 0 0 0 0 0 0.976 0 0 157.240 0 0 0 0 0 0 0 1 1 1 1 0.024-1 0 23.500 0 0 0 0 0 0 0 0 0 0 0 0.976 0-1 -129.800 7

Γραμμή = 4 Οδηγός = -1 Στη θέση 4,5 1 0 0 0 0 0 0 0 0 0 0 0.024 0 0 31.900 0 1 0 0 0-0.855 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0.855 0 0 0 0 0 0 0 0 43.930 0 0 0 1 0 0.855 0 0 0 0 0 0 0 0 41.024 0 0 0 0 0-0.855 0 0 0 0 0 0 0-0.070-41.024 0 0 0 0-1 1 0 0 0 0 0 0 0 0 24.200 0 0 0 0 0 0 0.745 0 0 0 0 0 0 0 71.370 0 0 0 0 0 0 0 1 0 0 0-0.015 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 14.619 0 0 0 0 1-0.855 1-1 -1-1 0 0 0 0 58.076 0 0 0 0 0 0 0 0 0 0 1 0 0 0 10.562 0 0 0 0 0-0.145 0 0 0 0 0 0.976 0 0 157.240 0 0 0 0 0 0 0 1 1 1 1 0.024-1 0 23.500 0 0 0 0 0 0 0 0 0 0 0 0.976 0-1 -129.800 Γραμμή = 5 Οδηγός = -1 Στη θέση 6,5 1 0 0 0 0 0 0 0 0 0 0 0.024 0 0 31.900 0 1 0 0 0-0.855 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0.855 0 0 0 0 0 0 0 0 43.930 0 0 0 1 0 0.855 0 0 0 0 0 0 0 0 41.024 0 0 0 0 1-1 0 0 0 0 0 0 0 0-24.200 0 0 0 0 0-0.855 0 0 0 0 0 0 0-0.070-41.024 0 0 0 0 0 0 0.745 0 0 0 0 0 0 0 71.370 0 0 0 0 0 0 0 1 0 0 0-0.015 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 14.619 0 0 0 0 0 0.145 1-1 -1-1 0 0 0 0 82.276 0 0 0 0 0 0 0 0 0 0 1 0 0 0 10.562 0 0 0 0 0-0.145 0 0 0 0 0 0.976 0 0 157.240 0 0 0 0 0 0 0 1 1 1 1 0.024-1 0 23.500 0 0 0 0 0 0 0 0 0 0 0 0.976 0-1 -129.800 Γραμμή = 6 Οδηγός = 1 Στη θέση 8,8 1 0 0 0 0 0 0 0 0 0 0 0.024 0 0 31.900 0 1 0 0 0 0 0-0.855 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0.855 0 0 0 0 0 0 43.930 0 0 0 1 0 0 0 0.855 0 0 0 0 0 0 41.024 0 0 0 0 1 0 0-1 0 0 0 0 0 0-24.200 0 0 0 0 0 1 0 0 0 0 0-0.015 0 0 0 0 0 0 0 0 0 0.745 0 0 0 0 0 0 0 71.370 0 0 0 0 0 0 0-0.855 0 0 0 0 0-0.070-41.024 0 0 0 0 0 0 0 0 1 0 0 0 0 0 14.619 0 0 0 0 0 0 1 0.145-1 -1 0-0.015 0 0 82.276 0 0 0 0 0 0 0 0 0 0 1 0 0 0 10.562 0 0 0 0 0 0 0-0.145 0 0 0 0.976 0 0 157.240 0 0 0 0 0 0 0 0 1 1 1 0.039-1 0 23.500 0 0 0 0 0 0 0 0 0 0 0 0.976 0-1 -129.800 Γραμμή = 7 Οδηγός = 1 Στη θέση 9,9 1 0 0 0 0 0 0 0 0 0 0 0.024 0 0 31.900 0 1 0 0 0 0 0-0.855 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0.855 0 0 0 0 0 0 43.930 0 0 0 1 0 0 0 0.855 0 0 0 0 0 0 41.024 0 0 0 0 1 0 0-1 0 0 0 0 0 0-24.200 0 0 0 0 0 1 0 0 0 0 0-0.015 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 14.619 0 0 0 0 0 0 0-0.855 0 0 0 0 0-0.070-41.024 0 0 0 0 0 0 0 0 0.745 0 0 0 0 0 71.370 0 0 0 0 0 0 0 0.145 1-1 0-0.015 0 0 96.894 0 0 0 0 0 0 0 0 0 0 1 0 0 0 10.562 0 0 0 0 0 0 0-0.145 0 0 0 0.976 0 0 157.240 0 0 0 0 0 0 0 0 0 1 1 0.039-1 0 8.882 0 0 0 0 0 0 0 0 0 0 0 0.976 0-1 -129.800 8

Γραμμή = 8 Οδηγός = 1 Στη θέση 10,9 1 0 0 0 0 0 0 0 0 0 0 0.024 0 0 31.900 0 1 0 0 0 0 0 0-0.855 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0.855 0 0 0 0 0 43.930 0 0 0 1 0 0 0 0 0.855 0 0 0 0 0 41.024 0 0 0 0 1 0 0 0-1 0 0 0 0 0-24.200 0 0 0 0 0 1 0 0 0 0 0-0.015 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 14.619 0 0 0 0 0 0 0 1 0.145-1 0-0.015 0 0 96.894 0 0 0 0 0 0 0 0-0.108 0.745 0 0.011 0 0-0.816 0 0 0 0 0 0 0 0-0.855 0 0 0 0-0.070-41.024 0 0 0 0 0 0 0 0 0 0 1 0 0 0 10.562 0 0 0 0 0 0 0 0-0.145 0 0 0.976 0 0 157.240 0 0 0 0 0 0 0 0 0 1 1 0.039-1 0 8.882 0 0 0 0 0 0 0 0 0 0 0 0.976 0-1 -129.800 Γραμμή = 9 Οδηγός = 1 Στη θέση 11,11 1 0 0 0 0 0 0 0 0 0 0 0.024 0 0 31.900 0 1 0 0 0 0 0 0 0 0-0.855 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0.855 0 0 0 43.930 0 0 0 1 0 0 0 0 0 0 0.855 0 0 0 41.024 0 0 0 0 1 0 0 0 0 0-1 0 0 0-24.200 0 0 0 0 0 1 0 0 0 0 0-0.015 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 14.619 0 0 0 0 0 0 0 1 0-1 0.145-0.015 0 0 96.894 0 0 0 0 0 0 0 0 1 0 0 0 0 0 10.562 0 0 0 0 0 0 0 0 0 0-0.855 0 0-0.070-41.024 0 0 0 0 0 0 0 0 0 0.745-0.108 0.011 0 0-0.816 0 0 0 0 0 0 0 0 0 0-0.145 0.976 0 0 157.240 0 0 0 0 0 0 0 0 0 1 0 0.039-1 0-1.680 0 0 0 0 0 0 0 0 0 0 0 0.976 0-1 -129.800 Γραμμή = 10 Οδηγός = 1 Στη θέση 13,10 1 0 0 0 0 0 0 0 0 0 0 0.024 0 0 31.900 0 1 0 0 0 0 0 0 0 0-0.855 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0.855 0 0 0 43.930 0 0 0 1 0 0 0 0 0 0 0.855 0 0 0 41.024 0 0 0 0 1 0 0 0 0 0-1 0 0 0-24.200 0 0 0 0 0 1 0 0 0 0 0-0.015 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 14.619 0 0 0 0 0 0 0 1 0-1 0.145-0.015 0 0 96.894 0 0 0 0 0 0 0 0 1 0 0 0 0 0 10.562 0 0 0 0 0 0 0 0 0 1 0 0.039-1 0-1.680 0 0 0 0 0 0 0 0 0 0-0.108-0.018 0.745 0 0.435 0 0 0 0 0 0 0 0 0 0-0.145 0.976 0 0 157.240 0 0 0 0 0 0 0 0 0 0-0.855 0 0-0.070-41.024 0 0 0 0 0 0 0 0 0 0 0 0.976 0-1 -129.800 Γραμμή = 11 Οδηγός = -1 Στη θέση 14,14 1 0 0 0 0 0 0 0 0 0 0 0.024 0 0 31.900 0 1 0 0 0 0 0 0 0 0 0 0 0-0.855 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0.855 43.930 0 0 0 1 0 0 0 0 0 0 0 0 0 0.855 41.024 0 0 0 0 1 0 0 0 0 0 0 0 0-1 -24.200 0 0 0 0 0 1 0 0 0 0 0-0.015 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 14.619 0 0 0 0 0 0 0 1 0-1 0-0.015 0 0.145 96.894 0 0 0 0 0 0 0 0 1 0 0 0 0 0 10.562 0 0 0 0 0 0 0 0 0 1 0 0.039-1 0-1.680 0 0 0 0 0 0 0 0 0 0 1-0.976 0 0 129.800 0 0 0 0 0 0 0 0 0 0 0 0.976 0-0.145 157.240 0 0 0 0 0 0 0 0 0 0 0-0.068 0-0.855-31.938 0 0 0 0 0 0 0 0 0 0 0-0.018 0.745-0.108 0.435 9

Γραμμή = 12 Οδηγός = 0.976 Στη θέση 12,12 1 0 0 0 0 0 0 0 0 0 0 0.024 0 0 31.900 0 1 0 0 0 0 0 0 0 0 0 0 0-0.855 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0.855 43.930 0 0 0 1 0 0 0 0 0 0 0 0 0 0.855 41.024 0 0 0 0 1 0 0 0 0 0 0 0 0-1 -24.200 0 0 0 0 0 1 0 0 0 0 0-0.015 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 14.619 0 0 0 0 0 0 0 1 0-1 0-0.015 0 0.145 96.894 0 0 0 0 0 0 0 0 1 0 0 0 0 0 10.562 0 0 0 0 0 0 0 0 0 1 0 0.039-1 0-1.680 0 0 0 0 0 0 0 0 0 0 1-0.976 0 0 129.800 0 0 0 0 0 0 0 0 0 0 0 1 0-0.149 161.097 0 0 0 0 0 0 0 0 0 0 0 0 0-0.865-20.932 0 0 0 0 0 0 0 0 0 0 0 0 0.745-0.111 3.309 Γραμμή = 13 Οδηγός = -0.865 Στη θέση 13,14 1 0 0 0 0 0 0 0 0 0 0 0.024 0 0 31.900 0 1 0 0 0 0 0 0 0 0 0 0-0.855 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0.855 0 43.930 0 0 0 1 0 0 0 0 0 0 0 0 0.855 0 41.024 0 0 0 0 1 0 0 0 0 0 0 0-1 0-24.200 0 0 0 0 0 1 0 0 0 0 0-0.015 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 14.619 0 0 0 0 0 0 0 1 0-1 0-0.015 0.145 0 96.894 0 0 0 0 0 0 0 0 1 0 0 0 0 0 10.562 0 0 0 0 0 0 0 0 0 1 0 0.039 0-1 -1.680 0 0 0 0 0 0 0 0 0 0 1-0.976 0 0 129.800 0 0 0 0 0 0 0 0 0 0 0 1-0.149 0 161.097 0 0 0 0 0 0 0 0 0 0 0 0 1 0 24.202.745 5.993 Γραμμή = 14 Οδηγός = 0.745 Στη θέση 14,14 1 0 0 0 0 0 0 0 0 0 0 0.024 0 0 31.900 0 1 0 0 0 0 0 0 0 0 0 0-0.855 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0.855 0 43.930 0 0 0 1 0 0 0 0 0 0 0 0 0.855 0 41.024 0 0 0 0 1 0 0 0 0 0 0 0-1 0-24.200 0 0 0 0 0 1 0 0 0 0 0-0.015 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 14.619 0 0 0 0 0 0 0 1 0-1 0-0.015 0.145 0 96.894 0 0 0 0 0 0 0 0 1 0 0 0 0 0 10.562 0 0 0 0 0 0 0 0 0 1 0 0.039 0-1 -1.680 0 0 0 0 0 0 0 0 0 0 1-0.976 0 0 129.800 0 0 0 0 0 0 0 0 0 0 0 1-0.149 0 161.097 0 0 0 0 0 0 0 0 0 0 0 0 1 0 24.202 0 0 0 0 0 0 0 0 0 0 0 0 0 1 8.045 Η τελική λύση είναι: x1= 164.699832636669 x2= 1.966476440429688E-003 x3= 20.6854419708252 x4= 2.90560150146484 x5= 20.3389582633972 x6= 24.2019667634203 x7= 95.7986611127853 x8= 2.42108750343323 x9= 14.6188001632690 x10= -3.014611130609524E-004 x11= 10.5616798400879 x12= 27.9566880656356 10

x13= 8.04457733409522 x14= 290.556518216240 Ο χρόνος που απαιτήθηκε για να δοθεί η απάντηση είναι: 0.0625 δευτερόλεπτα (CPU Time) Το πρόγραμμα σε Fortran για τον αλγόριθμο Gauss-Seidel είναι το ακόλουθο: Program Gauss_Seidel USE DFPORT implicit none real,allocatable::a(:,:),b(:),x(:),x0(:) integer::n=14,i,j,k,status,done,maxi real::s1,s2,rel,err,max,ta(2) allocate(a(n,n),b(n),x(n),x0(n)) if (status/=0) Stop 'Not enough memory'! Ορισμός του συστήματος a(1,:)=(/1.,0.,1.,0.,0.,-1.,0.,0.,0.,0.,0.,1.,0.,0./) b(1)=189.14 a(2,:)=(/0.,-1.,0.,0.,0.,1.,0.,0.,0.,0.,0.,0.,0.,0./) b(2)=24.2 a(3,:)=(/0.,0.,1.,1.,1.,0.,0.,0.,0.,0.,0.,0.,0.,0./) b(3)=43.93 a(4,:)=(/0.,0.,0.,1.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0./) b(4)=2.9056 a(5,:)=(/0.,0.,0.,0.,1.,0.,0.,0.,0.,0.,0.,0.,0.,-0.07/) b(5)=0. a(6,:)=(/0.,0.,1.17,0.,0.,-1.,0.,0.,0.,0.,0.,0.,0.,0./) b(6)=0. a(7,:)=(/0.,0.,0.,0.,0.,0.,0.745,0.,0.,0.,0.,0.,0.,0./) b(7)=71.37 a(8,:)=(/-0.0147,0.,0.,0.,0.,0.,0.,1.,0.,0.,0.,0.,0.,0./) b(8)=0. a(9,:)=(/0.,0.,0.,0.,0.,0.,0.,0.,1.,0.,0.,0.,0.,0./) b(9)=14.6188 a(10,:)=(/0.,1.,0.,0.,1.,0.,1.,-1.,-1.,-1.,0.,0.,0.,0./) b(10)=99.1 a(11,:)=(/0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,1.,0.,0.,0./) b(11)=10.56168 a(12,:)=(/0.11,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,4.594,0.,0./) b(12)=146.55 a(13,:)=(/0.,0.,0.,0.,0.,0.,0.,1.,1.,1.,1.,-1.,-1.,0./) b(13)=-8.4 a(14,:)=(/1.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,1.,0.,-1./) b(14)=-97.9! Αρχική εκτίμηση x0(:)=(/160,0,20,3,20,24,95,2,14,0,10,28,8,290/)! Μέγιστο πλήθος επαναλήψεων maxi=1000! Επιθυμητό Σχετικό σφάλμα rel=0.01 11

k=1 done=0 do while (k<=maxi.and. done==0) print*,'k= ',k print*,'---------------' do i=1,n print*,x0(i) print*,'---------------' do i=1,n s1=0 do j=1,i-1 s1=s1+a(i,j)*x(j) s2=0 do j=i+1,n s2=s2+a(i,j)*x0(j) if (a(i,i)/=0) then x(i)= (-s1-s2+b(i)) / a(i,i) else print*,'error! To diagwnio stoixeio a(',i,',',i,') einai 0' stop endif! Έλεγχος για τερματισμό max=-1 do i=1,n if (x(i)/=0.) then err = abs((x(i) - x0(i))/x(i)) * 100. print*,'err=',err endif if (err>max) then max=err end if print*, 'maxerr=',max read* if (max<rel) then done=1 end if!τέλος ελέγχου τερματισμού x0(:)=x(:) k=k+1 print*,'==========solution============' do i=1,n print*,'x(',i,')=',x(i) 12

print*, 'Program has used', ETIME(TA), 'seconds of CPU time.' end Τρέχοντας το πρόγραμμα με αρχική εκτίμηση x0 = (160,0,20,3,20,24,95,2,14,0,10,28,8,290) παίρνουμε σταδιακά τα παρακάτω αποτελέσματα: n x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 Max Err % 0 160 0 20 3 20 24 95 2 14 0 10 28 8 290 100 1 165.14 2 164.75 20 3 164.70 77 4 164.69 49 5 164.69 91 6 164.69 97 7 164.69 99 8 164.69 98 9 164.69 98 10 164.69 98 11 164.69 98-0.2 000 008 0.2 880 993 4.7 548 294 E- 02-3.3 218 384 E- 02-2.1 991 730 E- 03 1.3 389 587 E- 03 2.3 612 976 E- 03 2.0 256 042 E- 03 1.9 760 132 E- 03 1.9 626 617 E- 03 1.9 683 838 E- 03 20.93 2.9056 20. 3 20.72 440 20.65 537 20.68 188 20.68 491 20.68 578 20.68 549 20.68 545 20.68 544 20.68 544 20.68 544 2.9056 00 2.9056 00 2.9056 00 2.9056 00 2.9056 00 2.9056 00 2.9056 00 2.9056 00 2.9056 00 2.9056 00 20. 369 03 20. 342 52 20. 339 49 20. 338 62 20. 338 91 20. 338 95 20. 338 96 20. 338 96 20. 338 96 20. 338 96 24.488 10 24.247 55 24.166 78 24.197 80 24.201 34 24.202 36 24.202 03 24.201 98 24.201 96 24.201 97 24.201 97 95.79 866 95.79 866 95.79 866 95.79 866 95.79 866 95.79 866 95.79 866 95.79 866 95.79 866 95.79 866 95.79 866 2.427 558 2.421 854 2.421 203 2.421 015 2.421 077 2.421 086 2.421 088 2.421 088 2.421 088 2.421 088 2.421 088 14.61 880 14.61 880 14.61 880 14.61 880 14.61 880 14.61 880 14.61 880 14.61 880 14.61 880 14.61 880 14.61 880-0.247 6959 0.315 1398 4.872 8943E -02-3.487 3962E -02-4.783 6304E -03-9.765 6250E -04 8.392 3340E -05-2.365 1123E -04-2.899 1699E -04-3.051 7578E -04-2.975 4639E -04 10.56 168 10.56 168 10.56 168 10.56 168 10.56 168 10.56 168 10.56 168 10.56 168 10.56 168 10.56 168 10.56 168 27. 946 15 27. 955 44 27. 956 50 27. 956 81 27. 956 71 27. 956 69 27. 956 69 27. 956 69 27. 956 69 27. 956 69 27. 956 69 7.8 141 94 8.3 620 32 8.0 939 12 8.0 098 15 8.0 400 68 8.0 439 00 8.0 449 66 8.0 446 43 8.0 445 90 8.0 445 75 8.0 445 82 290.9 861 290.6 074 290.5 642 290.5 517 290.5 558 290.5 564 290.5 566 290.5 565 290.5 565 290.5 565 290.5 565 178.59 88 546.71 99 243.13 85 141 0.4 94 389.84 38 126 3.6 36 135.48 39 18. 421 05 5.0 000 00 2.5 641 03 0.0 000 000 E+0 0 13

Οπότε η λύση είναι η: x( 1)= 164.6998 x( 2)= 1.9683838E-03 x( 3)= 20.68544 x( 4)= 2.905600 x( 5)= 20.33896 x( 6)= 24.20197 x( 7)= 95.79866 x( 8)= 2.421088 x( 9)= 14.61880 x(10)= -2.9754639E-04 x(11)= 10.56168 x(12)= 27.95669 x(13)= 8.044582 x(14)= 290.5565 και χρειάστηκαν 11 επαναλήψεις. Ο χρόνος που απαιτήθηκε για να δωθεί η απάντηση είναι: 0.0468 δευτερόλεπτα (CPU Time) Για τον υπολογισμό των ιδιοτιμών του πίνακα επανάληψης της μεθόδου Gauss-Seidel θα χρησιμοποιήσουμε τη Mathematica. Είναι γνωστό ότι αν Α=D-L-U τότε ο πίνακας επανάληψης της Gauss-Seidel είναι ο: G=(D-L) -1 U, όπου: D = o διαγώνιος πίνακας που προκύπτει από τον Α -L= o κάτω τριγωνικός πίνακας που προκύπτει από τον Α -U= o άνω τριγωνικός πίνακας που προκύπτει από τον Α Έχουμε λοιπόν: a 1 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0.07 0 0 1.17 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.745 0 0 0 0 0 0 0 0.0147 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0.11 0 0 0 0 0 0 0 0 0 0 4.594 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 14

l d u Θέτουμε: l = -l u = -u 0 0 1.17 0 0 0 0 0 0 0 0 0 0 0 0.0147 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 1 0 0 0 0 0 0.11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.745 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.594 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0.07 15

Δοκιμάζουμε αν έγινε σωστά το «σπάσιμο» του Α σε D,L,U ad-l-u True Βρίσκουμε τον G: g = Inverse[d-l].u και τις ιδιοτιμές του: (H Chop στογγυλεύει σε 0 τις τιμές που βρίσκονται πολύ κοντά στο 0) e=chop[eigenvalues[ν[g]]] {0.121353 +0.195878,0.121353-0.195878, -0.218761,0,0,0,0,0,0,0,0,0,0,0} Τέλος παίρνουμε την φασματική ακτίνα του g: ρ = Max[Abs[e]] (ή ρ=νorm[e,] ) ρ = 0.230423 Παρατηρούμε ότι ρ(g)< 1. Άρα η μέθοδος Gauss-Seidel συγκλίνει. Οι δύο μέθοδοι εφαρμόζουν διαφορετικές τεχνικές (απ ευθείας η απαλοιφή Gauss και επαναληπτική η Gauss-Seidel) οπότε ο μόνος τρόπος σύγκρισής τους είναι βάσει του χρόνου λειτουργίας του επεξεργαστή (CPU Τime), αλλά για την Gauss-Seidel αυτός είναι συνάρτηση της αρχικής εκτίμησης! Η απαλοιφή Gauss είναι σίγουρα πιο αργή σαν μέθοδος, αλλά έχει το πλεονέκτημα ότι δίνει με βεβαιότητα τη λύση του συστήματος. Από την άλλη η Gauss-Seidel είναι πιο γρήγορη αλλά έχει το μειονέκτημα ότι μπορεί να μην συγκλίνει πάντα (αν ρ(g)>=1) Άσκηση 2 Να βρεθούν οι πίνακες επανάληψης των επαναληπτικών µεθόδων (i) Jacobi, (ii) Gauss- Seidel, (iii) S.O.R και (iv) S.S.O.R. όταν αυτές εφαρµόζονται στην επίλυση του συστήµατος Αx=B Απάντηση: Αν G είναι ο πίνακας επανάληψης κάποιας επαναληπτικής μεθόδου πρέπει να ισχύει: x (n+1) = G x (n) + k Αν γράψουμε τον Α ως D-L-U όπου D = o διαγώνιος πίνακας που προκύπτει από τον Α -L= o κάτω τριγωνικός πίνακας που προκύπτει από τον Α -U= o άνω τριγωνικός πίνακας που προκύπτει από τον Α τότε έχουμε: i) Jacobi: Σε μορφή πινάκων η μέθοδος γράφετε ως εξής: Dx (n+1) = Lx (n) +Ux (n) +b Dx (n+1) = (L+U)x (n) +b 16

x (n+1) = D -1 (L+U)x (n) +D -1 b Άρα G = D -1 (L+U) ii) Gauss-Seidel Σε μορφή πινάκων η μέθοδος γράφετε ως εξής: Dx (n+1) = Lx (n+1) +Ux (n) +b Dx (n+1) - Lx (n+1) = Ux (n) +b (D L)x (n+1) = Ux (n) +b x (n+1) = (D L) -1 Ux (n) + (D L) -1 b Άρα G = (D-L) -1 U iii) S.O.R. Σε μορφή πινάκων η μέθοδος γράφετε ως εξής: Dx (n+1) = ω ( Lx (n+1) +Ux (n) +b ) + (1-ω)Dx (n) Dx (n+1) = ωlx (n+1) +ωux (n) +ωb + (1-ω)Dx (n) Dx (n+1) - ωlx (n+1) = ωux (n) + (1-ω)Dx (n) +ωb (D ωl)x (n+1) = [ωu + (1-ω)D]x (n) +ωb x (n+1) = (D ωl) -1 [ωu + (1-ω)D]x (n) +ω (D ωl) -1 b Άρα G = (D-ωL) -1 [ωu+(1-ω)d] iv) S.S.O.R. Σε μορφή πινάκων η μέθοδος γράφετε ως εξής: Dx (n+1/2) = ω ( Lx (n+1/2) +Ux (n) +b ) + (1-ω)Dx (n) (1) και Dx (n+1) = ω ( Lx (n+1/2) +Ux (n+1) +b ) + (1-ω)Dx (n+1/2) (2) (1) Dx (n+1/2) = ω Lx (n+1/2) + ω Ux (n) + ω b + (1-ω)Dx (n) Dx (n+1/2) - ω Lx (n+1/2) = ω Ux (n) + (1-ω)Dx (n) + ω b (D ω L)x (n+1/2) = [ω U + (1-ω)D]x (n) + ω b x (n+1/2) = (D ω L) -1 [ω U + (1-ω)D]x (n) + ω (D ω L) -1 b (3) (2) Dx (n+1) = ω Lx (n+1/2) + ω Ux (n+1) +ωb + (1-ω)Dx (n+1/2) Dx (n+1) - ω Ux (n+1) = ω Lx (n+1/2) + (1-ω)Dx (n+1/2) + ωb (D ω U)x (n+1) = [ω L+ (1-ω)D]x (n+1/2) + ωb (4) Αντικαθιστώντας την (3) στην (4) παίρνουμε: (D ω U)x (n+1) = [ω L+ (1-ω)D] (D ω L) -1 [ω U + (1-ω)D]x (n) + ω (D ω L) -1 b + ωb x (n+1) = (D ω U) -1 [ω L+ (1-ω)D] (D ω L) -1 [ω U + (1-ω)D]x (n) + (D ω U) -1 [ω (D ω L) -1 + ω] b Άρα G = (D-ωU) -1 [ωl+(1-ω)d](d-ωl) -1 [ωu+(1-ω)d] 17

Άσκηση 4 Να βρεθούν µε τη µέθοδο Newton οι ρίζες της εξίσωσης z 2 -z+1=0 Απάντηση: Με τη χρήση της Mathematica παίρνουμε: Solvez 2 z 1 0, zn {{z0.5 +0.866025 },{z0.5-0.866025 }} Άρα οι ρίζες της εξίσωσης είναι μιγαδικές. Υποθέτουμε ότι z = a + i b τότε: (a+i b) 2 (a+i b) + 1 = 0 a 2 + 2 i ab b 2 a i b + 1 = 0 a 2 + 2 i ab b 2 a i b + 1 = 0 (a 2 b 2 a + 1) + i (2ab b) = 0 Οπότε για την εύρεση των a και b πρέπει να λύσουμε το ακόλουθο σύστημα εξισώσεων: a 2 b 2 a + 1 = 0 και 2ab b = 0 Το παραπάνω σύστημα είναι μη γραμμικό, γι αυτό επιλέγετε σαν μεθοδολογία επίλυσης ο αλγόριθμος Newton. Ο αλγόριθμος Newton για 2x2 σύστημα σε Fortran είναι ο ακόλουθος: program Newton_2x2 implicit none integer::i,k,done,maxi doubleprecision::x1,x2,f1,f2, df1x1,df1x2,df2x1,df2x2,jac,dx1,dx2,err1,err2,rel! Ορισμός συστήματος F1(x1,x2)=x1**2-x2**2-x1+1 F2(x1,x2)=2*x1*x2-x2! Μερικές παράγωγοι df1x1(x1,x2)=2*x1-1 df1x2(x1,x2)=-2*x2 df2x1(x1,x2)=2*x2 df2x2(x1,x2)=2*x1-1! Ιακωβιανή Jac(x1,x2)=dF1x1(x1,x2)*dF2x2(x1,x2)-dF1x2(x1,x2)*dF2x1(x1,x2)! Αρχική εκτίμηση x1=1 x2=1! Μέγιστο πλήθος επαναλήψεων maxi=1000! Επιθυμητό σχετικό σφάλμα rel=0.01 18

k=1 done=0 do while (k<=maxi.and. done==0)! Λύση του γραμμικού συστήματος με τη μέθοδο Cramer dx1=(f2(x1,x2)*df1x2(x1,x2)-f1(x1,x2)*df2x2(x1,x2))/jac(x1,x2) dx2=(f1(x1,x2)*df2x1(x1,x2)-f2(x1,x2)*df1x1(x1,x2))/jac(x1,x2)! Έλεγχος σύγκλισης err1 = abs(dx1/(x1+dx1)) * 100. err2 = abs(dx2/(x2+dx2)) * 100. if (err1<rel.and.err2<rel) then done=1 end if print*, k,x1,x2,f1(x1,x2), F2(x1,x2),dF1x1(x1,x2),dF1x2(x1,x2),dF2x1(x1,x2),dF2x2(x1,x2),Jac(x1,x2),dx1,dx2,err1,err2 x1=x1+dx1 x2=x2+dx2 k=k+1 print*, '============Solution=============' print*, 'x1= ', x1, 'x2= ',x2 end Τα αποτελέσματα του αλγορίθμου έχουν ως εξής: k x1 x2 f1 f2 df1dx1 df1dx2 df2dx1 df2dx2 Jac dx1 dx2 err1 err2 1 1 1 0 1 1-2 2 1 5-0.4-0.2 66.66 25 2 0.6 0.8 0.12 0.16 0.2-1.6 1.6 0.2 2.6-0.107 6.153 21.875 7.142 3 0.492 0.861 0.00781-0.013-0.015-1.723 1.723-0.01538 2.969 0.0077321 0.00446 1.546 0.515 4 0.5 0.866 0.00003985 0.000069 0.0000797-1.732 1.732 0.0000797 2.999 0.0000398 0.000023 0.00797 0.00265 Άρα a = 0.5 και b= 0.8660239 Οπότε μία λύση της αρχικής εξίσωσης είναι η z = a + i b = 0.5 + i 0.8660239 Η άλλη λύση θα είναι η συζυγής της πρώτης δηλαδή η 0.5 - i 0.8660239 19

Άσκηση 5 ίδεται το µη γραµµικό σύστηµα όπου P είναι µια παράµετρος που καθορίζεται αυθαίρετα. Να λυθεί µε τη µέθοδο Newton και να βρεθεί το εύρος των τιµών της παραµέτρου P για το οποίο η µέθοδος Newton συγκλίνει. Απάντηση Αναδιατάσωντας τους όρους των εξισώσεων καταλήγουμε στο ισοδύναμο σύστημα: x6 0.5 x1 x2 0.5 x3 0 x7 2 x3 x4 2x5 0 x7 1 x1 x2 x5 0 x7 28837x1 139009x2 78213x3 18927x4 8427x5 13492 x6 10690 x7 x7 0 x1 x2 x3 x4 x5 1 0 p 2 x1 x4 3 1.7837 10 5 x3 x5 0 x1 x3 2.6058 x2 x4 0 Επιλέγουμε P=20 και αρχική εκτίμηση: x1=0.5 x2=0. x3=0. x4=0.5 x5=0. x6=0.5 x7=2. 20

Το πρόγραμμα σε Fortran είναι το ακόλουθο: (Η επίλυση του γραμμικού συστήματος που προκύπτει σε κάθε επανάληψη γίνεται με την μέθοδο Gauss με πλήρη οδήγηση. Γι αυτό τον λόγο ο αλγόριθμος που δόθηκε παραπάνω σε προηγούμενη άσκηση, τροποποιήθηκε ώστε να γίνει υποπρόγραμμα και ενσωματώθηκε στον παρακάτω αλγόριθμο.) program Newton_7x7 implicit none integer::i,j,k,maxi,done doubleprecision::x1,x2,x3,x4,x5,x6,x7,f1,f2,f3,f4,f5,f6,f7 doubleprecision::df1x1,df1x2,df1x3,df1x4,df1x5,df1x6,df1x7 doubleprecision::df2x1,df2x2,df2x3,df2x4,df2x5,df2x6,df2x7 doubleprecision::df3x1,df3x2,df3x3,df3x4,df3x5,df3x6,df3x7 doubleprecision::df4x1,df4x2,df4x3,df4x4,df4x5,df4x6,df4x7 doubleprecision::df5x1,df5x2,df5x3,df5x4,df5x5,df5x6,df5x7 doubleprecision::df6x1,df6x2,df6x3,df6x4,df6x5,df6x6,df6x7 doubleprecision::df7x1,df7x2,df7x3,df7x4,df7x5,df7x6,df7x7 doubleprecision::dx1,dx2,dx3,dx4,dx5,dx6,dx7 doubleprecision::a(7,8),x(7) real::err1,err2,err3,err4,err5,err6,err7,rel integer::tx(7)! Ορισμός Σταθεράς P real::p=20! Συναρτήσεις του συστήματος F1(x1,x2,x3,x4,x5,x6,x7)=0.5*x1 + x2 + 0.5*x3 - x6/x7 F2(x1,x2,x3,x4,x5,x6,x7)=x3 + x4 + 2*x5-2/x7 F3(x1,x2,x3,x4,x5,x6,x7)=x1 + x2 + x5-1/x7 F4(x1,x2,x3,x4,x5,x6,x7)=-28837*x1-139009*x2-78213*x3 + 18927*x4 + 8427*x5 + 13492/x7 - (10690*x6)/x7 F5(x1,x2,x3,x4,x5,x6,x7)=-1 + x1 + x2 + x3 + x4 + x5 F6(x1,x2,x3,x4,x5,x6,x7)=p**2*x1*x4**3-178370.*x3*x5 F7(x1,x2,x3,x4,x5,x6,x7)=x1*x3-2.6058*x2*x4! Μερικές παράγωγοι των συναρτήσεων του συστήματος df1x1(x1,x2,x3,x4,x5,x6,x7)=0.5 df1x2(x1,x2,x3,x4,x5,x6,x7)=1 df1x3(x1,x2,x3,x4,x5,x6,x7)=0.5 df1x4(x1,x2,x3,x4,x5,x6,x7)=0 df1x5(x1,x2,x3,x4,x5,x6,x7)=0 df1x6(x1,x2,x3,x4,x5,x6,x7)=-(1/x7) df1x7(x1,x2,x3,x4,x5,x6,x7)=x6/x7**2 df2x1(x1,x2,x3,x4,x5,x6,x7)=0 df2x2(x1,x2,x3,x4,x5,x6,x7)=0 df2x3(x1,x2,x3,x4,x5,x6,x7)=1 df2x4(x1,x2,x3,x4,x5,x6,x7)=1 df2x5(x1,x2,x3,x4,x5,x6,x7)=2 df2x6(x1,x2,x3,x4,x5,x6,x7)=0 df2x7(x1,x2,x3,x4,x5,x6,x7)=2/x7**2 21

df3x1(x1,x2,x3,x4,x5,x6,x7)=1 df3x2(x1,x2,x3,x4,x5,x6,x7)=1 df3x3(x1,x2,x3,x4,x5,x6,x7)=0 df3x4(x1,x2,x3,x4,x5,x6,x7)=0 df3x5(x1,x2,x3,x4,x5,x6,x7)=1 df3x6(x1,x2,x3,x4,x5,x6,x7)=0 df3x7(x1,x2,x3,x4,x5,x6,x7)=x7**(-2) df4x1(x1,x2,x3,x4,x5,x6,x7)=-28837 df4x2(x1,x2,x3,x4,x5,x6,x7)=-139009 df4x3(x1,x2,x3,x4,x5,x6,x7)=-78213 df4x4(x1,x2,x3,x4,x5,x6,x7)=18927 df4x5(x1,x2,x3,x4,x5,x6,x7)=8427 df4x6(x1,x2,x3,x4,x5,x6,x7)=-10690/x7 df4x7(x1,x2,x3,x4,x5,x6,x7)=(2*(-6746 + 5345*x6))/x7**2 df5x1(x1,x2,x3,x4,x5,x6,x7)=1 df5x2(x1,x2,x3,x4,x5,x6,x7)=1 df5x3(x1,x2,x3,x4,x5,x6,x7)=1 df5x4(x1,x2,x3,x4,x5,x6,x7)=1 df5x5(x1,x2,x3,x4,x5,x6,x7)=1 df5x6(x1,x2,x3,x4,x5,x6,x7)=0 df5x7(x1,x2,x3,x4,x5,x6,x7)=0 df6x1(x1,x2,x3,x4,x5,x6,x7)=(p**2)*(x4**3) df6x2(x1,x2,x3,x4,x5,x6,x7)=0 df6x3(x1,x2,x3,x4,x5,x6,x7)=-178370.*x5 df6x4(x1,x2,x3,x4,x5,x6,x7)=3*p**2*x1*x4**2 df6x5(x1,x2,x3,x4,x5,x6,x7)=-178370.*x3 df6x6(x1,x2,x3,x4,x5,x6,x7)=0 df6x7(x1,x2,x3,x4,x5,x6,x7)=0 df7x1(x1,x2,x3,x4,x5,x6,x7)=x3 df7x2(x1,x2,x3,x4,x5,x6,x7)=-2.6058*x4 df7x3(x1,x2,x3,x4,x5,x6,x7)=x1 df7x4(x1,x2,x3,x4,x5,x6,x7)=-2.6058*x2 df7x5(x1,x2,x3,x4,x5,x6,x7)=0 df7x6(x1,x2,x3,x4,x5,x6,x7)=0 df7x7(x1,x2,x3,x4,x5,x6,x7)=0! Αρχική εκτίμηση x1=0.5 x2=0. x3=0. x4=0.5 x5=0. x6=0.5 x7=2.! Μέγιστο πλήθος επαναλήψεων maxi=1000!επιθυμητό σχετικό σφάλμα rel=0.01 k=1 done=0 22

do while (k<=maxi.and. done==0) a(1,:)= (/df1x1(x1,x2,x3,x4,x5,x6,x7),df1x2(x1,x2,x3,x4,x5,x6,x7),df1x3(x1,x2,x3,x4,x5,x6,x7),df1x4(x1,x2,x3,x4,x5,x6,x7),df1x5(x1,x2,x3,x4,x5,x6,x7),df 1x6(x1,x2,x3,x4,x5,x6,x7),dF1x7(x1,x2,x3,x4,x5,x6,x7),- F1(x1,x2,x3,x4,x5,x6,x7)/) a(2,:)= (/df2x1(x1,x2,x3,x4,x5,x6,x7),df2x2(x1,x2,x3,x4,x5,x6,x7),df2x3(x1,x2,x3,x4,x5,x6,x7),df2x4(x1,x2,x3,x4,x5,x6,x7),df2x5(x1,x2,x3,x4,x5,x6,x7),df 2x6(x1,x2,x3,x4,x5,x6,x7),dF2x7(x1,x2,x3,x4,x5,x6,x7),- F2(x1,x2,x3,x4,x5,x6,x7)/) a(3,:)= (/df3x1(x1,x2,x3,x4,x5,x6,x7),df3x2(x1,x2,x3,x4,x5,x6,x7),df3x3(x1,x2,x3,x4,x5,x6,x7),df3x4(x1,x2,x3,x4,x5,x6,x7),df3x5(x1,x2,x3,x4,x5,x6,x7),df 3x6(x1,x2,x3,x4,x5,x6,x7),dF3x7(x1,x2,x3,x4,x5,x6,x7),- F3(x1,x2,x3,x4,x5,x6,x7)/) a(4,:)= (/df4x1(x1,x2,x3,x4,x5,x6,x7),df4x2(x1,x2,x3,x4,x5,x6,x7),df4x3(x1,x2,x3,x4,x5,x6,x7),df4x4(x1,x2,x3,x4,x5,x6,x7),df4x5(x1,x2,x3,x4,x5,x6,x7),df 4x6(x1,x2,x3,x4,x5,x6,x7),dF4x7(x1,x2,x3,x4,x5,x6,x7),- F4(x1,x2,x3,x4,x5,x6,x7)/) a(5,:)= (/df5x1(x1,x2,x3,x4,x5,x6,x7),df5x2(x1,x2,x3,x4,x5,x6,x7),df5x3(x1,x2,x3,x4,x5,x6,x7),df5x4(x1,x2,x3,x4,x5,x6,x7),df5x5(x1,x2,x3,x4,x5,x6,x7),df 5x6(x1,x2,x3,x4,x5,x6,x7),dF5x7(x1,x2,x3,x4,x5,x6,x7),- F5(x1,x2,x3,x4,x5,x6,x7)/) a(6,:)= (/df6x1(x1,x2,x3,x4,x5,x6,x7),df6x2(x1,x2,x3,x4,x5,x6,x7),df6x3(x1,x2,x3,x4,x5,x6,x7),df6x4(x1,x2,x3,x4,x5,x6,x7),df6x5(x1,x2,x3,x4,x5,x6,x7),df 6x6(x1,x2,x3,x4,x5,x6,x7),dF6x7(x1,x2,x3,x4,x5,x6,x7),- F6(x1,x2,x3,x4,x5,x6,x7)/) a(7,:)= (/df7x1(x1,x2,x3,x4,x5,x6,x7),df7x2(x1,x2,x3,x4,x5,x6,x7),df7x3(x1,x2,x3,x4,x5,x6,x7),df7x4(x1,x2,x3,x4,x5,x6,x7),df7x5(x1,x2,x3,x4,x5,x6,x7),df 7x6(x1,x2,x3,x4,x5,x6,x7),dF7x7(x1,x2,x3,x4,x5,x6,x7),- F7(x1,x2,x3,x4,x5,x6,x7)/)! Κλήση υποπρογράμματος για την επίλυση του γραμμικού συστήματος! με την μέθοδο Gauss με πλήρη οδήγηση call Gauss(7,a,x,tx) do j=1,7 if (tx(j)==1) then dx1=x(j) elseif (tx(j)==2) then dx2=x(j) elseif (tx(j)==3) then dx3=x(j) elseif (tx(j)==4) then dx4=x(j) elseif (tx(j)==5) then dx5=x(j) elseif (tx(j)==6) then dx6=x(j) elseif (tx(j)==7) then dx7=x(j) end if 23

! Έλεγχος σύγκλισης err1 = abs(dx1/(x1+dx1)) * 100. err2 = abs(dx2/(x2+dx2)) * 100. err3 = abs(dx3/(x3+dx3)) * 100. err4 = abs(dx4/(x4+dx4)) * 100. err5 = abs(dx5/(x5+dx5)) * 100. err6 = abs(dx6/(x6+dx6)) * 100. err7 = abs(dx7/(x7+dx7)) * 100. if (err1<rel.and.err2<rel.and.err3<rel.and.err4<rel.and.err5<rel.and.err6<r el.and.err7<rel) then done=1 end if! Εκτυπώσεις print*, '----------------------' print*, i-1,x1,x2,x3,x4,x5,x6,x7,dx1,dx2,dx3,dx4,dx5,dx6,dx7 print*, 'df1' print*,df1x1(x1,x2,x3,x4,x5,x6,x7),df1x2(x1,x2,x3,x4,x5,x6,x7),df1 x3(x1,x2,x3,x4,x5,x6,x7),df1x4(x1,x2,x3,x4,x5,x6,x7),df1x5(x1,x2,x3,x4,x 5,x6,x7),dF1x6(x1,x2,x3,x4,x5,x6,x7),dF1x7(x1,x2,x3,x4,x5,x6,x7),- F1(x1,x2,x3,x4,x5,x6,x7) print*, 'df2' print*,df2x1(x1,x2,x3,x4,x5,x6,x7),df2x2(x1,x2,x3,x4,x5,x6,x7),df2 x3(x1,x2,x3,x4,x5,x6,x7),df2x4(x1,x2,x3,x4,x5,x6,x7),df2x5(x1,x2,x3,x4,x 5,x6,x7),dF2x6(x1,x2,x3,x4,x5,x6,x7),dF2x7(x1,x2,x3,x4,x5,x6,x7),- F2(x1,x2,x3,x4,x5,x6,x7) print*, 'df3' print*,df3x1(x1,x2,x3,x4,x5,x6,x7),df3x2(x1,x2,x3,x4,x5,x6,x7),df3 x3(x1,x2,x3,x4,x5,x6,x7),df3x4(x1,x2,x3,x4,x5,x6,x7),df3x5(x1,x2,x3,x4,x 5,x6,x7),dF3x6(x1,x2,x3,x4,x5,x6,x7),dF3x7(x1,x2,x3,x4,x5,x6,x7),- F3(x1,x2,x3,x4,x5,x6,x7) print*, 'df4' print*,df4x1(x1,x2,x3,x4,x5,x6,x7),df4x2(x1,x2,x3,x4,x5,x6,x7),df4 x3(x1,x2,x3,x4,x5,x6,x7),df4x4(x1,x2,x3,x4,x5,x6,x7),df4x5(x1,x2,x3,x4,x 5,x6,x7),dF4x6(x1,x2,x3,x4,x5,x6,x7),dF4x7(x1,x2,x3,x4,x5,x6,x7),- F4(x1,x2,x3,x4,x5,x6,x7) print*, 'df5' print*,df5x1(x1,x2,x3,x4,x5,x6,x7),df5x2(x1,x2,x3,x4,x5,x6,x7),df5 x3(x1,x2,x3,x4,x5,x6,x7),df5x4(x1,x2,x3,x4,x5,x6,x7),df5x5(x1,x2,x3,x4,x 5,x6,x7),dF5x6(x1,x2,x3,x4,x5,x6,x7),dF5x7(x1,x2,x3,x4,x5,x6,x7),- F5(x1,x2,x3,x4,x5,x6,x7) print*, 'df6' print*,df6x1(x1,x2,x3,x4,x5,x6,x7),df6x2(x1,x2,x3,x4,x5,x6,x7),df6 x3(x1,x2,x3,x4,x5,x6,x7),df6x4(x1,x2,x3,x4,x5,x6,x7),df6x5(x1,x2,x3,x4,x 5,x6,x7),dF6x6(x1,x2,x3,x4,x5,x6,x7),dF6x7(x1,x2,x3,x4,x5,x6,x7),- F6(x1,x2,x3,x4,x5,x6,x7) print*, 'df7' print*,df7x1(x1,x2,x3,x4,x5,x6,x7),df7x2(x1,x2,x3,x4,x5,x6,x7),df7 x3(x1,x2,x3,x4,x5,x6,x7),df7x4(x1,x2,x3,x4,x5,x6,x7),df7x5(x1,x2,x3,x4,x 5,x6,x7),dF7x6(x1,x2,x3,x4,x5,x6,x7),dF7x7(x1,x2,x3,x4,x5,x6,x7),- F7(x1,x2,x3,x4,x5,x6,x7) read*! Νέες τιμές των x i x1=x1+dx1 24

x2=x2+dx2 x3=x3+dx3 x4=x4+dx4 x5=x5+dx5 x6=x6+dx6 x7=x7+dx7 k=k+1 print*,'------------solution----------------' print*, x1,x2,x3,x4,x5,x6,x7 contains subroutine Gauss(n,a,x,tx) integer,intent(in) :: n doubleprecision, INTENT(INOUT) ::a(n,n+1) doubleprecision, INTENT(OUT) ::x(n) integer, INTENT(OUT)::tx(n) integer :: i,j,k,maxi,maxj,t real::tt,pivot,s,max,temp do i=1,n TX(i)=i k=1 do while (k<=n)!find pivot Full Pivoting max=a(k,k) maxi=k maxj=k do i=k,n do j=k,n if (abs(a(i,j))>abs(max)) then max=a(i,j) maxi=i maxj=j endif if (maxi/=k) then do j=1,n+1 temp=a(k,j) a(k,j)=a(maxi,j) a(maxi,j)=temp endif if (maxj/=k) then do i=1,n temp=a(i,k) 25

end k=k+1 a(i,k)=a(i,maxj) a(i,maxj)=temp t=tx(k) TX(k)=TX(maxj) TX(maxj)=t endif pivot=max! end find pivot if (pivot==0) then print*, 'Pivot = 0. Gauss elimination can not continue' stop endif do j=k,n+1 a(k,j)=a(k,j)/pivot do i=k+1,n tt=a(i,k) do j=k,n+1 a(i,j)=a(i,j)-a(k,j)*tt x(n)=a(n,n+1) do i=n-1,1,-1 s=0 do j=i+1,n s=s+a(i,j)*x(j) x(i)=a(i,n+1)-s end subroutine Gauss Σε Mathematica έχουμε: Πλήθος εξισώσεων n=7; Ορισμός της σταθεράς p p=20; Ορισμός του συστήματος f και των μεταβλητών xy 26

f x6 0.5 x1 x2 0.5 x3, x7 2 x3 x4 2x5, x7 1 x1 x2 x5, x7 28837x1 139009x2 78213x3 18927x4 8427x5 13492 x6 10690 x7 x7, x1 x2 x3 x4 x5 1, p 2 x1 x4 3 1.7837 10 5 x3 x5, x1 x3 2.6058 x2 x4 ; xy x1, x2, x3, x4, x5, x6, x7; Επιθυμητό σχετικό σφάλμα relerr=0.01; Αρχική τιμή x0={0.5,0.,0.,0.5,0.,0.5,2.} Πίνακες μερικών παραγώγων Jac=Table[D[f[[i]],xy[[j]]],{i,n},{j,n}]//Simplify; Αρχικό σφάλμα maxerr=100; Μετρητής επαναλήψεων k=0; While[maxerr>relerr,Print["---------------------------------"]; k=k+1; Print["n=",k]; Δημιουργία κανόνων αντικατάστασης της μορφής π.χ. x1->0.5 κτλ r=table[xy[[i]]x0[[i]],{i,n}]; Υπολογισμός Μερικών Παραγώγων στα σημεία x0[i] J=Jac/.r//N;Print["J=",J//MatrixForm]; Υπολογισμός του πίνακα -f b=-f/.r;print["-f=",b]; Επίλυση του γραμμικού συστήματος Jdx=-f dx=linearsolve[j,b]//n;print["dx=",dx]; Υπολογισμός σχετικού σφάλματος maxerr=max[abs[100 dx/(x0+dx)]]; Υπολογισμός νέων x i x0=x0+dx;print["x=",x0]; Print["MaxErr=",maxerr]] Το αποτέλεσμα της εκτέλεσης του παραπάνω κώδικα δίνει: 27

Πίνακας μερικών παραγώγων του συστήματος: 0.5 1 0.5 0 0 1 x6 x7 x72 0 0 1 1 2 0 2 x72 1 1 0 0 1 0 1 x72 28837 139009 78213 18927 8427 10690 267465345x6 x7 x72 1 1 1 1 1 0 0 400 x4 3 0 178370. x5 1200 x1 x4 2 178370. x3 0 0 x3 2.6058 x4 x1 2.6058 x2 0 0 0 Αρχική εκτίμηση: x0={0.5,0.,0.,0.5,0.,0.5,2.} --------------------------------- n= 1 0.5 1. 0.5 0. 0. 0.5 0.125 0. 0. 1. 1. 2. 0. 0.5 1. 1. 0. 0. 1. 0. 0.25 J 28837. 139009. 78213. 18927. 8427. 5345. 2036.75 1. 1. 1. 1. 1. 0. 0. 50. 0. 0. 150. 0. 0. 0. 0. 1.3029 0.5 0. 0. 0. 0. -f= {0.,0.5,0.,881.5,0.,-25.,0.} dx= {-0.278983,0.0259277,0.0675623,-0.0736724,0.259165,-0.165675,- 0.0244406} x= {0.221017,0.0259277,0.0675623,0.426328,0.259165,0.334325,1.97556} MaxErr= 126.227 --------------------------------- n= 2 0.5 1. 0.5 0. 0. 0.506186 0.085662 0. 0. 1. 1. 2. 0. 0.512448 1. 1. 0. 0. 1. 0. 0.256224 J 28837. 139009. 78213. 18927. 8427. 5411.13 2541.25 1. 1. 1. 1. 1. 0. 0. 30.9949 0. 46227.3 48.2052 12051.1 0. 0. 0.0675623 1.11092 0.221017 0.0675623 0. 0. 0. f0.000987028, 0.000151183, 0.0000755915, 11.5712, 1.1102210 16, 3116.37, 0.0138712 dx= {0.089131,-0.0187857,-0.0121796,0.15287,- 0.211036,0.133822,0.549387} x= {0.310148,0.00714196,0.0553827,0.579198,0.0481293,0.468146,2.52495} MaxErr= 438.477 28

--------------------------------- n= 3 0.5 1. 0.5 0. 0. 0.396048 0.0734306 0. 0. 1. 1. 2. 0. 0.313708 1. 1. 0. 0. 1. 0. 0.156854 J 28837. 139009. 78213. 18927. 8427. 4233.75 1331.3 1. 1. 1. 1. 1. 0. 0. 77.7214 0. 8584.82 124.855 9878.62 0. 0. 0.0553827 1.50927 0.310148 0.0186105 0. 0. 0. f0.00449899, 0.0612569, 0.0306284, 461.333, 3.77476 10 15, 451.346, 0.00639769 dx= {0.0101365,0.00241286,-0.00866994,0.0337687,- 0.0376482,0.0851757,0.355281} x= {0.320285,0.00955481,0.0467128,0.612966,0.0104811,0.553322,2.88023} MaxErr= 359.2 --------------------------------- n= 4 0.5 1. 0.5 0. 0. 0.347195 0.0666998 0. 0. 1. 1. 2. 0. 0.241088 1. 1. 0. 0. 1. 0. 0.120544 J 28837. 139009. 78213. 18927. 8427. 3711.51 913.362 1. 1. 1. 1. 1. 0. 0. 92.1234 0. 1869.52 144.408 8332.16 0. 0. 0.0467128 1.59727 0.320285 0.0248979 0. 0. 0. f0.000943041, 0.0137481, 0.00687404, 102.826, 5.48173 10 16, 57.8247, 0.000300201 dx= {0.00255326,-0.00033001,-0.000682175,0.00512868,- 0.00666976,0.0225017,0.093912} x= {0.322838,0.0092248,0.0460306,0.618095,0.00381137,0.575824,2.97414} MaxErr= 174.997 --------------------------------- n= 5 0.5 1. 0.5 0. 0. 0.336232 0.0650979 0. 0. 1. 1. 2. 0. 0.226104 1. 1. 0. 0. 1. 0. 0.113052 J 28837. 139009. 78213. 18927. 8427. 3594.32 829.398 1. 1. 1. 1. 1. 0. 0. 94.4552 0. 679.833 148.005 8210.48 0. 0. 0.0460306 1.61063 0.322838 0.024038 0. 0. 0. f0.0000488981, 0.00071492, 0.00035746, 5.34557, 1.86483 10 16, 0.799406, 2.6685910 6 dx0.0000327544, 1.25805 10 6, 0.0000135159, 0.0000765086, 0.000094489, 0.000890356, 0.00371912 x= {0.322871,0.00922354,0.0460171,0.618172,0.00371688,0.576714,2.97786} MaxErr= 2.54216 29

--------------------------------- n= 6 0.5 1. 0.5 0. 0. 0.335812 0.0650358 0. 0. 1. 1. 2. 0. 0.225539 1. 1. 0. 0. 1. 0. 0.11277 J 28837. 139009. 78213. 18927. 8427. 3589.83 826.254 1. 1. 1. 1. 1. 0. 0. 94.4903 0. 662.979 148.057 8208.07 0. 0. 0.0460171 1.61083 0.322871 0.0240347 0. 0. 0. f7.1512510 8, 1.0502310 6, 5.2511310 7, 0.00784929, 4.5970210 17, 0.000225246, 1.9189210 10 dx9.7115710 9,8.1702610 10,3.2964110 9, 2.1085510 8, 2.6683610 8, 1.1524410 6, 4.8142610 6 x= {0.322871,0.00922354,0.0460171,0.618172,0.00371685,0.576715,2.97786} MaxErr= 0.00071791 Άρα για P=20 και αρχική εκτίμηση: x0={0.5,0.,0.,0.5,0.,0.5,2.} η μέθοδος συγκλίνει μετά από 6 επαναλήψεις στη λύση: x= {0.322871,0.00922354,0.0460171,0.618172,0.00371685,0.576715,2.97786} με μέγιστο σχετικό σφάλμα 0.00071791. 30