python数值积分_Python如何实现数值积分方式 Python实现数值积分方式代码

本篇文章小编给大家分享一下Python实现数值积分方式代码,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。

原理:

利用复化梯形公式,复化Simpson公式,计算积分。

步骤:

import math

"""测试函数"""

def f(x,i):

if i == 1:

return (4 - (math.sin(x)) ** 2) ** 0.5

if i == 2:

if x == 0:

return 1

else:

return math.sin(x) / x

if i == 3:

return (math.exp(x)) / (4 + x ** 2)

if i == 4:

return math.log(1+x,math.e) / (1 + x ** 2)

"""打印显示函数"""

def p(i,n):

return "第" + str(i) + "题,n=" + str(n) + "时的积分值为:"

"""复化Simpson函数"""

def Simpson(a, b, n, i):

h = (b - a) / (2 * n)

F0 = f(a,i) + f(b,i)

F1 = 0

F2 = 0

for j in range(1,2 * n):

x = a + (j * h)

if j % 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)))

return SN

def T(a, b, n, i):

h = (b - a) / n

F0 = f(a,i) + f(b,i)

F = 0

for j in range(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)))

return SN

def SimpsonTimes(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:

return n

def Times(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:

return n

"""

测试部分

"""

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)) + "个步数")

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值