The normal rules of pow_p
are violated in both cases:
help pow_p
pow_p Positive branch of the power function.
pow_p(X,P) computes a convex or concave branch of the power function:
P < 0: pow_p(X,P) = X.^P if X > 0, +Inf otherwise
0 <= P < 1: pow_p(X,P) = X.^P if X >= 0, -Inf otherwise
1 <= P : pow_p(X,P) = X.^P if X >= 0, +Inf otherwise
Both P and X must be real.Disciplined convex programming information: The geometry of pow_p(X,P) depends on the precise value of P, which must be a real constant: P < 0: convex and nonincreasing; X must be concave. 0 <= P < 1: concave and nondecreasing; X must be concave. 1 <= P : convex and nonmonotonic; X must be affine. In all cases, X must be real.
However, the first, but not the second, of 1/2^m
and 1/(2^m-1)
satisfies the special log-affine rules documented in Log of sigmoid function - #3 by mcg (that should be in the CVX Users’ Guide, but isn’t).
So you will have to manually reformulate.
1/(2^m-1) <= 10
can be reformulated as (approximately) m >= 0.1375
, which is an affine constraint, and therefore will be accepted by CVX.