QRDecomposition

QRDecomposition[m]

数値行列 m についてQR分解を作成する.この結果はリスト{q,r}で,q はユニタリ行列,そして r は上三角行列となる.

詳細とオプション

  • もとの行列 mConjugateTranspose[q].r と同値である. »
  • 非正方行列に関しては,q は行直交行列である. »
  • 行列 r は,主対角より下のすべての要素がゼロとなる. »
  • TargetStructure->"Structured"の設定のとき,QRDecomposition[m]は行列{q,r}を構造化行列として返す.
  • QRDecomposition[m,Pivoting->True]は,リスト{q,r,p}を作成する.pm.pConjugateTranspose[q].r と等しくなるような置換行列である. »

例題

すべて開くすべて閉じる

  (3)

2×2行列のユニタリ(直交)行列 と上三角行列 への分解:

m=TemplateBox[{q}, ConjugateTranspose].r であることを確認する:

厳密値の3×2行列のQR分解を計算する:

TemplateBox[{q}, Transpose].r がもとの行列である:

近似値の2×3行列のQR分解を計算する:

TemplateBox[{q}, Transpose].r がもとの行列である:

スコープ  (11)

基本的な用法  (7)

機械精度行列のQR分解を求める:

結果をフォーマットする:

複素行列のQR分解:

QRDecompositionを厳密行列に使う:

任意精度行列のQR分解:

QRDecompositionを記号行列に使う:

大きい数値行列のQR分解は効率的に計算される:

非正方行列のQR分解:

特殊行列  (4)

疎な行列のQR分解を求める:

構造化行列のQR分解:

一貫した単位を持つQuantityArray構造化行列に使う:

行列は無次元である. 行列に単位がある:

IdentityMatrixのQR分解は2つの恒等行列からなっている:

HilbertMatrixのQR分解:

オプション  (4)

Pivoting  (1)

ピボッティングを含む機械演算でQR分解を計算する:

rの対角に沿った要素は,大きさが徐々に小さくなっている:

行列pは順列行列である:

QRDecompositionm.p==ConjugateTranspose[q].rを満足する:

TargetStructure  (3)

矩形実行列:

TargetStructure->"Dense"のとき,QRDecompositionの結果は2つの密な行列のリストになる:

TargetStructure->"Structured"のとき,QRDecompositionの結果はOrthogonalMatrixUpperTriangularMatrixを含むリストになる:

矩形実行列:

Pivoting->TrueおよびTargetStructure->"Structured"の設定のとき,QRDecompositionの結果は.OrthogonalMatrixUpperTriangularMatrixPermutationMatrixを含むリストになる:

矩形複素行列:

TargetStructure->"Dense"のとき,QRDecompositionの結果は2つの密な行列になる:

TargetStructure->"Structured"のとき,QRDecompositionの結果はUnitaryMatrixUpperTriangularMatrixを含むリストになる:

アプリケーション  (8)

QR分解の幾何学  (4)

次の行列 の列空間の直交基底を求め,その基底を使って のQR分解を求める:

の次元を計算する:

番目の列とし,を対応するグラム・シュミット(GramSchmidt)基底の 番目の要素として定義する:

を行が の行列とする:

を要素が 基底ベクトルに沿った の成分である行列とする:

であることを確認する:

これはQRDecompositionが与える結果に等しい:

次の行列 について,OrthogonalizeQRDecompositionを使って求まったQR分解を比較する:

Orthogonalize の列に適用した結果とする:

は等しいとする:

であることを確認する:

これはQRDecompositionが与える結果に等しい:

次の行列 について,OrthogonalizeQRDecompositionを使って求まったQR分解を比較する:

Orthogonalize の複素共役列に適用した結果とする:

は等しいとする:

であることを確認する:

これは,QRDecompositionが与える結果と符号まで等しい:

アプリケーションによっては, が正方(かつユニタリ)行列で が入力行列と同じ次元である,いわゆる完全QR分解を計算すると便利なことがある.次の行列 の完全QR分解を計算する:

線形独立の列は2列しかないので, はそれぞれ2行しか持たない:

NullSpaceを使って の列のスパンの外にあるベクトルを求め,完全集合を直交化する:

次の行列はユニタリ行列である:

行列を0で充填して と同じ形にする:

これもまた有効なQR分解であることを確認する:

最小二乗と曲線のフィット  (4)

