[Python] python与计算物理:实现数值积分的Simpson方法 →→→→→进入此内容的聊天室

来自 , 2020-08-15, 写在 Python, 查看 116 次.
URL http://www.code666.cn/view/ce059ef4
  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

回复 " python与计算物理:实现数值积分的Simpson方法"

这儿你可以回复上面这条便签

captcha