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

1.[代码]python与计算物理:实现数值积分的Simpson方法。

#!/usr/bin/env python

#coding=utf-8

'''

Created on 2012年10月27日

@author: yanghl

simpson 法计算积分,数值积分,效果非常理想

'''

from math import *

def func(x):

"""

定义被积分函数

"""

return x*sin(x)

def Get_N(a,b,width):

# width为步长

N=int((b-a)/width + 1)

if N%2 == 0:

N=N+1

return N

def GenerateData(a,b,n,width):

datas = []

r=a

for i in range(0,n):

datas.append(func(r))

r = r+width

return datas

def simpson_integral(datas,width,n):

sum = datas[0]+datas[n-1]

for i in range(2,n):

if i%2== 0:

sum = sum +4*datas[i-1]

else:

sum = sum +2*datas[i-1]

return sum*width/3.0

if __name__ == "__main__":

a=1.0 #积分上限

b=3.0 #积分下限

width=0.0625 #步长

N=Get_N(a,b,width)

datas = GenerateData(a,b,N,width)

print simpson_integral(datas,width,N)

#调用scipy.integrate 包进行计算

import scipy.integrate as integrate

print integrate.quad(func, a, b)[0]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值