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

24 次查看(过去 30 天)
>> 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)

采纳的回答

Walter Roberson
Walter Roberson 2018-8-3
编辑:Walter Roberson 2018-8-3
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 个评论
Nathan Hardenberg
Nathan Hardenberg 2023-7-27
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

请先登录,再进行评论。

更多回答(1 个)

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

类别

Help CenterFile Exchange 中查找有关 Symbolic Math Toolbox 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by