ΑΡΙΘΜΗΤΙΚΗ ΑΝΑΛΥΣΗ ΙΙ ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ. ΜΗΤΣΟΤΑΚΗΣ ΑΘΗΝΑ 27
ΠΑΡΑ ΕΙΓΜΑ : ΜΕΘΟ ΟΣ NEWTON Πρόγραµµα Matlab για την προσέγγιση της ρίζας της εξίσωσης f(x)= µε την µέθοδο Newton. Συναρτήσεις f(x), f (x): function fc=f(x) fc=x.^3; function dfc=df(x) dfc=3*x.^2; Συνάρτηση που υλοποιεί τη µέθοδο Newton: function [zero,iters,err]=mynewton(xold,maxit,tol) -----st example---------------------------------- evaluation of Newton's method input: xold = starting value maxit = maximum number of iterations tol = tolerance of the error abs(xnew-xold) output: zero = approximation of the zero iters = number of iterations for convergence err = abs(x(iters)-x(iters-)) -------------------------------------------------- xnew=xold; iters=; err=tol+; while (iters<=maxit & err>=tol) iters=iters+; xold=xnew; fxold=f(xold); dfxold=df(xold); xnew=xold-fxold/dfxold; err=abs(xnew-xold); end zero=xnew; Πρόγραµµα για τον υπολογισµό της ρίζας της συνάρτησης f(x)=x 3 test: st example xold=; maxit=; tol=.e-5; t = cputime; [zero,iters,err]=mynewton(xold,maxit,tol) e = cputime-t t = cputime; fzero('f',) e = cputime-t 2
ΠΑΡΑ ΕΙΓΜΑ 2: ΑΜΕΣΗ ΜΕΘΟ ΟΣ EULER Πρόγραµµα Matlab για την αριθµητική επίλυση του προβλήµατος αρχικών τιµών y =f(y,t), t στο [a,b], και y(a)=y, µε την άµεση µέθοδο του Euler. Συνάρτηση f(t,y) function fc=f(t,y) fc=-y; Συνάρτηση που υλοποιεί την άµεση µέθοδο του Euler function [t,sol]=myexpeuler(tmin,tmax,n,y) -----2nd example---------------------------------- Explicit Euler for the numerical solution of the initial value problem y'=f(y,t), tmin<=t<=tmax y(tmin)=y input: tmin tmax N = size of grid y = initial value output: sol = numerical solution t = the mesh h=(tmax-tmin)/(n-); t=linspace(tmin,tmax,n)'; sol=zeros(n,); sol()=y; for i=:n- sol(i+)=sol(i)+h*f(t(i),sol(i)); end Πρόγραµµα για την αριθµητική λύση του προβλήµατος αρχικών τιµών y' = y, t 5 y() = test: 2nd example a=; b=5; N=5; y=; [t,y]=myexpeuler(a,b,n,y); options = odeset('reltol',e-4,'abstol',e-4); [tm,ym]=ode23('f',[a, b],y,options); plot(t,y,tm,ym) err=abs(y-exp(-t)); err2=abs(ym-exp(-tm)); subplot(,2,); 3
plot(t,y,tm,ym) subplot(,2,2); plot(t,err,tm,err2) ylabel('error').9 myexpeuler ode23 x -3.8.6 solution.8.7.6.5.4 error.4.2.8.3.6.2.4..2 2 3 4 5 2 3 4 5 4
ΠΑΡΑ ΕΙΓΜΑ 3: ΜΕΘΟ ΟΣ ΤΟΥ ΤΡΑΠΕΖΙΟΥ Χρησιµοποιούµε τη µέθοδο του τραπεζίου για την αριθµητική επίλυση του προβλήµατος αρχικών τιµών που µελετήσαµε στο προηγούµενο παράδειγµα. Υπενθυµίζουµε ότι η µέθοδος του τραπεζίου είναι πεπλεγµένη και γι αυτό απαιτείται η επίλυση µιας µη γραµµικής εξίσωσης σε κάθε βήµα. Η τάξη ακρίβειας της µεθόδου του τραπεζίου είναι 2 ενώ της µεθόδου του Euler είναι. Συνάρτηση που υλοποιεί την άµεση µέθοδο του Τραπεζίου function [t,sol]=mytrapr(tmin,tmax,n,y) -----3rd example---------------------------------- Trapezoidal rule for the numerical solution of the initial value problem y'=f(y,t), tmin<=t<=tmax y(tmin)=y input: tmin tmax N = size of grid y = initial value output: sol = numerical solution t = the mesh h=(tmax-tmin)/(n-); t=linspace(tmin,tmax,n)'; sol=zeros(n,); sol()=y; for i=:n- g=@(x)(x-sol(i)-h/2*(f(t(i),sol(i))+f(t(i+),x))); sol(i+)=fzero(g,sol(i)); end Πρόγραµµα για την αριθµητική λύση του προβλήµατος αρχικών τιµών test: 3rd example clear all a=; b=5; N=5; y=; [t,y]=mytrapr(a,b,n,y); options = odeset('reltol',e-4,'abstol',e-4,'maxstep',.); [tm,ym]=ode23('f',[a, b],y,options); plot(t,y,tm,ym) err=abs(y-exp(-t)); err2=abs(ym-exp(-tm)); subplot(,2,); plot(t,y,tm,ym) 5
subplot(,2,2); plot(t,err,tm,err2) ylabel('error').9.8.7.6 mytrapr ode23.6 x -5.4.2 solution.5.4 error.8.6.3.2.4..2 2 3 4 5 2 3 4 5 6
ΠΑΡΑ ΕΙΓΜΑ 4: ΜΕΘΟ ΟΣ RUNGE-KUTTA TOY RALSTON Υπενθυµίζουµε ότι η µέθοδος του Ralston περιγράφεται από το µητρώο /2 2 /9 3/4 /3 4/9 /2 3/4 και έχει τάξη ακρίβειας 3. Συνάρτηση που υλοποιεί την µέθοδο RK του Ralston function [t,sol]=myrk3(tmin,tmax,n,y) -----4th example---------------------------------- RK3 of Ralston for the numerical solution of the initial value problem y'=f(y,t), tmin<=t<=tmax y(tmin)=y input: tmin tmax N = size of grid y = initial value output: sol = numerical solution t = the mesh a=[/2 3/4]'; b=[2/9 /3 4/9]'; tau=[ /2 3/4]'; h=(tmax-tmin)/(n-); t=linspace(tmin,tmax,n)'; sol=zeros(n,); sol()=y; for i=:n- tni=t(i)*ones(3,)+tau*h; sol(i+)=sol(i); yn()=sol(i); yn(2)=sol(i)+h*a()*f(tni(),yn()); yn(3)=sol(i)+h*a(2)*f(tni(2),yn(2)); for I=:3 sol(i+)=sol(i+)+h*b(i)*f(tni(i),yn(i)); end end Πρόγραµµα για την αριθµητική λύση του προβλήµατος αρχικών τιµών test: 4th example clear all a=; b=5; N=5; y=; 7
[t,y]=myrk3(a,b,n,y); options = odeset('reltol',e-4,'abstol',e-4,'maxstep',.); [tm,ym]=ode45('f',[a, b],y,options); plot(t,y,tm,ym) err=abs(y-exp(-t)); err2=abs(ym-exp(-tm)); subplot(,2,); plot(t,y,tm,ym) subplot(,2,2); plot(t,err,tm,err2) ylabel('error').9.8 myrk3 ode45 x -8.5.7.6 solution.5.4.3.2 error.5. 2 3 4 5 2 3 4 5 8
ΑΣΚΗΣΕΙΣ. Υλοποιείστε το Παράδειγµα στον Η/Υ. Βελτιώστε τον κώδικα ώστε να εκτελεί µερικά βήµατα της µεθόδου της διχοτόµησης για την εύρεση της αρχικής προσέγγισης της 5 4 2 µεθόδου του Newton. Μελετήστε τη συνάρτηση f(x) = x 2x + x x + 7 και υπολογίστε πόσες ρίζες έχει η εξίσωση f (x) =. Υπολογίστε τις ρίζες χρησιµοποιώντας τον κώδικά σας. Συγκρίνεται τα αποτελέσµατα µε τα αποτελέσµατα της συνάρτησης fzero της Matlab. 2. Υλοποιείστε τα Παραδείγµατα 2 και 3 και κάντε όσες βελτιώσεις θεωρείτε απαραίτητες. Χρησιµοποιώντας και τις δυο µεθόδους των παραδειγµάτων 2 και 3, λύστε αριθµητικά y' = y cos t, t το πρόβληµα αρχικών τιµών:. Λύνοντας το συγκεκριµένο y() = sint π.α.τ. µε χωρισµό µεταβλητών βρίσκουµε ότι αυτό έχει λύση την y (x) = e. Συγκρίνεται τα σφάλµατα των παραπάνω µεθόδων κάνοντας γραφικές παραστάσεις του n n n σφάλµατος e = y y(t ). Στη συνέχεια επιλύστε το ίδιο πρόβληµα αρχικών τιµών χρησιµοποιώντας τις έτοιµες συναρτήσεις της Matlab ode23 και ode45. Επιλέξτε κατάλληλα ορίσµατα χρησιµοποιώντας την odeset. 3. Κατασκευάστε µια συνάρτηση Matlab που να υλοποιεί την κλασσική Runge-Kutta τετάρτης τάξεως. Υπολογίστε αριθµητικά την τάξη ακρίβειας της µεθόδου χρησιµοποιώντας το δοκιµαστικό πρόβληµα αρχικών τιµών του παραδείγµατος 2. Στη y' = x συνέχεια επιλύστε αριθµητικά το πρόβληµα αρχικών τιµών:, t 2π, x' = y y () =, x () =. Το συγκεκριµένο π.α.τ. έχει προφανή λύση την x (t) = cos t και y (t) = sin(t). Σχεδιάστε τη γραφική παράσταση του σφάλµατος e n n n n n { x x(t ), y y(t )} = max. Σχεδιάστε τη λύση στον τρισδιάστατο χώρο t, x, y. 2 2 x' = ax y x(x + y ) 4. Θεωρούµε το µη γραµµικό σύστηµα σ.δ.ε., όπου a IR. 2 2 y' = x + ay y(x + y ) Το σύστηµα αυτό αποτελεί την κανονική µορφή για την διακλάδωση Hopf. Το παραπάνω σύστηµα έχει, προφανώς, το (,) σηµείο ισορροπίας. Θεωρήστε τη γραµµικοποίησή του και ελέγξτε το είδος του σηµείου ισορροπίας για τις διάφορες τιµές της παραµέτρου a. Θεωρήστε τη µιγαδική αλλαγή µεταβλητών z = x + iy, z = x iy. Παρατηρείστε ότι 2 2 2 = zz = x y. Αποδείξτε ότι η νέα εξαρτηµένη z + µεταβλητή z ικανοποιεί την διαφορική εξίσωση µορφή πολική µορφή του µιγαδικού z, z = ρe iφ z' = (a + i)z z z. Θεωρήστε την 2. Αποδείξτε η διαφορική εξίσωση για 2 ρ' = ρ(a ρ ) το z σε πολική µορφή παίρνει τη µορφή. (Ακολουθώντας την φ' = παραπάνω διαδικασία πρακτικά µετασχηµατίζουµε το πρόβληµά µας σε πολικές συντεταγµένες). Παρατηρείστε ότι για κάθε φ το σηµείο ρ ( a) = a είναι σηµείο ισορροπίας για a >. Τι ακριβώς παριστάνει αυτό το σηµείο ισορροπίας στο επίπεδο 9
φάσης x, y ; Λύνοντας αριθµητικά το τελευταίο σύστηµα σ.δ.ε., µε αριθµητική µέθοδο της επιλογής σας, σχεδιάστε τρία διαγράµµατα φάσης στο επίπεδο x, y, για κατάλληλα a <, a = και a > αντίστοιχα. ιατυπώστε τα συµπεράσµατά σας. [Υπόδειξη: φ e i = cos φ + i sin φ, και άρα x = ρ cos φ, y = ρ sinφ.] a=.5, y()=.2, x()= a=.5, y()=, x()=.5.4 a=, y()=.5, x()=.3.5.2. y(t) y(t) -. -.2 -.3 -.5 -.4 -.3 -.2 -...2.3.4.5.6 x(t) -.4 -.3 -.2 -...2.3.4 x(t)..8 a=-., y()=., x()=.6.4.2 y(t) -.2 -.4 -.6 -.8 -.8 -.6 -.4 -.2.2.4.6.8. x(t)