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

48 visualizaciones (últimos 30 días)
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?

Respuesta aceptada

Paul
Paul el 20 de Nov. de 2021
Editada: Paul el 20 de Nov. de 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

Más respuestas (1)

Walter Roberson
Walter Roberson el 20 de Nov. de 2021
Editada: Walter Roberson el 20 de Nov. de 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 comentarios
Jame Tran
Jame Tran el 20 de Nov. de 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 el 20 de Nov. de 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

Iniciar sesión para comentar.

Categorías

Más información sobre Symbolic Math Toolbox en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by