MAT 275 Laboratory 3 Numerical Solutions by Euler and Improved Euler Methods (scalar equations)

Similar documents
MAT 275 Laboratory 3 Numerical Solutions by Euler and Improved Euler Methods (scalar equations)

MAT 275 Laboratory 1 Introduction to MATLAB

LAB #8 Numerical Methods

Differentiability and Tangent Planes October 2013

Direction Fields; Euler s Method

dy = dx y dx Project 1 Consider the following differential equations: I. xy II. III.

ORDINARY DIFFERENTIAL EQUATIONS

Application 2.4 Implementing Euler's Method

over The idea is to construct an algorithm to solve the IVP ODE (8.1)

ODE IVP. An Ordinary Differential Equation (ODE) is an equation that contains a function having one independent variable:

Graphing Linear Equations and Inequalities: Graphing Linear Equations and Inequalities in One Variable *

4 Visualization and. Approximation

Mathematics for chemical engineers

MAT 343 Laboratory 4 Plotting and computer animation in MATLAB

AMS 27L LAB #2 Winter 2009

Workpackage 5 - Ordinary Differential Equations

Module1: Numerical Solution of Ordinary Differential Equations. Lecture 6. Higher order Runge Kutta Methods

Continuity and Tangent Lines for functions of two variables

Euler s Methods (a family of Runge- Ku9a methods)

Partial Derivatives (Online)

B. Examples Set up the integral(s) needed to find the area of the region bounded by

Introduction to Simulink

Introduction to Scientific Computing with Matlab

Module 2: Single Step Methods Lecture 4: The Euler Method. The Lecture Contains: The Euler Method. Euler's Method (Analytical Interpretations)

Differential Equations (92.236) Listing of Matlab Lab Exercises

Approximate Solutions to Differential Equations Slope Fields (graphical) and Euler s Method (numeric) by Dave Slomer

ChE 400: Applied Chemical Engineering Calculations Tutorial 6: Numerical Solution of ODE Using Excel and Matlab

First of all, we need to know what it means for a parameterize curve to be differentiable. FACT:

Math 126 Final Examination Autumn CHECK that your exam contains 9 problems on 10 pages.

Classes 7-8 (4 hours). Graphics in Matlab.

Matlab Tutorial 1: Working with variables, arrays, and plotting

Math 7 Elementary Linear Algebra PLOTS and ROTATIONS

Introduction to Matlab

Surfaces and Partial Derivatives

Planes Intersecting Cones: Static Hypertext Version

A Study on Numerical Exact Solution of Euler, Improved Euler and Runge - Kutta Method

ENGI Parametric & Polar Curves Page 2-01

over The idea is to construct an algorithm to solve the IVP ODE (9.1)

Mathematical Methods and Modeling Laboratory class. Numerical Integration of Ordinary Differential Equations

(Part - 1) P. Sam Johnson. April 14, Numerical Solution of. Ordinary Differential Equations. (Part - 1) Sam Johnson. NIT Karnataka.

1 Introduction to Matlab

Jason Yalim. Here we perform a few tasks to ensure a clean working environment for our script.

Directional Derivatives as Vectors

Math Homework 3

Chapter 1. Linear Equations and Straight Lines. 2 of 71. Copyright 2014, 2010, 2007 Pearson Education, Inc.

1 Programs for phase portrait plotting

SNAP Centre Workshop. Graphing Lines

MATH2071: LAB 2: Explicit ODE methods

UNIVERSITI TEKNIKAL MALAYSIA MELAKA FAKULTI KEJURUTERAAN ELEKTRONIK DAN KEJURUTERAAN KOMPUTER

A Constant Rate of Change Name Part 1

Kevin James. MTHSC 206 Section 14.5 The Chain Rule

Directional Derivatives. Directional Derivatives. Directional Derivatives. Directional Derivatives. Directional Derivatives. Directional Derivatives

MATH 2221A Mathematics Laboratory II

Math 1206 Calculus Sec. 5.6: Substitution and Area Between Curves (Part 2) Overview of Area Between Two Curves

Surfaces and Partial Derivatives

Week 5: Geometry and Applications

Getting Started with MATLAB

Application 7.6A The Runge-Kutta Method for 2-Dimensional Systems

Linear Transformations

8 Piecewise Polynomial Interpolation

Lecture 34: Curves defined by Parametric equations

14.6 Directional Derivatives and the Gradient Vector

The Interpolating Polynomial

What you will learn today

The listing says y(1) = How did the computer know this?

EEE161 Applied Electromagnetics Laboratory 1

Fall 2015 Math 337. Basic MatLab

MATLAB Laboratory 09/23/10 Lecture. Chapters 5 and 9: Plotting

OpenGL Graphics System. 2D Graphics Primitives. Drawing 2D Graphics Primitives. 2D Graphics Primitives. Mathematical 2D Primitives.

Complex Dynamic Systems

Matlab 20D, Week 2 Exercise 2.2 (a) : DField drew lines of solutions of points on the plot that I d click on. b)

3.6 Directional Derivatives and the Gradient Vector

Topic 5.1: Line Elements and Scalar Line Integrals. Textbook: Section 16.2

Partial Derivatives. Partial Derivatives. Partial Derivatives. Partial Derivatives. Partial Derivatives. Partial Derivatives

Ordinary differential equations solving methods

Here is a quick introduction to Matlab and a couple of its symbolic and control functions.

3.9 LINEAR APPROXIMATION AND THE DERIVATIVE

An introduction to plotting data

Programming Exercise 1: Linear Regression

INTRODUCTION TO LINE INTEGRALS

Basic MATLAB. Getting MATLAB (for MIT students) Creating matrices and vectors. Some operation of matrices/vectors.

MATLAB basic guide to create 2D and 3D Plots. Part I Introduction

27. Tangent Planes & Approximations

Parallel and perspective projections such as used in representing 3d images.

MATH 308, Summer Examples in MATLAB

Review 1. Richard Koch. April 23, 2005

UNIT 3B CREATING AND GRAPHING EQUATIONS Lesson 4: Solving Systems of Equations Instruction

GRAPHING WORKSHOP. A graph of an equation is an illustration of a set of points whose coordinates satisfy the equation.

Overview for Families

----- o Implicit Differentiation ID: A. dy r.---; d 2 Y 2. If- = '" 1-y- then - = dx 'dx 2. a c. -1 d. -2 e.

MA 114 Worksheet #17: Average value of a function

Math Lab 6: Powerful Fun with Power Series Representations of Functions Due noon Thu. Jan. 11 in class *note new due time, location for winter quarter

To sketch the graph we need to evaluate the parameter t within the given interval to create our x and y values.

Homework Set #2-3, Math 475B

Parametric and Polar Curves

Parametric and Polar Curves

Functions. Name. Use an XY Coordinate Pegboard to graph each line. Make a table of ordered pairs for each line. y = x + 5 x y.

Put the Graphs for Each Health Plan on the Same Graph

Lesson 19: Four Interesting Transformations of Functions

Introduction to Scientific Computing with Matlab

Transcription:

MATLAB sessions: Laboratory 3 1 MAT 275 Laboratory 3 Numerical Solutions by Euler and Improved Euler Methods (scalar equations) In this session we look at basic numerical methods to help us understand the fundamentals of numerical approximations. Our objective is as follows. 1. Implement Euler s method as well as an improved version to numerically solve an IVP. 2. Compare the accuracy and efficiency of the methods with methods readily available in MATLAB. 3. Apply the methods to specific problems and investigate potential pitfalls of the methods. Instructions: For your lab write-up follow the instructions of LAB 1. Euler s Method To derive Euler s method start from y(t 0 ) = y 0 and consider a Taylor expansion at t 1 = t 0 +h: y(t 1 ) = y(t 0 )+y (t 0 )(t 1 t 0 )+... = y 0 +hf(t 0,y(t 0 ))+... = y 0 +hf(t 0,y 0 )+... For small enough h we get an approximation y 1 for y(t 1 ) by suppressing the..., namely y 1 = y 0 +hf(t 0,y 0 ) (L3.1) The iteration (L3.1) is repeated to obtain y 2 y(t 2 ),... such that y n+1 = y n +hf(t n,y n ) t n+1 = t n +h Geometrically, the approximation made is equivalent to replacing the solution curve by the tangent line at (t 0,y 0 ). From the figure we have f(t 0,y 0 ) = f(t 0,y(t 0 )) = y (t 0 ) = tanθ = y 1 y 0, h from which (L3.1) follows. y(t 1 ) y 1 y 0... θ As an example consider the IVP y = 2y = f(t,y) with y(0) = 3. h t 0 t 1 Note that here f does not explicitly depend on t (the ODE is called autonomous), but does implicitly through y = y(t). To apply Euler s method we start with the initial condition and select a step size h. Since we are constructing arrays t and y without dimensionalizing them first it is best to clear these names in case they have been used already in the same MATLAB work session. >> clear t y % no comma between t and y! type help clear for more info >> y(1)=3; t(1)=0; h=0.1; Since f is simple enough we may use the inline syntax:

2 MATLAB sessions: Laboratory 3 >> f=inline( 2*y, t, y ) f = Inline function: f(t,y) = 2*y Note that the initializationy(1)=3should not be interpreted as the value of y at 1 is 3, but rather the first value in the array y is 3. In other words the 1 in y(1) is an index, not a time value! Unfortunately, MATLAB indices in arrays must be positive (a legacy from Fortran...). The successive approximations at increasing values of t are then obtained as follows: >> y(2)=y(1)+h*f(t(1),y(1)), t(2)=t(1)+h, y = 3.0000 3.6000 t = 0 0.1000 >> y(3)=y(2)+h*f(t(2),y(2)), t(3)=t(2)+h, y = 3.0000 3.6000 4.3200 t = 0 0.1000 0.2000 EXERCISE 1 Proceed as above and evaluate y(4), y(5) and y(6). If you did Exercise 1 correctly, the output of the final step should be: y = t = 3.0000 3.6000 4.3200 5.1840 6.2208 7.4650 0 0.1000 0.2000 0.3000 0.4000 0.5000 The arrays y and t are now 1 6 row arrays. The dimension increases as new values of y and t are computed. It is obviously better to implement these steps in a for loop. y(1)=3; t(1)=0; h = 0.1; for i = 1:5 y(i+1)= y(i)+h*f(t(i),y(i)); t(i+1) = t(i)+h; end Note that the output in each command has been suppressed (with a ;). The list of computed y values vs t values can be output at the end only by typing: >> [t(:),y(:)] % same as [t,y ] here ans = 0 3.0000 0.1000 3.6000 0.2000 4.3200 0.3000 5.1840 0.4000 6.2208 0.5000 7.4650 The next step is to write a function file that takes in input the function defining the ODE, the time span [t 0,t final ], the initial condition and the number of steps used. Note that, if we are given the number

MATLAB sessions: Laboratory 3 3 of steps used, N, then the stepsize h can be easily computed using h = t final t 0. N The following function implements these ideas. euler.m function [tout,yout] = euler(f,tspan,y0,n) % solves the IVP y =f(t,y), y(tspan(1))=y0 up to t=tspan(2) % using Euler s method with N time steps % use: euler(f,[tmin,tmax],y0,n) (or @f) h = (tspan(2)-tspan(1))/n; % evaluate h t = tspan(1); tout = t; % initialize the output vector of t values y = y0(:); yout = y. ; % initialize the output vector of y values for n=1:n end end y = y+h*f(t,y); t = t+h; % implement euler s method yout = [yout; y. ]; tout = [tout; t]; % add the new values of y and t to the % output values. Remark: You should notice that the code above is slightly different from the first one we wrote. Although the two codes are equivalent in the scalar case, only the second one will work also for systems of Differential Equations. We can implement the function with, say, N = 50 by typing the following commands: >> [t,y] = euler(f,[0,.5],3,50); % use @f if defined in separate function >> [t,y] ans = 0 3.0000 0.0100 3.0600 0.0200 3.1212 0.0300 3.1836 0.0400 3.2473 0.0500 3.3122 : : 0.4500 7.3136 0.4600 7.4598 0.4700 7.6090 0.4800 7.7612 0.4900 7.9164 0.5000 8.0748 An even longer output is obtained for larger values of N. To compare the two approximations with N = 5 and N = 50 we plot both approximations on the same figure, together with the exact solution y(t) = 3e 2t. Note that we can no longer call the output simply [t,y] because every time we call the function we will lose the output from the previous computations. Thus we will call [t5,y5] the output from Euler with N = 5 and [t50,y50] the output with N = 50. The exact solution of the IVP is y = 3e 2t. We will store the exact solution in the vector y. >> [t5,y5] = euler(f,[0,.5],3,5); % use @f if defined in separate function >> [t50,y50] = euler(f,[0,.5],3,50); >> t = linspace(0,.5,100); y = 3*exp(2*t); % evaluate the exact solution >> plot(t5,y5, ro-,t50,y50, bx-,t,y, k- ); axis tight; >> legend( Euler N = 5, Euler N = 50, Exact,2);

