【发布时间】:2019-12-23 11:47:41
【问题描述】:
我想对波函数的一些时间传播进行动画处理。但我不想每次都计算所有时间步长,因为它需要大量时间,而是将波函数的先前值作为初始值。我不知道如何用animation.FuncAnimation 实现这一点。
我就是这么想的:
import numpy as np
from matplotlib import animation
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
wavefunction_0 = some array
def next_wavefunction(wavefunction_init):
wavefunction = time_propagation(Psi = wavefunction_init)
return wavefunction
def animate(framenumber, wavefunction, surf):
if framenumber == 0:
wavefunction = wavefunction_0
else:
wavefunction = next_wavefunction(wavefunction)
ax.clear()
surf = ax.plot_surface(X, Y, np.reshape(np.abs(wavefunction), (space_shape)), rstride=1, cstride=1, linewidth=0, antialiased=False, cmap='jet', edgecolor='none')
return surf, wavefunction
anim = animation.FuncAnimation(fig, animate, fargs=(wavefunction, surf),
interval=200, blit=False)
目前它从fargs = wavefunction 开始不起作用,但波函数是animate(...) 的返回值。是否可以将animate的返回值作为fargs传递?
【问题讨论】:
-
您有没有机会尝试我的答案中的任何一种解决方案?
-
@WilliamMiller 我会在下周之前查看它!
-
你有时间看这个吗?
标签: python matplotlib animation plot physics