MATLAB求一元函数的数值积分(quad,quadl,quadv)

作者:滴水穿石 | 创建时间: 2023-08-03
MATLAB提供了quad( ),quadl( )等函数命令计算一元函数的数值积分,其中quad( )采用遍历的自适应Simpson法计算函数的数值积分,quadl采用遍历的自适应Lobatto法计算函数的数值积分。其调用格式一般为[Q,F...
MATLAB求一元函数的数值积分(quad,quadl,quadv)

操作方法

第一,计算下图两个一元函数的数值积分。

第二,启动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]分别返回数值积分的结果和函数计算的次数。

第三,保存和运行上述脚本,在命令行窗口(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。

第四,下图为被积分函数(1)的图像。

第五,下图为被积分函数(2)的图像,其中fplot( )绘图命令可以绘制函数句柄/匿名函数的图像。

温馨提示

quad,quadl要求被积函数必须为函数句柄/匿名函数,即用f=@(x)创建的函数。
quad( )计算一元函数数值积分的速度快但准确性稍差,quadl( )计算速度慢但准确性强。
点击展开全文

更多推荐