2

Using MATLAB exponential function:

(-8)^0.333333
ans = 1.0000 + 1.7320i

How to get (-8)^0.333333 = -2 instead?

x=-10:-1;
x.^0.333333

How to get real value?

How to redefine ^:

x.^y

to

sign(x).*abs(x.^y))
Amro
  • 123,847
  • 25
  • 243
  • 454
h02h001
  • 167
  • 4
  • 11

2 Answers2

4

There are 3 possible answers for the cube root of -8: -2, 1+/- sqrt(3)

You probably want nthroot(-8,3) --> -2

Foo Bah
  • 25,660
  • 5
  • 55
  • 79
3

MATLAB 7.0 provides the NTHROOT function, which returns the real roots of a number. So your formula becomes NTHROOT(-8, 3) = -2

If you are using a version prior to MATLAB 7.0 (R14), please read the following:

To obtain the real cube root of a negative real number "x", rather than executing:

x.^(1/3)

use the command:

sign(x).*abs(x.^(1/3))

This will find the absolute value of the root and modify it by the sign of the argument.

See this

evgeny
  • 2,564
  • 17
  • 27