Python用复合辛普森公式求积分
复合辛普森公式是一种数值积分方法,用于求解函数的定积分。它是辛普森公式的推广,通过将积分区间分成若干个小区间,并在每个小区间上采用辛普森公式来逼近积分,从而得到更精确的积分值。
下面是Python代码实现复合辛普森公式求积分的过程:
import numpy as np
def f(x):
return np.sin(x) # 需要求解的函数
def composite_simpson(f, a, b, n):
h = (b - a) / n # 每个小区间的宽度
x = np.linspace(a, b, n+1) # 将积分区间分成n个小区间
y = f(x) # 将函数值存储在数组y中
S1 = 0
S2 = 0
for i in range(1, n):
if i % 2 == 0:
S2 += y[i]
else:
S1 += y[i]
return h/3 * (y[0] + y[n] + 4*S1 + 2*S2) # 返回积分值
# 测试
a = 0
b = np.pi/2
n = 10
integral = composite_simpson(f, a, b, n)
print("积分结果:", integral)
在上述代码中,我们首先定义了需要求解的函数f(x),然后定义了一个名为composite_simpson的函数,该函数接受4个参数:需要积分的函数f、积分区间的起点a和终点b、以及将积分区间分成n个小区间。
在函数内部,我们首先计算每个小区间的宽度h,并使用numpy.linspace函数将积分区间分成n个小区间,并将每个小区间的左端点存储在数组x中。接下来,我们计算每个小区间的函数值,并将其存储在数组y中。
然后,我们使用复合辛普森公式来逼近积分。具体来说,我们使用两个循环来计算奇数和偶数位置上的函数值,并分别将它们累加到S1和S2中。最后,我们将所有的函数值代入复合辛普森公式,并返回积分值。
最后,我们调用composite_simpson函数来对函数f(x)=sin(x)在区间[0, pi/2]上进行积分,并将结果打印出来
原文地址: https://www.cveoy.top/t/topic/cvTv 著作权归作者所有。请勿转载和采集!