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

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

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

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

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

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

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

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

Οι παρακάτω ασκήσεις είναι από το βιβλίο των S. C. Chapra και R. P. Canale με τίτλο Numerical Methods for Engineers, 6 th edition.

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

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

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

Κεφ. 6Α: Συνήθεις διαφορικές εξισώσεις - προβλήματα δύο οριακών τιμών

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

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

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

Υπολογιστικές Μέθοδοι

Κεφ. 6: Επίλυση ελλειπτικών διαφορικών εξισώσεων με πεπερασμένες διαφορές προβλήματα οριακών τιμών

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

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

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

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

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

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

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

Υπολογιστικές Μέθοδοι = 0.4 και R

Άσκηση 1 Έχουµε να επιλύσουµε την εξίσωση κύµατος 1 ης τάξης (υπερβολική εξίσωση) (1)

w 1, z = 2 και r = 1

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

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

ΥΠΟΛΟΓΙΣΤΙΚΕΣ ΜΕΘΟΔΟΙ, , 5 Ο ΕΞΑΜΗΝΟ ΕΡΓΑΣΙΑ #4 ΥΠΕΡΒΟΛΙΚΑ ΠΡΟΒΛΗΜΑΤΑ ΗΜΕΡΟΜΗΝΙΑ ΠΑΡΑΔΟΣΗΣ: ΔΙΔΑΣΚΩΝ: Δ.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Επίλυση ενός τριδιαγώνιου γραµµικού συστήµατος Ax = d µε τη µέθοδο απαλοιφής του Gauss (µέθοδος του Thomas)

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

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

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

Παράλληλη Επεξεργασία Κεφάλαιο 6 ο Σύγχρονος Παραλληλισμός

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

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

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

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

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

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

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

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

Κεφάλαιο 4. Επίλυση ελλειπτικών διαφορικών εξισώσεων µε πεπερασµένες διαφορές

Εφαρμογή της μεθόδου πεπερασμένων διαφορών στην εξίσωση θερμότητας

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

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

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

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

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

ΚΑΤΑΣΚΕΥΗ ΠΙΝΑΚΑ ΣΥΝΕΚΤΙΚΟΤΗΤΑΣ ΓΙΑ ΠΡΟΒΛΗΜΑΤΑ ΔΥΟ ΔΙΑΣΤΑΣΕΩΝ Ι. Γραμμικά τετραγωνικά στοιχεία Q4 Έστω πλέγμα ΝxΜ Έστω πλέγμα με ΝxM στοιχεία:

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

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

Παράδειγμα #1 ΑΡΙΘΜΗΤΙΚΗ ΚΙΝΗΤΗΣ ΥΠΟΔΙΑΣΤΟΛΗΣ ΕΠΙΜΕΛΕΙΑ: Ι. Λυχναρόπουλος

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

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

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

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

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

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

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

Fortran και Αντικειμενοστραφής προγραμματισμός.

8 FORTRAN 77/90/95/2003

ΑΠΑΝΤΗΣΕΙΣ. H διαδικασία ανεύρεσης λογικών λαθών περιλαμβάνει : β- Σωστό. Διαπίστωση του είδους του λάθους γ- Σωστό δ- Λάθος

Λύσεις θεμάτων εξεταστικής περιόδου Ιανουαρίου Φεβρουαρίου 2015

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

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

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

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2017

ΦΑΙΝΟΜΕΝΑ ΜΕΤΑΦΟΡΑΣ ΙΙ

ιαφάνειες παρουσίασης #6

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

Ολοκλήρωση - Μέθοδος Monte Carlo

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

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

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

Non Linear Equations (2)

Ενότητα 6. Προγραμματισμός με Εφαρμογές στην Επιστήμη του Μηχανικού. Σιέττος Κωνσταντίνος

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

Διαφορικές Εξισώσεις.

Θα χρησιμοποιήσουμε κύλινδρο με L=R για απλοποίηση (και Δr=Δz).

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

Transcript:

