> I'm somewhat disturbed by the following behaviour on octave. Perhaps it

> is standard and I shouldn't be worried but it surprised me. Consider the

> following question: what is the cube root of -1? Clearly the answer

> should be -1. Now ask octave

>

> octave:1> x = (-1)^(1/3)

> x = 0.50000 + 0.86603i

>

> it gets wierder if you now cube that number

>

> octave:2> x^3

> ans = -1.0000e+00 + 1.2246e-16i

>

> This is pretty close to the truth but still strange to my way of thinking.

> Similar wierdness shows up with other fractional powers: 1/5, 1/7, etc.

>

> Any thoughts?

>

> Heber Farnsworth | Department of Finance

> Univerity of Washington | Box 353200

> tele: (206) 528-0793 home | Seattle, WA 98195-3200

> tele: (206) 543-4773 finance web:

http://weber.u.washington.edu/~heberf> fax: (206) 685-9392 email:

[hidden email]
>

I think that Octave, Matlab and all the others (even Fortran! I tried

it right now!!.) performs z^(1/3) as:

z^(1/3)=exp(1/3*log(z))

log(z) is multi-valued and the standard definition is log(z) real over

the positive real axis and with a branch-cut in the negative real

axis. For z strictly on the negative real axis it gives:

log(z)=log(|z|) + i*pi

and then z^(1/3) is computed as:

z^(1/3)=exp(1/3*(log(|z|) + i*pi))

=|z|^(1/3)* exp(i*pi/3)

which is the solution given by Octave. If you add a small negative

imaginary part, then you cross the branch-cut and then:

log(z)=log(|z|) - i*pi

and the result will be:

z^(1/3)=exp(1/3*(log(|z|) - i*pi))

=|z|^(1/3)* exp(-i*pi/3)

> octave:9> (-1-i*1e-15)^(1/3)

> ans = 0.50000 - 0.86603i

Mario

%%%%%%<>%%%%%%<>%%%%%%<>%%%%%%<>%%%%%%<>%%%%%%<>%%%%%%<>%%%%%%<>%%%%%%<>%%%

Mario Alberto Storti | Fax: (54)(42) 55.09.44 |

Grupo de Tecnologia Mecanica | Tel: (54)(42) 55.91.75 |

INTEC, Guemes 3450 - 3000 Santa Fe |

http://venus.unl.edu.ar/gtm-eng.html |

Argentina | Home: Gob. Vera 3161 |

Reply:

[hidden email] | (54)(42) 55.00.23 |