Magnitude constraints on affine complex vectors

Many design problems involve complex variables and magnitude constraints. Such constraints can be often handled via SOCP.

The basic idea is that the magnitude of a complex number z = z_R + jmath z_I, with z_R,z_I the real and imaginary parts, can be expressed as the Euclidean norm of the 2-vector (z_R,z_I):

 |z| = sqrt{z_R^2+z_I^2} = left| left( begin{array}{c} z_R  z_Iend{array} right) right|_2.

For example, consider a problem involving a magnitude constraint on a complex number f(x), where x in mathbf{R}^n is a design variable, and the complex-valued function f : mathbf{R}^n rightarrow mathbf{C} is affine. The values of such a function can be written as

 f(x) = (a_R^Tx+b_R) + jmath (a_I^Tx+b_I),

where a_R,a_I in mathbf{R}^n, b_R,b_Iinmathbf{R}.

For t in mathbf{R}, the magnitude constraint

 |f(x)| le t

can be written as

 left| left( begin{array}{c} a_R^Tx+b_R  a_I^Tx+b_I end{array} right) right|_2 le t,

which is a second-order cone constraint on (x,t).