街角蛋糕房的老积师傅收到一单奇怪的生意:客人带来一块“曲线蛋糕”,底面平整,顶面却起伏得像被风吹皱的沙丘,轮廓恰好是一条数学曲线。客人的要求很朴素——算准这块蛋糕竖直切面下的准确面积,好去定制包装盒。老积围着蛋糕转了三圈,尺子、绳子、卡尺全用上,依然找不到一块不规则形状的精确面积公式。他叹了口气:这块蛋糕,就是数学里的“定积分”;而这个让他头疼的丈量难题,正是数值积分要解决的问题。 数值积分的思想其实很接地气:既然整块蛋糕的形状没法一口报出精确值,那就把它切成很多薄片,每片用规则的图形近似,再把所有“近似片”的面积加起来。切得越细致、每片近似得越聪明,总数就越接近真实答案。本文要讲的梯形法、辛普森法、高斯求积、蒙特卡洛积分与自适应策略,本质上就是五种风格迥异的“切蛋糕刀法”——有的刀稳,有的刀准,有的刀狠,有的刀不怕切千层蛋糕。

岗位关联

数值积分是 AI 从业者的“计算备胎”:当解析公式求不出、模型只有黑盒调用或离散采样时,它让你依然能算出期望、面积与误差,是贝叶斯推断、物理仿真与量化分析的地基工具。

目录
  1. 可视化演示
  2. 积分基础概述
  3. 梯形法原理
  4. 辛普森法
  5. 高斯求积
  6. 蒙特卡洛积分
  7. 自适应积分
  8. 方法选型实践
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

本节配有交互动效(进入视口后自动加载,约 3KB)。

积分基础概述

老积是街角蛋糕房的老师傅,这天接到一单特别的生意:客人带来一块“曲线蛋糕”,底面平整,顶面却起伏得像被风吹皱的沙丘,轮廓恰好是一条函数曲线。客人要求算准这块蛋糕竖直切面下的准确面积,好去定制包装盒。老积换了好几把尺子都量不出不规则形状的面积,他忽然意识到:这块蛋糕就是数学里的定积分,而这个丈量难题,正是数值积分要解决的问题。

定积分 $\int_a^b f(x)\,dx$ 想表达的就是“把曲线下的面积精确算出来”。解析路线是先找到原函数 $F(x)$,再用牛顿-莱布尼茨公式 $F(b)-F(a)$ 一次算完。可惜现实很骨感:许多函数的原函数根本没有初等表达式(比如 $e^{-x^2}$,它连“反导数的名字”都不存在);另一些场景手里压根没有公式,只有传感器采回来的散点数据。此时解析积分这条路就彻底堵死了。

数值积分的思路是绕开“找原函数”,直接回答“面积大约是多少”。它把各种方法统一成一个框架:在区间上选取一些采样点 $x_i$,量出它们的高度 $f(x_i)$,再按不同的“配方”乘上权重 $w_i$ 加总。选哪些点、给什么权重,正是梯形法、辛普森法、高斯求积这些“刀法”彼此区别的地方。

老积豁然开朗:蛋糕虽然切不出“整个的真身”,但只要选好测量点、配好权重,几十个读数就能把面积估得八九不离十。接下来要研究的,就是每一门刀法的手感与脾气。

∫abf(x) dx≈∑i=0nwi f(xi)\displaystyle \int_a^b f(x)\,dx \approx \sum_{i=0}^{n} w_i\, f(x_i)
从“无限细的连续切片”退一步,变成“有限个点的加权求和”——这就是数值积分一切方法的总纲。
  1. 积分区间$a$ 和 $b$ 圈定了蛋糕的左右边界,这是积分的定义域。
    a,  b\displaystyle a,\; b
  2. 被积函数$f(x_i)$ 是各采样点处蛋糕的高度,也是数值积分唯一的“输入信号”。
    f(xi)\displaystyle f(x_i)
  3. 权重分配$w_i$ 是每种方法给不同采样点发的“信任票”,权重不同,配方就不同。
    wi\displaystyle w_i
  4. 离散求和把连续无限的切片压缩成有限项求和,这就是“数值”二字的由来。
    ∑i=0n\displaystyle \sum_{i=0}^{n}

梯形法原理

