积分


文档摘要

积分 积分把一个个小区间上的量累积起来,把局部的变化率还原成总量。本文件涵盖定积分与不定积分、微积分基本定理、积分技巧,以及在机器学习中如何应用于概率密度与期望值。 微分告诉我们某一点处的变化率。积分则反其道而行:它把无数个微小的片段累积起来,得到一个总量。 如果导数回答的是「有多快?」,那么积分回答的就是「有多少?」 理解积分最自然的方式,是把它看作曲线下方的面积(area under a curve)。如果你画出函数 $f(x)$,并把从 $x = a$ 到 $x = b$ 之间、曲线与 x 轴围成的区域涂上阴影,那么积分给出的就是这个区域的有符号面积。 积分通过把一根根细长矩形加起来,算出曲线下方的面积 为什么要说「有符号」?

积分

积分把一个个小区间上的量累积起来,把局部的变化率还原成总量。本文件涵盖定积分与不定积分、微积分基本定理、积分技巧,以及在机器学习中如何应用于概率密度与期望值。

  • 微分告诉我们某一点处的变化率。积分则反其道而行:它把无数个微小的片段累积起来,得到一个总量。

  • 如果导数回答的是「有多快?」,那么积分回答的就是「有多少?」

  • 理解积分最自然的方式,是把它看作曲线下方的面积(area under a curve)。如果你画出函数 f(x),并把从 x = ax = b 之间、曲线与 x 轴围成的区域涂上阴影,那么积分给出的就是这个区域的有符号面积。

积分通过把一根根细长矩形加起来,算出曲线下方的面积

  • 为什么要说「有符号」?位于 x 轴上方的区域贡献正面积,位于 x 轴下方的区域贡献负面积。这在物理上很合理:如果 f(x) 表示速度,那么积分给出的是净位移(向前减向后),而不是总路程。

  • 为了算出这块面积,可以想象把区域切成 n 根细长的竖直矩形,每根宽 \Delta x。每根矩形的高度取这一小段里某一点的函数值。把它们全加起来:

\text{Area} \approx \sum_{i=1}^{n} f(x_i^\ast) \, \Delta x
  • 当我们把矩形做得越来越细(n \to \infty\Delta x \to 0),这个和就变得精确了。这个取极限的过程就定义了定积分(definite integral)
\int_a^b f(x)\, dx = \lim_{n \to \infty} \sum_{i=1}^{n} f(x_i^\ast) \, \Delta x
  • \int 这个符号是一个拉长的「S」,代表「sum(求和)」。而 dx 则提醒我们:我们正在沿 x 轴把无穷薄的切片加起来。

  • 不定积分(indefinite integral)(也叫原函数(antiderivative))是一个导数等于 f(x) 的函数 F(x)。我们写成:

\int f(x)\, dx = F(x) + C
  • 这里的 + C积分常数(constant of integration)。由于任何常数的导数都是零,所以存在无穷多个原函数,它们彼此之间只相差一个常数。例如,\int 2x\, dx = x^2 + C,因为 x^2 + 7x^2 - 3 的导数都还是 2x

  • **微积分基本定理(Fundamental Theorem of Calculus)**是连接微分与积分的那座桥。它有两部分:

  • 第一部分:如果 F(x)f(x) 的一个原函数,那么定积分就等于 F 在两端点处的差:

\int_a^b f(x)\, dx = F(b) - F(a)
  • 这非常实用。我们不必再去算一个和的极限(那很难),而是找一个原函数,然后在两个点上求值(通常很容易)。

  • 第二部分:如果我们定义 F(x) = \int_a^x f(t)\, dt,那么 F'(x) = f(x)。微分和积分互为逆运算,它们彼此抵消。

  • 例如,要计算 \int_1^3 x^2\, dxx^2 的原函数是 \frac{x^3}{3}。所以 \int_1^3 x^2\, dx = \frac{27}{3} - \frac{1}{3} = \frac{26}{3} \approx 8.67

  • 就像微分有法则一样,积分也有与之对应、方向相反的法则:

