# Why is CVX not solving the specificied optimization problem?

Hi all,
These days I have been working on one optimization problem to solve a set of linear equations AF=k, where A is m x N matrix, and F and k are both vectors of length N. Typically m = 12, N = 50, so it is an under determined problem. The constraints on F is that F(1) = 0, F(N) = 1, and F is a smooth, non-negative function and increases monotonically from zero to one. The CVX part of the code is as follows:

cvx_begin
variable F(N) nonnegative
minimize norm((AF-k),2)+smoothnorm((F(3:N)-2*F(2:N-1)+F(1:N-2)),2);

``````subject to
% specify monotonically increasing feature
F(1) == 0.0; F(N) == 1.0;
F(2:N)-F(1:N-1) >= 0.0;
``````

cvx_end

The second term in the penalty function constrains the vector or function F to be smooth and I typically set the smoothing factor to be unity ‘smooth = 1’. For most of the cases I studied, CVX does minimize the penalty function and return a smooth and monotonically increasing function F. However, there’s one case I’m studying for which CVX does not solve the linear equations AF = k, which can be told by comparing the input k vector and the forward calculated k vector based on F returned by CVX. At this point, I believe the reason why it does not solve the problem is that the magnitude of the matrix elements in A is very small. In fact, many elements are very close to zero, and other elements with significant values are around 0.05. For my other successfully solved optimization problems, I found the significant values of the matrix A is around 0.12.
Has anyone encountered this type of problem before? I tried to multiply some rows of A and k by some factors in hope of increasing the coefficients and solving the problem, but it still does not work. Any suggestions? Thank you very much!

For example, if the input k vector is 0.4593 0.6414 0.7200 0.8500 0.8929 0.9071 0.9286 0.9571 0.9643 0.9929 0.9786 1.0000, the vector A*F based on the optimized F is 0.6668 0.5136 0.3459 0.2318 0.1970 0.1975 0.1977 0.0581 0.0579, way off from the input vector. Any suggestions? Appreciate your help!

I found the reason, it’s not the CVX problem, it’s another part of the code. Thanks.