python 积分实现,python实现积分运算

  python 积分实现,python实现积分运算

  本文主要介绍用Python实现数值积分。本文主要用于用Python比较数学中积分的几种计算方法,并与真值进行比较,从而加深人们对积分运算实现的理解。

  00-1010 1.栗子2。矩形计算区域2.1左侧边长计算区域2.2右侧边长计算区域2.3中间边长计算区域3。梯形计算区4。真实值比较5。摘要

  

目录

  为了加深大家的印象,首先我们来看个例子:

  图示如下:

  

1. 栗子

  我们知道,在数学中,积分运算表示的是上述曲线和X轴围成的封闭区域的面积。所以我们在数值预算中近似上述面积的面积,最直观的思路就是分成小矩形来计算对应的面积。

  

2. 矩形计算面积

  为了计算每个小矩形的面积和设计边长和高的选择,这里我们用left函数的值作为对应矩形的高度来计算对应小矩形的面积,图示如下:.

  对应的代码如下:

  将numpy作为np导入

  x=np.linspace(0,3,1001)

  f=x : x * * 3-4 x * * 2 4 x 2

  a=0.5

  b=2.5

  Ax=np.linspace(a,b,101)

  Ay=f(Ax)

  def defInt_left(f,a,b,N):

  #左手点

  结果=0;FX=[];Xn=[]

  dx=abs(b - a)/N

  而b:

  结果=f(a)*dx

  FX=[f(a)]

  Xn=[a]

  a=dx

  返回结果,FX,Xn,dx

  N=4

  I_left,FX,Xn,dx=defInt_left(f,a,b,N)

  打印(左)

  在上面的代码中,我们把横坐标拆分成四个小部分,也就是四个小矩形,然后用函数左边的点来坐小矩形的高度和上述代码的运行结果如下:

  5.25

  

2.1 左侧边长计算面积

  这里类似于上面的原理,除了每个小矩形的高度由右侧长度函数图例如下:.的值近似计算

  样例代码如下:

  def defInt_right(f,a,b,N):

  #右手点

  结果=0;FX=[];Xn=[]

  dx=abs(b - a)/N

  而b:

  结果=f(a dx)*dx

  FX=[f(a dx)]

  Xn=[a]

  a=dx

  返回结果,FX,Xn,dx

  N=4

  I_right,FX,Xn,dx=defInt_right(f,a,b,N)

  打印(右侧)

  运行结果如下:

  5.0

  

2.2 右侧边长计算面积

  见以上两种。

  近似计算方式,有同学就说有取左侧点算出来面积大的,有取右侧点算出来面积小的,那干脆折中一下,我们来以中值坐位矩形的高来计算对应的面积。图例如下:

  

  代码实现如下:

  

def defInt_middle(f, a, b, N):

      # middle point

      result = 0; FX = []; Xn = []

      dx = abs(b - a)/N

      while a < b:

          result += f(a + dx/2)*dx

          FX += [f(a + dx/2)]

          Xn += [a]

          a += dx

      return result, FX, Xn, dx

  N = 4

  I_mid, FX, Xn, dx = defInt_middle(f, a, b, N)

  print(I_mid)

  运行结果如下:

  

5.0625

  

  

  

3. 梯形计算面积

  读到这里的同学可能会思考,既然可以将封闭区域划分成一个个的小矩形,那当然也可以将其划分成梯形来近似计算相应的面积,图例如下:

  

  样例代码如下:

  

def defInt_trapezoid(f, a, b, N):

      # trapezoidal rule

      result = 0; FXa, FXb = [], []; Xn = []

      dx = abs(b - a)/N

      while a < b:

          result += (f(a) + f(a + dx))*dx/2

          FXa += [f(a)]; FXb += [f(a + dx)]

          Xn += [a]

          a += dx

      return result, FXa, FXb, Xn, dx

  N = 4

  I_trap, FXa, FXb, Xn, dx = defInt_trapezoid(f, a, b, N)

  print(I_trap)

  运行结果如下:

  

5.125

  

  

  

4. 真值比对

  最后,我们来针对不同的N来讲封闭区域划分成对应的小份,分别针对性的计算上述四种方式的积分值,样例代码如下:

  

Nx = range(1, 11)

  I1, I2, I3, I4 = [], [], [], []

  for Ni in Nx:

      i1, *_ = defInt_left(f, a, b, Ni); I1 += [i1];

      i2, *_ = defInt_right(f, a, b, Ni); I2 += [i2];

      i3, *_ = defInt_middle(f, a, b, Ni); I3 += [i3];

      i4, *_ = defInt_trapezoid(f, a, b, Ni); I4 += [i4];

  最后将其与真值进行对比,如下:

  

  可以看出,随着划分区域的增多,采用梯形计算面积方式最逼近真值。

  

  

5. 总结

  本文重点介绍了使用不同面积划分方法来近似计算积分取值的原理和相应的代码实现,其中采用梯形计算面积的方式随着划分子区域数目的增加最接近真值,推荐大家使用。

  到此这篇关于利用Python实现数值积分的方法的文章就介绍到这了,更多相关Python实现数值积分内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: