What are Solitons?
Does energy transfer without interference in Solitons?
I read first about in connection with Breather surface of constant negative Gauss curvature $K$.
- Are there physical laws and experiments to demonstrate their propagation?
What are Solitons?
Does energy transfer without interference in Solitons?
I read first about in connection with Breather surface of constant negative Gauss curvature $K$.
I'm TAing a nonlinear waves course this quarter, so I'll bite on this question.
Throughout this discussion, let's take the Korteweg de Vries (KdV) equation as our model system, that is
$$\eta_t+\eta\eta_x +\eta_{xxx} = 0$$
where $\eta$ is the (non-dimensionalized) free surface displacement. This equation can be derived in a variety of ways, in particular it can be found from the water wave equations in shallow water. Heuristically, $\eta$ is governed by a tendency for the system to steepen (due to the nonlinear term $\eta \eta_x$), and disperse (due to the term $\eta_{xxx}$).
A soliton is a solitary wave that propagates at constant speed with out change of form and is a balance between nonlinearity and dispersion. The functional form can be found by looking for solutions of the form
$$\eta = \eta_o \zeta(X)$$
where $X= x-\alpha^2 t$ for some constants $\eta_o, \alpha$. For compact solutions, one can solve the resulting ODE to find
$$\eta = 3 \alpha^2 sech^2 \left( \frac{\alpha}{2}( x -\alpha^2 t)\right).$$
Note, the amplitude and the speed of propagation are related in this case (this is not true, for instance, for the NLSE). An example of this solution is shown in figure 1 .
We can see the form of the wave remains constant as the wave propagates.
Now, this is all kind of interesting, but where things get surprising is when we look at the interaction of two solitons, eg, figure 2 .
In this case, we see that the two waves interact, and that after their interaction the only difference is a phase shift (related to the amplitudes of the waves). This is very surprising, as this nonlinear system is behaving analogously to a linear system (where superposition holds).
Note, the energy is the integral of the amplitude squared, and it's density clearly travels with the waves. It, along with an infinite number of other quantities, are conserved quantities of the system.
Finally, you can generate these things pretty easily. We had a tabletop demo, which I now wish I took a video of. I've seen them when drinking out a nalgene bottle. There are countless videos online of the phenomenon, so google can help you there.
Notes: Solitons were first observed by John Scott Russell (1844), when he witnessed a barge being quickly stopped in a canal in England. He then saw the generation of a soliton, which he followed on horseback for a few miles down the canal.
Zabusky and Kruskal (1965) numerically solved the KdV equation and observed the interaction properties of solitons.
Gardener et al. (1967) showed the KdV equation is integrable through the inverse scattering transform, which is a very strong statement about the solutions to the KdV equation given particular initial data.
Trefethen (Spectral Methods) provides a very short matlab code to solve the kdv equation (google p27.m). For completeness, I'll post it here:
% p27.m - Solve KdV eq. u_t + uu_x + u_xxx = 0 on [-pi,pi] by
% FFT with integrating factor v = exp(-ik^3t)*u-hat.
% Set up grid and two-soliton initial data:
N = 256; dt = .4/N^2; x = (2*pi/N)*(-N/2:N/2-1)';
A = 25; B = 16; clf, drawnow, set(gcf,'renderer','zbuffer')
u = 3*A^2*sech(.5*(A*(x+2))).^2 + 3*B^2*sech(.5*(B*(x+1))).^2;
v = fft(u); k = [0:N/2-1 0 -N/2+1:-1]'; ik3 = 1i*k.^3;
% Solve PDE and plot results:
tmax = 0.006; nplt = floor((tmax/25)/dt); nmax = round(tmax/dt);
udata = u; tdata = 0; h = waitbar(0,'please wait...');
for n = 1:nmax
t = n*dt; g = -.5i*dt*k;
E = exp(dt*ik3/2); E2 = E.^2;
a = g.*fft(real( ifft( v ) ).^2);
b = g.*fft(real( ifft(E.*(v+a/2)) ).^2); % 4th-order
c = g.*fft(real( ifft(E.*v + b/2) ).^2); % Runge-Kutta
d = g.*fft(real( ifft(E2.*v+E.*c) ).^2);
v = E2.*v + (E2.*a + 2*E.*(b+c) + d)/6;
if mod(n,nplt) == 0
u = real(ifft(v)); waitbar(n/nmax)
udata = [udata u]; tdata = [tdata t];
end
end
waterfall(x,tdata,udata'), colormap(1e-6*[1 1 1]); view(-20,25)
xlabel x, ylabel t, axis([-pi pi 0 tmax 0 2000]), grid off
set(gca,'ztick',[0 2000]), close(h), pbaspect([1 1 .13])