1) help cvx/abs
Disciplined convex/geometric programming information for abs:
abs(X) is convex and nonmonotonic in X. Therefore, according to
the strict rules of DCP, X must be affine. However, because of
its special structure, CVX considers the sign of X as well. So,
for instance, if X is known to be nonnegative, then abs(X)=X.
x' * v1 is affine (as a function of x) if v1 is constant. Therefore, abs(x' * v1) is convex and is formed in accordance with CVX's rules, and therefore
abs(x' * v1) <= beta
will be accepted by CVX.
2^x can be re-written as
exp(x*log(2)) , which will be accepted by CVX. CVX is smart enough to apparently do this transformation and accept
2^x directly, although I don't see the rule in the CVX Users' Guide which says that it will do so. I will let @mcg either acknowledge the opportunity to add such mention to the Users' Guide or point out which rule therein covers this.