老积先抄起最朴素的一把刀——直刀。他把蛋糕竖着切成 $n$ 个长条,每一条的顶边不再纠缠起伏的曲线,而是用直线把相邻两个测量点连起来。于是每一片都变成一个标准的梯形,“面积 ≈ 底 × (上底 + 下底) / 2”。这就是梯形法最直白的直觉:用直线代替弧线,用规则图形代替不规则图形。

单个梯形只对整条曲线拉一条直线,误差太大,工程中真正用的是“复化梯形法”:把区间 $[a,b]$ 均分成 $n$ 份,每一小份单独用一个梯形近似,再把所有梯形面积累加。边界节点 $x_0$ 和 $x_n$ 各贡献半个权重,内部节点贡献一个权重,公式呈现出一种整齐的“半、一、一、……、半”结构。

梯形法的误差也有闭式表达:$E_T = -\frac{b-a}{12}h^2 f''(\xi)$,其中 $\xi$ 是区间内某一点。这说明误差与步长的平方成正比——把每片切薄一半,误差大约缩为原来的四分之一,这种“回报率”由二阶导数 $f''$ 决定,曲线弯得越厉害,单靠加密就越费刀。

直刀的好处是绝不会“切坏”蛋糕:对任何连续函数,只要刀数足够,结果都保证收敛到真实值。代价是刀数要够多,曲线越“野”,需要的梯形数量就越庞大。

Tn=h[12f(x0)+∑i=1n−1f(xi)+12f(xn)],h=b−an\displaystyle T_n = h\left[\frac{1}{2}f(x_0) + \sum_{i=1}^{n-1} f(x_i) + \frac{1}{2}f(x_n)\right], \quad h=\frac{b-a}{n}
每个内部节点都用一次、端点用半次,最后整体乘以步长 $h$,就还原成了面积。
  1. 步长划分把区间均分 $n$ 份,每份宽度是 $h$,它决定了切片的厚薄。
    h=b−an\displaystyle h = \frac{b-a}{n}
  2. 端点减半首尾节点只属于一个梯形,所以只发“半张票”。
    12f(x0),  12f(xn)\displaystyle \frac{1}{2}f(x_0),\; \frac{1}{2}f(x_n)
  3. 内部全一中间每个节点同时被左右两个梯形共用,合起来恰好贡献一次。
    ∑i=1n−1f(xi)\displaystyle \sum_{i=1}^{n-1} f(x_i)
  4. 整体缩放累加结果乘以步长 $h$,把“个数”还原成“面积”。

辛普森法

老积发现直刀对弧度大的地方实在浪费刀工:明明曲线在拐弯,直刀却一刀切平。他换了一把“弧线刀”——每两个小梯形合成一组,用一条抛物线(二次曲线)穿过相邻的三个测量点,刀口沿着抛物线走。这样每一片的顶面本身就带着“弧度”,能顺着蛋糕的弯曲方向贴合轮廓。

这就是辛普森法。因为一条抛物线需要三个点来确定,所以它一次覆盖两个小区间,要求区间数 $n$ 必须是偶数。相比梯形法“两点拉一直线”,辛普森法“三点拉一弧线”捕捉到了更多的弯曲信息,同样的刀数,切出的片明显更贴近真实轮廓。

辛普森法的误差为 $E_S = -\frac{b-a}{180}h^4 f^{(4)}(\xi)$,误差阶数从 $h^2$ 一举跃升到 $h^4$——步长减半,误差缩为原来的十六分之一。代价是公式推导假设函数四阶可导且导数有界,一旦蛋糕顶面出现棱角(函数不光滑),弧线刀反而容易“削过界”,这时直刀反而更稳。

弧线刀在光滑蛋糕上大显神威:同样的刀数,精度提升了整整两个数量级。老积由此领悟:更好的刀法不是更用力,而是更懂曲线的“脾气”。

