complex                 package:base                 R Documentation

Complex Vectors

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, ...)
     is.complex(x)

     Re(x)
     Im(x)
     Mod(x)
     Arg(x)
     Conj(x)

Arguments:

length.out: numeric.  Desired length of the output vector, inputs being
          recycled as needed.

    real: numeric vector.

imaginary: numeric vector.

 modulus: numeric vector.

argument: numeric vector.

       x: an object, probably of mode `complex'.

     ...: further arguments passed to or from other methods.

Details:

     Complex vectors can be created with `complex'.  The vector can be
     specified either by giving its length, its real and imaginary
     parts, or modulus and argument. (Giving just the length generates
     a vector of complex zeroes.)

     Note that `is.complex' and `is.numeric' are never both `TRUE'.

     The functions `Re', `Im', `Mod', `Arg' and `Conj' have their usual
     interpretation as returning the real part, imaginary part,
     modulus, argument and complex conjugate for complex values.
     Modulus and argument are also called the polar coordinates. If z =
     x + i y with real x and y, `Mod'(z) = sqrt{x^2 + y^2}, and for
     phi= Arg(z), x = cos(phi) and y = sin(phi).

     In addition, the elementary trigonometric, logarithmic and
     exponential functions are available for complex values.

Examples:

     ( z <- 0i ^ (-3:3) )
     stopifnot(Re(z) == 0 ^ (-3:3))
     matrix(1i^ (-6:5), nr=4)#- all columns are the same
     0 ^ 1i # a complex NaN

     ## create a complex normal vector
     z <- complex(real = rnorm(100), imag = rnorm(100))
     ## or also (less efficiently):
     z2 <- 1:2 + 1i*(8:9)

     all(Mod ( 1 -  sin(z) / ( (exp(1i*z)-exp(-1i*z))/(2*1i) ))
         < 100*.Machine$double.eps)
     ## The Arg(.) is an angle:
     zz <- (rep(1:4,len=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")

