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

Σχετικά έγγραφα
ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ - ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΑΡΙΘΜΗΤΙΚΗ ΑΝΑΛΥΣΗ, 3 Ο ΕΞΑΜΗΝΟ, ΔΙΔΑΣΚΩΝ: Δρ Ιωάννης Αθ.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΑΡΙΘΜΗΤΙΚΗ ΟΛΟΚΛΗΡΩΣΗ

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

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

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

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

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

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

ΦΑΙΝΟΜΕΝΑ ΜΕΤΑΦΟΡΑΣ ΙΙ ΜΕΤΑΦΟΡΑ ΘΕΡΜΟΤΗΤΑΣ ΚΑΙ ΜΑΖΑΣ

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

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

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

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

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

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

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

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

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

D = / Επιλέξτε, π.χ, το ακόλουθο απλό παράδειγμα: =[IA 1 ].

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

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

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

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

ΦΥΣ 145 Μαθηματικές Μέθοδοι στη Φυσική. Γράψτε το ονοματεπώνυμο και αριθμό ταυτότητάς σας στο πάνω μέρος της αυτής της σελίδας.

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 1 η

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 1 η

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

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

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

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

την κεντρώα έκφραση πεπερασμένων διαφορών 2 ης τάξης και για τη παράγωγο f την ανάδρομη έκφραση πεπερασμένων διαφορών 2 ης τάξης xxx

Επίλυση ελλειπτικών διαφορικών εξισώσεων με πεπερασμένες διαφορές

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

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

n sin 1 n. 2 n n+1 6 n. = 1. = 1 2, = 13 4.

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΤΩΝ ΥΛΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ Εξετάσεις Ιουνίου 2002

Τμήμα Φυσικής Πανεπιστημίου Κύπρου Εαρινό Εξάμηνο 2015/2016. ΦΥΣ145 Υπολογιστικές Μέθοδοι στην Φυσική

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

Πίνακας Περιεχομένων

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

Τμήμα Εφαρμοσμένης Πληροφορικής

Σημειώσεις του μαθήματος Μητρωϊκή Στατική

8 FORTRAN 77/90/95/2003

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

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 1 η

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

Λύσεις ασκήσεων Άσκηση 1: Cengel and Ghajar, Κεφάλαιο 13: Προβλήματα και

Επιχειρησιακή Έρευνα I

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

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

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

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

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

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

Αριθμητική επίλυση του προβλήματος της Αγωγής Θερμότητας.

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

Πεπερασμένες Διαφορές.

Πιο συγκεκριμένα, η χρήση του MATLAB προσφέρει τα ακόλουθα πλεονεκτήματα.

Πίνακας Περιεχομένων

ΣΥΓΚΡΙΣΗ ΑΛΓΟΡΙΘΜΩΝ ΑΡΙΘΜΗΤΙΚΗΣ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗΣ ΚΑΙ ΕΠΙΛΥΣΗΣ ΓΡΑΜΜΙΚΩΝ ΚΑΙ ΜΗ-ΓΡΑΜΜΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ: ΧΡΗΣΗ ΤΟΥ MATLAB

(a) = lim. f y (a, b) = lim. (b) = lim. f y (x, y) = lim. g g(a + h) g(a) h g(b + h) g(b)

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

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

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

Transcript:

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ - ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΑΡΙΘΜΗΤΙΚΗ ΑΝΑΛΥΣΗ, 3 Ο ΕΞΑΜΗΝΟ, 2011-2012 ΔΙΔΑΣΚΩΝ: Δρ Ιωάννης Αθ. Σταυράκης 2 η Σειρά Ασκήσεων 14.12.2011 Άσκηση 1. Στο επόμενο σχήμα απεικονίζεται ένα σύστημα μαζών ελατηρίων. Πιο συγκεκριμένα, αριστερά φαίνεται το σύστημα στην αφόρτιστη κατάσταση και δεξιά στην θέση στατικής ισορροπίας. k 1 m 1 k 2 x 1 m 1 k 3 m 2 x 2 m 2 m 3 k 4 m 4 x 3 m 3 x 4 m 4 Αν k = 200, k = 400, k = 300, k = 150, m = 3, m = 4, m = 7, m = 2 και g = 10 (μονάδες S.I.): Α. Να γίνει η κατάστρωση των εξισώσεων (υπόδειξη: να θεωρηθεί x > x > x > x και για κάθε σώμα να γίνει το διάγραμμα ελεύθερου σώματος) Β. Να προσδιοριστούν τα x με τη χρήση του Mathematia. Γ. Να γραφτεί πρόγραμμα σε Fortran για την αριθμητική επίλυση του παραπάνω συστήματος με τις παρακάτω μεθόδους: 1. Παραγοντοποίηση LU 2. Cholesky 3. Gauss-Seidel Για την επαναληπτική μέθοδο, η επίλυση να γίνει με ακρίβεια 7 σημαντικών ψηφίων και σαν αρχική εκτίμηση να θεωρηθεί ότι x = 1, όπου i = 1,, 4. (Τα παραδοτέα θα είναι το πρόγραμμα για κάθε μέθοδο και τα αποτελέσματα που προκύπτουν). Α. Η κατάστρωση των εξισώσεων γίνεται με την βοήθεια του διαγράμματος ελεύθερου σώματος για κάθε ένα από τα τέσσερα σώματα. Σε κάθε σώμα ισχύει η ισορροπία των δυνάμεων. 1

k 1 x 1 m 1 g m 2 g m 3 g m 4 g m 1 m 2 m 3 m 4 k 2 (x 2 -x 1 ) k 3 (x 3 -x 2 ) k 4 (x 4 -x 3 ) F = 0 k x = m g + k (x x ) (k + k )x k x = m g F = 0 k (x x ) = m g + k (x x ) k x + (k + k )x k x = m g F = 0 k (x x ) = m g + k (x x ) k x + (k + k )x k x = m g F = 0 k (x x ) = m g k x + k x = m g Επομένως, προκύπτει ένα σύστημα τεσσάρων εξισώσεων με τέσσερις αγνώστους, τις μετατοπίσεις των σωμάτων. Το σύστημα σε μητρωική μορφή είναι το εξής: k + k k 0 0 x m g k k + k k 0 x m g 0 k k + k k x = m g 0 0 k k x m g B. Στο Mathematia η επίλυση του παραπάνω συστήματος γίνεται δίνοντας: N[LinearSolve[A,b]], όπου A το μητρώο των συντελεστών των αγνώστων και b το δεξιό μέλος. Το αποτέλεσμα που προκύπτει είναι: {{0.8},{1.125},{1.425},{1.55833}}. Γ. Παρακάτω φαίνεται ο πηγαίος κώδικας σε γλώσσα προγραμματισμού Fortran για τις διάφορες μεθόδους. Για κάθε μέθοδο, ο κώδικας γράφτηκε σε περιβάλλον linux (Ubuntu 10.10) και μεταγλωττίστηκε με τον ompiler gfortran έκδοση 4.4.5. Στους πηγαίους κώδικες το μητρώο των συντελεστών των αγνώστων συμβολίζεται με a(n,n) και το δεξιό μέλος με b(n). 1. Παραγοντοποίηση LU Ο πηγαίος κώδικας είναι: program lu 2

