python做动画的库_用matplotlib动画库制作等分法动画

经过反复试验,我找到了解决问题的办法。在import matplotlib.pyplot as plt

from matplotlib import 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, b

else:

return a, p

def bisection_method(f,a,b,n):

for i in range(n):

a,b = bisect(f,a,b)

return a,b

def f(x):

return x**2-3

xmin, xmax = 1, 2

yrange = f(xmin), f(xmax)

ymin, ymax = min(yrange), max(yrange)

vf = np.vectorize(f)

x = np.linspace(xmin,xmax)

y = vf(x)

epsilon = 0.1

# Initialize figure

fig = plt.figure()

ax = plt.axes(xlim=(xmin-epsilon,xmax+epsilon), ylim=(ymin,ymax))

curve, = ax.plot([],[], color='blue')

left, = ax.plot([],[],color='red')

right, = ax.plot([],[],color='red')

# Figure reset between frames

def init():

left.set_data([],[])

right.set_data([],[])

curve.set_data([],[])

return left, right, curve,

# Animation of bisection

def animate(i):

a, b = bisection_method(f,xmin,xmax,i)

left.set_data([a,a],[ymin,ymax])

right.set_data([b,b],[ymin,ymax])

curve.set_data(x,y)

return left, right, curve,

anim = animation.FuncAnimation(fig, animate, init_func=init, frames=15, interval=700, blit=True)

plt.grid()

plt.show()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值