QR分解計算機
2行2列の行列を直交行列Qと上三角行列Rに分解します。
行列のQR分解
四つの行列成分を行順に入力し、グラム・シュミット法による分解を計算します。
QR分解について
QR分解は、行列AをQとRの積に分解する方法です。Qの列は正規直交しており、各列の長さは一で、異なる列同士は垂直です。Rは上三角行列なので、主対角線より下の成分はすべてゼロになります。フルランクの正方行列では、表示されたQとRを掛け合わせると、小数の丸めによるわずかな差を除き、元の行列を再現できます。この計算機は実数の2行2列行列を対象にしています。
計算には、Aの列に対する古典的なグラム・シュミット法を使います。まず第一列のユークリッド長を求めます。その列を長さで割るとQの最初の単位ベクトルが得られ、長さ自体はRの最初の対角成分になります。次に第二列を最初の単位ベクトルへ射影します。その射影を引くと垂直なベクトルが残り、これを正規化してQの第二列を作ります。射影係数と二番目のベクトルの長さで上三角行列Rが完成します。
QR分解は数値線形代数の中心的な手法です。未知数より方程式の数が多い過剰決定系の最小二乗近似を支え、固有値を求めるアルゴリズムにも使われます。直交変換は長さを保存し、直接的な操作ほど丸め誤差を増幅しにくいため、数値計算に適しています。このページでは各手順を確認しやすい二次元に絞っていますが、列の直交化という考え方は、より大きな長方形行列にも拡張できます。
二つの単位ベクトルを得るには、入力する列が線形独立である必要があります。第一列がゼロなら正規化できず、第二列が第一列の定数倍なら射影を引いた後に垂直方向が残りません。このような行列はランク落ちしており、ここで使う完全なQR形式を持ちません。また、QR分解には符号の違いがあり得ます。Qの一列とRの対応する行を同時に符号反転しても積は変わりません。この計算機ではRの対角成分を非負の長さとし、結果を比較する際に一貫した規約を用いています。
QR分解の例
| 行列A | 分解した行列 | ポイント |
|---|---|---|
| [1, 0] [0, 1] | Q = 単位行列、R = 単位行列 | 列はすでに正規直交しています |
| [3, 0] [4, 5] | Q = [0.6, -0.8] [0.8, 0.6], R = [5, 4] [0, 3] | グラム・シュミット法で長さと方向を分離します |
| [1, 1] [1, -1] | Q はおよそ [0.707107, 0.707107] [0.707107, -0.707107] | 入力列は垂直ですが、正規化されていません |
QR分解の計算方法
- 表示された行と列の位置に、行列Aの四つの成分を入力します。
- 二つの列がどちらもゼロではなく、互いの定数倍でないことを確認します。
- 「QR分解を計算」を選び、グラム・シュミット法を適用します。
- QとRを行ごとに読み取り、掛け合わせて分解を確認します。
よくある質問
QとRは何を表しますか?
Qには方向を表す正規直交列ベクトルが入ります。Rは上三角行列で、元の行列を再現するための長さと射影係数を記録します。
列が独立である必要があるのはなぜですか?
グラム・シュミット法では、Qの新しい列ごとにゼロでない垂直な残差が必要です。従属する列では残差がゼロになるため、この方法で二列の完全な正規直交基底を作れません。
QR分解は一意ですか?
QとRの対応する符号は積で相殺されるため、符号の選び方によって等価な分解が得られます。Rの対角成分を非負とするのが、一意性を定める一般的な規約です。
結果はどう検証できますか?
QとRを掛け、各成分を元の行列Aと比較します。また、Qの転置とQの積が単位行列になることも確認できます。
QR分解は何に使いますか?
最小二乗問題、固有値アルゴリズム、安定した方程式の求解などに広く使われます。直交行列は、これらの計算中の数値誤差を抑えるのに役立ちます。