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.
这是什么鬼? 展开
可是为什么我总是积分不成功?
我的函数是一个分段函数,它总显示
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位有效数字。
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位有效数字。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询