具有R的复平面中的多个根 [英] Multiple roots in the complex plane with R

查看:80
本文介绍了具有R的复平面中的多个根的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

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

就目前而言,如果我在控制台中输入 16 ^(1/4),它只会返回2。我可以为此编写一个函数,但是我想知道是否有

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.

推荐答案

您需要 polyroot()

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

其中 z 是多项式系数的升序向量。

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

在上面的示例中,我传递给 z 的向量是该方程的紧凑表示:

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)






编辑:

如果 polyroot 的语法使您感到困扰,您只需要编写一个包装函数即可为您提供更好的(如果通用性较差)接口:

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

这篇关于具有R的复平面中的多个根的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