matlab正交循环

时间:2011-11-10 08:51:09

标签: matlab numeric integral

我正在尝试使用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没有想法:( 感谢您的任何帮助! 毫克

2 个答案:

答案 0 :(得分:2)

我认为您遇到的主要问题是您使用p作为参数并存储集成结果。因此,在循环p内变为向量,然后它不能用作被积函数中的幂。我不确定原因,但我似乎还需要删除k作为bintegrand的索引。但是这段代码似乎有效:

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

答案 1 :(得分: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{:});

虽然不确定你要做什么......