【数值计算方法(黄明游)】数值积分(一):复化(梯形公式、中点公式)【理论到程序】

文章目录

  • 一、梯形公式、中点公式
    • [1. 梯形公式(Trapezoidal Rule):](#1. 梯形公式(Trapezoidal Rule):)
    • [2. 复化梯形公式(Composite Trapezoidal Rule):](#2. 复化梯形公式(Composite Trapezoidal Rule):)
    • [3. 中点公式(Midpoint Rule):](#3. 中点公式(Midpoint Rule):)
    • [4. 复化中点公式(Composite Midpoint Rule):](#4. 复化中点公式(Composite Midpoint Rule):)
  • 二、例题
  • 三、程序
    • [1. 中点公式](#1. 中点公式)
    • [2. 梯形公式](#2. 梯形公式)

积分学的基本定理告诉我们,只要能找到 f ( x ) f(x) f(x) 的原函数 F ( x ) F(x) F(x),就可以通过 F ( b ) − F ( a ) F(b) - F(a) F(b)−F(a) 来求得定积分的值。但实际上,找到 f ( x ) f(x) f(x) 的原函数 F ( x ) F(x) F(x) 并不总是容易的事情。有些函数的原函数可能没有简洁的表达式,或者无法通过常见的初等函数表示。

为了解决这个问题,数值积分方法提供了一种近似计算定积分的途径。这些方法通过离散化积分区间,使用数值技术来估计积分值。下面将介绍一些常见的数值积分方法:

一、梯形公式、中点公式

1. 梯形公式(Trapezoidal Rule):

梯形公式是最简单的数值积分方法之一,它基于使用梯形逼近曲线下的面积,其数学表达式为:

∫ a b f ( x )   d x ≈ b − a 2 [ f ( a ) + f ( b ) ] \int_a^b f(x) \,dx \approx \frac{b-a}{2} [f(a) + f(b)] ∫abf(x)dx≈2b−a[f(a)+f(b)]

通过连接函数图像上的两个端点,形成一个梯形,然后计算梯形的面积来估计定积分值。

2. 复化梯形公式(Composite Trapezoidal Rule):

复化梯形公式是对梯形公式的改进,通过将积分区间分割成多个小区间,然后在每个小区间上应用梯形公式,最后将结果相加,其数学表达式为:

∫ a b f ( x )   d x ≈ h 2 [ f ( a ) + 2 f ( x 1 ) + 2 f ( x 2 ) + ... + 2 f ( x n − 1 ) + f ( b ) ] \int_a^b f(x) \,dx \approx \frac{h}{2} [f(a) + 2f(x_1) + 2f(x_2) + \ldots + 2f(x_{n-1}) + f(b)] ∫abf(x)dx≈2h[f(a)+2f(x1)+2f(x2)+...+2f(xn−1)+f(b)]

其中, h = ( b − a ) / n h=(b-a)/n h=(b−a)/n 是每个小区间的宽度。

3. 中点公式(Midpoint Rule):

中点公式使用区间中点的函数值来逼近曲线下的面积,数学表达式为:

∫ a b f ( x )   d x ≈ f ( a + b 2 ) ( b − a ) \int_a^b f(x) \,dx \approx f\left(\frac{a+b}{2} \right)(b-a) ∫abf(x)dx≈f(2a+b)(b−a)

4. 复化中点公式(Composite Midpoint Rule):

复化中点公式是对中点公式的改进,通过将积分区间分割成多个小区间,然后在每个小区间上应用中点公式,最后将结果相加,数学表达式为:

∫ a b f ( x )   d x ≈ h ∑ i = 0 n − 1 f ( a + h 2 + i h ) \int_a^b f(x) \,dx \approx h \sum_{i=0}^{n-1} f\left(a + \frac{h}{2} + ih\right) ∫abf(x)dx≈hi=0∑n−1f(a+2h+ih)

其中, h h h 是每个小区间的宽度, n n n 是分割的小区间数量。

二、例题

有一组(x, y)值:

( y = e x y=e^x y=ex)
( 1.1 , 3.0042 ) ( 1.3 , 3.6693 ) ( 1.5 , 4.4817 ) \begin{align*} & (1.1, 3.0042) \\ & (1.3, 3.6693) \\ & (1.5, 4.4817) \end{align*} (1.1,3.0042)(1.3,3.6693)(1.5,4.4817)

  • 使用中点公式: ∫ a b f ( x )   d x ≈ ( b − a ) ⋅ f ( a + b 2 ) \int_a^b f(x) \,dx \approx (b - a) \cdot f\left(\frac{a + b}{2}\right) ∫abf(x)dx≈(b−a)⋅f(2a+b)

    • 这里 a = 1.1 a = 1.1 a=1.1, b = 1.5 b = 1.5 b=1.5,所以中点公式为: ∫ 1.1 1.5 f ( x )   d x ≈ ( 1.5 − 1.1 ) ⋅ f ( 1.1 + 1.5 2 ) = 0.4 f ( 1.3 ) = 1.46772 \int_{1.1}^{1.5} f(x) \,dx \approx (1.5 - 1.1) \cdot f\left(\frac{1.1 + 1.5}{2}\right)=0.4f(1.3)=1.46772 ∫1.11.5f(x)dx≈(1.5−1.1)⋅f(21.1+1.5)=0.4f(1.3)=1.46772
  • 使用复化梯形公式: ∫ a b f ( x )   d x ≈ h 2 [ f ( x 0 ) + 2 f ( x 1 ) + 2 f ( x 2 ) + ... + 2 f ( x n − 1 ) + f ( x n ) ] \int_{a}^{b} f(x) \,dx \approx \frac{h}{2} \left[ f(x_0) + 2f(x_1) + 2f(x_2) + \ldots + 2f(x_{n-1}) + f(x_n) \right] ∫abf(x)dx≈2h[f(x0)+2f(x1)+2f(x2)+...+2f(xn−1)+f(xn)]

    • 这里小区间的宽度 h = 0.2 h=0.2 h=0.2,代入数据点的 y y y 值:
      ∫ 1.1 1.5 f ( x )   d x ≈ 0.2 2 [ 3.0042 + 2 ⋅ 3.6693 + 4.4817 ] = 1.48245 \int_{1.1}^{1.5} f(x) \,dx \approx \frac{0.2}{2} \left[ 3.0042+ 2\cdot 3.6693 + 4.4817 \right]=1.48245 ∫1.11.5f(x)dx≈20.2[3.0042+2⋅3.6693+4.4817]=1.48245

三、程序

1. 中点公式

python 复制代码
def midpoint_rule(data):
    result = 0
    for i in range(len(data) - 1):
        a, fa = data[i]
        b, fb = data[i + 1]
        result += (b - a) * fb
    return result

2. 梯形公式

python 复制代码
def trapezoidal_rule(data):
    result = 0
    for i in range(len(data) - 1):
        a, fa = data[i]
        b, fb = data[i + 1]
        result += (b - a) * (fa + fb) / 2
    return result
相关推荐
Researcher-Du16 小时前
随机采样之接受拒绝采样
概率论
无水先生2 天前
ML 系列:机器学习和深度学习的深层次总结( 19)— PMF、PDF、平均值、方差、标准差
概率论
无水先生2 天前
ML 系列:机器学习和深度学习的深层次总结( 20)— 离散概率分布 (Bernoulli 分布)
概率论
卡洛驰2 天前
交叉熵损失函数详解
人工智能·深度学习·算法·机器学习·ai·分类·概率论
Ricciflows3 天前
分析学大师Elias M. Stein的分析系列教材
线性代数·数学建模·矩阵·概率论·抽象代数·拓扑学·傅立叶分析
乔大将军4 天前
数理统计(第4章第2节:2元方差分析)
概率论
爱代码的小黄人6 天前
数学期望和联合概率密度
概率论
VisionX Lab6 天前
视频批量裁剪工具
音视频·概率论
无水先生6 天前
ML 系列:第 18 部 - 高级概率论:条件概率、随机变量和概率分布
概率论
AnitasCat7 天前
VAE原理及代码实现
人工智能·机器学习·概率论