Rozkład QR

Rozkład QR – w algebrze liniowej rozkład macierzy A {\displaystyle A} do postaci iloczynu dwóch macierzy A = Q R , {\displaystyle A=QR,} gdzie Q {\displaystyle Q} jest macierzą ortogonalną ( Q T Q = I ) {\displaystyle (Q^{T}Q=I)} i R {\displaystyle R} jest macierzą trójkątną górną[1]. Na bazie rozkładu QR możliwa jest realizacja metody najmniejszych kwadratów[2] oraz metod rozwiązywania układów równań liniowych[1].

Metoda Householdera

Metoda Householdera pozwala znaleźć rozkład QR dowolnej macierzy prostokątnej m x n ( m n ) . {\displaystyle (m\geqslant n).}

Transformacja Householdera

Niech v R m {\displaystyle v\in R^{m}} i v 0 . {\displaystyle v\neq \mathbf {0} .} Wówczas transformacją Householdera nazywamy macierz postaci:

H = I W v v T , W = 2 v T v . {\displaystyle H=I-Wvv^{T},\qquad W={\frac {2}{v^{T}v}}.}

Macierz H jest macierzą symetryczną i ortogonalną (transformacja nie zmienia długości wektora) oraz ma taką własność, że dowolny wektor x wymiaru m jest odbiciem lustrzanym wektora Hx względem hiperpłaszczyzny (wymiaru m-1) prostopadłej do wektora v[3]. Łatwo sprawdzić, że tak jest ponieważ:

H 2 = ( I 2 v v T v T v ) 2 = I 4 v v T v T v + 4 ( v v T v T v ) 2 = I ( ( v v T ) ( v T v ) = ( v v T ) 2 ) {\displaystyle H^{2}=\left(I-{\frac {2vv^{T}}{v^{T}v}}\right)^{2}=I-{\frac {4vv^{T}}{v^{T}v}}+4\left({\frac {vv^{T}}{v^{T}v}}\right)^{2}=I\qquad ((vv^{T})(v^{T}v)=(vv^{T})^{2})}

oraz

H T = ( I 2 v v T v T v ) T = I ( 2 v v T v T v ) T = I 2 v v T v T v = H ( ( v v T ) T = ( v v T ) ) . {\displaystyle H^{T}=\left(I-{\frac {2vv^{T}}{v^{T}v}}\right)^{T}=I-\left({\frac {2vv^{T}}{v^{T}v}}\right)^{T}=I-{\frac {2vv^{T}}{v^{T}v}}=H\qquad ((vv^{T})^{T}=(vv^{T})).}

Z drugiej równości wynika symetria, z pierwszej ortogonalność, ponieważ H T H = H H = I . {\displaystyle H^{T}H=HH=I.} Zatem:

| H x | = ( H x ) T ( H x ) = x T ( H T H ) x = x T I x = | x | . {\displaystyle |Hx|={\sqrt {(Hx)^{T}(Hx)}}={\sqrt {x^{T}(H^{T}H)x}}={\sqrt {x^{T}Ix}}=|x|.}

Mnożąc dowolny wektor x R m , {\displaystyle x\in R^{m},} otrzymujemy:

H x = x 2 v v T x v T v = x + ( 2 v v T x v T v ) = x 2 r . {\displaystyle Hx=x-{\frac {2vv^{T}x}{v^{T}v}}=x+(-2{\frac {vv^{T}x}{v^{T}v}})=x-2r.}

Wiadomo, że r = ( w T x ) w {\displaystyle r=(w^{T}x)w} jest rzutem prostopadłym wektora x na kierunek w, przy czym wektor w musi być znormalizowany. Zatem w tym wypadku w = v / v T v {\displaystyle w=v/{\sqrt {v^{T}v}}} co po podstawieniu daje powyższą równość.

Rozkład QR

Transformacja Householdera może zostać wykorzystana w celu przeprowadzenia rozkładu QR macierzy A. Metoda polega na iteracyjnym szukaniu transformacji Householdera dla kolejnych wektorów pod diagonalą macierzy A. Rozważmy k-ty krok algorytmu (x oznacza wartość zależną od macierzy A):

