|
From: | John B. Thoo |
Subject: | Re: Why is 2/3 not seen as rational? [was "plotting even function"] |
Date: | Tue, 22 Mar 2005 06:24:00 -0800 |
Henry, I'm glad that I could "contribute" to the list. :-DSeriously, though, my BIG THANK YOU goes to everyone who participated (and to those who may still participate) in this discussion for helping me to understand this a little better. Clearly, numerics has subtleties (for me) for which I need to watch. I have learnt from everyone's exchanges.
Cheers. ---John. On Mar 21, 2005, at 8:17 AM, Henry F. Mollet wrote:
WOW, I have to go back to school and learn about De Moivre's theorem to understand why Octave does what it does. I had blindly believed whatOctave/Gnuplot was graphing. Had no idea what John Thoo's "simple" questionwould lead to! Henry on 3/21/05 6:51 AM, Mike Miller at address@hidden wrote:On Mon, 21 Mar 2005, Paul Kienzle wrote:The cubed root function is multi-valued and Octave is choosing a different root than you expect. Look at -8 for example: x^3 + 8 has three roots: octave> roots([1,0,0,8]) ans = -2.0000 + 0.0000i 1.0000 + 1.7321i 1.0000 - 1.7321i Octave chooses one of them: octave> (-8).^(1/3) ans = 1.0000 + 1.7321iIt seems to 'choose' using De Moivre's theorem. For x > 0 and integer n != 0: -x = x * (cos(pi) + sin(pi)*i) (-x)^(1/n) = x^(1/n)*(cos(pi/n)+sin(pi/n)*i)As someone else pointed out, the abs function will force the answer to bea real integer: - Mapping Function: abs (Z) Compute the magnitude of Z, defined as |Z| = `sqrt (x^2 + y^2)'. For example, abs (3 + 4i) => 5 So, for x > 0 and integer n != 0, -abs((-x)^(1/n)) seems to give the desired answer when n is odd, but that isn't very helpful because -(x)^(1/n) gives the same answer when n is odd.On the other hand, this seems to do what the guy originally wanted (forscalar integer values of a and b and any real-valued x vector.): abs(rem(a,2))*abs(rem(b,2))*sign(x).*(abs(x).^(a/b)) +(1-abs(rem(a,2)))*abs(x).^(a/b) + abs(rem(a,2))*(1-abs(rem(b,2)))*x.^(a/b)Mike
------------------------------------------------------------- Octave is freely available under the terms of the GNU GPL. Octave's home on the web: http://www.octave.org How to fund new projects: http://www.octave.org/funding.html Subscription information: http://www.octave.org/archive.html -------------------------------------------------------------
[Prev in Thread] | Current Thread | [Next in Thread] |