📜  分段函数的定积分(1)

📅  最后修改于: 2023-12-03 15:22:38.170000             🧑  作者: Mango

分段函数的定积分

分段函数是指在定义域上由若干条线段拼接而成的函数,这些线段之间可以有跳跃,即该函数是不光滑的。分段函数在实际问题中应用广泛,因此对其积分也很重要。

定义

设 $f(x)$ 是定义在区间 $[a,b]$ 上的分段函数,其间在 $x_1,x_2,\cdots,x_{n-1}$ 处发生跳跃,则将 $[a,b]$ 分为若干个子区间 $[a,x_1],[x_1,x_2],\cdots,[x_{n-1},b]$,在每个子区间上 $f(x)$ 均为连续函数。则 $f(x)$ 在 $[a,b]$ 的定积分为:

$$ \int_a^b f(x) dx = \sum_{i=1}^{n} \int_{x_{i-1}}^{x_i} f(x) dx $$

其中,$x_0=a$,$x_n=b$。

代码实现

以 Python 为例,在进行分段函数的定积分时,可以通过分段实现。代码示例:

def piecewise_integral(f, a, b, split_points):
    # f: 分段函数
    # a,b: 定积分区间上下限
    # split_points: 分段点,如 [x1,x2,...,xn]
    x = Symbol('x')
    area = 0
    for i in range(len(split_points) + 1):
        if i == 0:
            area += integrate(f(x), (x, a, split_points[i]))
        elif i == len(split_points):
            area += integrate(f(x), (x, split_points[i-1], b))
        else:
            area += integrate(f(x), (x, split_points[i-1], split_points[i]))
    return area

其中,f 为分段函数,split_points 为分段点数组。

示例

假设需要计算分段函数 $f(x)$ 在 $[-1,4]$ 内的定积分,其中:

$$ f(x)= \begin{cases} -\frac{1}{4}x + 1, & -1 \leq x \leq 2 \ 2x - 6, & 2 < x \leq 4 \end{cases} $$

则其中分段点为 $[2]$,代码示例:

from sympy import *

x = Symbol('x')
f = Piecewise((-Rational(1, 4)*x + 1, x <= 2), (2*x - 6, True))
a, b = -1, 4
split_points = [2]
area = piecewise_integral(f, a, b, split_points)
print(area)

运行结果为:

28/4

因此,分段函数 $f(x)$ 在 $[-1,4]$ 内的定积分为 $\frac{7}{2}$。