Solving an optimization problem including an LMI eigen value problem.
10 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
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 comentarios
Torsten
el 1 de Oct. de 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.
Respuestas (1)
Harimurali
el 12 de Oct. de 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 comentarios
Ver también
Categorías
Más información sobre Improve Problem-Based Organization and Performance en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!