Matlab 数值微分与数值积分,linux 环境高级编程
[](
)2. 数值积分
2.1 数值积分基本原理
现有:
在求任意函数 f(x)在[a,b]上的定积分时,可以寻找一个在[a,b]上与 f(x)逼近,但形式上却简单且易于求积分的函数 p(x),用 p(x)在[a,b]上的积分值近似地代替 f(x)在[a,b]上的积分值,一般选择被积函数的插值多项式充当这样的替代函数。选择的插值多项式的次数不同,就形成了不同的数值积分公式。
对被积函数 f(x)采用一、二次多项式插值,然后对插值多项式求积分,就得到了几个常见的数值积分公式:
2.2 数值积分的实现
基于变步长辛普森法,MATLAB 给出了 quad 函数和 quadl 函数来求定积分。函数的调用格式为:
[I,n]=quad(filename,a,b,tol,trace)
[I,n]=quadl(filename,a,b,tol,trace)
filename:被积函数名;
a 和 b:定积分的下限和上限,
tol:用来控制积分精度,默认时取 tol=10-6;
trace:控制是否展现积分过程,若取非 0 则展现积分过程,取 0 则不展现,默认时取 trace=0;
I:定积分值,
n:被积函数的调用次数。
例:就下列函数积分
例: 分别用 quad 函数和 quadl 函数求函数的近似值,并在相同的积分精度下,比较函数的调用次数。
2.自适应积分法
MATLAB 提供了基于全局自适应积分算法的 integral 函数来求定积分,函数的调用格式为:
I=integral(filename,a,b)
其中,I是计算得到的积分;filename是被积函数;a和b分别是定积分的下限和上限,积分限可以为无穷大 。
例:求下列积分函数
3.高斯-克朗罗德法
MATLAB 提供了基于自适应高斯-克朗罗德法的 quadgk 函数来求振荡函数的定积分。该函数的调用格式为
[I,err]=quadgk(filename,a,b)
其中,err 返回近似误差范围,其他参数的含义和用法与 quad 函数相同。积分上下限可以是?Inf 或 Inf,也可以是复数。如果积分上下限是复数,则 quadgk 在复平面上求积分。
求下列积分函数:
4.梯形积分法
在科学实验和工程应用中,函数关系表达式往往是不知道的,只有实验测定的一组样本点和样本值,这时,人们就无法使用 quad 等函数计算其定积分。在 MATLAB 中,对由表格形式定义的函数关系的求定积分问题用梯形积分函数 trapz,其调用格式为:
I=trapz(X,Y)
其中,向量 X、Y 定义函数关系 Y = f(X)。X、Y 是两个等长的向量:X = (x1,x2,…,xn),Y = (y1,y2,…,yn),并且 x1<x2<…<xn,积分区间是[x1,xn]。
例:求下列积分函数
5.累计梯形积分
在 MATLAB 中,提供了对数据积分逐步累计的函数 cumtrapz。该函数调用格式如下。
Z=cumtrapz(Y)
Z=cumtrapz(X,Y)
对于向量 Y,Z 是一个与 Y 等长的向量;对于矩阵 Y,Z 是一个与 Y 相同大小的矩阵,累计计算 Y 每列的积分。函数其他参数的含
义和用法与 trapz 函数的相同。
例:
2.3 多重定积分的数值求解
评论