%% SECTION 8.1 - EULER'S METHOD %% % Here I use the function *myeuler* (from pages 104-105 of _Differential % Equations with MATLAB_) implementing Euler's method to solve y' = 2y - 1. % It takes as input the function f, the inital time tinit, the initial % y-value yinit, the final time value b and the number of steps n. syms t y f = @(t,y) 2*y - 1 %% % First we use step size 0.1. [t1,y1] = myeuler(f,0,1,0.4,4); [t1,y1] %% % Next we use step size 0.05. [t2,y2] = myeuler(f,0,1,0.4,8); [t2,y2] %% % Finally we use step size 0.025 [t3,y3] = myeuler(f,0,1,0.4,16); [t3,y3] %% % The exact solution is y = dsolve('Dy = 2*y-1, y(0) = 1','t') %% % Here is a table of values. The first entry is t, followed by the % approximate solutions evaluated at that value of t, followed by the exact % solution evaluated at that value of t. We build the table T a row at a % time using a *for* loop. We initialize T as an empty matrix. format short T = [ ]; for k=0:4 A = [t1(k+1),y1(k+1),y2(2*k+1),y3(4*k+1),subs(y,'t',t1(k+1))]; T = [T;A]; end T %% % We plot the three approximate solutions and the exact solution. plot(t1,y1,'c'), hold on plot(t2,y2,'r') plot(t3,y3,'g') ezplot(y,[0,0.4]) title 'Solutions using Eulers method and the exact solution' legend1 = legend({'step size 0.1', 'step size 0.05', 'step size 0.025','exact'},'Position',[0.1465 0.7205 0.2171 0.1869]); hold off %% % We see from both the plot and the table that the error in the approximate % solutions decreases as the number of steps increases, but it is still % fairly large.