QR-розклад матриці

Матеріал з testwiki
Перейти до навігації Перейти до пошуку

QR-розклад матриці — представлення матриці у вигляді добутку унітарної та правої трикутної матриці.

Матриця A розміру m×n може бути представлена у вигляді

 A=QR,

де Q — унітарна матриця розміру m×m, R — верхня трикутна матриця розміру m×n.

Також можливі представлення QL, RQ, та LQ (де L — нижня трикутна матриця).

Для m×n матриці A, з m ≥ n нижні (mn) рядків m×n верхньої трикутної матриці усі нульові, тому часто буває корисно розбити R, або R і Q:

A=QR=Q[R10]=[Q1,Q2][R10]=Q1R1,

де R1 — це n×n верхня трикутна матриця, 0 — це (m − nn нульова матриця, Q1 — це m×n, Q2 — це m×(m − n) і Q1 та Q2 обидві мають ортогональні стовпчики.

Обчислення

Розклад матриці може отримуватись за допомогою різних методів:

Використовуючи процес Грама — Шмідта

Розглянемо процес Грама — Шмідта застосований до стовпчиків матриці A=[𝐚1,,𝐚n] з повним стовпчиковим рангом, де 𝐯,𝐰=𝐯𝐰 (або 𝐯,𝐰=𝐯*𝐰 у комплексному випадку).

Визначимо проєкцію вектора як:

proj𝐞𝐚=𝐞,𝐚𝐞,𝐞𝐞

тоді:

𝐮1=𝐚1,𝐞1=𝐮1𝐮1𝐮2=𝐚2proj𝐮1𝐚2,𝐞2=𝐮2𝐮2𝐮3=𝐚3proj𝐮1𝐚3proj𝐮2𝐚3,𝐞3=𝐮3𝐮3𝐮k=𝐚kj=1k1proj𝐮j𝐚k,𝐞k=𝐮k𝐮k

Тепер ми можемо виразити 𝐚i через ново обчислений ортонормальний базис:

𝐚1=𝐞1,𝐚1𝐞1𝐚2=𝐞1,𝐚2𝐞1+𝐞2,𝐚2𝐞2𝐚3=𝐞1,𝐚3𝐞1+𝐞2,𝐚3𝐞2+𝐞3,𝐚3𝐞3𝐚k=j=1k𝐞j,𝐚k𝐞j

де 𝐞i,𝐚i=𝐮i. Це можна записати у матричній формі:

A=QR

де:

Q=[𝐞1,,𝐞n]andR=(𝐞1,𝐚1𝐞1,𝐚2𝐞1,𝐚30𝐞2,𝐚2𝐞2,𝐚300𝐞3,𝐚3).

Приклад

Розглянемо декомпозицію

A=(1251461676842441).

Згадаймо, що ортонормальна матриця Q має таку властивість

QTQ=I.

Тоді, ми можемо обчислити Q із застосувавши процес Грама — Шмідта так:

U=(𝐮1𝐮2𝐮3)=(126958/561586/543033);
Q=(𝐮1𝐮1𝐮2𝐮2𝐮3𝐮3)=(6/769/17558/1753/7158/1756/1752/76/3533/35).

Отже, ми маємо

QTA=QTQR=R;
R=QTA=(1421140175700035).

Використовуючи перетворення Хаусхолдера

Відбиття Хаусхалдера для QR-розкладу: Ціллю є знаходження лінійного перетворення, що переводить вектор x у вектор такої ж довжини колінеарний з e1. Ми могли б використати ортогональну проєкцію (Грам-Шмідт), але це було б чисельно нестабільно якщо вектори x і e1 майже ортогональні. Натомість, відбиття Хаусхолдера віддзеркалює щодо пунктирної лінії (обраної так, щоб розсікати навпіл кут між x і e1). Найбільший можливий кут у такій трансформації становить 45 градусів.

Перетворення Хаусхолдера — це трансформація, яка приймає вектор і відбиває його від певної площини або гіперплощини. Ми можемо використати цю операцію для обчислення QR-розкладу m-на-n матриці A з m ≥ n.

Q можна використати, щоб відбивати вектор таким чином, щоб всі координати окрім однієї зникали.

Нехай 𝐱 буде довільним дійсним m-вимірним вектором стовпчиком A таким, що 𝐱=|α| для скаляра α. Якщо алгоритм втілюється із використанням арифметики з рухомою комою, тоді потрібно надати α знак протилежний до знаку k-ї координати 𝐱, де xk є опорною координатою після якої усі елементи дорівнюють нулю в кінцевій верхній трикутній формі матриці A, задля уникнення втрати розрядів. У комплексному випадку, встановіть

α=eiargxk𝐱

і замініть транспонування на спряжене транспонування під час побудови Q далі.

Тоді, 𝐞1 є вектором (1,0,...,0)T, ||·|| є Евклідовою нормою і I є m-by-m одиничною матрицею, встановимо

𝐮=𝐱α𝐞1,
𝐯=𝐮𝐮,
Q=I2𝐯𝐯T.

Або, якщо A комплексна

Q=I(1+w)𝐯𝐯H, де w=𝐱H𝐯/𝐯H𝐱
де 𝐱H — це ермітово-спряжений 𝐱

Q є m-на-m матриця Хаусхолдера і

Q𝐱=(α,0,,0)T.

Це можна використати, щоб поступово трансформувати m-на-n матрицю A у верхню трикутну форму. Спершу ми множимо A на матрицю Хаусхолдера Q1 яку ми отримали для першого стовпчика. Це нам дає матрицю Q1A з нулями в першому стовпчику окрім першого рядка.

Q1A=[α10A0]

Це можна повторити для A′ (Q1A без першого рядка і першого стовпчика), в результаті маємо матрицю Хаусхолдера Q2. Зауважте, що Q2 менше ніж Q1. Оскільки ми бажаємо, щоб вона діяла на Q1A, а не на A′ нам потрібно розширити її додавши у верхній лівий кут 1, узагальнюючи:

Qk=(Ik100Qk).

Після t ітерацій цього процесу, t=min(m1,n),

R=QtQ2Q1A

є верхньою трикутною матрицею. Отже, з

Q=Q1TQ2TQtT,

A=QR є QR-розкладом A.

Цей метод має більшу числову стійкість ніж метод Грама-Шмідта.

Наступна таблиця наводить кількість операцій на k-му кроці QR-розкладення із використанням перетворення Хаусхолдера, припускаючи квадратну матрицю розміру n.

Операція Кількість на k-му кроці
множення 2(nk+1)2
додавання (nk+1)2+(nk+1)(nk)+2
ділення 1
взяття кореня 1

Додаючи ці числа для усіх n − 1 кроків (для квадратної матриці розміру n), складність алгоритму (кількість множень з рухомою комою) задається

23n3+n2+13n2=O(n3).

Приклад

Обчислимо розклад для

A=(1251461676842441).

Перше, нам потрібно знайти відбиття, що перетворює перший стовпчик матриці A, вектор 𝐚1=(12,6,4)T, у 𝐚1e1=(14,0,0)T.

Тепер,

𝐮=𝐱+α𝐞1,

і

𝐯=𝐮𝐮.

Тут,

α=14 and 𝐱=𝐚1=(12,6,4)T

Отже

𝐮=(2,6,4)T=(2)(1,3,2)T and 𝐯=114(1,3,2)T, and then
Q1=I21414(132)(132)
=I17(132396264)
=(6/73/72/73/72/76/72/76/73/7).

Спостережемо що:

Q1A=(14211404914016877),

Отже, ми вже маємо майже трикутну матрицю. Нам лише потрібен нуль у чарунці (3, 2).

Візьмемо мінор (1, 1) і знову застосуємо процес до

A=M11=(491416877).

Таким саме методом як і вище, отримуємо матрицю перетворення Хаусхолдера

Q2=(10007/2524/25024/257/25)

після розширення.

Тепер, знайдемо

Q=Q1TQ2T=(6/769/17558/1753/7158/1756/1752/76/3533/35)

Тоді

Q=Q1TQ2T=(0.85710.39430.33140.42860.90290.03430.28570.17140.9429)
R=Q2Q1A=QTA=(1421140175700035).

Матриця Q є ортогональною і R є верхньою трикутною, отже A = QR і є шуканим QR-розкладом.

Див. також

Джерела