数值积分之高斯积分法

· · 算法·理论

写的很烂,勿喷

数值积分目前已经有很多方法计算,例如矩形法、梯形法、抛物线法(Simpson法)等。但是这些方法对于较复杂的被积函数,收敛速度就显得慢了。

看梯形法和抛物线法的表达式,会发现这两个方法的结果可以理解为一系列点的函数值,乘上某个系数后求和。这两种方法都是均匀分割区间来进行求和,至少具有n-1的代数精度。而高斯积分法并不是均匀分割区间,而是计算不同高斯节点,乘以每个点的权重后再求和。它具有2n+1的代数精度,可精确处理2n+1次以下多项式积分。

高斯积分法处理[-1,1]上的f(x)。我们可以用区间变换实现处理[a,b]。这里介绍高斯积分法如何进行数值计算。高斯积分法可理解为以下公式:

\int_{-1}^{1}f(x)\mathrm{d}x=\sum_{j=0}^{n}w_{j}f(x_{j}) 高斯积分法节点使用勒让德多项式计算。 勒让德(Legendre)多项式满足以下性质:当某个多项式$P(x)$的次数小于$n$时,有 $$\int_{-1}^{1}P(x)P_{n}(x)\mathrm{d}x=0$$ 并且满足递推关系: $$P_{n+1}(x)=\frac{2n+1}{n+1}xP_{n}(x)-\frac{n}{n+1}P_{n-1}(x) \ (n=1,2,…) $$ 这样,我们便求得 $$P_{1}(x)=x$$ $$P_{2}(x)=\frac{3x^2-1}{2}$$ 以此类推。$n$阶高斯积分法的节点便是$P_n(x)$的根。注意到,$P_n(x)$的根全部处于$[-1,1]$上,它具有$n$个实根。 $n$阶高斯积分法的系数有如下公式: $$w_i=\frac{2}{(1-x^2_i) \left(P_n^{'}(x_i) \right)^2}$$ 例如:要计算 $$\int^{1}_{-1}x^2\mathrm{d}x$$ 这里我们选用2阶高斯积分公式。先求 $$P_{2}(x)=\frac{3x^2-1}{2}$$ 的根,注意到是 $$ \left[-\frac{1}{\sqrt{3}} ,\frac{1}{\sqrt{3}} \right]$$ 也就是$[-0.5773502691896257, 0.5773502691896257]$。 再求出权重$w=[1,1]$。代入得 $$\int^{1}_{-1}x^2\mathrm{d}x \approx \left( -\frac{1}{\sqrt{3}} \right)^2+\left( \frac{1}{\sqrt{3}} \right)^2=\frac{2}{3}$$ 这方法只计算了2次得到了准确结果。 以上便是高斯积分法的基本思路。在实际应用时,我们可以提前计算好节点和权重,之后直接调用。