【入門】線形代数の基礎【数値計算】

【入門】線形代数の基礎【数値計算】 数値計算
【入門】線形代数の基礎【数値計算】

【再掲】ベクトル内積の公式達

ベクトル内積の公式を書き並べると以下になる。

\(\vec{A}\cdot\vec{B}=|\vec{A}||\vec{B}|\cos(\theta)\)
\(\vec{A}\cdot\vec{B}=a_1 b_1 + a_2 b_2\)

ただし、後者の成分表記については、\(\vec{A}\)と\(\vec{B}\)が平面ベクトルとは限らないので、
実際は以下になる。

\(\vec{A}\cdot\vec{B}=a_1 b_1 + a_2 b_2 +\dots+a_n b_n \)
\(\displaystyle=\sum_{i=1}^n a_i b_i\)

「平面ベクトルとは限らない」が割と重要で方程式(多項式)との関係性をさらに強くにしている。

方程式と内積

まずシンプルな一次方程式から考える。
一次方程式と内積の関係は以下となり、それぞれは表現が違うだけで全く同一ものとなる。

\(y=ax+b\)
\(y=
\begin{bmatrix}
a & b \\
\end{bmatrix}
\begin{bmatrix}
x \\
1
\end{bmatrix}
\)

ベクトルの内積の計算として、先ほどの成分表記の方の公式を使うと、

\(\vec{A}\cdot\vec{B}=a_1 b_1 + a_2 b_2\)

よって、

\(y=
\begin{bmatrix}
a & b \\
\end{bmatrix}
\begin{bmatrix}
x \\
1
\end{bmatrix}=
ax+b
\)

2次方程式も

成分は2要素と決まってるわけじゃないので、
2次方程式、多変数方程式でも考え方は一緒になる。

\(y=ax^2+bx+c=
\begin{bmatrix}
a & b & c\\
\end{bmatrix}
\begin{bmatrix}
x^2 \\
x \\
1
\end{bmatrix}
\)

\(z=ax+by+c=
\begin{bmatrix}
a & b & c\\
\end{bmatrix}
\begin{bmatrix}
x \\
y \\
1
\end{bmatrix}
\)

連立方程式

まず二元一次連立方程式を書いてみる。

\(
\begin{eqnarray}
\left\{
\begin{array}{l}
x\prime=ax + by \\
y\prime=cx + dy
\end{array}
\right.
\end{eqnarray}
\)

連立方程式をベクトル内積で表現

連立方程式それぞれをベクトルの内積で表現する以下となる。

\(
x\prime=
\begin{bmatrix}
a & b
\end{bmatrix}
\begin{bmatrix}
x \\
y
\end{bmatrix}
\)

\(
y\prime=
\begin{bmatrix}
c & d
\end{bmatrix}
\begin{bmatrix}
x \\
y
\end{bmatrix}
\)

連立方程式を行列内積で表現

上記の式を一個にまとめることが可能。

\(
\begin{bmatrix}
x\prime \\
y\prime
\end{bmatrix}=
\begin{bmatrix}
a & b \\
c & d
\end{bmatrix}
\begin{bmatrix}
x \\
y
\end{bmatrix}
\)

ここの行列は、先の行ベクトルを縦に詰んだものとなる。
方程式の係数部を集約した形となっている。

入力、変換、出力で考える

先の行列演算式は各項に意味がある。

\(
\begin{bmatrix}
x\prime \\
y\prime
\end{bmatrix}=
\begin{bmatrix}
a & b \\
c & d
\end{bmatrix}
\begin{bmatrix}
x \\
y
\end{bmatrix}
\)
[出力ベクトル]=[変換行列][入力ベクトル]

入力と変換を経て出力という構成が基本形となる。

入力ベクトルと出力ベクトルを行列に拡張

上記の入力ベクトルと出力ベクトルを行列に拡張できる。

\(
\begin{bmatrix}
x_1^\prime & x_2^\prime\\
y_1^\prime & y_2^\prime
\end{bmatrix}=
\begin{bmatrix}
a & b \\
c & d
\end{bmatrix}
\begin{bmatrix}
x_1 & x_2 \\
y_1 & y_2
\end{bmatrix}
\)
[出力ベクトル1,出力ベクトル2]=[変換行列][入力ベクトル1,入力ベクトル2]

考え方は入出力がベクトルの時と一緒
入力の列ベクトルが2つ並んで、2×2の行列になり、
それに伴って出力の列ベクトルも2つになるので、2×2の行列になる。

ポイントは、全部2×2の行列だが、
数式の位置によって意味が変わるというところ。
ここの認識が抜けてると行列嫌いになり易い気がしている。

さらに拡張すると・・・。

上記の式は
入力ベクトル2セットに対して、出力ベクトル2セットを得ていることを示している。
これを2セットではなく、nセットにすることも可能

列ベクトル2セットで2×2行列になってるので、
nセットだと、nx2行列が入力ベクトルnセット、出力ベクトルnセットという形になる。
式で書くと以下になる。

\(
\begin{bmatrix}
x_1^\prime & x_2^\prime & \dots & x_n^\prime\\
y_1^\prime & y_2^\prime & \dots & y_n^\prime
\end{bmatrix}=
\begin{bmatrix}
a & b \\
c & d
\end{bmatrix}
\begin{bmatrix}
x_1 & x_2 & \dots & x_n \\
y_1 & y_2 & \dots & y_n
\end{bmatrix}
\)

この書き方の利点としては、
大量の入力を同じルールで一括変換が可能という点。

行列の知識はコミュニケーションスキル?

行列は数式だけ見ると具体的なものを語っていないことが多い
それは行列として当たり前かつ暗黙的な、つまり暗黙知による部分が多い
この暗黙知によって、エンジニアのコミュニケーションがされていること多い。
結果として行列の知識はコミュニケーションスキルに直結する場合が多々ある。

※ 当然業界依存。不要な業界も多いと思う。

まずはここまでを線形代数の基礎とする。

まとめ

  • 内積はベクトル表記と成分表記の公式がある。
    • 成分表記の内積は余弦定理から求められる。
  • 行列は方程式の係数部をまとめたもの。
  • 行列演算は入力ベクトル、変換行列、出力ベクトルが基本形。
  • 入力、出力をnセットに拡張すると列ベクトルがnセット分の列が増えの行列になる。

MATLAB、Python、Scilab、Juia比較ページはこちら

コメント

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