Rev 49567 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
% File src/library/base/man/complex.Rd% Part of the R package, http://www.R-project.org% Copyright 1995-2007 R Core Development Team% Distributed under GPL 2 or later\name{complex}\title{Complex Vectors}\alias{complex}\alias{as.complex}\alias{is.complex}\alias{Re}\alias{Im}\alias{Mod}\alias{Arg}\alias{Conj}\description{Basic functions which support complex arithmetic in R.}\usage{complex(length.out = 0, real = numeric(), imaginary = numeric(),modulus = 1, argument = 0)as.complex(x, \dots)is.complex(x)Re(z)Im(z)Mod(z)Arg(z)Conj(z)}\arguments{\item{length.out}{numeric. Desired length of the output vector,inputs being recycled as needed.}\item{real}{numeric vector.}\item{imaginary}{numeric vector.}\item{modulus}{numeric vector.}\item{argument}{numeric vector.}\item{x}{an object, probably of mode \code{complex}.}\item{z}{an object of mode \code{complex}, or one of a class for whicha methods has been defined.}\item{\dots}{further arguments passed to or from other methods.}}\details{Complex vectors can be created with \code{complex}. The vector can bespecified either by giving its length, its real and imaginary parts, ormodulus and argument. (Giving just the length generates a vector ofcomplex zeroes.)\code{as.complex} attempts to coerce its argument to be of complextype: like \code{\link{as.vector}} it strips attributes includingnames. All forms of \code{NA} and \code{NaN} are coerced to a complex\code{NA}, for which both the real and imaginary parts are \code{NA}.Note that \code{is.complex} and \code{is.numeric} are never both\code{TRUE}.The functions \code{Re}, \code{Im}, \code{Mod}, \code{Arg} and\code{Conj} have their usual interpretation as returning the realpart, imaginary part, modulus, argument and complex conjugate forcomplex values. Modulus and argument are also called the \emph{polarcoordinates}. If \eqn{z = x + i y} with real \eqn{x} and \eqn{y}, for\eqn{r = Mod(z) = \sqrt{x^2 + y^2}}, and \eqn{\phi = Arg(z)},\eqn{x = r*\cos(\phi)} and \eqn{y = r*\sin(\phi)}. They are all genericfunctions: methods can be defined for them individually or via the\code{\link[=S3groupGeneric]{Complex}} group generic.In addition, the elementary trigonometric, logarithmic and exponentialfunctions are available for complex values.\code{as.complex} and \code{is.complex} are \link{primitive}, sopositional matching is used and any names of supplied arguments areignored. This may not be true of methods for \code{as.complex}.}\section{S4 methods}{\code{as.complex} is primitive and can have S4 methods set.\code{Re}, \code{Im}, \code{Mod}, \code{Arg} and \code{Conj}constitute the S4 group generic\code{\link[=S4groupGeneric]{Complex}} and so S4 methods can beset for them individually or via the group generic.}\references{Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988)\emph{The New S Language}.Wadsworth & Brooks/Cole.}\examples{require(graphics)0i ^ (-3:3)matrix(1i^ (-6:5), nrow=4) #- all columns are the same0 ^ 1i # a complex NaN## create a complex normal vectorz <- 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,len=9) + 1i*(9:1))/10zz.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")}\keyword{complex}