f=inline('y+t','t','y');h=1; h_vect=[];err_vect=[]; eul_vect=[];rk2_vect=[];rk4_vect=[]; t=0:.05:3; y=-t-1+2*exp(t); for k=1:8 [teuler,yeuler]=eul(f,[0,3],1,h); [trk2,yrk2]=rk2(f,[0,3],1,h); [trk4,yrk4]=rk4(f,[0,3],1,h); plot(t,y,teuler,yeuler,'o',trk2,yrk2,'+',trk4,yrk4,'*') legend('Exact','Euler', 'RK2','RK4') shg zeuler=-1-teuler+2*exp(teuler); eulerror=max(abs(zeuler-yeuler)); zrk2=-1-trk2+2*exp(trk2); rk2error=max(abs(zrk2-yrk2)); zrk4=-1-trk4+2*exp(trk4); rk4error=max(abs(zrk4-yrk4)); h_vect=[h_vect,h] eul_vect=[eul_vect,eulerror] rk2_vect=[rk2_vect,rk2error] rk4_vect=[rk4_vect,rk4error] pause h=h/2; end loglog(h_vect,eul_vect,h_vect,rk2_vect,h_vect,rk4_vect) legend('eul','rk2','rk4',4) xlabel('Step size'), ylabel('Maximum error') title('Maximum error vs. step size'), axis tight