Using symbolic integration: Why does my double integral returns different numerical values depending on integration order?

40 views (last 30 days)
I have the double integral . Using int and double to numerically evaluate this I get:
syms x y
fun1 = @(x, y) (112).*exp(-7.*x-9.*y);
a = int(int(fun1, y, 1/4), y, 0, 1);
double(a)
ans = 0.6911
If I change the order of integration and integrate , I get the correct answer.
syms x y
fun = @(x, y) (112).*exp(-7.*x-9.*y);
b = int(int(fun, y, 0, x), x, 0, 1/4);
double(b)
ans = 0.7053
Why is this the case?

Accepted Answer

Paul
Paul on 20 Nov 2021
Edited: Paul on 20 Nov 2021
Comment: I'm not going to use the anonymous functions because, as far as I know, those are invalid inputs to int and I don't know how int is working with those inputs.
In short: the limits of integration in the two integrals do not cover the same area in the x-y plane.
Because the question states that that second integral is correct, let's start with that
syms x y
f(x,y) = (112).*exp(-7.*x-9.*y);
I1 = int(int(f(x,y),y,0,x,'hold',true),x,0,sym(1)/sym(4),'hold',true)
I1 = 
I1 = release(I1)
I1 = 
double(I1)
ans = 0.7053
I1 is the integral of f(x,y) over the blue triangular area
area(0:.01:.25,0:.01:.25)
So, if we want reverse the order of integration then we see that for each value of y, x varies from y to 1/4, and y varies from 0 to 1/4. However, the question shows the limits of integration on y from 0 to 1.
I2 = int(int(f(x,y),x,y,sym(1)/sym(4),'hold',true),y,0,sym(1)/sym(4),'hold',true)
I2 = 
I2 = release(I2)
I2 = 
simplify(I1 - I2)
ans = 
0

More Answers (1)

Walter Roberson
Walter Roberson on 20 Nov 2021
Edited: Walter Roberson on 20 Nov 2021
syms x y
fun1 = @(x, y) (112).*exp(-7.*x-9.*y);
int(fun1, y, 1/4)
ans = 
Which variable did it integrate with respect to? Answer: x by default, since x is the first variable returned by symvar()
symvar(sym(fun1))
ans = 
So we can put the variable in explicitly
a = int(int(fun1, x, y, 1/4, 'hold', true), y, 0, 1, 'hold', true)
a = 
and that matches the formula you asked to integrate.
Now let us try your other version:
fun = @(x, y) (112).*exp(-7.*x-9.*y);
b = int(int(fun, y, 0, x, 'hold', true), x, 0, 1/4, 'hold',true)
b = 
Is that the same? Notice that the -7 here matches to the integration range 0 to 1/4, whereas the original that you said you wanted to integrate, the -7 is associated with the integration range y to 1/4 .
The two are not equivalent.
  6 Comments
Jame Tran
Jame Tran on 20 Nov 2021
Hi Walter,
I am saying they should calculate the same result, since they're integrating the same function over the same triangular area right? I'm still a student so I might be misunderstanding something haha.
Walter Roberson
Walter Roberson on 20 Nov 2021
Both integrals are over the triangular area defined by y < x < 1/4, 0 < y < 1 right?
No. Your second integral implies y <= x, but your first integral implies x <= y

Sign in to comment.

Categories

Find more on Symbolic Math Toolbox in Help Center and File Exchange

Products


Release

R2021b

Community Treasure Hunt

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

Start Hunting!