function ivp3
% solve IVP using MATLAB routines
% y' = f(t,y) with y(0) = y0 '
% where y and f are scalar functions
% clear all previous variables and plots
clear *
clf
% time interval
tmax=3;
% initial value
y0=2;
% calculate, and plot, exact solution
tt=linspace(0,tmax,200);
b=40; w=3;
for it=1:200
exact(it)=cos(w*tt(it))*(1+exp(-b*tt(it)));
end;
plot(tt,exact,'k')
pause
hold on
% calculate solution using a MATLAB routine
%[t,y] = ode45(@rhs,[0 tmax],y0); titleX=' ode45';
[t,y] = ode23s(@rhs,[0 tmax],y0); titleX=' ode23s';
% plot solution as function of t
plot(t,y,'r')
legend(' Exact',titleX,4);
% commands to label each axes
xlabel('t-axis','FontSize',14,'FontWeight','bold')
ylabel('y-axis','FontSize',14,'FontWeight','bold')
% have MATLAB use certain plot options (all are optional)
box on
% Set the fontsize to 14 for the plot
set(gca,'FontSize',14);
% Set legend font to 14/bold
set(findobj(gcf,'tag','legend'),'FontSize',14,'FontWeight','bold');
% commands used to automatically size window
% get(gcf)
% set(gcf,'Position', [475 511 484 278]);
hold off
% define f(t,y)
function dy=rhs(t,y)
% exact sol y=cos(w*t)*(1+exp(-b*t))
b=40; w=3;
f=-w*tan(w*t)-b/(1+exp(b*t));
dy=f*y;