mirror of https://github.com/E-Almqvist/hsf
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.
46 lines
849 B
46 lines
849 B
#!/usr/bin/python3
|
|
import matplotlib.pyplot as plt
|
|
import numpy as np
|
|
|
|
fig = plt.figure()
|
|
ax = plt.axes(projection='3d')
|
|
|
|
# constants
|
|
L = 100 # box length
|
|
h = 1 # plancks constant
|
|
|
|
D = np.sqrt(2/L) # norm factor
|
|
m = 1 # mass
|
|
|
|
# total energy function
|
|
def E(n):
|
|
return (((h*n)/L)**2)*(1/(8*m))
|
|
|
|
def k(n):
|
|
return np.sqrt( (8 * ((np.pi)**2) * m * E(n))/(h**2) )
|
|
|
|
# wave function
|
|
def psi(x: float, n: int=1) -> float:
|
|
return D * np.sin( k(n) * x )
|
|
|
|
# probability density function
|
|
def prob(x: float, n: int=1) -> float:
|
|
return (psi(x, n))**2
|
|
|
|
|
|
x = np.arange(0, L, 0.1)
|
|
n = np.arange(1, 10, 1)
|
|
|
|
X, N = np.meshgrid(x, n)
|
|
P = prob(X, N)
|
|
|
|
fig = plt.figure()
|
|
ax = plt.axes(projection='3d')
|
|
ax.plot_surface(X, N, P, rstride=1, cstride=1, cmap='viridis', edgecolor='none')
|
|
ax.set_xlabel('x')
|
|
ax.set_ylabel('n')
|
|
ax.set_zlabel('p');
|
|
|
|
plt.show()
|
|
|
|
|
|
|