MatLAB do not simplify (a^2)^(1/2) in symbolic ToolBox?

24 views (last 30 days)
>> simplify((cos(phymi)^2)^(1/2), 3000)
ans =
(cos(phymi)^2)^(1/2)
>> rewrite (((cos(phymi))^2)^(1/2), 'exp')
ans =
((exp(-phymi*1i)/2 + exp(phymi*1i)/2)^2)^(1/2)
>> simplify((phymi^2)^(1/2), 5000)
ans =
(phymi^2)^(1/2)

Accepted Answer

Walter Roberson
Walter Roberson on 3 Aug 2018
Edited: Walter Roberson on 3 Aug 2018
MATLAB assumes that symbols might have complex values unless you tell it they are not complex. For complex values, sqrt(x^2) is not the same as x. For that matter, sqrt(x^2) is not the same as x even just for negative real values.
If you know for sure that your values are nonnegative, then add an assumption about that, such as
syms phymi
assume(phymi >= 0)
  1 Comment
Nathan Hardenberg
Nathan Hardenberg on 27 Jul 2023
You can also assume directly:
syms a
syms b real
syms c positive
syms d real positive
A = simplify( sqrt(a^2) )
A = 
B = simplify( sqrt(b^2) )
B = 
C = simplify( sqrt(c^2) )
C = 
c
D = simplify( sqrt(d^2) )
D = 
d

Sign in to comment.

More Answers (1)

Star Strider
Star Strider on 3 Aug 2018
It does:
syms phymi
a = simplify((cos(phymi)^2)^(1/2), 'Steps',3000, 'IgnoreAnalyticConstraints',1)
a =
cos(phymi)

Categories

Find more on Symbolic Math Toolbox in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!