いぬおさんのおもしろ数学実験室

おいしい紅茶でも飲みながら数学、物理、工学、プログラミング、そして読書を楽しみましょう

写真から立体を再現(1) 一般逆行列(疑似逆行列)とは何か

 そろそろ、複数枚の写真をPCに渡し、写っている立体を再現する実験をやってみたいと考えています。順番にその準備をブログでしてゆきます。

 まずは一般逆行列です。Aからを求めるのですが、方程式の本数が多過ぎたり、少な過ぎたりしても何とかを計算できます。実用では例えば観測の手間や費用など、いろんな事情で方程式が理想通り手に入らないことだってあるでしょう。そういうときでもそれなりのが求められるのです。

 まずは必要な知識をまとめておきましょう。∇fを次で定義します。

f:id:Inuosann:20200211113728p:plain

∇は「ナブラ」と読み、x、y、zの関数から3次元のベクトルを作る働きを持ちます(4次元でも5次元でも同様)。

f:id:Inuosann:20200211121257p:plain

このとき以下が成立します。なお、ベクトル内積を()、あるいはで表しています。

∇()= ……(1)
Aが対称行列のとき、

∇(,A)=2A ……(2)

(1)は

f:id:Inuosann:20200211113845p:plain

から、(2)は 

f:id:Inuosann:20200211131022p:plain
からすぐ分かります。また

 (A)=(,A' ) ……(3)

 も成立します。これは内積についての基本的な公式です。成分で考えれば分かります。なおA' はAの転置行列です。 

 さて、Ab ……① を解きましょう。ここで、Aはm×n行列(m>n)、rank(A) = r = n であるとしておきます。つまり、連立方程式と見たとき式の本数が変数の数より多く、Aの列は線形独立です。式が多すぎるのですから、厳密に①を満たすはありません。だから、次善の策としてなるべく①をよく満たす解を求めることにします。
J=(A,A) とおきましょう。これを最小にするが求められればよいですね。

f:id:Inuosann:20200211115159p:plain
ですから、
∇J=2A'A-2A'
これを0とおけば
2A'A-2A' 0
A'A=A'

f:id:Inuosann:20200211114221p:plain

これで が求まりました。式変形には(1)~(3)を使っています。
(Aはm×n行列なのでA'Aはn×n。ランクに関する公式rank(A) = rank(A'A)と、問題の仮定 rank(A) = n から rank(A'A) = n。よってA'Aは正則)

この

f:id:Inuosann:20200211114419p:plain

をAの一般逆行列(疑似逆行列)と言います。

また、n>m=rのときはは一意に決まりませんが、その中の||が最小のものを求めたりします。さっきと近い議論をして

f:id:Inuosann:20200211114526p:plain

が導けます。この

f:id:Inuosann:20200211114613p:plain

も一般逆行列です。状況によって形が変わるのです。