4 MATLAB sessions: Laboratory 3 8 Euler N = 5 Euler N = 50 Exact 7.5 7 6.5 6 5.5 5 4.5 4 3.5 3 0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 Figure L3a: Euler s method applied to y = 2y, y(0) = 3 with step h = 0.1 and h = 0.01, compared to the exact solution. IMPORTANT REMARK When using 5 steps of size h = 0.1 the approximation of the exact value y(0.5) = 3e 8.1548 is stored in y5(6). On the other hand when using 50 intervals of size h = 0.01, it is stored in y50(51). To avoid confusion we can reference these values by y5(end) and y50(end), respectively. The exact value of the function at t = 0.5 can be retrieved using y(end). We can find the error (exact - approximation) at t = 0.5 by entering >> e5 = y(end) - y5(end) % error with N = 5 e5 = 0.6899 >> e50 = y(end) - y50(end) % error with N = 50 e50 = 0.0801 and we can calculate the ratio of the errors to see how the approximation improves when the number of steps increases by a factor 10 >> ratio = e5/e50 ratio = 8.6148 EXERCISES 2. (a) Determine the Euler s approximation for N = 500 and N = 5000 and fill in the following table with the values of the approximations, errors and ratios of the errors at t = 0.5. Some of the values have already been entered based on the computations we did above. N approximation error ratio 5 7.4650 0.6899 50 0.0801 8.6148 500 5000

MATLAB sessions: Laboratory 3 5 (b) Examine the last column. How does the ratio of the errors relate to the number of steps used? Your answer to this question should confirm the fact that Euler s method is of order h, that is, every time the stepsize is decreased by a factor k, the error is also reduced (approximately) by the same factor. (c) Recall the geometrical interpretation of Euler s method based on the tangent line. Using this geometrical interpretation, can you explain why the Euler approximations underestimate the solution in this particular example? 3. Consider the IVP y = 2y, y(0) = 3 for 0 t 10. The exact solution of the ODE is y = 3e 2t. The goal of this exercise is to visualize how Euler s method is related to the slope field of the differential equation. In order to do this we will plot the direction field together with the approximations and the exact solution. (a) To plot the slope field we will use the MATLAB commands meshgrid and quiver. Enter the following commands: t = 0:.45:10; y = -30:6:42 ; % define grid of values in t and y direction [T,Y]=meshgrid(t,y); % creates 2d matrices of points in the ty-plane dt = ones(size(t)); % dt=1 for all points dy = -2*Y; % dy = -2*y; this is the ODE quiver(t,y,dt,dy) % draw arrows (t,y)->(t+dt, t+dy) axis tight % adjust look hold on After running these commands you should get the graph of the slope field. (b) Enter the function defining the ODE as inline. Use linspace to generate a vector of 200 t-values between 0 and 10. Evaluate the solution y at these t-values and plot it in black together with the direction field (use linestyle,2). (c) Use euler.m with N = 8 to determine the approximation to the solution. Plot the approximated points in red (use ro-, linestyle,2 as line-style in your plot), together with the exact solution and the direction field. You should get Figure L3b. 40 Euler s approximation with N=8 30 20 10 0 10 20 30 0 2 4 6 8 10 Figure L3b: Euler s method applied to y = 2y, y(0) = 3 N = 8, compared to the exact solution. Based on the slope field and the geometrical meaning of Euler s method explain why the approximations are so inaccurate for this particular value of the stepsize.

6 MATLAB sessions: Laboratory 3 (d) Open a new figure by typing figure. Plot again the direction field but in a different window: t = 0:.4:10; y = -1:0.4:3; Repeat part (b) and repeat part (c) but this time with N = 16. You should get Figure L3c. Comment on the result from a geometrical point of view. 3 Euler s approximation with N=16 2.5 2 1.5 1 0.5 0 0.5 1 0 2 4 6 8 10 Figure L3c: Euler s method applied to y = 2y, y(0) = 3 N = 16, compared to the exact solution. The commands meshgrid and quiver deserve an explanation: The function meshgrid: This command is especially important because it is used also for plotting 3D surfaces. Suppose we want to plot a 3D function z = x 2 y 2 over the domain 0 x 4 and 0 y 4. To do so, we first take several points on the domain, say 25 points. We can create two matrices X and Y, each of size 5 5, and write the xy- coordinates of each point in these matrices. We can then evaluate z at these xy values and plot the resulting surface. Creating the two matrices X and Y is much easier with the meshgrid command: x = 0:4; % create a vector x = [0, 1, 2, 3, 4] y = -4:2:4; % create a vector y = [-4, -2, 0, 2, 4] [X, Y] = meshgrid(x,y); % create a grid of 25 points and store % - their coordinates in X and Y Try entering plot(x,y, o, linewidth,2) to see a picture of the 25 points. Then, just for fun try entering Z = X.^2 - Y.^2; surf(x,y,z); to get a picture of the surface representing z = x 2 y 2. (The graph will be quite rough because of the limited number of points, but you should nonetheless recognize a saddle ). Thus, in our code for the direction field, the meshgrid command is used to generate the points in the xy plane at which we want to draw the arrows representing the slope or tangent line to the solution at the point. Type help meshgrid for more information.

