Efficient way to compute a double integral within a double integral

4 views (last 30 days)
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!

Accepted Answer

Torsten
Torsten on 7 Jun 2019
Edited: Torsten on 7 Jun 2019
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 Comments
Igor Dakic
Igor Dakic on 8 Jun 2019
Thanks! Is it possible to avoid loops and vectorize parts for value_inner_integral(i) and g(i)?
Torsten
Torsten on 11 Jun 2019
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.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!