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.
42 lines
1.2 KiB
42 lines
1.2 KiB
5 months ago
|
from sympy.physics.pring import wavefunction, energy
|
||
|
from sympy.core.numbers import (I, pi)
|
||
|
from sympy.functions.elementary.exponential import exp
|
||
|
from sympy.functions.elementary.miscellaneous import sqrt
|
||
|
from sympy.integrals.integrals import integrate
|
||
|
from sympy.simplify.simplify import simplify
|
||
|
from sympy.abc import m, x, r
|
||
|
from sympy.physics.quantum.constants import hbar
|
||
|
|
||
|
|
||
|
def test_wavefunction():
|
||
|
Psi = {
|
||
|
0: (1/sqrt(2 * pi)),
|
||
|
1: (1/sqrt(2 * pi)) * exp(I * x),
|
||
|
2: (1/sqrt(2 * pi)) * exp(2 * I * x),
|
||
|
3: (1/sqrt(2 * pi)) * exp(3 * I * x)
|
||
|
}
|
||
|
for n in Psi:
|
||
|
assert simplify(wavefunction(n, x) - Psi[n]) == 0
|
||
|
|
||
|
|
||
|
def test_norm(n=1):
|
||
|
# Maximum "n" which is tested:
|
||
|
for i in range(n + 1):
|
||
|
assert integrate(
|
||
|
wavefunction(i, x) * wavefunction(-i, x), (x, 0, 2 * pi)) == 1
|
||
|
|
||
|
|
||
|
def test_orthogonality(n=1):
|
||
|
# Maximum "n" which is tested:
|
||
|
for i in range(n + 1):
|
||
|
for j in range(i+1, n+1):
|
||
|
assert integrate(
|
||
|
wavefunction(i, x) * wavefunction(j, x), (x, 0, 2 * pi)) == 0
|
||
|
|
||
|
|
||
|
def test_energy(n=1):
|
||
|
# Maximum "n" which is tested:
|
||
|
for i in range(n+1):
|
||
|
assert simplify(
|
||
|
energy(i, m, r) - ((i**2 * hbar**2) / (2 * m * r**2))) == 0
|