# How do i use the rel_entr fucntion correctly?

Hi,I am trying to solve this problem: minimize(-x*log(1+b/x)+x),where b are constants,x and y are variables. I use the rel_entr function to transform this objective function into -rel_entr(x,x+b)+x.
the code as
h = 10;
n=2;
cvx_begin
variable a(n);

``````minimize(-rel_entr(a(1),a(1)+h)/log(2)+a(1))

subject to
a(1)> 0
``````

cvx_end

But an error has occurred.
Operation error in cvxprob/newobj (line 57 )
Disciplined convex programming error:
Cannot minimize a(n) concave expression.
Error in minimize (line 21 )
newobj( prob, ‘minimize’, x );
Error in dual2 (line 6)
minimize(-rel_entr(a(1),a(1)+h)/log(2)+a(1))

## Cones | Errors | Mov/Act | Centering Exp cone Poly cone | Status --------±--------------------------------±-------- 1/ 1 | 9.700e-01 6.979e-02 0.000e+00 | Solved 1/ 1 | 6.530e-02 3.467e-04 0.000e+00 | Solved 0/ 1 | 3.589e-05 9.514e-11 0.000e+00 | Solved 0/ 0 | 0.000e+00 0.000e+00 0.000e+00 | Solved 0/ 0 | 0.000e+00 0.000e+00 0.000e+00 | Solved

Status: Solved
Optimal value (cvx_optval): +113.75

`x*log(1+b/x) = -rel_entr(x,x+b)`
so
`-x*log(1+b/x) = rel_entr(x,x+b)`
That explains all the phenomena you observed. Your 'switched" objective function was actually solving the problem you really wanted to solve.

You may also wish to read the beginning of CVXQUAD: How to use CVXQUAD's Pade Approximant instead of CVX's unreliable Successive Approximation for GP mode, log, exp, entr, rel_entr, kl_div, log_det, det_rootn, exponential cone. CVXQUAD's Quantum (Matrix) Entropy & Matrix Log related functions . for more reliable solution.

2 Likes

I get it, thank you for your help!