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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。