Псевдообратная матрица нужна тогда, когда обычная обратная матрица не определена. Так бывает, если матрица прямоугольная или квадратная, но вырожденная. И что делать в такой ситуации, если нужно решить систему, найти приближённое решение или получить устойчивый результат в численных вычислениях? Именно здесь псевдообращение даёт практический инструмент. В этой статье мы разберём определение, ключевые свойства и вычисление через сингулярное разложение, а также объясним, откуда берутся элементы матриц \( U \), \( \Sigma \), \( V \).
Псевдообратная Матрица: Когда Она Нужна и Что Означает
Начнём с самого базового. Для квадратной невырожденной матрицы \( A \) существует обратная \( A^{-1} \), и выполняется:
\[ A^{-1} \cdot A = I,\qquad A \cdot A^{-1}=I. \]
Но если \( A \) прямоугольная (\( m\times n \) при \( m\neq n \)) или квадратная, но \( \det(A)=0 \), то классической обратной матрицы не существует. Это естественно: в таких случаях требования \( A \cdot A^{-1}=I \) и \( A^{-1} \cdot A=I \) одновременно выполнить невозможно.
Тогда вводят обобщение — матрицу, которая сохраняет самые важные свойства обращения в корректной форме. Так появляется псевдообратная матрица (матрица Мура–Пенроуза), которую обозначают \( A^{+} \).
Формально псевдообратная матрица \( A^{+} \) для матрицы \( A\in\mathbb{R}^{m\times n} \) — это единственная матрица \( A^{+}\in\mathbb{R}^{n\times m} \), которая удовлетворяет четырём условиям:
\[ A \cdot A^{+} \cdot A = A,\qquad A^{+} \cdot A \cdot A^{+} = A^{+},\qquad (A \cdot A^{+})^{*}=A \cdot A^{+},\qquad (A^{+} \cdot A)^{*}=A^{+} \cdot A. \]
Здесь \( ^{*} \) — сопряжённое транспонирование: в комплексном случае \( A^{*}=\overline{A}^{T} \), а для вещественных матриц \( A^{*}=A^{T} \).
И ещё один важный момент: если \( A \) квадратная и невырожденная, то псевдообратная совпадает с обычной:
\[ A^{+}=A^{-1}. \]
То есть это понятие обобщает привычное обращение и не противоречит ему.
Псевдообратная Матрица: Полезные Свойства для Решения Систем
Теперь возникает логичный вопрос: что именно дают эти четыре условия? Они задают согласованное поведение \( A^{+} \) в задачах, где классическое обращение недоступно.
Во-первых, выполняются соотношения:
\[ A \cdot A^{+} \cdot A=A,\qquad A^{+} \cdot A \cdot A^{+}=A^{+}. \]
Они означают, что после применения \( A^{+} \) и последующего умножения на \( A \) мы снова получаем исходные данные в правильной форме.
Во-вторых, симметричность (или эрмитовость) произведений:
\[ (A \cdot A^{+})^{*}=A \cdot A^{+},\qquad (A^{+} \cdot A)^{*}=A^{+} \cdot A \]
гарантирует корректность многих геометрических и численных свойств. Для вещественных матриц это просто симметричность.
Дальше — самая практичная связь с задачами наименьших квадратов. Если система \( A \cdot x=b \) не имеет точного решения (так часто бывает для прямоугольных матриц), тогда ищут \( x \), которое минимизирует ошибку (обычно в евклидовой норме):
\[ \| A \cdot x-b \|\to \min. \]
В таком случае выражение \( x^{\star}=A^{+} \cdot b \) задаёт решение задачи наименьших квадратов. А если таких решений несколько, то \( A^{+} \cdot b \) даёт то, для которого норма \( \| x \| \) минимальна. Удобно для проверок и для реальных вычислений, правда?
Псевдообратная Матрица: Вычисление Через Сингулярное Разложение
Самый распространённый и наиболее устойчивый способ найти \( A^{+} \) — использовать сингулярное разложение (SVD). Оно существует для любой матрицы \( A\in\mathbb{R}^{m\times n} \) и имеет вид:
\[ A = U \cdot \Sigma \cdot V^{T}, \]
где размерности такие:
\[ U\in\mathbb{R}^{m\times m},\quad \Sigma\in\mathbb{R}^{m\times n},\quad V\in\mathbb{R}^{n\times n}. \]
Матрицы \( U \) и \( V \) ортогональны:
\[ U^{T} \cdot U=I,\qquad V^{T} \cdot V=I. \]
Матрица \( \Sigma \) — прямоугольная диагональная: на её главной диагонали стоят неотрицательные числа \( \sigma_i \), которые называют сингулярными числами. Их может быть не больше, чем
\[ t=\min(m,n),\qquad \sigma_1\ge \sigma_2\ge \cdots \ge \sigma_t\ge 0, \]
а все остальные элементы \( \Sigma \) равны нулю.
Стандартная запись \( \Sigma \) зависит от того, какое из чисел \( m,n \) больше:
\[ \Sigma= \begin{cases} \begin{pmatrix} D\\ 0 \end{pmatrix}, & m\ge n,\\[12pt] \begin{pmatrix} D & 0 \end{pmatrix}, & m<n, \end{cases} \qquad D=\operatorname{diag}(\sigma_1,\sigma_2,\ldots,\sigma_t). \]
Если \( r=\operatorname{rank}(A) \), то
\[ \sigma_1\ge \cdots \ge \sigma_r>0,\qquad \sigma_{r+1}=\cdots=\sigma_t=0. \]
Когда SVD уже построено, псевдообратная матрица вычисляется по формуле:
\[ A^{+}=V \cdot \Sigma^{+} \cdot U^{T}. \]
Здесь \( \Sigma^{+}\in\mathbb{R}^{n\times m} \) — матрица, в которой каждое ненулевое \( \sigma_i \) заменяют на \(\frac{1}{\sigma_i} \), а нули оставляют нулями:
\[ \Sigma^{+}= \begin{cases} \begin{pmatrix} D^{+} & 0 \end{pmatrix}, & m\ge n,\\[12pt] \begin{pmatrix} D^{+}\\ 0 \end{pmatrix}, & m<n, \end{cases} \qquad D^{+}=\operatorname{diag}(\sigma_1^{+},\sigma_2^{+},\ldots,\sigma_t^{+}), \]
где
\[ \sigma_i^{+}= \begin{cases} \dfrac{1}{\sigma_i}, & \sigma_i>0,\\[6pt] 0, & \sigma_i=0. \end{cases} \]
Итак, основная задача — корректно построить \( U \), \( \Sigma \), \( V \). Дальше формула для \( A^{+} \) применяется напрямую.
Элементы Сингулярного Разложения: Как Их Получают
Хорошо, а откуда берутся сами матрицы \( U \) и \( V \)? Для этого рассматривают две симметричные матрицы:
\[ A \cdot A^{T}\in\mathbb{R}^{m\times m},\qquad A^{T} \cdot A\in\mathbb{R}^{n\times n}. \]
Они неотрицательно определённые, поэтому их собственные значения \( \lambda_i \) неотрицательны, а собственные векторы можно выбрать ортонормированными. Важно, что собственные векторы берут именно для \( A \cdot A^{T} \) и \( A^{T} \cdot A \), а не для самой матрицы \( A \). Именно поэтому SVD удобно строить через спектральное разложение этих двух симметричных матриц.
Ключевая связь такая:
- Столбцы \( U \) — это ортонормированные собственные векторы матрицы \( A \cdot A^{T} \).
- Столбцы \( V \) — это ортонормированные собственные векторы матрицы \( A^{T} \cdot A \).
Запишем это формулами. Пусть
\[ A \cdot A^{T} \cdot u_i=\lambda_i \cdot u_i,\qquad i=1,2,\ldots,m, \]
тогда
\[ U=\begin{pmatrix}u_1 & u_2 & \cdots & u_m\end{pmatrix}. \]
Аналогично, если
\[ A^{T} \cdot A \cdot v_i=\lambda_i \cdot v_i,\qquad i=1,2,\ldots,n, \]
то
\[ V=\begin{pmatrix}v_1 & v_2 & \cdots & v_n\end{pmatrix}. \]
Теперь — самое важное про сингулярные числа. Ненулевые собственные значения матриц \( A \cdot A^{T} \) и \( A^{T} \cdot A \) совпадают (с учётом кратностей). А сингулярные числа определяются через них так:
\[ \sigma_i=\sqrt{\lambda_i},\qquad \sigma_i\ge 0. \]
То есть мы сначала находим \( \lambda_i \), а затем берём квадратные корни.
Как связаны собственные векторы ui и vi?
Для каждого \( \sigma_i>0 \) выполняются равенства:
\[ A \cdot v_i=\sigma_i \cdot u_i,\qquad A^{T} \cdot u_i=\sigma_i \cdot v_i. \]
Поэтому, если известны \( v_i \) и \( \sigma_i>0 \), то можно найти
\[ u_i=\frac{1}{\sigma_i} \cdot A \cdot v_i, \]
а если известны \( u_i \), то
\[ v_i=\frac{1}{\sigma_i} \cdot A^{T} \cdot u_i. \]
Именно так на практике получают согласованные \( U \) и \( V \), а \( \Sigma \) составляют из \( \sigma_i \).
И после этого завершающий шаг записывается уже знакомо:
\[ A^{+}=V \cdot \Sigma^{+} \cdot U^{T}. \]
Итак, построение псевдообратной матрицы через SVD опирается на собственные значения и собственные векторы двух симметричных матриц \( A \cdot A^{T} \) и \( A^{T} \cdot A \), а также на простое правило для \( \Sigma^{+} \): обратить ненулевые сингулярные числа и оставить нули.
Псевдообратная Матрица: Практическая Часть с Примерами
Чтобы лучше понять метод, давайте перейдём к практическим примерам. Шаг за шагом разберём несколько типичных задач, в которых применим полученные знания. Обращайте внимание не только на конечные результаты, но и на логику выполнения каждого этапа — это поможет быстрее ориентироваться в похожих упражнениях.
Пример 1. Какие шаги нужно выполнить, чтобы найти псевдообратную матрицу?
Чтобы найти псевдообратную матрицу \( A^{+} \) через сингулярное разложение, обычно выполняют такие шаги:
- Для заданной матрицы \( A\in\mathbb{R}^{m\times n} \) вычисляют две симметричные матрицы:
\[ A \cdot A^{T}\in\mathbb{R}^{m\times m},\qquad A^{T} \cdot A\in\mathbb{R}^{n\times n}. \]
- Для матрицы \(A \cdot A^{T} \) находят собственные значения \( \lambda_i \) и ортонормированные собственные векторы \( u_i \). Из этих векторов составляют матрицу
\[ U=\begin{pmatrix}u_1 & u_2 & \cdots & u_m\end{pmatrix}. \]
- Для матрицы \(A^{T} \cdot A \) находят собственные значения \( \lambda_i \) и ортонормированные собственные векторы \( v_i \). Из этих векторов составляют матрицу
\[ V=\begin{pmatrix}v_1 & v_2 & \cdots & v_n\end{pmatrix}. \]
- Из собственных значений получают сингулярные числа \( \sigma_i=\sqrt{\lambda_i} \) (\( \sigma_i\ge 0 \)). Затем из \( \sigma_i \) формируют матрицу \( \Sigma\in\mathbb{R}^{m\times n} \) так, чтобы ненулевые \( \sigma_i \) стояли на главной диагонали, а остальные элементы были нулевыми.
- Составляют \( \Sigma^{+}\in\mathbb{R}^{n\times m} \): на её диагонали ставят значения, которые соответствуют обращению ненулевых сингулярных чисел, а там, где \( \sigma_i=0 \), ставят нули.
- Записывают псевдообратную матрицу по формуле:
\[ A^{+}=V \cdot \Sigma^{+} \cdot U^{T}. \]
Пример 2. Найти псевдообратную матрицу для заданной матрицы
\[ A= \begin{pmatrix} 2 & 1 \\ 1 & 2 \\ 3 & 3 \end{pmatrix}. \]
Начинаем с построения симметричных матриц \( A \cdot A^{T} \) и \(A^{T} \cdot A \):
\[ \begin{gathered} A \cdot A^{T}= \begin{pmatrix} 2 & 1\\ 1 & 2\\ 3 & 3 \end{pmatrix} \cdot \begin{pmatrix} 2 & 1 & 3\\ 1 & 2 & 3 \end{pmatrix} = \begin{pmatrix} 5 & 4 & 9\\ 4 & 5 & 9\\ 9 & 9 & 18 \end{pmatrix}, \\[6pt] A^{T} \cdot A= \begin{pmatrix} 2 & 1 & 3\\ 1 & 2 & 3 \end{pmatrix} \cdot \begin{pmatrix} 2 & 1\\ 1 & 2\\ 3 & 3 \end{pmatrix} = \begin{pmatrix} 14 & 13\\ 13 & 14 \end{pmatrix}. \end{gathered} \]
Далее находим спектральные данные. Для \( A \cdot A^{T} \) собственные значения и соответствующие собственные векторы можно взять так:
\[ \lambda_1=27,\quad x_1= \begin{pmatrix} 1\\ 1\\ 2 \end{pmatrix}, \qquad \lambda_2=1,\quad x_2= \begin{pmatrix} -1\\ 1\\ 0 \end{pmatrix}, \qquad \lambda_3=0,\quad x_3= \begin{pmatrix} -1\\ -1\\ 1 \end{pmatrix}. \]
Нормируем их и формируем ортонормированные столбцы \( U \). В результате получаем:
\[ U= \begin{pmatrix} \frac{1}{\sqrt{1^{2}+1^{2}+2^{2}}} & \frac{-1}{\sqrt{(-1)^{2}+1^{2}+0^{2}}} & \frac{-1}{\sqrt{(-1)^{2}+(-1)^{2}+1^{2}}} \\ \frac{1}{\sqrt{1^{2}+1^{2}+2^{2}}} & \frac{1}{\sqrt{(-1)^{2}+1^{2}+0^{2}}} & \frac{-1}{\sqrt{(-1)^{2}+(-1)^{2}+1^{2}}} \\ \frac{2}{\sqrt{1^{2}+1^{2}+2^{2}}} & \frac{0}{\sqrt{(-1)^{2}+1^{2}+0^{2}}} & \frac{1}{\sqrt{(-1)^{2}+(-1)^{2}+1^{2}}} \end{pmatrix}= \begin{pmatrix} 0.408 & -0.707 & -0.577\\ 0.408 & 0.707 & -0.577\\ 0.816 & 0 & 0.577 \end{pmatrix}. \]
Для \( A^{T} \cdot A \) собственные значения и собственные векторы можно записать так:
\[ \lambda_1=27,\quad y_1= \begin{pmatrix} 1\\ 1 \end{pmatrix}, \qquad \lambda_2=1,\quad y_2= \begin{pmatrix} -1\\ 1 \end{pmatrix}. \]
После нормирования формируем \( V \):
\[ V= \begin{pmatrix} \frac{1}{\sqrt{1^{2}+1^{2}}} & \frac{-1}{\sqrt{(-1)^{2}+1^{2}}} \\ \frac{1}{\sqrt{1^{2}+1^{2}}} & \frac{1}{\sqrt{(-1)^{2}+1^{2}}} \end{pmatrix}= \begin{pmatrix} 0.707 & -0.707\\ 0.707 & 0.707 \end{pmatrix}. \]
Теперь переходим к сингулярным числам. Поскольку \( \sigma_i=\sqrt{\lambda_i} \), имеем:
\[ \sigma_1=5.196,\qquad \sigma_2=1. \]
Тогда матрица \( \Sigma\in\mathbb{R}^{3\times 2} \) принимает вид:
\[ \Sigma= \begin{pmatrix} 5.196 & 0\\ 0 & 1\\ 0 & 0 \end{pmatrix}. \]
Далее строим \( \Sigma^{+}\in\mathbb{R}^{2\times 3} \). На месте \( 5.196 \) ставим соответствующее обратное значение, а \( 1 \) и нули оставляем без изменений:
\[ \Sigma^{+}= \begin{pmatrix} 0.192 & 0 & 0\\ 0 & 1 & 0 \end{pmatrix}. \]
Теперь применяем ключевую формулу:
\[ A^{+}=V \cdot \Sigma^{+} \cdot U^{T}. \]
После перемножения получаем псевдообратную матрицу:
\[ A^{+}= \begin{pmatrix} 0.707 & -0.707\\ 0.707 & 0.707 \end{pmatrix} \cdot \begin{pmatrix} 0.192 & 0 & 0\\ 0 & 1 & 0 \end{pmatrix} \cdot \begin{pmatrix} 0.408 & 0.408 & 0.816\\ -0.707 & 0.707 & 0\\ -0.577 & -0.577 & 0.577 \end{pmatrix}= \begin{pmatrix} 0.556 & -0.444 & 0.111\\ -0.444 & 0.556 & 0.111 \end{pmatrix}. \]
Проверка размерностей: \( A\in\mathbb{R}^{3\times 2} \), значит \( A^{+}\in\mathbb{R}^{2\times 3} \), что и видно по полученному результату.
Пример 3. Найти псевдообратную матрицу для заданной матрицы
\[ A= \begin{pmatrix} 2 & 0 & 0\\ 0 & 1 & 0 \end{pmatrix}. \]
Как и в предыдущем примере, начинаем с построения симметричных матриц \( A \cdot A^{T} \) и \( A^{T} \cdot A \):
\[ \begin{gathered} A \cdot A^{T}= \begin{pmatrix} 2 & 0 & 0\\ 0 & 1 & 0 \end{pmatrix} \cdot \begin{pmatrix} 2 & 0\\ 0 & 1\\ 0 & 0 \end{pmatrix} = \begin{pmatrix} 4 & 0\\ 0 & 1 \end{pmatrix}, \\[6pt] A^{T} \cdot A= \begin{pmatrix} 2 & 0\\ 0 & 1\\ 0 & 0 \end{pmatrix} \cdot \begin{pmatrix} 2 & 0 & 0\\ 0 & 1 & 0 \end{pmatrix} = \begin{pmatrix} 4 & 0 & 0\\ 0 & 1 & 0\\ 0 & 0 & 0 \end{pmatrix}. \end{gathered} \]
Теперь смотрим на спектральные данные. Для \( A \cdot A^{T} \) собственные значения и собственные векторы можно взять так:
\[ \lambda_1=4,\quad x_1= \begin{pmatrix} 1\\ 0 \end{pmatrix}, \qquad \lambda_2=1,\quad x_2= \begin{pmatrix} 0\\ 1 \end{pmatrix}. \]
Эти векторы уже ортонормированы, поэтому матрица \( U \) сразу имеет вид:
\[ U= \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix}. \]
Для \( A^{T} \cdot A \) имеем:
\[ \lambda_1=4,\quad y_1= \begin{pmatrix} 1\\ 0\\ 0 \end{pmatrix}, \qquad \lambda_2=1,\quad y_2= \begin{pmatrix} 0\\ 1\\ 0 \end{pmatrix}, \qquad \lambda_3=0,\quad y_3= \begin{pmatrix} 0\\ 0\\ 1 \end{pmatrix}. \]
Векторы тоже уже ортонормированы, значит
\[ V= \begin{pmatrix} 1 & 0 & 0\\ 0 & 1 & 0\\ 0 & 0 & 1 \end{pmatrix}. \]
Поскольку матрица \( A \) имеет размер \( 2\times 3 \), в \( \Sigma \) может быть только \( t=\min(2,3)=2 \) сингулярных числа. Поэтому здесь берём две величины:
\[ \sigma_1=2,\qquad \sigma_2=1. \]
Тогда матрица \( \Sigma\in\mathbb{R}^{2\times 3} \) имеет вид:
\[ \Sigma= \begin{pmatrix} 2 & 0 & 0 \\ 0 & 1 & 0 \end{pmatrix}. \]
Далее строим \( \Sigma^{+}\in\mathbb{R}^{3\times 2} \). Ненулевые сингулярные числа заменяем на соответствующие обратные значения, а нулевые позиции оставляем нулевыми:
\[ \Sigma^{+}= \begin{pmatrix} 0.5 & 0\\ 0 & 1\\ 0 & 0 \end{pmatrix}. \]
Теперь применяем формулу:
\[ A^{+}=V \cdot \Sigma^{+} \cdot U^{T}. \]
Поскольку \( V \) и \( U \) в этом примере — единичные, умножение не меняет \( \Sigma^{+} \), поэтому:
\[ A^{+}= \begin{pmatrix} 0.5 & 0\\ 0 & 1\\ 0 & 0 \end{pmatrix}. \]
Псевдообратная Матрица в Коде: Попробуйте Собрать Свой Миникалькулятор
Представьте, что блок-схема ниже — это не просто картинка, а чёткий план для вашего небольшого программного проекта. Почему бы не взять её как подсказку и не написать на любимом языке программирования небольшую программу, которая вычисляет псевдообратную матрицу через сингулярное разложение? Такой формат хорошо тренирует внимательность к деталям и одновременно показывает, как математическая идея превращается в практический инструмент, который легко проверить на собственных примерах. А ещё приятно видеть результат не только на бумаге, но и в виде кода, который выдаёт ответ с первого запуска.
