Линейная алгебра: собственные значения и разложения
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
Матричные разложения
Разложения — это представление матрицы в виде произведения более простых. Они лежат в основе быстрых и устойчивых алгоритмов.
| Функция | Разложение | Применение |
lu | LU | решение систем |
qr | QR | наименьшие квадраты |
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 — устойчивее и быстрее ручных формул.