Я решаю уравнение, используя методы конечных разностей, и хотел бы оживить решение.При настройке анимации формы:
import numpy as np
import matplotlib.animation as animation
dx = 0.1
x = np.linspace(0, 10, dx)
def time_step(p, dt, dx):
return p + dt*f(p, dx)
def f(p, dx):
... #some spatial discretisation function
return p_updated
fig, ax = plt.subplots()
line, = ax.plot(x, p)
def update(i):
global p, dt, dx
p = time_step(p, dt dx)
return line,
ani = animation.FuncAnimation(fig, update, frames=np.arange(0, 10000, 1), blit=False, interval= 10, repeat = False)
plt.show()
, тогда она работает и правильно отображает анимацию.Однако мне нужно иметь возможность вызывать функцию из отдельного файла, и тогда она больше не работает.то есть:
import numpy as np
import matplotlib.animation as animation
from file1 import time_step
def anim(p, D, dt, dx, animate_now, x):
if animate_now:
fig = plt.figure(figsize=(15,9))
ax = fig.add_subplot(111)
line, = ax.plot(x, p)
def animate(i):
global p
p = time_step(p, dt, D, dx)
line.set_ydata(p)
return line,
ani = animation.FuncAnimation(fig, animate, np.arange(1, 200),
interval=50)
plt.show()
return ani
и вызов функции anim из другого файла, тогда сообщение об ошибке будет просто «UnboundLocalError: локальная переменная« p », на которую ссылается перед присваиванием».Как исправить код так, чтобы это работало?