参数设置
被积函数 f(x)
「精确值」是用足够精细的复合辛普森法则得到的参考值。
被积函数与采样点
青色=被积函数 f(x) / 填充=要积分的面积 / 橙色竖线=采样点 xᵢ(圆的大小=权重 wᵢ)
误差随点数的收敛
横轴=采样点数 n / 纵轴=log₁₀|绝对误差|(黄点=当前 n,越往下越高精度)
理论与主要公式
高斯-勒让德求积把积分近似为采样点处函数值与权重之和。与等间距的梯形法则、辛普森法则不同的是,它对采样点的位置和权重两者都进行优化。
n 点高斯求积公式。xᵢ 为采样点,wᵢ 为权重:
$$\int_a^b f(x)\,dx \approx \sum_{i=1}^{n} w_i\,f(x_i)$$
从标准区间 [−1, 1] 的采样点 ξᵢ 和权重到任意区间 [a, b] 的线性变换:
$$x_i = \frac{b-a}{2}\,\xi_i + \frac{a+b}{2}, \qquad w_i = \frac{b-a}{2}\,\hat{w}_i$$
采样点 ξᵢ 是 n 次勒让德多项式 Pₙ(ξ) 的零点,n 点公式能精确积分次数不超过 2n−1 的多项式。
由于使用 2n 个自由参数(n 个位置加 n 个权重),它能满足 2n 个精确性条件。这就是它优于等间距方法的原因。
什么是高斯求积法模拟器
🙋
数值积分就是把区间切细、把小长条的面积加起来的那个吧。高斯求积法和它有什么不同呢?
🎓
加小长条的梯形法则和辛普森法则,是把采样点等间距放置的。高斯求积法连「把采样点放在哪里」也可以自由选择,对位置和权重两者都优化。上方模拟器里橙色的竖线就是采样点,仔细看会发现它们偏向两端、并不是等间距的。这就是关键所在。
🎓
能自由调整的参数翻倍了。n 个点的话,位置 n 个、权重 n 个,合起来 2n 个。所以能满足「2n 个条件」,n 个点就能精确积分不超过 2n−1 次的多项式。看「可精确积分的次数」卡片,每加一个点就增加 2。同样点数下辛普森法则的次数要低得多。
🙋
采样点的位置是怎么确定的呢?是随便优化出来的吗?
🎓
其实有一个很漂亮的答案:采样点是勒让德多项式的零点。用在区间 [−1,1] 上正交的多项式,相除后的余项会因正交性而干净地消失,从而自动保证不超过 2n−1 次的精确性。模拟器把标准区间的零点线性变换到你选的区间 [a,b] 来用。所以即使改变区间,采样点的「相对配置」也是一样的。
🙋
把函数换成「龙格函数」后,即使增加点数,误差图也很难下降呢。
🎓
观察得好。像 $e^{x/2}$ 这样光滑的函数,误差会随点数呈指数下降——收敛图几乎是一条直线急剧下降。但龙格函数 $1/(1+25x^2)$ 在复平面上有靠近的奇点,收敛要慢得多。「增加点数就一定能提高精度」并不成立。这种时候要使用分割区间的复合求积。没有万能的方法——这是数值分析的重要教训。
常见问题
早期是以数值表给出,如今数值计算库标准自带。n 次勒让德多项式的零点可用牛顿法等高精度求得,对应的权重可由零点处的导数值算出。本模拟器内置 n=1~8 的标准区间 [−1,1] 的值,并线性变换到所选的区间。
若要用很少的函数求值次数积分光滑函数,高斯求积法压倒性地有利。另一方面,如果被积函数的值已经以等间距的表给出,或者想之后再追加采样点,则能复用点的梯形法则或高斯-克朗罗德法则更实用。一旦「可以自由选择采样点」这一前提被打破,高斯求积法的优势就发挥不出来。
在有限元法中,为求各单元的刚度矩阵,要在单元内对形函数的乘积进行积分。这些是多项式(或接近多项式),所以用高斯求积法能以很少的积分点精确或高精度地求值。向二维、三维单元的扩展通过张量积进行。积分点数的选择是关系到精度、计算成本以及「沙漏模式」等数值不稳定性的重要设计事项。
通过改变正交多项式族即可应对。权函数 1/√(1−x²) 对应高斯-切比雪夫,半无限区间上带权 e^(−x) 的积分对应高斯-拉盖尔,全无限区间上带权 e^(−x²) 的积分对应高斯-埃尔米特。本模拟器处理的是权函数为 1、有限区间的高斯-勒让德,但思路可直接推广到其他族。
实际应用
有限元法(FEM)的数值积分:在结构分析、热分析、电磁场分析等所有 FEM 求解器内部,计算单元刚度矩阵和质量矩阵都使用高斯求积法。由于形函数是多项式,用少数积分点就能得到高精度的结果。有意减少积分点的「减缩积分」一方面能加快计算,另一方面会引发沙漏模式,因此要与稳定化措施配合使用。
计算物理与计算化学:在量子化学的电子积分、辐射输运、统计力学的配分函数等大量出现解析上无法求解的积分的领域,高斯求积法是标准工具。对于多维积分,要与张量积或稀疏网格相结合,以对抗维数灾难。
金融工程与概率计算:在期权定价中,需要快速计算期望值(即对概率密度的积分)。高斯-埃尔米特求积与正态分布下的期望值计算很契合,能用比蒙特卡罗法更少的求值点精确求出光滑的积分。
信号处理与控制工程:系统的响应能量、评价函数的积分、滤波器设计中频域的积分——用数值积分评价设计指标的场合有很多。只要被积函数光滑,高斯求积法就能以很小的计算量返回可靠的值。
常见误解与注意事项
最常见的误解是认为「只要增加采样点,对任何函数误差都会持续下降」。这只有在被积函数足够光滑时才成立。在模拟器里把函数切换为龙格函数 $1/(1+25x^2)$ 并增加点数,收敛图不会像光滑的 $e^{x/2}$ 那样下降。当存在不连续点、尖点,或复平面上有靠近的奇点时,即使是高斯求积法收敛也会变慢。这种函数要用分割区间的复合求积,或与奇异性匹配的变量替换来处理。
其次常见的错误是误以为「高斯求积法总是优于梯形法则」。高斯求积法的优势以「可以把采样点放在自由的位置」为前提。如果被积函数的值是以等间距的传感器数据给出,或者想在不丢弃已算点的情况下提高精度(自适应积分),则能复用采样点的梯形法则或高斯-克朗罗德法则更实用。算法的优劣,取决于数据获取形式这一上下文。
最后请注意,不要把 n 点公式的「精确到 2n−1 次」与误差的大小本身混淆。「精确」只意味着:如果被积函数恰好是不超过那个次数的多项式,误差就为零。实际的被积函数不是多项式,所以超过精确次数的成分必然残留,那就成为误差。在模拟器里选择多项式 $x^4-2x^2+1$ 并令 n=3,由于 2n−1=5 ≥ 4,可以确认绝对误差几乎为零(仅有舍入误差)。精确次数是「免费正确到哪里」的指标,对其他函数的精度需另外通过收敛情况来判断。