matlab quadl和quad在对函数文件求积分时该怎么用?

比如f1为一个函数文件,那么在对它求积分时是,quadl(@f1,a,b)这样吗?
可是为什么我总是积分不成功?
我的函数是一个分段函数,它总显示
The integrand function must return an output vector of the same length as the
input vector.
这是什么鬼?

这两个函数都是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位有效数字。
温馨提示:答案为网友推荐,仅供参考
相似回答