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

13 Ansichten (letzte 30 Tage)
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?

Akzeptierte Antwort

Paul
Paul am 20 Nov. 2021
Bearbeitet: Paul am 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

Weitere Antworten (1)

Walter Roberson
Walter Roberson am 20 Nov. 2021
Bearbeitet: Walter Roberson am 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 Kommentare
Jame Tran
Jame Tran am 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 am 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

Melden Sie sich an, um zu kommentieren.

Produkte


Version

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by