function [t,x] = ny3(field, t0, T, x0, h)
%AB3 Implements the Nystrom three-step ODE solver
%
% Parameters:
%  field  -- Right hand side function of ODE system: x'=f(t,x)
%  t0     -- Initial time
%  T      -- End time (T > t0)
%  x0     -- Initial value
%  h      -- Size of time step (h <= T-t0)
%
% Outputs:
%  t  -- [t0; t-0+h, t0+2*h; ...; t0+i*h; ...]
%  x  -- Column vector containing numerical solution at each time step

q = 2;
n = ceil((T-t0)/h);

t = t0+h*(0:n).';
x = ones(n+1,length(x0));
[t(1:(q+1)), x(1:(q+1),:)] = rk_classical(field, t0, t0+q*h, x0, h);

f2 = feval(field, t(q-1), x(q-1,:).');
f1 = feval(field, t(q), x(q,:).');
for i=(q+1):n
    f0 = feval(field, t(i), x(i,:).');
    x(i+1,:) = x(i-1,:).' + h*(7*f0-2*f1+f2)/3;
    f2 = f1;
    f1 = f0;
end