🔴 Сложный ⏱️ 50 минут

Линейная зависимость векторов

📋 Содержание урока

Линейная зависимость векторов 🧩

В предыдущем уроке ты научился брать набор векторов и строить по нему линейную оболочку $\operatorname{span}(v_1, \dots, v_k)$ — множество всех линейных комбинаций. Оболочка получалась подпространством всегда, при любом наборе. Но тут же возникает вопрос, на который аппарат прошлого урока ответа не давал: а сколько векторов в наборе действительно нужно?

Возьми два вектора на плоскости: $(1, 0)$ и $(2, 0)$. Их линейная оболочка — прямая, ось абсцисс. Ровно ту же самую прямую даёт один вектор $(1, 0)$. Второй вектор в наборе есть, места занимает, а информации не несёт: любую комбинацию $\alpha(1,0) + \beta(2,0)$ можно переписать как $(\alpha + 2\beta)(1,0)$, то есть через один вектор. Он лишний. А вот к паре $(1,0)$ и $(0,1)$ такое рассуждение не применить: выкинь любой из них — и оболочка схлопнется с плоскости до прямой. Каждый несёт своё.

Разница между этими двумя ситуациями — и есть содержание урока. У неё есть точное имя: линейная зависимость и линейная независимость. Это, возможно, самое важное понятие всей линейной алгебры — не потому что оно сложное (определение занимает одну строчку), а потому что через него определяются почти все остальные: размерность, ранг, координаты, и то, что мы будем изучать в следующих уроках. Ранг матрицы, с которым ты работал в уроке 162 как с «числом ненулевых строк после приведения к ступенчатому виду», получит наконец честное содержательное определение — и им окажется именно максимальное число линейно независимых строк.

Важно, что вопрос «зависима ли система векторов» — не философский, а полностью вычислительный. Он сводится к однородной системе линейных уравнений $\lambda_1 v_1 + \dots + \lambda_k v_k = 0$, а с однородными системами ты разобрался в уроке 167 до последнего винтика: критерий $\operatorname{rank} A < n$, ядро, ФСР. Так что технический аппарат у тебя уже полностью в руках — нужно только правильно поставить задачу. Именно поэтому урок читается быстро в вычислительной части и медленно в понятийной: считать ты умеешь, разбираться в том, что именно посчитано, — учишься сейчас.

Отдельно предупрежу про ловушку, из-за которой этот урок регулярно понимают криво. У линейной зависимости есть два эквивалентных определения: «существует нетривиальная комбинация, равная нулю» и «один из векторов выражается через остальные». Оба верны, но во втором стоит слово «один», а не «каждый», и разница между ними — это разница между правильным и неправильным ответом на экзамене. Мы разберём её выпукло, на конкретном контрпримере, потому что она стоит целого раздела.

А в машинном обучении линейная зависимость признаков — это диагноз, который ставится матрице данных до всякого обучения. Если один столбец таблицы выражается через другие, веса модели перестают быть определимыми: бесконечно много разных наборов коэффициентов дают ровно одинаковые предсказания. Хуже того, на реальных данных строгая зависимость встречается редко, а вот «почти зависимость» — сплошь и рядом, и она, как ни странно, опаснее: формально всё в порядке, ранг полный, модель обучается, а коэффициенты — мусор, который скачет на десятки процентов от добавления одного наблюдения. Мы посчитаем это на конкретных числах и познакомимся с VIF — стандартным детектором коллинеарности.

🎯 Ты узнаешь:

  • Что такое линейная комбинация, чем тривиальная комбинация отличается от нетривиальной и почему всё держится именно на этом различии

  • Два эквивалентных определения линейной зависимости, честное доказательство их эквивалентности и контрпример, показывающий, где второе определение понимают неправильно

  • Рабочий алгоритм: как любой вопрос о зависимости свести к однородной системе и посчитать ранг — с разбором на пяти примерах разной размерности

  • Быстрые критерии для частных случаев: определитель для $n$ векторов в $\mathbb{R}^n$, автоматическая зависимость при $k > n$, коллинеарность двух векторов и компланарность трёх

  • Свойства систем векторов — про нулевой вектор, повторы, подсистемы и надсистемы — каждое с коротким доказательством, а не списком

  • Теорему о базисном миноре и её следствие: почему строчный и столбцовый ранг совпадают и почему ранг — это максимальное число независимых векторов

  • Как проверять на зависимость многочлены, функции и матрицы, где определителя «в лоб» нет

  • Как линейная зависимость признаков ломает линейную модель: неопределимость весов, numpy.linalg.matrix_rank, VIF, разница между строгой и почти зависимостью, ситуация $p > n$

История: откуда это взялось?

Понятие линейной зависимости появилось не как ответ на вычислительную задачу, а как побочный продукт попытки построить геометрию заново — без координат.

В 1844 году немецкий школьный учитель Герман Грассман издал книгу «Die lineale Ausdehnungslehre» — «Учение о линейном протяжении». Книга была написана чудовищно тяжёлым языком, продавалась плохо, и большая часть тиража в итоге пошла на макулатуру. Но в ней впервые появилось то, чем мы пользуемся сегодня: понятие системы величин, которые можно складывать и умножать на числа, понятие «производной системы» (то, что мы называем линейной оболочкой), и — ключевое — понятие независимости. Грассман прямо формулирует: набор величин называется независимым, если ни одна из них не выражается через остальные, и число независимых величин в системе он называет её «ступенью» (Stufe) — прямой предок нашего слова «размерность». Там же у Грассмана появляется и рассуждение, которое сегодня называют леммой о замене: если одна система выражается через другую и при этом независима, то в ней не может быть больше элементов.

Через сорок с лишним лет итальянец Джузеппе Пеано в книге «Calcolo geometrico» (1888) переписал Грассмана на нормальном математическом языке, дал аксиоматику линейной системы (те самые восемь аксиом из прошлого урока) и аккуратно определил линейно независимые системы и размерность. Именно текст Пеано, а не оригинал Грассмана, стал источником современных формулировок.

Параллельно — и почти независимо — та же идея вызревала в теории определителей. Огюстен Луи Коши в 1815 году ввёл сам термин «определитель» в современном смысле, Джеймс Джозеф Сильвестр в 1850-м — слово «минор». К середине века уже было понятно, что обращение определителя в ноль означает какую-то «вырожденность» строк, но что именно вырождается, формулировали каждый по-своему. Точку поставил Георг Фробениус: в работе 1879 года он ввёл термин ранг (Rang) матрицы, определив его как наибольший порядок ненулевого минора, и связал это число с числом независимых строк и столбцов. Утверждение, которое мы разберём в этом уроке под именем теоремы о базисном миноре, по существу восходит именно к этому кругу работ Кронекера и Фробениуса; само же название «теорема о базисном миноре» закрепилось позже, в основном в русскоязычной учебной традиции — у Куроша, Гельфанда и их последователей.

Отдельная линия — лемма о замене. Её каноническая формулировка и доказательство принадлежат Эрнсту Штайницу (1913), хотя, как уже сказано, содержательно она была у Грассмана. Именно эта лемма гарантирует, что «число независимых векторов» — корректно определённое число, а не свойство того, как ты их перебирал; на ней стоит вся теория размерности, к которой мы подойдём в следующем уроке.

И, наконец, прикладная ветка. В 1934 году норвежский экономист Рагнар Фриш (первый нобелевский лауреат по экономике, 1969) в работе «Statistical Confluence Analysis by Means of Complete Regression Systems» ввёл термин мультиколлинеарность — для ситуации, когда объясняющие переменные в регрессии линейно зависимы или почти зависимы. Фриш занимался экономической статистикой, где переменные вроде «доход», «расходы» и «сбережения» связаны тождествами по построению, и линейная зависимость возникала сама собой, без всяких злых намерений исследователя. А в 1970 году Дональд Марквардт в статье про гребневую регрессию предложил численную меру этой беды — variance inflation factor, VIF, которым пользуются до сих пор и который мы посчитаем в конце урока.

Итого: понятие родилось в геометрии (Грассман, Пеано), получило вычислительный аппарат в теории определителей (Коши, Сильвестр, Кронекер, Фробениус), было доведено до логической аккуратности в начале XX века (Штайниц) и в тридцатых годах вернулось в прикладную науку в виде диагноза для регрессионных моделей (Фриш, Марквардт). Все четыре слоя мы в этом уроке пройдём.

Линейная комбинация: тривиальная и нетривиальная

Интуиция: единственная операция, которая у нас есть

В векторном пространстве разрешены ровно две вещи: складывать векторы и умножать их на числа. Больше ничего — ни делить вектор на вектор, ни возводить в квадрат нельзя. Значит, всё, что вообще можно построить из набора векторов, получается конечным числом сложений и умножений на числа. Собери все такие результаты в одну формулу — и получишь линейную комбинацию. Это буквально единственный способ «что-то сделать» с набором векторов, поэтому все содержательные вопросы линейной алгебры рано или поздно оказываются вопросами про линейные комбинации.

Определение: Пусть $v_1, v_2, \dots, v_k$ — векторы некоторого векторного пространства $V$, а $\lambda_1, \lambda_2, \dots, \lambda_k$ — числа (скаляры). Вектор

$$\lambda_1 v_1 + \lambda_2 v_2 + \dots + \lambda_k v_k$$

называется линейной комбинацией векторов $v_1, \dots, v_k$ с коэффициентами $\lambda_1, \dots, \lambda_k$.

Множество всех линейных комбинаций набора — это и есть $\operatorname{span}(v_1, \dots, v_k)$, линейная оболочка из прошлого урока. Новое здесь не само понятие комбинации, а то, что мы начинаем смотреть не на результат комбинации, а на набор коэффициентов как на самостоятельный объект.

Разберём простой счёт. Возьмём $v_1 = (2, 1)$ и $v_2 = (1, 3)$ в $\mathbb{R}^2$. Линейная комбинация с коэффициентами $\lambda_1 = 2$, $\lambda_2 = 3$:

$$2 \cdot (2, 1) + 3 \cdot (1, 3) = (4, 2) + (3, 9) = (7, 11).$$

Меняя коэффициенты, получаем разные векторы: при $(\lambda_1, \lambda_2) = (1, -1)$ выйдет $(1, -2)$, при $(0, 5)$ — вектор $(5, 15)$, при $(-3, 0)$ — вектор $(-6, -3)$. Каждая пара чисел даёт свой вектор.

А теперь вопрос, ради которого всё затевалось: какие коэффициенты дают нулевой вектор? Один ответ известен заранее и никакой информации не несёт.

Определение: Линейная комбинация называется тривиальной, если все её коэффициенты равны нулю: $\lambda_1 = \lambda_2 = \dots = \lambda_k = 0$. Если хотя бы один коэффициент отличен от нуля, комбинация называется нетривиальной.

Тривиальная комбинация любого набора векторов равна нулевому вектору:

$$0 \cdot v_1 + 0 \cdot v_2 + \dots + 0 \cdot v_k = 0 + 0 + \dots + 0 = 0.$$

Это следует прямо из аксиом (свойство $0 \cdot v = 0$ мы выводили в прошлом уроке) и верно всегда, при любых векторах в любом пространстве. Ноль получить тривиально — умение бесполезное, как умение решать однородную систему нулевым вектором.

Содержательный вопрос звучит иначе: можно ли получить нулевой вектор нетривиально? То есть подобрать коэффициенты, не все равные нулю, так, чтобы сумма схлопнулась в ноль. Вот это уже свойство конкретного набора, и оно бывает и так и эдак.

Проверим на наших $v_1 = (2,1)$, $v_2 = (1,3)$. Ищем $\lambda_1, \lambda_2$ с условием $\lambda_1(2,1) + \lambda_2(1,3) = (0,0)$. Покоординатно:

$$\begin{cases} 2\lambda_1 + \lambda_2 = 0 \\ \lambda_1 + 3\lambda_2 = 0 \end{cases}$$

Из первого уравнения $\lambda_2 = -2\lambda_1$; подставляем во второе: $\lambda_1 - 6\lambda_1 = -5\lambda_1 = 0$, откуда $\lambda_1 = 0$ и следом $\lambda_2 = 0$. Нетривиальной комбинации нет — только тривиальная.

А вот другая пара: $u_1 = (2, 1)$, $u_2 = (6, 3)$. Здесь $3u_1 - u_2 = (6,3) - (6,3) = (0,0)$, коэффициенты $(3, -1)$ — не нули. Нетривиальная комбинация нашлась.

Заметь, что во втором случае мы фактически обнаружили, что $u_2 = 3u_1$: второй вектор — просто растянутый первый. Это не совпадение, и именно эту связь мы формализуем в следующем разделе.

Разбор примеров

Пример 1. Разные комбинации одного набора.

Пусть $v_1 = (1, 0, 2)$, $v_2 = (0, 1, -1)$ в $\mathbb{R}^3$. Посчитаем несколько комбинаций:

$$3v_1 + 2v_2 = (3, 0, 6) + (0, 2, -2) = (3, 2, 4),$$

$$-v_1 + 5v_2 = (-1, 0, -2) + (0, 5, -5) = (-1, 5, -7),$$

$$0 \cdot v_1 + 0 \cdot v_2 = (0, 0, 0).$$

Последняя строка — тривиальная комбинация, и она даёт ноль, как и положено. Есть ли нетривиальная, дающая ноль? Условие $\lambda_1(1,0,2) + \lambda_2(0,1,-1) = (0,0,0)$ по первой координате даёт $\lambda_1 = 0$, по второй — $\lambda_2 = 0$. Нет, нетривиальной нет.

Пример 2. Комбинация с нулевым коэффициентом всё ещё может быть нетривиальной.

Возьмём три вектора $w_1 = (1, 1)$, $w_2 = (2, 2)$, $w_3 = (0, 5)$ и комбинацию с коэффициентами $(2, -1, 0)$:

$$2w_1 - w_2 + 0 \cdot w_3 = (2, 2) - (2, 2) + (0, 0) = (0, 0).$$

Один из коэффициентов равен нулю, но комбинация всё равно нетривиальна: требуется, чтобы хотя бы один коэффициент был ненулевым, а не чтобы все были ненулевыми. Это частая путаница, и её стоит зафиксировать сразу: «нетривиальная» — это отрицание к «все нули», а не к «хоть один ноль».

Пример 3. Комбинация в пространстве многочленов.

В пространстве многочленов степени не выше двух возьмём $p_1 = x^2 + 1$, $p_2 = x - 3$, $p_3 = x^2 + x$. Комбинация с коэффициентами $(1, 1, -1)$:

$$1 \cdot (x^2 + 1) + 1 \cdot (x - 3) - 1 \cdot (x^2 + x) = x^2 + 1 + x - 3 - x^2 - x = -2.$$

Получился ненулевой многочлен (константа $-2$), значит эта конкретная комбинация ноль не даёт. Но она показывает механику: в абстрактном пространстве линейная комбинация считается ровно так же, только «покоординатно» означает «по коэффициентам при одинаковых степенях».

Пример 4. Комбинация матриц.

$$2\begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix} - 3\begin{pmatrix} 0 & 1 \\ 1 & 0 \end{pmatrix} = \begin{pmatrix} 2 & 0 \\ 0 & 2 \end{pmatrix} - \begin{pmatrix} 0 & 3 \\ 3 & 0 \end{pmatrix} = \begin{pmatrix} 2 & -3 \\ -3 & 2 \end{pmatrix}.$$

Пространство матриц $2 \times 2$ — полноценное векторное пространство, и линейные комбинации в нём считаются поэлементно.

Почему это важно

Понятие тривиальной комбинации кажется пустым — «всё умножили на ноль, получили ноль». Но именно эта пустота делает его полезным как точку отсчёта. Вопрос «есть ли у набора нетривиальная комбинация, равная нулю» — это вопрос о том, есть ли в наборе внутренняя связь, скрытое соотношение между векторами. Тривиальная комбинация есть всегда и потому ничего не различает; нетривиальная — есть не всегда, и потому различает всё.

Практический смысл прямой. Каждый вектор набора — это, скажем, столбец таблицы данных: признак. Нетривиальная комбинация, дающая ноль, — это найденное тождество вида «пять раз первый признак минус второй плюс третий равны нулю на каждой строке таблицы». Такое тождество означает, что признаки связаны формулой, и один из них не несёт новой информации. Тривиальная комбинация тут ни о чём не говорит: «ноль раз первый плюс ноль раз второй равно нулю» верно для любой таблицы на свете.