MATLAB sessions: Laboratory 3 7 The function quiver: The command quiver(x,y,u,v) draws vectors (arrows) specified by U and V at the points specified by X and Y. In our examples the vectors drawn are (dt, dy) where dt =1 and dy = -2*y, thus these vectors are in the direction of the slope at the given point. The arrows are automatically scaled so as not to overlap. The matrices X and Y are built using the meshgrid command as explained above. Type help quiver for more explanation. Improved Euler s Method The improved Euler s method is obtained by using an average of f values, i.e., a slope average: y(t 1 ) y(t 0 )+ h 2 (f(t 0,y(t 0 ))+f(t 1,y(t 1 ))) (L3.2) Then substitute y(t 0 ) = y 0 and define y 1 y(t 1 ): y 1 = y 0 + h 2 (f(t 0,y 0 )+f(t 1,y 1 )). (L3.3) The equation (L3.3) defines the trapezoidal method. Unfortunately, this formula defines y 1 only implicitly, i.e., y 1 appears on both sides of the equality so that an equation must be solved to obtain y 1. To avoid this problem, and since we already have made an approximation to get (L3.3), we replace y 1 on the right-hand side by the approximation one would obtain by simply applying Euler s method from (t 0,y 0 ). The resulting quantity y 1 = y 0 + h ( ) f(t 0,y 0 )+f(t 1, y 0 +hf(t 0,y 0 ) ) (L3.4) 2 }{{} Euler y 1 from (L3.1) with t 1 = t 0 + h is the improved Euler approximation. This approximation can be thought of as a correction to the Euler approximation. The iteration (L3.4) is then repeated to obtain y 2 y(t 2 ),..., i.e., f 1 = f(t n,y n ) f 2 = f(t n +h,y n +hf 1 ) y n+1 = y n + h 2 (f 1 +f 2 ) t n+1 = t n +h Minor modifications are made to the function euler.m to implement the improved Euler method. EXERCISES 4. Modify the M-file euler.m to implement the algorithm for Improved Euler. Call the new file impeuler.m. Test your code for the ODE y = 2y, y(0) = 3. First enter the function f(t,y) = 2y as inline function and then enter the following: >> [t5,y5] = impeuler(f,[0,.5],3,5); % use @f if defined in separate function >> [t5,y5] ans = 0 3.0000 0.1000 3.6600 0.2000 4.4652 0.3000 5.4475 0.4000 6.6460 0.5000 8.1081 Compare your output with the one above. Note that the improved Euler approximation with 5 steps is already more accurate than the Euler approximation with 50 steps! (hence the improved )

8 MATLAB sessions: Laboratory 3 5. Consider the IVP y = 2y, y(0) = 3 0 t 0.5 (a) Determine the Improved Euler s approximation for N = 50, N = 500 and N = 5000. Fill in the following table with the values of the approximations, errors and ratio of the errors at t = 0.5. One of the values has already been entered based on the computations we did above. Recall that the exact solution to the ODE is y = 3e 2t N approximation error ratio 5 8.1081 50 500 5000 (b) Examine the last column. How does the ratio of the errorsrelate to the number of steps used? Your answer to this question should confirm the fact that Improved Euler s method is of order h 2, that is, every time the stepsize is decreased by a factor k, the error is reduced (approximately) by a factor of k 2. 6. Repeat Problem 3 for Improved Euler. Compare the results with the ones obtained with Euler s method. Plotting direction fields with dfield8 The Graphical User Interface dfield8 from J. Polking (available at http://math.rice.edu/ dfield) can also be used to plot the direction field and selected solution curves. After downloading the file, enter dfield8 in the command window. ODEs with up to two parameters can be entered in a setup window, see Figure L3d. Figure L3d: The dfield8 setup GUI A sample display window is shown in Figure L3e. Solutions curves can be drawn by clicking on the display window. Specific initial conditions can be entered by clicking on Options ->Keyboard Input.

MATLAB sessions: Laboratory 3 9 Figure L3e: The dfield8 direction field plot EXERCISE 7. Consider the differential equation dy dt = y = y(y +1)(y 2). (L3.5) (a) Determine all equilibrium solutions of the Differential Equation. Recall that for a Differential Equation of the form y = f(y), the equilibrium solutions are determined by solving f(y) = 0. (b) Use the GUI dfield8.m to draw various representative solutions. Do any of the solution curves ever cross each other? Do you know why? (c) What is the limit of y(t) as t if y(0) = 1.9? If y(0) = 2.1? (d) If y(0) = 1 2 can y eventually be 1? Why?