You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

89 lines
2.0 KiB

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))