Why does MATLAB (Symbolic Math Toolbox) not integrate this simple function.

1 view (last 30 days)
I am trying to integrate the following function symbolically, but MATLAB won't resolve this.
syms x a
int((1-x^2/a^2)^(3/2),x,-a,a)
ans = 
It should be and Wolfram Alpha calculates it without problem. Is there a way to get this result in MATLAB too?

Answers (3)

John D'Errico
John D'Errico on 3 Jun 2022
Edited: John D'Errico on 4 Jun 2022
Your problem is, you need to define a properly. So, if you do only this:
syms x a
I = int((1-x^2/a^2)^(3/2),x)
I = 
Now you see that MATLAB finds a solution, but it does not know anything about a. We can try this, but MATLAB is still confused.
simplify(subs(I,a) - subs(I,-a))
ans = 
The problem there is, if a takes on some general complex value, that result may not be a simple thing. The point being:
syms a
simplify(a*sqrt(-1/a^2))
ans = 
syms a real
simplify(a*sqrt(-1/a^2))
ans = 
For real a, that last one reduces to +/-i, depending on the sign of a.
syms a real positive
simplify(a*sqrt(-1/a^2))
ans = 
i
Only in the third case does a drop out completely.
So if we specify a more clearly.
syms x
syms a real positive
I = int((1-x^2/a^2)^(3/2),x)
I = 
simplify(subs(I,a) - subs(I,-a))
ans = 

Walter Roberson
Walter Roberson on 3 Jun 2022
integrate 0 to a and multiply the result by 2
  1 Comment
Sebastian Götz
Sebastian Götz on 3 Jun 2022
Thanks, for the workaround. However, shouldn't it work as well if I integrate directly from -a to a? Why can't MATLAB do it?

Sign in to comment.


Paul
Paul on 3 Jun 2022
syms x a real
I = int(simplify((1-x^2/a^2)^(3/2)),x,-a,a)
I = 
  2 Comments
Sebastian Götz
Sebastian Götz on 3 Jun 2022
This works as I hoped. Thanks. It is still strange that it works with the exponent 1/2
syms x a
int((1-x^2/a^2)^(1/2),x,-a,a)
ans = 
and with the exponent 2
int((1-x^2/a^2)^(2),x,-a,a)
ans = 
without the simplify but not with 3/2.
int((1-x^2/a^2)^(3/2),x,-a,a)
ans = 
Paul
Paul on 3 Jun 2022
Sometimes int() works in mysterious ways, I suppose. I believe I've seen other case where int() does not return a solution w/o manipulating the integrand into a different form.

Sign in to comment.

Products


Release

R2022a

Community Treasure Hunt

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

Start Hunting!