# How to solve this matrix equation

How to solve the following matrix equation?

Solve[MatrixRank[{{1, x, 3},
{2, 4, 5},
{2, 4, x}}] == 2, x, Reals]

• Does this answer your question? Why does MatrixForm affect calculations? Commented Jan 19, 2020 at 8:28
• By the way, variants of this question have appeared hither, thither, and yon. That yon actually has a more general approach in a comment: it can be used for non-square matrices as well. Commented Jan 19, 2020 at 17:32

Cases[Table[{x, MatrixRank[({{1, x, 3}, {2, 4, 5}, {2, 4, x}})]}, {x, -10, 10, 1/10}], {_, 2}]


gives out

{{2, 2}, {5, 2}}

So the answer is 2 or 5.

mat = ({{1, x, 3}, {2, 4, 5}, {2, 4, x}});
Select[MatrixRank[mat /. #] == 2 &][Solve[Det[mat] == 0, x, Reals]]


{{x -> 2}, {x -> 5}}

Solutions force exactly one eigenvalue to be zero. So we solve for the condition that an eigenvalue vanish, and check that rank is two.

mat = {{1, x, 3}, {2, 4, 5}, {2, 4, x}};
candidateSols = Flatten[Map[Solve[# == 0, x] &, Eigenvalues[(mat)]]]

(* Out[997]= {x -> 2, x -> 5} *)


Both pass the test:

Map[MatrixRank[mat /. #] &, candidateSols]

(* Out[995]= {2, 2} *)

• I should have read the @kglr answer more carefully. It avoids, or at least postpones, working in an algebraic extension. Commented Jan 19, 2020 at 17:34

Here is an indirect route, which has the advantage of postponing operations like MatrixRank[] until the end.

Consider the identity

$$\begin{pmatrix}1&x&3\\2&4&5\\2&4&x\end{pmatrix}=\begin{pmatrix}1&0&3\\2&4&5\\2&4&0\end{pmatrix}+\begin{pmatrix}x&0\\0&0\\0&x\end{pmatrix}\begin{pmatrix}0&1&0\\0&0&1\end{pmatrix}$$

A condition for this matrix to be invertible (cf. the Sherman-Morrison-Woodbury formula) is that the capacitance matrix

$$\begin{pmatrix}1&0\\0&1\end{pmatrix}+\begin{pmatrix}0&1&0\\0&0&1\end{pmatrix}\begin{pmatrix}1&0&3\\2&4&5\\2&4&0\end{pmatrix}^{(-1)}\begin{pmatrix}x&0\\0&0\\0&x\end{pmatrix}=\begin{pmatrix}1-\frac{x}{2}&-\frac{x}{20}\\0&1-\frac{x}{5}\end{pmatrix}$$

be nonsingular.

Thus,

Solve[Det[IdentityMatrix[2] +
{{0, 1, 0}, {0, 0, 1}}.LinearSolve[{{1, 0, 3}, {2, 4, 5}, {2, 4, 0}},
{{x, 0}, {0, 0}, {0, x}}]] == 0, x]
{{x -> 2}, {x -> 5}}


Check:

MatrixRank /@ ({{1, x, 3}, {2, 4, 5}, {2, 4, x}} /. %)
{2, 2}

• A great answer. Commented Mar 28, 2020 at 22:55

I have made a MatrixRankSym feature with symbolic computation here. And we can use for this question directly:

Solve[MatrixRankSym[{{1, x, 3}, {2, 4, 5}, {2, 4, x}}] == 2, x, Reals]


{{x -> 2}, {x -> 5}}

You get rank == 2, if one row is the linear combination of the two others.

mat= {{1, x, 3}, {2, 4, 5}, {2, 4, x}};

Solve[aa mat[[1]] + bb mat[[2]] == mat[[3]], {x, aa, bb}, Reals]

(*  {{x -> 2, aa -> -6, bb -> 4}, {x -> 5, aa -> 0, bb -> 1}}    *)