Άσκηση : πρόκειται για ΣΔΕ δύο οριακών τιμών με εφαρμογή του αλγόριθμου Thomas για επίλυση τριγωνικού συστήματος Έχουμε να επιλύσουμε την εξίσωση: du du u dr r dr με οριακές συνθήκες u () 0 και u(0) πεπερασμένη ή συμμετρίας). du 0 (συνθήκη dr r 0 (Α) Η αναλυτική λύση της διαφορικής εξίσωσης δίνεται με τη βοήθεια του Mathematica: DSolveu''r u'r, u0, u'00,ur,r r και είναι: ur () ( r) Αρχικά διακριτοποιούμε το πεδίο ορισμού: Χωρίζουμε την ακτίνα σε Ν ίσα διαστήματα (Ν+ κόμβους) πλάτους r N r 0 N N+ r=0 i- i i+ r= Έτσι για τη ζητούμενη παροχή θα έχουμε: Q uda Q ru( r) dr 0 Η αναλυτική τιμή της Q είναι ίση με 0.39699 8 Προσεγγίζουμε τη διαφορική εξίσωση (Α) στον τυχαίο κόμβο i : u u u u u i i i i i r ri r ui ui u i r ri r r, r rir (Α) για τους εσωτερικούς κόμβους i,..., N όπου r ( i) r i

Για i N έχουμε: 0 un Για i θα χρησιμοποιήσουμε την οριακή συνθήκη μαζί με την διαφορική εξίσωση: du d u du d u Παρατηρούμε ότι το limr 0 lim dr r 0 lim dr r0 rdr r dr du uo uu Έτσι η () γράφεται: (Α3) dr r du u u0 Η οριακή συνθήκη: 0 0uo u (Α) dr r0 r Ό κόμβος i 0 είναι φανταστικός. Οι (Α3) και (Α) δίνουν τελικά: u u r (Α5) Το σύστημα που προκύπτει είναι τριδιαγώνιο και θα επιλυθεί με την μέθοδο Τhomas. Για το ολοκλήρωμα της παροχής Q χρησιμοποιούμε κανόνα τραπεζίου: R r Q ru( r) dr [ ru ru... rnun rn un] 0 Έστω ένα αραιό πλέγμα με Ν=3 (Δr =/3). Τότε έχουμε να λύσουμε το σύστημα: 0 u / 9.5 8 3.5 u 0 6.75 8 u 3 To οποίο δίνει: u 0.5 u u 3 0. 0.38889 u (από οριακή συνθήκη) 0 Οι τιμές ταυτίζονται με αυτές της αναλυτικής λύσης στα σημεία 0, /3, /3,. Q [0(0.5) (/ 3)(0.) ( / 3)(0.38889) (0)] 0.3873 3 Το πρόγραμμα σε Fortran είναι το ακόλουθο: Program Poisson (σε διάσταση) implicit none doubleprecision,allocatable::a(:),b(:),c(:),d(:),x(:),r(:) doubleprecision:: dr,q,s integer::n,i,status

n=3!arithmos diasthmatwn -> n+ komboi allocate(a(n),b(n),c(n-),x(n+),d(n),r(n+)) if (status/=0) Stop 'Not enough memory' dr=./n do i=,n+ r(i)=(i-)*dr x(n+)=0 b()=. c()=-. a(i)=./dr**-./(.*r(i)*dr) b(i)=-./dr** if (i<n) then c(i)=./dr**+./(.*r(i)*dr) d()=dr** d(i)=- print*, '-------------' call Thomas(n,a,b,c,d,x) do i=,n print '(I3,H u(,f0.5,h) =,D0.5,D0.5)',i,r(i),x(i),(-r(i)**)/ print '(I3,H u(,f0.5,h) =,D0.5,D0.5)',n+,r(n+),0,0 s=0 s=s+*r(i)*x(i) s=s+r()*x()+r(n+)*x(n+) q= 3. * dr * s print*, 'q=',s,q contains subroutine Thomas(n,a,b,c,d,x) integer,intent(in) :: n doubleprecision, INTENT(INOUT) ::a(n),b(n),c(n),d(n) doubleprecision, INTENT(OUT) ::x(n) integer::i doubleprecision ::t(n),u(n) end t()=b() u()=d()/t() t(i)=b(i)-a(i)*c(i-)/t(i-) u(i)=(d(i)-a(i)*u(i-))/t(i) x(n)=u(n) do i=n-,,- x(i)=u(i)-c(i)/t(i)*x(i+) end subroutine Thomas

Δίνουμε ενδεικτικά αποτέλεσματα για Ν=00. Δίπλα στις αριθμητικές τιμές παρουσιάζονται οι αντίστοιχες αναλυτικές οι οποίες ταυτίζονται!!! u(0.00000) = 0.5000D+00 0.5000D+00 u(0.0000) = 0.997D+00 0.998D+00 3 u(0.0000) = 0.990D+00 0.990D+00 u(0.03000) = 0.977D+00 0.977D+00 5 u(0.0000) = 0.960D+00 0.960D+00 6 u(0.05000) = 0.937D+00 0.938D+00 7 u(0.06000) = 0.90D+00 0.90D+00 8 u(0.07000) = 0.877D+00 0.877D+00 9 u(0.08000) = 0.80D+00 0.80D+00 0 u(0.09000) = 0.797D+00 0.798D+00 u(0.0000) = 0.750D+00 0.750D+00 u(0.000) = 0.697D+00 0.698D+00 3 u(0.000) = 0.60D+00 0.60D+00 u(0.3000) = 0.577D+00 0.577D+00 5 u(0.000) = 0.50D+00 0.50D+00 6 u(0.5000) = 0.37D+00 0.38D+00 7 u(0.6000) = 0.360D+00 0.360D+00 8 u(0.7000) = 0.77D+00 0.77D+00 9 u(0.8000) = 0.90D+00 0.90D+00 0 u(0.9000) = 0.097D+00 0.097D+00 u(0.0000) = 0.000D+00 0.000D+00 u(0.000) = 0.3897D+00 0.3897D+00 3 u(0.000) = 0.3790D+00 0.3790D+00 u(0.3000) = 0.3677D+00 0.3678D+00 5 u(0.000) = 0.3560D+00 0.3560D+00 6 u(0.5000) = 0.337D+00 0.338D+00 7 u(0.6000) = 0.330D+00 0.330D+00 8 u(0.7000) = 0.377D+00 0.378D+00 9 u(0.8000) = 0.300D+00 0.300D+00 30 u(0.9000) = 0.897D+00 0.898D+00 3 u(0.30000) = 0.750D+00 0.750D+00 3 u(0.3000) = 0.597D+00 0.598D+00 33 u(0.3000) = 0.0D+00 0.0D+00 3 u(0.33000) = 0.77D+00 0.78D+00 35 u(0.3000) = 0.0D+00 0.0D+00 36 u(0.35000) = 0.937D+00 0.937D+00 37 u(0.36000) = 0.760D+00 0.760D+00 38 u(0.37000) = 0.577D+00 0.577D+00 39 u(0.38000) = 0.390D+00 0.390D+00 0 u(0.39000) = 0.97D+00 0.97D+00 u(0.0000) = 0.000D+00 0.000D+00 u(0.000) = 0.0797D+00 0.0797D+00 3 u(0.000) = 0.0590D+00 0.0590D+00 u(0.3000) = 0.0377D+00 0.0378D+00 5 u(0.000) = 0.060D+00 0.060D+00 6 u(0.5000) = 0.9937D+00 0.9937D+00 7 u(0.6000) = 0.970D+00 0.970D+00 8 u(0.7000) = 0.977D+00 0.977D+00 9 u(0.8000) = 0.90D+00 0.90D+00 50 u(0.9000) = 0.8997D+00 0.8998D+00 5 u(0.50000) = 0.8750D+00 0.8750D+00 5 u(0.5000) = 0.897D+00 0.898D+00 53 u(0.5000) = 0.80D+00 0.80D+00 5 u(0.53000) = 0.7977D+00 0.7977D+00 55 u(0.5000) = 0.770D+00 0.770D+00 56 u(0.55000) = 0.737D+00 0.738D+00 57 u(0.56000) = 0.760D+00 0.760D+00 58 u(0.57000) = 0.6877D+00 0.6877D+00 59 u(0.58000) = 0.6590D+00 0.6590D+00 60 u(0.59000) = 0.697D+00 0.698D+00 6 u(0.60000) = 0.6000D+00 0.6000D+00 6 u(0.6000) = 0.5697D+00 0.5698D+00 63 u(0.6000) = 0.5390D+00 0.5390D+00 6 u(0.63000) = 0.5077D+00 0.5077D+00 65 u(0.6000) = 0.760D+00 0.760D+00 66 u(0.65000) = 0.37D+00 0.37D+00 67 u(0.66000) = 0.0D+00 0.0D+00 68 u(0.67000) = 0.3777D+00 0.3777D+00 69 u(0.68000) = 0.30D+00 0.30D+00 70 u(0.69000) = 0.3097D+00 0.3097D+00

7 u(0.70000) = 0.750D+00 0.750D+00 7 u(0.7000) = 0.397D+00 0.398D+00 73 u(0.7000) = 0.00D+00 0.00D+00 7 u(0.73000) = 0.677D+00 0.678D+00 75 u(0.7000) = 0.30D+00 0.30D+00 76 u(0.75000) = 0.0937D+00 0.0938D+00 77 u(0.76000) = 0.0560D+00 0.0560D+00 78 u(0.77000) = 0.077D+00 0.078D+00 79 u(0.78000) = 0.97900D-0 0.97900D-0 80 u(0.79000) = 0.93975D-0 0.93975D-0 8 u(0.80000) = 0.90000D-0 0.90000D-0 8 u(0.8000) = 0.85975D-0 0.85975D-0 83 u(0.8000) = 0.8900D-0 0.8900D-0 8 u(0.83000) = 0.77775D-0 0.77775D-0 85 u(0.8000) = 0.73600D-0 0.73600D-0 86 u(0.85000) = 0.69375D-0 0.69375D-0 87 u(0.86000) = 0.6500D-0 0.6500D-0 88 u(0.87000) = 0.60775D-0 0.60775D-0 89 u(0.88000) = 0.5600D-0 0.5600D-0 90 u(0.89000) = 0.5975D-0 0.5975D-0 9 u(0.90000) = 0.7500D-0 0.7500D-0 9 u(0.9000) = 0.975D-0 0.975D-0 93 u(0.9000) = 0.3800D-0 0.3800D-0 9 u(0.93000) = 0.33775D-0 0.33775D-0 95 u(0.9000) = 0.900D-0 0.900D-0 96 u(0.95000) = 0.375D-0 0.375D-0 97 u(0.96000) = 0.9600D-0 0.9600D-0 98 u(0.97000) = 0.775D-0 0.775D-0 99 u(0.98000) = 0.99000D-0 0.99000D-0 00 u(0.99000) = 0.9750D-0 0.9750D-0 0 u(.00000) = 0.00000D+00 0.00000D+00 ΠΑΡΟΧΗ = 0.396076370

Άσκηση Θεωρούμε ότι η τετραγωνική πλάκα έχει πλευρά ίση με m. Επίσης h=5 W/m C, k=300 W/m C και T 5 C. Έχουμε να επιλύσουμε τη διαφορική εξίσωση Laplace: T T T 0 0 (Β) x y με οριακές συνθήκες: T T( x,0) 50, T( x,) 00, T(, y) 50 και για x 0 : k h( T T ). x Διακριτοποιούμε το πεδίο ορισμού 0 x, y : xωρίζουμε την κάθε πλευρά σε Ν ίσα διαστήματα (N+ κόμβους) πλάτους H N Έτσι για τις οριακές συνθήκες έχουμε: T( x,) 00 T(, j) 00 T( x,0) 50 T( n, j) 50 T(, y) 50 T( i, n) 50 T Για x 0 διακριτοποιούμε την k h( T T ) με πεπερασμένες διαφορές στον x κόμβο (, j) και παίρνουμε: T, T j, j hh hh k h( T, j T) T, j T, j T, j T H k k hh hh T, j ( T, j T )/( ) για j=,,n (Β) k k Επίσης διακριτοποιούμε την (Β) στον τυχαίο κόμβο ( i, j) και παίρνουμε τον τύπο των 5 σημείων: Ti, j ( Ti, jti, jti, j Ti, j ) για,..., i N και j,..., N (Β3) Έτσι θα έχουμε για τις διάφορες μεθόδους επίλυσης συστημάτων: Μέθοδος Jacobi ( n) ( n) hh hh T, j ( T, j T )/( ) για j,..., N ( i ) k k ( n) ( ) ( ) ( ) (, ( n n n n) Ti j Ti, j Ti, j Ti, j Ti, j ) για i,..., N και j,..., N Μέθοδος Gauss-Seidel ( n) ( n) hh hh T, j ( T, j T )/( ) για j,..., N ( i ) k k ( n) ( ) ( ) ( ) ( ), ( n n n n Ti j Ti, j Ti, j Ti, j Ti, j ) γιαi,..., N και j,..., N

(Ο υπολογισμός γίνεται από το πάνω μέρος της τετραγωνικής πλάκας προς τα κάτω και από αριστερά προς τα δεξιά) Μέθοδος SOR ( n) ( n) hh hh ( n) T, j ( T, j T )/( ) ( ) T, j για j,..., N ( i ) k k ( n) ( ) ( ) ( ) ( ) ( ), ( n n n n Ti j Ti, j Ti, j Ti, j Ti, j ) n ( ) T i, j για i,..., N και j,..., N Το πρόγραμμα σε Fortran είναι: Μέθοδοι Jacobi, Gauss-Seidel, SOR Program Jacobi_GaussSeidel_SOR implicit none doubleprecision,allocatable::t(:,:),told(:,:) integer::n,i,j,k,kk,h,status,maxi,done,method doubleprecision::s,rel,err,max doubleprecision::t0,hh,w n=50 allocate(t(n+,n+),told(n+,n+)) if (status/=0) Stop 'Not enough memory' maxi=50000 rel=0.0000000 print*, 'n=',n,'rel=',rel hh=./n h=5 kk=300 t0=5 do method=,3!=jacobi, =gauss-seidel, 3=SOR if (method==) then t(:,:)=0. t(,:)=00. t(n+,:)=50. t(:,n+)=50. told(:,:)=t(:,:)! print*,x0(:)!read* k= done=0 do while (k<=maxi.and. done==0) do j=,n if (j==) then t(i,)=(told(i,)-(h*hh/kk)*t0)/(-(h*hh/kk)) else t(i,j)= 0.5*(told(i,j+)+told(i,j-)+told(i+,j)+told (i-,j))

! elenxos gia termatismo max=- do j=,n err = abs((t(i,j) - told(i,j))/t(i,j)) if (err>max) then max=err if (max<rel) then done= told(:,:)=t(:,:) k=k+ open(,file='res_jacobi.txt',recl=0000)!xwris to RECL=000 to megisto platos xwraei monon 5 sthles toy pinaka do i=n+,,-! ta typwnoyme anapoda gia na ta deiksei o array visualizer swsta! write(,*) t(i,:) print*, 'Jacobi' print*, k-,max print*,'------------------------' elseif (method==) then!gauss-seidel t(:,:)=0. t(,:)=00. t(n+,:)=50. t(:,n+)=50. k= done=0 do while (k<=maxi.and. done==0) told(:,:)=t(:,:) do j=,n if (j==) then t(i,)=(t(i,)-(h*hh/kk)*t0)/(-(h*hh/kk)) else t(i,j)= 0.5*(t(i,j+)+t(i,j-)+t(i+,j)+t(i-,j))! elenxos gia termatismo max=- do j=,n err = abs((t(i,j) - told(i,j))/t(i,j)) if (err>max) then max=err if (max<rel) then done= k=k+ open(,file='res_gauss.txt',recl=000) do i=n+,,- write(,*) t(i,:)

print*, 'Gauss Seidel' print*, k-,max print*, '-------------------------------' elseif (method==3) then!sor do w=.88,.99,0.0 k= done=0 t(:,:)=0. t(,:)=00. t(n+,:)=50. t(:,n+)=50. do while (k<=maxi.and. done==0) told(:,:)=t(:,:) do j=,n if (j==) then t(i,)=w*(t(i,)-(h*hh/kk)*t0)/(-(h*hh/kk))+(-w)*t(i,) else t(i,j)= 0.5*w*(t(i,j+)+t(i,j-)+t(i+,j)+t(i-,j))+(-w)*t(i,j)! elenxos gia termatismo max=- do j=,n err = abs((t(i,j) - told(i,j))/t(i,j)) if (err>max) then max=err if (max<rel) then done= k=k+ open(3,file='res_sor.txt',recl=000) do i=n+,,- write(3,*) t(i,:) print*, 'SOR' print*, k-,w end Ο έλεγχος σύγκλισης γίνεται με κριτήριο το μέγιστο σχετικό σφάλμα από όλα τα στοιχεία του πίνακα να είναι μικρότερο από μία δεδομένη τιμή. Ανοίγοντας το αρχείο res_jacobi.txt μέσα από το πρόγραμμα Compaq Array Visualizer και επιλέγοντας τύπο γραφήματος Image Map παίρνουμε τα ακόλουθα γραφήματα: N=5

Ν=0 Ν=0 Αντίστοιχα γραφήματα παίρνουμε για όλες τις μεθόδους.

Στον επόμενο πίνακα φαίνεται συγκεντρωτικά ο αριθμός επαναλήψεων μέχρι την σύγκλιση ανά μέθοδο και πλήθος κόμβων: Κριτήριο τερματισμού: Σχετικό σφάλμα < 0 - Πλέγμα Jacobi Gauss-Seidel SOR 5x5 537 5 6 (.89) 9 (.90) (.9) 7 (.9) 39 (.93) 0x0 6099 009 37 (.9) 330 (.93) 8 (.9) 8 (.95) 37 (.96) 0x0 90 879 650 (.96) 99 (.97) 85 (.98) 98 (.99) Κριτήριο τερματισμού: Σχετικό σφάλμα < 0-6 Πλέγμα Jacobi Gauss-Seidel SOR 5x5 685 330 3 (.89) 97 (.90) 76 (.9) 0 (.9) 0x0 069 376 569 (.93) 7 (.9) 36 (.95) 0 (.96) 0x0 63556 36303 05 (.96) 865 (.97) 80 (.98) 53 (.99) Κριτήριο τερματισμού: Σχετικό σφάλμα < 0-8 Πλέγμα Jacobi Gauss-Seidel SOR 5x5 0093 5335 36 (.89) 65 (.90) 08 (.9) 35 (.9) 0x0 3565 8967 659 (.9) 76 (.95) 75 (.96) 65 (.97) 0x0 0 66588 76 (.96) 3 (.97) 97 (.98) 00 (.99)

Άσκηση 3 Επιλύουμε τη διαφορική εξίσωση Poisson: u u u x y με οριακές συνθήκες ux (,0) ux (,) u(0, y) u(, y) 0. (Γ) Αρχικά διακριτοποιούμε το πεδίο ορισμού 0 x, y : xωρίζουμε την κάθε πλευρά σε Ν ίσα διαστήματα (N+ κόμβους) πλάτους h N Στη συνέχεια διακριτοποιούμε την (Γ) στον τυχαίο κόμβο ( i, j) και παίρνουμε τον τύπο των 5 σημείων: ui, j ( ui, jui, jui, j ui, j h ) για i,..., N και j,..., N (Γ) Για την επίλυση του συστήματος θα χρησιμοποιήσουμε τις μεθόδους Jacobi, Gauss- Seidel και SOR Jacobi ( n) ( ) ( ) ( ) ( ), ( n n n n ui j ui, j ui, j ui, j ui, j h ) γιαi,..., N και j,..., N Gauss-Seidel ( n) ( ) ( ) ( ) ( ), ( n n n n ui j ui, j ui, j ui, j ui, j h ) γιαi,..., N και j,..., N (Ο υπολογισμός γίνεται από πάνω προς τα κάτω και από αριστερά προς τα δεξιά) SOR u ( u u u u h ) ( ) u, για i,..., N και j,..., N ( n) ( n) ( n) ( n) ( n) ( n) i, j i, j i, j i, j i, j i j Για τον υπολογισμό της ζητούμενης παροχής θα έχουμε: Q uda Q u( x, y) dxdy 0 0 και βάσει του κανόνα του τραπεζίου θα είναι: h Q [ u,u, NuN,uN, N N N N N N N ] u u u u u, j N, j i, i, N i, j j j i i i j

Program Jacobi_GaussSeidel_SOR implicit none doubleprecision,allocatable::u(:,:),uold(:,:) integer::n,i,j,k,kk,h,status,maxi,done,method,l doubleprecision::s,rel,err,max,s,s,q doubleprecision::hh,w n=50 allocate(u(n+,n+),uold(n+,n+)) if (status/=0) Stop 'Not enough memory' maxi=50000 rel=0.0000000 hh=./n do method=,3!=jacobi, =gauss-seidel, 3=SOR u(:,:)=0. if (method==) then uold(:,:)=u(:,:)! print*,x0(:)!read* k= done=0 do while (k<=maxi.and. done==0) do j=,n u(i,j)= 0.5*(uold(i,j+)+uold(i,j-)+uold(i+,j)+uold (i-,j)+hh**)! elenxos gia termatismo max=- do j=,n err = abs((u(i,j) - uold(i,j))/u(i,j)) if (err>max) then max=err if (max<rel) then done= uold(:,:)=u(:,:) k=k+ open(,file='res_jacobi.txt',recl=0000)!xwris to RECL=000 to megisto platos xwraei monon 5 sthles toy pinaka do i=n+,,-! ta typwnoyme anapoda gia na ta deiksei o array visualizer swsta! write(,*) u(i,:) print*, 'Jacobi' print*, k-,max print*,'------------------------' elseif (method==) then!gauss-seidel k= done=0

do while (k<=maxi.and. done==0) uold(:,:)=u(:,:) do j=,n u(i,j)= 0.5*(u(i,j+)+u(i,j-)+u(i+,j)+u(i-,j)+hh**)! elenxos gia termatismo max=- do j=,n err = abs((u(i,j) - uold(i,j))/u(i,j)) if (err>max) then max=err if (max<rel) then done= k=k+ open(,file='res_gauss.txt',recl=000)!xwris to RECL=000 to megisto platos xwraei monon 5 sthles toy pinaka do i=n+,,-! ta typwnoyme anapoda gia na ta deiksei o array visualizer swsta! write(,*) u(i,:) print*, 'Gauss Seidel' print*, k-,max print*, '-------------------------------' elseif (method==3) then!sor do w=.8,.99,0.0 k= done=0 u(:,:)=0.!w=.90 do while (k<=maxi.and. done==0) uold(:,:)=u(:,:) do j=,n u(i,j)= 0.5*w*(u(i,j+)+u(i,j-)+u(i+,j)+u(i-,j)+hh**)+(-w)*u(i,j)! elenxos gia termatismo max=- do j=,n err = abs((u(i,j) - uold(i,j))/u(i,j)) if (err>max) then max=err if (max<rel) then done=

k=k+ open(3,file='res_sor.txt',recl=000)!xwris to RECL=000 to megisto platos xwraei monon 5 sthles toy pinaka do i=n+,,-! ta typwnoyme anapoda gia na ta deiksei o array visualizer swsta! write(3,*) u(i,:) print*, 'SOR' print*, k-,w!ypologismos ths paroxhs q s=0 do l=,n s=s+u(l,)+u(l,n+)+u(,l)+u(n+,l) s=0 do i=,n do j=,n s=s+u(i,j) q=(u(,)+u(,n+)+u(n+,)+u(n+,n+)+*s+*s)*hh**/ print*,q end Ενδεικτικά για N= (πλέγμα 5x5) θα έχουμε με τη Jacobi τα εξής αποτελέσματα: Ταχύτητες (u ) 0.0000000E+00 0.0000000E+00 0.0000000E+00 0.0000000E+00 0.0000000E+00 0.0000000E+00.9607E-0 5.677963E-0.9607E-0 0.0000000E+00 0.0000000E+00 5.677963E-0 7.0999E-0 5.677963E-0 0.0000000E+00 0.0000000E+00.9607E-0 5.677963E-0.9607E-0 0.0000000E+00 0.0000000E+00 0.0000000E+00 0.0000000E+00 0.0000000E+00 0.0000000E+00 Παροχή: Q=0.088037

Στον επόμενο πίνακα φαίνεται συγκεντρωτικά ο αριθμός επαναλήψεων μέχρι την σύγκλιση ανά μέθοδο και πλήθος κόμβων: Σχετικό σφάλμα< 0 - Πλέγμα Jacobi Gauss-Seidel SOR 5x5 59 967 7 (.86) 08 (.87) 0 (.88) 0 (.89) 0x0 389 59 3 (.9) 05 (.93) 0 (.9) 08 (.95) 0x0 730 57 (.96) 0 (.97) 50 (.98) 908 (.99) Σχετικό σφάλμα< 0-6 Πλέγμα Jacobi Gauss-Seidel SOR 5x5 3898 6 65(.87) (.88) 3 (.89) (.90) 0x0 790 7098 395 (.9) 33 (.93) 3 (.9) 80 (.95) 0x0 39976 783 93 (.95) 73 (.96) 56 (.97) 80 (.98) Σχετικό σφάλμα< 0-8 Πλέγμα Jacobi Gauss-Seidel SOR 5x5 69 39 53 (.86) 3 (.87) 86 (.88) 0 (.89) 0x0 7 76 556 (.95) 59 (.96) 38 (.97) 07 (.98) 0x0 7738 30 35 (.95) 035 (.96) 653 (.97) 89 (.98)