0 valutazioniIl 0% ha trovato utile questo documento (0 voti)
41 visualizzazioni5 pagine
This document describes using Euler's method to numerically solve initial value problems for ordinary differential equations. It provides the theoretical background of Euler's method, deriving the basic Euler formula. An example differential equation is solved both analytically and using Euler's method in MATLAB code. Conditional statements are also demonstrated to determine when the numerical solution satisfies certain properties.
This document describes using Euler's method to numerically solve initial value problems for ordinary differential equations. It provides the theoretical background of Euler's method, deriving the basic Euler formula. An example differential equation is solved both analytically and using Euler's method in MATLAB code. Conditional statements are also demonstrated to determine when the numerical solution satisfies certain properties.
This document describes using Euler's method to numerically solve initial value problems for ordinary differential equations. It provides the theoretical background of Euler's method, deriving the basic Euler formula. An example differential equation is solved both analytically and using Euler's method in MATLAB code. Conditional statements are also demonstrated to determine when the numerical solution satisfies certain properties.
The purpose of this tutorial is to describe how an initial value problem can be solved using Euler's method, with implementation in Matlab. Many students find it easiest to learn to use Matlab through examples rather than flipping through a manual to learn the syntax, command names, etc., so the Matlab code for simple examples will be given. 10.1 Euler's Method Consider the initial value problem
(1)
Suppose we write the Taylor exansion of the solution:
(2)
Truncating and using (1), we obtain the formula for Euler's method for the numerical solution of differential equations:
(3) Of course, there is nothing special about , so, letting , , we obtain
(4)
By iterating, we find an approximation to the solution ( ) y t of (1). Here is known as the stepsize.
10.2 An Example As an example, suppose we want to solve the one-dimensional ordinary differential equation
(5)
where and are constants. This can be in fact be solved exactly because it is a separable equation, and we find that
Reza Katebi, EE908 54
(6) where . (This can be checked by plugging (6) into (5)). To view the exact solution in Matlab, we create a file called ``yexact.m'' with the following lines of text: function r = yexact(t,y0,K,s) r = y0*exp(K*t) + s*(1 - exp(K*t)); Note that this function takes four arguments, the time t, the initial condition y0, and the constants K and s from (5). Suppose that we want the solution for y0=100, K=1, and s=20. First, in Matlab we type: t = 0:0.01:5; which creates a vector t = (0,0.01,0.02,...,4.98,4.99,5), then plot(t,yexact(t,100,1,20)) which plots yexact vs. t at the times given in the vector t. 10.3 Numerically Solving the Example with Euler's Method Although we know the exact solution for equation (5), it is instructive to consider its numerical solution using Euler's method. This is implemented in Matlab with the following series of statements (note that we compare to the exact solution, so to run this program you must have the file ``yexact.m'' as described on the last page):
% Example: Euler's method for dy/dt = K*(y-s) K = 1; s = 20; y0 = 100; npoints = 50; dt = 0.1;
Reza Katebi, EE908 55 y = zeros(npoints,1); % this initializes the vector y to being all zeros t = zeros(npoints,1); y(1) = y0; % the initial condition t(1) = 0.0; for step=1:npoints-1 % loop over the timesteps y(step+1) = y(step) + dt*K*(y(step)-s); t(step+1) = t(step) + dt; end plot(t,y,'r'); %plots the numerical solution in red hold on; %keep the previously plotted lines plot(t,yexact(t,y0,K,s)); %plots the exact solution (default plot is in blue, solid line) 10.4 Conditional Statements It is often of interest to determine when the solution satisfies a certain property. For example, suppose that we want to know when the solution obtained with Euler's method to equation (5) with crosses. This can be accomplished with the following Matlab program: K = 1; s = 20; y0 = 100; y=1000; npoints = 50; dt = 0.1; y = zeros(npoints,1); t = zeros(npoints,1); y(1) = y0; t(1) = 0.0; for step=1:npoints-1 y(step+1) = y(step) + dt*K*(y(step)-s); t(step+1) = t(step) + dt;
Reza Katebi, EE908 56 if ((y(step) < 1000) & (y(step+1) > 1000)) % conditional statement fprintf('y crosses 1000 at t= %14.7f',t(step+1)); % output result to the screen end end
Exercise 10.5 The van der Pol equation is an ordinary differential equation that models self- sustaining oscillations in which energy is fed into small oscillations and removed from large oscillations. This equation arises in the study of circuits containing vacuum tubes and is given by
y + (1! y 2 ) y + y = u assume
x 1 = y x 2 = y
(1) Write the state space model for the system. (2) Use Euler method to simulate the system (3) Plot
Calculus Made Easy: Being a Very-Simplest Introduction to Those Beautiful Methods of Reckoning Which are Generally Called by the Terrifying Names of the Differential Calculus and the Integral Calculus
Mental Math: How to Develop a Mind for Numbers, Rapid Calculations and Creative Math Tricks (Including Special Speed Math for SAT, GMAT and GRE Students)
Classroom-Ready Number Talks for Third, Fourth and Fifth Grade Teachers: 1,000 Interactive Math Activities that Promote Conceptual Understanding and Computational Fluency