Solving an optimization problem including an LMI eigen value problem.

10 vues (au cours des 30 derniers jours)
TESSO WOAFO
TESSO WOAFO le 30 Sep 2023
Commenté : Harimurali le 6 Nov 2023
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 commentaires
TESSO WOAFO
TESSO WOAFO le 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 le 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.

Connectez-vous pour commenter.

Réponses (1)

Harimurali
Harimurali le 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.
  2 commentaires
TESSO WOAFO
TESSO WOAFO le 15 Oct 2023
Thank you very much for your answer.
Harimurali
Harimurali le 6 Nov 2023
Hi Tesso,
I just wanted to know if the solution worked for you.

Connectez-vous pour commenter.

Community Treasure Hunt

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

Start Hunting!

Translated by