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