目录
数值微分的实现
MATLAB提供了求向前差分的函数diff,其调用格式有三种:
dx=diff(x):计算向量x的向前差分,dx(i)=x(i+1)-x(i),i=1,2,…,n-1。
dx=diff(x,n):计算向量x的n阶向前差分。例如,diff(x,2)=diff(diff(x))。
dx=diff(A,n,dim):计算矩阵A的n阶差分,dim=1时(默认状态),按列计算差分;dim=2,按行计算差分。
注意:diff函数计算的是向量元素间的差分,故差分向量元素的个数比原向量少了一个。同样,对于矩阵来说,差分后的矩阵比原矩阵少了一行或一列。另外,计算差分之后,可以用f(x)在某点处的差商作为其导数的近似值。
数值积分的实现
基于自适应辛普森方法
[I,n]=quad(filename,a,b,tol,trace)
基于自适应Gauss-Lobatto方法
[I,n]=quadl(filename,a,b,tol,trace)
其中,filename是被积函数名;a和b分别是定积分的下限和上限,积分限[a,b]必须是有限的,不能为无穷大(Inf);tol用来控制积分精度,默认时取tol=10-6;trace控制是否展现积分过程,若取非0则展现积分过程,取0则不展现,默认时取trace=0;返回参数I即定积分的值,n为被积函数的调用次数。
基于全局自适应积分方法
I=integral(filename,a,b)
其中,I是计算得到的积分;filename是被积函数;a和b分别是定积分的下限和上限,积分限可以为无穷大。
基于自适应高斯-克朗罗德方法
[I,err]=quadgk(filename,a,b)
其中,err返回近似误差范围,其他参数的含义和用法与quad函数相同。积分上下限可以是无穷大(−Inf或Inf),也可以是复数。如果积分上下限是复数,则quadgk函数在复平面上求积分。
基于梯形积分法
已知(xi,yi)(i=1,2,…,n),且a=x1<x2<…<xn=b,求 近似值。
I=trapz(x,y)
其中,向量x、y定义函数关系y=f(x)。
trapz函数采用梯形积分法则,积分的近似值为:
可用以下语句实现:
sum(diff(x).*(y(1:end-1)+y(2:end))/2)
(3)多重定积分的数值求解
求二重积分的数值解:
I=integral2(filename,a,b,c,d)
I=quad2d(filename,a,b,c,d)
I=dblquad(filename,a,b,c,d,tol)
求三重积分的数值解:
I=integral3(filename,a,b,c,d,e,f)
I=triplequad(filename,a,b,c,d,e,f,tol)