1.复合梯形公式
2.复合辛普森公式
python实现
import math
def fun(x):
return math.sin(x)/(x+1e-16) #加上1e-16避免除零错误
# 复合梯度
def tx(a,b,n):
h=(b-a)/n
fxi=0
xi=a
for i in range(1,n):
xi=xi+h
fxi=fxi+fun(xi)
result=(h/2)*(fun(a)+fxi*2+fun(b))
return result
#复合辛普森
def xps(a,b,n):
k=int(n/2)
h=(b-a)/n
fk=0
xi=a
for i in range(1,k):
xi=xi+h
fk=fk+fun(xi)
xi=a+h/2
fk1=fun(xi)
for i in range(0,k):
xi=xi+h
fk1=fk1+fun(xi)
result=(h/3)*(fun(a)+4*fk1+2*fk+fun(b))
return result
print(tx(0,1,1000000))
print(xps(0,1,1000000))