I am trying to implement the Eisenbger’s convex formulation in CVX, which is as follows:

Given matrix A(m,n), vector e(1,m), and negative integer rho

variables x(m,n), and u(m,1);

$$max: \sum_{i=1}^m e(i)*log(u(i))$$

subject to:

$$u(i)=(\sum_{j=1}^n A(i,j) x(i,j)^\rho)^{1/\rho},\ \ \forall 1<= i<= m $$

$$\sum_{i=1}^m x(i,j) \le 1,\ \ \ \forall 1<=j<=n; \ \ \ \ x\ge 0$$

**Here is my attempt that gives DCP error “Illegal operation: log( {convex} ).”… Kindly help resolve this.**

```
rho=-1
for i=1:1:m
C=[C eye(n)];
end;
variable x(m*n);
expression u(m);
for i=1:1:m
u(i)=0;
for j=1:1:n
u(i)=u(i)+(abs(A(i,j))\*pow_p(x((i-1)*m+j),-abs(rho)));
end;
end;
dual variable p;
maximize((-1/abs(rho))\*e*log(u));
subject to
p: C*x <= ones(n,1);
x>=0;
cvx_end
```