メカトロニックなカメ

メカトロニクス技術者になりたいカメです

下三角行列をQR分解したい

モチベーション

三角行列は通常の正方行列と比べ、要素数が\(\frac{n(n+1)}{2}\)(\(n\):行列のサイズ)と少ないため扱いやすい。

それなら通常は数値的に解くことの多いQR分解を、解析的に解いた場合にきれいに解くことができるかも

\(2\times 2\)下三角行列の場合

まずは、最も簡単な場合から解いていく。\(2\times 2\)の下三角行列の各要素を次式のように定義する。

\begin{align} \left[\begin{array}{cc}l_{11}&0\\l_{21}&l_{22}\end{array}\right]\end{align}

QR分解の方法としては、「グラム・シュミット法」「ハウスホルダー変換」「ギブンス変換」があるが、解析的に解くにはギブンス変換が良さそう。ギブンス変換はQR分解したい行列を左から回転行列をかけることで行う方法である。

まずは次の角度を求める。

\begin{align} \theta_{21}&=\tan^{-1}\left(\frac{-l_{21}}{l_{11}}\right)\\\sin\theta_{21}&=-\frac{l_{21}}{\alpha_{21}}\\\cos\theta_{21}&=\frac{l_{11}}{\alpha_{21}}\\\alpha_{21}&=\sqrt{l_{11}^2+l_{21}^2}\end{align}

次のように行列を演算する。なお\(\sin\theta\)を\(s\theta\)、\(\cos\theta\)を\(c\theta\)と表記する。

\begin{align} \left[\begin{array}{cc}c\theta_{21}&-s\theta_{21}\\s\theta_{21}&c\theta_{21}\end{array}\right] \left[\begin{array}{cc}l_{11}&0\\l_{21}&l_{22}\end{array}\right]=\left[\begin{array}{cc}\alpha_{21}&\frac{l_{21}l_{22}}{\alpha_{21}}\\0&\frac{l_{11}l_{22}}{\alpha_{21}}\end{array}\right] \end{align}

以上のように\(2\times 2\)下三角行列のQR分解が得られた。

\(3\times 3\)下三角行列の場合

\(3\times 3\)の下三角行列の各要素を次式のように定義する。

\begin{align} \left[\begin{array}{ccc}l_{11}&0&0\\l_{21}&l_{22}&0\\l_{31}&l_{32}&l_{33}\end{array}\right]\end{align}

まずは先ほどと同様の手順で、左上\(2\times 2\)の下三角行列のQR分解を求める。

\begin{align} \theta_{21}&=\tan^{-1}\left(\frac{-l_{21}}{l_{11}}\right)\\s\theta_{21}&=-\frac{l_{21}}{\alpha_{21}}\\c\theta_{21}&=\frac{l_{11}}{\alpha_{21}}\\\alpha_{21}&=\sqrt{l_{11}^2+l_{21}^2}\end{align}

次のように行列を演算する。

\begin{align} \left[\begin{array}{ccc}c\theta_{21}&-s\theta_{21}&0\\s\theta_{21}&c\theta_{21}&0\\0&0&1\end{array}\right] \left[\begin{array}{ccc}l_{11}&0&0\\l_{21}&l_{22}&0\\l_{31}&l_{32}&l_{33}\end{array}\right]=\left[\begin{array}{ccc}\alpha_{21}&\frac{l_{21}l_{22}}{\alpha_{21}}&0\\0&\frac{l_{11}l_{22}}{\alpha_{21}}&0\\l_{31}&l_{32}&l_{33}\end{array}\right] \end{align}

次に(3,1)要素をゼロにする。ここで(3,2)要素をゼロにしようとすると、(2,1)要素が非ゼロになってしまう。

まずは次の角度を求める。

\begin{align} \theta_{31}&=\tan^{-1}\left(\frac{-l_{31}}{\alpha_{21}}\right)\\s\theta_{31}&=-\frac{l_{31}}{\alpha_{31}}\\c\theta_{31}&=\frac{\alpha_{21}}{\alpha_{31}}\\\alpha_{31}&=\sqrt{\alpha_{21}^2+l_{31}^2}=\sqrt{l_{11}^2+l_{21}^2+l_{31}^2}\end{align}

次のように行列を演算する。

\begin{align} \left[\begin{array}{ccc}c\theta_{31}&0&-s\theta_{31}\\0&1&0\\s\theta_{31}&0&c\theta_{31}\end{array}\right] \left[\begin{array}{ccc}\alpha_{21}&\frac{l_{21}l_{22}}{\alpha_{21}}&0\\0&\frac{l_{11}l_{22}}{\alpha_{21}}&0\\l_{31}&l_{32}&l_{33}\end{array}\right]=\left[\begin{array}{ccc}\alpha_{31}&\frac{l_{21}l_{22}+l_{31}l_{32}}{\alpha_{31}}&\frac{l_{31}l_{33}}{\alpha_{31}}\\0&\frac{l_{11}l_{22}}{\alpha_{21}}&0\\0&\frac{\alpha_{21}^2l_{32}-l_{21}l_{31}l_{22}}{\alpha_{21}\alpha_{31}}&\frac{\alpha_{21}l_{33}}{\alpha_{31}}\end{array}\right] \end{align}

一方、回転行列の積は次式のようになる。

\begin{align} \left[\begin{array}{ccc}c\theta_{31}&0&-s\theta_{31}\\0&1&0\\s\theta_{31}&0&c\theta_{31}\end{array}\right] \left[\begin{array}{ccc}c\theta_{21}&-s\theta_{21}&0\\s\theta_{21}&c\theta_{21}&0\\0&0&1\end{array}\right]=\left[\begin{array}{ccc}c\theta_{21}c\theta_{31}&-s\theta_{21}c\theta_{31}&-s\theta_{31}\\s\theta_{21}&c\theta_{21}&0\\c\theta_{21}s\theta_{31}&-s\theta_{21}s\theta_{31}&c\theta_{31}\end{array}\right]\end{align}

この時点で大分ややこしい…

最後に、(3,2)要素をゼロにするために次の角度を求める。

\begin{align} \theta_{32}&=\tan^{-1}\left(\frac{l_{21}l_{31}l_{22}-\alpha_{21}^2l_{32}}{\alpha_{31}l_{11}l_{22}}\right)\\s\theta_{31}&=\frac{l_{21}l_{31}l_{22}-\alpha_{21}^2l_{32}}{\alpha_{32}}\\c\theta_{31}&=\frac{\alpha_{31}l_{11}l_{22}}{\alpha_{32}}\\\alpha_{32}&=\sqrt{\alpha_{31}^2l_{11}^2l_{22}^2+\left(l_{21}l_{31}l_{22}-\alpha_{21}^2l_{32}\right)^2}\end{align}

次のように行列を演算する。

\begin{align} \left[\begin{array}{ccc}1&0&0\\0&c\theta_{32}&-s\theta_{32}\\0&s\theta_{32}&c\theta_{32}\end{array}\right] \left[\begin{array}{ccc}\alpha_{31}&\frac{l_{21}l_{22}+l_{31}l_{32}}{\alpha_{31}}&\frac{l_{31}l_{33}}{\alpha_{31}}\\0&\frac{l_{11}l_{22}}{\alpha_{21}}&0\\0&\frac{\alpha_{21}^2l_{32}-l_{21}l_{31}l_{22}}{\alpha_{21}\alpha_{31}}&\frac{\alpha_{21}l_{33}}{\alpha_{31}}\end{array}\right]=\left[\begin{array}{ccc}\alpha_{31}&\frac{l_{21}l_{22}+l_{31}l_{32}}{\alpha_{31}}&\frac{l_{31}l_{33}}{\alpha_{31}}\\0&\frac{\alpha_{32}}{\alpha_{21}\alpha_{31}}&\frac{\alpha_{21}l_{33}\left(\alpha_{21}^2l_{32}-l_{21}l_{31}l_{22}\right)}{\alpha_{31}\alpha_{32}}\\0&0&\frac{\alpha_{21}l_{11}l_{22}l_{33}}{\alpha_{32}}\end{array}\right] \end{align}

一方、回転行列の積は次式のようになる。

\begin{align} \left[\begin{array}{ccc}1&0&0\\0&c\theta_{32}&-s\theta_{32}\\0&s\theta_{32}&c\theta_{32}\end{array}\right]\left[\begin{array}{ccc}c\theta_{21}c\theta_{31}&-s\theta_{21}c\theta_{31}&-s\theta_{31}\\s\theta_{21}&c\theta_{21}&0\\c\theta_{21}s\theta_{31}&-s\theta_{21}s\theta_{31}&c\theta_{31}\end{array}\right]\\=\left[\begin{array}{ccc}c\theta_{21}c\theta_{31}&-s\theta_{21}c\theta_{31}&-s\theta_{31}\\s\theta_{21}c\theta_{32}-c\theta_{21}s\theta_{31}s\theta_{32}&c\theta_{21}c\theta_{32}+s\theta_{21}s\theta_{31}s\theta_{32}&-c\theta_{31}s\theta_{32}\\s\theta_{21}s\theta_{32}+c\theta_{21}s\theta_{31}c\theta_{32}&c\theta_{21}s\theta_{32}-s\theta_{21}s\theta_{31}c\theta_{32}&c\theta_{31}c\theta_{32}\end{array}\right]\end{align}