Sn=h3[f(x0)+f(xn)+4∑i=1n/2f(x2i−1)+2∑i=1n/2−1f(x2i)]\displaystyle S_n = \frac{h}{3}\left[f(x_0) + f(x_n) + 4\sum_{i=1}^{n/2} f(x_{2i-1}) + 2\sum_{i=1}^{n/2-1} f(x_{2i})\right]
奇数下标节点权重为 4,偶数下标节点权重为 2,端点权重为 1,系数整体为 $h/3$——这是“抛物线拟合”推导出的配方。
  1. 偶数份要求抛物线需要三点确定,因此区间必须切成偶数份,否则最后会剩一个“孤儿梯形”。
    n 为偶数\displaystyle n\ \text{为偶数}
  2. 奇数位权重 4$x_1, x_3, x_5, \dots$ 位于每个抛物线段的中点附近,贡献最大。
    4∑i=1n/2f(x2i−1)\displaystyle 4\sum_{i=1}^{n/2} f(x_{2i-1})
  3. 偶数位权重 2$x_2, x_4, \dots$ 是两个抛物线段共用的节点,票数折半。
    2∑i=1n/2−1f(x2i)\displaystyle 2\sum_{i=1}^{n/2-1} f(x_{2i})
  4. 系数缩放整体乘以 $h/3$,把加权和还原成面积量纲。

高斯求积

店里来了位挑剔的客人:只许舀两勺,就要估出整块蛋糕的奶油量。老积犯了难——两勺怎么可能比得上几十刀?这时高斯爷爷递来一把“魔法取样勺”:关键不在舀多少勺,而在勺子落在哪两个位置。位置选对了,一勺顶十勺。

此前的梯形法和辛普森法都属于“牛顿-柯特斯”家族:节点先等距排好,再来定权重。高斯求积反其道而行之——节点等距并非天经地义,干脆把采样点位置和权重统统当作可优化变量,让它们在“精确积分多项式”的意义上达到最优。结果是:$n$ 个节点的高斯求积能精确积分最高 $2n-1$ 次的多项式,这个“精确度上限”称为代数精度。对比之下,梯形法两个节点只有 1 次代数精度,辛普森法三个节点只有 3 次;而两点高斯求积的代数精度直接是 3 次。

魔法勺用两勺换来了梯形几十刀才能达到的精度,堪称“刀刀到肉”。但老积也发现它的短板:节点位置不规整,想从两勺升级到三勺,之前舀过的位置全部作废,旧读数无法复用,这在逐级加密的场景里是个不小的麻烦。

∫−11f(t) dt≈f(−13)+f(13)\displaystyle \int_{-1}^{1} f(t)\,dt \approx f\left(-\frac{1}{\sqrt{3}}\right) + f\left(\frac{1}{\sqrt{3}}\right)
在标准区间 $[-1,1]$ 上,两点高斯-勒让德公式的节点是 $\pm 1/\sqrt{3}$,权重都是 1,两个读数就精确命中所有不超过三次的多项式。
  1. 标准区间高斯-勒让德公式定义在 $[-1,1]$ 上,其他区间需先做线性映射。
    t∈[−1,1]\displaystyle t \in [-1,1]
  2. 魔法节点$t = \pm 1/\sqrt{3}$ 是勒让德多项式 $P_2(t) = \frac{1}{2}(3t^2-1)$ 的根,这是“最优位置”的来源。
    t1=−13,  t2=13\displaystyle t_1 = -\frac{1}{\sqrt{3}},\; t_2 = \frac{1}{\sqrt{3}}
  3. 等权相加两点情况下两个权重恰好都等于 1,函数值直接相加。
    w1=w2=1\displaystyle w_1 = w_2 = 1
  4. 区间映射对任意区间 $[a,b]$,令 $x = \frac{a+b}{2} + \frac{b-a}{2}t$,再整体乘以 $\frac{b-a}{2}$ 即可。

蒙特卡洛积分

有一天,客人送来一块“千层蛋糕”——数学上叫高维积分,维度一高,所有“切条”的刀法都抓了瞎:哪怕每个方向只切 10 刀,10 维就是 $10^{10}$ 块,把全城的刀都用上也切不完。老积索性闭上眼,抓一把芝麻朝蛋糕撒去,数一数落在蛋糕轮廓里的芝麻占多少比例,再乘以整盘面积——这就是蒙特卡洛积分的“碰运气”。

数学上,积分可以重写为一个期望:在区间 $[a,b]$ 上均匀随机采样 $N$ 个点,把函数值取平均,再乘以区间长度 $(b-a)$,就得到积分的估计。直觉上,采样点越多,芝麻撒得越密,“落在蛋糕内的比例”就越接近真实面积占比。

