Mathematics | ![]() ![]() |
擬似逆行列
長方形行列が、逆行列または行列式をもたないことがあります。少なくとも、方程式AX = IXA = Iのどちらか少なくとも一つは解をもちません。逆行列に対する部分置換は、Moore-Penrose pseudoinverseにより与えられます。これは、関数pinv
で与えられます。
X = pinv(C) X = 0.1159 -0.0729 0.0171 -0.0534 0.1152 0.0418
Q = X*C Q = 1.0000 0.0000 0.0000 1.0000
P = C*X P = 0.8293 -0.1958 0.3213 -0.1958 0.7754 0.3685 0.3213 0.3685 0.3952
は、3行3列の単位行列ではありません。しかし、P
は対称で、P*C
はC
に等しく、X*P
はX
に等しいと言う意味で、その空間の一部で単位行列のように機能します。
A
がm > nのm行n列で、フルランクnの場合、つぎの3つのステートメントの結果は、同じ最小二乗解x
を理論的には計算します。しかし、バックスラッシュ演算が、より高速に処理されます。
x = A\b
x = pinv(A)*b
x = inv(A'*A)*A'*b
しかし、A
がフルランクでなければ、最小二乗問題に対する解はユニークでなくなります。つぎのノルム
norm(A*x -b)
を最小にする多くのベクトルx
があります。x = A\b
により計算される解は、基本解と言われます。これは、rをA
のランクとすると、高々r個の非ゼロの要素をもっています。x = pinv(A)*b
により計算される解は、最小ノルム解と言われます。この解は、norm(x)を最小にするものです。x = inv(A'*A)*A'*b
を使って解を計算しようとする試みは、A'*A
が特異なのでうまくいきません。
A = [ 1 2 3 4 5 6 7 8 9 10 11 12 ]
は、フルランクではありません。2番目の列は、1番目の列と3番目の列の平均になっています。
b = A(:,2)
が、2番目の列ならば、A*x = b
になる解は、x = [0 1 0]'
になります。しかし、このx
を計算するアプローチはありません。バックスラッシュ演算子は、
x = A\b Warning: Rank deficient, rank = 2. x = 0.5000 0 0.5000
この解は、2つのゼロでない要素をもっています。擬似逆行列のアプローチは、
y = pinv(A)*b y = 0.3333 0.3333 0.3333
ランクの欠落に対するワーニングはありません。しかし、norm(y) = 0.5774
は、norm(x) = 0.7071
よりも小さくなります。最終的に、
z = inv(A'*A)*A'*b
Warning: Matrix is singular to working precision. z = Inf Inf Inf
![]() | 概要 | LU, QR, コレスキ因子分解 | ![]() |