Why matlab return me a complex number

Hi, Why >>(-27)^(1/3) return me a complex number rather than -3??? I am curious about this. Please help.

 Respuesta aceptada

Andreas Goser
Andreas Goser el 27 de Sept. de 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."

Más respuestas (2)

Edu Santos
Edu Santos el 21 de Mayo de 2019

1 voto

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 el 27 de Sept. de 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

Etiquetas

Preguntada:

el 27 de Sept. de 2013

Respondida:

el 21 de Mayo de 2019

Community Treasure Hunt

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

Start Hunting!

Translated by