2

认为:

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.  

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

4

2 回答 2

2

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

z = [0.4 0.5 0.75]';
y = arrayfun(@(upperLim)(quad(@sin,0,upperLim)),z);
于 2011-10-16T15:58:45.723 回答
1

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

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

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

然后做

quadv(F,0,1)
于 2011-10-16T18:19:03.513 回答