【问题标题】:matlab quadrature in a loop循环中的matlab求积
【发布时间】:2011-11-10 08:51:09
【问题描述】:

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

【问题讨论】:

    标签: matlab numeric integral


    【解决方案1】:

    我认为您遇到的主要问题是您将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
    

    【讨论】:

      【解决方案2】:

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

      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{:});
      

      虽然不完全确定您要做什么......

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-20
        • 2017-01-23
        • 2023-03-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多