参数设置
被积函数 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个条件」,能精确积分到2n−1次多项式。「能精确积分的次数」卡片上看得出来,每增加一个点数,能精确的次数就增加2次。而梯形法则、辛普森法则用同样点数的话,次数要低得多。
🎓
其实有很优美的答案。采样点就是勒让德多项式的零点。在区间 [−1,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,所以绝对误差几乎为零(只有舍入误差)。精确次数是「哪里免费正确」的指标,其他函数的精度要另外根据收敛情况判断。
具体计算例
4次多项式f(x)=x⁴在a=-1, b=1上的积分,精确值是0.4。N=2(2点法)只能精确到2N−1=3次,近似值≈0.222,误差≈0.178。增加到N=3(3点法)时,精确到2N−1=5次,4次的x⁴被精确积分,近似值=0.400,误差收敛到近乎0(仅舍入误差)。采样点x₁≈-0.775, x₂=0, x₃≈0.775,权重w₁≈0.556, w₂≈0.889, w₃≈0.556。