本文主要是介绍辛普森公式求函数的近似积分【通用计算】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
利用辛普森公式可以近似求出复杂函数的积分值,公式如下:
∫ a b f ( x ) d x ≈ h 3 [ y 0 + y 2 n − 1 + 4 ( ∑ i = 1 n − 1 y 2 i − 1 ) + ∑ i = 1 n − 1 y 2 i ] \int_{a}^{b} f(x) dx \approx \frac{h}{3}\left[ y_0 + y_{2n-1} + 4(\sum\limits_{i=1}^{n-1} y_{2i-1}) + \sum\limits_{i=1}^{n-1} y_{2i} \right] ∫abf(x)dx≈3h[y0+y2n−1+4(i=1∑n−1y2i−1)+i=1∑n−1y2i]
其中 y 0 y_0 y0 到 y 2 n − 1 y_{2n-1} y2n−1的值是原函数在等分点上的函数值。
下面是一个简单的示例:
import numpy as npdef calculate_simpson_integral(target_fun, left_zone, right_zone, zone_num):""" 使用辛普森规则计算积分近似值 """# 计算区间的步长step_len = (right_zone - left_zone) / zone_num# 在区间上生成 zone_num+1 个等距的点dots = np.linspace(left_zone, right_zone, zone_num + 1)# 求分段点的函数值fun_values = target_fun(dots)# 利用公式求近似积分值return step_len / 3 * (fun_values[0] + fun_values[-1] +4 * np.sum(fun_values[1:-1:2]) +2 * np.sum(fun_values[2:-2:2]))# 测试
def integral_function(x):""" 定义被积函数"""return x ** 2# 定义区间参数和分区数量
left_zone = 0
right_zone = 1
zone_num = 100
result = calculate_simpson_integral(integral_function, left_zone, right_zone,zone_num)print("定积分的近似值为:", result)
你可以根据实际需要定义被积函数,然后利用calculate_simpson_integral
求其在指定区间上的积分值。
这篇关于辛普森公式求函数的近似积分【通用计算】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!