Finding Congruencing Matrix between two given matrices

I have two given nxn matrices A,M and I am trying to find P such that
P*A*P.'=M.
How can I find the solution for P in matlab?

Answers (2)

6 Comments

M isn't a permutation of A.
So P can be arbitrary ? Usually P stands for a permutation matrix, i.e. a permutation of the rows/columns of eye(n). Or is P a unitary matrix ?
And you want to decide whether A and M are congruent or you know it ?
I know it, I am trying to find the congruencing matrix.
Do you know of standard approaches from the literature ? I don't. Seems it is a hard problem with no ready-to-use solver.

Sign in to comment.

Partial solution:
if A and M are real symmetric or complex Hemitian, the P can be computed as
[W,E]=eig(M,'vector');
[V,D]=eig(A,'vector');
P = W*diag(sqrt(E./D))*V';
Note that if A and M real,
  • (A+A') and (M+M') are pure real symmetric,
  • 1i*(A-A') and 1i*(M-M') are pure imaginary Hermitian
  • Any real combination of both are Hermitian

2 Comments

Note that if A and M real,
  • (A+A') and (M+M') are pure real symmetric,
  • 1i*(A-A') and 1i*(M-M') are pure imaginary Hermitian
  • Any real combination of both are Hermitian
Do you think this helps for the general case A, M in GL(7,IR) or why did you add this ?
If I know I would post the solution for general case.

Sign in to comment.

Products

Release

R2020b

Asked:

on 29 Aug 2022

Edited:

on 30 Aug 2022

Community Treasure Hunt

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

Start Hunting!