complex
位于 base
包(package)。 说明
支持复杂算术的基本函数R,除了算术运算符+
,-
,*
,/
, 和^
.
用法
complex(length.out = 0, real = numeric(), imaginary = numeric(),
modulus = 1, argument = 0)
as.complex(x, ...)
is.complex(x)
Re(z)
Im(z)
Mod(z)
Arg(z)
Conj(z)
参数
length.out |
数字。输出向量的所需长度,根据需要回收输入。 |
real |
数值向量。 |
imaginary |
数值向量。 |
modulus |
数值向量。 |
argument |
数值向量。 |
x |
一个对象,可能是 |
z |
模式 |
... |
传入或传出其他方法的进一步参数。 |
细节
可以使用 complex
创建复杂向量。可以通过给出向量的长度、实部和虚部或模数和参数来指定向量。 (仅给出长度就会生成一个由复数零组成的向量。)
as.complex
尝试将其参数强制为复杂类型:例如as.vector
它会删除包括名称在内的属性。取决于R版本 3.2.x,所有形式NA
和NaN
被胁迫到一个复杂的NA
,即NA_complex_
常数,其实部和虚部均为NA
.自从R3.3.0,通常仅是以下对象NA
部分被强制复杂化NA
,但其他人与NaN
零件,是不是。因此,复杂的算术仅NaN
的(但没有NA
的)通常会涉及不是给出复杂的NA
但具有实部或虚部的复数NaN
.
请注意, is.complex
和 is.numeric
永远不会同时是 TRUE
。
函数 Re
、 Im
、 Mod
、 Arg
和 Conj
具有通常的解释,即返回复数值的实部、虚部、模数、自变量和复共轭。模数和参数也称为极坐标。如果 与实数 和 ,则为 和 、 和 。它们都是 internal generic primitive 函数:可以单独为它们定义方法,也可以通过 Complex
组泛型定义方法。
除了算术运算符(参见 Arithmetic )、+
、 -
、 *
、 /
和 ^
之外,还为复数实现了初等三角函数、对数函数、指数函数、平方根函数和双曲函数。值。
矩阵乘法( %*%
、 crossprod
、 tcrossprod
)也为复数矩阵( matrix
)定义,solve
、 eigen
或 svd
也是如此。
在内部,复数存储为一对 double 精度数,其中一个或两个可以是 NaN
(包括 NA
,请参阅 NA_complex_
及以上)或正负无穷大。
S4方法
as.complex
是原始的,可以设置 S4 方法。
Re
、Im
、Mod
、Arg
和 Conj
构成 S4 组通用 Complex
,因此可以单独或通过组通用为它们设置 S4 方法。
注意
涉及复杂的操作和函数NaN
主要依赖于 C 库对‘的处理双重复合体’ 算术,通常返回complex(re=NaN, im=NaN)
(但我们还没有看到对此的保证)。为了+
和-
,R自己的处理工作严格“coordinate wise”。
涉及复杂 NA
的操作,即 NA_complex_
,返回 NA_complex_
。
例子
require(graphics)
0i ^ (-3:3)
matrix(1i^ (-6:5), nrow = 4) #- all columns are the same
0 ^ 1i # a complex NaN
## create a complex normal vector
z <- complex(real = stats::rnorm(100), imaginary = stats::rnorm(100))
## or also (less efficiently):
z2 <- 1:2 + 1i*(8:9)
## The Arg(.) is an angle:
zz <- (rep(1:4, length.out = 9) + 1i*(9:1))/10
zz.shift <- complex(modulus = Mod(zz), argument = Arg(zz) + pi)
plot(zz, xlim = c(-1,1), ylim = c(-1,1), col = "red", asp = 1,
main = expression(paste("Rotation by "," ", pi == 180^o)))
abline(h = 0, v = 0, col = "blue", lty = 3)
points(zz.shift, col = "orange")
## as.complex(<some NA>) --> NA_complex_
NAs <- vapply(list(NA, NA_integer_, NA_character_, NA_real_, NA_complex_),
as.complex, 0+0i)
stopifnot(identical(NA_complex_, unique(NAs)))
showC <- function(z) noquote(sprintf("(R = %g, I = %g)", Re(z), Im(z)))
## The exact result of this *depends* on the platform, compiler, math-library:
(NpNA <- NaN + NA_complex_) ; str(NpNA) # *behaves* as 'cplx NA' ..
stopifnot(is.na(NpNA), is.na(NA_complex_), is.na(Re(NA_complex_)), is.na(Im(NA_complex_)))
showC(NpNA)# but does not always show '(R = NaN, I = NA)'
## and this is not TRUE everywhere:
identical(NpNA, NA_complex_)
showC(NA_complex_) # always == (R = NA, I = NA)
参考
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
也可以看看
Arithmetic
; polyroot
查找 次多项式的所有 复数根。
相关用法
- R comment 查询或设置“评论”属性
- R commandArgs 提取命令行参数
- R col 列索引
- R conditions 状况处理和恢复
- R connections 操作连接的函数(文件、URL...)
- R colSums 形成行和列的总和及平均值
- R conflicts 在搜索路径上搜索被遮罩的对象
- R colnames 行和列名称
- R chartr 字符翻译和装箱
- R chol2inv Cholesky(或 QR)分解的逆分解
- R cumsum 累积和、乘积和极值
- R character 字符向量
- R c 将值组合到向量或列表中
- R cut 将数字转换为因子
- R class 对象类
- R chooseOpsMethod 选择适当的操作方法
- R chol 乔列斯基分解
- R cbind 按行或列组合 R 对象
- R crossprod 矩阵叉积
- R curlGetHeaders 从 URL 中检索标头
- R cat 连接并打印
- R capabilities 此 R 版本的报告函数
- R callCC 调用当前延续
- R call 函数调用
注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Complex Numbers and Basic Functionality。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。