0

我正在尝试使用 matlab 数值积分函数,例如循环中的四边形。但我也想让 matlab 为几个积分限制计算我的积分:

p=1;
q=3;
for k=1:5
    a=0;
    b(k)=k.*10;
     integrand(k)=@(v)(v-a).^(p-1).*(b(k)-v).^(q-1);
p(k)=quad(integrand,a,b(k));
end

看来我真的很聪明:)但Matlab没有想法:(谢谢你的帮助!mg

4

2 回答 2

2

我认为您遇到的主要问题是您p既将其用作参数又用于存储集成结果。所以在循环内p变成了一个向量,然后它就不能作为被积函数中的幂了。我不知道为什么,但我似乎也需要将其k作为索引删除到bandintegrand中。但是这段代码似乎有效:

p=1;
q=3;
for k=1:5
    a=0;
    b=k.*10;
    integrand=@(v)((v-a).^(p-1).*(b-v).^(q-1));
    result(k)=quad(integrand,a,b);
end
于 2011-11-10T09:58:08.003 回答
0

好像你可以用一个额外的参数定义被积函数,所以

p=1;
q=3;
integrand=@(v,b)(v-a).^(p-1).*(b-v).^(q-1);  
for k=1:5
    a=0; 
    b=k.*10;
    p(k)=quad(integrand,a,b); 
end

但是当我运行它仍然给出一个错误:

??? Error using ==> power
Matrix dimensions must agree.

Error in ==> @(v,b)(v-a).^(p-1).*(b-v).^(q-1)

Error in ==> quad at 76
y = f(x, varargin{:});

不完全确定你想要做什么......

于 2011-11-10T09:35:14.543 回答