ΑΣΚΗΣΗ 1 ΥΠΟΛΟΓΙΣΤΙΚΕΣ ΜΕΘΟΔΟΙ, 9-1, 5 Ο ΕΞΑΜΗΝΟ ΕΡΓΑΣΙΑ #3: ΠΑΡΑΒΟΛΙΚΑ ΠΡΟΒΛΗΜΑΤΑ ΗΜΕΡΟΜΗΝΙΑ ΠΑΡΑΔΟΣΗΣ: 15.1.9 ΔΙΔΑΣΚΩΝ: Δ. Βαλουγεώργης Επιμέλεια απαντήσεων: Ιωάννης Λυχναρόπουλος Δίδεται η διαφορική εξίσωση: 1 1, 1, (1) με τις συνθήκες 1,, 1 (), 1, (3),,. (4) Να εξετασθεί ο τύπος της διαφορικής εξίσωσης και στη συνέχεια να εφαρμοσθεί ένα αριθμητικό σχήμα επίλυσης του προβλήματος. Λύση 1 1, N N 1 1, 1 3 N 1 N 1, Σχήμα 3: Αριθμητικό πλέγμα 1
Για να μελετηθεί η Εξ. (1), γράφεται στη μορφή A B C... και υπολογίζεται η διακρίνουσα B 4AC : 1 1 1 A B C Επομένως 41 Άρα η Εξ. (1) είναι παραβολική. Το πρόβλημα επιλύεται αρχικά με ρητό και στη συνέχεια με πεπλεγμένο σχήμα. Λόγω αξισυμμετρίας το αριθμητικό πλέγμα ορίζεται στο επίπεδο, με 1 και. Ρητό σχήμα Η Εξ. (1) διακριτοποιείται στον τυχαίο κόμβο (, ) χρησιμοποιώντας το ρητό σχήμα με πρόδρομη πεπερασμένη διαφορά 1 ης τάξης ως προς και κεντρώες πεπερασμένες διαφορές ης τάξης ως προς : 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1,..., N1, 1,,... (5) d Ειδικά για τον κόμβο χρησιμοποιούμε την οριακή συνθήκη, την οποία d διακριτοποιούμε χρησιμοποιώντας πρόδρομη πεπερασμένη διαφορά: 1 1 (6) Επίσης είναι:,,..., N (7) Πρόγραμμα Fotan: Pogam FTBS mplct none ntege,paamete:: N=7!Athmos dasthmatwn. O pwtos ombos sth thesh a o teleytaos sth thesh N. eal,paamete::d=.1! Bhma ntege,paamete::n=1! Athmos bhmatwn sthn ateythnsh
eal::(:n,:n),(:n) ntege::,j, eal::d,a,b,c,d,e d=1./(n)!bhma do =,N ()=*d!axes tmes (:,)=1. open(1,le='es_hto.txt',recl=1) do =1,N do =1,N-1 a=./d** b=(1.-()**)/d c=b-a d=1./d** - 1./(.*()*d) e=1./d** + 1./(.*()*d) (,)=(d/b)*(-1,-1)+(e/b)*(+1,-1)+(c/b)*(,-1) (N,)=. (,)=(1,)! Oah synthh! Oah synth symmetas do =,N wte(1,'(<n+1>(1.4,x))') (:,) close(1) end pogam 1 Για να έχει το ρητό σχήμα ευστάθεια θα πρέπει να ισχύει. Επιλέγοντας 1/6 και.1 προκύπτουν τα παρακάτω αποτελέσματα: 1 1/6 /6 3 3/6 4 4/6 5 5/6 6 1 1. 1. 1. 1. 1. 1. 1. 1.1 1. 1. 1. 1. 1. 1... 1. 1. 1. 1. 1..874. 3.3 1. 1. 1. 1..996.7713. 4.4 1. 1. 1..9995.9751.6946. 5.5 1. 1. 1..9981.956.6343. 6.6 1. 1..9999.9958.935.586. 7.7 1. 1..9997.996.913.547. 8.8 1. 1..9993.9884.899.5151. 9.9.9999.9999.9988.9834.869.488. 1.1.9999.9999.9981.9776.8477.4653. 3
Πεπλεγμένο σχήμα Η Εξ. (1) διακριτοποιείται στον τυχαίο κόμβο, 1 χρησιμοποιώντας το πεπλεγμένο σχήμα με ανάδρομη πεπερασμένη διαφορά 1 ης τάξης ως προς και κεντρώες πεπερασμένες διαφορές ης τάξης ως προς : 1 1, 1, 1, 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1,..., N1 (8) Για τις οριακές συνθήκες έχουμε: N (9) 1,, 1 1,,...,, 1,, 1,..., N (1) N Για διακριτοποιείται η Εξ. (1) αφού πρώτα εφαρμοσθεί η σχέση lm Επίσης, η παράγωγος προσεγγίζεται με κεντρώες πεπερασμένες διαφορές: 1 1 1 1 1 4 1 1 4 1 1 1 (11) Το σύστημα είναι τριδιαγώνιο και επομένως ο αλγόριθμος Thomas είναι ο πλέον αποτελεσματικός. Βεβαίως μπορεί να επιλυθεί και με επαναληπτικές μεθόδους όπως η Gauss-Sedel. Στη συνέχεια παρουσιάζονται και οι δύο μεθόδοι ξεκινώντας με τον αλγόριθμο Thomas. Το τριδιαγώνιο σύστημα είναι της μορφής: b c d a1 b1 c1 1 d1 a b c d an bn c N N d N an 1 b N1 N1 d N1 4
με 4 1 b, 4 c, d και 1 1 a, 1,..., N 1 1 b, 1,..., N 1 1 1 c, 1,..., N 1 d, 1,..., N 1 Πρόγραμμα Fotan με αλγόριθμο Thomas: Pogam ThomasP mplct none 1 ntege,paamete:: N=6!Athmos dasthmatwn. O pwtos ombos sth thesh a o teleytaos sth thesh N eal,paamete::d=.1! Bhma ntege,paamete::n=1! Ο athmos bhmatwn sthn ateythnsh eal::a(:n-1),b(:n-1),c(:n-1),d(:n-1),x(:n-1) eal::(:n,:n),(:n) ntege::,j, eal::d d=1./n do =,N ()=*d open(11,le='es_thomas.txt',recl=1) (:,:)=. (:,)=1. do =,N ()=*d do =1,N (N,)=. B()=-4./d**-1./d C()=4./d** D()=-(1./d)*(,-1) do =1,N- A()=1./d** - 1./(.*()*d) B()=-./d**-(1.-()**)/d C()=1./d** + 1./(.*()*d) D()=-((1.-()**)/d)*(,-1) 5
A(N-1)=1./d** - 1./(.*(N-1)*d) B(N-1)=-./d**-(1.-(N-1)**)/d D(N-1)=-((1.-()**)/d)*(N-1,-1) call Thomas(N,A,B,C,D,X) (:N-1,)=X(:) wte(11,'(<n+1>(1.4,x))') (:,) pnt*, '-------------' do =,N pnt '(Hx(,I3,4H) =,F.15)',,(,)! contans suboutne Thomas(n,a,b,c,d,x) ntege,intent(in) :: n eal, INTENT(INOUT) ::a(n),b(n),c(n),d(n) eal, INTENT(INOUT) ::x(n) ntege:: eal ::t(n),u(n) t(1)=b(1) u(1)=d(1)/t(1) end do =,n t()=b()-a()*c(-1)/t(-1) u()=(d()-a()*u(-1))/t() x(n)=u(n) do =n-1,1,-1 x()=u()-c()/t()*x(+1) end suboutne Thomas Για 1/6,.1 και 1 βήματα παρακάτω αποτελέσματα: στην κατεύθυνση προκύπτουν τα 1 1/6 /6 3 3/6 4 4/6 5 5/6 6 1 1. 1. 1. 1. 1. 1. 1. 1.1 1. 1. 1..9997.993.8945.. 1. 1..9999.9987.9815.88. 3.3 1. 1..9998.9971.9665.737. 4.4 1. 1..9996.9948.9493.6779. 5.5 1..9999.999.9917.937.685. 6.6 1..9999.9987.9878.9114.5869. 7.7.9999.9998.998.9833.8918.5515. 8.8.9999.9996.9971.9781.87.51. 9.9.9998.9994.996.974.859.495. 1.1.9998.999.9947.9661.834.471. Στη συνέχεια εφαρμόζεται για το ίδιο σύστημα η μέθοδος Gauss-Sedel. Η Εξ. (8) γράφεται στη μορφή 6
1 ( n) ( ) ( 1) 1 1 1 1 n 1 1 1 n 1 1 1 1 (1) και η Εξ. (11) στη μορφή 1 ( n) ( n1) 1 1 1 4 1 4 1 όπου ( n) είναι ο δείκτης επανάληψης της Gauss-Sedel. (13) Πρόγραμμα σε Fotan με αλγόριθμο Gauss-Sedel: Pogam peplegmeno mplct none doublepecson,allocatable::(:),u(:,:),uold(:) ntege::n,n,,j,,m,status,tmax,done,method doublepecson::e,max,d,dt,l doublepecson::a,b,c,d,e, n=6 N=3 dt=.1 d=1./n e=.1 allocate((:n),u(:n,:n),uold(:n)) tmax=1 do =,n ()=*d open(11,le='es_pepleg.txt',recl=1) u(:,:)=. u(:,)=1. do =1,N!Gauss-Sedel m=1 done= u(:,)=u(:,-1) do whle (done==) uold=u(:,) u(n,)=. a=4./d** b=1./dt c=a+b u(,)=(a/c)*u(1,)+(b/c)*u(,-1) do =1,n-1 a=./d** b=(1.-()**)/dt c=a+b d=1./d** - 1./(.*()*d) e=1./d** + 1./(.*()*d) 7
u(,)=(d/c)*u(-1,)+(e/c)*u(+1,)+(b/c)*u(,-1) enddo max=maxval(abs((u(1:n-1,)-uold(1:n-1))/u(1:n-1,))) pnt*,,m,max (max<e) then done=1 end m=m+1 enddo!gauss-sedel! do =N,,-1 wte(11,'(<n+1>(1.4,x))') u(:,) end pogam Για 1/6,.1 και 1 βήματα παρακάτω αποτελέσματα: στην κατεύθυνση προκύπτουν τα 1 1/6 /6 3 3/6 4 4/6 5 5/6 6 1 1. 1. 1. 1. 1. 1. 1. 1.1 1. 1. 1..9997.993.8945.. 1. 1..9999.9987.9815.88. 3.3 1. 1..9998.9971.9665.737. 4.4 1. 1..9996.9948.9493.6779. 5.5 1..9999.999.9917.937.685. 6.6 1..9999.9987.9878.9114.5869. 7.7.9999.9998.998.9833.8918.5515. 8.8.9999.9996.9971.9781.87.51. 9.9.9999.9995.996.974.859.495. 1.1.9998.999.9947.9661.834.471. Παρατηρούμε πλήρη ταύτιση με τα αντίστοιχα αποτελέσματα της μεθόδου Thomas. Τέλος, εφαρμόζοντας το πεπλεγμένο σχήμα σε ένα πυκνότερο πλέγμα με 1/,.1 και για 3 βήματα στην κατεύθυνση παίρνουμε το ακόλουθο γράφημα: Σχήμα: Γραφική απεικόνιση 8