Ровно поэтому в определении, к которому мы сейчас переходим, слово «нетривиальная» стоит на самом видном месте. Убери его — и определение станет тавтологией, верной для всех наборов сразу.

Два языка линейной зависимости

Интуиция: избыточность набора

Представь, что векторы — это инструкции движения, а линейная комбинация — маршрут: пройди $\lambda_1$ шагов в направлении $v_1$, потом $\lambda_2$ шагов в направлении $v_2$, и так далее. Тогда нетривиальная комбинация, равная нулю, — это непустой маршрут, который возвращает тебя ровно в исходную точку. Раз такой маршрут есть, значит какое-то из направлений можно «обойти» через остальные: вместо того чтобы идти по $v_1$, можно пройти комбинацией остальных и попасть туда же. Направление $v_1$ избыточно.

Если же ни один непустой маршрут не возвращает в начало — каждое направление уводит по-настоящему в свою сторону, и обойти его через другие невозможно. Набор «честный», без дублей.

Теперь запишем это точно.

Определение 1 (основное). Система векторов $v_1, v_2, \dots, v_k$ векторного пространства $V$ называется линейно зависимой, если существует нетривиальная линейная комбинация этих векторов, равная нулевому вектору:

$$\lambda_1 v_1 + \lambda_2 v_2 + \dots + \lambda_k v_k = 0, \qquad \text{где } \lambda_1^2 + \lambda_2^2 + \dots + \lambda_k^2 \ne 0$$

(последнее условие — компактная запись фразы «не все коэффициенты равны нулю»).

Система называется линейно независимой, если такой комбинации не существует, то есть равенство $\lambda_1 v_1 + \dots + \lambda_k v_k = 0$ возможно только при $\lambda_1 = \lambda_2 = \dots = \lambda_k = 0$.

Обрати внимание на логическую форму независимости: это утверждение вида «из $A$ следует $B$». Из того, что комбинация равна нулю, следует, что все коэффициенты нулевые. Именно так независимость и доказывают на практике: предполагают, что комбинация равна нулю, и выводят из этого, что все $\lambda_i$ обязаны быть нулями.

Есть второй способ сказать то же самое — тот, который ближе к интуиции про «лишний вектор».

Определение 2 (эквивалентное). Система из $k \ge 2$ векторов линейно зависима тогда и только тогда, когда хотя бы один из её векторов является линейной комбинацией остальных.

Слово «хотя бы один» здесь — не небрежность, а точная формулировка, и через два подраздела мы увидим, почему её нельзя усилить до «каждый».

Доказательство эквивалентности

Докажем, что оба определения задают одно и то же свойство. Пусть в системе $k \ge 2$ векторов.

Шаг 1. Из определения 1 следует определение 2.

Пусть система линейно зависима, то есть

$$\lambda_1 v_1 + \lambda_2 v_2 + \dots + \lambda_k v_k = 0$$

и не все $\lambda_i$ нулевые. Значит, найдётся индекс $j$, для которого $\lambda_j \ne 0$. Перенесём все слагаемые, кроме $j$-го, в правую часть:

$$\lambda_j v_j = -\lambda_1 v_1 - \dots - \lambda_{j-1}v_{j-1} - \lambda_{j+1}v_{j+1} - \dots - \lambda_k v_k.$$

Так как $\lambda_j \ne 0$, на него можно поделить (в поле вещественных чисел это законно, для нуля было бы нельзя):

$$v_j = -\frac{\lambda_1}{\lambda_j} v_1 - \dots - \frac{\lambda_{j-1}}{\lambda_j}v_{j-1} - \frac{\lambda_{j+1}}{\lambda_j}v_{j+1} - \dots - \frac{\lambda_k}{\lambda_j} v_k.$$

Вектор $v_j$ выражен через остальные. Утверждение доказано.

Шаг 2. Из определения 2 следует определение 1.

Пусть некоторый вектор — скажем, $v_m$ — выражается через остальные:

$$v_m = \mu_1 v_1 + \dots + \mu_{m-1}v_{m-1} + \mu_{m+1}v_{m+1} + \dots + \mu_k v_k.$$

Перенесём $v_m$ в правую часть:

$$\mu_1 v_1 + \dots + \mu_{m-1}v_{m-1} + (-1)\cdot v_m + \mu_{m+1}v_{m+1} + \dots + \mu_k v_k = 0.$$

Это линейная комбинация всех $k$ векторов, и коэффициент при $v_m$ равен $-1 \ne 0$. Значит, комбинация нетривиальна, и система линейно зависима по определению 1. Доказано.

Заметь, где именно в шаге 1 использовалось условие $\lambda_j \ne 0$: без него деление было бы невозможно, и весь переход рассыпался бы. Это и есть техническая причина, по которой в определении требуется нетривиальная комбинация. И заметь, где в шаге 2 взялся ненулевой коэффициент: он появился сам, из переноса $v_m$ налево, и равен ровно $-1$. Никакого подбора не потребовалось.

Ловушка: «один» — это не «каждый»

Вот здесь этот урок чаще всего понимают неправильно, и ошибка живучая: её тащат в следующие темы и получают неверные выводы про базисы и размерности.

Определение 2 говорит: зависимость означает, что хотя бы один вектор выражается через остальные. Многие запоминают его как «в зависимой системе любой вектор выражается через остальные». Это неверно. Разберём контрпример.

Возьмём в $\mathbb{R}^2$ три вектора:

$$v_1 = (1, 0), \qquad v_2 = (2, 0), \qquad v_3 = (0, 1).$$

Система зависима. Действительно, $2v_1 - v_2 = (2,0) - (2,0) = (0,0)$, и с учётом третьего вектора комбинация

$$2v_1 - v_2 + 0 \cdot v_3 = 0$$

нетривиальна (коэффициенты $2, -1, 0$, первый ненулевой). По определению 1 система линейно зависима.

Какие векторы выражаются через остальные? Проверим по очереди.

Вектор $v_1$: $v_1 = \tfrac{1}{2}v_2 + 0 \cdot v_3$. Выражается.

Вектор $v_2$: $v_2 = 2v_1 + 0 \cdot v_3$. Выражается.

Вектор $v_3$: попробуем $v_3 = \alpha v_1 + \beta v_2$. Правая часть равна $(\alpha + 2\beta, \; 0)$ — у неё вторая координата всегда ноль, при любых $\alpha, \beta$. А у $v_3$ вторая координата равна единице. Равенство невозможно ни при каких коэффициентах. Вектор $v_3$ через остальные не выражается.

Итог: система зависима, но конкретный вектор $v_3$ — не «виновник» этой зависимости и через другие не выражается. Геометрия здесь совершенно прозрачна: $v_1$ и $v_2$ лежат на оси абсцисс, их линейная оболочка — эта ось; $v_3$ смотрит по оси ординат и на оси абсцисс не лежит. Зависимость сидит внутри пары $v_1, v_2$, а $v_3$ к ней непричастен.

Есть точное указание на то, кто именно выражается. Вернёмся к шагу 1 доказательства: там мы выражали $v_j$ и для этого делили на $\lambda_j$. Значит:

Уточнение: в зависимой системе через остальные выражается ровно тот вектор, у которого коэффициент в нетривиальной обнуляющей комбинации отличен от нуля. Векторы с нулевым коэффициентом выражаться не обязаны.

В нашем примере обнуляющая комбинация была $(2, -1, 0)$: у $v_1$ и $v_2$ коэффициенты ненулевые — они и выражаются; у $v_3$ коэффициент ноль — он и не выражается.

Более того, разные обнуляющие комбинации могут «указывать» на разные векторы, и полный список тех, кто выражается, получается объединением по всем комбинациям. В нашем примере любое решение системы $\lambda_1(1,0) + \lambda_2(2,0) + \lambda_3(0,1) = (0,0)$ имеет вид: вторая координата даёт $\lambda_3 = 0$, первая даёт $\lambda_1 = -2\lambda_2$. То есть все обнуляющие комбинации — это $t \cdot (-2, 1, 0)$, и у $v_3$ коэффициент ноль во всех без исключения. Поэтому $v_3$ не выражается ни при каком раскладе — что мы и проверили напрямую.

Правильная формулировка, которую стоит запомнить дословно: зависимость — это свойство системы целиком, а не отдельного вектора в ней. Фраза «вектор $v_3$ зависим» бессмысленна; осмысленны только фразы «система зависима» и «вектор $v_3$ принадлежит линейной оболочке остальных».

Разбор примеров

Пример 1. Проверка независимости по определению.

Проверим, независимы ли $v_1 = (1, 2)$ и $v_2 = (4, 3)$ в $\mathbb{R}^2$.

Пусть $\lambda_1 v_1 + \lambda_2 v_2 = 0$. Покоординатно:

$$\begin{cases} \lambda_1 + 4\lambda_2 = 0 \\ 2\lambda_1 + 3\lambda_2 = 0 \end{cases}$$

Из первого уравнения $\lambda_1 = -4\lambda_2$, подставляем во второе: $-8\lambda_2 + 3\lambda_2 = -5\lambda_2 = 0$, значит $\lambda_2 = 0$ и $\lambda_1 = 0$. Из равенства комбинации нулю следует нулевая тривиальность коэффициентов — система независима.

Пример 2. Проверка зависимости и явное выражение.

Возьмём $u_1 = (1, 2, 0)$, $u_2 = (0, 1, 1)$, $u_3 = (2, 5, 1)$ в $\mathbb{R}^3$.

Заметим, что $2u_1 + u_2 = (2, 4, 0) + (0, 1, 1) = (2, 5, 1) = u_3$. Значит, $u_3$ выражается через остальные, и по определению 2 система зависима. Обнуляющая комбинация получается переносом:

$$2u_1 + u_2 - u_3 = 0.$$

Коэффициенты $(2, 1, -1)$ — все ненулевые. По уточнению выше это значит, что здесь каждый из трёх векторов выражается через два других: например, $u_1 = \tfrac{1}{2}(u_3 - u_2)$, $u_2 = u_3 - 2u_1$. Сравни с предыдущим контрпримером, где нулевой коэффициент у $v_3$ ломал эту симметрию.

Пример 3. Зависимость с нулевым вектором.

Система $w_1 = (3, -1, 4)$, $w_2 = (0, 0, 0)$. Комбинация $0 \cdot w_1 + 1 \cdot w_2 = (0,0,0)$ нетривиальна: коэффициент при $w_2$ равен единице. Система зависима.

При этом $w_1$ через $w_2$ не выражается: любая комбинация одного нулевого вектора равна нулю, а $w_1$ не нулевой. Зато $w_2$ через $w_1$ выражается: $w_2 = 0 \cdot w_1$. Снова «хотя бы один», а не «каждый».

Пример 4. Один вектор — тоже система.

Система из одного вектора $v$. Комбинация — это просто $\lambda v$. Если $v \ne 0$, то из $\lambda v = 0$ следует $\lambda = 0$ (если бы $\lambda \ne 0$, то $v = \lambda^{-1} \cdot 0 = 0$, противоречие). Значит, один ненулевой вектор образует линейно независимую систему.

Если же $v = 0$, то $1 \cdot v = 0$ при коэффициенте $1 \ne 0$ — система из одного нулевого вектора зависима. Определение 2 к случаю $k = 1$ неприменимо (нет «остальных»), поэтому для одиночного вектора работаем только с определением 1.

Почему это важно

Наличие двух эквивалентных формулировок — это не роскошь, а рабочий инструмент, и пользоваться надо той, которая удобнее в конкретной задаче.

Определение 1 удобно, когда нужно вычислять. Оно прямо переводится в однородную систему линейных уравнений относительно коэффициентов $\lambda_i$ — и весь аппарат урока 167 включается автоматически. Никакого перебора «а вдруг вот этот выражается через тех» не требуется: одна система, один ранг, один ответ.

Определение 2 удобно, когда нужно понимать смысл. Оно прямо говорит: зависимость означает избыточность, дублирование информации. Именно на этом языке формулируются прикладные вещи — «признак выражается через другие», «уравнение является следствием остальных», «вектор не добавляет нового направления».

А контрпример с $v_3$ важен потому, что он лечит целый класс неверных рассуждений вида «система зависима, значит любой её вектор можно выбросить без потерь». Нельзя. В нашем примере выбрасывание $v_3$ схлопывает оболочку с плоскости до прямой — потеря существенная. Выбросить без потерь можно только тот вектор, который действительно выражается через остальные. К этой мысли мы вернёмся в разделе про геометрический смысл — она и есть мост к следующему уроку.

Рабочий алгоритм: сведение к однородной системе

Интуиция: неизвестные — это коэффициенты

Всё, что нужно для практики, содержится в одном наблюдении. Запишем условие зависимости для векторов-столбцов $v_1, \dots, v_k$ из $\mathbb{R}^n$:

$$\lambda_1 v_1 + \lambda_2 v_2 + \dots + \lambda_k v_k = 0.$$

Слева стоит вектор из $n$ координат, справа — нулевой вектор из $n$ координат. Приравняем покоординатно: получится $n$ уравнений. Что в них известно, а что нет? Координаты векторов известны — это данные задачи. Неизвестны коэффициенты $\lambda_1, \dots, \lambda_k$. И каждое из $n$ уравнений линейно относительно этих коэффициентов, потому что $i$-я координата суммы равна $\lambda_1 v_{1i} + \lambda_2 v_{2i} + \dots + \lambda_k v_{ki}$.

То есть перед нами однородная система из $n$ уравнений с $k$ неизвестными. Матрица этой системы составлена из наших векторов, записанных столбцами: в первом столбце координаты $v_1$, во втором — $v_2$, и так далее. Действительно, произведение матрицы на столбец — это в точности линейная комбинация столбцов матрицы с коэффициентами из этого столбца:

$$A\lambda = \begin{pmatrix} | & | & & | \\ v_1 & v_2 & \dots & v_k \\ | & | & & | \end{pmatrix} \begin{pmatrix} \lambda_1 \\ \lambda_2 \\ \vdots \\ \lambda_k \end{pmatrix} = \lambda_1 v_1 + \lambda_2 v_2 + \dots + \lambda_k v_k.$$

Дальше — прямое применение критерия из урока 167. Система $A\lambda = 0$ имеет нетривиальное решение тогда и только тогда, когда $\operatorname{rank} A < k$, где $k$ — число неизвестных, то есть число векторов. А нетривиальное решение — это и есть нетривиальная комбинация, дающая ноль.

Теорема (критерий линейной зависимости через ранг). Система векторов $v_1, \dots, v_k$ из $\mathbb{R}^n$ линейно зависима тогда и только тогда, когда

$$\operatorname{rank} A < k,$$

где $A$ — матрица размера $n \times k$, составленная из этих векторов как из столбцов. Система линейно независима тогда и только тогда, когда $\operatorname{rank} A = k$.

Ранг матрицы не превосходит числа её столбцов, поэтому третьего варианта нет: либо $\operatorname{rank} A = k$ (независимы), либо $\operatorname{rank} A < k$ (зависимы).

Небольшое, но важное замечание. Ранг матрицы не меняется при транспонировании — это факт из урока 162. Поэтому векторы можно записывать и строками: ранг получится тот же самый, и ответ не изменится. На практике строками писать удобнее (проще делать элементарные преобразования, глядя на строки), и почти все решают именно так. Но помнить, откуда берётся система, полезно: неизвестными там были коэффициенты, а векторы стояли столбцами. Если тебе нужны только «зависима / независима» — пиши строками. Если нужны сами коэффициенты $\lambda_i$ — работай со столбцовой матрицей и ищи её ядро.

Алгоритм

Пошагово, для набора из $k$ векторов в $\mathbb{R}^n$.

  1. Составь матрицу $A$: векторы — столбцы (если нужны коэффициенты) или строки (если нужен только ответ «да/нет»).

  2. Приведи $A$ элементарными преобразованиями к ступенчатому виду и посчитай ранг $r$ — число ненулевых строк.

  3. Сравни $r$ с $k$ — числом векторов. Если $r = k$ — система независима, и на этом всё. Если $r < k$ — система зависима.

  4. Если нужны коэффициенты нетривиальной комбинации: возьми матрицу со столбцами-векторами, доведи её до улучшенного ступенчатого вида (RREF), назначь свободной переменной единицу и найди остальные обратным ходом. Получится вектор $\lambda = (\lambda_1, \dots, \lambda_k)$ — ровно набор искомых коэффициентов.

  5. Проверь подстановкой: посчитай $\lambda_1 v_1 + \dots + \lambda_k v_k$ и убедись, что вышел нулевой вектор. Эта проверка занимает полминуты и ловит почти любую арифметическую ошибку.

Шаг 5 не декоративный. Коэффициенты — это решение системы, а решение системы легко проверяется подстановкой в исходные данные, минуя все промежуточные преобразования. Если ошибка вкралась в сами преобразования, проверка по ступенчатому виду её не заметит, а подстановка в исходные векторы — заметит.

Разбор примеров

Пример 1. Два вектора в $\mathbb{R}^2$.

$$v_1 = (1, 3), \qquad v_2 = (2, 6).$$

Матрица со столбцами-векторами:

$$A = \begin{pmatrix} 1 & 2 \\ 3 & 6 \end{pmatrix}.$$

Преобразование $R_2 \to R_2 - 3R_1$ даёт строку $(0, 0)$. Ступенчатый вид имеет одну ненулевую строку, значит $r = 1 < 2 = k$. Система зависима.

Коэффициенты: RREF равен $\begin{pmatrix} 1 & 2 \\ 0 & 0 \end{pmatrix}$, пивот в первом столбце, свободная переменная — $\lambda_2$. Полагаем $\lambda_2 = 1$, тогда $\lambda_1 + 2 \cdot 1 = 0$, то есть $\lambda_1 = -2$. Комбинация:

$$-2v_1 + v_2 = (-2, -6) + (2, 6) = (0, 0). \quad \checkmark$$

Знак можно поменять на противоположный, ответ от этого не портится: $2v_1 - v_2 = 0$ — та же самая связь.

Пример 2. Три вектора в $\mathbb{R}^3$.

$$v_1 = (1, 2, 3), \quad v_2 = (4, 5, 6), \quad v_3 = (7, 8, 9).$$

Матрица со столбцами:

$$A = \begin{pmatrix} 1 & 4 & 7 \\ 2 & 5 & 8 \\ 3 & 6 & 9 \end{pmatrix}.$$

Прямой ход: $R_2 \to R_2 - 2R_1$ даёт $(0, -3, -6)$; $R_3 \to R_3 - 3R_1$ даёт $(0, -6, -12)$; затем $R_3 \to R_3 - 2R_2$ даёт $(0, 0, 0)$. Ступенчатый вид:

$$\begin{pmatrix} 1 & 4 & 7 \\ 0 & -3 & -6 \\ 0 & 0 & 0 \end{pmatrix}, \qquad r = 2 < 3 = k.$$

Система зависима. Матрица квадратная, поэтому можно было сразу посчитать определитель: он равен нулю (проверяется разложением или замечанием, что третий столбец равен удвоенному второму минус первый).

Коэффициенты: доводим до RREF. Делим вторую строку на $-3$: $(0, 1, 2)$; затем $R_1 \to R_1 - 4R_2$ даёт $(1, 0, -1)$. Получаем

$$\begin{pmatrix} 1 & 0 & -1 \\ 0 & 1 & 2 \\ 0 & 0 & 0 \end{pmatrix}.$$

Пивоты в столбцах 1 и 2, свободная переменная $\lambda_3$. При $\lambda_3 = 1$: из второй строки $\lambda_2 + 2 = 0$, значит $\lambda_2 = -2$; из первой $\lambda_1 - 1 = 0$, значит $\lambda_1 = 1$. Комбинация:

$$v_1 - 2v_2 + v_3 = (1, 2, 3) - (8, 10, 12) + (7, 8, 9) = (0, 0, 0). \quad \checkmark$$

Пример 3. Три вектора в $\mathbb{R}^4$ — независимые.

$$v_1 = (1, 0, 2, 1), \quad v_2 = (0, 1, 1, 3), \quad v_3 = (2, 1, 0, 1).$$

Пишем строками (нужен только ответ «зависима или нет»):

$$\begin{pmatrix} 1 & 0 & 2 & 1 \\ 0 & 1 & 1 & 3 \\ 2 & 1 & 0 & 1 \end{pmatrix} \xrightarrow{R_3 \to R_3 - 2R_1} \begin{pmatrix} 1 & 0 & 2 & 1 \\ 0 & 1 & 1 & 3 \\ 0 & 1 & -4 & -1 \end{pmatrix} \xrightarrow{R_3 \to R_3 - R_2} \begin{pmatrix} 1 & 0 & 2 & 1 \\ 0 & 1 & 1 & 3 \\ 0 & 0 & -5 & -4 \end{pmatrix}.$$

Три ненулевые строки, $r = 3 = k$. Система независима.

Обрати внимание: векторов три, а пространство четырёхмерное — места хватает, никакого автоматического ответа тут нет, приходится считать.

Пример 4. Четыре вектора в $\mathbb{R}^3$.

$$v_1 = (1, 2, 1), \quad v_2 = (2, -1, 3), \quad v_3 = (0, 1, 1), \quad v_4 = (3, 2, 5).$$

Четыре вектора в трёхмерном пространстве. Ранг матрицы $3 \times 4$ не превосходит трёх (числа строк), а векторов четыре, значит $r \le 3 < 4 = k$ — система зависима без всяких вычислений. Это частный случай теоремы, которую мы отдельно докажем в следующем разделе.

Но коэффициенты всё-таки посчитаем. Матрица со столбцами-векторами:

$$A = \begin{pmatrix} 1 & 2 & 0 & 3 \\ 2 & -1 & 1 & 2 \\ 1 & 3 & 1 & 5 \end{pmatrix}.$$

Прямой ход: $R_2 \to R_2 - 2R_1$ даёт $(0, -5, 1, -4)$; $R_3 \to R_3 - R_1$ даёт $(0, 1, 1, 2)$. Поменяем местами вторую и третью строки, чтобы работать с единицей:

$$\begin{pmatrix} 1 & 2 & 0 & 3 \\ 0 & 1 & 1 & 2 \\ 0 & -5 & 1 & -4 \end{pmatrix} \xrightarrow{R_3 \to R_3 + 5R_2} \begin{pmatrix} 1 & 2 & 0 & 3 \\ 0 & 1 & 1 & 2 \\ 0 & 0 & 6 & 6 \end{pmatrix}.$$

Ранг равен 3, свободная переменная одна — $\lambda_4$. Доводим до RREF: делим третью строку на 6, получаем $(0,0,1,1)$; $R_2 \to R_2 - R_3$ даёт $(0,1,0,1)$; $R_1 \to R_1 - 2R_2$ даёт $(1,0,0,1)$. Итог:

$$\begin{pmatrix} 1 & 0 & 0 & 1 \\ 0 & 1 & 0 & 1 \\ 0 & 0 & 1 & 1 \end{pmatrix}.$$

При $\lambda_4 = 1$ получаем $\lambda_1 = \lambda_2 = \lambda_3 = -1$, то есть комбинация $-v_1 - v_2 - v_3 + v_4 = 0$, или в более приятном виде

$$v_1 + v_2 + v_3 = v_4.$$

Проверка: $(1,2,1) + (2,-1,3) + (0,1,1) = (3, 2, 5) = v_4$. $\checkmark$

Кстати, первые три вектора между собой независимы: определитель матрицы из них равен $-6 \ne 0$. То есть «лишний» здесь ровно один — четвёртый, и он честно выражается через первые три.

Пример 5. Три вектора в $\mathbb{R}^4$ — зависимые.

$$v_1 = (1, 1, 0, 2), \quad v_2 = (2, 0, 1, 1), \quad v_3 = (0, 2, -1, 3).$$

Здесь $k = 3$, $n = 4$, автоматического ответа нет. Пишем строками:

$$\begin{pmatrix} 1 & 1 & 0 & 2 \\ 2 & 0 & 1 & 1 \\ 0 & 2 & -1 & 3 \end{pmatrix} \xrightarrow{R_2 \to R_2 - 2R_1} \begin{pmatrix} 1 & 1 & 0 & 2 \\ 0 & -2 & 1 & -3 \\ 0 & 2 & -1 & 3 \end{pmatrix} \xrightarrow{R_3 \to R_3 + R_2} \begin{pmatrix} 1 & 1 & 0 & 2 \\ 0 & -2 & 1 & -3 \\ 0 & 0 & 0 & 0 \end{pmatrix}.$$

Ранг равен 2, векторов три: $2 < 3$, система зависима. Из последнего преобразования видно и соотношение: третья строка обнулилась после прибавления второй, а вторая была $v_2 - 2v_1$. Значит $v_3 + (v_2 - 2v_1) = 0$, то есть

$$2v_1 - v_2 - v_3 = 0.$$

Проверка: $2(1,1,0,2) - (2,0,1,1) - (0,2,-1,3) = (2,2,0,4) - (2,0,1,1) - (0,2,-1,3) = (0,0,0,0)$. $\checkmark$

Почему это важно

Этот раздел — практическое ядро урока: после него любая задача на зависимость становится механической. Но у сведения к однородной системе есть и концептуальная ценность.

Во-первых, оно объясняет, почему ранг вообще оказался таким важным числом. В уроке 162 ранг вводился как «число ненулевых строк после приведения к ступенчатому виду» — определение честное, но техническое: непонятно, почему это число ничего не значит само по себе, но всюду всплывает. Теперь видно: ранг измеряет, сколько среди строк (или столбцов) действительно независимых. Это уже не про алгоритм приведения, а про сами данные.

Во-вторых, оно даёт единый язык для трёх разных на вид вопросов. «Есть ли у однородной системы нетривиальное решение?», «Зависимы ли столбцы матрицы?», «Обратима ли матрица?» — это один и тот же вопрос, заданный с трёх сторон. Для квадратной матрицы $A$ размера $n \times n$ равносильны:

  • $\det A \ne 0$;

  • $\operatorname{rank} A = n$;

  • $Ax = 0$ имеет только тривиальное решение;

  • столбцы $A$ линейно независимы;

  • строки $A$ линейно независимы;

  • $A$ обратима.

Это тот самый список эквивалентностей, который в англоязычных учебниках называют invertible matrix theorem, и большинство пунктов в нём ты уже прошёл поодиночке. Сегодня добавились два пункта про независимость, и картина замкнулась.

В-третьих, чисто практически: сведение к системе снимает вопрос «а вдруг я не заметил хитрую зависимость». Ранг не зависит от твоей наблюдательности. Если соотношение между векторами есть, оно вылезет в ступенчатом виде обязательно, даже если на глаз векторы выглядят совершенно непохожими.

Частные случаи и быстрые критерии

Общий алгоритм работает всегда, но в четырёх типовых ситуациях ответ получается быстрее — иногда вообще без вычислений. Эти четыре случая покрывают процентов восемьдесят задач, которые тебе встретятся.

Случай 1: ровно $n$ векторов в $\mathbb{R}^n$ — считаем определитель

Если векторов столько же, сколько координат, матрица получается квадратной, и включается вся техника определителей из уроков 158–160.

Критерий: Система из $n$ векторов пространства $\mathbb{R}^n$ линейно зависима тогда и только тогда, когда определитель матрицы, составленной из этих векторов (по строкам или по столбцам — безразлично), равен нулю.

Соответственно, система независима тогда и только тогда, когда $\det \ne 0$.

Обоснование в одну строку: для квадратной матрицы $n \times n$ условие $\operatorname{rank} A = n$ равносильно $\det A \ne 0$, а критерий предыдущего раздела как раз сравнивает ранг с числом векторов, то есть с $n$. Транспонирование не меняет определителя, поэтому запись по строкам и по столбцам даёт одно и то же число.

Практически это самый быстрый тест для размерностей 2 и 3. Определитель $2\times2$ считается за пять секунд, $3\times3$ — за двадцать. Никакого приведения к ступенчатому виду.

Есть, впрочем, важная оговорка. Определитель отвечает только на вопрос «зависима или нет». Он не говорит, ни какие именно коэффициенты дают ноль, ни сколько в наборе независимых векторов, если он зависим. Определитель, равный нулю, одинаково выглядит и когда ранг $n-1$, и когда ранг $1$. Если нужна эта информация — придётся всё равно приводить матрицу к ступенчатому виду.

Случай 2: больше $n$ векторов в $\mathbb{R}^n$ — зависимы всегда

Теорема. Любая система из $k$ векторов пространства $\mathbb{R}^n$, где $k > n$, линейно зависима.

Доказательство. Составим матрицу $A$ размера $n \times k$, поставив векторы столбцами. Ранг матрицы не превосходит ни числа её строк, ни числа её столбцов — это свойство ранга из урока 162 (ступенчатый вид не может иметь больше ненулевых строк, чем всего строк в матрице). Значит,

$$\operatorname{rank} A \le n < k.$$

По критерию из предыдущего раздела система зависима. Доказательство закончено.

Стоит проговорить, почему это утверждение содержательное, а не просто арифметическое. Оно говорит: в $n$-мерном пространстве больше $n$ «по-настоящему разных направлений» не бывает. Сколько бы векторов ты ни набрал в $\mathbb{R}^3$ — десять, тысячу, — среди них не найдётся четырёх независимых. Пространство не резиновое: его «ёмкость» равна ровно $n$, и это число нельзя превысить никакой изобретательностью в подборе векторов.

Обратное неверно и это важно: из $k \le n$ не следует независимость. Три вектора в $\mathbb{R}^3$ могут быть как независимыми, так и зависимыми — тут надо считать. Теорема даёт гарантию только в одну сторону.

Практический вывод: прежде чем считать, посчитай. Сравни количество векторов с размерностью пространства. Если векторов больше — ответ «зависима» пишется мгновенно, и это полный, законченный ответ.

Случай 3: два вектора — коллинеарность

Критерий: Два вектора линейно зависимы тогда и только тогда, когда они пропорциональны (коллинеарны), то есть один получается умножением другого на число. В частности, любая пара, где хотя бы один вектор нулевой, зависима.

Доказательство. Пусть $\lambda_1 v_1 + \lambda_2 v_2 = 0$ нетривиально, скажем $\lambda_1 \ne 0$. Тогда $v_1 = -\tfrac{\lambda_2}{\lambda_1} v_2$, то есть $v_1$ пропорционален $v_2$. Обратно, если $v_1 = c v_2$, то $1 \cdot v_1 - c \cdot v_2 = 0$ — нетривиальная комбинация (коэффициент при $v_1$ равен единице). Доказано.

Проверять пропорциональность удобнее всего сравнением отношений одноимённых координат. Для векторов $v_1 = (a_1, a_2, a_3)$ и $v_2 = (b_1, b_2, b_3)$ с ненулевыми $b_i$ условие выглядит как

$$\frac{a_1}{b_1} = \frac{a_2}{b_2} = \frac{a_3}{b_3}.$$

Аккуратность нужна с нулями: если какая-то координата одного вектора равна нулю, у пропорционального ему вектора та же координата тоже обязана быть нулём. Скажем, $(1, 0, 3)$ и $(2, 5, 6)$ не пропорциональны именно из-за второй координаты, хотя первая и третья дают одинаковое отношение $1/2$. Безопаснее проверять «крест-накрест»: $a_i b_j = a_j b_i$ для всех пар индексов — эта форма не требует деления и с нулями работает корректно.

Геометрически: два вектора зависимы, когда лежат на одной прямой через начало координат.

Случай 4: три вектора в $\mathbb{R}^3$ — компланарность и смешанное произведение

Здесь подключается геометрия из уроков 151–155.

Критерий: Три вектора $a, b, c$ в трёхмерном пространстве линейно зависимы $\iff$ их смешанное произведение равно нулю $\iff$ они компланарны (лежат в одной плоскости, проходящей через начало координат).

Все три условия — одно и то же, записанное на разных языках. Связь такая: смешанное произведение $(a, b, c) = (a \times b) \cdot c$ равно определителю матрицы, составленной из координат этих векторов; определитель равен нулю тогда и только тогда, когда векторы зависимы (случай 1 при $n = 3$). А геометрический смысл смешанного произведения — объём параллелепипеда, построенного на трёх векторах; нулевой объём означает, что параллелепипед «сплющился» — все три вектора попали в одну плоскость.

Это красивый мост: чисто алгебраическое условие «существует нетривиальная нулевая комбинация» оказывается в трёхмерном случае наглядной геометрической картинкой. Для двух векторов такой картинкой была прямая (коллинеарность), для трёх — плоскость (компланарность). В размерностях выше третьей наглядность заканчивается, а алгебра работает по-прежнему.

Разбор примеров

Пример 1. Три вектора в $\mathbb{R}^3$ — определитель.

$$v_1 = (2, 1, 3), \quad v_2 = (1, -1, 2), \quad v_3 = (3, 4, 1).$$

Векторов ровно три, пространство трёхмерное — считаем определитель, записав векторы строками:

$$\det \begin{pmatrix} 2 & 1 & 3 \\ 1 & -1 & 2 \\ 3 & 4 & 1 \end{pmatrix} = 2\begin{vmatrix} -1 & 2 \\ 4 & 1 \end{vmatrix} - 1\begin{vmatrix} 1 & 2 \\ 3 & 1 \end{vmatrix} + 3\begin{vmatrix} 1 & -1 \\ 3 & 4 \end{vmatrix}$$$$= 2(-1 - 8) - 1(1 - 6) + 3(4 + 3) = -18 + 5 + 21 = 8 \ne 0.$$

Система независима. Векторы не компланарны, объём построенного на них параллелепипеда равен $|8| = 8$.

Пример 2. Три вектора в $\mathbb{R}^3$ — смешанное произведение равно нулю.

$$a = (1, 2, -1), \quad b = (2, -1, 3), \quad c = (4, 3, 1).$$$$\det \begin{pmatrix} 1 & 2 & -1 \\ 2 & -1 & 3 \\ 4 & 3 & 1 \end{pmatrix} = 1(-1 - 9) - 2(2 - 12) + (-1)(6 + 4) = -10 + 20 - 10 = 0.$$

Система зависима, векторы компланарны. Найдём соотношение: $2a + b = (2,4,-2) + (2,-1,3) = (4, 3, 1) = c$, то есть

$$2a + b - c = 0.$$

Все три вектора лежат в одной плоскости через начало координат — той самой, которую натягивают $a$ и $b$ (они между собой независимы, так как непропорциональны).

Пример 3. Два вектора — коллинеарность.

$$v_1 = (3, -6, 9), \qquad v_2 = (-2, 4, -6).$$

Отношения координат: $\tfrac{3}{-2}$, $\tfrac{-6}{4} = -\tfrac{3}{2}$, $\tfrac{9}{-6} = -\tfrac{3}{2}$. Все три равны $-\tfrac{3}{2}$, значит $v_1 = -\tfrac{3}{2}v_2$, векторы коллинеарны и система зависима. Чтобы получить целые коэффициенты, домножим на 2:

$$2v_1 + 3v_2 = (6, -12, 18) + (-6, 12, -18) = (0, 0, 0). \quad \checkmark$$

Пример 4. Два вектора — не коллинеарны.

$$u_1 = (1, -2), \qquad u_2 = (4, 3).$$

Отношения $\tfrac{1}{4}$ и $\tfrac{-2}{3}$ различны, векторы не пропорциональны. Проверка через определитель: $1 \cdot 3 - (-2) \cdot 4 = 3 + 8 = 11 \ne 0$. Система независима.

Пример 5. Много векторов в маленьком пространстве.

$$v_1 = (5, 1), \; v_2 = (-3, 7), \; v_3 = (0, 4), \; v_4 = (2, 2), \; v_5 = (9, -1).$$

Пять векторов в $\mathbb{R}^2$. По теореме случая 2: $k = 5 > 2 = n$, значит система зависима. Ни одного арифметического действия не потребовалось.

Более того, любые три из этих пяти тоже зависимы ($3 > 2$), и любые четыре тоже. Независимыми в $\mathbb{R}^2$ могут быть максимум два вектора, и то не любые — например, $v_1$ и $v_2$ независимы ($5 \cdot 7 - 1 \cdot (-3) = 38 \ne 0$), а вот $v_1$ и $10v_1$ были бы зависимы.

Почему это важно

Частные критерии экономят не только время, но и ошибки. Определитель $3 \times 3$ считается одним выражением, а приведение к ступенчатому виду — это пять-шесть преобразований, в каждом из которых можно ошибиться в знаке. На экзамене и в расчёте «в столбик» это разница между надёжным и ненадёжным решением.

Теорема про $k > n$ важнее остальных, и не только как способ сэкономить. Она — первое количественное утверждение о том, что размерность пространства ограничивает сложность того, что в нём можно построить. Из неё в следующем уроке вырастет корректность понятия размерности: если бы можно было напихать в $\mathbb{R}^3$ четыре независимых вектора, «размерность 3» была бы пустым словом. Здесь же лежит объяснение, почему матрица признаков с числом признаков больше числа наблюдений заведомо имеет зависимые столбцы — на это мы отдельно посмотрим в разделе про ML.

И ещё один практический момент. Критерий через определитель работает только при $k = n$. Попытка применить его при $k \ne n$ — самая частая ошибка в этой теме: определитель неквадратной матрицы просто не определён. Если векторов не столько же, сколько координат, единственный путь — ранг.

Свойства систем векторов

Дальше идёт набор утверждений, которые в учебниках обычно печатают списком без объяснений, и от этого они кажутся набором разрозненных фактов, которые надо зубрить. На самом деле каждое доказывается в две-три строки прямо из определения, и после разбора запоминать их отдельно не нужно — они восстанавливаются на месте.

Свойство 1: система с нулевым вектором всегда зависима

Утверждение. Если среди векторов $v_1, \dots, v_k$ есть нулевой, система линейно зависима.

Доказательство. Пусть $v_m = 0$. Возьмём коэффициенты: единицу при $v_m$ и нули при всех остальных. Комбинация равна

$$0 \cdot v_1 + \dots + 0 \cdot v_{m-1} + 1 \cdot 0 + 0 \cdot v_{m+1} + \dots + 0 \cdot v_k = 0.$$

Она нетривиальна, потому что коэффициент при $v_m$ равен $1 \ne 0$. Значит, система зависима. Доказано.

Заметь, что остальные векторы в рассуждении вообще не участвовали — они могут быть какими угодно, хоть идеально независимыми между собой. Один нулевой вектор портит всю систему. Интуитивно это понятно: нулевой вектор не задаёт никакого направления, он не может ничего добавить к оболочке, и потому автоматически лишний.

Свойство 2: система с двумя одинаковыми векторами зависима

Утверждение. Если среди $v_1, \dots, v_k$ два вектора равны, система линейно зависима. Более общо: если два вектора пропорциональны, система зависима.

Доказательство. Пусть $v_p = v_q$ при $p \ne q$. Возьмём коэффициент $1$ при $v_p$, коэффициент $-1$ при $v_q$, нули при всех остальных:

$$1 \cdot v_p + (-1) \cdot v_q = v_p - v_q = 0.$$

Комбинация нетривиальна. Для пропорциональных векторов $v_q = c\,v_p$ берём коэффициенты $c$ при $v_p$ и $-1$ при $v_q$: получаем $c\,v_p - c\,v_p = 0$, и коэффициент $-1$ снова ненулевой. Доказано.

Это самая заметная глазом причина зависимости, и проверять её стоит первой: прежде чем запускать метод Гаусса, посмотри, нет ли в наборе повторов и кратных.

Свойство 3: подсистема независимой системы независима

Утверждение. Если система $v_1, \dots, v_k$ линейно независима, то любая её подсистема (любой поднабор этих векторов) тоже линейно независима.

Доказательство от противного. Пусть подсистема — для определённости $v_1, \dots, v_s$ при $s < k$ — зависима. Тогда существуют коэффициенты $\lambda_1, \dots, \lambda_s$, не все нулевые, с

$$\lambda_1 v_1 + \dots + \lambda_s v_s = 0.$$

Достроим эту комбинацию до комбинации всей системы, приписав нулевые коэффициенты к оставшимся векторам:

$$\lambda_1 v_1 + \dots + \lambda_s v_s + 0 \cdot v_{s+1} + \dots + 0 \cdot v_k = 0 + 0 = 0.$$

Полученная комбинация всех $k$ векторов равна нулю и нетривиальна (среди $\lambda_1, \dots, \lambda_s$ есть ненулевой). Значит, вся система зависима — противоречие с условием. Доказано.

Порядок векторов в системе роли не играет, поэтому «для определённости первые $s$» не ограничивает общности: перестановка векторов не меняет ни зависимости, ни независимости (в комбинации слагаемые просто переставляются местами).

Свойство 4: надсистема зависимой системы зависима

Утверждение. Если система $v_1, \dots, v_k$ линейно зависима, то любая система, содержащая её целиком, тоже зависима — сколько бы новых векторов к ней ни добавили.

Доказательство. Это то же рассуждение, прочитанное в другую сторону. Пусть $\lambda_1 v_1 + \dots + \lambda_k v_k = 0$ нетривиально. Добавим новые векторы $u_1, \dots, u_t$ с нулевыми коэффициентами:

$$\lambda_1 v_1 + \dots + \lambda_k v_k + 0 \cdot u_1 + \dots + 0 \cdot u_t = 0.$$

Комбинация расширенной системы равна нулю и нетривиальна (нетривиальность обеспечена старыми коэффициентами). Доказано.

Свойства 3 и 4 — логически одно и то же утверждение, взятое с двух сторон (контрапозиция). Стоит держать в голове удобную формулировку: независимость — свойство наследуемое вниз, зависимость — вверх. Убираешь векторы — независимость сохраняется; добавляешь — зависимость сохраняется.

Что при этом не сохраняется, тоже полезно знать. Убрав векторы из зависимой системы, можно получить независимую (пример: $(1,0), (2,0), (0,1)$ зависима, а подсистема $(1,0), (0,1)$ независима). Добавив вектор к независимой системе, можно получить зависимую, а можно и не получить — как повезёт. То есть в этих двух направлениях никакой гарантии нет.

Свойство 5: один вектор

Утверждение. Система из одного вектора $v$ независима тогда и только тогда, когда $v \ne 0$.

Доказательство. Если $v \ne 0$ и $\lambda v = 0$, то $\lambda = 0$: в противном случае, умножив обе части на $\lambda^{-1}$, получили бы $v = 0$. Значит, только тривиальная комбинация даёт ноль, система независима. Если же $v = 0$, комбинация $1 \cdot v = 0$ нетривиальна, система зависима. Доказано.

Свойство 6: независимость и подсистемы «в обе стороны»

Соберём из свойств 3 и 4 удобное следствие, которым мы будем пользоваться в разделе про базисный минор.

Следствие. Если в системе есть зависимая подсистема, вся система зависима. Если система независима, то в ней нет ни одной зависимой подсистемы — в частности, нет нулевых векторов, нет повторов и нет пропорциональных пар.

Это готовый набор быстрых проверок «на глаз». Увидел в наборе нулевой вектор — можешь не считать, зависима. Увидел два одинаковых столбца — зависима. Увидел столбец, кратный другому, — зависима. Метод Гаусса, конечно, всё это тоже поймает, но зачем тратить пять минут на то, что видно за пять секунд.

Разбор примеров

Пример 1. Быстрый ответ по свойству 1.

$$v_1 = (7, -2, 5), \quad v_2 = (0, 0, 0), \quad v_3 = (1, 1, 1), \quad v_4 = (3, 0, -4).$$

Второй вектор нулевой — система зависима, обнуляющая комбинация $0\cdot v_1 + 1 \cdot v_2 + 0 \cdot v_3 + 0 \cdot v_4 = 0$. Считать определители и ранги не нужно.

Обрати внимание, что подсистема $v_1, v_3, v_4$ при этом может оказаться независимой, и это не противоречит ничему: зависимость всей системы обеспечена нулевым вектором.

Пример 2. Быстрый ответ по свойству 2.

$$u_1 = (2, 5, -1), \quad u_2 = (4, 1, 0), \quad u_3 = (-6, -15, 3).$$

Третий вектор равен $-3u_1$: $(-6, -15, 3) = -3 \cdot (2, 5, -1)$. Система зависима, комбинация $3u_1 + 0 \cdot u_2 + u_3 = 0$. Проверка: $(6, 15, -3) + (-6, -15, 3) = (0,0,0)$. $\checkmark$

Пример 3. Свойство 3 в работе.

Пусть известно, что система $a, b, c, d$ в $\mathbb{R}^5$ независима. Что можно сказать про систему $b, d$?

По свойству 3 она независима — как подсистема независимой. В частности, $b$ и $d$ не пропорциональны и ни один из них не нулевой. Никаких вычислений не требуется, вывод чисто логический.

Пример 4. Свойство 4 в работе.

Пусть в $\mathbb{R}^4$ известно, что $p = (1, 2, 3, 4)$, $q = (2, 4, 6, 8)$ зависимы (что видно сразу: $q = 2p$). Тогда любая система, содержащая оба этих вектора, зависима — например, система $p, q, r, s$ при любых $r, s$. Обнуляющая комбинация переносится целиком: $2p - q + 0 \cdot r + 0 \cdot s = 0$.

Пример 5. Комбинация свойств.

$$w_1 = (1, 0, 0), \quad w_2 = (0, 1, 0), \quad w_3 = (0, 0, 1), \quad w_4 = (5, -3, 2).$$

Первые три вектора независимы (единичная матрица, определитель равен 1). Но вся система из четырёх векторов в $\mathbb{R}^3$ зависима по теореме про $k > n$. Соотношение находится глазами: $w_4 = 5w_1 - 3w_2 + 2w_3$, то есть

$$5w_1 - 3w_2 + 2w_3 - w_4 = 0.$$

Это иллюстрация к тому, что независимость не наследуется вверх: независимая тройка, дополненная четвёртым вектором, стала зависимой четвёркой — и в трёхмерном пространстве иначе и быть не могло.

Почему это важно

Эти шесть свойств — рабочий фильтр, через который стоит пропускать любую задачу до начала вычислений. Половина заданий на зависимость решается ими за секунды, без единого преобразования.

Но есть и более глубокий смысл. Свойства 3 и 4 говорят, что зависимость/независимость ведёт себя относительно включения систем предсказуемо и монотонно. Из этого следует, что в любом наборе векторов есть корректно определённое «максимальное независимое подмножество»: начинаем с пустого набора, добавляем векторы по одному, каждый раз проверяя, не ломает ли добавление независимость. Свойство 3 гарантирует, что уже набранное не испортится, свойство 4 — что после первой поломки дальше уже не починится.

Именно так и определяется максимальное число линейно независимых векторов в наборе — величина, которую мы в следующем разделе отождествим с рангом. И именно на этом отождествлении держится вся дальнейшая теория.

Геометрический смысл: кто добавляет направление, а кто лишний

Интуиция: что делает вектор с оболочкой

Вернёмся к линейной оболочке из прошлого урока. Возьми набор векторов и посмотри на $\operatorname{span}$ — множество всего, что из них можно собрать. Теперь добавь к набору ещё один вектор $w$ и снова посмотри на оболочку. Возможны ровно два исхода:

  • оболочка выросла — появились векторы, которых раньше собрать было нельзя;

  • оболочка осталась той же — $w$ ничего нового не принёс.

Второй случай происходит ровно тогда, когда $w$ и так уже лежал в оболочке старого набора, то есть выражался через старые векторы. Тогда любую комбинацию с участием $w$ можно переписать без него, подставив вместо $w$ его выражение.

Отсюда и содержательное прочтение независимости: независимая система — это набор, в котором каждый вектор добавляет новое направление. Зависимая — набор, в котором кто-то лишний: его можно выбросить, ничего не потеряв.

Аккуратная формулировка звучит так.

Утверждение (о выбрасывании лишнего). Пусть вектор $v_k$ выражается через остальные векторы системы:

$$v_k = \mu_1 v_1 + \dots + \mu_{k-1}v_{k-1}.$$

Тогда

$$\operatorname{span}(v_1, \dots, v_{k-1}, v_k) = \operatorname{span}(v_1, \dots, v_{k-1}).$$

Доказательство. Нужно проверить два включения.

Включение «$\supseteq$» верно по построению: всякая комбинация $v_1, \dots, v_{k-1}$ является и комбинацией всего набора — достаточно приписать нулевой коэффициент при $v_k$.

Включение «$\subseteq$». Возьмём произвольный элемент левой оболочки:

$$x = \alpha_1 v_1 + \dots + \alpha_{k-1}v_{k-1} + \alpha_k v_k.$$

Подставим выражение для $v_k$:

$$x = \alpha_1 v_1 + \dots + \alpha_{k-1}v_{k-1} + \alpha_k(\mu_1 v_1 + \dots + \mu_{k-1}v_{k-1})$$$$= (\alpha_1 + \alpha_k\mu_1)v_1 + \dots + (\alpha_{k-1} + \alpha_k\mu_{k-1})v_{k-1}.$$

Получилась линейная комбинация только первых $k-1$ векторов, то есть $x$ лежит в правой оболочке. Оба включения проверены, множества совпадают. Доказано.

Обрати внимание на связь с ловушкой из второго раздела. Выбрасывать можно не любой вектор зависимой системы, а только тот, который действительно выражается через остальные. В примере $v_1 = (1,0)$, $v_2 = (2,0)$, $v_3 = (0,1)$ выбросить можно $v_1$ или $v_2$ — оболочка (вся плоскость) не изменится. А вот выбрасывание $v_3$ схлопнет оболочку до оси абсцисс: проверим по утверждению — оно неприменимо, потому что $v_3$ через остальные не выражается, и никакой гарантии сохранения оболочки нет.

Разбор примеров

Пример 1. Лишний вектор в $\mathbb{R}^3$.

$$v_1 = (1, 1, 2), \quad v_2 = (2, 0, 1), \quad v_3 = (1, 3, 5).$$

Проверим, выражается ли $v_3$: ищем $\alpha, \beta$ с $\alpha v_1 + \beta v_2 = v_3$. По второй координате $\alpha \cdot 1 + \beta \cdot 0 = 3$, значит $\alpha = 3$. По первой: $3 + 2\beta = 1$, значит $\beta = -1$. Проверяем третью: $3 \cdot 2 + (-1) \cdot 1 = 5$. Сходится. Значит

$$v_3 = 3v_1 - v_2,$$

и по утверждению $\operatorname{span}(v_1, v_2, v_3) = \operatorname{span}(v_1, v_2)$. Три вектора натягивают ту же самую плоскость, что и два. Третий не даёт ничего.

Само собой, система зависима: $3v_1 - v_2 - v_3 = 0$.

Пример 2. Ничего не лишнее.

$$u_1 = (1, 0, 0), \quad u_2 = (1, 1, 0), \quad u_3 = (1, 1, 1).$$

Определитель матрицы из этих векторов равен 1 (треугольная матрица, на диагонали единицы), система независима. Значит, ни один вектор не выражается через остальные, и выбрасывание любого из них уменьшает оболочку: тройка натягивает всё $\mathbb{R}^3$, а любая пара — только плоскость.

Пример 3. Оболочка не растёт при добавлении.

Пусть $\operatorname{span}((1,2), (3,-1))$ — это всё $\mathbb{R}^2$ (определитель $1\cdot(-1) - 2\cdot 3 = -7 \ne 0$). Добавим любой третий вектор плоскости, скажем $(4, 4)$. Оболочка не изменится — расти уже некуда, она и так совпадает со всем пространством. Соответственно, система из трёх векторов на плоскости зависима, что мы и знаем из теоремы про $k > n$.

Почему это важно

Геометрическое прочтение превращает формальное определение в рабочую интуицию, которую можно применять без вычислений. Вопрос «зависимы ли эти векторы?» переводится в вопрос «есть ли среди них лишний?» — а лишний часто виден на глаз.

Но главное — здесь спрятан мост к следующей теме. Раз лишний вектор можно выбросить, не меняя оболочки, напрашивается процедура: выбрасывать лишних до тех пор, пока не останется система, в которой лишних больше нет, то есть линейно независимая система, через которую по-прежнему выражается всё исходное множество. Такая система называется базисом, и весь следующий урок посвящён именно ей: сколько в ней векторов, единственна ли она, как через неё считать координаты. Здесь мы только фиксируем, что процедура «выбрасывай лишних» корректна и обрывается — она уменьшает число векторов на каждом шаге, а число векторов конечно.

Ещё одно следствие того же утверждения: линейная оболочка — это характеристика не набора векторов, а «того, что они вместе накрывают». Два совершенно разных набора могут давать одну и ту же оболочку — например, $\{(1,0), (0,1)\}$ и $\{(1,1), (1,-1)\}$ обе дают всю плоскость. Это ещё одна мысль, которая в следующем уроке разовьётся в разговор о том, что базис не единственен, а вот его размер — единственен.

Теорема о базисном миноре

Зачем эта теорема нужна

К этому моменту у нас есть два разных числа, связанных с матрицей, и совпадение их вовсе не напрашивается.

Первое — ранг, как он был определён в уроке 162: наибольший порядок ненулевого минора (эквивалентно: число ненулевых строк ступенчатого вида). Это определение про определители и про алгоритм приведения.

Второе — максимальное число линейно независимых строк матрицы. Это определение про векторы и про то, что мы изучаем сегодня.

И есть третье: максимальное число линейно независимых столбцов. Строк и столбцов у матрицы обычно разное количество, живут они в пространствах разной размерности ($\mathbb{R}^n$ для строк матрицы $m \times n$ и $\mathbb{R}^m$ для столбцов), и никакой очевидной причины этим двум числам совпадать нет.

Теорема о базисном миноре утверждает, что все три числа — одно и то же. Это неочевидный и сильный результат, и именно он делает слово «ранг» осмысленным: неважно, как ты его считаешь и с какой стороны смотришь на матрицу, число получится одно.

Формулировка

Определение. Пусть $\operatorname{rank} A = r > 0$. Базисным минором матрицы $A$ называется любой ненулевой минор порядка $r$. Строки и столбцы, на пересечении которых он стоит, называются базисными строками и базисными столбцами.

Базисный минор существует по определению ранга: ранг — наибольший порядок ненулевого минора, значит минор порядка $r$, отличный от нуля, есть, а все миноры порядка $r+1$ и выше равны нулю. Базисный минор, как правило, не единственный — их может быть много, и любой годится.

Теорема о базисном миноре. Пусть $\operatorname{rank} A = r$ и выбран некоторый базисный минор. Тогда:

  1. базисные строки матрицы $A$ линейно независимы;

  2. любая строка матрицы $A$ является линейной комбинацией базисных строк.

То же самое верно для столбцов.

Идея доказательства пункта 1 короткая. Если бы базисные строки были зависимы, то одна из них выражалась бы через остальные; вычитая из неё эту комбинацию элементарными преобразованиями, мы получили бы в базисном миноре нулевую строку, а определитель с нулевой строкой равен нулю — противоречие с тем, что минор базисный (то есть ненулевой).

Идея доказательства пункта 2 такая. Возьмём базисный минор порядка $r$ и любую строку, в него не входящую, и любой столбец, в него не входящий. Окаймим минор этой строкой и этим столбцом — получится минор порядка $r+1$. По определению ранга он равен нулю (все миноры порядка выше $r$ нулевые). Разложив этот определитель по добавленной строке и воспользовавшись тем, что коэффициент при «новом» элементе — это ненулевой базисный минор, получаем выражение элементов дополнительной строки через элементы базисных строк, причём с одними и теми же коэффициентами для всех столбцов. Это и означает, что дополнительная строка — линейная комбинация базисных.

Главное следствие

Следствие. Для любой матрицы

$$\operatorname{rank} A = \text{(макс. число линейно независимых строк)} = \text{(макс. число линейно независимых столбцов)}.$$

Почему это следует. По пункту 1 теоремы, $r$ базисных строк независимы, значит независимых строк не меньше $r$. По пункту 2 всякая строка выражается через базисные, поэтому любая система из более чем $r$ строк зависима: каждая из них лежит в оболочке $r$ векторов, а в оболочке $r$ векторов не может быть больше $r$ независимых (это та же теорема про «$k > n$», применённая к оболочке). Значит, независимых строк не больше $r$. Итого ровно $r$. Дословно то же рассуждение для столбцов даёт тот же ответ $r$, потому что ранг матрицы и ранг транспонированной матрицы совпадают.

Вот теперь понятно, зачем теорема нужна. Она склеивает вычислительное понятие (ранг через миноры или через метод Гаусса) с содержательным (сколько среди строк по-настоящему разных). Практический смысл прямой: чтобы найти максимальное число линейно независимых векторов в наборе, достаточно посчитать ранг матрицы, составленной из них — а это ты умеешь делать с урока 162.

И ещё: теорема даёт не только число, но и конструкцию. Базисные строки — это готовый пример максимальной независимой подсистемы, а пункт 2 говорит, как через них выразить всё остальное. Другими словами, теорема отвечает и на вопрос «сколько», и на вопрос «какие именно».

Полный разбор на примере

Возьмём матрицу

$$A = \begin{pmatrix} 2 & -1 & 3 & 1 \\ 4 & -2 & 7 & 3 \\ 6 & -3 & 10 & 4 \end{pmatrix}.$$

Шаг 1. Находим ранг.

$$R_2 \to R_2 - 2R_1: \quad (0, 0, 1, 1), \qquad R_3 \to R_3 - 3R_1: \quad (0, 0, 1, 1),$$

$$R_3 \to R_3 - R_2: \quad (0, 0, 0, 0).$$

Ступенчатый вид:

$$\begin{pmatrix} 2 & -1 & 3 & 1 \\ 0 & 0 & 1 & 1 \\ 0 & 0 & 0 & 0 \end{pmatrix}.$$

Две ненулевые строки, значит $\operatorname{rank} A = 2$.

Шаг 2. Ищем базисный минор порядка 2.

Нужен ненулевой минор второго порядка. Первый попавшийся — на пересечении строк 1, 2 и столбцов 1, 2:

$$\begin{vmatrix} 2 & -1 \\ 4 & -2 \end{vmatrix} = -4 + 4 = 0.$$

Не подошёл. Возьмём строки 1, 2 и столбцы 1, 3:

$$M = \begin{vmatrix} 2 & 3 \\ 4 & 7 \end{vmatrix} = 14 - 12 = 2 \ne 0.$$

Годится. Базисный минор — этот; базисные строки — первая и вторая, базисные столбцы — первый и третий.

Шаг 3. Проверяем пункт 1: базисные строки независимы.

Строки $(2, -1, 3, 1)$ и $(4, -2, 7, 3)$. Они не пропорциональны: отношение первых координат $4/2 = 2$, но $7 \ne 2 \cdot 3 = 6$. Две непропорциональные строки независимы (случай 3 из предыдущего раздела). $\checkmark$

Шаг 4. Проверяем пункт 2: третья строка выражается через базисные.

Ищем $\alpha, \beta$ с $\alpha R_1 + \beta R_2 = R_3$, то есть

$$\alpha(2, -1, 3, 1) + \beta(4, -2, 7, 3) = (6, -3, 10, 4).$$

По первой координате: $2\alpha + 4\beta = 6$. По третьей: $3\alpha + 7\beta = 10$. Решаем: из первого $\alpha = 3 - 2\beta$; подставляем: $9 - 6\beta + 7\beta = 10$, откуда $\beta = 1$ и $\alpha = 1$. Проверяем остальные координаты: вторая $-1 - 2 = -3$ $\checkmark$, четвёртая $1 + 3 = 4$ $\checkmark$. Итого

$$R_3 = R_1 + R_2.$$

Это, кстати, было видно и глазами: $(2,-1,3,1) + (4,-2,7,3) = (6,-3,10,4)$.

Шаг 5. То же для столбцов.

Базисные столбцы — первый и третий:

$$c_1 = \begin{pmatrix} 2 \\ 4 \\ 6 \end{pmatrix}, \qquad c_3 = \begin{pmatrix} 3 \\ 7 \\ 10 \end{pmatrix}.$$

Выразим через них небазисные. Столбец $c_2 = (-1, -2, -3)^T$ пропорционален $c_1$:

$$c_2 = -\tfrac{1}{2}c_1.$$

Столбец $c_4 = (1, 3, 4)^T$. Ищем $\alpha c_1 + \beta c_3 = c_4$: по первой строке $2\alpha + 3\beta = 1$, по второй $4\alpha + 7\beta = 3$. Из первого $\alpha = (1 - 3\beta)/2$; подставляем: $2 - 6\beta + 7\beta = 3$, значит $\beta = 1$, $\alpha = -1$. Проверка по третьей строке: $-6 + 10 = 4$ $\checkmark$. Итого

$$c_4 = -c_1 + c_3.$$

Шаг 6. Читаем ответ.

Максимальное число линейно независимых строк равно 2, максимальное число линейно независимых столбцов тоже равно 2, и оба совпадают с рангом. Из четырёх столбцов «работают» два, остальные два — их комбинации; из трёх строк работают две, третья — сумма первых двух.

Заметим ещё, что выбор базисного минора не единственный: например, строки 2, 3 и столбцы 1, 3 дают минор $\begin{vmatrix} 4 & 7 \\ 6 & 10 \end{vmatrix} = 40 - 42 = -2 \ne 0$ — тоже базисный, и с ним получилась бы другая (но столь же законная) пара базисных строк. Ответ на вопрос «сколько» от выбора не зависит, ответ на вопрос «какие» — зависит.

Почему это важно

Три причины, по возрастанию значимости.

Первая, техническая. Теорема даёт готовый способ решать задачи вида «найти максимальное число линейно независимых векторов в наборе» и «выразить остальные векторы через выбранные». Оба вопроса сводятся к приведению матрицы к ступенчатому виду: ранг даёт число, позиции пивотов указывают, какие векторы брать, а RREF прямо выписывает коэффициенты выражений.

Вторая, логическая. Она замыкает круг определений. Ранг перестаёт быть «числом, которое получается из алгоритма» и становится инвариантом самой матрицы. Отсюда, в частности, следует, что элементарные преобразования не меняют ранга — что мы принимали как факт в уроке 162, а теперь можем понять почему: элементарные преобразования строк не меняют множества линейных комбинаций строк, значит не меняют и максимального числа независимых среди них.

Третья, содержательная. Равенство строчного и столбцового рангов — утверждение с настоящим смыслом. В прикладной постановке строки матрицы — это наблюдения, столбцы — признаки. Теорема говорит: «число независимых наблюдений» и «число независимых признаков» — одно и то же число. Если в таблице 1000 строк и 50 столбцов, а ранг равен 12, то не только среди признаков всего 12 по-настоящему разных, но и среди тысячи наблюдений линейно независимых ровно 12 — все остальные строки являются комбинациями этой дюжины. Эти два факта звучат совершенно по-разному, а оказываются одним.

Линейная зависимость в абстрактных пространствах

Интуиция: определение не менялось

Определение линейной зависимости нигде не использовало координаты. В нём есть только сложение векторов и умножение на число — то есть ровно те операции, которые есть в любом векторном пространстве. Поэтому многочлены, функции и матрицы проверяются на зависимость по тому же самому определению:

$$\lambda_1 f_1 + \lambda_2 f_2 + \dots + \lambda_k f_k = 0.$$

Меняется только одно: что означает знак равенства справа. В $\mathbb{R}^n$ нулевой вектор — это набор нулей. В пространстве многочленов — это нулевой многочлен, то есть многочлен, все коэффициенты которого равны нулю (а не многочлен, обращающийся в ноль в какой-то одной точке). В пространстве функций — это тождественно нулевая функция, равная нулю при всех значениях аргумента. В пространстве матриц — нулевая матрица.

Из этого вытекают два рабочих приёма.

Приём 1: перейти к координатам. Если в пространстве есть естественный способ записать объект набором чисел, задача сводится к уже знакомой. Многочлен степени не выше $n$ задаётся набором из $n+1$ коэффициентов. Матрица $2\times2$ — набором из четырёх элементов. Записал объекты как строки чисел — считай ранг.

Приём 2: подставить конкретные точки. Для функций координат нет, зато есть значения. Если функциональное равенство $\lambda_1 f_1(x) + \dots + \lambda_k f_k(x) = 0$ выполняется при всех $x$, то оно выполняется и при любых конкретно выбранных $x_1, \dots, x_k$. Это даёт систему из $k$ числовых уравнений на $\lambda_i$. Если система имеет только нулевое решение — функции независимы.

Важно понимать логику приёма 2, чтобы им не злоупотреблять. Он работает только в одну сторону: если подстановка нескольких точек даёт только тривиальное решение, то функции независимы. Обратное неверно: неудачный выбор точек может дать вырожденную систему и у независимых функций — просто выбранных точек оказалось недостаточно, чтобы «различить» функции. Поэтому доказать зависимость подстановкой точек нельзя, для этого нужно предъявить тождество, верное при всех $x$.

Многочлены

Классический пример: $1, x, x^2$ независимы.

Пусть $\lambda_1 \cdot 1 + \lambda_2 \cdot x + \lambda_3 \cdot x^2 = 0$ как многочлен. Нулевой многочлен — это тот, у которого все коэффициенты нулевые. Слева коэффициент при $x^0$ равен $\lambda_1$, при $x^1$ — $\lambda_2$, при $x^2$ — $\lambda_3$. Приравнивая их к нулю, сразу получаем $\lambda_1 = \lambda_2 = \lambda_3 = 0$. Система независима.

Точно так же независима любая система $1, x, x^2, \dots, x^n$ — по той же причине, покоэффициентно. Это и делает степенные одночлены удобным «измерительным набором» в пространстве многочленов.

Можно посмотреть и через приём 1: координатные строки этих многочленов в порядке $(x^2, x^1, x^0)$ — это $(0,0,1)$, $(0,1,0)$, $(1,0,0)$. Матрица из них — единичная с точностью до перестановки строк, её определитель равен $\pm 1 \ne 0$, ранг равен 3, система независима.

Пример зависимой системы многочленов.

$$p_1 = x^2 + 2x + 1, \quad p_2 = x^2 - 1, \quad p_3 = x + 1.$$

Считаем: $p_1 - p_2 = (x^2 + 2x + 1) - (x^2 - 1) = 2x + 2 = 2(x+1) = 2p_3$. Значит,

$$p_1 - p_2 - 2p_3 = 0,$$

и это тождество, верное при всех $x$ (проверяется раскрытием скобок: $x^2 + 2x + 1 - x^2 + 1 - 2x - 2 = 0$). Комбинация нетривиальна, система зависима.

Через координаты (в порядке $x^2, x, 1$): $p_1 = (1, 2, 1)$, $p_2 = (1, 0, -1)$, $p_3 = (0, 1, 1)$. Определитель

$$\begin{vmatrix} 1 & 2 & 1 \\ 1 & 0 & -1 \\ 0 & 1 & 1 \end{vmatrix} = 1(0 + 1) - 2(1 - 0) + 1(1 - 0) = 1 - 2 + 1 = 0,$$

что подтверждает зависимость.

Функции

Пример 1: $\sin x$ и $\cos x$ независимы.

Пусть $\alpha \sin x + \beta \cos x = 0$ при всех $x$. Подставим два удобных значения.

При $x = 0$: $\alpha \cdot 0 + \beta \cdot 1 = 0$, откуда $\beta = 0$.

При $x = \pi/2$: $\alpha \cdot 1 + \beta \cdot 0 = 0$, откуда $\alpha = 0$.

Оба коэффициента нулевые, функции линейно независимы.

Формально мы получили систему с матрицей $\begin{pmatrix} \sin 0 & \cos 0 \\ \sin \tfrac{\pi}{2} & \cos \tfrac{\pi}{2} \end{pmatrix} = \begin{pmatrix} 0 & 1 \\ 1 & 0 \end{pmatrix}$, её определитель равен $-1 \ne 0$, значит только тривиальное решение.

Пример 2: $e^x$ и $e^{2x}$ независимы.

Пусть $\alpha e^x + \beta e^{2x} = 0$ при всех $x$. Подставим $x = 0$ и $x = \ln 2$ (при этом $e^{\ln 2} = 2$, $e^{2\ln 2} = 4$):

$$\begin{cases} \alpha + \beta = 0 \\ 2\alpha + 4\beta = 0 \end{cases}$$

Определитель системы равен $1 \cdot 4 - 1 \cdot 2 = 2 \ne 0$, значит $\alpha = \beta = 0$. Функции независимы.

Есть и рассуждение без подстановки, чисто содержательное: разделим равенство $\alpha e^x + \beta e^{2x} = 0$ на $e^x$ (он нигде не равен нулю), получим $\alpha + \beta e^x = 0$ при всех $x$. Если $\beta \ne 0$, то $e^x = -\alpha/\beta$ — константа, чего не бывает: экспонента принимает разные значения. Значит $\beta = 0$, и тогда $\alpha = 0$.

Пример 3: зависимые функции.

$$f_1(x) = \sin^2 x, \quad f_2(x) = \cos^2 x, \quad f_3(x) = 1.$$

Основное тригонометрическое тождество даёт $\sin^2 x + \cos^2 x = 1$ при всех $x$, то есть

$$f_1 + f_2 - f_3 = 0.$$

Комбинация нетривиальна, система зависима. Здесь важно, что тождество верно при всех $x$ — именно это делает комбинацию нулевой функцией, а не просто функцией, обнуляющейся в отдельных точках.

Ещё пример из той же серии: $1$, $\sin^2 x$, $\cos 2x$. Формула двойного угла $\cos 2x = 1 - 2\sin^2 x$ даёт тождество $\cos 2x - 1 + 2\sin^2 x = 0$, то есть зависимость с коэффициентами $(-1, 2, 1)$.

Что здесь легко испортить. Функции $x$ и $x^2$ независимы, хотя в точке $x = 0$ и в точке $x = 1$ они принимают попарно одинаковые значения. Если подставить только эти две точки, получится система $\begin{cases}0 = 0 \\ \alpha + \beta = 0\end{cases}$ — она имеет ненулевые решения, и можно ошибочно заключить, что функции зависимы. Ошибка в том, что зависимость требует тождества при всех $x$, а мы проверили лишь две точки. Правильный вывод из неудачной подстановки — «эти точки не подошли», и надо взять другие: например, $x = 1$ и $x = 2$ дают систему с матрицей $\begin{pmatrix} 1 & 1 \\ 2 & 4\end{pmatrix}$, определитель равен $2 \ne 0$, откуда независимость.

Матрицы

Пространство матриц фиксированного размера — векторное пространство, и проверка идёт приёмом 1: выписываем элементы матрицы в строку и считаем ранг.

Пример: зависимые матрицы.

$$A_1 = \begin{pmatrix} 1 & 1 \\ 0 & 0 \end{pmatrix}, \quad A_2 = \begin{pmatrix} 0 & 0 \\ 1 & 1 \end{pmatrix}, \quad A_3 = \begin{pmatrix} 2 & 2 \\ 3 & 3 \end{pmatrix}.$$

Развернём каждую матрицу в строку в порядке $(a_{11}, a_{12}, a_{21}, a_{22})$:

$$A_1 \to (1, 1, 0, 0), \quad A_2 \to (0, 0, 1, 1), \quad A_3 \to (2, 2, 3, 3).$$

Видно, что третья строка равна $2 \cdot$ первой $+ \; 3 \cdot$ второй. Значит,

$$2A_1 + 3A_2 - A_3 = \begin{pmatrix} 2 & 2 \\ 0 & 0 \end{pmatrix} + \begin{pmatrix} 0 & 0 \\ 3 & 3 \end{pmatrix} - \begin{pmatrix} 2 & 2 \\ 3 & 3 \end{pmatrix} = \begin{pmatrix} 0 & 0 \\ 0 & 0 \end{pmatrix}.$$

Система зависима, а максимальное число независимых матриц в ней равно 2 (ранг матрицы из трёх координатных строк равен 2: первые две строки непропорциональны).

Отдельно стоит предупредить: определитель самой матрицы $A_i$ к вопросу о зависимости не имеет никакого отношения. Матрица здесь — вектор, а не оператор; её собственный определитель — просто одно из чисел, посчитанных по её элементам, и на линейную зависимость набора матриц он не влияет. Например, три матрицы с нулевыми определителями могут быть независимы, а три невырожденные — зависимы.

Разбор примеров

Пример 1. Три многочлена — независимость.

$$q_1 = x^2 + x, \quad q_2 = x + 1, \quad q_3 = x^2 - 1.$$

Координаты в порядке $(x^2, x, 1)$: $q_1 = (1,1,0)$, $q_2 = (0,1,1)$, $q_3 = (1,0,-1)$. Определитель:

$$\begin{vmatrix} 1 & 1 & 0 \\ 0 & 1 & 1 \\ 1 & 0 & -1 \end{vmatrix} = 1(-1 - 0) - 1(0 - 1) + 0 = -1 + 1 = 0.$$

Определитель равен нулю, система зависима. Найдём соотношение: $q_1 - q_2 = x^2 - 1 = q_3$, то есть $q_1 - q_2 - q_3 = 0$. Проверка: $(x^2 + x) - (x + 1) - (x^2 - 1) = 0$. $\checkmark$

Пример 2. Две функции — независимость через подстановку.

$$f_1(x) = x, \qquad f_2(x) = e^x.$$

Пусть $\alpha x + \beta e^x = 0$ при всех $x$. При $x = 0$: $\beta = 0$ (так как $e^0 = 1$, а $\alpha \cdot 0 = 0$). При $x = 1$: $\alpha + \beta e = 0$, а с учётом $\beta = 0$ получаем $\alpha = 0$. Независимы.

Пример 3. Четыре матрицы $2 \times 2$.

$$E_{11} = \begin{pmatrix} 1 & 0 \\ 0 & 0 \end{pmatrix}, \; E_{12} = \begin{pmatrix} 0 & 1 \\ 0 & 0 \end{pmatrix}, \; E_{21} = \begin{pmatrix} 0 & 0 \\ 1 & 0 \end{pmatrix}, \; E_{22} = \begin{pmatrix} 0 & 0 \\ 0 & 1 \end{pmatrix}.$$

Координатные строки — это $(1,0,0,0)$, $(0,1,0,0)$, $(0,0,1,0)$, $(0,0,0,1)$, то есть единичная матрица $4 \times 4$. Определитель равен 1, система независима. Если добавить к ней любую пятую матрицу $2\times2$, система станет зависимой: пять векторов в четырёхмерном пространстве координат.

Почему это важно

Главная мысль раздела: линейная алгебра — не про столбики чисел, а про операции. Как только у объектов есть сложение и умножение на число, подчиняющиеся аксиомам, весь аппарат включается автоматически, и понятие независимости работает без изменений.

Практически это означает вот что. Когда ты в анализе данных говоришь «эти два признака дублируют друг друга», в обработке сигналов — «эти базисные функции избыточны», в статистике — «эта модель переопределена», ты в каждом случае говоришь одно и то же: соответствующая система векторов линейно зависима. Разница только в том, что называется вектором.

Про функции стоит запомнить асимметрию приёмов: подстановкой точек доказывают независимость, тождеством — зависимость. Перепутать легко, а последствия неприятные — можно уверенно объявить независимые функции зависимыми, как в примере с $x$ и $x^2$ на неудачных точках. Общий определительный критерий для функций в анализе существует, но он опирается на производные и относится к другому курсу; здесь нам вполне хватает подстановки, если выбирать точки аккуратно и помнить, в какую сторону работает вывод.

Линейная зависимость в машинном обучении

В ML линейная зависимость — это не иллюстрация, а диагноз, который ставят матрице данных до всякого обучения. Ниже — конкретные числа, посчитанные на маленькой таблице, которую можно воспроизвести целиком.

Почему модель перестаёт быть определимой

Линейная модель предсказывает $\hat{y} = Xw$, где $X$ — матрица «объекты $\times$ признаки», а $w$ — веса. Пусть столбцы $X$ линейно зависимы: существует ненулевой вектор $v$ с $Xv = 0$ (то есть некоторая нетривиальная комбинация признаков тождественно равна нулю на всех объектах). Тогда для любых весов $w$

$$X(w + v) = Xw + Xv = Xw.$$

Предсказания не изменились ни на одном объекте, а веса другие — и так для бесконечного множества $w + tv$. Значит, по обучающим данным веса не определяются однозначно: задача не имеет единственного ответа, и оптимизатор здесь ни при чём. В уроке 167 это же явление разбиралось с другой стороны — как непустое ядро матрицы признаков; сейчас видно, что «ядро непусто» и «столбцы линейно зависимы» — буквально одно и то же утверждение, записанное разными словами.

Как это выглядит в коде

Возьмём десять квартир и три признака: площадь в квадратных метрах, число комнат, этаж.

import numpy as np

area  = np.array([32., 41., 44., 55., 58., 63., 70., 78., 85., 96.])
rooms = np.array([ 1.,  2.,  1.,  2.,  3.,  2.,  3.,  4.,  3.,  4.])
floor = np.array([ 5.,  1.,  9.,  2.,  7.,  3., 12.,  4.,  8.,  6.])

X = np.column_stack([area, rooms, floor])
print(X.shape, np.linalg.matrix_rank(X))    # (10, 3) 3  — ранг полный

Ранг равен 3 при трёх столбцах — столбцы независимы, всё в порядке. Теперь добавим «новый признак»: та же площадь, но в квадратных футах ($1\ \text{фут}^2 = 0{,}09290304\ \text{м}^2$).

sqft = area / 0.09290304
XB = np.column_stack([area, rooms, floor, sqft])
print(np.linalg.matrix_rank(XB))                        # 3  при 4 столбцах
print(np.linalg.svd(XB, compute_uv=False))
# [2226.68779501   10.23351498    1.53668404    0.        ]

Ранг остался равен трём, хотя столбцов стало четыре: новый признак линейно зависим от старых. Последнее сингулярное число равно точно нулю — это машинный признак строгой зависимости. Обнуляющая комбинация здесь очевидна и находится через scipy.linalg.null_space: с точностью до множителя она равна $(1, 0, 0, -0{,}09290304)$, то есть «площадь минус $0{,}09290304$ умножить на площадь в футах равно нулю» — ровно формула перевода единиц.

numpy.linalg.matrix_rank — самый быстрый способ поймать такую беду: сравни ранг с числом столбцов, и если ранг меньше — в данных есть строгая линейная зависимость.

VIF: детектор коллинеарности с числами

matrix_rank отвечает «да/нет» и не говорит, какой именно признак виноват. Для этого есть variance inflation factor (VIF), предложенный Марквардтом в 1970 году.

Определение. Для признака $j$ построим регрессию этого признака на все остальные и обозначим её коэффициент детерминации $R_j^2$. Тогда

$$\mathrm{VIF}_j = \frac{1}{1 - R_j^2}.$$

Смысл прозрачен. Если признак $j$ хорошо предсказывается остальными, $R_j^2$ близко к единице, знаменатель близок к нулю, VIF улетает вверх. Если признак ничем не объясняется, $R_j^2 \approx 0$ и $\mathrm{VIF}_j \approx 1$. При строгой линейной зависимости $R_j^2 = 1$ и VIF обращается в бесконечность. Общепринятые ориентиры: $\mathrm{VIF} < 5$ — нормально, $5 \dots 10$ — есть о чём подумать, $> 10$ — серьёзная коллинеарность.

Считаем на нашей таблице из трёх признаков:

def vif(X, j):
    y = X[:, j]
    others = np.delete(X, j, axis=1)
    A = np.column_stack([np.ones(len(others)), others])
    beta, *_ = np.linalg.lstsq(A, y, rcond=None)
    r2 = 1 - np.sum((y - A @ beta)**2) / np.sum((y - y.mean())**2)
    return r2, 1/(1 - r2)

Результаты (значения посчитаны, не выдуманы):

признак $R_j^2$ VIF
площадь 0,7931 4,83
комнаты 0,7817 4,58
этаж 0,1099 1,12

Площадь и число комнат заметно связаны между собой — это ожидаемо, и VIF около 4,8 показывает связь, но не катастрофу. Этаж почти ни с чем не связан, VIF $\approx 1{,}12$.

Проверим формулу вручную на первой строке: $1/(1 - 0{,}7931) = 1/0{,}2069 = 4{,}83$. Сходится.

Строгая зависимость против «почти зависимости»

Теперь самое важное. Добавим площадь в футах, но округлённую до целых футов — так, как её реально записали бы в базу.

sqft_r = np.round(area / 0.09290304)
# [ 344.  441.  474.  592.  624.  678.  753.  840.  915. 1033.]
XC = np.column_stack([area, rooms, floor, sqft_r])
print(np.linalg.matrix_rank(XC))                # 4  — ранг ПОЛНЫЙ
print(np.linalg.svd(XC, compute_uv=False))
# [2226.37797325   10.2346762     1.53742496    0.08921213]
print(np.linalg.cond(XC))                       # 24956.0

Ранг снова полный, формально претензий нет. Но посмотри на сингулярные числа: последнее равно $0{,}0892$ при первом $2226$ — их отношение, то есть число обусловленности, равно почти $25\,000$. Столбцы не зависимы строго, но зависимы «почти»: округление сдвинуло значения на доли фута и разорвало точное тождество.

VIF на этих данных:

признак $R_j^2$ VIF
площадь 0,99999797 492 527
комнаты 0,79106 4,79
этаж 0,12612 1,14
площадь в футах 0,99999797 491 913

Пятьсот тысяч против порога в десять. Именно этот случай и опаснее строгой зависимости, и вот почему.

Строгая зависимость видна: matrix_rank меньше числа столбцов, numpy.linalg.inv падает с ошибкой, sklearn выдаёт предупреждение. Ты немедленно узнаёшь о проблеме и чинишь данные.

Почти зависимость не видна: ранг полный, обращение матрицы формально проходит, модель обучается, метрики на обучении отличные. А коэффициенты при этом — мусор. Проверим. Возьмём цены и обучим регрессию на четырёх признаках, включая округлённые футы:

