积分演绎

0 Comments

李兴球Python积分演绎

李兴球Python积分演绎

"""
  积分演绎
  在二次函数x*x/200的x区间为[0,240]曲线和x轴之间的面积是多少?
  这可以通过scipy的quad命令求出,这里我们逐步逼近来求,也就是演示积分的一个原理。
  求积分用下面的代码:
  from scipy.integrate import quad
  area = quad(lambda x:x*x/200,0,240)
"""
import numpy as np
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()

# y = x*x / 200             # 二次函数
f = lambda x: x*x/200
for x in range(240):
    c.goto(x,f(x))
    c.dot(2)
m = Sprite('blank')
t = Sprite('blank',pos=(-200,200))
step = 40
while step>0.01:
    m.clear()
    a = np.arange(0,240,step)
    area =0
    s = 0
    for x in a:
        y = f(x)
        m.goto(x,0)
        m.pendown()
        m.goto(x,y)
        m.goto(x+step,y)
        m.goto(x+step,0)
        m.goto(x,0)
        m.penup()
        s = step * y
        area += s
    t.clear()
    ds = '和面积:23040相差:' + str(23040-area)
    t.write(ds,font=('黑体',32,'normal'))
    t.wait(1)    
    step = step/2
 
c.ht()
screen.mainloop()



标签:

发表评论