假设:
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.
您可以在最新版本的 MATLAB 中使用
arrayfun
函数:
z = [0.4 0.5 0.75]';
y = arrayfun(@(upperLim)(quad(@sin,0,upperLim)),z);
您也可以使用
quadv
来执行此操作。但是,不要创建积分限制向量,而是创建一个数组值函数,这样当您对每个元素进行积分时,积分范围将为 0 到 1。
更具体地说,您想要对从 x = 0 到 z 的 sin(x) 进行积分。这与从 u = 0 到 1 对 sin(u z)*z 进行积分(u 替换)相同。制作一个数组函数
F = @(u) [sin( .4 * u) * .4, sin( .5 * u ) * .5, sin( .75 * u ) * .75 ];
然后做
quadv(F,0,1)