蒙特卡洛的误差以 $\sigma/\sqrt{N}$ 的速度衰减,其中 $\sigma$ 是 $f(X)$ 的标准差。这个收敛速度不算快——想让误差缩小 10 倍,采样量要增加 100 倍。但它的致命优势是:收敛速度与维度完全无关。维度升高时,确定性网格法的点数按指数爆炸,而撒芝麻的刀法依然平稳如初。

撒芝麻看似碰运气,却是高维世界里唯一还“撑得住”的丈量方式。现代贝叶斯推断、期权定价、光照渲染,背后都有这把“闭眼刀法”的身影。

∫abf(x) dx≈b−aN∑i=1Nf(xi),xi∼U(a,b)\displaystyle \int_a^b f(x)\,dx \approx \frac{b-a}{N}\sum_{i=1}^{N} f(x_i), \quad x_i \sim U(a,b)
均匀采样的均值乘以区间长度,就得到了曲线下面积的估计——这是“用随机性换可行性”的典型代表。
  1. 随机采样每个 $x_i$ 从 $[a,b]$ 上的均匀分布中独立抽取,对应一颗随机落下的芝麻。
    xi∼U(a,b)\displaystyle x_i \sim U(a,b)
  2. 均值估计把所有函数值加起来除以 $N$,得到 $f(X)$ 期望的无偏估计。
    1N∑i=1Nf(xi)\displaystyle \frac{1}{N}\sum_{i=1}^{N} f(x_i)
  3. 区间缩放期望再乘以区间长度 $(b-a)$,把“平均高度”还原成“面积”。
    b−a\displaystyle b-a

自适应积分

老积端详蛋糕久了,琢磨出一个道理:有的地方花纹繁复、起伏剧烈,有的地方一片坦途。均匀下刀其实是种浪费——平坦处切厚片就足够,起伏处才需要薄切。聪明的切法应该是“看菜下刀”,把有限的刀工花在最值得花的地方。

自适应积分把这份手艺人经验算法化了。它的流程是:先用辛普森法对整个区间 $[a,b]$ 算一个粗估值,再分别对左半区间 $[a,c]$ 和右半区间 $[c,b]$ 算两个细估值。如果“粗值”与“两个细值之和”差距很大,说明这个区间里曲线变化剧烈,当前切片太厚,需要递归细分;反之则接受当前结果,不再下刀。

自适应策略是“好钢用在刀刃上”的数学版本:同样的总刀数,它比均匀切法达到的精度高得多。老积把这套刀法练成了招牌手艺——先粗看全局,再对细节较真,既省刀工又保精度。

E≈115∣S(a,b)−S(a,a+b2)−S(a+b2,b)∣\displaystyle E \approx \frac{1}{15}\left|S(a,b) - S\left(a,\frac{a+b}{2}\right) - S\left(\frac{a+b}{2},b\right)\right|
粗切一次与细切两次的差值,经过 $1/15$ 缩放,就得到了该区间的误差估计——这是自适应细分的“决策信号”。
  1. 粗切估值对整个区间用一次辛普森法算出粗略面积。
    S(a,b)\displaystyle S(a,b)
  2. 细切估值在中点 $c = \frac{a+b}{2}$ 处一分为二,分别求辛普森值再相加。
    S(a,c)+S(c,b)\displaystyle S(a,c) + S(c,b)
  3. 差值定误差两者之差反映了“切粗了”造成的偏差,乘以 $1/15$ 修正为误差估计。
    115∣⋅∣\displaystyle \frac{1}{15}\left|\cdot\right|
  4. 递归终止若估计误差小于容差 $\varepsilon$ 或递归深度达到上限,则停止细分并累加结果。

方法选型实践

蛋糕房的生意越做越大,老积把这些年用过的刀法整理成一本《接单手册》。接单前先问四件事:蛋糕多大(维度 $d$)、表面多野(光滑性)、客人多挑(精度要求 $\varepsilon$)、预算多少刀(计算成本)。四问一答,刀法自然浮现——低维平滑用高斯求积,中维光滑用复合辛普森,高维复杂直接上蒙特卡洛,手里只有离散点就用梯形或插值型求积。

