When frd=sqrt(x) is used in cvx, the values of frd and sqrt(x) are very different.

frd is a CVX expression. If CVX completes with Status: Inaccurate/Solved or Status: Solved, the optimal values of the declared CVX variables are in the MATLAB variables having those names. In general, the values of CVX expressions after CVX completes are not guaranteed to correspond to the optimal values of the CVX variables; however, in this casefrd and 4*noise*hsr*hLI*hrd*x are both equal to 2.0792e-32 after CVX completes.using SDPT3 as solver.

Why do you think frd should equal sqrt(x)? There is nothing in your program which would force that. If you want frd to equal sqrt(x). then you need to change the problem formulation.

Also, your problem scaling is terrible. Any solution of your program as is is essentially meaningless. You need to make non-zero numbers much close to one in magnitude.

I recommend you not use cvx_quiet(true) or cvx_expert true until you are confident everything is working and being solved correctly.

Given you use of log(cvx_expression), I recommend you follow the advice in 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 .