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

2 views (last 30 days)
Sebastian Götz on 3 Jun 2022
Edited: John D'Errico on 4 Jun 2022
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?

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 on 3 Jun 2022
integrate 0 to a and multiply the result by 2
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?

Paul on 3 Jun 2022
syms x a real
I = int(simplify((1-x^2/a^2)^(3/2)),x,-a,a)
I = ##### 2 CommentsShowHide 1 older comment
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.

R2022a

### Community Treasure Hunt

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

Start Hunting!