数值积分心得

来源:互联网 发布:怎么恢复sd卡数据 编辑:程序博客网 时间:2024/06/04 00:34

数值积分在科学计算中具有十分重要的地位,许多复杂函数的不定积分并没有闭合形式或难以求解,比如高斯函数。这类问题均可以表示成黎曼积分的形式 – 即数值积分。考虑如下定积分 ,我们将其分成N小段(不一定均匀),即 [x0,x1], [x1,x2], [x2,x3] … [x_(n-1),x_n],再对每一个区间进行采样,得到c0,c1,…,c_(n-1)。这样的即称为黎曼和。若定义最长的小段,黎曼积分告诉我们,如过最长的小段趋近于零,黎曼和的值也趋近于定积分的值。可见,黎曼积分是我们学过的对区间进行等宽分割的近似积分的推广,其好处是,能让我们对不同的子区间定义不同的积分函数,并采取不同的步长。这也就是数值积分的一般形式。例如,一个函数在一部分十分平滑,另一部分波动极大。由于更精确的积分方法往往需要更大的计算量,对于平滑的部分我们可以采取中点法,对于波动大的部分可采用更精确的cubic spline进行拟合。根据拉格朗日中值定理,对于定积分,一定存在使得。如何选取一个更合理的,(这里的不一定是一个值,也可以等效为一个过程,因为我们的拟合可以推广到二次以上), 使得尽量接近 就是数值积分控制误差的关键。

直觉上来说,取区间中点比取区间两端误差要更小。为了证明这一点,我们可以在[x_i,x_(i+1)]段上对积分函数关于进行泰勒级数展开。很容易得到 . 代入积分公式并令小段的长度为h, 可得=)我们希望尽可能的减小误差,即尽量使低阶项的系数为0。观察上式,如果取, 则可使, 得到误差项, 即O的误差。如果取 或 ,只能得到O误差。需注意,这只是小段误差,对于整段区间,段数N=(b-a)/h, N个小段累计误差就会升一个档次。对于取中点的情况,合成误差仍为O.

另外,与其取一个点,我们可以用插值的方法来近似小段上的函数值。若为线性,即能得到梯形法则(trapezoidal rule),即. 可以证明,梯形法则的合成误差也是O, 但是常数为中点法的两倍。可以尝试如此理解,如果函数是单调凹函数或凸函数,梯形法则会一直低估或高估积分值。但是,在周期函数如正弦波的情况下,梯形法则的误差极小。所以还是要具体情况具体分析,选择最佳的积分方法。

增加插值点,我们就会得到Simpson法则 – 将函数拟合为二次曲线。根据拉格朗日插值公式,就可以推出。可见Simpson法则的误差极小,合成之后仅为O。但是,Simpson法则要求等宽区间,一定程度上限制了我们的应用范围。而且,Simpson法则把函数当作二次曲线来拟合。如果原函数不光滑,甚至在一些点上不可导,Simpson法则的结果就会呈现极大的不稳定性。 Simpson和梯形法则其实是Newton-Cotes 系积分法在二次和一次上的形式。往上推广,还有三次的Simpson 3/8 法则和四次的Boole法则。它们的误差更小,但是运算量也随之增加。

前面说到求黎曼积分可以分段用不同的方法,其实,还有一种更方便更精确的Romberg积分, 其核心思想就是“插空”。例如,我们把中点法写作, 其中就是中点法在取n段时的积分值。假设我们刚好又得到了一组采样密度是原函数两倍的数据,同样运用中点法,得到 如果有这样两组结果,我们便可以对两个式子进行线性组合,把低阶项消去 - 将二式乘上四倍减去一式,就能得到, 一下子把误差降了一个数量级。通过Romberg积分,我们不仅能把不同的积分方法结合起来,还能在运算的过程中得到误差估计 (如果被积函数的高阶导数难以求出)。例如,在每一遍迭代中都将采样密度增加一倍,这样我们不仅能够结合通过上一遍的积分值迅速减少误差,又能通过计算两遍Romberg积分的差值来判断是否满足停止条件。

以上讲的数值积分方法,在微分方程的数值求解上也是一个很重要的方法。下面几篇文章中,我们还会讲到一些数值求解微分方程和矩阵方程的方法,以便我们更好的求解金融工程里的Black-Scholes公式。





原创粉丝点击