这背后的数学依据,是两类方法在维度面前的“体力差异”。确定性网格法的误差随切分加密而下降,但维度升高会稀释这份收益;蒙特卡洛则对维度无动于衷。二者的力量对比可以用一个简洁的公式概括:

工程落地的经验法则:一维问题无脑用高斯求积或自适应辛普森;二维到四维用复合辛普森一般够用;五维以上直接蒙特卡洛;若函数本身不光滑或只有黑盒调用,低阶方法反而更抗造,必要时先粗跑对比再定方案。

老积把《接单手册》挂上墙,新徒弟进门先背一条:没有万能的刀,只有合适的刀法——选对方法,比多切一百刀更重要。

EMC∝σN,Egrid∝h k∼N−k/d\displaystyle E_{\text{MC}} \propto \frac{\sigma}{\sqrt{N}}, \qquad E_{\text{grid}} \propto h^{\,k} \sim N^{-k/d}
蒙特卡洛的误差只随采样数 $N$ 的平方根下降、与维度无关;网格法的误差则随维度 $d$ 升高而急剧恶化,维度一旦超过阈值,蒙特卡洛就全面胜出。
  1. 蒙特卡洛误差标准差 $\sigma$ 除以 $\sqrt{N}$,与维度无关,是它的“免死金牌”。
    EMC∝σN\displaystyle E_{\text{MC}} \propto \frac{\sigma}{\sqrt{N}}
  2. 网格误差$k$ 是方法的精度阶数(梯形 $k=2$、辛普森 $k=4$),维度 $d$ 越高,$N^{-k/d}$ 衰减越慢。
    Egrid∝N−k/d\displaystyle E_{\text{grid}} \propto N^{-k/d}
  3. 对比决策当 $d > 2k$ 时,网格法加密的收益被维度摊薄,蒙特卡洛反超。

AI 应用场景

贝叶斯后验期望计算

阶段:模型推理与不确定性量化

解决的问题:贝叶斯神经网络的预测分布往往没有解析形式,计算后验均值就是在对复杂的概率密度函数求积分。传统解析方法找不到原函数,只能靠数值积分完成“期望”这一步计算。

具体案例:医疗影像 AI 对病变区域输出的是概率分布而非单一判断,工程师用哈密顿蒙特卡洛采样出后验样本,再借蒙特卡洛积分估计后验均值与方差,给出带置信区间的诊断结论——这正是“撒芝麻”刀法在高维不确定性空间的实战。

物理仿真中的运动积分

阶段:数据生成与物理驱动AI

解决的问题:机器人仿真中传感器返回的是离散的速度采样,要从速度-时间曲线积分出位移,或从加速度积分出速度。真实轨迹的解析式不存在,只能用数值积分逐帧逼近。

具体案例:自动驾驶模拟器对车辆动力学微分方程做数值积分,采用自适应辛普森法——急转弯、急刹车处曲线变化剧烈,自动加密步长;直线巡航处平稳,自动放宽步长,在保证轨迹精度的同时把算力花在刀刃上。

金融衍生品定价与强化学习回报估计

阶段:策略评估与风险计算

解决的问题:期权价格本质上是风险中性概率测度下的期望积分,维度常达几十维;强化学习中价值函数也是回报的期望积分。解析公式只存在于最简单的 Black-Scholes 模型,真实场景必须依靠数值积分。

具体案例:量化团队用蒙特卡洛模拟上万条股价路径,计算期权期望收益并折现;再配合对偶变量等方差缩减技术,把估计波动压低。强化学习智能体则用批量轨迹回报的平均值来估计状态价值——每一步都是“随机撒点求期望”。

Python 演示

