Skip to content

Latest commit

 

History

History
169 lines (130 loc) · 3.82 KB

PoschlTeller.md

File metadata and controls

169 lines (130 loc) · 3.82 KB
CurrentModule = Antique

Pöschl-Teller Potential

The Pöschl-Teller potential is one of the few potentials for which the quantum mechanical Schrödinger equation has an analytical solution. It has a finite number of bound states, which can be inferred easily from its potential strength parameter λ. It is defined for one-dimensional systems.

Definitions

This model is described with the time-independent Schrödinger equation

$$\hat{H} \psi(x) = E \psi(x),$$

and the Hamiltonian

$$\hat{H} = - \frac{\hbar^2}{2 m} \frac{\mathrm{d}^2}{\mathrm{d}x ^2} - \frac{\hbar^2}{m x_0^2} \frac{\lambda(\lambda+1)}{2} \frac{1}{\mathrm{cosh}(x/x_0)^2}.$$

After introducing the dimensionless variables

$$x^\ast \equiv x/x_0,\qquad E^\ast \equiv \frac{\hbar^2}{m x_0^2} E$$

the Schrödinger equation reduces to

$$\hat{H}^\ast \psi(x^\ast) = E^\ast \psi(x^\ast),$$

with

$$\hat{H}^\ast = - \frac{1}{2} \frac{\mathrm{d}^2}{\mathrm{d}{x^\ast}^2} - \frac{\lambda(\lambda+1)}{2} \frac{1}{\mathrm{cosh}(x^\ast)^2}.$$

Parameters are specified within the following struct.

Parameters

Antique.PoschlTeller

Potential

Antique.V(::PoschlTeller, ::Any)

Number of Bound States

Antique.nₘₐₓ(::PoschlTeller)

Eigenvalues

Antique.E(::PoschlTeller)

Eigenfunctions

Antique.ψ(::PoschlTeller, ::Any)

Associated Legendre Polynomials

Antique.P(::PoschlTeller, ::Any)

Usage & Examples

[Install Antique.jl](@ref Install) for the first use and run using Antique before each use. The energy E(), wavefunction ψ(), potential V() and nₘₐₓ() will be exported. In this system, the model is generated by PoschlTeller and the parameters λ, m, , x₀.

using Antique
PT = PoschlTeller(λ=4, m=1.0, ℏ=1.0, x₀=1.0)
; # hide

Parameters:

PT.λ
PT.m
PT.ℏ
PT.x₀

Number of bound states:

nₘₐₓ(PT)

Eigenvalues:

E(PT, n=0)
E(PT, n=1)
E(PT, n=2)
E(PT, n=3)

Potential energy curve:

using CairoMakie

f = Figure()
ax = Axis(f[1,1], xlabel=L"$x$", ylabel=L"$V(x)$")
lines!(ax, -6..6, x -> V(PT, x))
f

Wave functions:

using CairoMakie

# setting
f = Figure()
ax = Axis(f[1,1], xlabel=L"$x$", ylabel=L"$\psi(x)$")

# plot
w0 = lines!(ax, -3..3, x -> ψ(PT, x, n=0))
w1 = lines!(ax, -3..3, x -> ψ(PT, x, n=1))
w2 = lines!(ax, -3..3, x -> ψ(PT, x, n=2))
w3 = lines!(ax, -3..3, x -> ψ(PT, x, n=3))

# legend
axislegend(ax, [w0, w1, w2, w3], [L"n=0", L"n=1", L"n=2", L"n=3"], position=:lb)

f

Potential energy curve, Energy levels, Wave functions:

using CairoMakie

# settings
f = Figure()
ax = Axis(f[1,1], xlabel=L"$x$", ylabel=L"$V(x),~E_n,~\psi_n(x) \times 5 + E_n$", aspect=1, limits=(-4,4,-10.5,1))
# hidespines!(ax)
# hidedecorations!(ax)

for n in 0:3
  # classical turning point
  xE = acosh(sqrt(PT.λ*(PT.λ+1)/abs(E(PT,n=n))/2))
  # energy
  hlines!(ax, E(PT, n=n), color=:black, linewidth=1, linestyle=:dash)
  lines!(ax, [-xE,xE], fill(E(PT,n=n),2), color=:black, linewidth=2)
  # wave function
  lines!(ax, -4..4, x -> E(PT,n=n) + ψ(PT,x,n=n), linewidth=2)
end

#potential
lines!(ax, -4..4, x -> V(PT,x), color=:black, linewidth=2)

f
save("assets/fig/PoschlTeller.png", f) # hide
; # hide

Testing

Unit testing and Integration testing were done using numerical integration (QuadGK.jl). The test script is here.

using Markdown
using Antique
Markdown.parse(Antique.load("../../test/result/PoschlTeller.log"))