Inconsistent results from "int" function

Hi, everyone. For the same question, the "int" function provided me with different results.
syms x y
int(x*y/24+y^2/48,x)
int((y*(2*x + y))/48,x)
The second line gave me "(x*y*(x + y))/48" which was what I originally wanted,
but the third line gave me "'(y*(2*x + y)^2)/192" which is wrong.
Can anyone explain the reason?
Thanks for your time and help in advance!

 Accepted Answer

You can express '(y*(2*x + y)^2)/192 as (x*y*(x + y))/48+y^3/198
As far as the integral is concerned y is a constant, so the two results are the same to within a constant, which is all you can guarantee from an integral with no specific limits.

5 Comments

Dear Alan,
Thanks for your kind answer. I am also aware that the problem is about an indefinite integral, and the result may get involved with a constant. However, I think there is no mathematically-valid reason that the constant can be specified as y^3/192. If this is how the "int" function works, it seems the function cannot be used for indefinite integral problems...
However, I think there is no mathematically-valid reason that the constant can be specified as y^3/192.
There is a mathematically-valid reason that each function f that only depends on y can be specified as the constant of integration. The reason is d/dx(f(y)) = 0.
MATLAB does not perform an "evaluation of the most beautiful antiderivative".
In this case, you can use
syms x y
int(x*y/24+y^2/48,x,0,x)
ans = 
int((y*(2*x + y))/48,x,0,x)
ans = 
But in other examples, the lower limit might be different from 0 to get a "nice" antiderivative.
Dear Torsten,
I appreciate you on your detailed explanation. I agree with you that "any" function f that only depends on y can be the constant of the integration in my problem. However, I am still doubting whether it is reasonable to provide only one specific function for y (e.g., y^3/192 in my case) as output, as if it were the only and unique answer...
I believe, for my problem, providing something like "(x*y*(x + y))/48+C (where C is a constant)" as output would be more appropriate.
Anyway, I got your point and also thank you for sharing your tip.
I believe, for my problem, providing something like "(x*y*(x + y))/48+C (where C is a constant)" as output would be more appropriate.
"(x*y*(x + y))/48+C(y) (where C is a function solely depending on y)"
Oh, sure. Thanks for the correction!

Sign in to comment.

More Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!