计算一元定积分的若干数值算法及其比较

2022-09-11

在实际问题中, 有些定积分问题的被积函数难以用公式表示, 有些则求原函数的步骤过于复杂, 或者求出的原函数本身过于复杂, 或者原函数不能用初等函数表示, 因此不宜用牛顿-莱布尼兹公式计算, 此时考虑数值计算[1]。考虑对一元函数f (x) 在区间[a, b]上进行积分, 记为S。

1 基于几何意义的数值算法

S在几何上表示以[a, b]为底, 以曲线y=f (x) 为曲边的曲边梯形的面积A, 因此, 计算S的近似值也就是A的近似值, 如图1所示。沿着积分区间[a, b], 可以把大的曲边梯形分割成许多小的曲边梯形, 则面积A等于小曲边梯形的面积之和。常采用均匀分割, 假设[a, b]上等分为n的小区间xi+1=xi+h, x0=a, xn=b, 其中h= (b-a) /n表示小区间的长度。

1.1 矩形法

矩形法就是用小矩形面积近似代替各个小曲边梯形面积, 从而得到S的近似值。若取小区间左端点的函数值为小矩形的高, 如图1中所示, 则。

1.2 梯形法

梯形法则用小直边梯形的面积近似代替小曲边梯形面积, 见图1, 从而得到S的近似值, 即:

1.3 抛物线法

抛物线法以抛物线为曲边梯形的曲边曲边梯形的面积近似代替小曲边梯形的面积, 如图2所示。

x0、x1、x2对应的曲线上的点P0、P1、P2可以唯一地确定一条抛物线y=ax2+bx+c, 这条抛物线将作将代替从x0至x2的曲线段, 此时积分可以转化为对抛物线积分, 而抛物线的积分可以利用牛顿-莱布尼兹公式。第1、2个小曲边梯形的面积:

上面利用了条件P0、P1、P2是抛物线上的点以及等式x2+x0=2x1。同理可得:

所以, S≈A1+A2+Λ+An/2

一般情况下, 三种基于几何的算法中矩形算法a) 、b) 的误差最大, 梯形法次之, 抛物线法精度最高。表1给出了计算的例子, 该积分已知较为精确值为3.1416。

从表1中可以看出, 抛物线法的积分精度远远高于另外两种方法, 特别是在积分区间分割份数较小的情况的, 仍然保持较高的近似程度。变步长的积分算法则相对复杂, 但能使数值积分精度得到有效的提高[2]。

2 基于概率意义的数值算法

概率算法是问题数值求解的一类常用方法, 其设计思想简单, 易于实现。尽管算法要耗费较多的计算时间, 但是往往能得到问题的近似解, 并且近似程度能随计算时间的增加而不断提高。概率算法可用于计算定积分的近似值, 随机投点法和平均值法都属于概率算法[3]。

2.1 随机投点法

设f (x) 是在区间[0, 1]上的连续函数, 且0≤f (x) ≤1。显然, 积分等于图3中单位正方形内阴影部分面积A。

在单位正方形内均匀地作随机投点试验, 则随机点落在曲线y=f (x) 边界及下方的概率为:

现向单位正方0形0内随机0地投入N个点 (xi, yi) , i=1, 2, ..., N。随机点 (xi, yi) 落入A内, 则yi≤f (x) 。如果共有M个点落入A内, 则M/N可近似为随机点落入A内的概率P, 故有S=A=P≈M/N。试验次数N越大, 试验更具有统计意义;如果N→∞, 则S=M/N。

表2给出了计算的例子, 从表中可以随着投点次数的增大, 积分精度提高, 计算耗时也随之增加。

2.2 平均值法

假设要计算积分。平均值法基于随机处理过程, 任取一组相互独立、同分布的随机变量{ξi}, ξi在[a, b]中服从分布律g (x) , 令f* (x) =f (x) /g (x) , 则{f* (ξi) }也是一组相互独立、同分布的随机变量, 则期望E[f* (ξi) ]。由强大数定律可知, 当n→∞时, 依概率1收敛于S, 因此可以作为S的近似值。

在区间[a, b]中概率密度函g (x) 可取为均匀分布g (x) =1/ (b-a) 。此时, , 若在[a, b]中随机抽取n个点xi, 则平均值可作为所求积分的近似。

平均值公式与矩形积分公式形式上很相似, 几何意义也很相似, 也可以看成[a, b]区间n等份分割, 然后用小矩形的面积替代小曲边梯形的面积, 只不过这些小矩形的高与矩形法中的高的取法不一样, 它们是随机点的函数值。

表3给出了平均值法近似计算的例子。观察表3并对比表2可以看出, 平均值法与随机投点法相比, 对给定积分用相同的随机点数近似求解时, 前者近似效果略好于后者。但随着试验规模的扩大, 计算耗时增多, 积分的近似程度都随着提高。

以上所有例子的求解是在具有Intel 24GHz双核CPU、Vista系统的PC上用Matlab2008R实现的。

3 结语

基于几何意义的数值算法与基于概率意义的数值算法相比, 无论在计算时间上还是在计算精度上都占有绝对的优势。但是, 在某些情况下, 前者的算法也会失效例如用梯形算法计算, 当2≤n≤101时, 返回值是0, 而该精确积分值为0.5, 若用后者则不会发生该类问题, 或虽然发生, 但概率小得多;并且概率算法的的设计思想简单, 易于实现, 特别是随机投点法。

摘要:本文介绍了两类关于计算一元定积分的数值算法, 并用Matlab实现这些算法后对若干例子进行计算, 通过分析计算结果对各方法做了简要的比较, 指出了它们的优缺点。

关键词:数值积分,矩形法,梯形法,抛物线法,随机投点法,平均值法

参考文献

[1] 费祥历, 刘奋, 马铭福.高等数学 (第2版上册) [M].山东:石油大学出版社, 2008:211~287.

[2] 郑莉, 董渊, 张瑞丰.C++语言程序设计 (第3版) [M].北京:清华大学出版社, 2004:269~274.

[3] 王晓东.计算机算法分析与设计[M].北京:电子工业出版社, 2001:197~228.

上一篇:稠油热采工艺技术研究分析下一篇:长寿区农产品“三品一标”发展现状及质量安全控制措施