y = np.array([2900., 3800., 3950., 5000., 5400., 5700., 6500., 7300., 7700., 8800.])
A = np.column_stack([np.ones(10), area, rooms, floor, sqft_r])
w1, *_ = np.linalg.lstsq(A, y, rcond=None)
# [ 15.03  -109.81   159.18     5.04    18.07 ]

Вес при площади получился отрицательным: $-109{,}81$. Буквально это читается как «каждый лишний квадратный метр снижает цену на 110 тысяч» — заведомая чушь. Дело в том, что вклад площади размазался между двумя дублирующими столбцами: суммарный эффект одного квадратного метра равен

$$-109{,}8125 + 18{,}0664 \cdot \frac{1}{0{,}09290304} = -109{,}8125 + 194{,}4647 = 84{,}65,$$

что вполне разумно. Но по отдельности коэффициенты бессмысленны.

Теперь сдвинем цену одной квартиры на 10 (из примерно 2900, то есть на треть процента) и переобучим:

y2 = y.copy(); y2[0] += 10.
w2, *_ = np.linalg.lstsq(A, y2, rcond=None)
# [ 19.99   -76.49   158.46     5.05    14.97 ]

Вес при площади прыгнул с $-109{,}81$ до $-76{,}49$ — изменился на треть от собственной величины из-за микроскопического изменения данных. При этом суммарный эффект метра остался прежним: $84{,}61$ против $84{,}65$. Для сравнения, если убрать дублирующий столбец и обучить на трёх признаках, вес площади равен $84{,}81$ и после того же возмущения становится $84{,}74$ — то есть меняется на десятые доли процента.

Вывод, который стоит запомнить: при почти зависимых признаках предсказания устойчивы, а интерпретация коэффициентов невозможна. Модель работает, «вклад признака» по весу читать нельзя.

Откуда берутся избыточные признаки

Почти всегда — из аккуратности, доведённой до дублирования:

  • одна величина в двух единицах измерения: рост в сантиметрах и в дюймах, площадь в метрах и футах, цена в рублях и в тысячах рублей;

  • доля и процент: столбцы share и percent = share * 100 дают ранг 2 вместо 3 вместе со столбцом единиц;

  • сумма частей и целое: расходы по категориям плюс столбец «итого» — целое равно сумме частей на каждой строке;

  • возраст и год рождения при фиксированной дате выгрузки;

  • one-hot кодирование категории без выброшенной базовой категории плюс intercept — dummy variable trap. Механика этой ловушки полностью разобрана в уроке 167 про ядро матрицы, повторять её здесь не будем: сумма всех one-hot столбцов равна столбцу единиц, и это готовая нетривиальная нулевая комбинация.

Все эти случаи ловятся одной строчкой: сравни np.linalg.matrix_rank(X) с X.shape[1].

Строки тоже бывают зависимы: ситуация $p > n$

До сих пор мы смотрели на столбцы. Но строки матрицы — тоже векторы, и к ним применима та же теорема: в $\mathbb{R}^n$ не бывает больше $n$ независимых векторов.

Пусть в датасете $n$ объектов и $p$ признаков, причём $p > n$ — типичная ситуация для геномных данных, текстовых мешков слов, спектров. Строки матрицы $X$ лежат в $\mathbb{R}^p$, их всего $n$ штук, и они вполне могут быть независимыми. А вот столбцы лежат в $\mathbb{R}^n$, и их $p > n$ штук — значит, они гарантированно зависимы, безо всякой проверки:

rng = np.random.default_rng(0)
Xp = rng.normal(size=(40, 200))
print(np.linalg.matrix_rank(Xp))              # 40  при 200 столбцах
from scipy.linalg import null_space
print(null_space(Xp).shape[1])                # 160

Ранг равен 40 — это максимум, ограниченный числом строк. Столбцов 200, значит зависимость есть, и пространство обнуляющих комбинаций имеет размерность 160. Веса линейной модели на таких данных не определяются однозначно даже теоретически: к любому решению можно прибавить любую из этих комбинаций, ничего не изменив. Данные ровно потому и «не содержат ответа», что наблюдений физически меньше, чем неизвестных.

Здесь же лежит и объяснение того, почему matrix_rank матрицы признаков стоит проверять всегда, а не только когда что-то пошло не так. Проверка стоит одну строчку и мгновенно отличает «модель плохо обучилась» от «задача не имеет единственного решения».

Переопределённые нейросети как крайний случай

Доведём мысль до предела. У ResNet-50 около 25,6 млн параметров, а в обучающей части ImageNet-1k примерно 1,28 млн изображений — то есть параметров примерно в 20 раз больше, чем обучающих примеров. Современные языковые модели уходят в это соотношение ещё дальше.

В линейном мире такая ситуация означала бы полную неопределимость: параметров кратно больше, чем уравнений, множество идеальных решений бесконечно. Нейросети нелинейны, и дословно переносить вывод нельзя, но качественная картина сохраняется: существует огромное множество наборов весов, дающих одинаково нулевую ошибку на обучении. Какой из них выберется, определяется не данными, а всем остальным — инициализацией, оптимизатором, регуляризацией, ранней остановкой. Отсюда и практические следствия: два одинаково обученных экземпляра одной архитектуры имеют совершенно разные веса; отдельный вес интерпретировать бессмысленно; для дообучения хватает низкоранговых поправок вроде LoRA, о которых шла речь в уроке про ранг. Всё это — разные проявления одного факта: когда параметров больше, чем независимых уравнений, данные не определяют ответ полностью.

Практика: 30 заданий

Базовые задания (1–10)

Задание 1: Выясните, линейно зависима ли система векторов $v_1 = (3, -1)$, $v_2 = (-6, 2)$ в $\mathbb{R}^2$. Если зависима — укажите явно нетривиальную комбинацию, равную нулю.


Задание 2: Выясните, линейно зависима ли система $v_1 = (2, 5)$, $v_2 = (3, -1)$ в $\mathbb{R}^2$.


Задание 3: Выясните, зависима ли система $v_1 = (1, -1, 2)$, $v_2 = (3, 0, 1)$, $v_3 = (0, 0, 0)$ в $\mathbb{R}^3$. Если зависима — укажите нетривиальную комбинацию, дающую ноль.


Задание 4: Выясните с помощью определителя, зависима ли система $v_1 = (1, 2, 1)$, $v_2 = (2, 1, 3)$, $v_3 = (3, 3, 4)$ в $\mathbb{R}^3$, и найдите нетривиальную нулевую комбинацию.


Задание 5: Выясните, зависима ли система $v_1 = (1, 0, 2)$, $v_2 = (2, 1, 1)$, $v_3 = (1, 1, 0)$ в $\mathbb{R}^3$.


Задание 6: Не производя вычислений, определите, зависима ли система векторов в $\mathbb{R}^4$:

$$v_1 = (1, 2, 0, 3), \; v_2 = (2, -1, 4, 1), \; v_3 = (0, 5, 3, 2), \; v_4 = (7, 1, 1, 1), \; v_5 = (3, 3, 3, 3).$$

Задание 7: Найдите нетривиальную линейную комбинацию векторов $v_1 = (1, 2)$, $v_2 = (3, 1)$, $v_3 = (5, 4)$ в $\mathbb{R}^2$, равную нулевому вектору.


Задание 8: Выясните, зависима ли система $v_1 = (1, 1, 0)$, $v_2 = (0, 1, 1)$, $v_3 = (1, 2, 1)$ в $\mathbb{R}^3$, и укажите нетривиальную нулевую комбинацию.


Задание 9: Выясните, коллинеарны ли векторы $v_1 = (4, -6, 10)$ и $v_2 = (-6, 9, -15)$, и если да — укажите нетривиальную нулевую комбинацию с целыми коэффициентами.


Задание 10: Выясните, зависима ли система многочленов $p_1 = 1 + x$, $p_2 = 1 - x$, $p_3 = x$, и укажите нетривиальную комбинацию, равную нулевому многочлену.


Средние задания (11–20)

Задание 11: Выясните, зависима ли система в $\mathbb{R}^4$, и укажите нетривиальную нулевую комбинацию:

$$v_1 = (1, -1, 2, 0), \quad v_2 = (2, 1, 0, 3), \quad v_3 = (4, -1, 4, 3), \quad v_4 = (0, 3, -4, 3).$$

Задание 12: При каких значениях параметра $\lambda$ система векторов $v_1 = (1, 2, -1)$, $v_2 = (2, \lambda, 1)$, $v_3 = (0, 1, 1)$ в $\mathbb{R}^3$ линейно зависима?


Задание 13: При каких значениях параметра $a$ система $v_1 = (a, 1, 1)$, $v_2 = (1, a, 1)$, $v_3 = (1, 1, a)$ линейно зависима? Для каждого найденного значения укажите максимальное число независимых векторов в системе.


Задание 14: Покажите, что система $v_1 = (2, 1, 0)$, $v_2 = (1, -2, 3)$, $v_3 = (4, 7, -6)$ зависима, и выразите $v_3$ через остальные векторы.


Задание 15: Докажите, что система $v_1 = (1, 0, 1)$, $v_2 = (0, 1, 1)$ линейно независима, а система $v_1, v_2, v_3$ с $v_3 = (2, 3, 5)$ линейно зависима.


Задание 16: Докажите, что функции $f_1(x) = \cos x$ и $f_2(x) = \cos 2x$ линейно независимы в пространстве функций на $\mathbb{R}$.


Задание 17: Выясните, зависима ли система матриц, и укажите нетривиальную комбинацию, равную нулевой матрице:

$$A_1 = \begin{pmatrix} 1 & 0 \\ 2 & 1 \end{pmatrix}, \quad A_2 = \begin{pmatrix} 0 & 3 \\ 1 & 0 \end{pmatrix}, \quad A_3 = \begin{pmatrix} 2 & 3 \\ 5 & 2 \end{pmatrix}.$$

Задание 18: Найдите максимальное число линейно независимых векторов в наборе

$$v_1 = (1, 2, 1), \; v_2 = (2, 4, 2), \; v_3 = (0, 1, 3), \; v_4 = (1, 3, 4), \; v_5 = (3, 7, 6)$$

и выразите остальные векторы через выбранные независимые.


Задание 19: При каких значениях параметра $\lambda$ векторы $v_1 = (1, \lambda)$ и $v_2 = (\lambda, 4)$ в $\mathbb{R}^2$ линейно зависимы?


Задание 20: Дана система $u_1 = (1, 3, 0)$, $u_2 = (2, 6, 0)$, $u_3 = (0, 0, 5)$. Покажите, что она линейно зависима, но вектор $u_3$ не выражается через $u_1$ и $u_2$.


Продвинутые задания (21–30)

Задание 21: При каких значениях параметра $a$ векторы $v_1 = (1, 2, 3)$, $v_2 = (2, a, 6)$, $v_3 = (3, 6, a)$ линейно зависимы? Для каждого найденного значения укажите нетривиальную нулевую комбинацию.


Задание 22: При каких значениях $\lambda$ линейно зависима система векторов в $\mathbb{R}^4$:

$$v_1 = (1, 1, 1, 1), \quad v_2 = (1, 2, 4, 8), \quad v_3 = (1, 3, 9, 27), \quad v_4 = (1, \lambda, \lambda^2, \lambda^3)?$$

Задание 23: При каких значениях $\lambda$ линейно зависима система в $\mathbb{R}^4$:

$$v_1 = (\lambda, 1, 1, 1), \; v_2 = (1, \lambda, 1, 1), \; v_3 = (1, 1, \lambda, 1), \; v_4 = (1, 1, 1, \lambda)?$$

Для каждого значения найдите максимальное число независимых векторов.


Задание 24: При каком значении $c$ многочлены $p_1 = x^2 - x + 1$, $p_2 = x^2 + 2x$, $p_3 = 2x^2 + x + c$ линейно зависимы? Укажите нетривиальную комбинацию для найденного $c$.


Задание 25: Пусть векторы $v_1, v_2, v_3$ линейно независимы. Докажите, что система $u_1 = v_1 + v_2$, $u_2 = v_2 + v_3$, $u_3 = v_3 + v_1$ также линейно независима.


Задание 26: Пусть система $v_1, \dots, v_k$ линейно независима, а система $v_1, \dots, v_k, w$ линейно зависима. Докажите, что $w$ является линейной комбинацией векторов $v_1, \dots, v_k$.


Задание 27: Для матрицы

$$A = \begin{pmatrix} 1 & 2 & 3 & 1 \\ 2 & 4 & 7 & 4 \\ 3 & 6 & 10 & 5 \end{pmatrix}$$

найдите ранг, укажите базисный минор, проверьте независимость базисных строк и выразите небазисную строку через базисные, а небазисные столбцы — через базисные.


Задание 28: Докажите, что функции $f_1(x) = 1$, $f_2(x) = x$, $f_3(x) = e^x$ линейно независимы на $\mathbb{R}$.


Задание 29: Найдите максимальное число линейно независимых матриц в системе и укажите две различные нетривиальные комбинации, равные нулевой матрице:

$$A_1 = \begin{pmatrix} 1 & 2 \\ 0 & 1 \end{pmatrix}, \; A_2 = \begin{pmatrix} 0 & 1 \\ 1 & 1 \end{pmatrix}, \; A_3 = \begin{pmatrix} 2 & 3 \\ -1 & 1 \end{pmatrix}, \; A_4 = \begin{pmatrix} 1 & 0 \\ -2 & -1 \end{pmatrix}.$$

Задание 30: Пусть система $v_1, \dots, v_k$ линейно независима, и вектор $w$ не принадлежит её линейной оболочке: $w \notin \operatorname{span}(v_1, \dots, v_k)$. Докажите, что система $v_1, \dots, v_k, w$ линейно независима.


Частые ошибки

Ошибка 1. «Система зависима — значит любой её вектор выражается через остальные».

Как выглядит: решающий устанавливает зависимость системы, а потом уверенно пишет «выразим $v_3$ через $v_1$ и $v_2$» и вязнет в системе, у которой нет решений.

Почему возникает: определение через «один вектор выражается через остальные» запоминается в усиленном виде — «каждый вектор выражается».

Как правильно: в определении стоит «хотя бы один». Выражается ровно тот вектор, у которого коэффициент в нетривиальной обнуляющей комбинации ненулевой. Контрпример из урока: $(1,0)$, $(2,0)$, $(0,1)$ — система зависима, но третий вектор через первые два не выражается ни при каких коэффициентах, потому что у обеих его «опор» вторая координата нулевая.

Ошибка 2. Считают определитель, когда векторов не столько же, сколько координат.

Как выглядит: «три вектора в $\mathbb{R}^4$, посчитаем определитель» — и дальше попытка вычислить определитель прямоугольной матрицы $3 \times 4$.

Почему возникает: определитель — самый привычный инструмент, и рука тянется к нему автоматически.

Как правильно: определитель определён только для квадратных матриц. Критерий через определитель работает исключительно при $k = n$. Во всех остальных случаях — ранг: приводим к ступенчатому виду и сравниваем число ненулевых строк с числом векторов. При $k > n$ ответ вообще известен заранее: зависима.

Ошибка 3. «Нетривиальная комбинация — это когда все коэффициенты ненулевые».

Как выглядит: найдя комбинацию $2v_1 - v_2 + 0 \cdot v_3 = 0$, решающий отвергает её как «тривиальную из-за нуля» и продолжает искать другую.

Почему возникает: слово «нетривиальный» подсознательно читается как «полноценный, без вырождений».

Как правильно: нетривиальность означает «не все коэффициенты нулевые», то есть хотя бы один отличен от нуля. Комбинация $(2, -1, 0)$ полностью законна и доказывает зависимость.

Ошибка 4. «Векторы выглядят по-разному, значит независимы».

Как выглядит: «$(1,2,3)$, $(4,5,6)$, $(7,8,9)$ — все разные, никакой не кратен другому, независимы».

Почему возникает: проверяют попарную непропорциональность и считают, что этого достаточно.

Как правильно: попарная непропорциональность гарантирует независимость только для системы из двух векторов. Начиная с трёх, зависимость может быть «распределённой»: ни один вектор не кратен другому, но комбинация трёх даёт ноль. В приведённом примере $v_1 - 2v_2 + v_3 = 0$, система зависима. Проверять надо ранг, а не пары.

Ошибка 5. Не замечают нулевой вектор или повтор.

Как выглядит: пять минут аккуратного приведения к ступенчатому виду системы, в которой один из векторов — нулевой.

Почему возникает: привычка сразу запускать алгоритм, не глядя на данные.

