Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Let $R_{1},R_{2}\in{SO}(3)$, be two rotation matrices. It must be due my ignorance but how can I calculate the rank of the difference of these two rotation matrices, i.e. $\mbox{rank}(R_{2}-R_{1})$?. When I do numerical computations (using matlab), I always find that it is equal to 2, but I'm not completely sure. I found a way (at least I think) to show that the determinant of $R_{2}-R_{1}$ is always zero, which implies that it is rank deficient. But then this still implies that the rank can be equal to 1. In order to prove that the determinant is zero I did the following. Since $R_{1}$ and $R_{2}$ are rotation matrices they can be written as, $$R_{1}=\begin{bmatrix}n_{1}&s_{1}&a_{1}\end{bmatrix}\\ R_{2}=\begin{bmatrix}n_{2}&s_{2}&a_{2}\end{bmatrix}$$ where $n_{1}$, $s_{1}$, $a_{1}$ and $n_{2}$, $s_{2}$, $a_{2}$ are their respective columns which are mutually orthogonal and of unit length for $R_{1}$ and $R_{2}$, respectively. The determinant can be calculated using the scalar triple product, and other properties of cross product (e.g. distributivity, etc.) $$\det(R_{2}-R_{1})=\left(n_{2}-n_{1}\right)\cdot\left[\left(s_{2}- s_{1}\right)\times\left(a_{2}-a_{1}\right)\right]$$ $$\det(R_{2}-R_{1})=\left(n_{2}-n_{1}\right)\cdot\left[\left(s_{2}-s_{1}\right)\times{a}_{2}-\left(s_{2}-s_{1}\right)\times{a}_{1}\right]$$ $$\det(R_{2}-R_{1})=\left(n_{2}-n_{1}\right)\cdot\left[-a_{2}\times\left(s_{2}-s_{1}\right)+a_{1}\times\left(s_{2}-s_{1}\right)\right]$$ $$\det(R_{2}-R_{1})=\left(n_{2}-n_{1}\right)\cdot\left[-a_{2}\times{s}_{2}+a_{2}\times{s}_{1}+a_{1}\times{s}_{2}-a_{1}\times{s}_{1}\right]$$ $$\det(R_{2}-R_{1})=\left(n_{2}-n_{1}\right)\cdot\left[n_{2}+a_{2}\times{s}_{1}+a_{1}\times{s}_{2}+n_{1}\right]$$ $$\det(R_{2}-R_{1})=n_{2}\cdot{n}_{2}-n_{1}\cdot{n}_{2}+n_{2}\cdot(a_{2}\times{s}_{1})-n_{1}\cdot(a_{2}\times{s}_{1})+n_{2}\cdot(a_{1}\times{s}_{2})-n_{1}\cdot(a_{1}\times{s}_{2})+n_{2}\cdot{n}_{1}-n_{1}\cdot{n}_{1}$$ $$\det(R_{2}-R_{1})=n_{2}\cdot{n}_{2}-n_{1}\cdot{n}_{2}+s_{1}\cdot(n_{2}\times{a}_{2})-a_{2}\cdot(s_{1}\times{n}_{1})+a_{1}\cdot(s_{2}\times{n}_{2})-s_{2}\cdot(n_{1}\times{a}_{1})+n_{2}\cdot{n}_{1}-n_{1}\cdot{n}_{1}$$ $$\det(R_{2}-R_{1})=n_{2}\cdot{n}_{2}-n_{1}\cdot{n}_{2}-s_{1}\cdot{s}_{2}+a_{2}\cdot{a}_{1}-a_{1}\cdot{a}_{2}+s_{2}\cdot{s}_{1}+n_{2}\cdot{n}_{1}-n_{1}\cdot{n}_{1}$$ $$\det(R_{2}-R_{1})=0$$

So, how can I calculate $\mbox{rank}(R_{2}-R_{1})$, and also is it possible to find its null space as well, i.e. $\ker(R_{2}-R_{1})$? Thanks a lot.

Best regards,

share|cite|improve this question

To determine the rank of $R_1-R_2$ you must determine the dimension of the kernel, that is the space of vectors $v$ for which $(R_1-R_2)v=0$. Now you can rewrite that equation as $R_1v=R_2v$, and since rotations are invertible, this is equivalent to $R_2^{-1}R_1v=v$. However, $R_2^{.-1}R_1$ is again a rotation, and for rotations in $SO(3)$, there's always a one-dimensional subspace of vectors that are not changed (the rotation axis). Therefore the rank of $R_1-R_2$ is $3-1=2$.

Of course there's one exception: If $R_1=R_2$, then the rank of $R_1-R_2$ is obviously $0$. This corresponds to $R_2^{-1}R_1=I$, the identity matrix, which of course does not change any vector.

share|cite|improve this answer
Rewriting $(A-B)v=0$ as $B^{-1}Av=v$ really makes short work of the problem :) Nice observation! – rschwieb Jun 18 '13 at 19:56
thanks a lot! really an elegant proof. – user72272 Jun 18 '13 at 20:39

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.