Weakly Nonlinear Wave Packets and the Nonlinear Schrödinger Equation

Dias, F., & Bridges, T. (2005). Weakly nonlinear wave packets and the nonlinear Schrödinger equation. In R. Grimshaw (Ed.), Nonlinear waves in fluids: Recent advances and modern applications (pp. 29–67). Springer. https://doi.org/10.1007/3-211-38025-6_2

The method of multiple scales

A derivation of the NLS (nonlinear Schrödinger) equation from the KdV (Korteweg-de Vries) equation based on the method of multiple scales.

  • The KdV equation

    L(u)+N(u,u)=ut+uxxx+6uux=0,(xR,t0,u(x,t)R).\mathcal{L}(u)+\mathcal{N}(u,u)=u_t+u_{xxx}+6uu_x=0,\quad(x\in\mathbb{R},t\ge0,u(x,t)\in\mathbb{R}).

    Introducting a small parameter ϵ\epsilon, and the slow scales X=ϵx,T=ϵt,τ=ϵ2tX=\epsilon x,T=\epsilon t,\tau=\epsilon^2 t

    u=ϵ(u0+ϵu1+ϵ2u2+)=ϵu0+ϵ2u1+ϵ3u2+,u=\epsilon(u_0+\epsilon u_1+\epsilon^2 u_2+\cdots)=\epsilon u_0+\epsilon^2 u_1+\epsilon^3 u_2+\cdots,

    L=t+xxx=(t+ϵT+ϵ2τ)+(x+ϵX)3=(t+3x3)+ϵ(T+33x2X)+ϵ2(τ+33xX2)+L(0)+ϵL(1)+ϵ2L(2)+,\begin{aligned} \mathcal{L}&=\partial_t+\partial_{xxx} \\ &=\left(\frac{\partial}{\partial t}+\epsilon\frac{\partial}{\partial T}+\epsilon^2\frac{\partial}{\partial \tau}\right)+\left(\frac{\partial}{\partial x}+\epsilon\frac{\partial}{\partial X}\right)^3 \\ &=\left(\frac{\partial}{\partial t}+\frac{\partial^3}{\partial x^3}\right)+\epsilon\left(\frac{\partial}{\partial T}+3\frac{\partial^3}{\partial x^2\partial X}\right)+\epsilon^2\left(\frac{\partial}{\partial\tau}+3\frac{\partial^3}{\partial x\partial X^2}\right)+\cdots \\ &\equiv\mathcal{L}^{(0)}+\epsilon\mathcal{L}^{(1)}+\epsilon^2\mathcal{L}^{(2)}+\cdots, \end{aligned}

    O(ϵ)L(0)u0=0,O(ϵ2)L(0)u1=L(1)u03x(u02),O(ϵ3)L(0)u2=L(2)u0L(1)u16x(u0u1)3X(u02).\begin{array}{ll} \mathcal{O}(\epsilon) & \mathcal{L}^{(0)}u_0=0, \\ \mathcal{O}(\epsilon^2) & \mathcal{L}^{(0)}u_1=-\mathcal{L}^{(1)}u_0-3\partial_x(u_0^2), \\ \mathcal{O}(\epsilon^3) & \mathcal{L}^{(0)}u_2=-\mathcal{L}^{(2)}u_0-\mathcal{L}^{(1)}u_1-6\partial_x(u_0u_1)-3\partial_X(u_0^2). \end{array}

  • At O(ϵ)\mathcal{O}(\epsilon): L(0)u0=0\mathcal{L}^{(0)}u_0=0
    the eigen mode

    u0(x,t)=ψ0(X,T)exp[i(kxωt)]+c.c.u_0(x,t)=\psi_0(X,T)\exp[i(kx-\omega t)]+\text{c.c.}

    with the dispersion relation (decided by the linear operator L(0)\mathcal{L}^{(0)})

    ω=k3.\omega=-k^3.

    the phase velocity c=ω/kc=\omega/k
    the group velocity cg=dω/dk=3k2c_g=\mathrm{d}\omega/\mathrm{d}k=-3k^2

  • At O(ϵ2)\mathcal{O}(\epsilon^2): L(0)u1=L(1)u03x(u02)\mathcal{L}^{(0)}u_1=-\mathcal{L}^{(1)}u_0-3\partial_x(u_0^2)
    the solvability condition ( remove the eigen mode term in RHS of the equation )

    L(1)u0=0(T+cgX)u0=0\mathcal{L}^{(1)}u_0=0\Rightarrow(\partial_T+c_g\partial_X)u_0=0

    on the time scale TT, the wave packet is just transported at the group velocity and thus depends only on the variable ξ=XcgT\xi=X-c_gT.
    wave packet

    choose the function

    f(x,t)=ψ(X,T)cos(kxωt)=ψ(XcgT)cos(kxωt)=sin[ϵ(xcgt)]cos(kxωt)=sin[ϵ(x+3k2t)]cos(kx+k3t)\begin{aligned} f(x,t)&=\psi(X,T)\cos(kx-\omega t) \\ &=\psi(X-c_g T)\cos(kx-\omega t) \\ &=\sin[\epsilon(x-c_g t)]\cos(kx-\omega t) \\ &=\sin[\epsilon(x+3k^2 t)]\cos(kx+k^3 t) \end{aligned}

    set ϵ=0.1,k=1\epsilon=0.1, k=1 so we have ω=k3=1\omega=-k^3=-1
    phase velocity c=ω/k=1c=\omega/k=-1
    group veloctiy cg=dω/dk=3k2=3c_g=\mathrm{d}\omega/\mathrm{d}k=-3k^2=-3

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    import numpy as np
    import matplotlib.pyplot as plt
    from matplotlib.animation import FuncAnimation

    # Parameter settings
    epsilon = 0.1
    k = 1.0

    x = np.linspace(-20, 100, 1000)
    t_frames = np.linspace(0, 100, 300)

    # Create the plot window
    fig, ax = plt.subplots(figsize=(10, 6))
    ax.set_xlim(-20, 100)
    ax.set_ylim(-1.1, 1.1)
    ax.set_xlabel('x')
    ax.set_ylabel('f(x,t)')
    ax.grid(True)

    # Initialize three curves: f(x,t) and the two envelope lines
    line_f, = ax.plot([], [], 'b-', lw=2, label='f(x,t)')
    line_env_pos, = ax.plot([], [], 'r--', lw=1.5, label='envelope')
    line_env_neg, = ax.plot([], [], 'r--', lw=1.5)

    # Create legend once and fix its position
    # bbox_to_anchor=(1, 1) places the legend at the upper-right corner of the axes,
    # with a small offset to avoid overlapping with the title.
    ax.legend(loc='upper right', bbox_to_anchor=(1.0, 1.0), frameon=True)

    # Initialization function (clear data)
    def init():
    line_f.set_data([], [])
    line_env_pos.set_data([], [])
    line_env_neg.set_data([], [])
    return line_f, line_env_pos, line_env_neg

    # Update function for each frame
    def update(frame):
    t = t_frames[frame]
    # Compute the waveform
    y_f = np.sin(epsilon * (x + 3 * k**2 * t)) * np.cos(k * x + k**3 * t)
    # Envelope (amplitude)
    env = np.sin(epsilon * (x + 3 * k**2 * t))
    y_env_pos = env
    y_env_neg = -env

    line_f.set_data(x, y_f)
    line_env_pos.set_data(x, y_env_pos)
    line_env_neg.set_data(x, y_env_neg)

    ax.set_title(f't = {t:.2f}')
    return line_f, line_env_pos, line_env_neg

    # Create the animation (interval 50ms, i.e., 20 frames per second)
    # If legend still jitters, try setting blit=False (though slower)
    ani = FuncAnimation(fig, update, frames=len(t_frames), init_func=init,
    blit=True, interval=50)

    # Save the animation (requires ffmpeg)
    ani.save('wave_animation.gif', writer='ffmpeg', fps=20)

    # plt.show()

    Then solve for u1u_1:

    L(0)u1=3x(ϕ02e2i(kxωt)+c.c.)(2.10)\mathcal{L}^{(0)}u_1=-3\partial_x(\phi_0^2e^{2i(kx-\omega t)}+\text{c.c.})\tag{2.10}

    the general solution is

    u1=A2(X,T)e2i(kxωt)+c.c.+ψ1ei(kxωt)+c.c.+A0(X,T)u_1=A_2(X,T)e^{2i(kx-\omega t)}+\text{c.c.}+\psi_1 e^{i(kx-\omega t)}+\text{c.c.}+A_0(X,T)

    the term ψ1ei(kxωt)\psi_1 e^{i(kx-\omega t)} can be incorporated into the term ψ0ei(kxωt)\psi_0 e^{i(kx-\omega t)} by defining ψ=ψ0+ϵψ1\psi=\psi_0+\epsilon\psi_1.

    {u0=ψei(kxωt)+c.c.,u1=A2(X,T)e2i(kxωt)+c.c.+A0(X,T),\left\{ \begin{aligned} u_0&=\psi e^{i(kx-\omega t)}+\text{c.c.}, \\ u_1&=A_2(X,T)e^{2i(kx-\omega t)}+\text{c.c.}+A_0(X,T), \end{aligned} \right.

    u1O(ϵ2)(2.10)A2=3(2ik)ψ22iω+(2ik)3=ψ2k2.u_1\rightarrow\mathcal{O}(\epsilon^2)\text{(2.10)}\Rightarrow A_2=\frac{-3(2ik)\psi^2}{-2i\omega+(2ik)^3}=\frac{\psi^2}{k^2}.

  • At O(ϵ3)\mathcal{O}(\epsilon^3): L(0)u2=L(2)u0L(1)u16x(u0u1)3X(u02)\mathcal{L}^{(0)}u_2=-\mathcal{L}^{(2)}u_0-\mathcal{L}^{(1)}u_1-6\partial_x(u_0u_1)-3\partial_X(u_0^2)
    the solvability condition

    τψ3ikXXψ6ikψ2ψ/k6ikA0ψ=0(2.13)-\partial_\tau\psi-3ik\partial_{XX}\psi-6ik|\psi|^2\psi/k-6ikA_0\psi=0\tag{2.13}

    Equating the coefficients of the oscillation free (time average) terms in (2.13)

    TA06Xψ2=0A0=2ψ2k2-\partial_T A_0-6\partial_X|\psi|^2=0\Rightarrow A_0=-\frac{2|\psi|^2}{k^2}

    noting that d2ω/dk2=6k\mathrm{d}^2\omega/\mathrm{d}k^2=-6k, (2.13) leads to the cubic NLS equation

    iψτ+12d2ωdk22ψξ2+6kψ2ψ=0.i\frac{\partial\psi}{\partial\tau}+\frac{1}{2}\frac{\mathrm{d}^2\omega}{\mathrm{d}k^2}\frac{\partial^2\psi}{\partial\xi^2}+\frac{6}{k}|\psi|^2\psi=0.

The water-wave problem

  • The governing equations:
    for incompressible, inviscid and irrotational fluid
    the conservation of mass Δϕ=0\Delta \phi=0 ( u=ϕ(x,y,z,t)\boldsymbol{u}=\nabla\phi(x,y,z,t) )
    the Bernoulli’s equation

    ϕt+12ϕ2+gz+pp0ρ=0.\frac{\partial\phi}{\partial t}+\frac{1}{2}|\nabla\phi|^2+gz+\frac{p-p_0}{\rho}=0.

  • The flow domain:
    the free surface F(x,y,z,t)η(x,y,t)z=0F(x,y,z,t)\equiv\eta(x,y,t)-z=0
    the solid bottom z=hz=-h
  • Boundary conditions:
    the kinematic condition on the free surface: DF/Dt=0DF/Dt=0\Rightarrow ηt+ϕxηx+ϕyηyϕz=0\eta_t+\phi_x\eta_x+\phi_y\eta_y-\phi_z=0 (the free surface is a streamline)
    the dynamic condition on the free surface:

    ϕt+12(ϕx2+ϕy2+ϕz2)+gησρC=0\phi_t+\frac{1}{2}\left(\phi_x^2+\phi_y^2+\phi_z^2\right)+g\eta-\frac{\sigma}{\rho}C=0

    where CC is the curvature of the free surface.
    the boundary condition at the bottom: ϕz(x,y,h,t)=0\phi_z(x,y,-h,t)=0

To summarize, solve for η(x,y,t)\eta(x,y,t) and ϕ(x,y,z,t)\phi(x,y,z,t)

Δϕϕxx+ϕyy+ϕzz=0, for (x,y,z)R×R×[h,η],ηt+ϕxηx+ϕyηyϕz=0, on z=η(x,y,t),ϕt+12(ϕx2+ϕy2+ϕz2)+gησρC=0, on z=η(x,y,t),ϕz=0, on z=h\begin{aligned} \Delta\phi\equiv\phi_{xx}+\phi_{yy}+\phi_{zz}&=0,\text{ for }(x,y,z)\in\mathbb{R}\times\mathbb{R}\times[-h,\eta], \\ \eta_t+\phi_x\eta_x+\phi_y\eta_y-\phi_z&=0,\text{ on }z=\eta(x,y,t), \\ \phi_t+\frac{1}{2}\left(\phi_x^2+\phi_y^2+\phi_z^2\right)+g\eta-\frac{\sigma}{\rho}C&=0,\text{ on }z=\eta(x,y,t), \\ \phi_z&=0,\text{ on }z=-h \end{aligned}

Linearization of the 2D problem

Looks for solutions which are periodic in xx with wave number kk and in tt with frequency ω\omega.
Introduce dimensionless variables:

(x,z)=(kx,kz),η=ηa,t=ωt,ϕ=kωaϕ,(x^*,z^*)=(kx,kz),\quad\eta^*=\frac{\eta}{a},\quad t^*=\omega t,\quad\phi^*=\frac{k}{\omega a}\phi,

where aa denotes the amplitude of the wave.

Dropping the stars, the surface wave problem linearized around the equilibrium state η=0,u=0\eta=0,\boldsymbol{u}=\boldsymbol{0} reads:

ϕxx+ϕzz=0, for (x,z)R×[kh,0],ηtϕz=0, on z=0,ϕt+(gkω2)η(σk3ρω2)ηxx=0, on z=0,ϕz=0, on z=kh\begin{aligned} \phi_{xx}+\phi_{zz}&=0,\text{ for }(x,z)\in\mathbb{R}\times[-kh,0], \\ \eta_t-\phi_z&=0,\text{ on }z=0, \\ \phi_t+\left(\frac{gk}{\omega^2}\right)\eta-\left(\frac{\sigma k^3}{\rho\omega^2}\right)\eta_{xx}&=0,\text{ on }z=0, \\ \phi_z&=0,\text{ on }z=-kh \end{aligned}

assume η(x,t)=cos(xt+Θ)\eta(x,t)=\cos(x-t+\Theta), we can obtain

ϕ(xt,z)=1tanh(kh)sin(xt+Θ)cosh(z+kh)cos(kh)\phi(x-t,z)=\frac{1}{\tanh(kh)}\sin(x-t+\Theta)\frac{\cosh(z+kh)}{\cos(kh)}

and the dynamic condition yields the dispersion relation for linearized 2D capillary-gravity periodic waves in water of finite depth

ω2gktanh(kh)(1+σk2ρg)=0.\omega^2-gk\tanh(kh)\left(1+\frac{\sigma k^2}{\rho g}\right)=0.

  • Interpretation of the group velocity:
    1. the travel velocity of the envelope;
    2. the speed of propagation of energy.

For 3D waves

  • The extension of the dispersion relation to three-dimensional waves is

    ω2gktanh(kh)(1+σk2ρg)=0\omega^2-g|\boldsymbol{k}|\tanh(|\boldsymbol{k}h|)\left(1+\frac{\sigma|\boldsymbol{k}|^2}{\rho g}\right)=0

    where k=k2+l2|\boldsymbol{k}|=\sqrt{k^2+l^2}.

  • The common ansatz used in the multiple scales:

    η=n=13ϵnηn(x0,x1,x2;y1,y2;t0,t1,t2)+O(ϵ4),ϕ=n=13ϵnϕn(x0,x1,x2;y1,y2;z;t0,t1,t2)+O(ϵ4)\begin{aligned} \eta &=\sum_{n=1}^3 \epsilon^n\eta_n(x_0,x_1,x_2;y_1,y_2;t_0,t_1,t_2)+\mathcal{O}(\epsilon^4), \\ \phi &=\sum_{n=1}^3 \epsilon^n\phi_n(x_0,x_1,x_2;y_1,y_2;z;t_0,t_1,t_2)+\mathcal{O}(\epsilon^4) \end{aligned}

    where

    x0=x,x1=ϵx,x2=ϵ2x,y1=ϵy,y2=ϵ2y,t0=t,t1=ϵt,t2=ϵ2t.\begin{array}{lll} x_0=x, & x_1=\epsilon x, & x_2=\epsilon^2 x, \\ & y_1=\epsilon y, & y_2=\epsilon^2 y, \\ t_0=t, & t_1=\epsilon t, & t_2=\epsilon^2 t. \end{array}

    The order one component of η\eta is the linearized monochromatic wave

    η1=Aei(kxωt)+c.c.\eta_1=Ae^{i(kx-\omega t)}+\text{c.c.}

    Applying the method of multiple scales, the solvability condition at O(ϵ3)\mathcal{O}(\epsilon^3) gives the evolution of the complex amplitude AA of the wave:

    2iAt2+p2Aξ2+q2Ay12+γAA2=iϵ(sAξy1y1+rAξξξ+uA2AξvA2Aξ)+ϵAϕˉξz1=0.\begin{aligned} 2i\frac{\partial A}{\partial t_2}+p\frac{\partial^2 A}{\partial \xi^2}+q\frac{\partial^2 A}{\partial y_1^2}+\gamma A|A|^2={}&-i\epsilon(sA_{\xi y_1y_1}+rA_{\xi\xi\xi}+uA^2A^*_\xi-v|A|^2A_\xi) \\ &+\epsilon A\left.\bar{\phi}_\xi\right|_{z_1=0}. \end{aligned}

The NLS equation:

iut+αuxx+γu2u=0,uC.iu_t+\alpha u_{xx}+\gamma|u|^2u=0,\quad u\in\mathbb{C}.


Weakly Nonlinear Wave Packets and the Nonlinear Schrödinger Equation
http://jingliangwei.github.io/blog-hexo/2026/07/07/Weakly-Nonlinear-Wave-Packets-and-the-Nonlinear-Schrodinger-Equation/
Author
Arwell
Posted on
July 7, 2026
Licensed under