impliit none integer n parameter (n=4) double preision a(n,n),b(n) integer i,ipvt(n),info all initialization(n,a,b) all ludeomp(n,a,ipvt,info) all lusolve(n,a,b,ipvt,info) if (info.eq.0) then open(unit=15,file="lu.txt") write(15,*) " LU" write(15,50) write(15,*) "--------------------" write(15,100) i,b(i) do lose(15) if 50 format(2x,'i',10x,'xi') 100 format(i3,2x,f14.7) stop Η υπορουτίνα initialization δίνει τις αρχικές τιμές στο μητρώο των συντελεστών των αγνώστων και στο διάνυσμα στο δεξιό μέλος. subroutine initialization(n,a,b) impliit none integer n,i,j double preision a(n,n),b(n) double preision k1,k2,k3,k4 double preision m1,m2,m3,m4,g do j=1,n a(i,j)=0.0d0 b(i)=0.0d0 matrix a k1=200.0d0 k2=400.0d0 k3=300.0d0 k4=150.0d0 3

row 1 a(1,1)=k1+k2; a(1,2)=-k2 row 2 a(2,1)=-k2; a(2,2)=k2+k3; a(2,3)=-k3 row 3 a(3,2)=-k3; a(3,3)=k3+k4; a(3,4)=-k4 row 4 a(4,3)=-k4; a(4,4)=k4 right hand side vetor b m1=3.0d0 m2=4.0d0 m3=7.0d0 m4=2.0d0 g=10.0d0 b(1)=m1*g b(2)=m2*g b(3)=m3*g b(4)=m4*g Στην υπορουτίνα ludeomp γίνεται η παραγοντοποίηση του μητρώου των συντελεστών των αγνώστων. Στην έξοδο, το μητρώο έχει το αποτέλεσμα της παραγοντοποίσης, δηλαδή τα τριγωνικά μητρώα L και U. subroutine ludeomp(n,a,ipvt,info) impliit none integer n,info double preision a(n,n) integer ipvt(n) double preision pivot,temp,work(n),s,maxvalue integer i,j,k,m,ip,itmp info=0 ipvt(i)=i work(i)=0.0d0 LU fatorization with partial pivoting do m=1,n find pivot 4

ip=m maxvalue=0.0d0 do j=m,n s=0.0d0 do k=1,m-1 s=s+a(ipvt(j),k)*a(ipvt(k),m) work(ipvt(j))=a(ipvt(j),m)-s if ( dabs(work(ipvt(j))).gt.maxvalue ) then ip=j maxvalue=dabs(work(ipvt(j))) if pivot=work(ipvt(ip)) if (dabs(pivot).lt.1.0d-15) then info=1 write(*,*) "Pivot equals zero" write(*,*) "LU deomposition an not ontinue" if itmp=ipvt(m) ipvt(m)=ipvt(ip) ipvt(ip)=itmp temp=work(m) work(m)=work(ip) work(ip)=temp a(ip,m)=a(m,m) a(m,m)=pivot ompute L and U do j=1,m-1 temp=a(m,j) a(m,j)=a(ip,j) a(ip,j)=temp do j=m+1,n temp=a(m,j) a(m,j)=a(ip,j) a(ip,j)=temp s=0.0d0 do k=1,m-1 s=s+a(m,k)*a(k,j) a(m,j)=a(m,j)-s a(j,m)=work(j)/a(m,m) 5

Τέλος, η επίλυση του συστήματος, με την προς τα εμπρός και προς τα πίσω αντικατάσταση, γίνεται στην υπορουτίνα lusolve. Στην είσοδο, το διάνυσμα b έχει το δεξιό μέλος, ενώ στην έξοδο το αποτέλεσμα της επίλυσης, δηλαδή το διάνυσμα x. subroutine lusolve(n,a,b,ipvt,info) impliit none integer n,ipvt(n),info double preision a(n,n),b(n) integer i,m,j double preision temp,s if (info.eq.1) forward substitution do i=2,n s=b(ipvt(i)) do j=1,i-1 s=s-a(i,j)*b(ipvt(j)) b(ipvt(i))=s bak substitution x(n)=b(ipvt(n))/a(n,n) do i=n-1,1,-1 s=b(ipvt(i)) do j=i+1,n s=s-a(i,j)*x(j) x(i)=s/a(i,i) b(i)=x(i) Το αποτέλεσμα της επίλυσης που προκύπτει για την παραγοντοποίηση LU είναι: 6