python64 行
# -*- coding: utf-8 -*-# 数值积分方法对比:梯形法 / 辛普森法 / 高斯求积 / 蒙特卡洛积分import mathimport random  def f(x):    # 测试函数:在 [0, pi] 上精确积分为 2    return math.sin(x) + 0.5 * math.cos(2 * x)  def trapezoidal(f, a, b, n):    # 复化梯形法:端点半权重,内部全一    h = (b - a) / n    s = 0.5 * (f(a) + f(b))    for i in range(1, n):        s += f(a + i * h)    return s * h  def simpson(f, a, b, n):    # 复化辛普森法:奇数位权重4,偶数位权重2    if n % 2 == 1:        n += 1    h = (b - a) / n    s = f(a) + f(b)    for i in range(1, n):        s += 4 * f(a + i * h) if i % 2 == 1 else 2 * f(a + i * h)    return s * h / 3  def gauss_2point(f, a, b):    # 两点高斯-勒让德求积    mid = (a + b) / 2    half = (b - a) / 2    root = 1.0 / math.sqrt(3.0)    return half * (f(mid - half * root) + f(mid + half * root))  def monte_carlo(f, a, b, n):    # 蒙特卡洛积分:随机采样均值乘以区间长度    total = 0.0    for _ in range(n):        total += f(random.uniform(a, b))    return (b - a) * total / n  def main():    a, b = 0.0, math.pi    exact = 2.0    print("exact = %.6f" % exact)    for n in (4, 8, 16, 32):        et = abs(trapezoidal(f, a, b, n) - exact)        es = abs(simpson(f, a, b, n) - exact)        print("n=%3d  梯形法误差=%.6f  辛普森法误差=%.6f" % (n, et, es))    eg = abs(gauss_2point(f, a, b) - exact)    print("高斯两点求积误差=%.6f" % eg)    for n in (100, 1000, 10000):        em = abs(monte_carlo(f, a, b, n) - exact)        print("蒙特卡洛 n=%6d 误差=%.6f" % (n, em))  if __name__ == "__main__":    main()
目的:用自行实现的四种数值积分方法计算 $\int_0^\pi [\sin x + 0.5\cos 2x]\,dx$(精确值为 2),对比它们在相同计算量下的误差表现。
  1. def trapezoidal(f, a, b, n):定义“直刀切法”:把区间均分 n 份,逐份用梯形近似。
  2. s = 0.5 * (f(a) + f(b))端点按半权重初始化累加器,这是梯形公式的“端点减半”配方。
  3. s += f(a + i * h)内部每个节点只被相邻两个梯形各用一半,合计贡献一次。
  4. return s * h把所有加权高度累加后乘以步长 h,从“平均高度”还原成“面积”。
  5. if n % 2 == 1: n += 1辛普森法要求偶数个区间,奇数时自动补一份。
  6. s += 4 * f(a + i * h) if i % 2 == 1 else 2 * f(a + i * h)奇数位节点权重 4、偶数位权重 2,这是抛物线的魔法配方。
  7. root = 1.0 / math.sqrt(3.0)两点高斯-勒让德的魔法节点位置 $\pm 1/\sqrt{3}$。
  8. return half * (f(mid - half * root) + f(mid + half * root))两勺“魔法取样”加权求和,两点权重恰好都是 1。
  9. total += f(random.uniform(a, b))随机撒点:每个点从区间均匀分布中抽取并累加函数值。
  10. return (b - a) * total / n均值乘以区间长度,完成“撒芝麻比例”到面积的换算。

常见误区

误区我以为反正梯形法就是近似,把它切成 1000 份、10000 份,误差肯定趋近于零;只要多切几刀,任何函数都能算得很准。

正解梯形法的误差是 $O(h^2)$,每加密一倍,误差大约缩为原来的四分之一,这个“回报率”由函数的二阶导数决定。如果函数本身剧烈振荡或存在间断点,无脑加密不仅收敛慢,还会因浮点舍入误差的累积反而变差。正确做法是先判断函数光滑性,再决定是否用更高阶的方法,而不是一味加刀。

为何常见:初学者只看到“切得越细越接近”的直观直觉,忽略了误差阶数决定了加密的性价比,也忽略了数值稳定性问题。

误区辛普森法用了抛物线,误差阶数从 $h^2$ 提到 $h^4$,精度更高,那不管什么函数我都用辛普森法就最稳妥。

正解高阶方法成立的前提是函数足够光滑,辛普森法的误差公式依赖四阶导数有界。碰到折线、阶跃这类带尖角的函数,四阶导数不存在甚至趋向无穷,误差估计彻底失效,抛物线反而可能“削过界”(Runge 现象),结果比梯形法更差。工程经验是:平滑函数优先辛普森,带棱角的函数老老实实用梯形或更低阶的方法。

