MATLAB求一元函数的数值积分(quad,quadl,quadv)
MATLAB提供了quad( ),quadl( )等函数命令计算一元函数的数值积分,其中quad( )采用遍历的自适应Simpson法计算函数的数值积分,quadl采用遍历的自适应Lobatto法计算函数的数值积分。其调用格式一般为[Q,Fcnt]=quad(function,a,b),其中function为被积函数(形式为函数句柄/匿名函数),a,b分别积分上限,[Q,Fcnt]分别返回数值积分的结果和函数计算的次数。
操作方法
- 01
第一,计算下图两个一元函数的数值积分。
- 02
第二,启动MATLAB,新建脚本(Ctrl+N),输入如下代码: close all; clear all; clcformat compactfigure('Position',[50,50,600,500],'Name','sin(0.5x)')f1=@(x) sin(0.5*x);[Q1a,Fcnt1a]=quad(f1,0,2)[Q1b,Fcnt1b]=quadl(f1,0,2)fplot(f1,[0,2]);%-------------------%figure('Position',[100,100,600,500],'Name','e^x+1')f2=@(x) exp(x)+1;[Q2a,Fcnt2a]=quad(f2,-1,2)[Q2b,Fcnt2b]=quadl(f2,-1,2)fplot(f2,[-1,2]); 其中f1=@(x) sin(0.5*x),f2=@(x) exp(x)+1是建立被积分的函数(形式为函数句柄/匿名函数)。 [Q,Fcnt]=quad(function,a,b),quadl(function,a,b)是分别采用quad和quadl两种方法求数值积分。 其中被积函数function要为上述建立的函数句柄/匿名函数,a,b分别积分上限,[Q,Fcnt]分别返回数值积分的结果和函数计算的次数。
- 03
第三,保存和运行上述脚本,在命令行窗口(Command Window)得到如下结果: Q1a = 0.9194Fcnt1a = 13Q1b = 0.9194Fcnt1b = 18Q2a = 10.0212Fcnt2a = 37Q2b = 10.0212Fcnt2b = 18 可以看出,采用quad( )和quadl两种方法计算函数(1)的数值积分都是0.9194,函数(2)的数值积分都是10.0212,只是计算次数不同。例如采用quad( )计算函数(1)的数值积分,计算次数为13,采用quadl( )计算次数为18。
- 04
第四,下图为被积分函数(1)的图像。
- 05
第五,下图为被积分函数(2)的图像,其中fplot( )绘图命令可以绘制函数句柄/匿名函数的图像。