认为:
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.
我会感谢任何建设性的建议。
您可以arrayfun
在最新版本的 MATLAB 中使用该函数:
z = [0.4 0.5 0.75]';
y = arrayfun(@(upperLim)(quad(@sin,0,upperLim)),z);
您也可以使用它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)