定积分的算法

本章涉及知识点

1、求解定积分存在的问题

2、研究案例之f(x)=sin(x)/x的定积分和广义积分

3、纯数学推导计算f(x)=sin(x)/x的广义积分

4、复化矩形算法

5、复化梯形算法

6、复化抛物线算法

7、三种定积分复化近似算法的编程实现

8、加入蒙特卡洛算法和高斯求积算法

9、不同近似算法计算f(x)=sin(x)/x的定积分结果比较

一、求解定积分存在的问题

由微积分我们知道,如果函数f(x)的原函数为F(x),则函数f(x)在闭区间[a,b]的定积分可以由牛顿-莱布尼兹公式计算出来

牛顿-莱布尼兹公式

上式也称之为微积分的基本公式,它表明了:一个连续函数在区间[a,b]上的定积分等于它的任意一个原函数在区间[a,b]上的增量

但是实际问题中常常会遇到如下一些情况:

(1)、f(x)的表达式非常复杂,导致推导原函数F(x)变得更加困难

(2)、f(x)的原函数F(x)根本不能用初等函数来表示或者F(x)根本推导不出来

(3)、无法知道f(x)的精确表达式,只能以实验的方法观测出其若干个点对应的值

对于上述的情况,要计算f(x)的定积分就无法使用牛顿-莱布尼兹公式计算,例如f(x)=sin(x)/x就属于上述第二种情况,这时候我们就需要从定积分的定义原理出发,通过数值算法来计算其近似值

二、研究案例之f(x)=sin(x)/x的定积分和广义积分

来研究以下案例

目标函数f(x)

需要计算f(x)的定积分或者广义积分

案例积分

在数学物理的研究方法中,这个函数已经多次出现过,求解这个积分的算法也非常巧妙,而每次解法的思路,总是精妙又差别很大,可以说是涵盖了物理方法中很大一部分内容,比如复变函数、傅里叶变换以及拉普拉斯变换等的数学知识,这真是一个有趣的积分

显然,f(x)有精确的表达式,可是它的原函数F(x)的推导却非常困难,因为F(x)无法用初等函数来表示,下面我们首先用纯数学方法来推导f(x)的广义积分

三、纯数学推导计算f(x)=sin(x)/x的广义积分

原广义积分可以写为

案例积分

计算一边的积分即可,为此我们模拟拉普拉斯变换的算法思想,构造出一个函数F(b),并顺利引入指数函数e来替换拉普拉斯变化里的虚数

构造新函数F(b)

显然,当b=0时

F(0)即为原广义积分

故我们只需要推导出F(b)的表达式即可,下面对F(b)求一阶导数(注意因变量是b,不是x)

F(b)的导数表达式-1

下面我们需要推导上式积分,这里需要使用一次分部积分算法

定积分的算法_第1张图片
一次分部积分算法

我们对结果再使用一次分部积分算法

定积分的算法_第2张图片
二次分部积分算法

通过两次分部积分算法,我们得出

二次部分积分结果-1

合并左右相同的积分项,可以解出

二次部分积分结果-2

带入F(b)的导数表达式

F(b)的导数表达式-2

至此我们推导出了F(b)的导数表达式,为了推导F(b)的表达式,我们对其导数进行一次不定积分计算

对导数进行不定积分

显然上式被积函数的原函数可以表示为反正切初等函数,即

F(b)的表达式

至此,我们推导出了构造函数F(b)的表达式

又因为:

F(b)的极限

则可以计算出常数C

F(b)的常数C

由之前的分析

F(0)即为原广义积分

带入F(0)即可计算出f(x)的广义积分

f(x)的广义积分

可以看到,纯数学的解法思路需要构造新函数,求导,两次分部积分算法和求不定积分的原函数来表示求解的定积分,而我们的计算机是不会自己推理这一系列数学推导的

四、复化矩形算法

从纯数学推导f(x)的定积分的算法中,显然不适合计算机,为此我们需要从定积分的原理出发

因为f(x)在区间[a,b]上连续可导,我们将区间[a,b]进行n等分,得到一系列的分点序列

区间分点序列

而每一个小区间的长度为

区间长度

而对于任意确定的正整数n,有

定积分的近似计算

f(x)的函数值

则定积分的近似计算可以表示为

复化矩形算法

上式就是复化矩形的算法,其几何意义为:用窄条矩形的面积作为窄条曲边梯形的面积的近似值,而整体上运用了台阶形的面积来作为曲边梯形面积的近似值

五、复化梯形算法

同理,复化梯形算法的几何意义为:将曲线f(x)上的一小段弧度用直线代替,也就是以直代取的思想,将窄条曲边梯形用窄条梯形近似替代

复化梯形形算法

六、复化抛物线算法

同理,复化抛物线算法的几何意义为:将曲线f(x)上的两个小弧度用过这三个点的抛物线y=px^2+qx+r来代替

由Lagrange抛物线插值算法,我们用n=3的多项式来逼近任意一段抛物线

Lagrange二次插值

则f(x)的定积分可以推导为

复化抛物线算法

至此,我们从定积分的原理出发,得到了3种近似计算定积分的算法,而计算机非常适合计算这些近似算法

七、三种定积分复化近似算法的编程实现

我们将上述近似算法代码化

定积分的算法_第3张图片
复化矩形算法
复化梯形算法
定积分的算法_第4张图片
复化抛物线算法

八、加入蒙特卡洛算法

为了案例演示结果的比较,下面我们也加入蒙特卡洛算法来模拟计算定积分

定积分的算法_第5张图片
蒙特卡洛算法

九、不同近似算法计算f(x)=sin(x)/x的定积分结果比较

我们演示在[0,pi]区间内,不同算法计算f(x)=sin(x)/x的定积分结果为

定积分的算法_第6张图片
不同算法计算f(x)=sin(x)/x的定积分结果

可以看到复化梯形和抛物线算法计算结果的精度非常高

案例代码见:定积分的算法

你可能感兴趣的:(定积分的算法)