ΥΠΟΛΟΓΙΣΤΙΚΕΣ ΜΕΘΟ ΟΙ, 6-7, 5 Ο ΕΞΑΜΗΝΟ ΕΡΓΑΣΙΑ #: ΣΥΝΗΘΕΙΣ ΙΑΦΟΡΙΚΕΣ ΕΞΙΣΩΣΕΙΣ ΚΑΙ ΣΥΣΤΗΜΑΤΑ ΗΜΕΡΟΜΗΝΙΑ ΠΑΡΑ ΟΣΗΣ:..6 Επιµέλεια απαντήσεων: Ι. Λυχναρόπουλος. Έστω το πρόβληµα αρχικών τιµών: ( dx( d x ( sin a + a + a x = e, d d x ( a4 dx d = =, 5 = a Εφαρµόζοντας τη µέθοδο αριθµητικής ολοκλήρωσης Euler και Runge-Kua ης, ης και 4 ης τάξης, υπολογίστε τις τιµές των x( και dx d για. Να γίνει συστηµατική σύγκριση των πέντε µεθόδων. Η επιλογή των σταθερών a,a,a,a,a 4 5 είναι ελεύθερη. >. Θεωρήστε το πρόβληµα αρχικών τιµών dy = iµ y,, d ( y =, όπου µ πραγµατική σταθερά διάφορη του µηδενός και i =. Για το πρόβληµα αυτό εξετάστε την ευστάθεια των µεθόδων Euler, Runge-Kua ης, ης και 4 ης τάξης και επίσης των προτεινόµενων αλγορίθµων: ( ( + (, (, ( ( h ( ( y = y + f y + f y και n+ n n n n+ n ( ( n+ ( n ( n+ ( n+ = +, y y hf y, n =,,,... Σχολιάστε και συγκρίνετε τα αποτελέσµατα µεταξύ τους. n =,,,...
ΑΠΑΝΤΗΣΕΙΣ Άσκηση d x( dx( 4 a + a + a x( = e sin, x( = a, x'( = a5 d d Επιλέγουµε: a =, a =, a =, a4 =.4, a5 =.6 d x( dx( Σ Ε: + x( = e sin, d d Αρχικές συνθήκες: x( =.4, x'( =.6 Αναλυτική λύση: y ( =.5e cos +.e cos cos.e sin cos ++.e cos sin +.e sin sin Γραφική παράσταση στο διάστηµα [,]: -.5 -.4 -.45 -.5 -.55 -.6 -.65..4.6.8 Αναλυτικά Αποτελέσµατα x(. -.4. -.467. -.55559. -.5886.4 -.6466.5 -.69564.6 -.748.7 -.7849.8 -.66977.9 -.55648. -.594
Για την αριθµητική επίλυση της εξίσωσης ορίζουµε τις δύο νέες µεταβλητές: ( = x( dx( ( = d Αντικαθιστούµε στην αρχική Σ Ε ης τάξης και προκύπτει σύστηµα Σ Ε ης τάξης: d( = ( d d( = e sin + ( ( d µε αρχικές τιµές: ( =.4 ( =.6 Εφαρµόζουµε τους αλγορίθµους Runge Kua ης (Euler, ης, ης και 4 ης τάξης. Παρουσιάζονται οι αντίστοιχοι κώδικες σε Forran: program iniial_value_problems_sysem! y''-y'+exp(sin(, y(=-.4, y'[]=-.6 implici none real::h real,allocaable,dimension(:::,,x ineger::i,mehod,n=! number of ieraions allocae(x(n,(n,(n do mehod=,4!=euler, =rk, =rk, 4=rk4 x(=!saring poin (=-.4!iniial value (=-.6!iniial value h=. selec case (mehod case ( call euler(x,,,h,n case ( call rk(x,,,h,n case ( call rk(x,,,h,n case (4 call rk4(x,,,h,n end selec prin*, '--------------------',mehod,'----------------------' do i=,n enddo end do conains prin*,i-,x(i,(i,f(x(i,abs(f(x(i-(i
subrouine euler(x,,,h,n real::x(:,(:,(:,h ineger::i,n do i=,n- (i+=(i+h*f(x(i,(i,(i (i+=(i+h*g(x(i,(i,(i x(i+=x(i+h enddo end subrouine euler subrouine rk(x,,,h,n real::x(:,(:,(:,h,k,k,k,k ineger::i,n do i=,n- k=f(x(i,(i,(i k=g(x(i,(i,(i k=f(x(i+h,(i+h*k,(i+h*k k=g(x(i+h,(i+h*k,(i+h*k x(i+=x(i+h (i+=(i+(h/*(k+k (i+=(i+(h/*(k+k enddo end subrouine rk subrouine rk(x,,,h,n real::x(:,(:,(:,h,k,k,k,k,k,k ineger::i,n do i=,n- k=f(x(i,(i,(i k=g(x(i,(i,(i k=f(x(i+.5*h,(i+.5*h*k,(i+.5*h*k k=g(x(i+.5*h,(i+.5*h*k,(i+.5*h*k k=f(x(i+h,(i+h*k,(i+h*k k=g(x(i+h,(i+h*k,(i+h*k x(i+=x(i+h (i+=(i+(h/6*(k+4*k+k (i+=(i+(h/6*(k+4*k+k enddo end subrouine rk subrouine rk4(x,,,h,n real::x(:,(:,(:,h,k,k,k,k4,k,k,k,k4 ineger::i,n do i=,n- k=f(x(i,(i,(i k=g(x(i,(i,(i k=f(x(i+.5*h,(i+.5*h*k,(i+.5*h*k k=g(x(i+.5*h,(i+.5*h*k,(i+.5*h*k k=f(x(i+.5*h,(i+.5*h*k,(i+.5*h*k 4
enddo end subrouine rk4 k=g(x(i+.5*h,(i+.5*h*k,(i+.5*h*k k4=f(x(i+h,(i+h*k,(i+h*k k4=g(x(i+h,(i+h*k,(i+h*k x(i+=x(i+h (i+=(i+(h/6*(k+*k+*k+k4 (i+=(i+(h/6*(k+*k+*k+k4 real funcion f(x,x,x resul( real,inen(in::x,x,x =x end funcion f real funcion g(x,x,x resul( real,inen(in::x,x,x =Exp(*x*Sin(x-*x+*x end funcion g real funcion f( resul(y!analyic soluion real,inen(in:: -.5*Exp(**Cos( +.*Exp(**Cos(*Cos(* - &.*Exp(**Cos(**Sin( +.*Exp(**Cos(*Sin(*+ &.*Exp(**Sin(*Sin(* end funcion f end program iniial_value_problems_sysem Τα αποτελέσµατα εµφανίζονται στον επόµενο πίνακα, όπου ο κάθε υπό-πίνακας αντιστοιχεί σε µία µέθοδο ολοκλήρωσης και περιέχει στήλες: (την τιµή του x, την αριθµητική τιµή του y και το απόλυτο σφάλµα σε σχέση µε την αναλυτική λύση: 5
h=. h=.5 h=. Euler RK- RK- i i..4...46.9765..44.88..489.548589.4.444.69994.5.485.888.6.4657.9496.7.44788.4497.8.4495.996.9.455.7 k..466.89 i..4..5.4.46879..46.797.5.498.7455..5595.6876.5.557848.4484..594.79997.5.698.845.4.6597.66869.45.68448.598 k.5.798.557 i..4...46.797..54.5595..598.7859.4.656594.998.5.78857.599.6.77774.5656.7.87866.89767.8.8699.4786.9.785665.96 k..696.485 k y y y i..4...46.65 7 y..479 4.88677 7..4874 7.56997 7.4.445.4 6.5.447.448 6.6.46667.6646 6.7.44894.8 6.8.44949.65 6.9.4554.775 6 k..4676.44 6 i..4..5.45.8..4686.7988.5.49664.747..55755.957.5.557687.8897..588985.855.5.6975.544.4.6477.66587.45.6777.84994 k.5.69467.5 i..4...46.679..568.766..596.4596.4.64974.4658.5.697496.96.6.7797.59486.7.768.8655.8.6899..9.575.689 k..7669.675 y y i..4...46.96 7 y..478.4759 7..4874.8675 7.4.445 5.486 7.5.4469 6.9477 7.6.46666 8.6459 7.7.4489.465 6.8.44948.97 6.9.45549.4456 6 k..4675.6656 6 i..4..5.4485.697..4677.87594.5.4966.6959..55668.878.5.557566.58999..5888.54.5.6886.988.4.647.99.45.674.586 k.5.69499.6556 i..4...46875.467..5596.467..58944.846.4.64875.4645.5.69595.899.6.748.688.7.7587.5484.8.67748.77764.9.56769.88 k..685.47565 y y RK-4. i..4..46.5465 y y..478 7.799..487.899.4.444.4767.5.4469.865.6.46665.587.7.4489.665.8.44947.896.9.45548.55 k..467.98 i..4..5.4469.4 8 y..467.446 8.5.4957.87 8..55559 5.6 8.5.55747 7.44 8..5886 8.849 8.5.68564.748 7.4.6466.74 7.45.6799.47956 7 k.5.69564.68749 7 i..4...467.768 7 y..5556 8.564 7..5886.8949 6.4.6466.94 6.5.69567.7886 6.6.75.485 6.7.785 4.5558 6.8.6697 4.5557 6.9.55644 4.76567 6 k..599 4.555 6
Από το συγκεντρωτικό πίνακα είναι προφανές ότι η ακρίβεια των αποτελεσµάτων όλων των µεθόδων βελτιώνεται καθώς το χρονικό βήµα h ελαττώνεται. Είναι επίσης προφανές ότι για το ίδιο χρονικό βήµα h η ακρίβεια των αποτελεσµάτων βελτιώνεται καθώς αυξάνει η τάξη της εφαρµοζόµενης µεθόδου Runge Kua. Στη συνέχεια, για κάθε µέθοδο και για κάθε χρονικό βήµα h παρουσιάζονται γραφήµατα του απολύτου σφάλµατος ως προς τη χρονική στιγµή. Α Οµαδοποίηση των γραφηµάτων ως προς το βήµα h: h=....8 == Mehod == Euler.6 RK.4 RK. RK 4 4 6 8 h=.5.75.5.5..75.5.5 == Mehod == Euler RK RK RK 4 4 6 8 h=..4. == Mehod == Euler. RK RK. RK 4 4 6 8 7
Β Οµαδοποίηση των γραφηµάτων ως προς τη µέθοδο ολοκλήρωσης: Euler.6.5.4... === h ===..5. RK. 4 6 8.8.6 === h ===..4.5.. RK.6 4 6 8.5.4... === h ===..5. RK4 4 6 8 4-6 -6 === h ===. -6.5-6. 4 6 8 8
Άσκηση dy = λy, λ = iµ, µ R d Euler + hλ < * ( ( ( µ µ µ µ + ih < + h < + h < h < Αδύνατον, εποµένως ο αλγόριθµος είναι ασταθής. RK ( hλ + hλ + < ( h ( hµ ( hµ + ihµ < + ( hµ < 4 ( h µ µ + ( hµ < ( hµ + + ( hµ < 4 Αδύνατον, εποµένως ο αλγόριθµος είναι ασταθής. ( hµ 4 4 < RK ( hλ ( hλ + hλ + + < 6 ( hµ ( hµ ( hµ ( hµ ( ( ( ( hµ ( hµ ( hµ ( hµ ( ( + ihµ i < + hµ < 6 6 4 4 6 4 4 ( ( ( 6 hµ hµ hµ hµ hµ + hµ < ( hµ + + ( hµ + < 6 4 6 < < hµ < hµ < hµ < h µ < h< µ Εποµένως ο αλγόριθµος είναι ευσταθής µόνο εάν επιλεγεί h <. µ 9
RK4 ( hλ ( hλ ( hλ 4 + hλ + + + < 6 4 ( hµ ( hµ ( hµ 4 + ihµ i + < 6 4 ( hµ ( hµ ( hµ ( hµ ( hµ ( hµ ( ( 4 4 + + hµ < + + hµ < 4 6 4 6 ( ( ( ( ( ( ( ( 4 8 4 6 4 6 hµ hµ hµ hµ hµ hµ + + ( hµ + + ( hµ + < 4 576 4 6 ( ( ( 8 6 6 hµ 8 hµ < hµ hµ 8 < hµ 8< hµ < 8 hµ < 8 h< 8 µ 8 Εποµένως ο αλγόριθµος είναι ευσταθής µόνο εάν επιλεγεί h <. Επίσης, µ σηµειώνεται ότι η R-K 4 ης τάξης είναι περισσότερο ευσταθής από την R-K ης τάξης. h yi+ = yi + f( i, yi + f( i+, yi+, i =,,,... Προτεινόµενη µέθοδος #: [ ] Ορίζουµε yi = y( i + εi και αντικαθιστούµε στον αλγόριθµο: y ( ( h i+ + εi+ = yi + εi + f( i, y ( i + εi + f( i+, y ( i+ +ε i+ [ ] Από Σειρά Taylor: f f( i, y( i + εi = f( i, y( i + εi y( i h f f y ( i+ + εi+ = y ( i + εi + f( i, y ( i + εi + f( i+, y ( i+ + εi+ y( i y( i+ h h f h f y ( i+ + εi+ = y ( i + εi + [ f( i, y ( i + f( i+, y ( i+ ] + εi + εi+ h f εi+ = εi + εi y( i y( i+ h f h f h f + εi+ εi+ = εi + y( i y( i+ y( i+ y( i
εi+ Εποµένως, γενικά θα πρέπει: ε και για το συγκεκριµένο πρόβληµα i h f + i = < h f y y y( y( i+ h + i µ h h hµ hµ < + i µ < i µ + h < + i µ Εποµένως έχουµε ότι ε = ε και η µέθοδος θεωρείται οριακά ευσταθής ή ασταθής. i+ i Προτεινόµενη µέθοδος #: y = y + hf(, y, i =,,,... i+ i i+ i+ Ορίζουµε yi = y( i + εi και αντικαθιστούµε στον αλγόριθµο: y ( + ε = y ( + ε + hf(, y ( + ε i+ i+ i i i+ i+ i+ Από σειρά Taylor: f f( i, y( i + εi = f( i, y( i + εi y( i f y ( i+ + εi+ = y ( i + εi + h f( i+, y ( i+ + εi+ y( i+ f y ( i+ + εi+ = y ( i + εi + hf( i+, y ( i+ + hεi+ y( i+ f f f εi+ = εi + hεi+ εi+ h = εi εi+ = εi h y( i+ y( i+ y( i + Εποµένως, ε ε i+ i y( i+ f = h < < hλ > y hλ ( ( ihµ > + hµ > hµ > Εποµένως, ο αλγόριθµος είναι πάντα ευσταθής ανεξάρτητα από την επιλογή του h.