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 [ ]: