Сколько информации в матрице?
Матрица A = [[1, 2, 3], [2, 4, 6], [0, 1, 1]]. Три строки, три столбца — казалось бы, полноценная матрица 3×3.
Задача: посмотрите внимательно на первые две строки. Есть ли между ними связь? Сколько «по-настоящему разных» строк в этой матрице?
Матрица 3×3 может нести в себе три независимых направления. А может — два или даже одно. Ранг — это число, которое говорит: «сколько направлений на самом деле». Вспомните метод Гаусса. Когда мы приводим матрицу к ступенчатому виду, некоторые строки могут обнулиться — значит, они были комбинациями других. То, что осталось, — и есть независимая часть.
Возьмём матрицу из задачи:
A = [[1, 2, 3],
[2, 4, 6],
[0, 1, 1]]
Приведём к ступенчатому виду. Строка₂ − 2·строка₁:
[[1, 2, 3],
[0, 0, 0],
[0, 1, 1]]
Вторая строка обнулилась — она была просто удвоенной первой. Поменяем строки 2 и 3:
[[1, 2, 3],
[0, 1, 1],
[0, 0, 0]]
Две ненулевые строки. Ранг = 2.
Ранг строк всегда равен рангу столбцов — это неочевидный, но доказанный факт. Поэтому говорят просто «ранг матрицы», без уточнений. Ранг напрямую связан с тем, что мы уже знаем:
Матрица n×n:
ранг = n → det ≠ 0 → обратимая → система A·x = b имеет единственное решение
ранг < n → det = 0 → необратимая → решение не единственно
Это всё тот же факт, просто с разных сторон. Определитель ноль — столбцы зависимы — ранг меньше размера — обратной нет. Четыре формулировки одного явления.
Для прямоугольных матриц (не квадратных) определителя нет, но ранг есть. Он работает всегда. Самое практичное применение ранга — теорема Кронекера-Капелли. Она даёт полный ответ: сколько решений у системы?
Дана система A·x = b. Расширенная матрица — это A с приписанным столбцом b: [A|b].
rank(A) ≠ rank([A|b]) → решений нет
rank(A) = rank([A|b]) = число неизвестных → одно решение
rank(A) = rank([A|b]) < число неизвестных → бесконечно много
Разберём на примере. Система:
x + y + z = 6
x + y + z = 9
Расширенная матрица:
[[1, 1, 1 | 6],
[1, 1, 1 | 9]]
Строка₂ − строка₁:
[[1, 1, 1 | 6],
[0, 0, 0 | 3]]
Матрица A (без правой части) имеет 1 ненулевую строку → rank(A) = 1. Расширенная матрица [A|b] имеет 2 ненулевые строки → rank([A|b]) = 2. Ранги не совпали → решений нет. Логично: оба уравнения говорят «x + y + z = что-то», но «что-то» разное — 6 и 9 одновременно не бывает.
Другой пример:
x + y = 3
2x + 2y = 6
[[1, 1 | 3],
[0, 0 | 0]]
rank(A) = 1, rank([A|b]) = 1 — совпали. Число неизвестных = 2 > 1. Значит бесконечно много решений: y = 3 − x, где x — любое.
Ранг — одно из самых универсальных понятий линейной алгебры. Он появляется везде:
В анализе данных ранг матрицы данных говорит, сколько в ней «настоящих» измерений. Таблица с 100 столбцами может иметь ранг 5 — значит, все данные фактически живут в пятимерном подпространстве, остальные 95 столбцов — комбинации первых пяти.
В сжатии изображений: фотография — это матрица пикселей. Её ранг обычно гораздо меньше размера. Можно приблизить матрицу рангом 50 — и картинка почти не изменится, но займёт в разы меньше памяти. Ещё один пример — крайний случай. Все строки пропорциональны:
D = [[1, 2],
[3, 6],
[5, 10]]
Строка₂ = 3·строка₁, строка₃ = 5·строка₁. Приведём:
строка₂ − 3·строка₁ = (0, 0)
строка₃ − 5·строка₁ = (0, 0)
[[1, 2],
[0, 0],
[0, 0]]
Ранг = 1. Три строки, но информации — на одну. Вся матрица — это одна строка (1, 2), повторённая с разными множителями. Три точки на одной прямой в двумерном пространстве.
Обратите внимание: ранг не может быть больше min(строки, столбцы). Матрица 3×2 имеет ранг не больше 2. Матрица 2×5 — не больше 2. С рангом связана ещё одна важная величина — дефект (или нульность). Это размерность множества решений однородной системы A·x = 0.
Теорема о ранге и дефекте:
rank(A) + дефект(A) = число столбцов
Если у матрицы 5 столбцов и ранг 3, то дефект = 2. Это значит: однородная система A·x = 0 имеет двумерное пространство решений — два «направления свободы».
Дефект = 0 означает: единственное решение A·x = 0 — нулевой вектор. Столбцы независимы. Матрица обратима (если квадратная).
Дефект > 0 означает: есть ненулевые решения. Столбцы зависимы. Матрица необратима.
Это ещё одна грань того же явления: ранг, определитель, обратимость, линейная зависимость — всё связано в один узел.
Ранг матрицы — число ненулевых строк в ступенчатом виде. Показывает, сколько независимой информации в матрице.
Кронекер-Капелли: rank(A) ≠ rank([A|b]) → нет решений. Равны и = числу неизвестных → одно. Равны и < числа неизвестных → бесконечно много.
Связь: rank(A) = n ⟺ det(A) ≠ 0 ⟺ A обратима (для квадратных n×n).