Are There Nontrivial Solutions to the Matrix Equation X C X^T = C?

  • Level: Undergrad 
  • Thread starter Thread starter vibe3
  • Start date Start date
  • Tags Tags
    Matrix
Join the discussion
Registration is free. Start your own thread to ask a follow-up.
9 replies · 2K views
vibe3
Messages
39
Reaction score
1
Hello, if I have some given vector [itex]c \in R^n[/itex], then I want to find solutions [itex]X \in R^{n\times n}[/itex] to the following equation:
[tex] X C X^T = C[/tex]
where [itex]C = c c^T[/itex]. Certainly [itex]X = I[/itex] is a solution, but I'm looking for any nontrivial solutions. We can also assume [itex]X[/itex] is invertible if that helps.

This equation seems related to the Sylvester equation. If the solution is nontrivial, I would appreciate if someone could point me in the direction of any work which has been done on this type of equation.
 
Physics news on Phys.org
vibe3 said:
Hello, if I have some given vector [itex]c \in R^n[/itex], then I want to find solutions [itex]X \in R^{n\times n}[/itex] to the following equation:
[tex] X C X^T = C[/tex]
where [itex]C = c c^T[/itex]. Certainly [itex]X = I[/itex] is a solution, but I'm looking for any nontrivial solutions. We can also assume [itex]X[/itex] is invertible if that helps.

This equation seems related to the Sylvester equation. If the solution is nontrivial, I would appreciate if someone could point me in the direction of any work which has been done on this type of equation.
Assume you have chosen a basis such that ##c=(1,0,\ldots,0)^T##. How many solutions do you get?
 
Isn't C then a scalar? But then ## CXX^{T} ## is a matrix and C is a scalar. Am I missing something?
 
WWGD said:
Isn't C then a scalar? But then ## CXX^{T} ## is a matrix and C is a scalar. Am I missing something?
Depends on how you write vectors, as a column or as a row: one gives a scalar and the other a rank one matrix. Either case has many solutions.
 
fresh_42 said:
Depends on how you write vectors, as a column or as a row: one gives a scalar and the other a rank one matrix. Either case has many solutions.
But how can an ## n \times n ## matrix equal a ## 1 \times 1 ## unless n=1? EDIT: Do you mean we extend the scalar C into a matrix (C,0,0,..,0)?
 
WWGD said:
But how can an ## n \times n ## matrix equal a ## 1 \times 1 ## unless n=1?
You mean if ##C## is a scalar? Then ##XCX^T=C=CI## by the usual identification of the two ones in algebras with unit. Otherwise ##\begin{bmatrix}c_1\\ \vdots \\c_n\end{bmatrix} \cdot \begin{bmatrix}c_1 & \ldots & c_n \end{bmatrix}## is a ##n \times n## matrix of rank ##1##.
 
I mean, which case do you assume then, that C is ## n \times n ## or a "scalar matrix"?
 
WWGD said:
I mean, which case do you assume then, that C is ## n \times n ## or a "scalar matrix"?

C is an n-by-n matrix of rank 1
 
  • Like
Likes   Reactions: WWGD
vibe3 said:
C is an n-by-n matrix of rank 1
Thanks, kind of reminds me of least-square problems, solved by ortho projections.
 
It's not clear to me what kind of "solution" OP is looking for since this problem is very much underdetermined. There are some interesting underlying relations here between singular vectors of ##\mathbf X## and the structure of ##\mathbf C##, but that's about all I can add.

note: if ##\mathbf c = \mathbf 0##, any ##\mathbf X## is allowed.
- - - -
Now assume ##\mathbf c \neq \mathbf 0##. Thus ##\mathbf C = \mathbf{cc}^T## is a rank one matrix.

We can do singular value decomposition on ##\mathbf X## such that ##\mathbf X = \mathbf{U \Sigma V}^T##

For ##\mathbf{X C X}^T = \mathbf{X c} \mathbf c^T \mathbf X^T= \mathbf{cc}^T##, we know that ##\mathbf c## is given by one (or more) of the right singular vectors of ##\mathbf X## that has a singular value of 1 ##^{**}##. Why? Using the trace operation we see

##trace\big(\mathbf{cc}^T\big) = \mathbf c ^T \mathbf c = trace\big(\mathbf{X c} \mathbf c^T \mathbf X^T\big) ##

##\mathbf c ^T \mathbf c = trace\big(\mathbf{X c} \mathbf c^T \mathbf X^T\big) = trace\big(\mathbf c^T \mathbf X^T \mathbf{Xc}\big) = \mathbf c^T \mathbf X^T \mathbf{Xc} = \mathbf c^T \mathbf V \mathbf \Sigma^T \mathbf U^T \mathbf {U \Sigma V}^T \mathbf c = \mathbf c^T \mathbf V \mathbf{\Sigma}^2 \mathbf{V}^T \mathbf c = \mathbf y^T \mathbf{\Sigma}^2 \mathbf{y} = \mathbf y^T \mathbf y##

where ##\mathbf{V}^T \mathbf c := \mathbf y##, and of course ##\big \Vert \mathbf c \big \Vert_2^2 = \big \Vert \mathbf{V}^T \mathbf c \big \Vert_2^2 = \big \Vert \mathbf y \big \Vert_2^2##

- - - - - - - -
##^{**}## to be more accurate: it is possible that that the squared singular values that non-zero elements of ##\mathbf y## gets scaled by are not one-- the exact constraint we need to observe is

## \mathbf y^T \mathbf{\Sigma}^2 \mathbf{y} = \sigma_1 ^2 y_1^2 + \sigma_2^2 y_2^2 +... + \sigma_n ^2 y_n^2 = y_1^2 + y_2^2 +... + y_n^2 =\mathbf y^T \mathbf y##
- - - - - - - -

There's also a lot of flexibility in determining ##\mathbf U##. If ##\mathbf X## is full rank, you can also tease out the constraint that, ##\mathbf c ^T \mathbf c = \mathbf c^T \mathbf U \mathbf{\Sigma}^{-2} \mathbf{U}^T \mathbf c = \mathbf w^T \mathbf{\Sigma}^{-2} \mathbf w = \mathbf w^T \mathbf w##, where ##\mathbf{U}^T \mathbf c := \mathbf w##.

Losing some generality, here's one particularly easy approach for creating a legal ##\mathbf X##: write out ##\mathbf C = \mathbf {PDP}^T##, where ##\mathbf D## is the zero matrix except the top left entry is given by ##trace\big(\mathbf C\big)##. From here ensure that all values of ##y_k = 0## for ##k \geq 2##, and that ##\sigma_1 = 1##, then set ##\mathbf U := \mathbf P##.

Again, this whole thing is a very much underdetermined problem so there's a lot of different ways to approach this.