Time-independent Schrödinger eqn & reflection coefficients
Sheehan Olver, 27 September 2010
(Chebfun example ode/ReflectionCoefficient.m)
The reflection coefficient acts as the "Fourier transform" for nonlinear integrable PDEs, such as KdV and NLS. For an initial condition q(x), if u solves the time independent Schrodinger equation
d2u/d2x + (w^2 + q) u = 0
on (-inf, inf) so that
u ~ exp(-i w x)
at -inf, then
u ~ a exp(-i w x) + b exp(i w x)
at inf, where a and b are constants. The reflection coefficient is then the ratio b/a.
Here we we compute u on (-inf,0] by writing
u = (p + 1) exp(-i w x),
and solving the non-oscillatory ODE for p
p'' - 2i*w*p' + q p = q.
We likewise find solutions to the time independent Schrodinger equation phip and phim on [0,inf) which satisfy
phip ~ exp(i w x) and phim ~ exp(-i w x)
We then write
u = a phim + b phip
on [0,inf) by solving
u(0) = a phim(0) + b phip(0) and u'(0) = a phim'(0) + b phip'(0)
warnstate = warning; tic w = 2.0; dneg = domain([-inf,0]); Dneg = diff(dneg); qneg = chebfun('sech(x).^2',dneg); Lneg = Dneg^2 - 2i*w*Dneg+diag(qneg); Lneg.lbc(1) = 0; p = Lneg\(-qneg); pD = diff(p); dpos = domain([0,inf]); Dpos = diff(dpos); qpos = chebfun('sech(x).^2',dpos); Lposp = Dpos^2 + 2i*w*Dpos+diag(qpos); Lposp.rbc = 0; Lposm = Dpos^2 - 2i*w*Dpos+diag(qpos); Lposm.rbc = 0; phip = Lposp \ (-qpos); phim = Lposm \ (-qpos); phipD = diff(phip); phimD = diff(phim); ab = [[phim(0)+1, phip(0)+1], [phimD(0)-1i.*w.*(phim(0)+1), phipD(0)+1i.*w.*(phip(0)+1)]] \ ... [1 + p(0); pD(0) - 1i.*w.*(p(0)+1)]; soln = ab(2)/ab(1)
Warning: Operator may not have the correct number of boundary conditions. Warning: Problem may be ill-posed. Check the boundary conditions. Warning: Operator may not have the correct number of boundary conditions. Warning: Problem may be ill-posed. Check the boundary conditions. Warning: Operator may not have the correct number of boundary conditions. Warning: Problem may be ill-posed. Check the boundary conditions. soln = -0.0016 + 0.0031i
The exact reflection coefficient for this initial condition can be found in [Drazin & Johnson 1989]:
truesoln = -0.0016078067215641416 + 0.00308747394810661i
truesoln = -0.0016 + 0.0031i
This matches the computed result to 7 digits.
error = abs(soln - truesoln) toc warning(warnstate)
error = 2.2027e-10 Elapsed time is 2.361702 seconds.