1. 線形変換(線型写像)

以下の性質を持っている変換 $f$ が線形変換となります。

  • $f(ax+by)=af(x)+bf(y)$

線形変換の定義から以下のことが分かります。

  • $f(0)=0$

  • 平行移動は線形変換ではないです。(原点(0,0)を移動する後、原点にならないです。)

  • 回転変換は線形変換んです。

  • 直線$y=ax$に関する反射は線形変換です。

  • 線形変換は行列で表現でき, $f(x)$を$Ax$の形に描けます。

2. 線形変換の表現行列

関数空間の基底における変換の像を利用して、線形変換$f(x)$の表現行列を求めることができます。

$R^2$空間の基底 $\{e_1, e_2\}$ を考えます。

$$ e_1=\left( \begin{array}{c} 1 \\ 0 \end{array} \right), \quad e_2=\left( \begin{array}{c} 0 \\ 1 \end{array} \right) $$
  • ベクトル$e_1$の$y=2x$に関する反射 $f_1$ は
$$ f_1=\left( \begin{array}{c} -\frac{3}{5} \\ \frac{4}{5} \end{array} \right) $$
  • ベクトル$e_2$の$y=2x$に関する反射 $f_2$ は
$$ f_2=\left( \begin{array}{c} \frac{4}{5} \\ \frac{3}{5} \end{array} \right) $$

よって、任意の点

$$ \left( \begin{array}{c} x \\ y \end{array} \right) = x\cdot e_1 + y\cdot e_2 $$

の$y=2x$に関する反射点は

$$ (x',y')=f\left( \begin{array}{c} x \\ y \end{array} \right) = x\cdot f(e_1) + y\cdot f(e_2) = x \cdot f_1 + y \cdot f_2 $$

です。

即ち、

$$ (x',y') = \left( \begin{array}{rl} f_1 & f_2 \end{array} \right) \left( \begin{array}{c} x \\ y \end{array} \right) $$

ですので、直線$y=2x$に関する反射変換は以下の式で現れます。

$$ \left( \begin{array}{c} x' \\ y' \end{array}\right) = \left( \begin{array}{cc} -\frac{3}{5} & \frac{4}{5} \\ \frac{4}{5} & \frac{3}{5} \end{array}\right) \left( \begin{array}{c} x \\ y \end{array}\right) $$

2. アフィン変換

平面上の点に関する線形変換+平行移動はアフィン変換です。 平行移動が含まれるので、アフィン変換は線形変換ではない。

ファイン変換の中の回転と平行移動の順番ば重要です。以下の二つのアフィン変換は異なる変換です。

  • [1] (回転後平行移動)反時計回り45度回転して、$(x_0,y_0)$方向で移動すること。 
$$ \left( \begin{array}{c} x' \\ y' \end{array}\right) = A \left( \begin{array}{c} x \\ y \end{array}\right) + \left( \begin{array}{c} x_0 \\ y_0 \end{array}\right) $$
  • [2] (平行移動後回転)$(x,y)$方向で移動して、反時計回り45度回転すること。
$$ \left( \begin{array}{c} x' \\ y' \end{array}\right) = A \left( \left( \begin{array}{c} x \\ y \end{array}\right) + \left( \begin{array}{c} x_0 \\ y_0 \end{array}\right) \right) = A \left( \begin{array}{c} x \\ y \end{array}\right) + A \left( \begin{array}{c} x_0 \\ y_0 \end{array}\right) $$

補足:

Octaveの中の行列とベクトルの足し算について、数学での定義により自由に使えます。以下の例の計算結果を観察して、行列とベクトルの足し算のやり方を確認してください。

In [2]:
p_list = [-3,2;-2,2; -2,0; 2,0; 2,2;  3,2; 0,3; -3,2]'
p_list =

  -3  -2  -2   2   2   3   0  -3
   2   2   0   0   2   2   3   2

In [5]:
new_p_list = p_list + [100;1000]
new_p_list =

     97     98     98    102    102    103    100     97
   1002   1002   1000   1000   1002   1002   1003   1002

In [ ]:
new_p_list = p_list + [100;1000;10000]