ちょっともうきついかも…

\(4\times 4\)下三角行列の場合

\(4\times 4\)の下三角行列の各要素を次式のように定義する。

\begin{align} \left[\begin{array}{cccc}l_{11}&0&0&0\\l_{21}&l_{22}&0&0\\l_{31}&l_{32}&l_{33}&0\\l_{41}&l_{42}&l_{43}&l_{44}\end{array}\right]\end{align}

途中までは、\(3\times 3\)の場合と同様の手順で下記のように得られる。

\begin{align}\left[\begin{array}{ccc}c\theta_{21}c\theta_{31}&-s\theta_{21}c\theta_{31}&-s\theta_{31}&0\\s\theta_{21}&c\theta_{21}&0&0\\c\theta_{21}s\theta_{31}&-s\theta_{21}s\theta_{31}&c\theta_{31}&0\\0&0&0&1\end{array}\right]\left[\begin{array}{cccc}l_{11}&0&0&0\\l_{21}&l_{22}&0&0\\l_{31}&l_{32}&l_{33}&0\\l_{41}&l_{42}&l_{43}&l_{44}\end{array}\right]\\=\left[\begin{array}{ccc}\alpha_{31}&\frac{l_{21}l_{22}+l_{31}l_{32}}{\alpha_{31}}&\frac{l_{31}l_{33}}{\alpha_{31}}&0\\0&\frac{l_{11}l_{22}}{\alpha_{21}}&0&0\\0&\frac{\alpha_{21}^2l_{32}-l_{21}l_{31}l_{22}}{\alpha_{21}\alpha_{31}}&\frac{\alpha_{21}l_{33}}{\alpha_{31}}&0\\l_{41}&l_{42}&l_{43}&l_{44}\end{array}\right] \end{align}

次に(4,1)要素をゼロにする。

\begin{align} \theta_{41}&=\tan^{-1}\left(\frac{-l_{41}}{\alpha_{31}}\right)\\s\theta_{41}&=-\frac{l_{41}}{\alpha_{41}}\\c\theta_{41}&=\frac{\alpha_{31}}{\alpha_{41}}\\\alpha_{41}&=\sqrt{\alpha_{31}^2+l_{41}^2}=\sqrt{l_{11}^2+l_{21}^2+l_{31}^2+l_{41}^2}\end{align}

次のように行列を演算する。

\begin{align} \left[\begin{array}{cccc}c\theta_{41}&0&0&-s\theta_{41}\\0&1&0&0\\0&0&1&0\\s\theta_{41}&0&0&c\theta_{31}\end{array}\right] \left[\begin{array}{ccc}\alpha_{31}&\frac{l_{21}l_{22}+l_{31}l_{32}}{\alpha_{31}}&\frac{l_{31}l_{33}}{\alpha_{31}}&0\\0&\frac{l_{11}l_{22}}{\alpha_{21}}&0&0\\0&\frac{\alpha_{21}^2l_{32}-l_{21}l_{31}l_{22}}{\alpha_{21}\alpha_{31}}&\frac{\alpha_{21}l_{33}}{\alpha_{31}}&0\\l_{41}&l_{42}&l_{43}&l_{44}\end{array}\right]\\=\left[\begin{array}{ccc}\alpha_{41}&\frac{l_{21}l_{22}+l_{31}l_{32}+l_{41}l_{42}}{\alpha_{41}}&\frac{l_{31}l_{33}+l_{41}l_{43}}{\alpha_{41}}&\frac{l_{41}l_{44}}{\alpha_{41}}\\0&\frac{l_{11}l_{22}}{\alpha_{21}}&0&0\\0&\frac{\alpha_{21}^2l_{32}-l_{21}l_{31}l_{22}}{\alpha_{21}\alpha_{31}}&\frac{\alpha_{21}l_{33}}{\alpha_{31}}&0\\0&\frac{\alpha_{31}^2l_{42}-l_{41}\left(l_{21}l_{22}+l_{31}l_{32}\right)}{\alpha_{31}\alpha_{41}}&\frac{\alpha_{31}^2l_{43}-l_{31}l_{41}l_{33}}{\alpha_{31}\alpha_{41}}&\frac{\alpha_{31}l_{44}}{\alpha_{41}}\end{array}\right]\end{align}

ちょっとこれ以上解析的に解くのはきつい。ただ、第1行はきれいになるので、その部分の計算だけは簡単に計算できそう。

 

やはりQR分解は数値的に解くのが良さそうです。