Multiple roots in the complex plane with R

complex-numbers, r

Solution

You need `polyroot()`:

polyroot(z = c(-16,0,0,0,1))
# [1]  0+2i -2-0i  0-2i  2+0i

Where `z` is a "vector of polynomial coefficients in increasing order".

The vector I passed to `z` in the example above is a compact representation of this equation:

-16x^0 + 0x^1 + 0x^2 + 0x^3 + 1x^4 = 0

                          x^4 - 16 = 0

                               x^4 = 16

                                 x = 16^(1/4)

Edit:

If `polyroot`'s syntax bothers you, you just could write a wrapper function that presents you with a nicer (if less versatile) interface:

nRoot <- function(x, root) {
    polyroot(c(-x, rep(0, root-1), 1))
}
nRoot(16, 4)
# [1]  0+2i -2-0i  0-2i  2+0i
nRoot(16, 8)
# [1]  1.000000+1.000000i -1.000000+1.000000i -1.000000-1.000000i
# [4]  1.000000-1.000000i  0.000000+1.414214i -1.414214-0.000000i
# [7]  0.000000-1.414214i  1.414214+0.000000i

Problem

I've been trying to find a function that returns all complex solutions of an equation such as: ``` 16^(1/4) = 2+i0, -2+i0, 0+i2, 0-i2 ``` As it stands, if I enter `16^(1/4)` into the console, it only returns 2. I can write a function for this but I was wondering if there is a simple way to do this in R.

Original source