【Python演算処理】環論(Ring Theory)に立脚した全体像再構築③ベクトル空間(Vector Space)としての構成

どうやら**ベクトル**(Vector)というと矢印の演算しか頭に浮かべられない様では「**高校数学と大学数学の狭間**」を上手く乗り越えられない様なんです。

[空間ベクトル - Wikipedia](https://ja.wikipedia.org/wiki/%E7%A9%BA%E9%96%93%E3%83%99%E3%82%AF%E3%83%88%E3%83%AB)

>いわゆる矢印ベクトルは物理学の教育では力学の初歩から導入されるため、ベクトルも古典力学と同時(17世紀ごろ)に発生したと思われるかもしれないが、実はもっと後の19世紀になって現れたものである。今でこそベクトルや行列などを使って、物理学や幾何の問題を解くといったことは常識であるが、ベクトルが誕生する以前の数学や物理学では初等幾何学、解析幾何学や四元数などを利用していた。今日我々が知っているベクトルの概念は、およそ200年もの時間を掛けて徐々に形成されてきたものである。そこでは何十人もの人々が重要な役割を果たしてきた。

まずは現時点における「**安定版**」の定義に当たってみましょう。

[ベクトル空間 - 物理のかぎしっぽ](http://hooktail.sub.jp/algebra/VectorSpace/)

>**ベクトル空間**(Vector Space)あるいは**線形空間**(Linear Space)は、集合の元a,b,cの間に以下の演算規則が成立する集合V全体であり($a,b,c \in V$)、この時個々の元a,b,cが**ベクトル**(Vector)と規定される。

* この様に**ベクトル空間**はVと書き、Vの**元**を$x,y,z,…$のように小文字のアルファベットで表わす。最も抽象化された表現では大文字も太文字も使わない。
* かかる集合Vとは別に定義される**スカラー**(Scalar)は$\lambda , \mu ,…$のようにギリシャ文字で表される。

###スカラー概念(<font color=blue>Scalar Concept</font>)の暫定定義

大きさだけを備える量で(任意の数列の一点に対応する)ただ一つの数値で表現される。

* 例：「**無限小-∞から無限大+∞の範囲の実数列**」を対応させる場合。$\lambda_n(n=-∞→0→+∞,n \in \mathbb{R})$

その範囲は**全順序関係**(Totally Ordered Relation)さえ成立していれば(桁上がりや桁下がりの概念を備えた十進数記法などの導入により数列を必要とされるだけ連続的に扱える様になった)**整数**$\mathbb{Z}$や**有理数**$\mathbb{Q}$や(分岐点概念を導入して週回数を数え上げられる様になった)**複素数**$\mathbb{C}$であっても構わない。<br>[【Python演算処理】環論に立脚した全体像再構築②同値関係の再習](https://qiita.com/ochimusha01/items/0374f5579545f4981ec5)

* 最初物理学に採用された概念で、その時点では「(適切な単位を定める事で実数によって表すことのできる)**時間，温度，質量，電荷などの量**」を指した。その語源は梯子を意味するラテン語 "<font color=purple>scalaris</font>" の形容詞形 "<font color=purple>scala</font>" に由来する（スケールの語と同根）。<br>[scalaとは - コトバンク](https://kotobank.jp/word/scala-1243790)
* 数学で初めて「**スカラー**」の語が使用されたのはフランソワ・ヴィエトの「**In artem analyticen isagoge**(1591)」 における「<font color=purple>形を保ったまま一方を他方へ比例的に増大または減少させる大きさをスカラー項と呼ぶ</font>」という趣旨の一節においてである。<br>[【数理考古学】とある円周率への挑戦？](https://qiita.com/ochimusha01/items/5c8a62486ea4d5d1d73a)
* オックスフォード英語辞典によれば、英語でこの用語を用いた記録に残る最初は1846年にウィリアム・ローワン・ハミルトンが**四元数**(Quaternion)**の実部**について言及した一節"<font color=purple>The algebraically real part may receive, according to the question in which it occurs, all values contained on the one scale of progression of numbers from negative to positive infinity; we shall call it therefore the scalar part.</font>"であるという。<br>[【Pythonで球面幾何学】ハミルトンの四元数は何を表しているのか？](https://qiita.com/ochimusha01/items/aff8d52f20af01d13bed)

###ベクトル概念(<font color=blue>Vector Concept</font>)の暫定定義

「**大きさと向きを持った量**(有向線分)」で、例えば幾何学における「**成分表示**」、物理学における「**物体に作用する力**」などに用いられる。「**運ぶ**」を意味するラテン語<font color=purple>vehere</font>に由来し、18世紀の天文学者が初めて使用した。

* **スカラー**と区別する為に矢印で表現される場合には、**ベクトル**aの矢印の根本Aを**始点**(または起点)、矢印の先端Bを**終点**と呼び、$\vec{AB},\vec{a},\textbf{a}$などと表記する。
* なおベクトルの大きさを**絶対値**(Absolute Value)と呼び、数の絶対を表す記号||を流用して$|\vec{AB}|,|\vec{a}|,|\textbf{a}|$などと表す。
* また任意の**スカラー**$\lambda$倍、ないしはその逆数$\frac{1}{\lambda}$倍を**スカラー積**(Scalar Product)と表現する。

###ベクトル空間の公理①「<font color=purple>加法について可換群である</font>」。
まずはその「**加法**」の結果について以下が成立する事が成立条件となります。ここまでは、ある意味群定義手順の拡張版？

1. 演算結果が閉じている($a,b \in V \ \Longrightarrow \ a+b \in V$)。
1. 結合則が成立する($a+(b+c)=(a+b)+c$)。
1. 加法上の零元0が存在する($a+0=0+a=a$)。
1. 加法上の逆元が存在する($a+(-a)=(-a)+a=0$)。
1. 交換則が成立する($a+b = b + a$)。

1~4までが**加法群**、5が**可換群**(アーベル群)の成立条件となります。過去投稿において言及した**同心環概念**(Concentric Ring Concept)と対応させるなら「<font color=purple>垂直軸に実数列そのもの、水平軸に半径1の単位円を採用した結果、傾き$\frac{y}{x}$が</font>(x=1なので必ず)<font color=purple>実数列そのものに対応する場合</font>」に相当します。
[【Python演算処理】環論に立脚した全体像再構築①空環と実数環](https://qiita.com/ochimusha01/items/361c1abe1ea8e2540fb9)
[アーベル群 - Wikipedia](https://ja.wikipedia.org/wiki/%E3%82%A2%E3%83%BC%E3%83%99%E3%83%AB%E7%BE%A4)
![image.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn-ak.f.st-hatena.com%252Fimages%252Ffotolife%252Fo%252Fochimusha01%252F20210625%252F20210625170910.gif%3Fixlib%3Drb-4.0.0%26auto%3Dformat%26gif-q%3D60%26q%3D75%26w%3D1400%26fit%3Dmax%26s%3D76c6e1554caf21d977334b755ac484fc?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&w=1400&fit=max&s=f3c0e88eeee2fdedd7a87f33a0630e26)
![image.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn-ak.f.st-hatena.com%252Fimages%252Ffotolife%252Fo%252Fochimusha01%252F20210625%252F20210625170509.gif%3Fixlib%3Drb-4.0.0%26auto%3Dformat%26gif-q%3D60%26q%3D75%26w%3D1400%26fit%3Dmax%26s%3Dc7fde6bb8ed93225ed217993e31517ce?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&w=1400&fit=max&s=da3c83743ef6027b8b83a0af432414c8)
![image.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn-ak.f.st-hatena.com%252Fimages%252Ffotolife%252Fo%252Fochimusha01%252F20210625%252F20210625170838.gif%3Fixlib%3Drb-4.0.0%26auto%3Dformat%26gif-q%3D60%26q%3D75%26w%3D1400%26fit%3Dmax%26s%3D72bf32489d521a4a9d448bea596e54bf?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&w=1400&fit=max&s=0cf225aaeca8afe0a7d7a99af5ff853f)

###ベクトル空間の公理②「<font color=purple>スカラー積について可換群に似た構造である</font>」。
「**数の乗法**」、すなわち元ベクトルの$\lambda$倍ないしはその逆数$\frac{1}{\lambda}$倍の結果(スカラー積)について以下が成立する必要があります。

1. スカラー積が閉じている($\lambda a \in V$)。
1. 結合則が成立する($\lambda (\mu a)=(\lambda \mu)a$)。
1. 零元0が存在する($\lambda+0=0+\lambda=\lambda$)。
1. スカラー積の単位元1が存在する($\lambda \frac{1}{\lambda}=1$)。

[ベクトル空間 - 物理のかぎしっぽ](http://hooktail.sub.jp/algebra/VectorSpace/)

>群演算は，群の元だけで閉じています。これを「<font color=purple>群という集合の内部で定義できる演算</font>」という意味合いで**内部算法**と表現します。
>
>一方，ベクトル空間のスカラー積の演算に出てくるスカラー自体は、ベクトル空間の元そのものではなく(全順序関係が成立する有理数列，実数列，複素数列などの元)、この様に「<font color=purple>ベクトル空間の元と，他の集合の元の間の演算</font>」たるスカラー積を**外部算法**と表現します。
>
>そういうわけで，ベクトル空間はスカラー積に関して群ではありませんが，『**単位元がある**』『**逆元がある**』など群に似た演算規則を備えてはいるので便宜的に群の考え方を借りてきてこの様に表現する訳です。

かかる「**不完全な導入形**」はベクトル空間全体が(数直線上の1点として表せる)**1次元的広がり**しか備えておらず、**虚数概念**(Imaginal Concept)＝**複素数表記**(Complex Expression)未導入の**交代級数**$y=-1^x$も符号の反転しか扱えない事などに由来する様です。
[【数理考古学】解析学史に「虚数概念」をもたらした交代級数](https://qiita.com/ochimusha01/items/a338ea75855fcb4ff6f8)

* 逆をいえば数理の世界は元来、**掛け算の九九**の様な単純なケースにおいてさえ、**直積**(Direct Product)すなわち**余弦定理**(Cosine Theorem) $a^2+b^2+2ab \cos(θ)(θ=\frac{π}{2} \to \cos(\frac{π}{2})=0)$ に基づく**線型独立性**(Linear Independency)を求めてくるものなのである.<br>[【Rで九九】どうして36個の数字しか使われないのか？](https://qiita.com/ochimusha01/items/8d990f23ae96db0cd953)

```math
ab(a,b \in \mathbb{Z} \land 0<a,b<10)
```

<!-- html table generated in R 3.5.2 by xtable 1.8-4 package -->
<!-- Fri Mar 13 06:09:42 2020 -->
<table border=1>
<tr> <th>  </th> <th> 1x </th> <th> 2x </th> <th> 3x </th> <th> 4x </th> <th> 5x </th> <th> 6x </th> <th> 7x </th> <th> 8x </th> <th> 9x </th>  </tr>
  <tr> <td align="right"> 1y </td> <td align="right">   1 </td> <td align="right">   2 </td> <td align="right">   3 </td> <td align="right">   4 </td> <td align="right">   5 </td> <td align="right">   6 </td> <td align="right">   7 </td> <td align="right">   8 </td> <td align="right">   9 </td> </tr>
  <tr> <td align="right"> 2y </td> <td align="right">   2 </td> <td align="right">   4 </td> <td align="right">   6 </td> <td align="right">   8 </td> <td align="right">  10 </td> <td align="right">  12 </td> <td align="right">  14 </td> <td align="right">  16 </td> <td align="right">  18 </td> </tr>
  <tr> <td align="right"> 3y </td> <td align="right">   3 </td> <td align="right">   6 </td> <td align="right">   9 </td> <td align="right">  12 </td> <td align="right">  15 </td> <td align="right">  18 </td> <td align="right">  21 </td> <td align="right">  24 </td> <td align="right">  27 </td> </tr>
  <tr> <td align="right"> 4y </td> <td align="right">   4 </td> <td align="right">   8 </td> <td align="right">  12 </td> <td align="right">  16 </td> <td align="right">  20 </td> <td align="right">  24 </td> <td align="right">  28 </td> <td align="right">  32 </td> <td align="right">  36 </td> </tr>
  <tr> <td align="right"> 5y </td> <td align="right">   5 </td> <td align="right">  10 </td> <td align="right">  15 </td> <td align="right">  20 </td> <td align="right">  25 </td> <td align="right">  30 </td> <td align="right">  35 </td> <td align="right">  40 </td> <td align="right">  45 </td> </tr>
  <tr> <td align="right"> 6y </td> <td align="right">   6 </td> <td align="right">  12 </td> <td align="right">  18 </td> <td align="right">  24 </td> <td align="right">  30 </td> <td align="right">  36 </td> <td align="right">  42 </td> <td align="right">  48 </td> <td align="right">  54 </td> </tr>
  <tr> <td align="right"> 7y </td> <td align="right">   7 </td> <td align="right">  14 </td> <td align="right">  21 </td> <td align="right">  28 </td> <td align="right">  35 </td> <td align="right">  42 </td> <td align="right">  49 </td> <td align="right">  56 </td> <td align="right">  63 </td> </tr>
  <tr> <td align="right"> 8y </td> <td align="right">   8 </td> <td align="right">  16 </td> <td align="right">  24 </td> <td align="right">  32 </td> <td align="right">  40 </td> <td align="right">  48 </td> <td align="right">  56 </td> <td align="right">  64 </td> <td align="right">  72 </td> </tr>
  <tr> <td align="right"> 9y </td> <td align="right">   9 </td> <td align="right">  18 </td> <td align="right">  27 </td> <td align="right">  36 </td> <td align="right">  45 </td> <td align="right">  54 </td> <td align="right">  63 </td> <td align="right">  72 </td> <td align="right">  81 </td> </tr>
   </table>

* この関係はベクトル空間の定義の応用で$\lambda (a)\lambda (b)=\lambda (ab)$と表現する事が可能であり、特に$\lambda=乗法単位元1$と考えた場合が単なる直積abの場合となる。この場合の$\lambda (a)$や$\lambda (b)$がベクトル空間に該当する訳である。
* この考え方は(ベクトル概念の大源流たる)**四元数**(Quaternion)w+xi+yj+zkでいうと(スカラーに該当する)実数部wを切り離し、純虚数部xi+yj+zkに傾注するアプローチに対応する。

我々は何の躊躇もなくスカラー尺度に**十進法**を採用したりしますが、実はこれこそがここで問題とされている「**外挿される何か**」の正体だったりするという…欧州ではイタリア・ルネサンス期より導入が始まり、それに続いた数学革命の原動力になったといいます。
[【Python描画処理】ベン図と組み合わせ計算と確率演算](https://qiita.com/ochimusha01/items/367d306d062bfbda4a6d)

###ベクトル空間の公理③「<font color=purple>スカラー積と加法の間に分配法則が成立する</font>」。

これも同じ問題。(1次元上の問題しか扱わない)ベクトル空間は二つの群の直積を完全には記述出来ないので「**スカラー積と加法の分配法則**($\lambda (a+b)=\lambda a + \lambda b$)」について特別な言及が必要になる訳です。

ところで肝心の問題を問うのを忘れていました。こうした考え方を導入すると何が嬉しいのでしょう？　実は**多項式や行列や関数の概念を同型として束ねる**事が可能となるのです。

#数列(<font color=blue>Sequence</font>)へのベクトル空間概念の導入

「**N個の実数の組**」$(a_1,a_2,a_3,…,a_n \in \mathbb{R})$全体の集合V($\mathbb{R}^2$)を考え、その演算を以下の様に定義します。
[線形空間(ベクトル空間)を画像と具体例で解説](https://oguemon.com/study/linear-algebra/whats-linear-space/)

* **加法**(ベクトル空間の公理①を満たす)

```math
(a_1,a_2,a_3,…,a_n)+(b_1,b_2,b_3,…,b_n)\\
=(a_1+b_1,a_2+b_2,a_3+b_3,…,a_n+b_n)\\
ただし(a_1,a_2,a_3,…,a_n)=(b_1,b_2,b_3,…,b_n)\\
⇄(a_1=b_1,a_2=b_2,a_3=b_3,…,a_n=b_n)
```

* **数の乗法**(ベクトル空間の公理②③を満たす)

```math
\lambda(a_1,a_2,a_3,…,a_n)\\
=(\lambda a_1,\lambda a_2,\lambda a_3,…,\lambda a_n)
```
この様に条件を満たしているので「**N個の実数の組**」の集合V($\mathbb{R}^2$)は**ベクトル空間**、その元たる$(a_1,a_2,a_3,…,a_n \in \mathbb{R})$は**ベクトル**と看做せます。この考え方は**N個の整数の組**$(a_1,a_2,a_3,…,a_n \in \mathbb{Z})$全体の集合$\mathbb{Z}^2$、**N個の有理数の組**$(a_1,a_2,a_3,…,a_n \in \mathbb{Q})$全体の集合$\mathbb{Q}^2$、**N個の複素数の組**$(a_1,a_2,a_3,…,a_n \in \mathbb{C})$全体の集合$\mathbb{C}^2$にも適用可能で、かつ**片側無限数列**(One-side Infinity)$(a_1,a_2,a_3,…,a_n,…)$や**両側無限数列**(Both-side Infinity)$(…,a_{-3},a_{-2},a_{-1},a_0,a_1,a_2,a_3,…,a_n,…)$の概念へと容易に拡張可能です。すなわち**群論**(Group Theory)における**加法群**(Addictive Group)の概念がそのまま**ベクトル空間**に持ち込間れる展開となり、この事(特に直積概念の導入)が**計量ベクトル空間**への拡張の第一歩となる訳です。

#「多項式(<font color=blue>Polynomial</font>)」へのベクトル空間概念の導入

例えば「**二次以下の多項式**」全体の集合Vを考え、その演算を以下の様に定義します。
[【Python演算処理】パスカルの三角形と二項定理または二項展開](https://qiita.com/ochimusha01/items/d668b19d5389b52e0dd2)

* **加法**(ベクトル空間の公理①を満たす)

```math
(a_1x^2+b_1x+c_1)+(a_2x^2+b_2x+c_2)\\
=(a_1+a_2)x^2+(b_1+b_2)x+(c_1+c_2)
```

* **数の乗法**(ベクトル空間の公理②③を満たす)

```math
\lambda(a_1x^2+b_1x+c_1)\\
=\lambda a_2x^2+\lambda b_2x+\lambda c_2
```

この様に条件を満たしているので「**二次以下の多項式**」の集合Vはベクトル空間、その元たる「**二次以下の多項式**」はベクトルと看做せます。この考え方は多項式全体に一般化する事が可能です。

#「行列(<font color=blue>Matrix</font>)」へのベクトル空間概念の導入

例えば「**2x2行列**」全体の集合Vを考え、その演算を以下の様に定義します。
[【Python演算処理】行列演算の基本①基本的四則演算と積](https://qiita.com/ochimusha01/items/b4a456b6ab12a5ea57f6)

* **加法**(ベクトル空間の公理①を満たす)

```math
{\left[\begin{matrix}a & b\\c & d\end{matrix}\right]
}+{\left[\begin{matrix}e & f\\g & h\end{matrix}\right]
}={\left[\begin{matrix}a+e & b+f\\c+g & d+h\end{matrix}\right]
}
```

* **数の乗法**(ベクトル空間の公理②③を満たす)

```math
\lambda{\left[\begin{matrix}a & b\\c & d\end{matrix}\right]
}={\left[\begin{matrix}\lambda a & \lambda b\\\lambda c & \lambda d\end{matrix}\right]
}
```

この様に条件を満たしているので「**2x2行列**」全体の集合Vはベクトル空間、その元たる「**2x2行列**」はベクトルと看做せます。この考え方は「**nxnの行列**」全体に一般化する事が可能であり、その結果として「**実数を成分とする𝑛行𝑚列行列全体の集合$\mathbb{R}_{nm}$は実数上のベクトル空間を構成する**」といえる様になるのです(そして$n=m=n \in \mathbb{R} \land -∞<n<+∞$の場合、$\mathbb{R}^2$=実数の全体集合$\mathbb{R}$となる)。「**演算結果が閉じている**」とはかかる数理の抽象表現でもある訳ですね。

#「関数(<font color=blue>Function</font>)」へのベクトル空間概念の導入

例えば「**a≦x≦bを定義域とする関数**」全体の集合Vを考え、その任意の要素f(x),g(x),h(x)についてその和の関数(f+g)(x)とスカラー積を求める関数$(\lambda f)(x)$を以下の様に定義します。
[【Python演算処理】冪算と乗除算の関係について。](https://qiita.com/ochimusha01/items/8a66fcab8285a146265f)

* **加法**(ベクトル空間の公理①を満たす)

```math
(f+g)(x)=f(x)+g(x)
```

1. 演算結果が閉じている($f(x),g(x) \in V \ \Longrightarrow \ (f+g)(x) \in V$)。
1. 結合則が成立する($(f+(g+h))(x)=((f+g)+h)(x)$)。
1. 加法上の零元0が存在する($f(x)+定数関数0=定数関数0+f(x)=f(x)$)。
1. 加法上の逆元が存在する($f(x)-f(x)=-f(x)+f(x)=0$)。
1. 交換則が成立する($(f+g)(x)=(g+h)(x)$)。

* **数の乗法**(ベクトル空間の公理①を満たす)

```math
(\lambda f)(x)=\lambda(f(x))
```

1. スカラー積が閉じている($\lambda f(x) \in V$)。
1. 結合則が成立する($\lambda (\mu f(x))=(\lambda \mu)f(x)$)。
1. 零元0が存在する($\lambda f(x)+定数関数0=定数関数0+\lambda f(x)=\lambda f(x)$)。
1. スカラー積の単位元1が存在する($\lambda f(x) \frac{1}{\lambda f(x)}=1$)。
1. スカラー積と加法の間に分配法則が成立する($\lambda (f+g)(x)=\lambda f(x) + \lambda g(x)$)。

この様に条件を満たしているので「**a≦x≦bを定義域とする関数**」全体の集合Vはベクトル空間、その元たる個々の関数はベクトルと看做せます。ちなみに関数のベクトル空間は「**関数空間**」とも呼ばれます。

#ベクトル空間(<font color=blue>Vector Space</font>)から計量ベクトル空間(<font color=blue>Metric Vector Space</font>)へ

こうして(とりあえず単一次元のみを扱う)**ベクトル空間**(Vector Space)の概念によって同型に束ねた諸概念を(多次元間の関係をきっちり定義する)**計量ベクトル空間**(Metric Vector Space)にまとめてグレードアップする事が可能となりました。その結果、どういう世界が開ける事になるのでしょう？　それについては、以下続報…