Rank of a matrix#

Matrix spaces#

Let \(\boldsymbol A \in \mathbb R^{m\times n}\) be a rectangular matrix. Define

  • nullspace of \(\boldsymbol A\) as all solutions of the homogeneous linear system \(\boldsymbol{Ax} = \boldsymbol 0\), i.e.,

    \[ N(\boldsymbol A) = \{\boldsymbol x \in \mathbb R^n \colon \boldsymbol{Ax} = \boldsymbol 0\}; \]
  • left nullspace of \(\boldsymbol A\) as all solutions of the homogeneous linear system \(\boldsymbol y^\top \boldsymbol{A} = \boldsymbol 0\) (note that it is equal to \(N(\boldsymbol A^\top))\);

  • column space of \(\boldsymbol A = [\boldsymbol a_1 \ldots \boldsymbol a_n]\) as the spanning space of its columns:

    \[ C(\boldsymbol A) = \mathrm{span}(\boldsymbol a_1, \ldots, \boldsymbol a_n) = \Big\{\sum\limits_{j=1}^n c_j \boldsymbol a_j \colon c_1, \ldots, c_n \in \mathbb R\Big\}. \]
  • row space of

    \[\begin{split} \boldsymbol A = \begin{pmatrix} \boldsymbol a_1^\top \\ \vdots \\ \boldsymbol a_m^\top \end{pmatrix} \end{split}\]

    as the spanning space of its rows (note that it is equal to \(C(\boldsymbol A^\top)\)).

Note that both \(N(\boldsymbol A)\) and \(C(\boldsymbol A^\top)\) are subspaces of \(\mathbb R^n\), whereas \(N(\boldsymbol A^\top)\) and \(C(\boldsymbol A)\) are subspaces of \(\mathbb R^m\).

Rank#

Ранг матрицы \(\boldsymbol A \in \mathbb R^{m\times n}\) можно определить двумя эквивалентными способами:

  • ранг по столбцам равен \(\dim C(\boldsymbol A)\) — размеру максимальной линейно независимой подсистемы столбцов матрицы \(\boldsymbol A\);

  • ранг по строкам равен \(\dim C(\boldsymbol A^\top)\) — размеру максимальной линейно независимой подсистемы строк матрицы \(\boldsymbol A\).

Оказывается, что столбцовый и строковый ранг любой матрицы совпадают. Их общее значение называется рангом матрицы \(\boldsymbol A\) и обозначается \(\mathrm{rank}(\boldsymbol A)\).

Теорема. Для любой матрицы \(\boldsymbol A \in \mathbb R^{m\times n}\) верно равенство

\[ \dim C(\boldsymbol A) = \dim C(\boldsymbol A^\top) = r, \quad 0\leqslant r \leqslant \min\{m, n\}, \]

причём ранг \(r = \mathrm{rank}(\boldsymbol A)\) совпадает с количеством опорных элементов ступенчатой матрицы, к которой матрица \(\boldsymbol A\) приводится методом Гаусса.

It turn out that

\[ \dim C(\boldsymbol A) + \dim N(\boldsymbol A) = n, \quad \dim C(\boldsymbol A^\top) + \dim N(\boldsymbol A^\top) = m. \]

Прямоугольная матрица \(\boldsymbol A \in \mathbb R^{m\times n}\) называется полноранговой по столбцам, если \(\mathrm{rank}(\boldsymbol A) = n\). Такая матрица обладает следующими свойствами:

  • все столбцы матрицы \(\boldsymbol A\) опорные;

  • ядро матрицы \(\boldsymbol A\) нулевое;

  • однородная система уравнений \(\boldsymbol {Ax} = \boldsymbol 0\) имеет только нулевое решение;

  • СЛАУ \(\boldsymbol {Ax} = \boldsymbol b\) имеет не более одного решения.

Матрица полного ранга по строкам, для которой \(\mathrm{rank}(\boldsymbol A) = m\), обладает следующими свойствами:

  • все строки матрицы \(\boldsymbol A\) опорные;

  • \(C(\boldsymbol A) = \mathbb R^m\);

  • СЛАУ \(\boldsymbol {Ax} = \boldsymbol b\) имеет решение при любом \(\boldsymbol b \in \mathbb R^m\);

  • \(\dim N(\boldsymbol A) = n - m\).

Полноранговые квадратные матрица \(\boldsymbol A \in \mathbb R^{n\times n}\) имеют ранг \(n = r\). Этот класс матриц в точности совпадает с классом невырожденных матриц.

np.linalg.matrix_rank calculates the rank of a matrix:

import numpy as np
A = np.arange(1, 13).reshape(3, 4)
A
array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [ 9, 10, 11, 12]])
np.linalg.matrix_rank(A)
2

Pseudo inverse#

The Moore-Penrose pseudo inverse of \(\boldsymbol A \in \mathbb R^{m\times n}\) is such a matrix \(\boldsymbol A^\dagger \in \mathbb R^{n\times m}\) that satisfies the following \(4\) properties:

  1. \(\boldsymbol{AA}^\dagger \boldsymbol A = \boldsymbol A\);

  2. \(\boldsymbol{A}^\dagger \boldsymbol A \boldsymbol{A}^\dagger =\boldsymbol{A}^\dagger\);

  3. \((\boldsymbol{AA}^\dagger)^\top = \boldsymbol{AA}^\dagger\);

  4. \((\boldsymbol{A}^\dagger \boldsymbol A)^\top = \boldsymbol{A}^\dagger \boldsymbol A\).

Note that

  • \(\boldsymbol{A}^\dagger = \boldsymbol{A}^{-1}\) if \(\boldsymbol A\) is a square invertible matrix;

  • \(\boldsymbol{A}^\dagger = (\boldsymbol A^\top\boldsymbol A)^{-1} \boldsymbol A^\top\) if \(m > n\) and \(\boldsymbol A\) has full column rank;

  • \(\boldsymbol{A}^\dagger = \boldsymbol A^\top(\boldsymbol A\boldsymbol A^\top)^{-1} \) if \(m < n\) and \(\boldsymbol A\) has full row rank.

To get pseudo inversed matrix, call np.linalg.pinv:

A = np.array([[1, 2], [2, 4], [3, 6]])
np.linalg.pinv(A)
array([[0.01428571, 0.02857143, 0.04285714],
       [0.02857143, 0.05714286, 0.08571429]])

Exerices#

  1. Prove that for each one-rank matrix \(\boldsymbol A = \boldsymbol{uv}^\top\) the equality \(\mathrm{rank}(\boldsymbol A) = 1\) holds.

  2. Prove that \(\mathrm{rank}(\boldsymbol{AB}) \leqslant \min\{\mathrm{rank}(\boldsymbol A), \mathrm{rank}(\boldsymbol B)\}\). Give an examples of two matrices for which this inequality is strict.

  1. Let \(\boldsymbol A \in \mathbb R^{m\times n}\). Prove that

    \[ \mathrm{rank}(\boldsymbol A) = \mathrm{rank}(\boldsymbol A^\top) = \mathrm{rank}(\boldsymbol A^\top \boldsymbol A) = \mathrm{rank}(\boldsymbol A \boldsymbol A^\top). \]