Що Таке Псевдообернена Матриця і як Її Обчислити: Базові Ідеї та Основні Кроки

Псевдообернена матриця потрібна тоді, коли звична обернена матриця не визначена. Так буває, якщо матриця прямокутна або квадратна, але вироджена. І що робити в такій ситуації, якщо треба розв’язати систему, знайти наближений розв’язок або отримати стабільний результат у чисельних обчисленнях? Саме тут псевдообернення дає практичний інструмент. У цій статті ми розберемо означення, ключові властивості та обчислення через сингулярний розклад, а також пояснимо, звідки беруться елементи матриць \( 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}. \]

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

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

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