我正在尝试使用 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
我认为您遇到的主要问题是您p
既将其用作参数又用于存储集成结果。所以在循环内p
变成了一个向量,然后它就不能作为被积函数中的幂了。我不知道为什么,但我似乎也需要将其k
作为索引删除到b
andintegrand
中。但是这段代码似乎有效:
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
好像你可以用一个额外的参数定义被积函数,所以
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{:});
不完全确定你想要做什么......