  It is often the case that, while the numerical solution of the non-linear
dispersive equation $\mathrm{i}\partial_t u(t)=\mathcal{H}(u(t),t)u(t)$
represents a formidable challenge, it is fairly easy and cheap to solve closely
related linear equations of the form $\mathrm{i}\partial_t
u(t)=\mathcal{H}_1(t)u(t)+\widetilde{\mathcal H}_2(t)u(t)$, where
$\mathcal{H}_1(t)+\mathcal{H}_2(v,t)=\mathcal{H}(v,t)$. In that case we
advocate an iterative linearisation procedure that involves fixed-point
iteration of the latter equation to solve the former. A typical case is when
the original problem is a nonlinear Schr\"odinger or Gross--Pitaevskii
equation, while the `easy' equation is linear Schr\"odinger with time-dependent
potential.
  We analyse in detail the iterative scheme and its practical implementation,
prove that each iteration increases the order, derive upper bounds on the speed
of convergence and discuss in the case of nonlinear Schr\"odinger equation with
cubic potential the preservation of structural features of the underlying
equation: the $\mathrm{L}_2$ norm, momentum and Hamiltonian energy. A key
ingredient in our approach is the use of the Magnus expansion in conjunction
with Hermite quadratures, which allows effective solutions of the linearised
but non-autonomous equations in an iterative fashion. The resulting
Magnus--Hermite methods can be combined with a wide range of numerical
approximations to the matrix exponential. The paper concludes with a number of
numerical experiments, demonstrating the power of the proposed approach.