函数 积分 条件
x^n \frac{x^{n+1}}{n+1} + C n \neq -1
\frac{1}{x} \ln\|x\| + C
e^x e^x + C
a^x \frac{a^x}{\ln a} + C
\sin x -\cos x + C
\cos x \sin x + C
k(常数) kx + C
  • 和差法则依然成立:\int [f(x) \pm g(x)]\, dx = \int f(x)\, dx \pm \int g(x)\, dx。常数可以提到外面:\int k\, f(x)\, dx = k \int f(x)\, dx

  • 当一个函数过于复杂、难以直接积分时,我们有一些技巧来化简它。

  • **换元法(u-substitution)**是链式法则的逆运算。如果你发现被积函数里有复合函数 f(g(x)) 乘以 g'(x),那就令 u = g(x),于是 du = g'(x)\, dx,积分就被化简了。

  • 例如:\int 2x \cos(x^2)\, dx。令 u = x^2,则 du = 2x\, dx。积分变成 \int \cos(u)\, du = \sin(u) + C = \sin(x^2) + C

  • **分部积分(integration by parts)**是乘积法则的逆运算。如果被积函数是两个函数的乘积:

\int u\, dv = uv - \int v\, du
  • 要巧妙地选择 udv,使得剩下的那个积分 \int v\, du 比原来的更简单。一个常用的选择 u 的口诀是 LIATE:对数(Logarithmic)、反三角(Inverse trig)、代数(Algebraic)、三角(Trigonometric)、指数(Exponential)——优先靠前的类别当选 u

  • 例如:\int x\, e^x\, dx。令 u = x(代数),dv = e^x\, dx。那么 du = dxv = e^x。于是:\int x\, e^x\, dx = x\, e^x - \int e^x\, dx = x\, e^x - e^x + C = e^x(x - 1) + C

  • 在机器学习中,积分出现在概率论里(通过对密度函数积分来计算概率)、出现在期望值里(对连续分布求加权平均),也出现在计算 ROC 曲线下面积时。虽然实践中我们很少手动积分,但理解积分的含义,有助于正确解读这些量。

编程练习(使用 CoLab 或 notebook)

  1. 用不断增加矩形数量的黎曼和(Riemann sum)来数值近似 \int_0^1 x^2\, dx,并与精确答案 \frac{1}{3} 对比。
import jax.numpy as jnp for n in [10, 100, 1000, 10000]: x = jnp.linspace(0, 1, n, endpoint=False) dx = 1.0 / n area = jnp.sum(x**2 * dx) print(f"n={n:5d} approx: {area:.6f} exact: {1/3:.6f}")
  1. 数值验证微积分基本定理。定义 F(x) = \int_0^x t^2\, dt = \frac{x^3}{3},检验它的导数(用 jax.grad 计算)是否等于 x^2
import jax import jax.numpy as jnp F = lambda x: x**3 / 3 dF = jax.grad(F) for x in [0.5, 1.0, 2.0, 3.0]: print(f"x={x:.1f} F'(x)={dF(x):.4f} x^2={x**2:.4f}")
  1. 可视化 f(x) = \sin(x)0\pi 的曲线下面积。用 plt.fill_between 把面积涂上阴影,并用黎曼和数值计算它。
import jax.numpy as jnp import matplotlib.pyplot as plt x = jnp.linspace(0, jnp.pi, 500) y = jnp.sin(x) plt.plot(x, y, color="purple", linewidth=2) plt.fill_between(x, y, alpha=0.2, color="purple") plt.title(f"Area = {jnp.sum(jnp.sin(x) * (jnp.pi / 500)):.4f} (exact: 2.0)") plt.show()

发布者: 作者: HenryNdubuaku 转发
评论区 (0)
U