Python and Computational Physics: Simpson method for numerical integration

From , 5 Years ago, written in Python, viewed 215 times.
URL https://pastebin.vip/view/37cfff3c
  1. #coding = utf-8
  2. #simpson 法计算积分,数值积分,效果非常理想
  3. from math import *
  4. def func(x):
  5.     """
  6.    定义被积分函数
  7.    """
  8.     return x*sin(x)
  9.  
  10. def Get_N(a,b,width):
  11.     # width为步长
  12.     N=int((b-a)/width + 1)
  13.     if N%2 == 0:
  14.         N=N+1
  15.     return N
  16.  
  17. def GenerateData(a,b,n,width):
  18.     datas = []
  19.     r=a
  20.     for i in range(0,n):
  21.         datas.append(func(r))
  22.         r = r+width
  23.     return datas
  24.  
  25. def simpson_integral(datas,width,n):
  26.     sum = datas[0]+datas[n-1]
  27.     for i in range(2,n):
  28.         if i%2== 0:
  29.             sum = sum +4*datas[i-1]
  30.         else:
  31.             sum = sum +2*datas[i-1]
  32.     return sum*width/3.0
  33.  
  34.  
  35. if __name__ == "__main__":
  36.     a=1.0 #积分上限
  37.     b=3.0 #积分下限
  38.     width=0.0625 #步长
  39.     N=Get_N(a,b,width)
  40.     datas = GenerateData(a,b,N,width)
  41.     print simpson_integral(datas,width,N)
  42. #//python/5579

Reply to "Python and Computational Physics: Simpson method for numerical integration"

Here you can reply to the paste above

captcha

https://burned.cc - Burn After Reading Website