u t = u ( a(x) u ) Επίλυση της Self-adjoint µορφής

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

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

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών

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

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

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

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

µέχρι και την Τρίτη και ώρα 22:30 1η Ασκηση ΑΜΕΣΟΙ ΜΕΘΟ ΟΙ ΓΙΑ ΤΗΝ ΕΠΙΛΥΣΗ ΓΡΑΜΜΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

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

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

1η Οµάδα Ασκήσεων. ΑΣΚΗΣΗ 1 (Θεωρία)

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

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

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

1 Επίλυση Συνήθων ιαφορικών Εξισώσεων

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

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

. Οι ιδιοτιμές του 3 3 canonical-πίνακα είναι οι ρίζες της. , β) η δεύτερη είσοδος επηρεάζει μόνο το μεσαίο 3 3 πίνακα και

Παρεµβολή και Προσέγγιση Συναρτήσεων

3η ΕΡΓΑΣΙΑ. 3.1 Αµεσοι µέθοδοι για την Αριθµητική Επίλυση Γραµµικών Συστηµάτων

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

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

ΕΠΙΧΕΙΡΗΣΙΑΚΗ ΕΡΕΥΝΑ Επιστήμη των Αποφάσεων, Διοικητική Επιστήμη

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

1η Οµάδα Ασκήσεων. ΑΣΚΗΣΗ 1 (Θεωρία)

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

15 εκεµβρίου εκεµβρίου / 64

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

(6,5 μονάδες) Θέμα 1 ο. Τμήμα Πολιτικών Μηχανικών Σχολή Τεχνολογικών Εφαρμογών Διεθνές Πανεπιστήμιο Ελλάδος ΟΝΟΜΑΤΕΠΩΝΥΜΟ

Δομές Δεδομένων και Αλγόριθμοι

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

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

Εργασία για το μεταπτυχιακό μάθημα Παράλληλοι υπολογισμοί από τον φοιτητή Μουζακίδη Αλέξανδρο AM M 853

ΥΠΟΛΟΓΙΣΤΙΚΕΣ ΜΕΘΟ ΟΙ

Non Linear Equations (2)

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


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

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

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

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

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

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

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

ΚΕΦΑΛΑΙΟ 5 ΠΑΡΕΜΒΟΛΗ. Εστω f πραγµατική συνάρτηση, της οποίας είναι γνωστές µόνον οι τιµές f(x i ) σε n+1 σηµεία xi

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

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

Αριθµητική Ανάλυση. ιδάσκοντες: Καθηγητής Ν. Μισυρλής, Επίκ. Καθηγητής Φ.Τζαφέρης ΕΚΠΑ. 16 Ιανουαρίου 2015

Επιστηµονικοί Υπολογισµοί

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

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

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

Σχήµα 6.1: Εισαγωγή της εντολής Read From Spreadsheet File στο Block Diagram.

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

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

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

Επιστηµονικοί Υπολογισµοί(Αριθµητική Γραµµική Αλγεβρα)

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

. lim [2f (x) + 3g (x)] = 13

Επιστηµονικοί Υπολογισµοί

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

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

Δείκτες & Πίνακες Δείκτες, Πίνακες

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΠΟΛΙΤΙΚΩΝ ΜΗΧΑΝΙΚΩΝ ΤΟΜΕΑΣ ΥΔΡΑΥΛΙΚΗΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΙΚΗΣ ΤΕΧΝΙΚΗΣ. Διάλεξη 16: O αλγόριθμος SIMPLE (συνέχεια)

Χαράλαµπος Σκόκος ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ I ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C ΕΞΕΤΑΣΕΙΣ ΕΑΡΙΝΟΥ ΕΞΑΜΗΝΟΥ Ερωτήσεις

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

Πληροφορική & Τηλεπικοινωνίες. K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο

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

Πανεπιστήμιο Ιωαννίνων Τμήμα Πληροφορικής Δομές Δεδομένων [ΠΛΥ302] Χειμερινό Εξάμηνο 2012

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

(6,5 μονάδες) Θέμα 1 ο. Τμήμα Πολιτικών Μηχανικών Σχολή Τεχνολογικών Εφαρμογών Διεθνές Πανεπιστήμιο Ελλάδος ΟΝΟΜΑΤΕΠΩΝΥΜΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Τµήµα Επιστήµης Υπολογιστών. HY-370: Ψηφιακή Επεξεργασία Σήµατος Χειµερινό Εξάµηνο 2016 ιδάσκοντες : Γ. Στυλιανού - Γ.

ΣΧΕ ΙΑ ΚΡΙΤΗΡΙΩΝ ΑΞΙΟΛΟΓΗΣΗΣ ΤΟΥ ΜΑΘΗΤΗ ΣΤΗΝ ΑΝΑΛΥΣΗ. ( ΚΕΦΑΛΑΙΟ 1ο )

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

Η μέθοδος των πεπερασμένων στοιχείων για την εξίσωση της θερμότητας

Η Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 6 Εντολές Επανάληψης Ασκήσεις. Γιώργος Λαμπρινίδης

ΘΕΜΑΤΑ ΕΞΕΤΑΣΕΩΝ ΜΑΘΗΜΑΤΙΚΩΝ Ι Ι ΑΣΚΩΝ : ρ. Χρήστος Βοζίκης

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

ΕΙΣΑΓΩΓΗ ΣΤΟ MATLAB- SIMULINK

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

Γενικές Παρατηρήσεις για τις Εργαστηριακές Ασκήσεις Φυσικοχηµείας

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Τµήµα Επιστήµης Υπολογιστών

H ΓΛΩΣΣΑ C. Μάθηµα 1: Το Πρώτο µας Πρόγραµµα σε C. ηµήτρης Ψούνης

ΦΥΣ 145 Μαθηµατικές Μέθοδοι στη Φυσική. 10 Μαίου 2010

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Τµήµα Επιστήµης Υπολογιστών

ΕΙΣΑΓΩΓΗ ΣΤΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ ΣΥΣΤΗΜΑΤΩΝ

ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ 8/9/2008

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

ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Παναγιώτα Φατούρου. Προγραµµατιστική Εργασία 3 ο Μέρος

x 2 = b 1 2x 1 + 4x 2 + x 3 = b 2. x 1 + 2x 2 + x 3 = b 3

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

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

Transcript:

Ejniko & Kapodistriako Panepisthmio Ajhnwn Tmhma Plhroforikhc & Thlepikoinwniwn, PMS Upologistikh Episthmh Μάθημα: «Επιστημονικοί Υπολογισμοί» Διδάσκων: Φίλιππος Τζαφέρης Χειμερινό Εξάμηνο 2006-2007 Άγγελος Μαντζαφλάρης, amantzaf@math.uoa.gr Τρίτη 5 Δεκεμβρίου, 2006 Επίλυση της Self-adjoint µορφής u t = u ( a(x) u ) x x Σε αυτήν την εργασία παρουσιάζεται κώδικας σε γλώσσα C για την αριθµητική λύση της παραπάνω Self-adjoint διαφορικής εξίσωσης, λαµβάνοντας a(x) =, + x 0, + x 20, + x 30 και αρχικές, συνοριακές συνθήκες Σταθερές : Με µερικές παραγώγους : u(x, 0) = 2, u(0, t) = u(, t) = 0 u(x, 0) =, u x = u για x = 0, t > 0, u = u για x =, t > 0 x ij Η συνάρτηση a(x) δίνεται από τη ϱουτίνα fun_a.c (για την ύψωση σε δύναµη χρησιµοποιείται η ϐοηθητική power.c). Ολες οι παρακάτω µέθοδοι µπορούν να τρέξουν µε χρήση της main.c. Σε αυτήν χρησιµοποιούνται και οι input.c (για είσοδο παραµέτρων) και printdata.c (για εκτύπωση δειγµατοληπτικών δεδοµένων). Η δειγµατοληψία γίνεται σε έναν 6 6 πίνακα µε τη συνάρτηση sample.c. Τα εκτελέσιµα αρχεία της εργασίας είναι τρία :. main.exe ίνει στο χρήστη τη δυνατότητα να εισάγει παραµέτρους και να τρέξει τις µεθόδους. 2. test.exe Εξάγει αρχείο µε δειγµατοληπτικά δεδοµένα εκτελέσεων για διάφορες παραµέτρους. 3. cn_conv.exe ίνει τις τιµές του r για τις οποίες η µέθοδος Crank-Nicolson είναι αρκετά ευσταθής.

Αµεση µέθοδος Η άµεση µέθοδος δίνεται από το σχήµα U i,j+ = ra i 2 U i,j + [ r(a i 2 + a i 2 )]U ij + ra i+ 2 U i+,j i,j+ i-,j ij i+,j. Σταθερές συνοριακές συνθήκες void explct(int n, int m, double r, double k, double h, double **U,int fa) //Epilish me thn Amesh me8odo int i,j,j0=(int)(step/k), j=6*j0+; double v,v2; for (i=0;i<=n;i++) U[i][0]=0.5; U[0][]=0; U[n][]=0; for (j=;j<=m;j++) printf("[%d]\r",j); U[i][] = r*v2*u[i-][0] + ( -r*(v+v2) )*U[i][0] + r*v*u[i+][0]; if ( (j%j0==0) && (j<j) ) sample(u,n,j,j0);.2 Συνοριακές συνθήκες µε µερικές παραγώγους Οι συνοριακές συνθήκες δίνονται από τις εξισώσεις U 0,j+ = [ 2r( + h)]u 0,j + 2rU,j U N,j+ = [ 2r( + h)]u N,j + 2rU N,j void explct_ic(int n, int m, double r, double k, double h, double **U,int fa) //Epilish me thn Amesh me8odo int i,j,j0=(int)(step/k), j=6*j0+; double v,v2,v=-2*r*(+h); for (i=0;i<=n;i++) U[i][0]=; for (j=;j<=m;j++) printf("[%d]\r",j); U[0][]= v*u[0][0]+2*r*u[][0]; U[n][]= v*u[n][0]+2*r*u[n-][0]; 2

U[i][] = r*v2*u[i-][0] + ( -r*(v+v2) )*U[i][0] + r*v*u[i+][0]; if ( (j%j0==0) && (j<j) ) sample(u,n,j,j0); 2 Εµµεσες µέθοδοι Το γενικό σχήµα λra i 2 U i,j+ + [ + λr(a i 2 + a i+ 2 )]U i,j+ λra i+ 2 U i+,j+ = = ( λ)ra i 2 U i,j + [ ( λ)r(a i 2 + a i+ 2 )]U ij + ( λ)ra i+ 2 U i+,j i-,j- i,j+ i+,j+ i-,j ij i+,j µας δίνει τη µέθοδο Crank-Nicolson για λ = 2 και τη µέθοδο Douglas για λ = 2 2r. Η επίλυση τριδιαγώνιου συστήµατος γίνεται µε τη ϱουτίνα thomas.c. 2. Σταθερές συνοριακές συνθήκες void implicit(int n, int m, double r, double k, double h, double **U,int fa,double l) //Emmeses me8odoi me sta8eres arxikes sin8ikes // Gia l=0.5 einai h Crank Nicolson // Gia l=/2-/(2r) einai h Crank Nicolson int i,j,t=0, j0=(int)(step/k), j=6*j0+; double a[n],b[n],c[n],d[n], v,v2; for (i=0;i<=n;i++) U[i][0]=0.5; U[0][]=0; U[n][]=0; for (j=;j<=m;j++) printf("[%d]\r",j); a[i]=-l*r*v2; b[i]=+l*r*(v+v2); c[i]=-l*r*v; d[i]=(-l)*r*v2*u[i-][0] + (-(-l)*r*(v+v2))*u[i][0] + (-l)*r*v*u[i+][0]; d[] -=a[]*u[0][]; d[n-]-=c[n-]*u[n][]; thomas(n,u,a,b,c,d); if ( (j%j0==0) && (j<j) ) sample(u,n,j,j0); 3

2.2 Συνοριακές συνθήκες µε µερικές παραγώγους Οι συνοριακές συνθήκες δίνονται όµοια µε πριν : U 0,j+ = [ 2r( + h)]u 0,j + 2rU,j U N,j+ = [ 2r( + h)]u N,j + 2rU N,j void implicit_ic(int n, int m, double r, double k, double h, double **U,int fa,double l) //Emmeses me8odoi me arxikes sin8ikes me merikes paragogous // Gia l=0.5 einai h Crank Nicolson // Gia l=/2-/(2r) einai h Crank Nicolson int i,j,t=0, j0=(int)(step/k), j=6*j0+; double a[n],b[n],c[n],d[n], v,v2,v=-2*r*(+h); for (i=0;i<=n;i++) U[i][0]=; for (j=;j<=m;j++) printf("[%d]\r",j); U[0][]= v*u[0][0]+2*r*u[][0]; U[n][]= v*u[n][0]+2*r*u[n-][0]; a[i]=-l*r*v2; b[i]=+l*r*(v+v2); c[i]=-l*r*v; d[i]=(-l)*r*v2*u[i-][0] + (-(-l)*r*(v+v2))*u[i][0] + (-l)*r*v*u[i+][0]; d[] -=a[]*u[0][]; d[n-]-=c[n-]*u[n][]; thomas(n,u,a,b,c,d); if ( (j%j0==0) && (j<j) ) sample(u,n,j,j0); 3 Πειραµατικά αποτελέσµατα Με τη ϱουτίνα test.c (η οποία έχει ως είσοδο το h) λαµβάνονται δειγµατοληπτικά αποτελέσµατα από τις παραπάνω µεθόδους για για r = 0., 0.25, 0.48, 0.5, 0.52, 0.8,.0, 2.0. Η δειγµατοληψία γίνεται µε τη συνάρτηση sample.c στους χρόνους t = ST EP, 2 ST EP,..., 6 ST EP (όπου η σταθερά ST EP καθορίζεται στο πρόγραµµα) και σε έξι ισαπέχοντα σηµεία πάνω στον x άξονα. Γίνονται όλοι οι συνδυασµοί για τις διαφορετικές a(x) και για τις δυο διαφορετικές αρχικές συνθήκες. Τα πειραµατικά αποτελέσµατα αποθηκεύονται στο αρχείο test.txt. Εγιναν οι εξής εκτελέσεις : test0.txt Για h = 0, δειγµατοληπτικά t = 0.05, 0.0,..., 0.30. test00.txt Για h = 00, δειγµατοληπτικά t = 0.05, 0.0,..., 0.30 test000.txt Για h = 000, δειγµατοληπτικά t = 0.025, 0.05,..., 0.5. Ενδεικτικά παραθέτουµε µερικούς δειγµατοληπτικούς πίνακες που πήραµε για a(x) =, h = 000 και r = 0.5, 0.52. Στην πρώτη γραµµή ϕαίνεται το χωρικό ϐήµα i από το οποίο προέρχεται η τιµή και στην πρώτη στήλη ο χρόνος t και το χρονοβήµα j. 4

t j i = 66 i = 332 i = 498 i = 664 i = 830 i = 996 Αµεση µέθοδος(r = 0.5) 0.05 50000 0.26943958 0.43240632 0.4869997 0.47606084 0.35509429 0.0059302 0.0 00000 0.9606208 0.3477839 0.42525066 0.4098905 0.2748567 0.00762846 0.5 50000 0.5693328 0.2853699 0.3569432 0.34430053 0.2260585 0.006784 0.20 200000 0.288339 0.23590204 0.297275 0.28729073 0.8805447 0.0052685 0.25 250000 0.0654760 0.9554342 0.24694690 0.2392064 0.566486 0.0042703 0.30 300000 0.0883477 0.6228976 0.20520077 0.9898834 0.3040795 0.0035557 Crank-Nicolson(r = 0.5) 0.05 50000 0.26943982 0.43240562 0.4869890 0.47605989 0.35509424 0.0059305 0.0 00000 0.960626 0.34778 0.4252499 0.40989042 0.27485665 0.00762846 0.5 50000 0.5693326 0.2853690 0.35694284 0.3443008 0.2260573 0.006784 0.20 200000 0.288337 0.2359095 0.2972735 0.28729057 0.8805438 0.0052685 0.25 250000 0.0654760 0.955434 0.24694686 0.2392060 0.566483 0.0042703 0.30 300000 0.0883479 0.6228980 0.20520082 0.9898837 0.3040797 0.0035557 Douglas(r = 0.5) 0.05 50000 0.26943974 0.43240585 0.4869926 0.4760602 0.35509426 0.0059304 0.0 00000 0.960623 0.3477820 0.4252506 0.40989063 0.27485667 0.00762846 0.5 50000 0.5693327 0.28536907 0.35694296 0.34430030 0.2260577 0.006784 0.20 200000 0.288338 0.2359098 0.297274 0.28729062 0.880544 0.0052685 0.25 250000 0.0654760 0.955434 0.24694687 0.239206 0.566484 0.0042703 0.30 300000 0.0883478 0.6228978 0.20520080 0.9898836 0.3040796 0.0035557 Αµεση µέθοδος(συνθήκες µε παραγώγους)(r = 0.5) 0.05 50000 0.94608867 0.98785552 0.99825480 0.99730748 0.9780294 0.8933040 0.0 00000 0.8955400 0.95740703 0.98400743 0.9832307 0.94848856 0.85204070 0.5 50000 0.85576899 0.9255742 0.96043550 0.9678386 0.922067 0.8237476 0.20 200000 0.8287738 0.89373650 0.93326239 0.93697990 0.89695 0.7998634 0.25 250000 0.795356 0.86362075 0.905344 0.909042 0.87232043 0.77762586 0.30 300000 0.76359422 0.83485896 0.8776374 0.88454924 0.84798653 0.756355 Crank-Nicolson(συνθήκες µε παραγώγους)(r = 0.5) 0.05 50000 0.94608827 0.9878550 0.99825457 0.99730727 0.9780265 0.893302 0.0 00000 0.89553977 0.95740669 0.98400704 0.98323038 0.94848835 0.85204058 0.5 50000 0.85576880 0.925573 0.9604354 0.9678353 0.9220650 0.82374748 0.20 200000 0.8287720 0.89373624 0.93326208 0.93697959 0.8969093 0.799868 0.25 250000 0.7953544 0.86362052 0.9053386 0.90904 0.87232020 0.77762568 0.30 300000 0.76359406 0.83485876 0.8776350 0.88454899 0.84798630 0.756336 Douglas(συνθήκες µε παραγώγους)(r = 0.5) 0.05 50000 0.94608840 0.98785524 0.99825464 0.99730734 0.9780275 0.8933027 0.0 00000 0.89553985 0.95740680 0.9840077 0.98323049 0.94848842 0.85204062 0.5 50000 0.85576886 0.9255723 0.96043526 0.9678364 0.9220657 0.82374752 0.20 200000 0.8287726 0.89373633 0.9332628 0.93697970 0.896900 0.7998623 0.25 250000 0.7953550 0.86362060 0.9053395 0.909023 0.87232028 0.77762574 0.30 300000 0.7635942 0.83485883 0.8776358 0.88454907 0.84798638 0.756342 5

t j i = 66 i = 332 i = 498 i = 664 i = 830 i = 996 Crank-Nicolson(r = 0.52) 0.05 48076 0.26944207 0.43240759 0.4869975 0.476060 0.3550965 0.005934 0.0 9652 0.9606406 0.34772087 0.42525263 0.40989309 0.2748589 0.00762853 0.5 44228 0.569352 0.28537220 0.35694659 0.34430376 0.226087 0.006782 0.20 92304 0.2883328 0.23590539 0.297359 0.2872946 0.8805703 0.0052692 0.25 240380 0.0654954 0.9554693 0.2469527 0.23920583 0.5665090 0.00427020 0.30 288456 0.0883490 0.6229329 0.2052052 0.989926 0.304074 0.00355579 Douglas(r = 0.52) 0.05 48076 0.2694499 0.43240782 0.4869200 0.4760633 0.35509653 0.005934 0.0 9652 0.9606404 0.34772096 0.42525288 0.40989329 0.27485893 0.00762853 0.5 44228 0.569353 0.28537226 0.3569467 0.34430387 0.226082 0.006782 0.20 92304 0.2883329 0.2359054 0.297364 0.28729467 0.8805706 0.0052692 0.25 240380 0.0654954 0.9554693 0.2469528 0.23920585 0.566509 0.00427020 0.30 288456 0.08834909 0.6229327 0.20520520 0.9899260 0.304073 0.00355579 Crank-Nicolson(συνθήκες µε παραγώγους)(r = 0.52) 0.05 48076 0.94608937 0.98785560 0.99825470 0.99730743 0.9780324 0.89334 0.0 9652 0.8955445 0.9574079 0.9840078 0.9832309 0.94848940 0.8520480 0.5 44228 0.85577087 0.9255896 0.96043663 0.9678488 0.9220796 0.82374893 0.20 92304 0.8287963 0.89373859 0.9332642 0.9369856 0.8969282 0.7998792 0.25 240380 0.795382 0.86362334 0.9053656 0.9090366 0.87232254 0.77762775 0.30 288456 0.7635976 0.8348698 0.8776668 0.8845520 0.84798908 0.7563380 Douglas(συνθήκες µε παραγώγους)(r = 0.52) 0.05 48076 0.94608950 0.98785574 0.99825477 0.99730750 0.9780334 0.89332 0.0 9652 0.8955452 0.95740802 0.98400794 0.9832320 0.94848948 0.8520484 0.5 44228 0.85577094 0.9255906 0.96043675 0.9678499 0.9220803 0.82374898 0.20 92304 0.8287969 0.89373868 0.93326432 0.9369866 0.8969289 0.7998797 0.25 240380 0.7953827 0.8636234 0.9053665 0.9090375 0.87232262 0.77762782 0.30 288456 0.7635972 0.83486205 0.8776676 0.88455209 0.8479896 0.7563387 Αµεση µέθοδος(r = 0.52): ο πίνακας είναι γεµάτος.#in D000. Αµεση µέθοδος(συνθήκες µε παραγώγους)(r = 0.52): ο πίνακας είναι γεµάτος.#in D000. Τα αποτελέσµατα αναδεικνύουν ότι η άµεση µέθοδος δίνει σωστά αποτελέσµατα µόνο για r 2. Στην δεύτερη εκτέλεση όπου δεν ικανοποιείται αυτή η απαίτηση παίρνουµε τεράστιες τιµές, υπερχείλιση ή υπεκχείλιση υπολογισµών. Οι µέθοδοι Crank-Nicolson και Douglas δίνουν εφάµιλλα αποτελέσµατα τις περισσότερες ϕορές. Παρατηρείται οι τιµές της µεθόδου Douglas να ϐρίσκονται συνήθως ενδιάµεσα σε αυτές της άµεσης µεθόδου και της µεθόδου Crank- Nicolson. Οι µέθοδοι έχουν καλύτερα αποτελέσµατα για σταθερές συνοριακές συνθήκες. Για συνθήκες µε παραγώγους, προ- ϐλήµατα ευστάθειας παρουσιάζονται ακόµη και στις έµµεσες µεθόδους, για r (ϐλέπε και ενότητα 4). Αν µικρύνουµε αρκετά το ϐήµα h, πχ h = 0000, ϐλέπουµε ότι για να διατηρήσουµε το r σε µικρές τιµές πρέπει να λάβουµε πολύ µικρό χρονοβήµα k. Για παράδειγµα : 6

Douglas(r = 2, h = 0000 ) t j\i 666 3332 4998 6664 8330 9996 0.0002 40000 0.50000000 0.50000000 0.50000000 0.50000000 0.50000000 0.00797836 0.0004 80000 0.50000000 0.50000000 0.50000000 0.50000000 0.50000000 0.0056473 0.0006 20000 0.49999924 0.50000000 0.50000000 0.50000000 0.49999929 0.00460650 0.0008 60000 0.49998443 0.50000000 0.50000000 0.50000000 0.4999850 0.00398936 0.000 200000 0.49990246 0.50000000 0.50000000 0.50000000 0.49990586 0.0035682 0.002 240000 0.49966395 0.50000000 0.50000000 0.50000000 0.49967385 0.00325732 χρειάστηκαν 240000 επαναλήψεις για να υπολογίσουµε τις τιµές σε χρόνο µόλις t=0.002. Προφανώς τόσο µικρό χρονικό ϐήµα δεν έχει νόηµα στις εφαρµογές, και πράγµατι ϐλέπουµε πως ο παραπάνω πίνακας δεν έχει αξιόλογες πληροφορίες. 4 Πειραµατική εύρεση πεδίου σύγκλισης της Crank-Nicolson Η συνάρτηση cn_conv.c έχει είσοδο µια ακρίβεια tol. Αρχικά υπολογίζει έναν «ακριβή» πίνακα (δειγµατοληπτικών) τιµών D µε τη µέθοδο Douglas. Κατόπιν τρέχει τη µέθοδο CN για διάφορες τιµές του r (και για h = 0.0,), ώστε να λάβουµε έναν αντίστοιχο πίνακα C. Η διαδικασία επαναλαµβάνεται για αυξανόµενα r έως ότου συµβεί πέντε ϕορές να είναι D C > tol Στην οθόνη τυπώνονται τα r και το αντίστοιχο σφάλµα D C. Για σταθερές συνοριακές συνθήκες και a(x) = πήραµε : tol = 0 3 tol = 0 2 tol = 0 r D C r D C r D C 0.30 0.00029786 5.0 0.00400564 45.20 0.038760 0.60 0.00052758 5.20 0.00500946 45.30 0.0370547.00 0.00052762 5.40 0.00887706 45.40 0.03539877.0 0.0052344 5.50 0.07460 45.50 0.060484.20 0.0090665 5.70 0.0050488 45.70 0.065878.30 0.009833 5.90 0.02557 45.90 0.0266769 Παρατηρώντας τα αποτελέσµατα ϐλέπουµε ότι : Για tol = 0 3 παίρνουµε ικανοποιητικές τιµές περίπου για r. Για tol = 0 2 παίρνουµε ικανοποιητικές τιµές περίπου για r 5. Για tol = 0 παίρνουµε ικανοποιητικές τιµές περίπου για r 50. Συµπερασµατικά η Crank-Nicolson µπορεί να ϑεωρηθεί αρκετά ακριβής για r 5. Τα πράγµατα αλλάζουν όταν έχουµε συνοριακές συνθήκες µε παραγώγους(a(x) = ): tol = 0 r D C 0.50 0.00049244 0.70 0.0009094 0.80 0.00058430 0.90 0.0022685.00 727.29.0 5587420... Εδώ η µέθοδος είναι ακριβής µόνο για r <. 7