我對數學演示感興趣。目前我正在研究python中的數值方法的可視化,特別是二分法。以下是我迄今爲止編寫的代碼。使用matplotlib動畫庫製作動畫二等分方法
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import numpy as np
def sgn(x):
if x > 0:
return 1
elif x < 0:
return -1
else:
return 0
def bisect(f,a,b):
fa = f(a)
fb = f(b)
p = a+(b-a)/2
fp = f(p)
if sgn(fa) == sgn(fp):
return p, fp, b, fb
else:
return a, fa, p, fp
def f(x):
return x**2-3
a, b = 1, 2
plt.figure()
plt.subplot(111)
a, fa, b, fb = bisect(f,a,b)
vf = np.vectorize(f)
x = np.linspace(a,b)
y = vf(x)
plt.plot(x, y, color='blue')
plt.plot([a,a], [0,fa], color='red', linestyle="--")
plt.plot([b,b], [0,fb], color='red', linestyle="--")
plt.grid()
plt.show()
我有三個問題想解決。首先,我希望能夠多次調用對分函數,並且每次我都想用新數據重繪圖。其次,我想在應用平分函數某些指定次數後重新開始動畫。第三,我希望在平分法被調用之前保留圖的原始座標軸,即我想將x範圍保持爲[1,2],將y範圍保持爲$ [ - 2,1] $。任何幫助都感激不盡。
感謝您的信息,但我希望嘗試學習如何使用FuncAnimation動畫循環做到這一點,所以我可以把它應用到其他項目。 –