MATLAB Answers

0

Efficient way to compute a double integral within a double integral

Igor Dakic さんによって質問されました 2019 年 6 月 6 日
最新アクティビティ Torsten
さんによって コメントされました 2019 年 6 月 11 日
Hi all,
I would like to know what is the easiest and most efficient way to solve the integration shown in the figure attached.integration.JPG
I tried the following code, but it doesn't work:
R1 = @(x1,x2) integral2(@(x3,x4) fun_g(x1,x2,x3,x4),l3,u3,l4,u4);
R = integral2(R1.*@fun_f,l1,u1,l2,u2);
function f = fun_f(x1,x2)
% here we define f function (it is a rather complex function)
end
function g = fun_g(x1,x2,x3,x4)
% here we define g function (it is a rather complex function)
end
Thanks in advance!

  0 件のコメント

サインイン to comment.

1 件の回答

回答者: Torsten
2019 年 6 月 7 日
編集済み: Torsten
2019 年 6 月 7 日
 採用された回答

function main
l1 = ...;
u1 = ...;
l2 = ...;
u2 = ...;
value_outer_integral = integral2(@fun,l1,u1,l2,u2)
end
function value_inner_integral = fun(x1,x2)
l3 = ...;
u3 = ...;
l4 = ...;
u4 = ...;
for i = 1:numel(x1)
value_inner_integral(i) = fun_f(x1(i),x2(i))*integral2(@(x3,x4)driver_fun_g(x1(i),x2(i),x3,x4),l3,u3,l4,u4);
end
end
function g = driver_fun_g(x1,x2,x3,x4)
for i = 1:numel(x3)
g(i) = fun_g(x1,x2,x3(i),x4(i));
end
end
function f = fun_f(x1,x2)
% return f(x1,x2) for scalar values of x1 and x2
end
function g = fun_g(x1,x2,x3,x4)
% return g(x1,x2,x3,x4) for scalar values of x1, x2, x3 and x4
end

  2 件のコメント

Igor Dakic 2019 年 6 月 8 日
Thanks! Is it possible to avoid loops and vectorize parts for value_inner_integral(i) and g(i)?
Torsten
2019 年 6 月 11 日
For "value_inner_integral", the answer is no.
For "driver_fun_g": If you can evaluate g for arrays of x1, x2 x3 and y4, the answer is yes.

サインイン to comment.



Translated by