具有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