Python实现数值积分方式
原理:
利用复化梯形公式,复化Simpson公式,计算积分。
步骤:
importmath
"""测试函数"""
deff(x,i):
ifi==1:
return(4-(math.sin(x))**2)**0.5
ifi==2:
ifx==0:
return1
else:
returnmath.sin(x)/x
ifi==3:
return(math.exp(x))/(4+x**2)
ifi==4:
returnmath.log(1+x,math.e)/(1+x**2)
"""打印显示函数"""
defp(i,n):
return"第"+str(i)+"题,n="+str(n)+"时的积分值为:"
"""复化Simpson函数"""
defSimpson(a,b,n,i):
h=(b-a)/(2*n)
F0=f(a,i)+f(b,i)
F1=0
F2=0
forjinrange(1,2*n):
x=a+(j*h)
ifj%2==0:
F2=F2+f(x,i)
else:
F1=F1+f(x,i)
SN=(h*(F0+2*F2+4*F1))/3
print("复化Simpson函数"+p(i,n)+str("%-10.7f"%(SN)))
returnSN
defT(a,b,n,i):
h=(b-a)/n
F0=f(a,i)+f(b,i)
F=0
forjinrange(1,n):
x=a+(j*h)
F=F+f(x,i)
SN=(h*(F0+2*F))/2
print("复化梯形函数"+p(i,n)+str("%-10.7f"%(SN)))
returnSN
defSimpsonTimes(x):
n=1
y=Simpson(0,math.pi/4,n,1)
while(abs(y-1.5343916)>x):
n=n+1
y=Simpson(0,math.pi/4,n,1)
else:
returnn
defTimes(x):
n=1
y=T(0,math.pi/4,n,1)
while(abs(y-1.5343916)>x):
n=n+1
y=T(0,math.pi/4,n,1)
else:
returnn
"""
测试部分
"""
Simpson(0,math.pi/4,10,1)
Simpson(0,1,10,2)
Simpson(0,1,10,3)
Simpson(0,1,10,4)
Simpson(0,math.pi/4,20,1)
Simpson(0,1,20,2)
Simpson(0,1,20,3)
Simpson(0,1,20,4)
T(0,math.pi/4,10,1)
T(0,1,10,2)
T(0,1,10,3)
T(0,1,10,4)
T(0,math.pi/4,20,1)
T(0,1,20,2)
T(0,1,20,3)
T(0,1,20,4)
print("复化梯形函数求解第一问,精度为0.00001时需要"+str(Times(0.00001))+"个步数")
print("复化Simpson函数求解第一问,精度为0.00001时需要"+str(SimpsonTimes(0.00001))+"个步数")
print("复化梯形函数求解第一问,精度为0.000001时需要"+str(Times(0.000001))+"个步数")
print("复化Simpson函数求解第一问,精度为0.000001时需要"+str(SimpsonTimes(0.000001))+"个步数")
以上这篇Python实现数值积分方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。