

complex {base}                               R Documentation

_C_o_m_p_l_e_x _V_e_c_t_o_r_s

_D_e_s_c_r_i_p_t_i_o_n_:

     These are basic functions which support complex arith-
     metic in R.  Complex vectors can be created with `com-
     plex'.  The vector can be specified either by giving
     its length, its real and imaginary parts, or modulus
     and argument.

_U_s_a_g_e_:

     complex(length.out = 0, real = numeric(), imaginary = numeric(),
             modulus = 1, argument = 0)
     as.complex(z)
     is.complex(z)

     Re(z)
     Im(z)
     Mod(z)
     Arg(z)
     Conj(z)

_D_e_t_a_i_l_s_:

     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.

_E_x_a_m_p_l_e_s_:

     ( z <- 0i ^ (-3:3) )
     all(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")

