MATLAB、Python、Scilab、Julia比較ページはこちら
https://www.simulationroom999.com/blog/comparison-of-matlab-python-scilab/
はじめに
の、
MATLAB,Python,Scilab,Julia比較 第3章 その80【アフィン行列の合成④】
MATLAB,Python,Scilab,Julia比較 第3章 その81【アフィン行列の合成⑤】
MATLAB,Python,Scilab,Julia比較 第3章 その82【アフィン行列の合成⑥】
を書き直したもの。
アフィン変換のアフィン行列の合成の話。
アフィン逆変換であるがゆえに追加で
「行列の積の逆行列」と「逆行列の積」の関係性
ついて証明する必要がある。
追加で証明?
前回の行列の合成の証明でアフィン行列の合成はOKなのだが、
今回採用しているアルゴリズムはアフィン逆変換になっている。
よって、単純に合成すればOKかはまだ確定していない。
何が問題かと言うと、
渡してる行列がアフィン行列じゃなくて、アフィン逆行列になってる点。
アフィン行列を合成することを想定したアフィン逆変換
アフィン逆行列でも当然結合法則は成立する。
問題は、結合済み行列全体に対して逆行列をしているので、
行列単体で見た場合にどうなるかわからない。
試しに移動後に回転するアフィン逆変換の式を見てみよう。
\(
\begin{bmatrix}
x\\
y\\
1
\end{bmatrix}=
\Bigg(
\begin{bmatrix}
\cos(30^\circ) & -\sin(30^\circ) & 0\\
\sin(30^\circ) & \cos(30^\circ) & 0\\
0 & 0 & 1
\end{bmatrix}
\begin{bmatrix}
1 & 0 & 0.5\\
0 & 1 & 0\\
0 & 0 & 1
\end{bmatrix}
\Bigg)^{-1}
\begin{bmatrix}
x\prime\\
y\prime\\
1
\end{bmatrix}
\)
利用する側としては、移動アフィン行列と、回転アフィン行列は個別に管理したい。
というわけで、行列の積の逆行列についても確認が必要になる。
要は、二つの行列の積をまとめて逆行列にするパターンと、
個別に逆行列にした上で行列の積を実施するパターンの関係性になる。
普通に逆行列したものを並べればOKな気もするのだが、確証はない。
その点を事前に確認&証明しておく必要がある。
「行列の積の逆行列」と「逆行列の積」の関係性を証明?
結論としては、「行列の積の逆行列」と「逆行列の積」の関係性を証明すればOK。
先に答えを書いてしまうと以下が成立するはず。
\((AB)^{-1}=B^{-1}A^{-1}\)
答えは出てるので、
あとは証明するだけ。
(これがめんどいのだが・・・)
前提知識(逆行列の定義)
まずは、前提知識として逆行列の定義を確認しておく。
以下が逆行列の定義になる。
\(
AA^{-1}=A^{-1}A=I
\)
と言う感じで、正行列と逆行列の積に関しては順番関係なく、単位行列になるから、
結果と交換が成立する限定的なルールが発生する。
普通に代入する
そして、先ほどの以下が成立する場合、
\((AB)^{-1}=B^{-1}A^{-1}\)
これも成立するはず。
\(
\begin{eqnarray}
(AB)(AB)^{-1}=I\\
(AB)(B^{-1}A^{-1})=I\\
(AB)^{-1}(AB)=I\\
(B^{-1}A^{-1})(AB)=I\\
\end{eqnarray}
\)
逆行列の定義も踏まえると間違い無いはず。
これを展開して解いていって、本当に\(I\)になれば証明OKって算段になる。
\(
\begin{eqnarray}
(AB)(B^{-1}A^{-1})=A(BB^{-1}A^{-1}=AIA^{-1}=AA^{-1}=I\\
(B^{-1}A^{-1})(AB)=B(AA^{-1}B^{-1}=BIB^{-1}=BB^{-1}=I\\
\end{eqnarray}
\)
よって、
\(
\begin{eqnarray}
(AB)(B^{-1}A^{-1})=(B^{-1}A^{-1})(AB)=I\\
(AB)(AB)^{-1}=(AB)^{-1}(AB)=I\\
(AB)^{-1}=B^{-1}A^{-1}
\end{eqnarray}
\)
これで証明完了。
次のページへ
いままで証明してきたものを元にアフィン逆変換時のアフィン行列の扱いを確定させる。
コメント