为何常见:只盯着误差公式里的阶数大小,忽略了公式推导时对光滑性的隐含假设——高阶方法不是免费的午餐。

误区高斯求积精度最高,那我直接取 100 个高斯节点,肯定比 100 个梯形点准得多,所以每次节点都往大了取。

正解高斯-勒让德的节点是特定勒让德多项式的根,节点位置不会包含旧节点——从 2 点升级到 3 点,所有采样位置都要重算,之前的函数值全部作废,无法逐级复用。加上被积函数不平滑时,高次插值同样不稳定。实际工程中常用“分段低阶 + 高斯局部增强”的组合,而非一味增加节点数。

为何常见:把“代数精度”误解为“节点越多一定越好”,忽略了节点可复用性、数值稳定性与实现成本这些工程现实。

误区随机撒点每次跑出来的结果都不一样,感觉很不专业。定积分这种严肃的数学问题,还是应该用梯形法、辛普森法这种确定性的方法。

正解蒙特卡洛的误差 $\sigma/\sqrt{N}$ 与维度无关,这是它不可替代的核心价值。在 10 维以上的积分中,确定性网格法的点数随维度指数爆炸,蒙特卡洛几乎是唯一现实的选择。工程中还可以用 Sobol 序列等低差异序列(拟蒙特卡洛)把收敛速度提升到接近 $O(1/N)$,实现“伪随机反而更快”。结果有波动不代表不专业,方差本身也是可度量的信息。

为何常见:人们习惯用低维世界的直觉评判高维问题,忽略了“维度灾难”会让确定性方法先于蒙特卡洛崩溃。

误区自适应积分会自动细分区间,那我设一个很小的容差,它总能给我一个足够精确的结果吧?

正解自适应策略的误差估计依赖于“粗切一次 vs 细切两次”的差值,这只是对真实误差的近似。碰上剧烈振荡或接近间断点的函数,两个估值可能都偏离真实值,差值很小但误差很大——误差估计被“骗”过去了。因此工程实现必须设置最大递归深度,并对异常函数做额外校验,不能盲目相信容差参数。

为何常见:把“自动”误解为“万能”,忽略了误差估计本身也是估计,同样可能失效。

面试题

Q1. 数值积分方法的核心思想是什么?

单选题 · easy

  • A.用离散点的加权求和逼近积分值← 正确答案
  • B.先求导再反向推导得到原函数
  • C.把区间无限细分从而求出精确值
  • D.用解析方法直接计算闭式表达式

答案:A。数值积分用一个统一框架——取有限个采样点、乘上权重、求和——来逼近定积分,这正是“切蛋糕”里“有限刀工量无限曲线”的思想。B 是微分学的反向操作,C 是极限思想而非近似计算,D 是解析积分,都不属于数值积分的范畴。

Q2. 梯形法是用什么图形来近似曲线下方的面积?

单选题 · easy

  • A.用若干矩形拼接来逼近曲线面积
  • B.用若干梯形拼接来逼近曲线面积← 正确答案
  • C.用若干三角形拼接来逼近曲线面积
  • D.用若干扇形拼接来逼近曲线面积

答案:B。梯形法用直线连接相邻两个采样点,每个小区间上的图形是“上边倾斜”的四边形,即梯形,面积公式是“底 ×(上底+下底)/2”。矩形连接的是水平线,三角形和扇形都不是等距分割后自然出现的形状。

Q3. 辛普森法与梯形法最主要的区别是什么?

单选题 · easy

  • A.辛普森法用折线连接相邻两个采样点
  • B.辛普森法用抛物线连接相邻三个采样点← 正确答案
  • C.辛普森法需要把区间划分成奇数份
  • D.辛普森法只用到区间端点的函数值

答案:B。辛普森法让一条抛物线穿过相邻三个采样点,因此一次覆盖两个小区间,要求区间数为偶数而不是奇数,故 C 错误。A 是梯形法的做法,D 是两个节点的梯形/高斯公式特征,都与辛普森法不符。

Q4. 复化梯形法的截断误差与步长 h 的关系是?

单选题 · mid

  • A.误差与步长的一次方成正比关系
  • B.误差与步长的平方成正比关系← 正确答案
  • C.误差与步长的三次方成正比关系
  • D.误差与步长的四次方成正比关系

