""" 微分演绎.py 本函数演示二次函数 y = x*x/200在某点的微分,或者说变化率,即斜率k。 在本例中的取x为100处的导数,根据求导公式,y的导函数应该是0.01x, 所以在x为100处,斜率应该是1,所以y的值是100*100/200。 sprites模块为turtle模块增强版。 本程序没有用到Python精灵模块的增强功能,可稍加修改为turtle模块实现。 """ from sprites import * c = Turtle() c.pendown() c.fd(300) c.stamp() c.bk(600) c.fd(300) c.left(90) c.fd(300) c.stamp() c.bk(600) c.home() c.penup() c.goto(100,-20) c.write('(100,0)',align='center',font='楷体 12 normal') # y = x*x / 200 # 二次函数 f = lambda x: x*x/200 for x in range(-240,240): c.goto(x,f(x)) c.dot(2) m = Sprite('blank') m.pensize(2) step = 100 x0 = 100 while step>0.01: m.clear() m.goto(x0,0) m.pendown() m.goto(x0,f(x0)) m.up() m.goto(x0+step,0) m.pendown() m.goto(x0+step,f(x0+step)) m.up() k = (f(x0+step)-f(x0))/step # 变化率 b = f(x0) - k * x0 k,b = round(k,6),round(b,6) first = 0,b second = 200, k*200 + b m.goto(first) m.down() m.goto(second) m.up() step = step/1.1 m.goto(0,-150) m.write(f'斜率:{k}, y截距:{b}',align='center',font='楷体 22 normal') m.wait(0.2) c.ht() c.screen.mainloop()
李兴球
李兴球的博客是Python创意编程原创博客
要发表评论,您必须先登录。
发表评论