LU i xi -------------------- 1 0.8000000 2 1.1250000 3 1.4250000 4 1.5583333 2. Cholesky (LL T ) Το μητρώο των συντελεστών των αγνώστων είναι συμμετρικό και θετικά ορισμένο, οπότε εφαρμόζεται η μέθοδος Cholesky. Ο πηγαίος κώδικας είναι: program holesky impliit none integer n parameter (n=4) double preision a(n,n),b(n) integer i,info all initialization(n,a,b) all holeskydeomp(n,a,info) all holeskysolve(n,a,b,info) if (info.eq.0) then open(unit=15,file="holesky.txt") write(15,*) " Cholesky" write(15,50) write(15,*) "--------------------" write(15,100) i,b(i) do lose(15) if 50 format(2x,'i',10x,'xi') 100 format(i3,2x,f14.7) stop Η υπορουτίνα initialization παραμένει η ίδια και παραλείπεται ο πηγαίος της κώδικας. Στην υπορουτίνα holeskydeomp γίνεται ο υπολογισμός του κάτω τριγωνικού μητρώου L της μεθόδου Cholesky, το οποίο αποθηκεύεται στο μητρώο των συντελεστών των αγνώστων. subroutine holeskydeomp(n,a,info) impliit none 7

integer n,info double preision a(n,n) double preision s,temp integer i,j,k info=0 s=0.0d0 do k=1,i-1 s=s+a(i,k)*a(i,k) temp=a(i,i)-s if ( temp.lt.0.0d0 )then write(*,*) "Matrix is not positive definite" write(*,*) "Cholesky fatorization an not ontinue" info=1 if a(i,i)=dsqrt(temp) if ( dabs(a(i,i)).le.1.0d-16 ) then write(*,*) "Divided by zero" write(*,*) "Cholesky fatorization an not ontinue" info=1 if ompute L(j,i), j=i+1(1)n do j=i+1,n s=0.0d0 do k=1,i-1 s=s+a(i,k)*a(j,k) a(j,i)=(a(j,i)-s)/a(i,i) Τέλος, η επίλυση του συστήματος γίνεται στην υπορουτίνα holeskysolve. Στην είσοδο, το διάνυσμα b περιέχει το δεξιό μέλος του συστήματος, ενώ στην έξοδο το αποτέλεσμα της επίλυσης, δηλαδή το διάνυσμα x. 8

subroutine holeskysolve(n,a,b,info) impliit none integer n,info double preision a(n,n),b(n) integer i,j double preision s if (info.eq.1) forward substitution s=b(i) do j=1,i-1 s=s-a(i,j)*b(j) b(i)=s/a(i,i) bakward substitution do i=n,1,-1 s=b(i) do j=i+1,n s=s-a(j,i)*b(j) b(i)=s/a(i,i) Το αποτέλεσμα της επίλυσης που προκύπτει για τη μέθοδο Cholesky είναι: Cholesky i xi -------------------- 1 0.8000000 2 1.1250000 3 1.4250000 4 1.5583333 Οι δύο μέθοδοι, που εφαρμόστηκαν μέχρι στιγμής για την επίλυση του γραμμικού συστήματος Ax = b ήταν άμεσες, δηλαδή η λύση βρέθηκε, χρησιμοποιώντας ακριβή αριθμητική, μετά από ένα πεπερασμένο πλήθος πράξεων. Στη συνέχεια, για την επίλυση του συστήματος των γραμμικών εξισώσεων, θα εφαρμοστεί μία επαναληπτική (έμμεση) μέθοδος. Η μέθοδος αυτή προσεγγίζει τη λύση ξεκινώντας με ένα αρχικό διάνυσμα, που εκφράζει την αρχική προσέγγιση της λύσης, κατασκευάζει μία ακολουθία 9

