注:以下来自《C++数值算法一书》,仅对章节内容做摘要,为的是给自己扫盲,不涉及算法。
求积分高数里都学过了,就不介绍了。
1. 坐标等距划分的经典公式
思想:最经典最原始的求积分方法。使用了在端点的函数值f(a)和f(b)的积分公式,称为闭型公式。有时被积函数在一个或两个端点处的函数值难以计算,此时就需要一个开型公式。典型的方法有Newton-Cotes闭型公式,该公式根据划分区间数有梯形法、Simpson法等方法。针对开型公式和半开型公式,这个公式有更多扩展。
2. 基本算法
思想:扩展梯形法、以及扩展Simpson法。
3. 龙贝格积分
思想:利用扩展梯形法中连续进行k次细分的结果,消除误差级数直到O(1/N2k)的所有项。
4. 广义积分
思想:注意广义积分不是不可积的,只是有开型公式的约束。
5. 高斯求积法与正交多项式
思想:不仅能给我们选择系数的自由,而且还能自由选择在哪些坐标位置进行函数求值,这些坐标点不再是等间隔的。高斯求积计算法明显分两步:1.得到正交多项式p0,…,pN,2.求pN(x)的零点及其相应的权值。
6. 多维积分
思想:碰到多维积分问题,首先考虑能否解析地将维数降低。
若被积公式在很小区域内峰值不明显,且边界复杂,且允许相对较低的精度,可用蒙特卡罗积分方法。
若边界简单,函数很平滑,则用残留逼近将多维积分分成多重一维积分,或者多维高斯求积分。精度要求较高时逼近是唯一的选择。
若精度要求不高,且被积函数变化较慢,在积分区域内又恨平滑,则用多重一维积分或多维高斯求积分。若被积函数震荡或不连续,但在小区域内峰值不显著,则用蒙特卡罗方法。
若被积函数在小区域内峰值确实显著,并且已知这些区域,则可将积分分成在几个区域内分别进行,使其在每个区域都平滑。
本文原创,转载请注明出处