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

1 visualización (últimos 30 días)
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?

Respuestas (3)

John D'Errico
John D'Errico el 3 de Jun. de 2022
Editada: John D'Errico el 4 de Jun. de 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 el 3 de Jun. de 2022
integrate 0 to a and multiply the result by 2
  1 comentario
Sebastian Götz
Sebastian Götz el 3 de Jun. de 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?

Iniciar sesión para comentar.


Paul
Paul el 3 de Jun. de 2022
syms x a real
I = int(simplify((1-x^2/a^2)^(3/2)),x,-a,a)
I = 
  2 comentarios
Sebastian Götz
Sebastian Götz el 3 de Jun. de 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 el 3 de Jun. de 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.

Iniciar sesión para comentar.

Etiquetas

Productos


Versión

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by