How to solve infinity norm minimization problem in matlab?

1.2k Views Asked by At

My optimization problem looks like following: (I have to solve for diagonal matrix D when A and B are given.) $$\mbox{minimize} \quad \|BDB^{T} - A\|_{\infty}$$

1

There are 1 best solutions below

2
On

Edit: I have change the CVX code because the problem statement has been changed. Here is the new code.

This is easy to do in CVX http://cvxr.com/cvx/ under MATLAB.

cvx_begin
variable D(size(A)) diagonal
minimize(norm(B*D*B' - A,inf))
cvx_end

At the conclusion, D is the optimal value.


Here is how to do it in YALMIP under MATLAB.

D = sdpvar(size(A,1),size(A,1),'diagonal')
optimize([],norm(B*D*B' - A,inf))
value(D) % displays optimal value of D

You can optionally specify a specific solver, if you have installed the solver under MATLAB. For instance, you can specify SCS, which is a first order solver, and so can handle larger problems without running out of memory. optimize([],norm(B*D*B' - A,inf),sdpsettings('solver','scs'))