【问题标题】: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 作为b 和integrand 的索引。但是这段代码似乎有效:
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{:});
虽然不完全确定您要做什么......