簡體   English   中英

在R的復平面上有多個根

[英]Multiple roots in the complex plane with R

我一直試圖找到一個返回方程的所有復雜解的函數,例如:

16^(1/4) = 2+i0,  -2+i0,  0+i2,  0-i2

就目前而言,如果我在控制台中輸入16^(1/4) ,它只返回2.我可以為此編寫一個函數,但我想知道是否有一種簡單的方法在R中執行此操作。

你需要polyroot()

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

其中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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM