I'm new to numerical methods for solving PDEs, so the following might contain mistakes. I need to solve an instance of the KdV equation

$$ u_t = -uu_x - u_{xxx}, \quad u(0) = u_0 \tag 1$$

using symplectic splitting methods. The simplest of them appears to be the Lie-Trotter method, whereby I notice the equation is of the form

$$ u_t = A(u) + B(u) \tag 2$$

with $A$ and $B$ being differential operators, one of them linear (say, $B$), and the other one non-linear ($A$).

Now, applying Lie-Trotter, my scheme should be something like

$$ u(t_{k+1}) = \exp(B \Delta t (k+1))\exp(A \Delta t (k+1)) u_0 \tag 3$$

However, I have the following questions:

  1. Is the scheme proposed in $(3)$ correct?
  2. How can I express the operators $A$ and $B$ as matrices, so as to use them in $(3)$?
  3. What would the scheme in $(3)$ look like for the KdV in $(1)$?
  4. In case anything I posted is wrong, how would one solve the KdV in $(1)$ using Lie-Trotter or other symplectic splitting methods?

Thanks in advance


1 Answer 1


I think there is a bit of confusion about operator splitting. I'll detail the procedure for solving the problem below.

The idea behind operator splitting is fairly simple. If you start with a Cauchy problem of the form

$$\frac{du}{dt} = (A+B)u, \quad u(0) = u_{0}$$

where $A, B$ are some bounded linear operators, then the exact solution is given by

$$u = \exp((A+B)t)u_{0}$$

If $A, B$ commute, then this can be rewritten as

$$u = \exp(At)\exp(Bt)u_{0}$$

However, if $A, B$ don't commute, then using the Campbell-Baker-Hausdorff formula you have for small $t$

$$u \approx \exp(At)\exp(Bt)u_{0}$$

In the case of the KdV equation, you want to solve

$$\frac{du}{dt} = (N + L)u, \quad u(0) = u_{0}$$

where $N$ is your nonlinear operator $N \equiv -u \partial_{x}$ and $L$ your linear operator $L \equiv \partial_{x}^{3}$. Once you have discretised your spatial operators $N$ and $L$ (using finite differencing, a spectral method or some other approach) the sequential or Lie-Trotter procedure is then as follows

For each time slice $t \in (t^{k}, t^{k+1}]$

  • Solve the nonlinear problem $$u' = Nu, \quad u_{\text{init}} = u(t^{k}) := u^{k}$$ and step size $\Delta t \ll 1$. Note that $u^{k}$ is the solution $u$ at the previous timestep. Usually, you would solve this using an explicit time stepper so you are solving a linear algebraic problem. For example, if you were to use forward Euler in time, backward Euler in space, this would become \begin{align} \partial_{t} u &= - u \partial_{x} u \\ \implies \frac{u^{k+1}_{n+1}-u^{k}_{n+1}}{\Delta t} &= - u^{k}_{n+1} \left( \frac{u^{k}_{n+1}-u^{k}_{n}}{\Delta x} \right) \\ \implies u^{k+1}_{n+1} &= u^{k}_{n+1} - \tilde{\gamma} (u^{k}_{n+1})^{2} + \tilde{\gamma} u^{k}_{n+1} u^{k}_{n} \end{align} where $\tilde{\gamma} = \Delta t/\Delta x$. Denoting the solution to the problem above by $\tilde{u}$, we write this as $$\tilde{u} = \exp(N \Delta t)u^{k}$$

  • Next, solve the linear problem $$u' = Lu, \quad u_{\text{init}} = \tilde{u}$$ with step size $\Delta t$. Note that $\tilde{u}$ now plays the role of initial condition. Usually, you would solve this using an implicit time stepper to make your scheme more robust. For example, if you were to use backward Euler in time, backward Euler in space, this would become \begin{align} \partial_{t} u &= - \partial_{x}^{3} u \\ \implies \frac{u^{k+1}_{n+1}-u^{k}_{n+1}}{\Delta t} &= \frac{u^{k+1}_{n+1} - 3u^{k+1}_{n} + 3u^{k+1}_{n-1} - u^{k+1}_{n-2}}{(\Delta x)^{3}} \\ \implies (1 - \hat{\gamma}) u^{k+1}_{n+1} + 3 \hat{\gamma} u^{k+1}_{n} - 3 \hat{\gamma} u^{k+1}_{n-1} + \hat{\gamma}u^{k+1}_{n-2} &= u^{k}_{n+1} \end{align} where $\hat{\gamma} = \Delta t/(\Delta x)^{3}$. Denoting the solution to the problem above by $\hat{u}$, we write this as $$\hat{u} = \exp(L \Delta t) \tilde{u}$$

  • We now take the result from the linear solve to be the solution at $t^{k+1}$ and so the final solution is given by $$u(t^{k+1}) = \hat{u} = \exp(L \Delta t)\exp(N \Delta t)u(t^{k})$$

Note that this scheme is only $\mathcal{O}(h)$ accurate if your operators don't commute (as yours don't), irrespective of the numerical scheme. You can get $\mathcal{O}(h^{2})$ accuracy if you use the Strang splitting procedure, which is almost the same as the Lie-Trotter procedure, though you use half time steps for the nonlinear solve. This means you need to solve the nonlinear problem twice, once before the linear solve and once after the linear solve. This procedure yields the solution $$u(t^{k+1}) = \exp(N \Delta t/2)\exp(L \Delta t)\exp(N \Delta t/2)u(t^{k})$$


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .