import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

fig, ax = plt.subplots()

x_list = np.linspace(0, np.pi, 100)
t_list = np.linspace(0,100,1000)

def u(x,t):
    return np.sin(np.pi*x)*(np.sin(np.pi*t)/np.pi) - np.sin(2*np.pi*x)*(np.sin(2*np.pi*t)/(4*np.pi))

y_list = [u(x_list,t) for t in t_list]

k=0

def animate(i):
    global k
    y = y_list[k]

    k+=1

    ax.clear()
    plt.plot(x_list,y)

    plt.ylim(-1,1)
    plt.xlim(0,3)


ani = animation.FuncAnimation(fig, animate, frames=360, interval=20)

plt.show()