Abstract
The nonlinear Schrödinger (NLS) equation is a classical field equation that describes weakly nonlinear wave-packets in one-dimensional physical systems. It is in a class of nonlinear partial differential equations (PDEs) that pertain to several physical and biological systems. In this project we apply a pseudo-spectral solution-estimation method to a modified version of the NLS equation as a means of searching for solutions that are solitons, where a soliton is a self-reinforcing solitary wave that maintains its shape over time. We use the pseudo-spectral method to determine whether cardiac action potential states, which are perturbed solutions to the Fitzhugh–Nagumo nonlinear PDE, create soliton-like solutions. We then use symmetry group properties of the NLS equation to explore these solutions and find new ones.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
References
Brooks, J.: A singular perturbation approach to the Fitzhugh-Nagumo PDE for modeling cardiac action potentials. Masters thesis, East Tennessee State University. E-thesis—http://libraries.etsu.edu/record=b2340298 S1a (2011)
Drazin, P., Johnson, R.: Solitons: An Introduction, p. 15. Cambridge University Press, New York (1989)
Gagnon, L., Winternitz, P.: Lie symmetries of a generalised non-linear Schrodinger equation: I. The symmetry group and its subgroups. J. Phys. A Gen. 21, 1493–1511 (1988)
Gottlieb, D., Orzag, S.: Numerical Analysis of Spectral Methods: Theory and Applications. Society for Industrial and Applied Mathematics, Philadelphia (2011)
Grimshaw, R., Khusnutdinova, K.: Nonlinear waves, Lecture Notes for MAGIC:Nonlinear Waves (MAGIC021), Birmingham, England (2011)
Hasegawa, A., Tappert, F.: Transmission of stationary nonlinear optical pulses in dispersive dielectric fibers. I. Anomalous dispersion. Appl. Phys. Lett. 23(3), 142–144 (1973) doi:10.1063/1.1654836
Hornikx, M., Waxler, R.: The extended Fourier pseudospectral time-domain method for atmospheric sound propagation. J. Acoust. Soc. Am. 128(4), 1632–1646 (2010)
Huang, X., Zhang, X.: A Fourier pseudospectral method for some computational aeroacoustics problems. Aeroacoustics 5(3), 279–294 (2006)
Infeld, E., Rowlands, G.: Nonlinear Waves, Solitons, and Chaos. Cambridge University Press, New York (1990)
Popovychh, R.O., Eshraghi, H.: Admissible Point Transformations of Nonlinear Schrodinger 366 Equations, Proceedings of 10th International Conference in MOdern GRoup ANalysis, Larnaca, 167–174 (2005)
Remoissenet, M.: Waves Called Solitons, Concepts and Experiments. Springer, Berlin (1999)
Sinkala, Z.: Soliton/exciton transport in proteins. Theor. Biol. 241(4), 919–927 (2006) doi:10.1016/j.jtbi.2006.01.028
Weckesseer, W.: Cookbook/KdV. Retrieved on November 24, 2012, from http://www.scipy.org/Cookbook/KdV (22 February 2003)
Yakushevich, L.V.: Nonlinear Physics of DNA, 2nd rev. edn. Wiley, Garching (2004)
Yang, J.: Nonlinear Waves in Integrable and Nonintegrable Systems. Society for Industrial and Applied Mathematics, Philadelphia (2010)
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
6.1 Appendix
The following is our code utilizing the pseudo-spectral method in order to solve our perturbed NLS equation. The code was adapted from a Scipy Cookbook KdV example [13].
import numpy as np
from scipy.integrate import odeint
from scipy.fftpack import diff as psdiff
# from mpl_toolkits. mplot3d import Axes3D
from matplotlib.collections import PolyCollection
from matplotlib.colors import colorConverter
# from mpl_toolkits. mplot3d import axes3d
import matplotlib.pyplot as plt
def shr_exact(x, c):
””” Profile of the exact solution to the KdV for a
single soliton on the real line. ”””
# u =1.2*1/( np. cosh (1.2*( x +20)))
+np.exp(8j*(x))*0.8*1/(np.cosh(.8*x))
eps = 2.0
delta = 0.8
beta = eps
gamma = 1/eps
u =(np.exp(−delta*x))/(1+np.exp(−x))
+(np.exp(−delta*(x+20)))/(1+np.exp(−(x+20)))
*np.exp(3j*(x))
# u = np. exp (− delta *( beta *( x )))* np. exp (0 j *( x ))/
(1+np.exp(−(beta*(x))))
# u = np. exp (− delta *( beta * x ))/(1+ np. exp (−( beta * x )))
u = gamma*u
u = np.array(u, dtype=np.complex64)
u = np.array([u.real,u.imag])
u = u.flatten()
return u
def shr(u, t, L):
””” Differential equations for the KdV equation,
discretized in x. ”””
# Compute the x derivatives using the
pseudo−spectral method.
# ux = psdiff ( u, period = L )
eps = 2.0
gamma = 1/eps
n = len(u)
uxxRe = psdiff(u[0:(n/2)], period=L, order=2)
uxxIm = psdiff(u[(n/2):n], period=L, order=2)
uxx = np.array([uxxRe,uxxIm])
uxx = uxx.flatten()
absu =np.sqrt(u[0:n/2]**2+u[n/2:n]**2)
absu = np.array([absu,absu])
absu = absu.flatten()
absu2 = u[0:n/2]**2+u[n/2:n]**2
absu2 = np.array([absu2,absu2])
absu2 = absu2.flatten()
# Compute du / dt = − i *( − uxx − 2 abs ( u ) u )
= i * (uxx + 2abs(u)u)
dudt = (−1*2*absu2)*u + uxx + eps*(3*absu)*u
idudt= np.array([−1*dudt[(n/2):n], dudt[0:(n/2)]])
return idudt.flatten()
# return ( idudt. real, idudt. imag )
# Set the size of the domain, and create the
discretized grid.
eps = 2.0
beta = eps
L =160.0/beta
N = 256
dx = L/N
x = np.linspace(−L/2, L/2, N)
x1 = np.linspace(−L/beta, L/beta, N)
# Set the initial conditions.
# Not exact for two solitons on a periodic domain, but
close enough...
u0 = shr_exact(x, 0.75) # + kdv_exact ( x −0.65* L, 0.4)
# Set the time sample grid.
# ps = .01
# alpha = eps **2
Tm = 7
t = np.linspace(0, Tm, 1000)
# t = alpha * t
print ”Computing_the_solution.”
from mpl_toolkits.mplot3d import Axes3D
from matplotlib.collections import PolyCollection
from matplotlib.colors import colorConverter
sol = odeint(shr, u0, t, args=(L,), mxstep=500)
sol = sol[:, 0:N] + 1j *sol[:,N:(2*N) ]
print ”IMshow.”
plt.figure(figsize=(6,5))
plt.imshow(np.abs(sol[::−1, :]), extent=[−L/2,L/2,0,Tm])
plt.colorbar()
plt.xlabel(’x’)
plt.ylabel(’t’)
plt.axis(’normal’)
plt.title(’The_Nonlinear_Schrodinger_on_a_Periodic
Domain’)
# plt. show ()
# print ” Wireframe.”
# fig = plt. figure ()
# ax = fig. add_subplot (111, projection =’3 d ’)
# tind = range (0, len ( t ),10)
# xind = range (0, len ( x ),5)
# tt = t [ tind ]
# xx = x [ xind ]
# ux = abs ( sol )[:, xind ]
# uu = ux [ tind,:]
# X, T = np. meshgrid ( xx, tt )
# ax. plot_wireframe ( X, T, uu )
# plt. show ()
print(”WaterFall.”)
# # Redo the sampling
tind = range(0,len(t),30)
xind = range(0,len(x),1)
tt = t[tind]
xx = x[xind]
ux = abs(sol)[:,xind]
# The figure
fig = plt.figure()
ax = fig.gca(projection=’3d’)
cc = lambda arg: colorConverter.to_rgba(arg, alpha=0.6)
verts = []
for i in tind:
verts.append( zip(xx,ux[i,:]) )
poly = PolyCollection(verts, facecolors = [cc(’b’)])
poly.set_alpha(0.3)
ax.add_collection3d(poly, zs=tt, zdir=’y’)
ax.set_xlabel(’X’)
ax.set_xlim3d(−L/2,L/2)
ax.set_ylabel(’t’)
ax.set_ylim3d(0,Tm)
ax.set_zlabel(’Z’)
ax.set_zlim3d(0,1.1*np.max(abs(sol)))
plt.title(’The_Nonlinear_Schrodinger_on_a_Periodic
Domain’)
plt.show()
plt.figure()
plt.plot(xx, abs(sol[0]))
plt.xlabel(’X’)
plt.ylabel(’Z’)
plt.title(’Solution_at_T_=_0’)
plt.show()
plt.figure()
plt.plot(xx, abs(sol[999]))
plt.xlabel(’X’)
plt.ylabel(’Z’)
plt.title(’Solution_at_Max_Time’)
plt.show()
Diff = np.max(abs(sol[0]))−np.max(abs(sol[999]))
Diff = abs(Diff)
print Diff
Rights and permissions
Copyright information
© 2013 Springer Science+Business Media New York
About this paper
Cite this paper
Middlemas, E., Knisley, J. (2013). Soliton Solutions of a Variation of the Nonlinear Schrödinger Equation. In: Rychtář, J., Gupta, S., Shivaji, R., Chhetri, M. (eds) Topics from the 8th Annual UNCG Regional Mathematics and Statistics Conference. Springer Proceedings in Mathematics & Statistics, vol 64. Springer, New York, NY. https://doi.org/10.1007/978-1-4614-9332-7_6
Download citation
DOI: https://doi.org/10.1007/978-1-4614-9332-7_6
Published:
Publisher Name: Springer, New York, NY
Print ISBN: 978-1-4614-9331-0
Online ISBN: 978-1-4614-9332-7
eBook Packages: Mathematics and StatisticsMathematics and Statistics (R0)