Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有R的复平面上的多重根_R_Complex Numbers - Fatal编程技术网

具有R的复平面上的多重根

具有R的复平面上的多重根,r,complex-numbers,R,Complex Numbers,我一直在试图找到一个函数,它返回方程的所有复杂解,例如: 16^(1/4) = 2+i0, -2+i0, 0+i2, 0-i2 目前,如果我在控制台中输入16^(1/4),它只返回2。我可以为此编写一个函数,但我想知道在R中是否有一种简单的方法可以做到这一点。您需要polyroot(): 其中,z是“多项式系数的递增顺序向量” 在上面的例子中,我传递给z的向量是这个等式的紧凑表示: -16x^0 + 0x^1 + 0x^2 + 0x^3 + 1x^4 = 0

我一直在试图找到一个函数,它返回方程的所有复杂解,例如:

16^(1/4) = 2+i0,  -2+i0,  0+i2,  0-i2
目前,如果我在控制台中输入
16^(1/4)
,它只返回2。我可以为此编写一个函数,但我想知道在R中是否有一种简单的方法可以做到这一点。

您需要
polyroot()

其中,
z
是“多项式系数的递增顺序向量”

在上面的例子中,我传递给
z
的向量是这个等式的紧凑表示:

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

                          x^4 - 16 = 0

                               x^4 = 16

                                 x = 16^(1/4)

编辑:

如果
polyroot
的语法让您感到困扰,您可以编写一个包装函数,为您提供一个更好(如果通用性较差)的界面:

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

nRoot@Andrie——这有用吗?@JoshO'Brien非常感谢。。但我不太喜欢语法。@NathanG——我添加了一些可能更符合您的喜好的东西。
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