Линейная алгебра: собственные значения и разложения

MATLAB создавался ради линейной алгебры — здесь её инструменты особенно отточены.

Собственные значения матрицы — числа λ, для которых A·v = λ·v при некотором ненулевом векторе v.

Базовые характеристики матрицы

MATLAB даёт прямые функции для ключевых величин: det(A) — определитель, rank(A) — ранг, trace(A) — след (сумма диагонали), norm(A) — норма. Они нужны, чтобы понять свойства матрицы: вырождена ли она, обусловлена ли хорошо.

A = [4 1; 2 3];
det(A)        % 10
rank(A)       % 2 — полный ранг
trace(A)      % 7

Собственные значения и векторы

Функция eig возвращает собственные значения, а с двумя выходами — ещё и собственные векторы. Это фундамент устойчивости систем управления, анализа колебаний, метода главных компонент (PCA) и многого другого.

A = [2 0; 0 3];
lambda = eig(A)        % собственные значения
[V, D] = eig(A);       % V — векторы, D — диагональ значений

Вывод:

lambda =
     2
     3

Матричные разложения

Разложения — это представление матрицы в виде произведения более простых. Они лежат в основе быстрых и устойчивых алгоритмов.

ФункцияРазложениеПрименение
luLUрешение систем
qrQRнаименьшие квадраты
cholХолецкогоположительно определённые
svdсингулярноесжатие, ранг, PCA

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

Параллель с NumPy

Эти функции почти один в один совпадают с numpy.linalg: eig, svd, qr, det называются так же. Разница в синтаксисе вызова с несколькими выходами: MATLAB пишет [V, D] = eig(A), NumPy возвращает кортеж w, V = np.linalg.eig(A). Концептуально это одна и та же линейная алгебра поверх LAPACK.

Как работает под капотом

Все эти функции — обёртки над LAPACK, накопленным десятилетиями опытом численной линейной алгебры. Важная мысль: «школьные» формулы (например, определитель через миноры или собственные значения через характеристический многочлен) для больших матриц вычислительно непригодны — они и медленные, и неустойчивые. MATLAB вместо этого использует итеративные и факторизационные методы. Поэтому доверяйте встроенным eig и svd, а не пытайтесь воспроизвести их формулами из учебника.

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

  • Вычислять eig для неквадратной матрицы — собственные значения определены только для квадратных; для прямоугольных есть svd.
  • Считать det(A)==0 надёжным тестом вырожденности — из-за округления лучше смотреть на rank или число обусловленности cond.
  • Реализовывать разложения вручную вместо встроенных — теряется и точность, и скорость.

Зачем инженеру собственные значения

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

Разреженные матрицы

В крупных инженерных задачах — расчёте сетей, конечно-элементных моделях — матрицы огромны, но почти сплошь состоят из нулей. Хранить миллионы нулей расточительно. MATLAB поддерживает разреженные матрицы (sparse): функция sparse хранит только ненулевые элементы и их позиции, экономя память на порядки. Что важно, все знакомые операции — \, eig, умножение — работают с разреженными матрицами, автоматически применяя специальные эффективные алгоритмы. Благодаря этому системы с миллионами неизвестных, немыслимые для плотного хранения, решаются на обычном компьютере. Это ещё один пример того, как MATLAB прячет сложную численную инженерию за привычным синтаксисом.

Итоги

  • det, rank, trace, norm описывают свойства матрицы.
  • eig даёт собственные значения и векторы; разложения — lu, qr, chol, svd.
  • Это обёртки LAPACK — устойчивее и быстрее ручных формул.
Проверьте себя
1. Что вычисляет функция eig(A)?
AОпределитель
BСобственные значения матрицы
CОбратную матрицу
DСумму элементов
2. Какое разложение работает для любых, в том числе прямоугольных матриц?
ALU
BХолецкого
CSVD (сингулярное)
DQR только для квадратных
3. Почему встроенный eig лучше формулы через характеристический многочлен?
AОн короче пишется
BШкольные формулы для больших матриц медленны и неустойчивы численно
CФормула даёт комплексные числа
DРазницы нет