function AM(n)
% Solves the ivp y'= -y - 1/(1+x)^2 + 1/(1+x), y(0)=1 
% by the three-step method A-M method
% Y_{n+1} - Y_n  =  (h/24) (9 Y_{n+1}' + 19 Y_{n}' -5  Y_{n-1}' +  Y_{n-2}')
%
fprintf('\n')
%
for iit=1:10
%
nn=2^(iit-1)*n;
uu(iit)=1/nn;
%
h=1./nn;
%
h24=h/24.;
%
y0=1.;
y1=1./(1.0+h);
y2=1./(1.0+2.d0*h);
%
for i=4:nn+1
t=(i-1)*h;
t1=(i-2)*h;
t2=(i-3)*h;
t3=(i-4)*h;
ex=(1/(1+t));
m= - 1/(1+t)^2 + 1/(1+t);
m1= -y2- 1/(1+t1)^2 + 1/(1+t1);
m2= -y1- 1/(1+t2)^2 + 1/(1+t2);
m3= -y0 - 1/(1+t3)^2 + 1/(1+t3);
y3=(y2+h24*(9*m+19*m1-5*m2+m3))/(1+9*h24);
er(i)=abs(ex-y3);
y0=y1;
y1=y2;
y2=y3;
end
u1(iit)=max(er);
fprintf('h =%12.6f        maxerr = %15.6e\n',h,u1(iit))
end
fprintf('\n')
for iit=1:9
      p=log(u1(iit)/u1(iit+1))/log(2.);
      fprintf('h =%12.6f        rate %15.6e\n',uu(iit),p)
end
loglog(uu,u1,'b+')
xlabel('h');ylabel('Error');
