我正在尝试使用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没有想法:( 感谢您的任何帮助! 毫克
答案 0 :(得分:2)
我认为您遇到的主要问题是您使用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
答案 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{:});
虽然不确定你要做什么......