how can i use integral2 for a vector-valued function ?

14 ビュー (過去 30 日間)
meysam esmaeeli
meysam esmaeeli 2015 年 9 月 5 日
コメント済み: 祥宇 崔 2023 年 4 月 10 日
for example i wrote this code:
% code
f=@(x,y)x+y;
g=@(x,y)x^2+y^2;
h=@(x,y)x/y+y/x;
w=@(x,y)sin(x)+cos(y);
box=@(x,y)[f(x,y) g(x,y);h(x,y) w(x,y)];
answers=integral2(box,1,2,1,2)
i expected answers to be a 2*2 scalar matrix but i got only error... what to do?

採用された回答

Star Strider
Star Strider 2015 年 9 月 5 日
編集済み: Star Strider 2015 年 9 月 5 日
They’re not 'ArrayValued' in the sense integral understands, and only integral — and not integral2 — can handle array-valued arguments. Otherwise, you could just use integral twice, the second time on the result of the first.
They’re also essentially independent of each other, so integrate them individually using integral2 and then put them together in a matrix at the end.
Specifically:
% Vectorised Equations:
f = @(x,y)x+y;
g = @(x,y)x.^2+y.^2;
h = @(x,y)x./y+y./x;
w = @(x,y)sin(x)+cos(y);
intf = integral2(f,1,2,1,2);
intg = integral2(g,1,2,1,2);
inth = integral2(h,1,2,1,2);
intw = integral2(w,1,2,1,2);
answers = [intf intg; inth intw]
answers =
3.0000 4.6667
2.0794 1.0243
  5 件のコメント
祥宇 崔
祥宇 崔 2023 年 4 月 10 日
Thanks! As you suggested, we can use 'integral' for twice only when these two variables are independent to each other. But what if we can't seperate them? For instance:
fun = @(n,x,y) sin(n*x-y).*sqrt(x-n*y);
for i=1:1e3
integral2(@(x,y) fun(i,x,y),0,2*pi,0,2*pi);
end
Is there anaway to speed it up by vectorizing it?
祥宇 崔
祥宇 崔 2023 年 4 月 10 日
If you got any idea, here is my question.
Thanks!
https://ww2.mathworks.cn/matlabcentral/answers/1944314-how-to-vectorize-integral2

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeProgramming についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by