symbolic integration depends on different equivalent forms of function

1 Ansicht (letzte 30 Tage)
Michal
Michal am 15 Jul. 2022
Kommentiert: Michal am 17 Jul. 2022
I performed the following equaivalent symbolic integrations:
syms x y
A = int(x+y,x);
A_ = expand(A); % just expanded (equaivalent) form of A
B = expand(int(A,y))
B_ = expand(int(A_,y))
with the following results:
A =
(x*(x + 2*y))/2
A_ =
x^2/2 + y*x
B =
x^3/8 + (x^2*y)/2 + (x*y^2)/2
B_ =
(x^2*y)/2 + (x*y^2)/2
I expect B equal to B_, but there is a misterious additional term x^3/8 at B ??!!
Is that a bug???

Antworten (2)

Torsten
Torsten am 15 Jul. 2022
The difference is a usual "constant of integration".
If you differentiate both B and B_ with respect to y and then with respect to x, you'll arrive at the expression x+y in both cases:
syms x y
B_ = (x^2*y)/2 + (x*y^2)/2;
B = x^3/8 + (x^2*y)/2 + (x*y^2)/2;
A_ = diff(B_,y);
A = diff(B,y);
expr1 = diff(A_,x)
expr1 = 
expr2 = diff(A,x)
expr2 = 
  7 Kommentare
Torsten
Torsten am 15 Jul. 2022
I'm not surprised that
int((x*(x + 2*y))/2,y)
gives a result different from
int(x^2/2 + y*x,y).
See
syms x
int((x-1)^2,x)
ans = 
compared to
int(x^2-2*x+1,x)
ans = 
Paul
Paul am 15 Jul. 2022
Bearbeitet: Paul am 15 Jul. 2022
I'm not surprised either. I've seen cases where int() couldn't find a solution unless the integrand was manipulated using simplify, expand, etc. Here is an example from this Question
syms t
assume(t, "real")
f1 = 3*t-t*t*t;
f2 = 3*t*t;
f = [f1, f2];
df = diff(f, t);
a = 0;
b = 1;
normDf = sqrt(df(1)*df(1)+df(2)*df(2));
int(normDf,t,a,b) % no solution
ans = 
normDf = simplify(normDf)
normDf = 
int(normDf, t, a, b) % easy
ans = 
4

Melden Sie sich an, um zu kommentieren.


Michal
Michal am 16 Jul. 2022
Bearbeitet: Michal am 16 Jul. 2022
Simple solution to avoid integration constant effect:
int(f(x),x,0,x)
  4 Kommentare
Torsten
Torsten am 16 Jul. 2022
Bearbeitet: Torsten am 16 Jul. 2022
syms x y
A1 = int(sin(x)+sin(y),x,0,x);
B1 = int(A1,y,0,y)
B1 = 
simplify(B1)
ans = 
A2 = int(sin(x)+sin(y),x);
B2 = int(A2,y)
B2 = 
You see, the integration constant of your method is x+y.
All I want to say is:
Each integration gives its individual integration constant. For the differential equation
d/dx (d/dy(F(x,y))) = x+y
e.g., the "integration constants" are functions of the form
G(x,y) = g1(x) + g2(y)
unless you fix F on a curve in the (x,y) plane (not parallel to one of he coordiante axes).
Some integration constants look more plausible, others less.
And now I will be quiet and you can have "the last word", if you want.

Melden Sie sich an, um zu kommentieren.

Produkte


Version

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by