这两个函数都是MATLAB中的内置函数,用于实施自适应求积分,都是根据Gander和Gautschi构造的算法编写的。
quad:使用
辛普森求积,对于低精度或者不光滑函数效率更高
quadl:该函数使用了称为洛巴托求积(Lobatto Quadrature)的算法,对于高精度和光滑函数效率更高
你的问题是,输入和输入的向量长度不同导致的,建议你参考:
I=quad(func,a,b,tol);
func是被积函数,a,b是积分限,tot是期望的
绝对误差(如果不提供,默认为1e-6)
例如对于函数f=xe^x在[0,3]上求积分,显然可以通过解析解知道结果是2e^3+1=41.171073846375336
先创建一个M文件xex.m
内容如下:
function f=xex(x)
f=x.*exp(x);
end
然后调用:
>> format long
>> format compact
>> quad(@xex,0,3)
ans =
41.171073850902332
可见有9位有效数字,精度还是蛮高的。
如果使用quadl:
>> quadl(@xex,0,3)
ans =
41.171074668001779
反而只有7位有效数字。