In [1]:
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
In [7]:
m = 1
hbar = 1
sigma = .5
p0 = 10
def wavefunction(p,p0,sigma,t):
return np.exp(-(p-p0)**2/(4*sigma**2))*np.exp(-1.j*p**2*t/(2*m*hbar))
def inverse_fourier(t):
p = np.fft.ifftshift(np.linspace(p0-3*sigma,p0+3*sigma,10000))
yvalue = wavefunction(p,p0,sigma,t)
x = p
s = (1/(2*np.pi*sigma**4)**(0.25))*np.exp(-1.j*x*sigma/hbar)*np.fft.ifft(yvalue)
return np.absolute(s)**2
In [19]:
for t in range(1, 50, 5):
x = np.fft.ifftshift(np.linspace(p0-sigma,p0+sigma,10000))
plt.plot(x, inverse_fourier(t * 1))
In [18]:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
m = 1
hbar = 1
sigma = 1
p0 = 10
def wavefunction(p,p0,sigma,t):
return np.exp(-(p-p0)**2/(4*sigma**2))*np.exp(-1.j*p**2*t/(2*m*hbar))
def inverse_fourier(t):
p = np.fft.ifftshift(np.linspace(p0-3*sigma,p0+3*sigma,10000))
yvalue = wavefunction(p,p0,sigma,t)
x = p
s = (1/(2*np.pi*sigma**4)**(0.25))*np.exp(-1.j*x*sigma/hbar)*np.fft.ifft(yvalue)
return np.absolute(s)**2
x = np.fft.ifftshift(np.linspace(p0-sigma,p0+sigma,10000))
y = inverse_fourier(0)
fig, ax = plt.subplots()
ax.plot(x,y)
ax.set_xlim([p0-3*sigma,p0+3*sigma])
ax.set_ylim([-0.001, 0.02])
for i in range(1, 50,5):
y = inverse_fourier(i)
ax.plot(x,y)
plt.show()
In [ ]: