Výpočet QR
Ortogonalni matice¶
Pro ortogonální matici Q platí:
Tvrzení 2.1: Je-li Q \in \mathbb{R}^{m \times m} ortogonální matice, je její transpozice Q^T také ortogonální matice.
Tvrzení 2.2: Pro ortogonální matice Q_1, Q_2, . . . , Q_k \in \mathbb{R}^{m \times m}, m, k \in \mathbb{N}, platí, že jejich součin je opět ortogonální matice, neboli (Q_1Q_2 \dots Q_n)^T Q_1Q_2 \dots Q_n = I_m.
Důkaz. Tvrzení plyne z vlastnosti ortogonálních matic a z faktu, že transpozice součinu matic je součin transpozic těchto matic, ale v obráceném pořadí:
Z toho a z vlastnosti (2.1) ortogonálních matic získáváme Další vlastnost je již výše zmíněná klíčová vlastnost pro numerickou stabilitu, tedy že násobení ortogonální maticí nemění normu.
Tvrzení 2.3:
Je-li Q \in \mathbb{R}^{m \times m} ortogonální matice, pak pro každý vektor x \in \mathbb{R}^m platí \|Qx\| = \|x\|. Neboli násobení ortogonální maticí nemění normu.
Důkaz.
Důkaz je opět přímočarým použitím vlastnosti (2.1) a vlastností maticového násobení a Euklidovy normy: \|Qx\|^2 = (Qx)^T Qx = x^T Q^T Qx = x^T x = \|x\|^2.
QR rozklad¶
Mejme matici A tu dokazeme rozlozit na:
Kde Q je ortogonalni matice a r je horni trojuhelnikova, Coz muzeme znazornit:
Po nasobeni na zbyde:
Výpočet QR Rozkladu pomocí Givensových rotací¶
Jedním z přístupů k QR dekompozici je použití Givensůvých rotací. Givensův rotace jsou specifické ortogonální transformace, které vynulují specifický prvek matice a zachovávají ostatní.
Definice Givensův rotace vypadá následovně. Pro dva reálná čísla a a b, Givensova rotace G_{(i,j)}, která vynuluje b má tvar:
kde
Když chceme vynulovat prvek a_{21}, použijeme Givensovu rotaci G_{(1,2)}. Po vynulování prvku a_{21} přejdeme na další prvek a_{31} a použijeme Givensovu rotaci G_{(1,3)}.
Díky Givensůvým rotacím můžeme transformovat danou matici A na horní trojúhelníkovou formu R. Tento proces lze přepsat jako A = Q^T R, kde Q^T je transpozice matice Q. V případě Givensových rotací Q^T je rovna součinu jednotlivých Givensových matic G_{(i)},
a tedy
Algoritmus¶
- Krok: Vynulování a_{21}
Matici A chceme přenásobit zleva maticí G_{(1)} tak, aby byl prvek a_{21} vynulován. Matici G_{(1)} definujeme takto:
Zde \alpha_{(1)} a \beta_{(1)} jsou určeny pomocí prvků, které chceme otočit:
- Krok: Vynulování a_{31}
Nyní máme matici A', která vypadá takto:
Chceme vynulovat prvek a'_{31}. Matici A' chceme přenásobit zleva maticí G_{(2)} tak, aby byl prvek a'_{31} vynulován. Matici G_{(2)} definujeme takto:
Zde \alpha_{(2)} a \beta_{(2)} jsou určeny pomocí prvků, které chceme otočit:
Nyní máme matici A'', která vypadá takto:
Tato matice má prvky a''_{21} a a''_{31} rovny nule atd.
Výpočet QR rozkladu pomocí Householderových reflexí¶
Budeme tedy hledat ortogonální matice (budeme je značit P), pro které platí
Pro nadrovinu musi platit:
Chceme udelat nasledujici:

Abychom dostali takovyto zrcadlovy obraz musime udelat: Z goniometrie jeste vime: Z toho plyne (nezapomenme ze ||u||=1): Coz muzeme dosadit: Vime tedy ze: .... dalsi postup je ve scriptech
QR algoritmus, Hessenbergova forma matice¶
QR algoritmus slouzi k najiti vlastnich cisel. Cele to stoji na tom ze podobne matice maji stejna vlastni cisla.
Nezapomenme ze pro ortogonalni matici Q plati Q^T=Q^{-1}
Mějme tedy čtvercovou matici A ∈ R^{n,n}, u které hledáme vlastní čísla. Muzeme rict ze matice A je podobna matici RQ protoze:
Algoritmus je následující:
- Vypočítejte QR rozklad matice A: A = QR.
- Vypočítejte novou matici A' = RQ.
Tyto kroky se opakují, dokud se matice A' neaproximuje k diagonální matici. Taková konvergence se dá ještě dost zrychlit prevedenim matice a na Hessenbergovu formu.
Hessenbergova forma matice¶
Matice A \in \mathbb{R}^{n \times n} je v Hessenbergově formě, pokud a_{ij}=0 pro všechny i>j+1. Matice A je navíc tridiagonální, jestliže pro 1 ≤ i, j, ≤ n platí : (i > j + 1 \text{ nebo } i < j − 1) ⇒ Ai,j = 0 Matice je triagonalni pokud matice A je symetricka, matice P je vzdy symetricka a take ortogonalni
Proc Hessenbergova forma je podobna matici A¶
Kdyz bychom chteli zformulovat poddobnou matici k matici A muzeme se kouknout na to jak vytvarime QR rozklad, kdyz pouzivame householderovy reflexe sestrojujeme: Kdyz bychom ale chteli zkusit vynasobit matici A i z prava narazime na to ze vytvorene nuly muzou zmizet. Problém je ten, že v prvním sloupci matice P_1AP_1 jsou pod diagonálou součiny typu:
Pouzijeme tedy matici o jednu mensi tedy: Z toho nam vyjde:
Pokud takhle budeme postupovat az budeme mit vynulovane cisla pod poddiagonalou a vytvorime tim Hessenbergovu formu matice mame tu matici podobnou.
Potom muzeme pouzit Givensovske rotacce n-1 krat a ziskame qr rozklad. Je to potom vypocetne velice rychle
Alogritmus¶
- Matici A^TA převedeme pomocí n−2 matic P_i provádějících Householderovy reflexe na podobnou matici B, která je tridiagonální.
- Na matici B_0 = B pak aplikujeme QR algoritmus.
- Najdeme QR rozklad B_0 = Q_0R_0, ten můžeme najít pomocí n − 1 Givensových rotací, které nulují n − 1 prvků pod diagonálou. Násobení maticí provádějících Givensovu rotaci vždy ovlivňuje pouze 6 prvků matice a je tedy výpočetně nenáročné.
- Dále pak konstruujeme posloupnost matic (B_i)_{i≥1} takto: B_i = R_{i−1}Q_{i−1} a její QR rozklad označíme B_i = Q_iR_i .