Solving an optimization problem including an LMI eigen value problem.

10 views (last 30 days)
Hi everyone. Please i want to solve this optimization problem, it works but i am not sure of the correctness of my code. Here it is.
and here is my code.
As you can see, the objective function includes trace of matrices. Please i would like to know how to write this optimization problem. Thank you.
  3 Comments
TESSO WOAFO
TESSO WOAFO on 1 Oct 2023
Thank you for answering. I have just verified and this< and > means negative and positive definite in my code. But I have a question. In the LMI constraints in the figure, is it really possible that this < means element wise? I think this < means semidefinite negative in the LMI or am I wrong?
Torsten
Torsten on 1 Oct 2023
I think it's the other way round. In your code, <= 0 and >= 0 means: the matrix entries have to be smaller oder greater than 0. In your figure, it means negative or positive definite. Thus your code doesn't reflect what your figure expects.

Sign in to comment.

Answers (1)

Harimurali
Harimurali on 12 Oct 2023
Hi Tesso,
I understand that you want to validate the correctness of the MATLAB code you have written to solve the given LMI eigen value optimization problem.
In the equation given in the figure attached in the question, the ‘>’ and ‘<’ correspond to positive and negative definite, respectively. In the MATLAB code you have written, ‘>=’ and ‘<=’ operators check if each element in the matrices is greater than or equal to 0 and less than or equal to 0, respectively. Hence, your code does not correctly implement the formula in the figure.
Please refer to the following documentation for information regarding the ‘>=’ operator: https://in.mathworks.com/help/matlab/ref/ge.html
You may use the ‘chol’ function in MATLAB, which performs Cholesky factorization on the input matrix, to check if a matrix is positive or negative definite.
  • Positive definite: Call the ‘chol’ function with the matrix of your requirement as an argument. If the flag returned by the function is 0, then the matrix is positive definite. If the flag is positive and MATLAB does not generate an error, then the matrix is not positive definite. You can call the ‘chol’ function like:
[~, flag] = chol(A);
  • Negative definite: Call the ‘chol’ function with the matrix of your requirement after negating each value in the matrix as an argument. If the flag returned by the function is 0, then the matrix is negative definite. If the flag is positive and MATLAB does not generate an error, then the matrix is not negative definite. You can call the ‘chol’ function like:
[~, flag] = chol(-A);
Please refer to the following documentation for information regarding the ‘chol’ function: https://www.mathworks.com/help/matlab/ref/chol.html
I hope this helps.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!