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

比如f1为一个函数文件,那么在对它求积分时是,quadl(@f1,a,b)这样吗?可是为什么我总是积分不成功?我的函数是一个分段函数,它总显示Theintegrandfu... 比如f1为一个函数文件,那么在对它求积分时是,quadl(@f1,a,b)这样吗?
可是为什么我总是积分不成功?
我的函数是一个分段函数,它总显示
The integrand function must return an output vector of the same length as the
input vector.
这是什么鬼?
展开
 我来答
52spn
推荐于2017-11-27 · TA获得超过2193个赞
知道大有可为答主
回答量:3322
采纳率:60%
帮助的人:593万
展开全部
这两个函数都是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位有效数字。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式