具有矢量化边界的 Matlab 积分,不使用循环

计算科学 matlab
2021-12-11 10:49:45

我有一个简单的问题,我无法找到答案。我有一个函数f(x),其中x有一些向量,例如:

function f=f(x)
    f=x.^4;
end

然后我想将边界整合为向量:

x=1:0.1:10;
x_0=2*ones(size(x));
g=integral(@f,x_0,x);

我想得到g一个向量g(i)=integral(@f,x_0(i),x(i))但是,这将返回边界必须是标量的错误。

显然我可以使用一个循环:

x=1:0.1:10;
x_0=2*ones(size(x));
for i=1:length(x)
    g(i)=integral(@f,x_0(i),x(i));
end

但如果我有重复集成的大向量,那可能会非常低效。

有没有一种简单有效的方法可以在没有循环的情况下进行矢量化?

1个回答

我认为arrayfun是你正在寻找的:

arrayfun(@(x_1, x_2) integral(@(y) y.^4, x_1, x_2), x_0, x)