Efficient way to compute a double integral within a double integral
7 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Igor Dakic
am 6 Jun. 2019
Kommentiert: Torsten
am 11 Jun. 2019
Hi all,
I would like to know what is the easiest and most efficient way to solve the integration shown in the figure attached.
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 Kommentare
Akzeptierte Antwort
Torsten
am 7 Jun. 2019
Bearbeitet: Torsten
am 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 Kommentare
Torsten
am 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.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Logical finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!