Find degree of non-polynomial expression in Matlab

11 次查看(过去 30 天)
Hi,
say i have an expression as such:
syms x
y = x^(-5/2)
how to find the exponent of x since y is not a polynomial. is it possible?
thanks

回答(2 个)

Star Strider
Star Strider 2014-7-15
Unfortunately not.
In theory,
xpnt = log(y)/log(x)
should work because it’s a fundamental log identity for conversion between log bases. The Symbolic Math Toolbox simply returns the symbolic expression, not the exponent.
Maybe in a future release...

Christopher Creutzig
That depends on what exactly you are looking for in the general case. Here's something that works in this particular one:
>> simplify(log(y)/log(x),'IgnoreAnalyticConstraints',true)
ans =
-5/2
(The result is valid in general, but simplification succeeds along a way that ignores branch cuts and is not universally valid.)
If your expression gets more complicated, you may need to use MuPAD functions directly:
>> feval(symengine,'ldegree',feval(symengine,'series',y,x))
ans =
-5/2
(If you want to look at the output of the feval(symengine,'series',y,x) part, I heartily recommend the pretty function.

Community Treasure Hunt

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

Start Hunting!

Translated by