διανυσμάτων, η οποία σύμφωνα με ορισμένες προϋποθέσεις και με ακριβή αριθμητική συγκλίνει οριακά στην ακριβή λύση. Η μέθοδος, που θα εφαρμοστεί, βασίζεται στο ότι το μητρώο Α διασπάται και παίρνει την μορφή A = D L U. 3. Gauss-Seidel Η μέθοδος Gauss-Seidel ανήκει στις επαναληπτικές μεθόδους επίλυσης γραμμικών συστημάτων. Σε αυτή την περίπτωση θα πρέπει να εξεταστεί αν η μέθοδος συγκλίνει για το συγκεκριμένο σύστημα. Μία ικανή συνθήκη, για να επιτευχθεί σύγκλιση, είναι αν το μητρώο Α έχει αυστηρά διαγώνια κυριαρχία είτε κατά γραμμές είτε κατά στήλες, δηλαδή αν ισχύει a > a i = 1,, n Στην περίπτωσή μας δεν ικανοποιείται η συνθήκη αυτή, γιατί υπάρχουν γραμμές, όπως και στήλες, στις οποίες το διαγώνιο στοιχείο κατά απόλυτη τιμή είναι ίσο με το άθροισμα των απολύτων τιμών των υπολοίπων στοιχείων. Επομένως, προχωράμε να εξετάσουμε τη σύγκλιση με άλλη συνθήκη. Μία άλλη ικανή συνθήκη, που εξασφαλίζει σύγκλιση, είναι αν ισχύει: G < 1, όπου p = 1 ή. Στην παραπάνω ανισότητα, G είναι ο πίνακας επανάληψης και για τη μέθοδο Gauss-Seidel είναι ίσος με G = (D L) U. Ορίζοντας στο Mathematia τα μητρώα D, L και U, υπολογίζουμε το μητρώο G και δίνοντας στη συνέχεια N[Norm[G,1]] ή N[Norm[G, ]] προκύπτουν οι νόρμες του πίνακα επανάληψης G για p = 1 ή, αντίστοιχα. Οι νόρμες είναι ίσες με G = > 1 G = < 1 οπότε για την μέγιστη νόρμα ικανοποιείται η συνθήκη. Επομένως, η μέθοδος θα συγκλίνει. Αυτό επιβεβαιώνεται και με τον έλεγχο της αναγκαίας και ικανής συνθήκης για τη σύγκλιση, η οποία είναι: ρ(g) < 1, δηλαδή αν φασματική ακτίνα του πίνακα επανάληψης G είναι μικρότερη της μονάδας. Δίνοντας στο Mathematia N[Max[Abs[Eigenvalues[G]]]] προκύπτει ότι η φασματική ακτίνα του πίνακα επανάληψης G είναι ίση με ρ(g) = 0,850736 < 1. Συνεπώς, η μέθοδος Gauss-Seidel θα συγκλίνει. 10

Ο πηγαίος κώδικας είναι: program gauss_seidel impliit none integer n parameter (n=4) double preision a(n,n),b(n),x(n),xold(n),tol integer i,maxiter,j,ionv,onvergene all initialization(n,a,b,x) maxiter=5000 tol=0.5d0*1.0d-7 do j=1,n xold(j)=x(j) open(unit=15,file="gauss_seidel.txt") write(15,*) "Gauss-Seidel" do i=1,maxiter all gsiter(n,a,b,x,xold) ionv=onvergene(n,x,xold,tol) if ( ionv.eq.1 ) then write(15,*) "Number of iterations:",i write(15,*) "Error:",tol exit else do j=1,n xold(j)=x(j) if write(15,*) "--------------------" write(15,50) write(15,*) "--------------------" write(15,100) i,x(i) do lose(15) 50 format(2x,'i',10x,'xi') 100 format(i3,2x,f14.7) stop 11

