This notebook uses Picard's method to solve dx/dt = f[x], x[0] = x0 on the interval -tMax ≤ t ≤ tMax.  
You don’t need to understand how the program works.  Just put the cursor somewhere in the next cell and hit “shift enter” to define the functions, then go to the bottom of the notebook to run the program.

(* The distance between two functions is the sup norm. *)
d[list1_, list2_] := Max[Abs[list1-list2]]
T[uOld_]:= Module[{uNew, fofu},
uNew = uOld;
fofu = f[uOld];
(Subscript[uNew, [[i0]]])= x0;
Do[(Subscript[uNew, [[i]]])= (Subscript[uNew, [[i-1]]])+ (((Subscript[fofu, [[i-1]]]) + (Subscript[fofu, [[i]]]))/2)*h, {i, i0+1, iMax}];
Do[(Subscript[uNew, [[i]]])= (Subscript[uNew, [[i+1]]])- (((Subscript[fofu, [[i+1]]]) + (Subscript[fofu, [[i]]]))/2)*h, {i, i0-1, 1, -1}];
uNew
]
(* The next function does Picard's mathod *)
makeItSo := Module[{}, 
(* Next come global variables that you don't want to change. *)
h = N[tMax/stepsRight];
i0 = stepsRight + 1;  (* i corresponding to t = 0 *)
iMax = 2*stepsRight + 1;
u=Table[x0,{i,1,iMax}];
plots={ListPlot[u,Joined->True,PlotStyle->Blue, PlotRange -> {xMin, xMax}]};
uOld=u;
u=T[uOld];
nIteration=1;
AppendTo[plots,ListPlot[u,Joined->True, PlotStyle -> Black]];
While[d[uOld,u]>tol&&nIteration<maxIterations,nIteration=nIteration+1;uOld=u;u=T[u];
AppendTo[plots,ListPlot[u,Joined->True, PlotStyle -> Black]]];
AppendTo[plots,ListPlot[u,Joined->True,PlotStyle->{Red,Thickness[0.006`]}]];
Print["This solves the IVP x' = ",f[x],", x[0] = ",x0," using Picard's Method."];Print["The function is approximated at ",iMax," grid points."];
Print["Picard's method stops if the sup norm of the difference between approximations is less than ",tol];
If[nIteration<maxIterations,Print["Picard's method converged in ",nIteration," iterations."],Print["Picard's method did not converge after ",maxIterations," iterations."]];
Print["The final approximation of x(",tMax,") is ",N[u[[iMax]]]];
Show[plots,Ticks->{{{1,-tMax},{i0,0},{iMax,tMax}},Automatic},AxesLabel->{"t","x"}]
]

The blue line is x = x0.  The black curves are the successive approximations.  The red curve is the final approximation to the solution of the ODE.

(* you can put any function here.  The last function f[x] is used. *)
f[x_] = Abs[x]; (* f is locally Lipschitz *)
f[x_] = 3(x^2)^(1/3); (* f is not locally Lipschitz *)
f[x_] = x^3; (* max interval of solution with x0 = 1 is (-∞, 1/2) *)
f[x_] =  x; (* as good as it gets *)

(* You can change these parameter *)
x0 =1;
tMax =2;  (* plots from -tMax to tMax *)
xMin = -1;
xMax = 3;
stepsRight = 100; (* the number of steps between t = 0 and t = tMax *)
tol = 0.0001;
maxIterations = 100;
makeItSo  (* This runs Picard's method *)