R 与 Matlab 中的复数

Complex numbers in R vs. Matlab

我在使用R和Matlab时观察到以下现象。

当我将 log 应用于 R 中的负数时,我收到以下错误消息:

Warning message: In log(-1) : NaNs produced

但是,当我在 Matlab 中将 log 应用于负数时,我得到例如以下复数:

log(-1): 0.0000 + 3.1416i

log(-5): 1.6094 + 3.1416i

有什么方法可以在 R 中实现相同的行为吗?或者有什么支持 R 中的默认选项的吗?

log 当你首先给它复杂的时候给你复杂。

log(-1+0i)
# [1] 0+3.141593i
log(-5+0i)
# [1] 1.609438+3.141593i

我不知道为什么默认情况下它不提供执行此操作的选项,但话又说回来,我并不总是使用复数。

如果您想以编程方式执行此操作,可以使用 as.complex:

log(as.complex(-1))
# [1] 0+3.141593i

或者甚至让辅助函数为您简化它:

mylog <- function(x, ...) log(as.complex(x), ...)
mylog(-1)
# [1] 0+3.141593i