Στην υπορουτίνα initialization ορίζονται το μητρώο των συντελεστών των αγνώστων, το διάνυσμα b καθώς και η αρχική εκτίμηση x της λύσης. subroutine initialization(n,a,b,x) impliit none integer n,i,j double preision a(n,n),b(n),x(n) double preision k1,k2,k3,k4 double preision m1,m2,m3,m4,g do j=1,n a(i,j)=0.0d0 b(i)=0.0d0 x(i)=1.0d0 matrix a k1=200.0d0 k2=400.0d0 k3=300.0d0 k4=150.0d0 row 1 a(1,1)=k1+k2; a(1,2)=-k2 row 2 a(2,1)=-k2; a(2,2)=k2+k3; a(2,3)=-k3 row 3 a(3,2)=-k3; a(3,3)=k3+k4; a(3,4)=-k4 row 4 a(4,3)=-k4; a(4,4)=k4 right hand side vetor b m1=3.0d0 m2=4.0d0 m3=7.0d0 m4=2.0d0 g=10.0d0 b(1)=m1*g b(2)=m2*g b(3)=m3*g b(4)=m4*g 12

Στην υπορουτίνα gsiter γίνεται η επανάληψη. subroutine gsiter(n,a,b,x,xold) impliit none integer n,i,j double preision a(n,n),b(n),x(n),xold(n),sum1,sum2 sum1=0.0d0 do j=1,i-1 sum1=sum1+a(i,j)*x(j) sum2=0.0d0 do j=i+1,n sum2=sum2+a(i,j)*xold(j) x(i)=(b(i)-sum1-sum2)/a(i,i) Στη συνάρτηση onvergene ελέγχεται το κριτήριο τερματισμού. integer funtion onvergene(n,x,xold,tol) impliit none integer i,n double preision x(n),xold(n),tol,num,denom,temp num=0.0d0 temp=dabs(x(i)-xold(i)) if ( temp.gt.num ) num=temp denom=0.0d0 temp=dabs(x(i)) if ( temp.gt.denom ) denom=temp if ( (num/denom).le.tol ) then onvergene=1 tol=num/denom else onvergene=0 13

if Το αποτέλεσμα της επίλυσης που προκύπτει για την επαναληπτική μέθοδο Gauss-Seidel είναι: Gauss-Seidel Number of iterations: 85 Error: 4.42797821835887070E-008 -------------------- i xi -------------------- 1 0.7999997 2 1.1249996 3 1.4249996 4 1.5583329 Άσκηση 2. Δίνεται το μη γραμμικό σύστημα εξισώσεων: x + os (y) = 5 x 50y + sin (z) = 0 2e = z Αν η αρχική εκτίμηση είναι (x, y, z ) = (1,1,1): A. Να επιλυθεί στο Mathematia. B. Να γραφτεί πρόγραμμα σε Fortran και να επιλυθεί αριθμητικά με τη μέθοδο Newton-Raphson για στάθμη ακρίβειας τουλάχιστον ίση με ε 10. Α. Η επίλυση του μη γραμμικού συστήματος εξισώσεων στο Mathematia γίνεται δίνοντας: FindRoot[{x+Cos[y]==5,x-50 y^2+sin[z]==0,2 Exp[-x y]- z==0},{x,1},{y,1},{z,1},workingpreision->8] και υπολογίζεται: {x->4.0456383,y->0.30328114,z->0.58636161}. Β. Η αριθμητική επίλυση του μη γραμμικού συστήματος θα γίνει με εφαρμογή επαναληπτικής διαδικασίας Newton-Raphson. Σύμφωνα με τη διαδικασία αυτή, για κάθε επανάληψη i θα λύνεται ένα γραμμικό σύστημα της μορφής: όπου J ο Ιακωβιανός πίνακας, x η διόρθωση σε κάθε επανάληψη και f(x) το μη γραμμικό σύστημα. J x x = f x, Στην περίπτωση μας, ο Ιακωβιανός πίνακας είναι ίσος με: 14

f x f J = x f x f y f y f y f z 1 sin y 0 f z = 1 100 y os z. 2ye 2xe 1 f z Παρακάτω φαίνεται ο πηγαίος κώδικας σε γλώσσα προγραμματισμού Fortran για την αριθμητική επίλυση του μη γραμμικού συστήματος με τη μέθοδο Newton-Rapshon. O κώδικας γράφτηκε σε περιβάλλον linux (Ubuntu 10.10) και μεταγλωττίστηκε με τον ompiler gfortran έκδοση 4.4.5. Για την επίλυση του γραμμικού συστήματος εφαρμόστηκε η μέθοδος LU με τον αλγόριθμο, που παρουσιάστηκε στην προηγούμενη άσκηση. program newton_raphson impliit none integer n parameter (n=3) double preision ja(n,n),f(n),x(n),xold(n),tol integer i,j,ipvt(n),info,maxiter,ionv,onvergene maxiter=100 tol=1.0d-07 x(1)=1.0d0 x(2)=1.0d0 x(3)=1.0d0 open(unit=15,file="nonlinear.txt") write(15,*) "Newton-Raphson" do i=1,maxiter all jaobian(n,x,ja) all righthand(n,x,f) all ludeomp(n,ja,ipvt,info) all lusolve(n,ja,f,ipvt,info) if (info.eq.0) then ionv=onvergene(n,f,tol) do j=1,n xold(j)=x(j) x(j)=xold(j)+f(j) if ( ionv.eq.1 ) then write(15,*) "Number of iterations:",i write(15,*) "Error:",tol exit if 15

else exit if if (info.eq.0) then write(15,*) "--------------------" write(15,50) write(15,*) "--------------------" write(15,100) i,x(i) do if lose(15) 50 format(2x,'i',10x,'xi') 100 format(i3,2x,f14.7) stop Η υπορουτίνα jaobian υπολογίζει τον Ιακωβιανό πίνακα του συστήματος, ενώ η υπορουτίνα righthand το δεξιό μέλος του προς επίλυση σε κάθε επανάληψη γραμμικού συστήματος. subroutine jaobian(n,x,ja) impliit none integer n double preision x(n),ja(n,n) ja(1,1)=1.0d0 ja(1,2)=-dsin(x(2)) ja(1,3)=0.0d0 ja(2,1)=1.0d0 ja(2,2)=-100.0d0*x(2) ja(2,3)=dos(x(3)) ja(3,1)=-2.0d0*dexp(-x(1)*x(2))*x(2) ja(3,2)=-2.0d0*dexp(-x(1)*x(2))*x(1) ja(3,3)=-1.0d0 subroutine righthand(n,x,f) impliit none integer n double preision x(n),f(n) f(1)=-( x(1)+dos(x(2))-5.0d0 ) f(2)=-( x(1)-50.0d0*x(2)*x(2)+dsin(x(3)) ) 16

f(3)=-( 2.0d0*dexp(-x(1)*x(2))-x(3) ) Η συνάρτηση onvergene ελέγχει αν ικανοποιείται το κριτήριο τερματισμού. integer funtion onvergene(n,dx,tol) impliit none integer i,n double preision dx(n),tol,maxvalue,temp maxvalue=0.0d0 temp=dabs(dx(i)) if ( temp.gt.maxvalue ) maxvalue=temp if ( maxvalue.le.tol ) then onvergene=1 tol=maxvalue else onvergene=0 if Ο κώδικας για τη μέθοδο LU είναι ο ίδιος που παρουσιάστηκε στην προηγούμενη άσκηση και παραλείπεται. Eπιλέγοντας σαν αρχική εκτίμηση: προκύπτει: x = (1 1 1) Newton-Raphson Number of iterations: 6 Error: 2.10942272273652766E-010 -------------------- i xi -------------------- 1 4.0456383 2 0.3032811 3 0.5863616 17