H k 1 H k 2 H 1 A = ( x x x x x 0 x x x x 0 0 x x x 0 0 x x x 0 0 x x x ) {\displaystyle H_{k-1}H_{k-2}\dots H_{1}A={\begin{pmatrix}x&x&\cdots &x&x&x\\0&x&\cdots &x&x&x\\\cdots &\cdots &\cdots &\cdots &\cdots &\cdots \\0&0&\cdots &{\boldsymbol {x}}&x&x\\0&0&\cdots &{\boldsymbol {x}}&x&x\\0&0&\cdots &{\boldsymbol {x}}&x&x\end{pmatrix}}}

W kroku k-tym rozważamy wektor stanowiący część macierzy od k-tego elementu diagonali w dół. Szukamy takiej macierzy H k R 3 × 3 {\displaystyle H_{k}'\in R^{3\times 3}} aby spełniona była równość:

H k ( x x x ) = ( x 0 0 ) {\displaystyle H_{k}'{\begin{pmatrix}{\boldsymbol {x}}\\{\boldsymbol {x}}\\{\boldsymbol {x}}\end{pmatrix}}={\begin{pmatrix}x\\0\\0\end{pmatrix}}}

Macierz H k {\displaystyle H_{k}'} jest macierzą Householdera. Mając H k {\displaystyle H_{k}'} możemy uzyskać macierz H k R m × m : {\displaystyle H_{k}\in R^{m\times m}{:}}

H k = ( I k 1 0 0 H k ) {\displaystyle H_{k}={\begin{pmatrix}I_{k-1}&0\\0&H_{k}'\end{pmatrix}}}

W ten sposób zerujemy kolejne wektory spod diagonali do momentu aż po min ( m 1 , n ) {\displaystyle \min(m-1,n)} krokach otrzymujemy równość:

H m i n ( m 1 , n ) H 1 A = R , {\displaystyle H_{min(m-1,n)}\dots H_{1}A=R,} gdzie R jest szukaną macierzą trójkątną górną.

Macierz Q = H 1 H 2 H m i n ( m 1 , n ) {\displaystyle Q=H_{1}H_{2}\dots H_{min(m-1,n)}} [4].

Przykład

Znajdźmy rozkład QR macierzy A:

A = ( 12 51 4 6 167 68 4 24 41 ) {\displaystyle A={\begin{pmatrix}12&-51&4\\6&167&-68\\-4&24&-41\end{pmatrix}}}

W pierwszym kroku szukamy takiej macierzy H 1 , {\displaystyle H_{1},} że H 1 a 1 = | a 1 | e 1 , {\displaystyle H_{1}a_{1}=|a_{1}|e_{1},} gdzie a 1 = ( 12 , 6 , 4 ) T {\displaystyle a_{1}={\begin{pmatrix}12,6,-4\end{pmatrix}}^{T}} jest wektorem z pierwszej kolumny macierzy A, natomiast | a 1 | e 1 = ( 14 , 0 , 0 ) T {\displaystyle |a_{1}|e_{1}={\begin{pmatrix}14,0,0\end{pmatrix}}^{T}} wektorem do którego przekształcamy ortogonalnie wektor a 1 . {\displaystyle a_{1}.} Wektor | a 1 | e 1 {\displaystyle |a_{1}|e_{1}} jest jednoznacznie określony poprzez długość i zerowe wartości pozostałych współrzędnych (zawsze istnieje taki obrót wektora a 1 {\displaystyle a_{1}} że te współrzędne będą zerowe).

Znajdujemy dowolny wektor prostopadły do hiperpłaszczyzny względem której następuje odbicie wektora a 1 : {\displaystyle a_{1}{:}}

v 1 = a 1 | a 1 | e 1 = ( 2 , 6 , 4 ) T . {\displaystyle v_{1}=a_{1}-|a_{1}|e_{1}=(-2,6,-4)^{T}.}

Obliczamy z definicji macierz Householdera:

H 1 = I 2 v 1 v 1 T v 1 T v 1 = I 1 28 ( 4 12 8 12 36 24 8 24 16 ) = ( 6 7 3 7 2 7 3 7 2 7 6 7 2 7 6 7 3 7 ) {\displaystyle H_{1}=I-{\frac {2v_{1}v_{1}^{T}}{v_{1}^{T}v_{1}}}=I-{\frac {1}{28}}{\begin{pmatrix}4&-12&8\\-12&36&-24\\8&-24&16\end{pmatrix}}={\begin{pmatrix}{\frac {6}{7}}&{\frac {3}{7}}&-{\frac {2}{7}}\\{\frac {3}{7}}&-{\frac {2}{7}}&{\frac {6}{7}}\\-{\frac {2}{7}}&{\frac {6}{7}}&{\frac {3}{7}}\end{pmatrix}}}

Zatem otrzymujemy:

H 1 A = ( 14 21 14 0 49 14 0 168 77 ) {\displaystyle H_{1}A={\begin{pmatrix}14&21&-14\\0&-49&-14\\0&168&-77\end{pmatrix}}}

Teraz przechodzimy do drugiej iteracji algorytmu, a więc rozważamy podmacierz o wymiarze 2 × 2 powstałą poprzez usunięcie pierwszego wiersza i pierwszej kolumny. W tym wypadku a 2 = ( 49 , 168 ) T , {\displaystyle a_{2}={\begin{pmatrix}-49,168\end{pmatrix}}^{T},} czyli | a 2 | e 2 = ( 175 , 0 ) T {\displaystyle |a_{2}|e_{2}={\begin{pmatrix}175,0\end{pmatrix}}^{T}} i v 2 = ( 224 , 168 ) T . {\displaystyle v_{2}={\begin{pmatrix}-224,168\end{pmatrix}}^{T}.}

H 2 = I 2 v 2 v 2 T v 2 T v 2 = I 1 39200 ( 50176 37632 37632 28224 ) = ( 7 25 24 25 24 25 7 25 ) {\displaystyle H_{2}'=I-{\frac {2v_{2}v_{2}^{T}}{v_{2}^{T}v_{2}}}=I-{\frac {1}{39200}}{\begin{pmatrix}50176&-37632\\-37632&28224\end{pmatrix}}={\begin{pmatrix}-{\frac {7}{25}}&{\frac {24}{25}}\\{\frac {24}{25}}&{\frac {7}{25}}\end{pmatrix}}}
H 2 = ( 1 0 0 0 7 25 24 25 0 24 25 7 25 ) {\displaystyle H_{2}={\begin{pmatrix}1&0&0\\0&-{\frac {7}{25}}&{\frac {24}{25}}\\0&{\frac {24}{25}}&{\frac {7}{25}}\end{pmatrix}}}

Zatem otrzymujemy:

R = H 2 H 1 A = ( 14 21 14 0 175 70 0 0 35 ) {\displaystyle R=H_{2}H_{1}A={\begin{pmatrix}14&21&-14\\0&175&-70\\0&0&-35\end{pmatrix}}}
Q = H 1 H 2 = ( 6 7 69 175 58 175 3 7 158 175 6 175 2 7 6 35 33 35 ) {\displaystyle Q=H_{1}H_{2}={\begin{pmatrix}{\frac {6}{7}}&-{\frac {69}{175}}&{\frac {58}{175}}\\{\frac {3}{7}}&{\frac {158}{175}}&-{\frac {6}{175}}\\-{\frac {2}{7}}&{\frac {6}{35}}&{\frac {33}{35}}\end{pmatrix}}}

Można sprawdzić, że macierz Q jest ortogonalna ( Q T Q = I ) , {\displaystyle (Q^{T}Q=I),} R jest macierzą trójkątną górną oraz A = QR. Zatem znaleźliśmy rozkład QR macierzy A.

Zobacz też

Przypisy

Bibliografia

  • William H. Press, Brian P. Flannery, Saul A. Teukolsky, William T. Vetterling: Numerical Recipes in C: The Art of Scientific Computing. Cambridge University Press, 1992. ISBN 978-0-521-43108-8.
  • Gene H. Golub, Charles F. Van Loan: Matrix Computations. Johns Hopkins University Press, 2012. ISBN 978-1-4214-0794-4.