MCPで接続 →

計算を入力してください

[
     
     
     
]

公式

広告

結果

QR分解は、行列 A を Q * R の積に分解します。ここで Q は直交行列、R は上三角行列です。

入力行列(A):

1 2 3
4 5 6
7 8 9

Q 行列:

-0.1231 0.9045 -0.4082
-0.4924 0.3015 0.8165
-0.8616 -0.3015 -0.4082

R 行列:

-8.124 -9.6011 -11.0782
0 0.9045 1.8091
0 0 0

QR分解とは?

QR分解(QR factorization、QR decomposition とも呼ばれます)は、行列 A を2つの行列の積 A = QR として表す、線形代数の基本的な手法です。ここで Q は直交行列(各列が互いに直交する単位ベクトルで、\(\mathbf{Q}^{\mathsf{T}}\mathbf{Q} = \mathbf{I}\) が成り立つ)、R は上三角行列です。この分解は数値計算の分野で世界共通に用いられており、国や慣習を問わず、あらゆる実行列に適用できます。

$$\mathbf{A} = \mathbf{Q}\,\mathbf{R}, \quad \mathbf{Q}^{\mathsf{T}}\mathbf{Q} = \mathbf{I},\ \ \mathbf{R}\ \text{upper triangular}$$

QR分解は、連立一次方程式を解く、最小二乗法による回帰直線を求める、QRアルゴリズムによって固有値を計算する、といった場面で幅広く使われています。行列を直接逆行列に変換する方法よりも数値的に安定しているため、多くの科学技術計算ソフトウェアに採用されています。

行列Aを直交行列Qと上三角行列Rに分解
QR分解は行列Aを直交行列Qと上三角行列Rに分解します。

この計算機の使い方

行列の入力はとてもシンプルです。

  • 1つの行に並ぶ値はカンマで区切ります。
  • 各行はパイプ記号( | )で区切ります。
  • たとえば、行が (1, 2) と (3, 4) の行列は 1,2|3,4 と入力します。

入力して実行すると、直交行列 Q と上三角行列 R が表示されます。これらを掛け合わせれば、元の行列が再現されることを確認できます。

計算式の解説

最も代表的な手法がグラム・シュミットの正規直交化法です。行列 A の列ベクトル a₁, a₂, … に対して、次の手順で正規直交ベクトルの組を構成します。

  • 最初の列ベクトルを正規化して q₁ を得ます。
  • それ以降の各列について、すでに求めた q ベクトルへの射影を引き、残った成分を正規化します。
  • R の各成分は内積 \(r_{ij} = q_i \cdot a_j\) で与えられます。前の段階で求めた q ベクトルは後の列に依存しないため、R は上三角行列になります。
広告
ベクトルを直交軸に変換するグラム・シュミットの直交化
グラム・シュミット法は行列の列を正規直交ベクトルに変換し、それがQの列になります。

計算例

A = 1,1|0,1|1,0(3×2 行列)を考えてみましょう。最初の列を正規化すると \(q_1 = (0.707,\ 0,\ 0.707)\) になります。2列目から q₁ への射影を引いて正規化すると q₂ が得られます。こうして得られる Q は、各列が長さ1で互いに直交する直交行列となり、R には射影の係数が入ります。Q × R を計算すると元の A が復元され、分解が正しいことを確認できます。

よくある質問

行列は正方行列でなければなりませんか? いいえ。QR分解は \(m \ge n\) を満たす任意の m×n 行列に対して使えます。だからこそ、未知数より方程式が多い最小二乗法の問題で非常に役立つのです。

QR分解は一意に定まりますか? R の対角成分の符号を除いて一意に定まります。慣例として、R の対角成分を正にすることで、答えを1つに固定します。

なぜ逆行列ではなくQR分解を使うのですか? QR分解は数値的により安定しており、逆行列を直接計算する際に生じる丸め誤差を避けられます。そのため、より信頼できる結果が得られます。

最終更新: