ΠΑΡΑΔΕΙΓΜΑ 6 ΥΠΟΛΟΓΙΣΤΙΚΕΣ ΜΕΘΟΔΟΙ, 0-0, 5 Ο ΕΞΑΜΗΝΟ ΕΠΙΛΥΣΗ ΕΡΓΑΣΙΑΣ #: ΣΥΝΗΘΕΙΣ ΔΙΑΦΟΡΙΚΕΣ ΕΞΙΣ - ΠΡΟΒΛΗΜΑΤΑ ΑΡΧΙΚΩΝ ΤΙΜΩΝ ΕΠΙΜΕΛΕΙΑ: Ιωάννης Λυχναρόπουλος ΑΣΚΗΣΗ Η διατήρηση μάζας σε ένα σύστημα τριών αντιδραστήρων περιγράφεται από το παρακάτω σύστημα συνήθων διαφορικών εξισώσεων: d dt d dt d dt 0. 0.0 0.8 0.5 0. 0.05 0.5 () Θεωρώντας ότι τη χρονική στιγμή t 0, όλες οι συγκεντρώσεις 0 να βρεθεί, εφαρμόζοντας τις μεθόδους Euler και Runge-Kutta 4 ης τάξης, η χρονική εξέλιξη των συγκεντρώσεων. Να εξετασθεί η ευστάθεια της μεθόδου Euler και να επιλεγεί το κατάλληλο χρονικό βήμα. Επίσης να συγκριθεί η αριθμητική με την αναλυτική λύση και να σχολιασθεί η χρονική εξέλιξη του σφάλματος και για τις δύο αριθμητικές μεθόδους. Λύση Βρίσκουμε την αναλυτική λύση χρησιμοποιώντας το Mathematca: a=c'[t]==-0.c[t]+0.0c[t]+0.8 b=c'[t]==0.5c[t]-0.c[t] c=c'[t]==0.05c[t]-0.5c[t]+ =DSolve[{,,,c[0]==0,c[0]==0,c[0]==0},{c[],c[],c[]},]//Smplfy Αναλυτική λύση: 0.548 t 0.045 t 6 0.095 t (t)=.486.5844 e 8.844e.04 0 e 0.548 t 0.045 t 6 0.0954 t (t)=7.49 7.0778 e 4.06 e + 4.4409 0 e 0.5t 6 0.048t 0.548t 6 0.0954t (t)=.74.654e 4.44090 e.858e 4.44090 e 6 0.095t 0.045t.040 e.9570e Όμως η λύση δεν είναι ακριβής για t>00!!! Γραφική παράσταση λύσεων: Plot[{[[,,]],[[,,]],[[,,]]},{,0,400},AxesOrgn {0,0}]
5 0 5 0 5 00 00 00 400 Το σφάλμα οφείλεται στο γεγονός ότι το πρόγραμμα Mathematca δεν εκτελεί σωστά 6 τους πολλαπλασιασμούς των όρων τάξης 0 με τους εκθετικούς όρους για μεγάλες τιμές του χρόνου που τείνουν στο άπειρο. Παρόλα αυτά επειδή οι όροι αυτοί πολλαπλασιάζονται με εκθετικά, για μεγάλες τιμές του t αρχίζουν να αποκτούν σημασία και να επηρεάζουν τα αποτελέσματα. Στη συνέχεια αποδεικνύεται η σωστή αναλυτική λύση για όλες τις τιμές του χρόνου: Από τη θεωρεία των συστημάτων γραμμικών διαφορικών εξισώσεων και επειδή στις εξισώσεις δεν υπάρχει όρος στον οποίο να εμφανίζεται t, αναμένεται οι λύσεις του συστήματος να είναι της μορφής t t t t () ae vae v ae v b, όπου a, a, a σταθερές,b σταθερό διάνυσμα,,, οι ιδιοτιμές και v, v, v τα αντίστοιχα ιδιοδιανύσματα του πίνακα συντελεστών των αγνώστων του αντίστοιχου ομογενούς συστήματος. 0. 0.0 0 Πίνακας συντελεστών: 0.5 0. 0 0 0.05 0.5 Ιδιοτιμές: 0.5, 0.548, 0.045 0 0. 0.4 Ιδιοδιανύσματα: v 0, v 0.9, v 0.9 0.9 0.4 Συγκρίνοντας τους όρους που έδωσε το Mathematcaσαν λύση με τους 6 αναμενόμενους, παρατηρούμε ότι όλοι οι όροι που περιέχουν το 0 πρακτικά είναι ίσοι με μηδέν και πρέπει να απαλειφτούν εφόσον μάλιστα περιέχουν δυνάμεις του t e που δεν εμπλέκουν καμία ιδιοτιμή του συστήματος. Πρόκειται για σφάλμα στρογγυλοποίησης στο Mathematca. Αναλυτική λύση:
(t)=.486.5844 e 8.844e 0.548 t 0.045 t (t)=7.49 7.0778 e 4.06 e 0.548 t 0.045 t (t)=.74.654e.858e.9570e 0.5t 0.548t 0.045t Γραφική παράσταση λύσεων: 5 0 5 00 00 00 400 Αλγορίθμι Euler και Runge-Kutta 4 ης τάξης (h=0., h=0.5, h=.0, αριθμός βημάτων n=) Βήμα h 0. Euler () t 0.0 0.000000 4.76876E-07 4.76876E-07 0. 8.0000006E-0 7.960884E-0.9877E-04 0. 0.59000 0.58444 7.85604E-04 4 0. 0.7604 0.64465.69446E-0 5 0.4 0.545 0.70.57E-0 6 0.5 0.90 0.905.889765E-0 7 0.6 0.468057 0.4659665.957E-0 8 0.7 0.545588 0.5409799.57894E-0 9 0.8 0.6879 0.656.908859E-0 0 0.9 0.690548 0.68889.08698E-0.0 0.76567 0.76676.54458E-0 Euler () t 0.0 0.0000000 4.44089E-6 4.44089E-6 0. 0.0000000 5.956566E-04 5.956566E-04 0..00000E-0.6865E-0.686509E-0 4 0..5760005E-0 5.945E-0.77446E-0 5 0.4 7.04968E-0 9.488E-0.494E-0 6 0.5.76975E-0.4506E-0.7486589E-0 7 0.6.755904E-0.0757664E-0.760E-0 8 0.7.477E-0.806755E-0.69547E-0 9 0.8.877E-0.647585E-0 4.4080E-0 0 0.9 4.E-0 4.578904E-0 4.555986E-0.0 5.065E-0 5.66074E-0 4.9590990E-0 Euler () t
0.0 0.0000000 -.84858E-07.84858E-07 0. 0.000000 0.968.7878E-0 0. 0.595000 0.585506 7.49449E-0 4 0. 0.8776906 0.86709.059944E-0 5 0.4.55757.498.775587E-0 6 0.5.4688.40096.678564E-0 7 0.6.698.67605.9674E-0 8 0.7.94900.96674.6946E-0 9 0.8.007.75465.487065E-0 0 0.9.44540.485.774E-0.0.68477.65488.95947E-0 RK4 () t 0.0 0.000000 4.76876E-07 4.76876E-07 0. 7.96077E-0 7.960884E-0.56469E-07 0. 0.5848 0.58444 6.407499E-07 4 0. 0.6446 0.64465.7889E-07 5 0.4 0.709 0.70 8.046670E-07 6 0.5 0.907 0.905 7.4505806E-07 7 0.6 0.465966 0.4659665.7889E-07 8 0.7 0.5409796 0.5409799.84858E-07 9 0.8 0.656 0.656 9.5674E-07 0 0.9 0.6888 0.68889 7.748608E-07.0 0.76679 0.76676 6.556509E-07 RK4 () t n t Αριθμητική Αναλυτική Απόλυτο Σφάλμα 0.0 0.0000000E+00 4.44089E-6 4.44089E-6 0. 5.96065E-04 5.956566E-04.686656E-07 0..6865E-0.6865E-0.885944E-07 4 0. 5.946E-0 5.945E-0.0489097E-08 5 0.4 9.4878E-0 9.488E-0.56469E-07 6 0.5.4505E-0.4506E-0 4.805645E-07 7 0.6.0756986E-0.0757664E-0 6.78008E-07 8 0.7.8066758E-0.806755E-0 4.9765E-07 9 0.8.64796E-0.647585E-0.55084E-07 0 0.9 4.578960E-0 4.578904E-0.56469E-07.0 5.65996E-0 5.66074E-0 7.7858567E-07 RK4 () t 0.0 0.0000000 -.84858E-07.84858E-07 0. 0.9685 0.968.68090E-07 0. 0.585508 0.585506.7889E-07 4 0. 0.86709 0.86709 5.9604645E-08 5 0.4.498.498 0.0000000E+00 6 0.5.40096.40096 4.76876E-07 7 0.6.67605.67605.9099E-07 8 0.7.96674.96674 0.0000000E+00 9 0.8.75465.75465 0.0000000E+00 0 0.9.485.485.84858E-07.0.65488.65488.84858E-07 Βήμα h 0.5 Euler () t 0.0 0.0000000 4.76876E-07 4.76876E-07 0.5 0.4000000 0.905 9.786564E-0.0 0.7800000 0.76675.87475E-0 4.5.400.5544.575600E-0 5.0.48505.459.90E-0 4
6.5.85.774786.77458E-0 7.0.468.0805 4.5894E-0 8.5.4.7574 4.658E-0 9 4.0.70659.656507 5.009E-0 0 4.5.978095.956 5.96E-0 5.0.7759.840 5.54950E-0 Euler () t 0.0 0.0000000 4.44089E-6 4.44089E-6 0.5 0.0000000.4506E-0.4506E-0.0.000000E-0 5.66086E-0.66085E-0 4.5 8.6999997E-0 0.967.59676E-0 5.0 0.68475 0.048 4.4585E-0 6.5 0.780 0.84688 4.750807E-0 7.0 0.95970 0.4449 5.059697E-0 8.5 0.566 0.5857589 5.4950E-0 9 4.0 0.688746 0.7447 5.4809E-0 0 4.5 0.85685 0.90958 5.70978E-0 5.0.0766.088770 5.40999E-0 Euler () t 0.0 0.000000 -.84858E-07.84858E-07 0.5.500000.40096 8.990489E-0.0.8500.65488 0.57664 4.5.96.75957 0.07555 5.0 4.9676 4.7488 0.4978 6.5 5.84844 5.58795 0.65698 7.0 6.60770 6.46 0.79454 8.5 7.98094 7.08 0.8584 9 4.0 7.89498 7.60658 0.8698 0 4.5 8.4459 8.57 0.880 5.0 8.874 8.5989 0.75097 RK4 () t 0.0 0.000000 4.76876E-07 4.76876E-07 0.5 0.907 0.905 7.748608E-07.0 0.76678 0.76675 7.55574E-07 4.5.554.5544 5.9604645E-07 5.0.459.459 9.5674E-07 6.5.774786.774786 4.76876E-07 7.0.0804.0805 7.55574E-07 8.5.75740.7574 7.55574E-07 9 4.0.656507.656507 4.76876E-07 0 4.5.956.956 4.76876E-07 5.0.8409.840 4.76876E-07 RK4 () t 0.0 0.000000 4.44089E-6 4.44089E-6 0.5.450E-0.4506E-0.07497E-07.0 5.6600E-0 5.66086E-0 5.9604645E-07 4.5 0.977 0.967.0790E-06 5.0 0.0484 0.048.980E-07 6.5 0.8469 0.84688 4.76876E-07 7.0 0.44494 0.4449 8.64675E-07 8.5 0.5857598 0.5857589 8.9406967E-07 9 4.0 0.7448 0.7447.9099E-07 0 4.5 0.909587 0.90958.576787E-07 5.0.088770.088770.9099E-07 RK4 () t 5
0.0 0.000000 -.84858E-07.84858E-07 0.5.4009.40096.66044E-06.0.6548.65488 5.45087E-06 4.5.75950.75957 7.55574E-06 5.0 4.7480 4.7488 8.580688E-06 6.5 5.58786 5.58795 9.0599060E-06 7.0 6.406 6.46.00580E-05 8.5 7.07 7.08.00580E-05 9 4.0 7.60648 7.60658.00580E-05 0 4.5 8.48 8.57 9.5674E-06 5.0 8.59884 8.5989 8.580688E-06 Βήμα h Euler () t 0.0 0.00000 4.76876E-07 4.76876E-07.0.600000.459 0.47087 4.0.880000.656507 0.499 4 6.0.900.66569 0.579 5 8.0 4.788480 4.5004 0.68767 6 0.0 5.57798 5.54 0.654567 7.0 6.4 5.88509 0.56009 8 4.0 6.6809 6.478 0.4698 9 6.0 7.57 6.9 0.0604 0 8.0 7.56875 7.5089 0.78574 0.0 7.98086 7.700 0.058864 Euler () t 0.0 0.0000000 4.44089E-6 4.44089E-6.0 0.0000000 0.048 0.048 4.0 0.4800000 0.7447 0.647 4 6.0.48000.474948 0.69479 5 8.0.7560.78 0.5009 6 0.0.768.9896 6.068E-0 7.0 4.96805 4.767.579E-0 8 4.0 5.9988 5.09490 0.04980 9 6.0 6.6447 5.9966 0.7987 0 8.0 7.0777 6.848700 0.8474 0.0 7.95 7.6605 0.7805 Euler () t 0.0 0.0000000 -.84858E-07.84858E-07.0 6.000000 4.7488.756 4.0 9.000000 7.60658.984 4 6.0 0.5400 9.7996.44704 5 8.0.440 0.4868 0.88084 6 0.0.77097.984 0.57860 7.0.044.65776 0.865690 8 4.0.00.9769 0.557087 9 6.0.7599.050 0.70696 0 8.0.4960.7866 0.7594 0.0.6096.5660 8.557666E-0 RK4 () t 0.0 0.000000 4.76876E-07 4.76876E-07.0.4585.459 5.9666E-05 4.0.6564.656507 8.60756E-05 4 6.0.66574.66569 9.5674E-05 5 8.0 4.500 4.5004 9.46008E-05 6 0.0 5.555 5.54 8.60756E-05 6
7.0 5.885 5.88509 7.58708E-05 8 4.0 6.476 6.478 6.5669E-05 9 6.0 6.9056 6.9 5.4867E-05 0 8.0 7.50848 7.5089 4.577667E-05 0.0 7.76 7.700.76705E-05 RK4 () t 0.0 0.0000000 4.44089E-6 4.44089E-6.0 0.06400 0.048.57974E-04 4.0 0.74658 0.7447.087E-04 4 6.0.4750.474948.5454E-04 5 8.0.760.78.4890900E-04 6 0.0.40.9896.745E-04 7.0 4.787 4.767.9979E-04 8 4.0 5.095080 5.09490.70087E-04 9 6.0 5.9908 5.9966.409747E-04 0 8.0 6.84886 6.848700.6487E-04 0.0 7.66068 7.6605 9.44757E-05 RK4 () t 0.0 0.0000000 -.84858E-07.84858E-07.0 4.7850 4.7488.98885E-0 4.0 7.6054 7.60658.64905E-0 4 6.0 9.7609 9.7996.777786E-0 5 8.0 0.4874 0.4868.697705E-0 6 0.0.9085.984.9956E-0 7.0.656.65776.449556E-0 8 4.0.9758.9769.08484E-0 9 6.0.0460.050 6.95858E-04 0 8.0.789.7866 4.70644E-04 0.0.569.5660.8058E-04 Παρατηρούμε ότι σε όλες τις περιπτώσεις η μέθοδος RK4 δίνει καλύτερα αποτελέσματα από την μέθοδο Euler. Επίσης, όπως είναι αναμενόμενο, η ακρίβεια αυξάνει και στις δύο μεθόδους καθώς το βήμα μειώνεται. Όμως η μέθοδος Euler ακόμη και h=0.5 δεν δίνει ικανοποιητικά αποτελέσματα. ΚώδικαςFortran: programntal_value_problems_system mplct none real::h real,allocatable,dmenson(:)::z,z,z,x nteger::,method,n=! number of teratons allocate(x(n),z(n),z(n),z(n)) open(,fle='results_.txt') do method=,!=euler,=rk4 x()=0!startng pont z()=0!ntal value z()=0!ntal value z()=0!ntal value h=0. select case (method) case () calleuler(x,z,z,z,h,n) case () call rk4(x,z,z,z,h,n) end select prnt*, '--------------------',method,'----------------------' do =,n f (mod(,)==0) then! wrte(,*),',',x(),',', z(),',', y_an(x()),',',abs(y_an(x())-z()) 7
! wrte(,*),',',x(),',',z(),',',y_an(x()),',',abs(y_an(x())-z()) wrte(,*),',',x(),',',z(),',',y_an(x()),',',abs(y_an(x())-z()) wrte(*,*),',',x(),',', z(),',', y_an(x()),abs(y_an(x())-z())! wrte(*,*),',',x(),',',z(),',',y_an(x()),abs(y_an(x())-z())! wrte(*,*),',',x(),',',z(),',',y_an(x()),abs(y_an(x())-z())! wrte(*,*) end f enddo end do contans subroutneeuler(x,z,z,z,h,n) real::x(:),z(:),z(:),z(:),h nteger::,n do =,n- z(+)=z()+h*f(x(),z(),z(),z()) z(+)=z()+h*f(x(),z(),z(),z()) z(+)=z()+h*f(x(),z(),z(),z()) x(+)=x()+h enddo end subroutne euler subroutne rk4(x,z,z,z,h,n) real::x(:),z(:),z(:),z(:),h,k,k,k,k4,k,k,k,k4,k,k,k,k4 nteger::,n do =,n- k=f(x(),z(),z(),z()) k=f(x(),z(),z(),z()) k=f(x(),z(),z(),z()) k=f(x()+0.5*h,z()+0.5*h*k,z()+0.5*h*k,z()+0.5*h*k) k=f(x()+0.5*h,z()+0.5*h*k,z()+0.5*h*k,z()+0.5*h*k) k=f(x()+0.5*h,z()+0.5*h*k,z()+0.5*h*k,z()+0.5*h*k) k=f(x()+0.5*h,z()+0.5*h*k,z()+0.5*h*k,z()+0.5*h*k) k=f(x()+0.5*h,z()+0.5*h*k,z()+0.5*h*k,z()+0.5*h*k) k=f(x()+0.5*h,z()+0.5*h*k,z()+0.5*h*k,z()+0.5*h*k) enddo end subroutne rk4 k4=f(x()+h,z()+h*k,z()+h*k,z()+h*k) k4=f(x()+h,z()+h*k,z()+h*k,z()+h*k) k4=f(x()+h,z()+h*k,z()+h*k,z()+h*k) x(+)=x()+h z(+)=z()+(h/6)*(k+*k+*k+k4) z(+)=z()+(h/6)*(k+*k+*k+k4) z(+)=z()+(h/6)*(k+*k+*k+k4) real functon f(x,x,x,x4) result(z) real,ntent(n)::x,x,x,x4 z=-0.*x+0.0*x+0.8 end functon f real functon f(x,x,x,x4) result(z) real,ntent(n)::x,x,x,x4 z=0.5*x-0.*x end functon f real functon f(x,x,x,x4) result(z) real,ntent(n)::x,x,x,x4 8
z=0.05*x-0.5*x4+ end functon f real functon y_an(t) result(y)!analytc soluton real,ntent(n)::t y=.4857485749 - &.5844458549077/ & Exp(0.547755750566*t) - & 8.8448900095/ & Exp(0.045774449489*t) end functon y_an real functon y_an(t) result(y)!analytc soluton real,ntent(n)::t y=7.485748574 + & 7.077787579046/ & Exp(0.547755750566*t) - & 4.0644500476/ & Exp(0.045774449489*t) end functon y_an real functon y_an(t) result(y)!analytc soluton real,ntent(n)::t y=.748574857 - &.6584658467/ & Exp(0.4999999999999994*t) + &.858890840/ & Exp(0.5477557505656*t) - &.957007995/ & Exp(0.045774449488*t) end functon y_an end program ntal_value_problems_system Ευστάθεια μεθόδου Euler () () () () () () () () () () () () () () () () () () () () () () () () () () () hf t,,, 0.h 0.0h 0.8h hf t,,, 0.5h 0.h hf t,,, 0.05h 0.5h h Αφαιρώντας δύο διαδοχικά βήματα μεταξύ τους, απαλείφονται οι σταθεροί όροι: 0.h 0.0h όπου με συμβολίζουμε τη διαφορά δύο διαδοχικών βημάτων των () () () () () () 0.5h 0.h () () () 0.05h 0.5h ( j) Σε μορφή πινάκων το σύστημα γράφεται στη μορφή () () 0.h 0.0h 0 () () 0.5h 0.h 0 () () 0 0.05h 0.5h G Για να έχουμε ευστάθεια, πρέπει η φασματική ακτίνα του πίνακα G να είναι μικρότερη της μονάδας. Βρίσκουμε τις ιδιοτιμές του πίνακα G: ( j) 9
G 0 0.h 0.0h 0 0.5h 0.h 0 0 0 0.05h 0.5h 0.h 0.0h 0.5 0 0.5 0. 0.00 0 0.5h 0.h h h h h 0.5h 0.5h 0 0.5477h 0.h 0. 00h 0 0.045h Επιθυμούμε να δούμε για ποιες τιμές του h οι απόλυτες τιμές όλως των ιδιοτιμών είναι μικρότερες της μονάδας: h 8 h.9 h 44.5 Η μέθοδος Euler είναι ευσταθής για h 8 Οι ιδιοτιμές προκύπτουν και από το Mathematca με την εντολή: Reduce[Max[Abs[Egenvalues[G]]]<,h] Αποτελέσματα Euler και RK 4 ης τάξης για h 7 και h 8 h 7 Euler - () t 5 8.00000 9.49980 8.9097 0.59745 0 6.00000.4099 0.9650 0.4485 5 98.00000.8570.44 6.59674E-0 0.0000.48.40698.59966E-0 5 68.0000.476.444.4809E-0 0 0.0000.484.4766 7.686650E-04 5 8.0000.4855.488.6498566E-04 40 7.0000.4857.485.475E-05 45 08.0000.4857.4856 6.67570E-06 50 4.0000.4857.4857 9.5674E-07 55 78.0000.4857.4857 9.5674E-07 60 4.0000.4857.4857 9.5674E-07 65 448.0000.4857.4857 9.5674E-07 70 48.0000.4857.4857 9.5674E-07 75 58.0000.4857.4857 9.5674E-07 80 55.0000.4857.4857 9.5674E-07 Euler - () t 5 8.00000.85996 0.4090.450855 0 6.00000 6.558 5.74 0.6957 5 98.00000 7.0545 6.85495 0.70507 0.0000 7.56 7.087 4.65977E-0 5 68.0000 7.405 7.07 9.54858E-0 0 0.0000 7.447 7.406.0579E-0 5 8.0000 7.480 7.45 4.594897E-04 0
40 7.0000 7.485 7.475 9.774780E-05 45 08.0000 7.486 7.484.098085E-05 50 4.0000 7.486 7.485.84697E-06 55 78.0000 7.486 7.486 0.0000000E+00 60 4.0000 7.486 7.486 0.0000000E+00 65 448.0000 7.486 7.486 0.0000000E+00 70 48.0000 7.486 7.486 0.0000000E+00 75 58.0000 7.486 7.486 0.0000000E+00 80 55.0000 7.486 7.486 0.0000000E+00 Euler - () t 5 8.00000 9.077776.897.85945 0 6.00000 4.5655.54.00 5 98.00000.4757.6794 0.0965 0.0000.76549.70707 5.84996E-0 5 68.0000.70.780.49467E-0 0 0.0000.774.798.6065E-0 5 8.0000.757.74 6.570860E-04 40 7.0000.7445.747.804445E-04 45 08.0000.744.748.84697E-05 50 4.0000.740.748.049047E-05 55 78.0000.748.749.8609E-06 60 4.0000.749.749 0.0000000E+00 65 448.0000.749.749 0.0000000E+00 70 48.0000.749.749 0.0000000E+00 75 58.0000.749.749 0.0000000E+00 80 55.0000.749.749 0.0000000E+00 Τα αποτελέσματα παραμένουν ευσταθή δηλαδή το σφάλμα δεν μεγαλώνει για μεγάλες τιμές του χρόνου αλλά δεν είναι ακριβή στους μικρούς χρόνους εκεί δηλαδή που οι συγκεντρώσεις μεταβάλλονται σε σχέση με το χρόνο. RK4 - () t 5 8.00000 8.89786 8.9097 4.75054E-0 0 6.00000 0.960 0.9650.06947E-04 5 98.00000.9.44 5.4984E-05 0.0000.40697.40698.4055E-05 5 68.0000.44.444.84697E-06 0 0.0000.4766.4766 9.5674E-07 5 8.0000.488.488 9.5674E-07 40 7.0000.485.485 0.0000000E+00 45 08.0000.4856.4856 0.0000000E+00 50 4.0000.4857.4857 9.5674E-07 55 78.0000.4857.4857 9.5674E-07 60 4.0000.4857.4857 9.5674E-07 65 448.0000.4857.4857 9.5674E-07 70 48.0000.4857.4857 9.5674E-07 75 58.0000.4857.4857 9.5674E-07 80 55.0000.4857.4857 9.5674E-07 RK4 - () t 5 8.00000 0.40 0.4090.658E-0 0 6.00000 5.740 5.74.04E-04 5 98.00000 6.8548 6.85495.790E-04 0.0000 7.0869 7.087.84697E-05 5 68.0000 7.070 7.07 9.5674E-06 0 0.0000 7.406 7.406.907486E-06 5 8.0000 7.45 7.45 0.0000000E+00 40 7.0000 7.475 7.475.907486E-06 45 08.0000 7.484 7.484.907486E-06 50 4.0000 7.485 7.485.907486E-06 55 78.0000 7.486 7.486 0.0000000E+00 60 4.0000 7.486 7.486 0.0000000E+00
65 448.0000 7.486 7.486 0.0000000E+00 70 48.0000 7.486 7.486 0.0000000E+00 75 58.0000 7.486 7.486 0.0000000E+00 80 55.0000 7.486 7.486 0.0000000E+00 RK4 - () t 5 8.00000.805.897 6.67E-0 0 6.00000.5409.54.4597E-04 5 98.00000.679.6794.898E-05 0.0000.70706.70707 5.70459E-06 5 68.0000.780.780.907486E-06 0 0.0000.798.798 0.0000000E+00 5 8.0000.74.74 0.0000000E+00 40 7.0000.747.747 0.0000000E+00 45 08.0000.748.748 0.0000000E+00 50 4.0000.749.748 9.5674E-07 55 78.0000.749.749 0.0000000E+00 60 4.0000.749.749 0.0000000E+00 65 448.0000.749.749 0.0000000E+00 70 48.0000.749.749 0.0000000E+00 75 58.0000.749.749 0.0000000E+00 80 55.0000.749.749 0.0000000E+00 Τα αποτελέσματα παραμένουν ευσταθή και ακριβή. Για h 8 Euler - () t 5.00000 9.9580 9.0 0.6699 0 7.00000.79.08780 0.854944 5.0000.4.776.97505E-0 0 5.0000.468.494 7.404664E-0 5 9.0000.489.4707.559E-0 0.0000.4855.48.50674E-04 5 7.0000.4857.485.7998E-05 40.0000.4857.4857 5.70459E-06 45 5.0000.4857.4857 0.0000000E+00 50 9.0000.4857.4857 9.5674E-07 55 4.0000.4857.4857 9.5674E-07 60 47.0000.4857.4857 9.5674E-07 65 5.0000.4857.4857 9.5674E-07 70 55.0000.4857.4857 9.5674E-07 75 59.0000.4857.4857 9.5674E-07 80 6.0000.4857.4857 9.5674E-07 Euler - () t 5.00000.486.49598.6578 0 7.00000 6.7757 6.098 0.507760 5.0000 7.09784 6.9900 0.0789 0 5.0000 7.809 7.78.070E-0 5 9.0000 7.45 7.876.597595E-0 0.0000 7.48 7.49 6.9888E-04 5 7.0000 7.485 7.475.049047E-04 40.0000 7.486 7.484.7668E-05 45 5.0000 7.486 7.485.84697E-06 50 9.0000 7.486 7.486 0.0000000E+00 55 4.0000 7.486 7.486 0.0000000E+00 60 47.0000 7.486 7.486 0.0000000E+00 65 5.0000 7.486 7.486 0.0000000E+00 70 55.0000 7.486 7.486 0.0000000E+00 75 59.0000 7.486 7.486 0.0000000E+00 80 6.0000 7.486 7.486 0.0000000E+00
Euler - () t 5.00000 0.644009.0767.47 0 7.00000 6.7775.6009.6776 5.0000.09407.6956.60 0 5.0000 6.909.7.6786 5 9.0000.09884.779.6494 0.0000 6.966.740.6546 5 7.0000.09890.747.657 40.0000 6.967.748.659 45 5.0000.09890.749.658 50 9.0000 6.967.749.658 55 4.0000.09890.749.658 60 47.0000 6.967.749.658 65 5.0000.09890.749.658 70 55.0000 6.967.749.658 75 59.0000.09890.749.658 80 6.0000 6.967.749.658 Τα αποτελέσματα για τη συγκέντρωση () t είναι λάθος και ή συμπεριφορά των αποτελεσμάτων τελείως διαφορετική από την αναλυτική, δηλαδή τα αποτελέσματα είναι ασταθή. RK4 - () t 5.00000 9.94 9.0 6.699E-0 0 7.00000.08755.08780.4604797E-04 5.0000.770.776 5.50E-05 0 5.0000.494.494.97766E-05 5 9.0000.4707.4707.84697E-06 0.0000.48.48 9.5674E-07 5 7.0000.485.485 9.5674E-07 40.0000.4856.4857 9.5674E-07 45 5.0000.4857.4857 9.5674E-07 50 9.0000.4857.4857 9.5674E-07 55 4.0000.4857.4857 9.5674E-07 60 47.0000.4857.4857 9.5674E-07 65 5.0000.4857.4857 9.5674E-07 70 55.0000.4857.4857 9.5674E-07 75 59.0000.4857.4857 9.5674E-07 80 6.0000.4857.4857 9.5674E-07 RK4 - () t 5.00000.50969.49598.7085E-0 0 7.00000 6.09 6.098 5.054004E-04 5.0000 6.98986 6.9900.48779E-04 0 5.0000 7.779 7.78.4497E-05 5 9.0000 7.875 7.876 5.70459E-06 0.0000 7.49 7.49 0.0000000E+00 5 7.0000 7.475 7.475.907486E-06 40.0000 7.484 7.484 0.0000000E+00 45 5.0000 7.485 7.485.907486E-06 50 9.0000 7.486 7.486 0.0000000E+00 55 4.0000 7.486 7.486 0.0000000E+00 60 47.0000 7.486 7.486 0.0000000E+00 65 5.0000 7.486 7.486 0.0000000E+00 70 55.0000 7.486 7.486 0.0000000E+00 75 59.0000 7.486 7.486 0.0000000E+00 80 6.0000 7.486 7.486 0.0000000E+00
RK4 - () t 5.00000.87998.0767 0.476898 0 7.00000.59970.6009 6.90460E-04 5.0000.69560.6956.098085E-05 0 5.0000.7.7.84697E-06 5 9.0000.778.779 9.5674E-07 0.0000.740.740 9.5674E-07 5 7.0000.747.747 0.0000000E+00 40.0000.748.748 0.0000000E+00 45 5.0000.749.749 0.0000000E+00 50 9.0000.749.749 0.0000000E+00 55 4.0000.749.749 0.0000000E+00 60 47.0000.749.749 0.0000000E+00 65 5.0000.749.749 0.0000000E+00 70 55.0000.749.749 0.0000000E+00 75 59.0000.749.749 0.0000000E+00 80 6.0000.749.749 0.0000000E+00 Τα αποτελέσματα παραμένουν ευσταθή και ακριβή για () t και () t όχι όμως για () t σε μικρούς χρόνους. 4
Άσκηση Να βρεθούν οι περιοχές ευστάθειας των αριθμητικών μεθόδων Euler και Runge-Kutta ης, ης και 4 ης τάξης όταν αυτές εφαρμόζονται στην αριθμητική επίλυση της ΣΔΕ dy dx y, όπου R I ( ). Euler y y hf x, y y y h y y h y Θέτουμε y y όπου y η αναλυτική λύση και το σφάλμα και αντικαθιστούμε: y hy h dy y y Αλλά από τον ορισμό της παραγώγου έχουμε ότι η οποία σχέση σε dx h συνδυασμό με την dy y y y δίνει ότι y y hy dx h y h y h h Άρα Για να έχουμε ευστάθεια θα πρέπει το σφάλμα απολύτως να μειώνεται καθώς αυξάνει το δηλαδή θα πρέπει να ισχύει: h RK k f( x, y) y k f( x h, y hk ) y hk y h y h h h y y kk y y y h y y y hy y h h h y h y h h RK k f( x, y) y h h h k f( x, y k) y y h k f( x h, y h( k k)) y h( k k) y hy yy h h h h y y k4k k y y y 4y yy h y yy 6 6 h h h h h h y h y h h 6 6 6 5
RK4 k f( x, y ) y h h h k f( x, y k) y y h h h h h k f x y k y k y y y 4 (, ) h 4 h k4 f( x h, y hk) y hky hy y y 4 h y y kk kk4 6 h h h h h 4 h y y y y y y y y y hy y y 6 4 4 4 4 h h h y h y 6 4 4 4 4 4 h h h h h h h h 6 4 6 4 Θέτοντας a b όπου a hr και b h με τη βοήθεια του Mathematca προκύπτουν οι περιοχές ευστάθειας κάθε αλγορίθμου (περιοχή μεταξύ καμπύλης και άξονα h R ): b ontourplot Abs[ ], Abs, Abs, 6 4 Abs,{ a, 4,},{ b,0,4}, AspectRato Automatc, AxesTrue 6 4 4 h R RK RK4 RK Euler 0-4 - - - 0 h I 6