Hello, everyone, when I try to solve the following problems:

For the first constraint (`I`

is an identity matrix) , I try to code as

`L == diag(sum(W,2))- W + 1/(sigma)*I`

However, the following error occurs

**Disciplined convex programming error:**

**Cannot perform the operation: {positive constant} ./ {real affine}**

because of `1/(sigma)*I`

.

To avoid this error , I try to use **inv_pos** replacing `1/(sigma)`

, i.e.,

`L == diag(sum(W,2))-W + inv_pos(sigma)*I`

The following error then occurs

**Disciplined convex programming error:**

**Invalid constraint: {real affine} == {convex}**

Because `L`

, `diag(sum(W,2))`

and `W`

are all real affline experssion while ` inv_pos(sigma)*I`

is convex expression. This mismatch causes the error.

My quesition is how I can avoid this error? I read the DCP ruleset and have not found the solution.

Thank you very much if anyone can answer my quesition!

L_{pre} = ... isn’t intended to be a constraint. Rather, it defines L_{pre} for use in the intended semidedfinite constraint L_{pre} >= 0 (actually, supposed to be a strict positive definite constraint), I.e., RHS >= 0, where I have presumed sdp mode has been specified. And also specifies L_{pre} as the argument of log_det and the trace term in the objective function.

In order to make L_{pre} affine, and hence valid in CVX as a constituent of an SDP constraint or argument of `log_det`

, 1/\sigma^2 needs to be defined as the variable, rather than \sigma or \sigma^2 That will make L_pre affine in the CVX (optimization) variables.

Make L_pre = … an expression assignment by using `=`

, not `==`

, and place that prior to its use in the objective function. Then add the semidefinite constraint on L_pre, or perhaps on L_pre - small_positive_number*eye(n) in order to make it a strict positive definite constraint, if that is really required.

```
cvx_begin sdp
...
variable one_over_sigma_squared
L_pre = ...
minimize ...
L_pre - small_positive_number*eye(n) >= 0
one_over_sigma_squared >= 0
...
```