# 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

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). 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. :(

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

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.