假设:
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.
我会感谢任何建设性的建议。
答案 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)