function Example1 % clc % clear close all global lambda % try different lambda = -1, 1, -10000,... lambda = -1; y0=1; tmax=1; % try different ode solvers - ode45, ode23, ode15s odeSolve=ode45(@f_dydt,[0,tmax],y0); %[uc, i] %%%%%%%%% analytic solution %%%%%%%%% dt=1000; t=[0:tmax/dt:tmax]; y=y0*exp(lambda*t); %%%%%%%%%%%%%%%%%% figure plot(odeSolve.x, odeSolve.y,'o',t,y) grid on title('Example 1') legend('numerical solution', 'analytical solution') % see how many steps are needed for different lambda and different solvers (stiff/nonstiff) fprintf('Number of integration steps: %g\n',length(odeSolve.y)); y_anal=y0*exp(lambda*odeSolve.x); fprintf('Error: %g\n',norm(odeSolve.y-y_anal)); end function dydt = f_dydt(t,y) global lambda dydt = lambda*y; end