Matlab:如何在多个限制内计算函数的定积分?

时间:2011-10-16 15:35:19

标签: matlab integrate limits

假设:

z = [0.4 0.5 0.75]'  
function y = myfunct(x)  
y = quad(@sin, 0, x)

我想计算sin(x)的定积分从0到0.4,到0.5和0.75,使用:

myfunct(z)

然而,Matlab回归:

??? Error using ==> quad at 70  
The limits of integration must be scalars.  

我会感谢任何建设性的建议。

2 个答案:

答案 0 :(得分:2)

您可以在最新版本的MATLAB中使用arrayfun函数:

z = [0.4 0.5 0.75]';
y = arrayfun(@(upperLim)(quad(@sin,0,upperLim)),z);

答案 1 :(得分:1)

您也可以使用quadv执行此操作。但是,不是制作集成限制的向量,而是创建一个数组值函数,以便在集成每个元素时,积分范围将为0到1.

更具体地说,您希望将sin(x)从x = 0积分到z。这与从u = 0到1(u取代)的sin(u z)* z的积分相同。制作一个数组函数

F = @(u) [sin( .4 * u) * .4, sin( .5 * u ) * .5, sin( .75 * u ) * .75 ];

然后做

quadv(F,0,1)