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

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?

回答(3 个)

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 = 
integrate 0 to a and multiply the result by 2

1 个评论

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?

请先登录,再进行评论。

syms x a real
I = int(simplify((1-x^2/a^2)^(3/2)),x,-a,a)
I = 

2 个评论

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 = 
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.

请先登录,再进行评论。

类别

在 帮助中心 和 File Exchange 中查找有关 Symbolic Math Toolbox 的更多信息

产品

版本

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by