Что Такое Псевдообратная Матрица и как Её Вычислить: Базовые Идеи и Основные Шаги

Псевдообратная матрица нужна тогда, когда обычная обратная матрица не определена. Так бывает, если матрица прямоугольная или квадратная, но вырожденная. И что делать в такой ситуации, если нужно решить систему, найти приближённое решение или получить устойчивый результат в численных вычислениях? Именно здесь псевдообращение даёт практический инструмент. В этой статье мы разберём определение, ключевые свойства и вычисление через сингулярное разложение, а также объясним, откуда берутся элементы матриц \( 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^{+} \) через сингулярное разложение, обычно выполняют такие шаги:

  1. Для заданной матрицы \( 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}. \]

  1. Для матрицы \(A \cdot A^{T} \) находят собственные значения \( \lambda_i \) и ортонормированные собственные векторы \( u_i \). Из этих векторов составляют матрицу

\[ U=\begin{pmatrix}u_1 & u_2 & \cdots & u_m\end{pmatrix}. \]

  1. Для матрицы \(A^{T} \cdot A \) находят собственные значения \( \lambda_i \) и ортонормированные собственные векторы \( v_i \). Из этих векторов составляют матрицу

\[ V=\begin{pmatrix}v_1 & v_2 & \cdots & v_n\end{pmatrix}. \]

  1. Из собственных значений получают сингулярные числа \( \sigma_i=\sqrt{\lambda_i} \) (\( \sigma_i\ge 0 \)). Затем из \( \sigma_i \) формируют матрицу \( \Sigma\in\mathbb{R}^{m\times n} \) так, чтобы ненулевые \( \sigma_i \) стояли на главной диагонали, а остальные элементы были нулевыми.
  2. Составляют \( \Sigma^{+}\in\mathbb{R}^{n\times m} \): на её диагонали ставят значения, которые соответствуют обращению ненулевых сингулярных чисел, а там, где \( \sigma_i=0 \), ставят нули.
  3. Записывают псевдообратную матрицу по формуле:

\[ 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}. \]

Псевдообратная Матрица в Коде: Попробуйте Собрать Свой Миникалькулятор

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

Блок-схема алгоритма, которая шаг за шагом показывает, как вычисляется псевдообратная матрица с помощью сингулярного разложения