Как правильно: перед вычислениями пробежаться глазами по трём признакам: есть ли нулевой вектор, есть ли два одинаковых, есть ли пара пропорциональных. Любой из них немедленно даёт ответ «зависима» и готовую обнуляющую комбинацию.

Ошибка 6. Доказывают зависимость функций подстановкой точек.

Как выглядит: «подставим $x = 0$ и $x = 1$ в $\alpha x + \beta x^2 = 0$, получим систему с ненулевым решением — значит функции зависимы».

Почему возникает: приём с подстановкой работает в одну сторону, а применяют его в обе.

Как правильно: подстановка точек доказывает независимость (если система на коэффициенты имеет только нулевое решение). Для доказательства зависимости нужно предъявить тождество, верное при всех $x$: например, $\sin^2 x + \cos^2 x - 1 = 0$. Неудачный выбор точек ничего не доказывает — надо взять другие точки, как в примере с $x$ и $x^2$, где точки $1$ и $2$ дают правильный вывод, а точки $0$ и $1$ — вырожденную систему.

Ошибка 7. Для набора матриц считают определитель самой матрицы.

Как выглядит: «$\det A_1 = 0$, значит система матриц зависима».

Почему возникает: матрица одновременно и объект с определителем, и элемент векторного пространства; эти две роли путаются.

Как правильно: в вопросе о линейной зависимости набора матриц каждая матрица — это вектор, и её собственный определитель к делу не относится. Разворачивай матрицы в координатные строки (все элементы подряд) и считай ранг получившейся матрицы из этих строк. Три вырожденные матрицы могут быть независимы, три невырожденные — зависимы.

Ошибка 8. В задаче с параметром останавливаются на корнях определителя.

Как выглядит: «$\det = (a-1)^2(a+2)$, ответ: $a = 1$ и $a = -2$» — и всё, без разбора, что происходит при каждом значении.

Почему возникает: вопрос «при каких значениях зависима» формально закрыт корнями, и дальше считать лень.

Как правильно: корни определителя дают только факт зависимости. Если в задаче спрашивают, сколько независимых векторов остаётся, каждый корень нужно подставить обратно и посчитать ранг: он может упасть на единицу, а может и на две. В нашем примере при $a = -2$ ранг равен 2, а при $a = 1$ — всего 1. Кратный корень — сигнал присмотреться внимательнее.

Ошибка 9. Думают, что у матрицы «два разных ранга» — по строкам и по столбцам.

Как выглядит: «посчитаем строчный ранг, потом столбцовый, вдруг они разные».

Почему возникает: строки и столбцы живут в пространствах разной размерности, и совпадение кажется недоказанным.

Как правильно: по следствию из теоремы о базисном миноре максимальное число независимых строк равно максимальному числу независимых столбцов и равно рангу. Считать можно с любой стороны, ответ один. Практически удобнее работать со строками — элементарные преобразования строк привычнее.

Ошибка 10. Читают теорему «$k > n$ влечёт зависимость» в обратную сторону.

Как выглядит: «векторов три, пространство трёхмерное, $3 \le 3$ — значит независимы».

Почему возникает: теорема запоминается как «критерий», хотя она даёт лишь достаточное условие зависимости.

Как правильно: при $k > n$ система гарантированно зависима. При $k \le n$ гарантий нет никаких: возможны оба варианта, и нужно считать. Три вектора в $\mathbb{R}^3$ бывают и независимыми (определитель ненулевой), и зависимыми (определитель равен нулю).

Главное запомнить

  • Линейная комбинация $\lambda_1 v_1 + \dots + \lambda_k v_k$ называется тривиальной, если все коэффициенты нулевые, и нетривиальной, если хотя бы один отличен от нуля. Тривиальная комбинация даёт ноль всегда и потому ничего не различает.

  • Система линейно зависима, если существует нетривиальная комбинация, равная нулевому вектору. Независима — если равенство комбинации нулю возможно только при всех нулевых коэффициентах.

  • Эквивалентная формулировка: система зависима $\iff$ хотя бы один её вектор выражается через остальные. Слово «один» усилить до «каждый» нельзя: в системе $(1,0), (2,0), (0,1)$ третий вектор через остальные не выражается.

  • Через остальные выражается ровно тот вектор, у которого коэффициент в обнуляющей комбинации ненулевой.

  • Рабочий критерий: векторы $v_1, \dots, v_k$ из $\mathbb{R}^n$ зависимы $\iff$ $\operatorname{rank} A < k$, где $A$ составлена из них как из столбцов (или строк — ранг тот же). Коэффициенты комбинации — это ненулевое решение однородной системы $A\lambda = 0$.

  • Частные случаи: при $k = n$ достаточно посчитать определитель; при $k > n$ система зависима всегда; два вектора зависимы $\iff$ коллинеарны; три вектора в $\mathbb{R}^3$ зависимы $\iff$ смешанное произведение равно нулю $\iff$ они компланарны.

  • Свойства: система с нулевым вектором зависима; система с двумя равными (или пропорциональными) векторами зависима; подсистема независимой системы независима; надсистема зависимой системы зависима; один вектор независим $\iff$ он ненулевой.

  • Если вектор выражается через остальные, его выбрасывание не меняет линейную оболочку. Независимость означает, что каждый вектор добавляет новое направление, и выбросить без потерь нельзя никого.

  • Теорема о базисном миноре: строки (столбцы) базисного минора независимы, а все остальные строки (столбцы) через них выражаются. Следствие: $\operatorname{rank} A$ = максимальное число независимых строк = максимальное число независимых столбцов.

  • Чтобы найти максимальное число независимых векторов в наборе, достаточно посчитать ранг матрицы, составленной из них.

  • В абстрактных пространствах определение то же самое, меняется лишь смысл нуля: нулевой многочлен (все коэффициенты нулевые), тождественно нулевая функция, нулевая матрица. Многочлены и матрицы проверяются переходом к координатам, функции — подстановкой точек.

  • Для функций подстановка точек доказывает независимость; зависимость доказывается только предъявлением тождества, верного при всех значениях аргумента.

  • В машинном обучении линейно зависимые признаки делают веса модели неопределимыми: $X(w + v) = Xw$ для любого $v$ с $Xv = 0$. Диагностика — numpy.linalg.matrix_rank(X) против числа столбцов и VIF $= 1/(1 - R_j^2)$.

  • «Почти зависимость» опаснее строгой: ранг формально полный, модель обучается, но коэффициенты неустойчивы и не интерпретируются. При $p > n$ столбцы зависимы гарантированно.

Связь с другими темами курса

Что нужно было знать до этого урока

Урок стоит на трёх опорах. Из урока 162 взят ранг матрицы и техника элементарных преобразований — главный вычислительный инструмент всего материала; сегодня ранг получил содержательное истолкование как максимальное число независимых строк или столбцов. Из уроков 158–160 — определители и миноры: критерий зависимости $n$ векторов в $\mathbb{R}^n$ через $\det = 0$, разбор задач с параметром, само понятие базисного минора. Из урока 167 — однородные системы: критерий $\operatorname{rank} A < n$ существования нетривиального решения, к которому сводится любой вопрос о линейной зависимости; ядро матрицы, элементы которого — это в точности наборы коэффициентов обнуляющих комбинаций. Из уроков 163–164 — метод Гаусса, RREF, базисные и свободные переменные, техника разбора систем с параметром. Из уроков 151–155 — геометрия векторов: коллинеарность, компланарность и смешанное произведение, через которые линейная зависимость получает наглядное прочтение в двумерном и трёхмерном случае. И, разумеется, из урока 168 — аксиоматика векторного пространства, зоопарк примеров (многочлены, функции, матрицы) и линейная оболочка $\operatorname{span}$, без которой невозможно сформулировать, что именно теряется при выбрасывании вектора.

Что изучить дальше

Урок 170 «Базис и размерность» — прямое продолжение. Независимая система, через которую выражается всё остальное, называется базисом; там будет доказано, что число векторов в базисе не зависит от его выбора (на лемме о замене, о которой шла речь в истории), введены координаты и матрица перехода, а ФСР однородной системы окажется базисом ядра. Урок 171 «Линейные преобразования» использует независимость при определении матрицы оператора и в теореме о ранге и дефекте: размерность образа плюс размерность ядра равна размерности исходного пространства. Урок 172 «Собственные векторы» ставит вопрос о независимости собственных векторов, отвечающих разным собственным значениям, а урок 173 «Диагонализация» превращает этот вопрос в критерий: матрица диагонализуема тогда и только тогда, когда её собственные векторы образуют независимую систему нужного размера. В уроке 175 появится ортогональность, и там выяснится, что ортогональные ненулевые векторы автоматически независимы — удобный достаточный признак, который сегодня использовать было нельзя.

Где это нужно в жизни

💻 Программирование. numpy.linalg.matrix_rank, sympy.Matrix.rank(), scipy.linalg.null_space — прямые реализации материала урока. В компьютерной графике линейная независимость трёх векторов означает, что они задают невырожденную систему координат объекта; вырождение (компланарность) ломает нормали и освещение. В геометрическом моделировании проверка независимости отвечает на вопрос, не выродился ли треугольник в отрезок.

🤖 ML/AI. Мультиколлинеарность признаков и неопределимость весов, VIF как рабочий детектор, dummy variable trap, ситуация $p > n$, низкоранговые поправки при дообучении больших моделей — всё это разные формы вопроса «зависимы ли столбцы матрицы признаков». Отбор признаков во многом и есть поиск максимальной независимой подсистемы.

📊 Data Science. Аудит датасета: поиск столбцов, выражающихся через другие, — это поиск нетривиальной обнуляющей комбинации. Такие столбцы возникают после джойнов, при хранении величины в двух единицах измерения, при наличии одновременно частей и итога. Одна строчка с matrix_rank ловит их все.

🔬 Наука. В химии независимость векторов состава определяет, сколько независимых реакций можно составить из данного набора веществ. В механике независимость векторов сил и связей отвечает на вопрос, является ли конструкция статически определимой. В теории размерностей (анализ Букингема) число независимых безразмерных комплексов равно рангу матрицы показателей степеней — буквально задача этого урока.

💰 Финансы. В факторных моделях доходности линейно зависимые факторы делают вклад каждого неопределимым — та же неидентифицируемость, что и в регрессии. В портфельном анализе линейно зависимые активы не дают диверсификации: один из них — комбинация остальных, и добавление его в портфель не расширяет множество достижимых профилей доходности.

Интересные факты

  • Герман Грассман, у которого впервые появились линейная независимость и размерность, был школьным учителем и никогда не занимал университетской кафедры. Его «Ausdehnungslehre» 1844 года продавалась настолько плохо, что нераспроданный тираж в итоге пошёл под нож. Разочаровавшись в математике, Грассман переключился на языкознание — и добился там громкого успеха: его словарь к «Ригведе» (1873–1875) используется индологами до сих пор, а открытый им фонетический закон носит его имя.

  • Слово «ранг» в математику ввёл Георг Фробениус в 1879 году, в работе об однородных дифференциальных уравнениях в полных дифференциалах. До этого свойство, которое мы называем неполным рангом, описывали громоздко — через обращение в ноль всех миноров определённого порядка. Термины «матрица» и «минор», кстати, принадлежат другому человеку — Джеймсу Джозефу Сильвестру, который придумал их в 1850-х.

  • Термин «мультиколлинеарность» ввёл в 1934 году норвежский экономист Рагнар Фриш в работе о статистическом анализе регрессионных систем. В 1969 году Фриш вместе с Яном Тинбергеном получил первую в истории премию по экономике памяти Альфреда Нобеля. Так что понятие, которым сегодня оперируют дата-сайентисты, пришло из экономической статистики тридцатых годов.

  • Variance inflation factor предложил Дональд Марквардт в 1970 году в статье о гребневой регрессии — той самой, что даёт ридж-регуляризацию. Знаменитый порог «VIF больше 10 — плохо» не является теоремой: это эмпирическое соглашение, и в литературе до сих пор спорят, не стоит ли брать 5, а иногда и 2,5. Формула же строгая: $\mathrm{VIF}_j = 1/(1 - R_j^2)$, и при строгой линейной зависимости она честно обращается в бесконечность.

  • Численный ранг — вопрос выбранного порога, а не факт. numpy.linalg.matrix_rank считает ранг через сингулярные числа и объявляет нулевыми те, что меньше порога, зависящего от размера матрицы и машинной точности. В примере из этого урока площадь в квадратных футах, округлённая до целых, дала формально полный ранг 4 при последнем сингулярном числе $0{,}089$ — то есть содержательно дублирующий признак численно выглядел независимым. Именно поэтому в реальных данных на один только matrix_rank полагаться нельзя, и рядом с ним держат VIF и число обусловленности.

Лайфхаки и полезные трюки

  1. Сначала посчитай векторы и координаты. Если векторов больше, чем размерность пространства, ответ «зависима» пишется мгновенно и является полным ответом. Пять векторов в $\mathbb{R}^4$, четыре многочлена степени не выше двух (координатное пространство трёхмерное), пять матриц $2\times2$ — все эти системы зависимы без единого вычисления.

  2. Пробегись глазами по трём признакам. Нулевой вектор, два одинаковых вектора, пара пропорциональных — каждый из них сразу даёт зависимость и готовую обнуляющую комбинацию. Проверка занимает секунды и экономит пять минут метода Гаусса.

  3. При $k = n$ считай определитель, а не ранг. Для трёх векторов в $\mathbb{R}^3$ определитель — двадцать секунд работы против шести элементарных преобразований, в каждом из которых можно ошибиться знаком. Но помни: определитель даёт только «да/нет» и не показывает, ни какие коэффициенты, ни сколько независимых векторов осталось.

  4. Нужны коэффициенты — ставь векторы столбцами. Тогда искомые $\lambda_i$ — это в точности ядро получившейся матрицы, и вся техника ФСР из урока 167 работает без переделок. Если нужен только ответ «зависима или нет», пиши строками: с ними удобнее делать преобразования.

  5. Проверяй комбинацию подстановкой в исходные векторы. Не в ступенчатый вид, а именно в исходные: ошибка могла закрасться в сами преобразования, и тогда проверка по промежуточной матрице её не увидит. Скажем, найдя $7v_1 + 6v_2 - 5v_3 = 0$, потрать полминуты и сложи три вектора с этими коэффициентами — либо получится нулевой вектор, либо сразу видно, где ошибка.

  6. В задачах с параметром подставляй каждый корень обратно. Определитель говорит только, что при этом значении система зависима. Насколько сильно упал ранг — вопрос отдельный, и кратный корень часто означает, что ранг просел сразу на две единицы. Полезно также взять «контрольное» значение параметра вдали от корней и убедиться, что там определитель ненулевой: это ловит арифметические ошибки в самом определителе.

  7. Многочлены и матрицы переводи в координаты. Многочлен степени не выше $n$ — это строка из $n+1$ коэффициентов, матрица $m \times n$ — строка из $mn$ элементов. После перевода задача становится обычной задачей про векторы в $\mathbb{R}^N$, и дальше работает весь стандартный аппарат. Порядок записи координат может быть любым, лишь бы одинаковым для всех объектов набора.

  8. Для функций выбирай точки, где они ведут себя по-разному. Подстановка $x = 0$ хороша тем, что зануляет многое ($\sin 0 = 0$, $x = 0$) и оставляет константы; $x = \pi/2$ и $x = \pi$ разделяют синус и косинус; $x = \ln 2$ превращает $e^x$ и $e^{2x}$ в 2 и 4. Если система на коэффициенты получилась вырожденной, это не доказательство зависимости — просто возьми другие точки.

  9. Проверяй ранг матрицы признаков перед обучением модели. Одна строчка np.linalg.matrix_rank(X) == X.shape[1] отделяет «модель плохо обучилась» от «задача не имеет единственного решения». А если ранг полный, но коэффициенты скачут от малейших изменений данных, посмотри на VIF и на отношение крайних сингулярных чисел — почти зависимость видна именно там.

Линейная зависимость — это то место, где линейная алгебра перестаёт быть набором алгоритмов и становится языком. Ранг перестал быть «числом ненулевых строк» и стал мерой того, сколько в данных по-настоящему разной информации. Однородная система перестала быть упражнением и стала способом искать скрытые соотношения. А вопрос «сколько векторов нужно, чтобы описать всё остальное» получил точную постановку — и вот-вот получит ответ: система, которая независима и через которую выражается всё, называется базисом, и следующий урок целиком про неё.

Понял тему? Закрепи в боте! 🚀

Попрактикуйся на задачах и получи персональные рекомендации от AI

💪 Начать тренировку
💬 Есть вопрос? Спроси бота!