MATLAB,Python,Scilab,Julia比較 第3章 その82【アフィン行列の合成⑥】

MATLAB,Python,Scilab,Julia比較 第3章 その82【アフィン行列の合成⑥】 数値計算
MATLAB,Python,Scilab,Julia比較 第3章 その82【アフィン行列の合成⑥】

バックナンバーはこちら。
https://www.simulationroom999.com/blog/compare-matlabpythonscilabjulia3-backnumber/

はじめに

アフィン変換のアフィン行列は合成できる。
いままで証明してきたものを組み合わせる。

登場人物

博識フクロウのフクさん

指差しフクロウ

イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1

エンジニア歴8年の太郎くん

技術者太郎

イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1

いままで証明してきたもの。

太郎くん
太郎くん

なんか、証明ばっかりしてたから、
なにをどうしたか忘れかけてるな・・・。

フクさん
フクさん

ならば、ここで一度再掲しておこう。

フクさん
フクさん

まずは、やりたいアフィン変換

\(
\begin{bmatrix}
x\prime\\
y\prime\\
1
\end{bmatrix}=
\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}
\begin{bmatrix}
x\\
y\\
1
\end{bmatrix}
\)

フクさん
フクさん

そして、それを効率的に実現するには、
先に行列の合成が出来ている方が望ましい。
よって、結合法則の証明結果。

\((AB)C\)の任意成分(i,l)

\(
\begin{eqnarray}
&&\displaystyle\sum_{k=1}^n\bigg(\sum_{j=1}^m a_{ij}b_{jk}\bigg)c_{kl}\\
&=&\sum_{j=1}^m \sum_{k=1}^n a_{ij}b_{jk} c_{kl}
\end{eqnarray}
\)

\(A(BC)\)の任意成分(i,l)

\(
\begin{eqnarray}
&&\displaystyle\sum_{j=1}^n a_{ij}\bigg(\sum_{k=1}^n b_{jk}c_{kl}\bigg)\\
&=&\sum_{j=1}^m \sum_{k=1}^n a_{ij}b_{jk} c_{kl}
\end{eqnarray}
\)

フクさん
フクさん

これでアフィン行列の結合が可能なことは分かったが、
アフィン逆変換だと、逆行列が絡む都合、少し事情が変わる。

移動後に回転するアフィン逆変換の式

\(
\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}
\)

フクさん
フクさん

そこで、「行列の積の逆行列」と「逆行列の積」の関係性について証明。

\(
\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}
\)

太郎くん
太郎くん

もう数式の嵐だな・・・。

アフィン逆変換の合成且つ各逆行列の関係

フクさん
フクさん

それでは、これらを利用して、
アフィン逆変換の合成且つ各逆行列の関係を見てみよう。

移動アフィン

\(
\begin{bmatrix}
x\\
y\\
1
\end{bmatrix}=
\begin{bmatrix}
1 & 0 & 0.5\\
0 & 1 & 0\\
0 & 0 &1
\end{bmatrix}^{-1}
\begin{bmatrix}
x\prime\\
y\prime\\
1
\end{bmatrix}
\)

回転アフィン

\(
\begin{bmatrix}
x\\
y\\
1
\end{bmatrix}=
\begin{bmatrix}
\cos(30^\circ) & -\sin(30^\circ) & 0\\
\sin(30^\circ) & \cos(30^\circ) & 0\\
0 & 0 &1
\end{bmatrix}^{-1}
\begin{bmatrix}
x\prime\\
y\prime\\
1
\end{bmatrix}
\)

移動、回転の合成アフィン

\(
\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}
\)

フクさん
フクさん

ここに「行列の積の逆行列」と「逆行列の積」の関係性を適用する。

「行列の積の逆行列」と「逆行列の積」の関係性

\(
(AB)^{-1}=B^{-1}A^{-1}
\)

\(
\begin{bmatrix}
x\\
y\\
1
\end{bmatrix}=
\begin{bmatrix}
1 & 0 & 0.5\\
0 & 1 & 0\\
0 & 0 &1
\end{bmatrix}^{-1}
\begin{bmatrix}
\cos(30^\circ) & -\sin(30^\circ) & 0\\
\sin(30^\circ) & \cos(30^\circ) & 0\\
0 & 0 &1
\end{bmatrix}^{-1}
\begin{bmatrix}
x\prime\\
y\prime\\
1
\end{bmatrix}
\)

最終的にどうする?

太郎くん
太郎くん

ということは、
実施したいアフィン逆変換の逆行列を前方から配置していけばOKで、
さらに結合法則から、前方の行列を先に合成して、そのあとにアフィン逆変換を一発だけ実施すればOK。
ってことか

フクさん
フクさん

そうそう。
これを次回から実際にプログラミングしていく。

まとめ

フクさん
フクさん

まとめだよ。

  • いままで証明してきたものを再確認。
  • 上記を利用して、アフィン逆変換の合成を各アフィン行列単体で管理できる形状に変形。

バックナンバーはこちら。

コメント

タイトルとURLをコピーしました