答案:B。复化梯形法误差公式为 $E_T = -\frac{b-a}{12}h^2 f''(\xi)$,与 $h^2$ 成正比。这意味着步长减半误差约缩为四分之一。辛普森法才是与 $h^4$ 成正比,C、D 都是常见的混淆项。

Q5. 高斯求积公式与等距节点公式的本质区别在于?

单选题 · mid

  • A.高斯公式要求节点必须等距均匀分布
  • B.高斯公式把节点位置也作为优化变量← 正确答案
  • C.高斯公式的权重全部取常数且等于一
  • D.高斯公式只能用于无限区间的积分

答案:B。牛顿-柯特斯公式(梯形、辛普森)先固定等距节点再定权重,高斯求积则把节点和权重都当作未知量优化,从而把代数精度推到 $2n-1$。两点高斯权重恰好为 1 只是特例,C 以偏概全;高斯公式也可用于有限区间,D 错误。

Q6. 蒙特卡洛积分的估计误差随采样数 N 如何变化?

单选题 · mid

  • A.与 N 的一次方成反比下降
  • B.与 N 的平方根成反比下降← 正确答案
  • C.与 N 的平方成反比下降
  • D.与 N 的对数成反比下降

答案:B。中心极限定理给出蒙特卡洛误差 $\propto \sigma/\sqrt{N}$,即与 $N$ 的平方根成反比。想让误差缩小 10 倍需要采样量扩大 100 倍,这正是它收敛慢的根源,也是它与维度无关这一优势的“代价”。

Q7. 两点高斯-勒让德求积公式的节点位置是?

单选题 · hard

  • A.负三分之根号三与正三分之根号三← 正确答案
  • B.区间两个端点与区间中点的位置
  • C.负二分之一与正二分之一的位置处
  • D.四分之一位置与四分之三位置处

答案:A。两点高斯-勒让德公式在 $[-1,1]$ 上的节点是 $P_2(t)=\frac{1}{2}(3t^2-1)$ 的根,即 $\pm 1/\sqrt{3}$。B 是辛普森法的三点,C、D 是随手编排的等距位置,都不具备“代数精度 3”的最优性。

Q8. 以下哪些情况适合采用数值积分方法?

多选题 · easy

  • A.被积函数没有解析形式的原函数← 正确答案
  • B.手中只有离散采样数据而没有表达式← 正确答案
  • C.被积函数是简单初等函数的组合形式
  • D.被积函数只有黑盒调用且没有表达式← 正确答案

答案:ABD。没有原函数、只有离散点、只有黑盒调用,这三种情况都无法走解析积分路线,正是数值积分的用武之地。C 中“简单初等函数的组合”通常可以直接查积分表或算出原函数,优先用解析方法而非数值近似。

Q9. 关于蒙特卡洛积分,下列说法正确的有哪些?

多选题 · mid

  • A.收敛速度与积分维数无关是蒙特卡洛特性← 正确答案
  • B.高维积分中蒙特卡洛比辛普森更具优势← 正确答案
  • C.蒙特卡洛必须使用完全随机的采样点
  • D.增加采样数会降低蒙特卡洛估计的方差← 正确答案

答案:ABD。蒙特卡洛误差 $\sigma/\sqrt{N}$ 与维度无关,维度升高时确定性网格法因维度灾难失效,因此 A、B 正确;增加采样数确实按 $\sqrt{N}$ 速度压低方差,D 正确。C 错误——工程中常用 Sobol 等低差异序列(拟蒙特卡洛)替代纯随机采样,收敛更快。

Q10. 自适应积分策略通常包含以下哪些要素?

多选题 · hard

  • A.先对整体区间进行一次粗略的估值← 正确答案
  • B.用子区间的结果组合来估计局部误差← 正确答案
  • C.对误差超标的子区间不断递归细分← 正确答案
  • D.所有子区间都必须保持相同的长度

答案:ABC。自适应积分的标准流程是:先粗估整体区间,再对左右子区间分别估值,用两者差值的 $1/15$ 估计误差,对误差超标的区间递归细分直到达标,因此 A、B、C 都是核心要素。D 恰恰是自适应要打破的假设——它追求“平坦处粗切、起伏处细切”,子区间长度本就该不同。