matlab 循环求积

发布于 2024-12-14 12:45:21 字数 268 浏览 0 评论 0原文

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

I'm trying to use matlab numerical integral functions,for example quad in a loop. But I also want to let matlab to calculate my integral for several integral limits:

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

It really seems me clever:) but Matlab has no Idea:(
Thank you for any help!
mg

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

绻影浮沉 2024-12-21 12:45:21

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

I think the main problem you have is that you're using p both as a parameter and also to store the results of your integration. So within the loop p becomes a vector, and then it can't be used as a power in the integrand. I'm not sure why, but I also seem to need to remove k as an index into b and integrand. But this code seems to work:

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
彼岸花ソ最美的依靠 2024-12-21 12:45:21

似乎您可以使用额外的参数定义被积函数,所以

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

不太确定您要做什么......

Seems like you could define integrand with an extra parameter, so

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

but when I run it still gives an error:

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

Not exactly sure what you're trying to do though ...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文