Why matlab return me a complex number

14 vues (au cours des 30 derniers jours)
David
David le 27 Sep 2013
Hi, Why >>(-27)^(1/3) return me a complex number rather than -3??? I am curious about this. Please help.

Réponse acceptée

Andreas Goser
Andreas Goser le 27 Sep 2013
From the documentation
doc power
"Note that for a negative value X and a non-integer value Y, if the abs(Y) is less than one, the power function returns the complex roots. To obtain the remaining real roots, use the nthroot function."
  1 commentaire
David
David le 27 Sep 2013
Modifié(e) : David le 27 Sep 2013
Thanks very much. I also found an useful answer here: http://www.mathworks.com/support/solutions/en/data/1-15M1N/?solution=1-15M1N

Connectez-vous pour commenter.

Plus de réponses (2)

Edu Santos
Edu Santos le 21 Mai 2019
If instead you do:
(abs(-27))^(1/3)
you may have the good absolute value with the bad sign.
Storing the sign in a term, for example like this:
-27/abs(-27)
we can arrive to the expected answer by doing:
-27/abs(-27)*(abs(-27))^(1/3)
=-3
A simpler way is to just do
nthroot(-27,3)
=-3

Azzi Abdelmalek
Azzi Abdelmalek le 27 Sep 2013
% By definition a^n=exp(n*log(a))
% also if a is a positive real number, log(-a)=log(a)+j*pi
a=-27;
n=1/3
out1=exp(n*log(a))
%the same as
out2=a^n

Catégories

En savoir plus sur Special Functions dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by