次の行列 とベクトル について,QR分解を使ってTemplateBox[{{{m, ., x}, -, b}}, Norm]を最小にする を求める:

の分解を計算する:

m=TemplateBox[{q}, Transpose].r, TemplateBox[{m}, Transpose].m=TemplateBox[{r}, Transpose].r なので正規方程式 TemplateBox[{m}, Transpose].m.x=TemplateBox[{m}, Transpose].bTemplateBox[{r}, Transpose].r.x=TemplateBox[{r}, Transpose].q.b として再計算できる:

は( の列が線形独立であるために)可逆なので,解は x=TemplateBox[{r}, Inverse].q.b である:

LeastSquaresを使って結果を確認する:

次の行列 とベクトル について,QR分解を使って を解く:

TemplateBox[{m}, Transpose]のQR分解を計算すると, に線形独立の行があるので可逆な が与えられる:

最小二乗問題を解くかのように x=TemplateBox[{q}, Transpose].TemplateBox[{{(, TemplateBox[{r}, Transpose, SyntaxForm -> SuperscriptBox], )}}, Inverse].b とする:

の列がTemplateBox[{}, Reals]^3にスパンするので, は方程式の解でなくてはならない:

QRDecompositionを使ってデータに最もフィットする曲線が求められる.次のデータについて考える:

の座標をデータから抽出する:

TemplateBox[{{{m, ., {{, {a, ,, b}, }}}, -, y}}, Norm]を最小化することが曲線 をフィットすることになるように, が列 を持つとする:

の列は線形独立なので,線形最小二乗フィットの係数は TemplateBox[{r}, Inverse].q.y である:

Fitを使って係数を確認する:

最適合曲線をデータに沿ってプロットする:

次のデータに最もフィットする放物線を求める:

の座標をデータから抽出する:

TemplateBox[{{{m, ., {{, {a, ,, b, ,, c}, }}}, -, y}}, Norm]の最小化が へのフィットになるように. が列 を持つとする:

の列は線形独立なので,最小二乗フィットの係数は TemplateBox[{r}, Inverse].q.y である:

Fitを使って係数を確認する:

最適合曲線をデータとともにプロットする:

特性と関係  (10)

mは3×4行列である:

QR分解を計算する:

qの行は正規直交する:

rは上三角行列である:

mConjugateTranspose[q].r に等しい:

行列なら, 行列には 列, 行列には 列あることになる:

QRDecompositionMatrixRank[m]行を持つ「薄い」分解を計算する:

m が実数値を持つ可逆行列なら,そのQR分解の 行列は直交行列である:

m が可逆行列なら.そのQR分解の 行列はユニタリ行列である:

a 行列で MatrixRank[a]==n なら,そのQR分解の 行列はユニタリ行列である:

a 行列でMatrixRank[a]==m なら,そのQR分解の 行列は可逆行列である:

さらに,PseudoInverse[a]==Inverse[r].q でもある:

Orthogonalizeを使ってQR分解が計算できる:

近似行列は,通常は,QRDecompositionで求まったものとは異なる:

LeastSquaresQRDecompositionはどちらも最小二乗問題を解くために使うことができる:

TemplateBox[{m}, ConjugateTranspose].m のコレスキー(Cholesky)分解は QR分解と位相まで一致する:

CholeskyDecomposition[ConjugateTranspose[m].]m を計算する:

のQR分解を求める:

は各行の位相の選択を除いて と等しい:

Wolfram Research (1991), QRDecomposition, Wolfram言語関数, https://reference.wolfram.com/language/ref/QRDecomposition.html (2024年に更新).

テキスト

Wolfram Research (1991), QRDecomposition, Wolfram言語関数, https://reference.wolfram.com/language/ref/QRDecomposition.html (2024年に更新).

CMS

Wolfram Language. 1991. "QRDecomposition." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2024. https://reference.wolfram.com/language/ref/QRDecomposition.html.

APA

Wolfram Language. (1991). QRDecomposition. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/QRDecomposition.html

BibTeX

@misc{reference.wolfram_2024_qrdecomposition, author="Wolfram Research", title="{QRDecomposition}", year="2024", howpublished="\url{https://reference.wolfram.com/language/ref/QRDecomposition.html}", note=[Accessed: 17-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_qrdecomposition, organization={Wolfram Research}, title={QRDecomposition}, year={2024}, url={https://reference.wolfram.com/language/ref/QRDecomposition.html}, note=[Accessed: 17-November-2024 ]}