我想爲給定的函數執行一個動畫。動畫給零分區
我現在的問題是,它給了我一個零除,但我不明白這是如何發生的。
我已經把一些打印語句,他們都沒事。
我不確定FuncAnimation是如何工作的,因爲如果我忽略這個調用,而只是運行「animate(n)」,那麼我沒有錯誤。
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import animation
R = 1
b = 0.02
m0 = 0.02
n = np.linspace(1,0.01 ,10)
r = np.linspace(0,R ,10)
fig, axes = plt.subplots()
line, = axes.plot([], [], lw=2)
def init():
line.set_data([], [])
return line,
def animate(n):
u_r = ((b/2 * m0) ** (1/n)) * (n/(n+1)) * (R**(1+1/n) - r**(1+1/n))
print()
print("1/n = {0} , n/n+1= {1} ,1+1/n = {2}".format(1/n, n/(n+1),1+(1/n)))
print()
print(u_r)
line.set_data(r, u_r[0]*u_r)
return line,
anim = animation.FuncAnimation(fig, animate, init_func=init,
frames=len(n),blit=False)
plt.show()
的錯誤是在該行:
u_r = ((b/2 * m0) ** (1/n)) * (n/(n+1)) * (R**(1+1/n) - r**(1+1/n))
順便說一句你使用'animate'作爲'FuncAnimation'的一個參數並且有一個同名的函數。 – Psytho
你有一個模塊級變量'n',但該變量隱藏在'animate'函數的範圍內,因爲* animate'的*參數也被稱爲'n'。該參數將是一個整數,範圍從0到'len(n)-1'。看到我的答案。 –
你的動畫應該做什麼?你想爲每個n的值計算u_r嗎?或者是其他東西? –