Алгоритм вычисления ранга матрицы

Оглавление

    1. Теория
    2. Алгоритм
    3. Реализация
    4. Литература

Теория

Определение: рангом матрицы А, называется максимальная система линейнонезависимых строк (столбцов) матрицы.

Замечание: ранг матрицы по столбцам и по строкам совпадает.

Пример 1

Ранг этой матрицы равен 1, т.к. любые ее две строки можно получить через третью, умножив ее на соответствующий коэффициент.

Пример 2

Ранг этой матрицы равен 2.

Алгоритм

Обозначения:

А - матрица, состоящая из n строк и k столбцов;
A(i, j) - элемент матрицы, стоящий на i-ой строке, в j-ом столбце.

Алгоритм:

Основа алгоритма - цикл по всем элементам главной диагонали. Для квадратной матрицы размера n будет n итераций. Для прямоугольной матрицы, состоящей из n строк и k столбов, число итераций будет равно min(n, k). Пусть i - счетчик итераций.

Каждый проход цикла устроен следующим образом.

  1. Если A(i, i) равен нулю, то в прямоугольнике (i, i, n, k) ищем ненулевой элемент. Если он не найден, то выходим из цикла. Если он найден, и его координаты (i2, j2), то меняем местами i-ую строку с i2-ой, и j-ый столбец с j2-ым.
    Делим i-ую строку матрицы на A(i, i). Таким образом A(i, i) теперь равен 1.
  2. При помощи вычитания i-го столбца из всех столбцов стоящих правее, и i-ой строки из всех строк стоящих ниже, с определенными коэффициентами, зануляем все элементы вида А(i+1, i), A(i+2, i), ... A(n, i) и A(i, i+1), A(i, i+2), ... A(i, k).
  3. Переходим к следующей итерации.

После цикла остается подсчитать сколько единиц стоит на главной диагонали. Их кол-во равно рангу. Если же их нет, то ранг равен 1.

Пример:

Делим первую строку на 3.

Теперь вычитаем из второго и третьего столбца первый с коэффициентами 2/3 и 1/3 соответственно.

Вычитаем из второй и третьей строки первую с коэффициентами 2 и 1 соответственно.

и т.д. В итоге получим матрицу:

Следовательно ранг матрицы равен 3.

Реализация

Здесь вы найдете уже реализованный класс "Матрица" в котором имеется метод нахождения ранга матрицы. Если вам нужна только эта функция, то вытащить ее из класса не составит большого труда.

Литература

Курош, "Алгебра".

Слава Антонов © 2002 — August 13, 2008
Индекс цитирования
Hosted by uCoz