Quantcast
Channel: MATLAB Central Newsreader Recent Posts
Viewing all articles
Browse latest Browse all 19628

Re: Matlab wrong cubic root

$
0
0
> On 12/15/2012 12:19 PM, sergio_r@mail.com wrote:
> > Hello all,
> >
> > Is there a way of telling matlab to return first a real root
> > instead of a complex one?
> >
> > For some strange reason matlab seems not to handle cubic roots
> > properly. Apparently the default behaviour is to first
> > report a complex root. Let's see two examples:
> >
> >>> (-1/2)^(1/3)
> >
> > ans =
> >
> > 0.3969 + 0.6874i
> >
> >>> (-1/2)^(2/3)
> >
> > ans =
> >
> > -0.3150 + 0.5456i
> >
> > Thanks in advance.
- - - - - - - - - -
  Matlab's answer to cube roots is consistent with its handling of the n-th roots of complex numbers. If you have a complex number in polar form

 z = r*exp(theta*i), r >=0, -pi < theta <= pi,

the principal n-th root returned is this

 z^(1/n) = r^(1/n)*exp(theta/n*i)

just as you would expect. If you follow this rule where z is real but negative as with your z = -1/2, you get

 -1/2 = 1/2*exp(pi*i) <-- This is the standard polar form

 (-1/2)^(1/3) = (1/2)^(1/3)*exp(pi/3*i) = 0.396850263 + 0.687364819*i

It does make sense.

  If you want the real cube root of any real number x, positive or negative, you can do it with

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

which is admittedly awkward but it works.

Roger Stafford

Viewing all articles
Browse latest Browse all 19628

Trending Articles