Taylor Methods applied to the example p. 340:

Taylor-4 with step-size control

Clear[f1,f2,f3,f4,g,r,v,v1,v2,v3,x]

Here we set up the rate of change  and its derivatives:

(* f1 is the first derivative, the RHS of the Initial Value Problem: *)
f1=x+v[x]
f1=x^2+v[x]^2 (* eventually growing faster than tangent *)
(* now we compute the higher derivatives, implicitly: *)
f2=D[f1,x]
f3=D[f2,x]
f4=D[f3,x]

Now we change the formal derivatives into atomic symbols

f1=f1/.v[x]->v
f2=f2/.v[x]->v;
f2=f2/.v'[x]->v1
f3=f3/.v[x]->v;
f3=f3/.v'[x]->v1;
f3=f3/.v''[x]->v2
f4=f4/.v[x]->v;
f4=f4/.v'[x]->v1;
f4=f4/.v''[x]->v2;
f4=f4/.v'''[x]->v3

Here’s Taylor’s 4 method:

taylor4[vi_,xf_]:=
Module[
{xs,vs,ltol=0.0001,maxsteps=100,k=0,h,xnew},
xs={x=0.};
vs={v=vi};
While[x<xf&&k<maxsteps, (* height is less than xf, and we've not taken more than the allowed number of step: *)
(* we compute the higher derivatives needed for Taylor-4: *)
v1=N[f1];
v2=N[f2];
v3=N[f3];
v4=N[f4];
(* now we introduce some automatic step-size control, based on the error: *)
h=(4! ltol/Abs[v4])^0.25;
(* check that we don't step past the final value of x: *)
xnew=Min[x+h,xf];
(* adjust h if it happens to be too big, stepping beyond the final x value *)
h=xnew-x;
(* Here we evaluate our next estimate for the position of our projectile: note the use of Horner's method to evaluate the polynomial of Taylor-4: 
*)
v=v+h (v1+h/2. (v2+h/3. (v3+h/4. v4)));
x=xnew;
AppendTo[xs,x];
AppendTo[vs,v];
k=k+1];
{xs,vs}]

Now we’ll look at the example

vi=.1 ;
xf=3;
t4=taylor4[vi,xf] ;
(* This equatio ncan be solved by separation of variables: *)
p0=ListPlot[Transpose[t4],PlotMarkers->{Automatic,Tiny}];
p1=ListPlot[Transpose[t4],Joined->True];
Show[p0,p1]