# Is there a simple way to deal with computing real nth roots for n a natural number?

Anonymous

I am trying to use the nth root for natural numbers in computations and display the result as a decimal to four places. I can't find a simple reference for these functions. Is there an nroot(x,n) function?

edit retag close merge delete

Sort by ยป oldest newest most voted

I don't think there is one but you can define one using a couple of lines of code

def nroot(x,n):
return x**(1/n).n()
nroot(8,3)

more

Not so easy when you try def nroot(x,n): return x**(1/n).n() nroot(-8,3) You don't get the real root- but instead: 1.00000000000000 + 1.73205080756888*I There's the rub. :(

( 2013-11-12 20:55:35 +0200 )edit

It is supposed to be complex. You cannot have real cube root for -8.

( 2013-11-12 21:01:39 +0200 )edit

You can't? I always thought -2 cubed was -8 ... :-) But it is true that Sage returns a sort of "primitive nth root" (whatever that means) by default.

( 2013-11-12 21:08:10 +0200 )edit

( 2013-11-12 21:09:46 +0200 )edit

Usually this comes up in plotting. See the Sage reference and search the page for "cube root".

sage: a = 2
sage: b = a.n()
sage: b
2.00000000000000
sage: b.nth_root(3)
1.25992104989487
sage: _^3 # _ means the previous output
2.00000000000000


There is an nth_root for real numbers like this, but be careful if you want to try this for plain old integers:

sage: a.nth_root(3)
---------------------------------------------------------------------------
<snip>
ValueError: 2 is not a 3rd power

more

"# _ means the previous input" or output? equivalent to "ans" in MATLAB. And we can use a.nth_root(3, truncate_mode = 1). --> (1, False).

( 2013-11-13 04:04:08 +0200 )edit

Yes, output of course - I'll edit that.

( 2013-11-13 08:54:11 +0200 )edit