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

问题描述 投票:0回答: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.  
matlab limit numerical-integration
2个回答
2
投票

您可以在最新版本的 MATLAB 中使用

arrayfun
函数:

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

1
投票

您也可以使用

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)
© www.soinside.com 2019 - 2024. All rights reserved.