89 lines
2.0 KiB
Python
89 lines
2.0 KiB
Python
from sympy.core import S, pi, Rational
|
|
from sympy.functions import hermite, sqrt, exp, factorial, Abs
|
|
from sympy.physics.quantum.constants import hbar
|
|
|
|
|
|
def psi_n(n, x, m, omega):
|
|
"""
|
|
Returns the wavefunction psi_{n} for the One-dimensional harmonic oscillator.
|
|
|
|
Parameters
|
|
==========
|
|
|
|
n :
|
|
the "nodal" quantum number. Corresponds to the number of nodes in the
|
|
wavefunction. ``n >= 0``
|
|
x :
|
|
x coordinate.
|
|
m :
|
|
Mass of the particle.
|
|
omega :
|
|
Angular frequency of the oscillator.
|
|
|
|
Examples
|
|
========
|
|
|
|
>>> from sympy.physics.qho_1d import psi_n
|
|
>>> from sympy.abc import m, x, omega
|
|
>>> psi_n(0, x, m, omega)
|
|
(m*omega)**(1/4)*exp(-m*omega*x**2/(2*hbar))/(hbar**(1/4)*pi**(1/4))
|
|
|
|
"""
|
|
|
|
# sympify arguments
|
|
n, x, m, omega = map(S, [n, x, m, omega])
|
|
nu = m * omega / hbar
|
|
# normalization coefficient
|
|
C = (nu/pi)**Rational(1, 4) * sqrt(1/(2**n*factorial(n)))
|
|
|
|
return C * exp(-nu* x**2 /2) * hermite(n, sqrt(nu)*x)
|
|
|
|
|
|
def E_n(n, omega):
|
|
"""
|
|
Returns the Energy of the One-dimensional harmonic oscillator.
|
|
|
|
Parameters
|
|
==========
|
|
|
|
n :
|
|
The "nodal" quantum number.
|
|
omega :
|
|
The harmonic oscillator angular frequency.
|
|
|
|
Notes
|
|
=====
|
|
|
|
The unit of the returned value matches the unit of hw, since the energy is
|
|
calculated as:
|
|
|
|
E_n = hbar * omega*(n + 1/2)
|
|
|
|
Examples
|
|
========
|
|
|
|
>>> from sympy.physics.qho_1d import E_n
|
|
>>> from sympy.abc import x, omega
|
|
>>> E_n(x, omega)
|
|
hbar*omega*(x + 1/2)
|
|
"""
|
|
|
|
return hbar * omega * (n + S.Half)
|
|
|
|
|
|
def coherent_state(n, alpha):
|
|
"""
|
|
Returns <n|alpha> for the coherent states of 1D harmonic oscillator.
|
|
See https://en.wikipedia.org/wiki/Coherent_states
|
|
|
|
Parameters
|
|
==========
|
|
|
|
n :
|
|
The "nodal" quantum number.
|
|
alpha :
|
|
The eigen value of annihilation operator.
|
|
"""
|
|
|
|
return exp(- Abs(alpha)**2/2)*(alpha**n)/sqrt(factorial(n))
|