%Program 6.1 Euler's Method for Solving Initial Value Problems %Use with ydot.m to evaluate rhs of differential equation % Input: interval [a,b], initial value y0, step size h % Output: time steps t, solution y % Example usage: y=euler([0 1],1,0.1); function euler(int,y0,h) t(1)=int(1); y(1)=y0; yExact(1)=y0; n=round((int(2)-int(1))/h); for i=1:n t(i+1)=t(i)+h; y(i+1)=eulerstep(t(i),y(i),h); yExact(i+1)=-exp(-0.002*t(i+1))+1.01; Error(i+1)=abs(y(i+1)-yExact(i+1)); end t y yExact Error plot(t,y,'or') hold on plot(t,yExact) grid on title('Euler Method Approximation') xlabel('Time in Years') ylabel('Proportion of Nonconformists') figure plot(t,Error,'g') grid on title('Euler Method Approximation') xlabel('Time in Years') ylabel('Error in Euler Method Approximation') hold off function y=eulerstep(t,y,h) %one step of Euler's Method %Input: current time t, current value y, stepsize h %Output: approximate solution value at time t+h y=y+h*ydot(t,y); function z=ydot(t,y) z = 0.002-0.002*y;