MATLAB Answers

How can find the solution of this matrix system?

3 views (last 30 days)
Johnny Scalera
Johnny Scalera on 28 May 2020
Commented: Ameer Hamza on 28 May 2020
Hi all,
I'm pretty new in Matlab. I would like to solve this matrix system
XAX' = B
where A is a symmetric positive definite matrix and B is a diagonal matrix with positive elements on the diagonal. How can find X?
Thanks,
Johnny

  0 Comments

Sign in to comment.

Answers (1)

Ameer Hamza
Ameer Hamza on 28 May 2020
sol = fsolve(@(X) X*A*X.'-B, rand(size(A)))

  2 Comments

Johnny Scalera
Johnny Scalera on 28 May 2020
Hi Ameer,
thank you for your answer. Your suggestion is a numerical solution of the previous equation. I was looking for an analytical solution. For example, if A is an identity matrix I, then the system equation turns to be
XAX' = B;
XX' = B;
which can be solved with a Cholesky factorization of B
X = chol(B);
But what appens to the system, if A is a symmetric positive definite matrix and B a diagonal matrix? Such as
A = [a b; b c];
B = [d 0; 0 e];
Thanks,
Johnny
Ameer Hamza
Ameer Hamza on 28 May 2020
For analytical solutions, we usually use the symbolic toolbox. However, as far as I know, the symbolic engine still does not support solving the matrix equation. Even for the following specific cases, there is no solution
syms a b c d e f
A = [a b; b c];
B = [d 0; 0 e];
x = sym('x', size(A));
solve(x*A*x'==B, x)
solve(x*x'==B, x) % A = eye(2)
You may need to try some other symbolic engine (mathematics or maple maybe), but I haven't tried those for matrix equations, so I don't know for sure.

Sign in to comment.