【連続微小領域環】直交座標系(Cartesian Coordinates System)や極座標系(Polar Coordinates System)との対応。

**解析学**(Mathematical Analysis)における**微分法**(Differentiation)**積分法**(Integral Calculus)の背景にある**微小領域**(Microregions)の概念がどうしても飲み込めないので、むしろそれから出発する数理を構築してみようと思い立ちました。まだまだ試論の段階で、運用を試みながら発生した不具合に順次対処してまいります。
#微小領域群(<font color=blue>Microregion Group</font>)

まずは以下の展開の前提を列記しておきましょう。

###①出発点としての微小領域群(<font color=blue>Microregion Group</font>)概念そのものの設定。

任意の**微小領域**(Microregion)αを元とする**連続一次元微小領域**(Continuous 1D Microregion)Αの概念から出発する。数式で表すと以下となる。

```math
A(\forall α \in A)
```
それは**群**(Group)を構成し、各**微小領域**(Microregion)a間の関係は、それぞれを規定する**二項演算**(Binary Operation)=**群演算**(Group Operation)に従うものとする。
[数学の「群」「群論」とはどのようなものなのか](https://sugaku-bell.net/daigaku/gun.html)

>集合Gに演算∗が定義されているとき、次の条件(ⅰ)、(ⅱ)、(ⅲ)を満たすならばGは∗に関して群であるという。単にGを群ともいう。なお、演算記号をとくに意識する必要がない場合、a∗bを省略形abや簡略形a⋅bで表すことがある。
>
>（ⅰ）**結合法則**(Associative law)**の成立**…Gの任意の元a,b,cに対し(a∗b)∗c=a∗(b∗c)が成立。**結合性**(Associative Property)を有するとも表現する。
>
>（ⅱ）**単位元**(Identity Element)**の存在**…Gにある元eがあって、Gの任意の元aに対してa∗e=e∗a=aが成立。eをGの**単位元**(Identity Element)という。
>
>（ⅲ）**すべての元に逆元**(Inverse Element)**が存在する**…Gの任意の元aに対して、a∗b=b∗a=e（単位元）となるGの元bが存在する。このbをaの**逆元**(Inverse Element)とよび、普通$a^{−1}$で表す。

数式で表すと以下となる。

```math
G(a,b,c,e \in G|(a∗b)∗c=a∗(b∗c)\land a∗e=e∗a=a\land a∗a^{-1}=a^{-1}∗a=e)
```
###②閉性(<font color=blue>Clouse Property</font>)と部分群(<font color=blue>Subgroup</font>)/部分集合(<font color=blue>Subset</font>)の設定
かかる**微小領域群**(Microregion Group)は、それぞれの**群演算**について特に断わりがない限り原則として**閉じている**(Closed)ものと考える。この事を**閉性**(Clouse Property)を有するとも表現する。

[数集合と演算](https://opencourse.doshisha.ac.jp/bj01/math-intro/PC/number1.html)
**閉性**(Clouse Property)

```math
G(a,b \in G,a*b \in G)
```
特に**閉世界仮説**(Closed World Assumption)に従い、各**部分群**(Subgroup)$H_1,H_2,H_3…H_{∞-1}$ないしは**部分集合**(Subset)の**総体群**(Universal Group)Gは必ず閉じているものと考える。

[物理のかぎしっぽ：部分群](http://hooktail.sub.jp/algebra/Subgroup/)
**部分群**(Subgroup)

```math
H_i(0<i<∞)(a,b \in H_i|a∗b\in H_i\land a^{-1} \in H_i)
```
[【Python描画処理】ベン図と組み合わせ計算と確率演算](https://qiita.com/ochimusha01/items/367d306d062bfbda4a6d)
**部分集合**(Subset)

```math
X \subseteq Y(\forall x \in X \land x \in Y)
```
**真部分集合**(Proper Subset)

```math
X \subset Y(X \subseteq Y \land X≠Y)
```

[閉世界仮説 - Wikipedia](https://ja.wikipedia.org/wiki/%E9%96%89%E4%B8%96%E7%95%8C%E4%BB%AE%E8%AA%AC)
**閉世界仮説**（Closed World Assumption）

```math
G(H_1,H_2,H_3,…,H_{∞-1}\in G,\overline{G}=\varnothing)
```
###③群演算(<font color=blue>Group Operation</font>)としての偶関数(<font color=blue>Even Function</font>)と奇関数(<font color=blue>Odd Function</font>)の統合。

**正関数**と**逆関数**が重なる**偶関数**(Even Function)の**演算結果**は原則としてそのまま群を構成する。ところが**正関数**とその**逆関数**が集合として分離する(そしてしばしば単位元がどちらにも含まれない)**奇関数**(Odd Function)だと原則としてそうはならない。

[偶関数と奇関数の意味，性質などまとめ](https://manabitimes.jp/math/1052)
>**偶関数**(Even Function)…f(x)=-f(x)。y=f(x)のグラフがy軸に関して線対称となる。
>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/60225e00-6411-8b5f-a538-fd8a6aa4a9e8.png)
>**奇関数**(Odd Function)…f(-x)=-f(x)。 y=f(x)y=f(x) のグラフが原点に関して点対称となる。
>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/bdbef02f-c240-73db-995a-01a8c4e75ccb.png)

これは原点を中心に考えた場合の**偶関数の対称性**が第三極たるZ軸上の変化も伴う垂直回転の結果としての反転であり、**奇関数の対称性**がZ軸上の変化を伴わない水平回転の結果としての反転である事に起因する。そこで、ここにおいては**偶関数による演算結果としての群**に、**奇関数、その逆関数、および必要に応じてさらに単位元を加えた集合**を対応させる。

[偶関数と奇関数 - Wikipedia](https://ja.wikipedia.org/wiki/%E5%81%B6%E9%96%A2%E6%95%B0%E3%81%A8%E5%A5%87%E9%96%A2%E6%95%B0)
**関数の偶奇性**(Parity of Function)

* **奇関数**と**偶関数**の和は一般には**奇関数**でも**偶関数**でもない。（例：$x+x^2$）。
* いくつかの**偶関数**があるときに、それらの定数倍を足し合わせたもの（線型結合）も**偶関数**になる。また、いくつかの**奇関数**があるときに、それらの定数倍を足し合わせたものも**奇関数**になる。
* 2つの**偶関数**の積は**偶関数**。2つの**奇関数**の積は**偶関数**。**偶関数**と**奇関数**の積は奇関数。<br>[交代級数の一時結合的表現?](https://qiita.com/ochimusha01/items/d30f3c3b96b1754821d3)
* **偶関数**が微分可能なとき、1回微分すると**奇関数**になる。**奇関数**が微分可能なとき、1回微分すると**偶関数**になる。<br>[【Pyrhon演算処理】確率密度空間と累積分布空間①記述統計との狭間](https://qiita.com/ochimusha01/items/28b68c8783fb3d3a719d)
* **偶関数**の0まわりのテイラー級数はxの**偶数次の項**だけを持つべき級数となる。また、**奇関数**の0まわりのテイラー級数は**奇数次の項**だけを持つべき級数となる。<br>[【数理考古学】解析学史に「虚数概念」をもたらした交代級数](https://qiita.com/ochimusha01/items/a338ea75855fcb4ff6f8)
* 周期的な**偶関数**のフーリエ級数はcosの項だけで構成される。また、周期的な**奇関数**のフーリエ級数はsinの項だけで構成される。<br>[【数理考古学】とある実数列の規定例④フーリエ族とラプラス族概念の追加?](https://qiita.com/ochimusha01/items/af7b7c37451ba93aae9c)

**函数の偶奇分解**(Parity Decomposition of the Function)
[交代級数の一次結合的表現?](https://qiita.com/ochimusha01/items/d30f3c3b96b1754821d3)

>任意の関数f(x)は以下の式を用いて**偶成分**(Even Part)$f_{even}$(偶関数)と**奇成分**(Odd Part)$f_{odd}$(奇関数)に分離される。このとき、明らかに$f=f_{even}+f_{odd}$が成立するが、関数f(x)が偶関数かつ奇関数となるのはf(x)=0のとき、かつそのときに限るから、そのような表し方はただこれにのみ対応する。

```math
{\displaystyle f_{\text{even}}(x)={\frac {f(x)+f(-x)}{2}},\quad f_{\text{odd}}(x)={\frac {f(x)-f(-x)}{2}}}
```
このアイディアは正多面体において、**偶数系正多角形**がその頂点に一対の対蹠を含むのに対し、その頂点数を半分にした**奇数系正多角形**は片方の対蹠しか含まないので二つセットで扱う考え方に由来する。
[【オイラーの多面体定理と正多面体】とある「球面幾何学」の出発点…](https://qiita.com/ochimusha01/items/5f8dbf33bac5b7227a11)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/c546fd9a-f65e-8531-8299-d9c92e5831b1.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/4b795124-8089-90b0-1bf6-1c1236537968.png)

さらにその大元には(かかる微小領域群の逆元を水平回転によって求める場合の２つのルートに対応する)**複素数**(Complex)a+biとその**複素共役**(共軛)**数**(Complex Conjugate）a-biが対応するという考え方が存在する。
[共役複素数の覚えておくべき性質](https://manabitimes.jp/math/671)

>共役な複素数は，「虚部をマイナス1倍したもの」とも、「複素数平面上で実軸に関して対称移動させたもの」ということができる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/26f004fa-0035-a0ed-5cff-20734f5f8c70.png)

[複素共役 - Wikipedia](https://ja.wikipedia.org/wiki/%E8%A4%87%E7%B4%A0%E5%85%B1%E5%BD%B9)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/a714edfc-290b-6ef7-e4de-11f4639b1028.png)

**複素数**(Complex)

```math
z=a+bi(a,b \in \mathbb{R}) \in \mathbb{C}\\
z=r(\cos(θ)＋\sin(θ))
```
**複素共役**(共軛)**数**(Complex Conjugate）

```math
\overline{z}=a-bi\\
\overline{z}=r(\cos(-θ)＋\sin(-θ))
```
その性質

```math
\overline{z+w}=\overline{z}+\overline{w}(z,w \in \mathbb{C})\\
\overline{zw}=\overline{z}*\overline{w}\\
z_{real}=\overline{z}_{real}
```
[【連続極座標系】ネイピア数e(2.718282)近似値の極限の近傍について。](https://qiita.com/ochimusha01/items/fbb0cee51e52fbd1c1f7)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210105/20210105003122.gif)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210105/20210105071334.gif)

要するに、かかる座標変換の軌跡は全体として**円錐座標系**(Conical Coordinate System)を構成している。
[【連続極座標系】円筒形座標系による加法群と乗法群と商群の統合](https://qiita.com/ochimusha01/items/2eb64566f82f27fee3f3)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20211007/20211007204359.gif)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20211007/20211007204449.gif)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20211007/20211007204534.gif)

```python
%matplotlib nbagg
import math as m
import cmath as c
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.animation as animation

#円柱データ作成
c0=np.linspace(0,m.pi*120,1201,endpoint = True)
s0=[]
for nm in range(len(c0)):
    s0.append(complex(m.cos(c0[nm]),m.sin(c0[nm])))
s1=np.array(s0)
z0=np.linspace(-1,1,1201,endpoint = True)

#「曲率」を計算
cv1=np.linspace(-1,1,1201,endpoint = True)
#cv1=num.sqrt(1-cv0**2)

#断面線(z)
cutz0=np.linspace(-1,1,61,endpoint = True)
cutz=cutz0[::-1]
cutx=np.abs(cutz)
cuty=np.repeat(0,61)

#単位円データ作成
u0=np.linspace(0,m.pi*2,61,endpoint = True)
u1=[]
for nm in range(len(u0)):
    u1.append(complex(m.cos(u0[nm]),m.sin(u0[nm])))
uc=np.array(u1)
uz0=np.repeat(-1,61)
uz1=np.repeat(-0,61)
uz2=np.repeat(1,61)

#グラフ表示
plt.style.use('default')
fig = plt.figure()
ax = Axes3D(fig)

#関数定義
def unit_cylinder(n):
    plt.cla()
    #円柱描画
    ax.plot(s1.real*cv1,s1.imag*cv1,z0,color="gray",lw=0.5)
    #スポーク描画
    for num in range(len(uc)):
        ax.plot([0,uc[num].real],[0,uc[num].imag],[0,0],color="purple",lw=0.5)
    #単位円描画
    ax.plot(uc.real,uc.imag,uz0,color="red",lw=1)
    ax.plot(uc.real,uc.imag,uz1,color="purple",lw=1)
    ax.plot(uc.real,uc.imag,uz2,color="blue",lw=1)
    #実数線追加
    ax.plot([0,0],[0,0],[-1,1],color="black",lw=1)
    ax.plot([0,0],[-1,1],[0,0],color="black",lw=1)
    ax.plot([-1,1],[0,0],[0,0],color="black",lw=1)
    ax.plot([-1,1],[0,0],[-1,1],color="blue",lw=1)
    ax.plot([1,-1],[0,0],[-1,1],color="red",lw=1)
    ax.plot([0,0],[-1,1],[-1,1],color="green",lw=1)
    ax.plot([0,0],[1,-1],[-1,1],color="green",lw=1)
    #諸元追加
    ax.set_ylim([-1.1,1.1])
    ax.set_xlim([-1.1,1.1])
    ax.set_zlim([-1.1,1.1])
    ax.set_title("Unit Cylinder")
    ax.set_xlabel("X")
    ax.set_ylabel("X")
    ax.set_zlabel("X")
    # グラフを回転(elev=0にすると水平表示に)
    ax.view_init(elev=25, azim=Time_code[n])

Time_code0=np.arange(0,360,6)  
Time_code=Time_code0[::-1] 
#unit_cylinder(len(s1))
#plt.show()

ani = animation.FuncAnimation(fig, unit_cylinder, interval=50,frames=len(Time_code))
ani.save("PF101.gif", writer="pillow")
```
ここまでが以下の展開の前提となります。

#加法系微小領域群（<font color=blue>Additive Microregion Group</font>）

まずは上掲の**微小領域群**(Microregion Group)Aを構成する**微小領域**α間の関係を**加法群**(Additive Group)すなわち加法単位元(Additive Identity Element)0を中心とする**等尺**(Isometric Scale)によって定めます。

```math
-α*∞,…-α-α,-α,α-α,α,α+α,…,α*∞
```
すると**自明の場合**(Trival Case)として**N次元球体**(NthD Ball)が構成されます。図形分類上は**偶数系**にカウントされる様です?
[【Python演算処理】階乗と順列と組み合わせ](https://qiita.com/ochimusha01/items/90d9ef0a224bdd604721)
[【Python演算処理】半径・直径・円周長・円の面積・球の表面積・球の体積の計算上の往復](https://qiita.com/ochimusha01/items/e180451a210227bb19a5)

* **1次元球体**(1D Ball)$N_1$は中心0、最小値-∞、最大値∞の線状分布、すなわち**実数列**(Real Sequence)に対応する(リー群$S_0$)。この次元における**単位図形**(Unit Shape)は中心0,最小値-1,最大値1の線分(長さ2)で、それを用いて全体を無限に分割する事が可能(かかる世界観における整数概念の定義の1つ)。
* **2次元球体**(2D Ball)$N_2$は中心0、半径0~∞の**同心円集合**(Concentric circle Set)を構成する。この次元における**単位図形**(Unit Shape)たる中心0、半径1の円弧は極めて重要な図形なので、**単位円**(Unit Circle)、**円周群**(Circle Group)、**リー群**$S_1$=**1次元トーラス**、**複素1次ユニタリ行列群**U(1)といった様々な名前を与えられている。
* **3次元球体**(3D Ball)$N_3$は中心0、半径0~∞の**同心球面集合**(Concentric circle Sphere　Set)を構成する。この次元における**単位図形**(Unit Shape)は中心0、半径1の**単位球面**(Unit Sphere)となる。

![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210618/20210618112402.gif)
Pythonによる実装例

```python
import numpy as np
import matplotlib.pyplot as plt
import numpy.random as random
import matplotlib.patches as patches
import matplotlib.animation as animation
%matplotlib inline

#単位円データ作成
c0=np.linspace(-np.pi,np.pi,61,endpoint = True)
s0=[]
for num in range(len(c0)):
    s0.append(complex(np.cos(c0[num]),np.sin(c0[num])))
s1=np.array(s0)

#描画準備
fig = plt.figure()
ax = plt.axes()

def circle_draw(n):
    plt.cla()
    plt.title("Concentric Circles")
    plt.xlabel("X")
    plt.ylabel("Y")
    plt.ylim([-4.0,4.0])
    plt.xlim([-4.0,4.0])
    # 同心円描画
    plt.plot(0,0,marker='x', color='green')
    circle1=patches.Circle((0,0),radius=1, fill=True, color='gray',lw=0.5,alpha=0.5)
    circle2=patches.Circle((0,0),radius=2, fill=True, color='gray',lw=0.5,alpha=0.2)
    circle3=patches.Circle((0,0),radius=3, fill=True, color='gray',lw=0.5,alpha=0.2)
    circle4=patches.Circle((0,0),radius=4, fill=True, color='gray',lw=0.5,alpha=0.2)
    circle5=patches.Circle((0,0),radius=5, fill=True, color='gray',lw=0.5,alpha=0.2)
    circle6=patches.Circle((0,0),radius=10, fill=True, color='gray',lw=0.5,alpha=0.2)    
    ax.add_patch(circle1)
    ax.add_patch(circle2)
    ax.add_patch(circle3)
    ax.add_patch(circle4)
    ax.add_patch(circle5)
    ax.add_patch(circle6)
    ax.set_aspect('equal', adjustable='box')
    #補助線描画
    plt.axvline(0, 0, 1,color="black",lw=0.5)
    plt.axhline(0, 0, 1,color="black",lw=0.5)
    #移動線描画
    plt.plot([0,s1[n].real*6],[0,s1[n].imag*6],color="green",lw=1)
    plt.plot(s1[n].real,s1[n].imag,marker='x', color='green')
    plt.plot(s1[n].real*2,s1[n].imag*2,marker='x', color='green')
    plt.plot(s1[n].real*3,s1[n].imag*3,marker='x', color='green')
    plt.plot(s1[n].real*4,s1[n].imag*4,marker='x', color='green')
    plt.plot(s1[n].real*5,s1[n].imag*5,marker='x', color='green')
    plt.plot(s1[n].real*6,s1[n].imag*6,marker='x', color='green')
#circle_draw(1)
#plt.show()

ani = animation.FuncAnimation(fig, circle_draw, interval=50,frames=len(s1))
ani.save("circle_draw60001.gif", writer="pillow")
```
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210625/20210625173338.gif)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210625/20210625173443.gif)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210625/20210625173410.gif)
pythonによる実装例

```python
%matplotlib nbagg
import math as m
import cmath as c
import numpy as num
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.animation as animation

#円柱データ作成
c0=num.linspace(0,m.pi*120,1201,endpoint = True)
s0=[]
for nm in range(len(c0)):
    s0.append(complex(m.cos(c0[nm]),m.sin(c0[nm])))
s1=num.array(s0)
z0=num.linspace(-1,1,1201,endpoint = True)

#断面線(z)
cutz0=num.linspace(-1,1,61,endpoint = True)
cutz=cutz0[::-1]
cutr=num.sqrt(1-cutz**2)

#「曲率」を計算
cv0=num.linspace(-1,1,1201,endpoint = True)
cv1=num.sqrt(1-cv0**2)

#単位円データ作成
u0=num.linspace(0,m.pi*2,61,endpoint = True)
u1=[]
for nm in range(len(u0)):
    u1.append(complex(m.cos(u0[nm]),m.sin(u0[nm])))
uc=num.array(u1)
uz0=num.repeat(-1,61)
uz1=num.repeat(0,61)
uz2=num.repeat(1,61)

#断面円
ucv0=num.linspace(-1,1,61,endpoint = True)
ucv=num.sqrt(1-ucv0**2)

#タイムテーブル
Tcode=np.linspace(0,m.pi*2,61,endpoint =True)

#グラフ表示
plt.style.use('default')
fig = plt.figure()
ax = Axes3D(fig)

#関数定義
def unit_cylinder(n):
    plt.cla()
    cutx0=[]
    cuty0=[]
    for nm in range(len(cutr)):
        cutx0.append(c.rect(cutr[nm],Tcode[n]).real)
        cuty0.append(c.rect(cutr[nm],Tcode[n]).imag)
    cutx=num.array(cutx0)
    cuty=num.array(cuty0)
    ucutz=num.full(61,cutz[n])
    #球面描画
    ax.plot(s1.real*cv1,s1.imag*cv1,z0,color="gray",lw=0.5)
    #半球面描画
    ax.plot(s1.real*cv1/2,s1.imag*cv1/2,z0/2,color="gray",lw=0.5)
    #スポーク描画
    #for num in range(len(uc)):
    #    ax.plot([0,uc[num].real],[0,uc[num].imag],[0,0],color="gray",lw=0.5)
    #for num in range(len(uc)):
    #    ax.plot([0,uc[num].real],[0,uc[num].imag],[1,1],color="gray",lw=0.5)
    for nm in range(len(uc)):
        ax.plot([0,uc[nm].real*ucv[n]],[0,uc[nm].imag*ucv[n]],[cutz[n],cutz[n]],color="purple",lw=0.5)
    #単位円描画
    ax.plot(uc.real,uc.imag,uz0,color="red",lw=1)
    ax.plot(uc.real,uc.imag,uz1,color="green",lw=1)
    ax.plot(uc.real,uc.imag,uz2,color="blue",lw=1)
    #半単位円描画
    ax.plot(uc.real/2,uc.imag/2,uz0,color="red",lw=1)
    ax.plot(uc.real/2,uc.imag/2,uz1,color="green",lw=1)
    ax.plot(uc.real/2,uc.imag/2,uz2,color="blue",lw=1)
    #固定線追加
    ax.plot([0,0],[0,0],[-1,1],color="black",lw=1.5)
    ax.plot([0,1],[0,0],[-1,-1],color="red",lw=1)
    ax.plot([0,cutx[n]],[0,cuty[n]],[0,cutz[n]],color="purple",lw=1)
    ax.plot([0,1],[0,0],[1,1],color="blue",lw=1)
    ax.plot([1,1],[0,0],[-1,0],color="red",lw=1)
    ax.plot([1,1],[0,0],[0,1],color="blue",lw=1)
    #回転線描画
    rollx=c.rect(1,Tcode[n]).real
    rolly=c.rect(1,Tcode[n]).imag
    ax.plot([0,rollx],[0,rolly],[0,0],color="purple",lw=1)
    ax.plot([0,-rolly],[0,rollx],[0,0],color="blue",lw=1)
    ax.plot([0,rolly],[0,-rollx],[0,0],color="red",lw=1)
    #垂直断面線描画
    ax.plot(cutx,cuty,cutz,color="purple",lw=1)
    ax.plot(-cuty,cutx,cutz,color="blue",lw=1)
    ax.plot(cuty,-cutx,cutz,color="red",lw=1)
    ax.plot([0,cutx[n]],[0,cuty[n]],[cutz[n],cutz[n]],color="purple",lw=1)
    ax.plot([0,-cuty[n]],[0,cutx[n]],[0,cutz[n]],color="blue",lw=1)
    ax.plot([0,cuty[n]],[0,-cutx[n]],[0,cutz[n]],color="red",lw=1)
    #半垂直断面線描画
    ax.plot(cutx/2,cuty/2,cutz/2,color="purple",lw=1)
    ax.plot(-cuty/2,cutx/2,cutz/2,color="blue",lw=1)
    ax.plot(cuty/2,-cutx/2,cutz/2,color="red",lw=1)
    ax.plot([0,cutx[n]/2],[0,cuty[n]/2],[cutz[n]/2,cutz[n]/2],color="purple",lw=1)
    ax.plot([0,-cuty[n]/2],[0,cutx[n]/2],[0,cutz[n]/2],color="blue",lw=1)
    ax.plot([0,cuty[n]/2],[0,-cutx[n]/2],[0,cutz[n]/2],color="red",lw=1)
    #水平断面円描画
    ax.plot(uc.real*ucv[n],uc.imag*ucv[n],ucutz,color="purple",lw=1)
    #半断面円描画 
    ax.plot(uc.real*ucv[n]/2,uc.imag*ucv[n]/2,ucutz/2,color="purple",lw=1)
    #諸元追加
    ax.set_ylim([-1.1,1.1])
    ax.set_xlim([-1.1,1.1])
    ax.set_zlim([-1.1,1.1])
    ax.set_title("Unit Cylinder")
    ax.set_xlabel("Real")
    ax.set_ylabel("Imaginal")
    ax.set_zlabel("Cycle")
    # グラフを回転(elev=45,0にすると水平表示に)
    ax.view_init(elev=45, azim=-45)

#azim=Time_code[n]と設定すると世界の側が回る。
Time_code0=num.arange(0,360,6)  
Time_code=Time_code0[::-1]  
#unit_cylinder(len(s1))
#plt.show()

ani = animation.FuncAnimation(fig, unit_cylinder, interval=50,frames=len(Time_code))
ani.save("cube202.gif", writer="pillow")
```
**N次元球体**のうち、我々が直感的に把握可能なのはほぼこの3種類のみだけなので、複数次元で構成される**数学的構造**（Mathematical Structure)は、適切な数理的操作によって、これらのどれかに収まる形に整形されてから操作対象とされる事が多い様です。特に著名なのは、物理学お得意の(1次元球体として独立性の高い次元を構成し、自明の場合として他次元との直行性が成立する)**時間軸**tの切り離し辺りでしょうか。
[数学的構造 - Wikipedia](https://ja.wikipedia.org/wiki/%E6%95%B0%E5%AD%A6%E7%9A%84%E6%A7%8B%E9%80%A0)

#乗法系微小領域群（<font color=blue>Multiplicative Microregion Group</font>）

次いで上掲の**微小領域群**(Microregion Group)Aを構成する**微小領域**α間の関係を**乗法群**(Multiplicative Group)すなわち**乗法単位元**(Additive Identity Element)1を中心とする**指数尺**(Exponential Scale)によって定めます。

```math
α^{-∞},…α^{-1},α^0,α^1,…,α^∞
```

* これは**加法的微小領域群**のうち、-∞~0の範囲(開集合)を0から1の範囲に、0を1に、1~+∞の範囲(開集合)を0~∞の範囲に射影した非負の開集合$y=α^i(i \in \mathbb{R},0<y<∞$)とも見てとれる。実際、添字の振る舞いは射影元の**加法的微小領域群**そのままとなる。
* また半径1の単位円に射影し、添字の符号が−の場合を（単位円の）**分割数**、添字の符号が＋の場合を（単位円の）**周回数**として元と逆元の関係に持ち込む群定義もある。この場合、それによって測られる一次元の数学的構造は**整数部**(Integer Part)と**少数部**(Decimal Part)に分離される。

[【Pyrhon演算処理】同心集合①乗法的同心集合とは？](https://qiita.com/ochimusha01/items/9ed0fa5871b3f913306a)

>**加法実数群**$(\mathbb{R},+)$は、**すべての正の実数が乗法についてなす群**$(\mathbb {R}^+,×)$に、**同型写像**$f(x)=e^x(x \in \mathbb{R})$によって同型である。

```math
(\mathbb {R},+) \cong (\mathbb{R}^{+},×)
```

>**加法整数群**$(\mathbb {Z},+)$は**加法実数群**$(\mathbb{R},+)$の部分群であり、**商群**$\frac{\mathbb{R}}{\mathbb{Z}}$は、**同型写像**$f(x+\mathbb {Z})=e^{2πxi}(x \in \mathbb{R})$によって**絶対値1の乗法複素数群**$S^1$あるいはリー群$S_1$に同型である。

```math
\frac{(\mathbb{R},+)}{(\mathbb{Z},+)} \cong S^1
```

[【オイラーの多面体定理と正多面体】内接円/球面の半径と外接円/球面の半径の狭間](https://qiita.com/ochimusha01/items/1312cc54694cf1a27e17)

>同心円集合に内接/外接する正多角形は、以下の2例のみ連鎖関係を構成する。

* 同心円集合の半径の推移を演算$2^n$に対応させると、それに内接/外接する正三角形の推移に合致する。

```math
E_n(n=-∞→0→+∞)=(E_{-∞}=\frac{1}{∞}=0,…,E_{-2}=2^{-2}=\frac{1}{4},E_{-1}=2^{-1}=\frac{1}{2},E_0=1,E_1=2^1=2,E_2=2^2=4,…,E_{+∞}=∞)
```

![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210621/20210621211329.gif)
Pythonによる実装例

```python
import numpy as np
import matplotlib.pyplot as plt
import numpy.random as random
import matplotlib.patches as patches
import matplotlib.animation as animation
%matplotlib inline

#単位円データ作成
c0=np.linspace(-np.pi,np.pi,61,endpoint = True)
s0=[]
for num in range(len(c0)):
    s0.append(complex(np.cos(c0[num]),np.sin(c0[num])))
s1=np.array(s0)

#正弾角形データ作成
c1=np.linspace(-np.pi,np.pi,4,endpoint = True)
s2=[]
for num in range(len(c1)):
    s2.append(complex(np.cos(c1[num]),np.sin(c1[num])))
s3=np.array(s2)

#描画準備
fig = plt.figure()
ax = plt.axes()

def circle_draw(n):
    plt.cla()
    plt.title("Concentric Circles")
    plt.xlabel("X")
    plt.ylabel("Y")
    plt.ylim([-2.1,2.1])
    plt.xlim([-2.1,2.1])
    # 同心円描画
    plt.plot(0,0,marker='x', color='green')
    circle1=patches.Circle((0,0),radius=4, fill=True, color='gray',lw=0.5,alpha=0.5)
    circle2=patches.Circle((0,0),radius=2, fill=True, color='gray',lw=0.5,alpha=0.2)
    circle3=patches.Circle((0,0),radius=1, fill=True, color='gray',lw=0.5,alpha=0.2)
    circle4=patches.Circle((0,0),radius=1/2, fill=True, color='gray',lw=0.5,alpha=0.4)
    circle5=patches.Circle((0,0),radius=1/4, fill=True, color='gray',lw=0.5,alpha=0.2)
    circle6=patches.Circle((0,0),radius=10, fill=True, color='gray',lw=0.5,alpha=0.2)    
    ax.add_patch(circle1)
    ax.add_patch(circle2)
    ax.add_patch(circle3)
    ax.add_patch(circle4)
    ax.add_patch(circle5)
    ax.add_patch(circle6)
    ax.set_aspect('equal', adjustable='box')
    #補助線描画
    plt.axvline(0, 0, 1,color="gray",lw=0.5)
    plt.axhline(0, 0, 1,color="gray",lw=0.5)
    #正三角形(内接円1/4)
    plt.plot(s3.real*1/4,s3.imag*1/4,color="gray",lw=1)
    plt.plot(-s3.real*1/4,s3.imag*1/4,color="gray",lw=1)
    #正三角形(内接円1.0)
    plt.plot(s3.real*1/2,s3.imag*1/2,color="gray",lw=1)
    plt.plot(-s3.real*1/2,s3.imag*1/2,color="gray",lw=1)    
    #正三角形(内接円1.0)
    plt.plot(s3.real,s3.imag,color="black",lw=1)
    plt.plot(-s3.real,s3.imag,color="black",lw=1)
    #正三角形(内接円1.0)
    plt.plot(s3.real*2,s3.imag*2,color="gray",lw=1)
    plt.plot(-s3.real*2,s3.imag*2,color="gray",lw=1)
    #正三角形(内接円1.0)
    plt.plot(s3.real*4,s3.imag*4,color="gray",lw=1)
    plt.plot(-s3.real*4,s3.imag*4,color="gray",lw=1)
    #移動線描画
    plt.plot([0,s1[n].real*6],[0,s1[n].imag*6],color="green",lw=1)
    plt.plot(s1[n].real*4,s1[n].imag*4,marker='x', color='green')
    plt.plot(s1[n].real*2,s1[n].imag*2,marker='x', color='green')
    plt.plot(s1[n].real*1,s1[n].imag*1,marker='x', color='green')
    plt.plot(s1[n].real*1/2,s1[n].imag*1/2,marker='x', color='green')
    plt.plot(s1[n].real*1/4,s1[n].imag*1/4,marker='x', color='green')
#circle_draw(1)
#plt.show()

ani = animation.FuncAnimation(fig, circle_draw, interval=50,frames=len(s1))
ani.save("circle_draw90008.gif", writer="pillow")
```

* 同心円集合の半径の推移を演算$2^{\frac{n}{2}}$に対応させると、それに内接/外接する正方形の推移に合致する。

```math
E_n(n=-∞→0→+∞)=(E_{-∞}=\frac{1}{∞}=0,…,E_{-2}=2^{-\frac{2}{2}}=2^{-1}=\frac{1}{2},E_{-1}=2^{-\frac{1}{2}}=\frac{\sqrt{2}}{2},E_0=1,E_1=2^{\frac{1}{2}}=\sqrt{2},E_2=2^{\frac{2}{2}}=2^1=2,…,E_{+∞}=∞)
```

![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210619/20210619222241.gif)
pythonによる実装例

```python
import numpy as np
import matplotlib.pyplot as plt
import numpy.random as random
import matplotlib.patches as patches
import matplotlib.animation as animation
%matplotlib inline

#単位円データ作成
c0=np.linspace(-np.pi,np.pi,61,endpoint = True)
s0=[]
for num in range(len(c0)):
    s0.append(complex(np.cos(c0[num]),np.sin(c0[num])))
s1=np.array(s0)

#描画準備
fig = plt.figure()
ax = plt.axes()

def circle_draw(n):
    plt.cla()
    plt.title("Concentric Circles")
    plt.xlabel("X")
    plt.ylabel("Y")
    plt.ylim([-2.1,2.1])
    plt.xlim([-2.1,2.1])
    # 同心円描画
    plt.plot(0,0,marker='x', color='green')
    circle1=patches.Circle((0,0),radius=2, fill=True, color='gray',lw=0.5,alpha=0.5)
    circle2=patches.Circle((0,0),radius=np.sqrt(2), fill=True, color='gray',lw=0.5,alpha=0.2)
    circle3=patches.Circle((0,0),radius=1, fill=True, color='gray',lw=0.5,alpha=0.2)
    circle4=patches.Circle((0,0),radius=1/np.sqrt(2), fill=True, color='gray',lw=0.5,alpha=0.2)
    circle5=patches.Circle((0,0),radius=1/2, fill=True, color='gray',lw=0.5,alpha=0.2)
    circle6=patches.Circle((0,0),radius=10, fill=True, color='gray',lw=0.5,alpha=0.2)    
    ax.add_patch(circle1)
    ax.add_patch(circle2)
    ax.add_patch(circle3)
    ax.add_patch(circle4)
    ax.add_patch(circle5)
    ax.add_patch(circle6)
    ax.set_aspect('equal', adjustable='box')
    #補助線描画
    plt.axvline(0, 0, 1,color="black",lw=0.5)
    plt.axhline(0, 0, 1,color="black",lw=0.5)
    #内内接立方体
    plt.plot([-1/2,1/2],[1/2,1/2],color="gray",lw=1)
    plt.plot([1/2,1/2],[1/2,-1/2],color="gray",lw=1)
    plt.plot([1/2,-1/2],[-1/2,-1/2],color="gray",lw=1)
    plt.plot([-1/2,-1/2],[-1/2,1/2],color="gray",lw=1)    
    #内接立方体
    plt.plot([-np.sqrt(2)/2,np.sqrt(2)/2],[np.sqrt(2)/2,np.sqrt(2)/2],color="gray",lw=1)
    plt.plot([np.sqrt(2)/2,np.sqrt(2)/2],[np.sqrt(2)/2,-np.sqrt(2)/2],color="gray",lw=1)
    plt.plot([np.sqrt(2)/2,-np.sqrt(2)/2],[-np.sqrt(2)/2,-np.sqrt(2)/2],color="gray",lw=1)
    plt.plot([-np.sqrt(2)/2,-np.sqrt(2)/2],[-np.sqrt(2)/2,np.sqrt(2)/2],color="gray",lw=1)    
    #単位立方体
    plt.plot([-1,1],[1,1],color="black",lw=1)
    plt.plot([1,1],[1,-1],color="black",lw=1)
    plt.plot([1,-1],[-1,-1],color="black",lw=1)
    plt.plot([-1,-1],[-1,1],color="black",lw=1)
    #外接立方体
    plt.plot([-np.sqrt(2),np.sqrt(2)],[np.sqrt(2),np.sqrt(2)],color="gray",lw=1)
    plt.plot([np.sqrt(2),np.sqrt(2)],[np.sqrt(2),-np.sqrt(2)],color="gray",lw=1)
    plt.plot([np.sqrt(2),-np.sqrt(2)],[-np.sqrt(2),-np.sqrt(2)],color="gray",lw=1)
    plt.plot([-np.sqrt(2),-np.sqrt(2)],[-np.sqrt(2),np.sqrt(2)],color="gray",lw=1)
    #外外接立方体
    plt.plot([-2,2],[2,2],color="gray",lw=1)
    plt.plot([2,2],[2,-2],color="gray",lw=1)
    plt.plot([2,-2],[-2,-2],color="gray",lw=1)
    plt.plot([-2,-2],[-2,2],color="gray",lw=1)
    #移動線描画
    plt.plot([0,s1[n].real*6],[0,s1[n].imag*6],color="green",lw=1)
    plt.plot(s1[n].real*2,s1[n].imag*2,marker='x', color='green')
    plt.plot(s1[n].real*np.sqrt(2),s1[n].imag*np.sqrt(2),marker='x', color='green')
    plt.plot(s1[n].real*1,s1[n].imag*1,marker='x', color='green')
    plt.plot(s1[n].real*np.sqrt(2)/2,s1[n].imag*np.sqrt(2)/2,marker='x', color='green')
    plt.plot(s1[n].real*1/2,s1[n].imag*1/2,marker='x', color='green')
#circle_draw(1)
#plt.show()

ani = animation.FuncAnimation(fig, circle_draw, interval=50,frames=len(s1))
ani.save("circle_draw70002.gif", writer="pillow")
```
いずれにせよここまでは一般の**乗法群**(Multiplicative Group)にも当てはまる考え方ですね。

* さらにN次元球体の概念に適応させるべく、0~+∞の範囲(開集合)を1~2の範囲に射影して半径が演算$α^{-|x|}$によって与えられる**同心円群**$M_i$を考える。N次元球体同様にi=1の時に線、i=2の時に円、i=3の時に球面を構成を構成する。
* この考え方は**リーマン球面**(Riemann Sphere)概念における**円錐座標系**の**球面座標系**(Spherical Coordinate System)への変換に該当する。この時、Z軸には**円錐座標系**の場合にも、**球面座標系**の場合にも、**1次元球体**$M_1$が射影される。<br>[リーマン球面 - Wikipedia](https://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%BC%E3%83%9E%E3%83%B3%E7%90%83%E9%9D%A2)<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/a550e645-f1b1-3b9a-1fbf-d7361f5f6760.png)

図形分類上は**奇数系**にカウントされる様です? こうして偶奇の概念が出揃ったので、加法的微小領域群と乗法的微小領域群を同じ座標形上に並置してみます。

![image.gif](https://camo.qiitausercontent.com/9e756e40dceca25c93c9517bc61e134658c8ae2e/68747470733a2f2f63646e2d616b2e662e73742d686174656e612e636f6d2f696d616765732f666f746f6c6966652f6f2f6f6368696d7573686130312f32303230313132362f32303230313132363032303830302e676966)

Rによる実装例

```R
#CVCM=等速円運動（Constant Velocity Circular Motion）
#Radian=角度（60分割）
CVCM<-function(Radian){
c0<-seq(0,2*pi,length=60)

#大円
cx<-cos(c0)
cy<-sin(c0)

#小円(奇数系)1個目
s1cx<-cos(c0)/2+cx[Radian]/2
s1cy<-sin(c0)/2+cy[Radian]/2

#小円(奇数系)2個目
s2cx<-cos(c0)/2+cx[Radian]+cx[Radian]/2
s2cy<-sin(c0)/2+cy[Radian]+cy[Radian]/2

#小円(偶数系)1個目
s1cx0<-cos(c0)/2
s1cy0<-sin(c0)/2

#小円(偶数系)2個目
s2cx0<-cos(c0)/2-cx[Radian]
s2cy0<-sin(c0)/2-cy[Radian]

#円描画
plot(cx,cy,asp=1,type="l",col=rgb(0,0,0),main="Even & Odd Circles",xlab="cos(θ)",ylab="sin(θ)")

#塗りつぶし（円全体）
polygon(cx, #x
cy, #y
density=c(30), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=c(200,200,200)) 　#塗りつぶす色

#塗りつぶし（奇数系小円1）
polygon(s1cx, #x
s1cy, #y
density=c(30), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=rgb(1,0,0)) 　#塗りつぶす色

#塗りつぶし（奇数系小円2）
polygon(s2cx, #x
s2cy, #y
density=c(30), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=rgb(1,0,0)) 　#塗りつぶす色

#塗りつぶし（偶数系小円1）
polygon(s1cx0, #x
s1cy0, #y
density=c(40), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=rgb(0,0,1)) 　#塗りつぶす色

#塗りつぶし（偶数系小円2）
polygon(s2cx0, #x
s2cy0, #y
density=c(40), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=rgb(0,0,1)) 　#塗りつぶす色

text(0,0,"(0,0,0,…)",col=rgb(0,0,0))
text(cx[Radian],cy[Radian],"(1,1,1,…)",col=rgb(0,0,0))
text(cx[Radian]/2,cy[Radian]/2,"(1/2,1/2,1/2,…)",col=rgb(0,0,0))

#対蹠の設定
segments(cx[Radian],cy[Radian],cx[Radian]/2,cy[Radian]/2,col=rgb(1,0,0))
segments(cx[Radian]/2,cy[Radian]/2,0,0,col=rgb(0,0,1))
#lines(s1cx,s1cy,col=rgb(0,1,0))
#lines(s1cx0,s1cy0,col=rgb(1,0,1))

#凡例
legend("bottomright", legend=c("Even Circles","Odd Circles"), lty=c(1,1), col=c(rgb(0,0,1),rgb(1,0,0))) 
}
#アニメーション
library("animation")
Time_Code=seq(1,59, length=30)
saveGIF({
for (i in Time_Code){
　CVCM(i)
}
}, interval = 0.1, movie.name = "CVCM05.gif")
```
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20220110/20220110053222.gif)
それぞれの**半径**(Radius)、 **円**(Circle)、**球面**(Sphere)に、それぞれの次元数に対応する加法系の$N_i$群か乗法系の$M_i$群が射影されます。どちらを選ぶかは、扱ってる**数学的構造**の視覚化に都合がいい様に好き勝手決めればいいと思います。

#直交座標系(<font color=blue>Cartesian Coordinates System</font>)や極座標系(<font color=blue>Polar Coordinates System</font>)との対応。

上掲の$N_i$群(加法系)や$M_i$群(乗法系)に角度θ(0<θ<2π)の概念を付加したのが**極座標系**(Polar Coordinates System)となります。これに**リー群**$S_1$(半径1の単位円)の直積(Direct Product)を対応させてみましょう。**リー群**$S_2$は大半径も小半径も共に1の**単位トーラス**(Unit Torus)、**リー群**$S_3$は**四元数**(Quaternion)に対応します。
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210625/20210625175636.gif)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210625/20210625175505.gif)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210625/20210625175534.gif)

```python
%matplotlib nbagg
import math as m
import cmath as c
import numpy as num
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.animation as animation

#円柱データ作成
c0=num.linspace(0,m.pi*120,1201,endpoint = True)
s0=[]
for nm in range(len(c0)):
    s0.append(complex(m.cos(c0[nm]),m.sin(c0[nm])))
s1=num.array(s0)
z0=num.linspace(-1,1,1201,endpoint = True)

#「曲率」を計算
cv0=num.linspace(-1,1,1201,endpoint = True)
cv1=num.sqrt(1-cv0**2)

#トーラス計算
s2=s1*(1+cv1)
s3=s1*(1-cv1)

#小半径追加
MiHz0=num.linspace(-1,1,61,endpoint = True)
MiHz=MiHz0[::-1]
MiPx=1+num.sqrt(1-MiHz**2)
MiMx=1-num.sqrt(1-MiHz**2)
MiBx=num.sqrt(1-MiHz**2)
MiHy=num.repeat(0,61)

#小半径アニメーション(元図形)
MiAh1=num.linspace(-1,1,31,endpoint =True)
MiAh2=num.linspace(-1,1,31,endpoint = False)
MiAh3=num.concatenate([MiAh1, MiAh2[::-1]])
MiAh=num.concatenate([MiAh3[14:61], MiAh3[0:13]])
MiAv1=1-num.sqrt(1-MiAh1**2)
MiAv2=1+num.sqrt(1-MiAh2[::-1]**2)
MiAv3=num.concatenate([MiAv2, MiAv1])
MiAv=num.concatenate([MiAv3[14:61], MiAv3[0:13]])

#小半径アニメーション(回転)
MiAvC0=[]
for nm in range(len(MiAv)):
    MiAvC0.append(complex(MiAv[nm],0))
MiAvC=num.array(MiAvC0) 

#単位円データ作成
u0=num.linspace(0,m.pi*2,61,endpoint = True)
u1=[]
for nm in range(len(u0)):
    u1.append(complex(m.cos(u0[nm]),m.sin(u0[nm])))
uc=num.array(u1)
uz0=num.repeat(-1,61)
uz1=num.repeat(-0,61)
uz2=num.repeat(1,61)

#グラフ表示
plt.style.use('default')
fig = plt.figure()
ax = Axes3D(fig)
Tcode=num.linspace(0,m.pi*2,61,endpoint =True)
#描画関数定義
def unit_cylinder(n):
    plt.cla()
    #断面計算
    MiAvD0=[]
    for nm in range(len(MiAvC)):
        MiAvD0.append(c.rect(MiAv[nm],Tcode[n]))
    MiAvD=num.array(MiAvD0) 
    MiBvD0=[]
    for nm in range(len(MiBx)):
        MiBvD0.append(c.rect(MiBx[nm],Tcode[n]))
    MiBvD=num.array(MiBvD0)
    MiCvD0=[]
    for nm in range(len(MiHz)):
        MiCvD0.append(c.rect(2,Tcode[n]))
    MiCvD=num.array(MiCvD0)
    #軌跡計算
    Orb_r=abs(MiAvD[n])
    Orb0=[]
    for nm in range(len(MiCvD)):
        Orb0.append(c.rect(Orb_r,Tcode[nm]))
    Orbv=num.array(Orb0)
    Orbh=num.repeat(MiAh[n],61)
    #断面1計算
    MiAvD10=[]
    for nm in range(len(MiAvC)):
        MiAvD10.append(c.rect(MiAv[nm],Tcode[0]))
    MiAvD1=num.array(MiAvD10) 
    MiBvD10=[]
    for nm in range(len(MiBx)):
        MiBvD10.append(c.rect(MiBx[nm],Tcode[0]))
    MiBvD1=num.array(MiBvD10)
    MiCvD10=[]
    for nm in range(len(MiHz)):
        MiCvD10.append(c.rect(2,Tcode[0]))
    MiCvD1=num.array(MiCvD10)  
    #円柱描画
    ax.plot(s2.real,s2.imag,z0,color="gray",lw=0.5)
    ax.plot(s3.real,s3.imag,z0,color="gray",lw=0.5)
    #単位円描画
    ax.plot(uc.real,uc.imag,uz1,color="blue",lw=1)
    #中心線描画
    ax.plot([0,0],[0,0],[-1,1],color="black",lw=1)
    #分割原点
    ax.plot([0,MiCvD1[0].real],[0,MiCvD1[0].imag],[-1,-1],color="green",lw=1)
    ax.plot([0,uc[0].real],[0,uc[0].imag],[0,0],color="blue",lw=1)
    ax.plot([uc[0].real,MiCvD1[0].real],[uc[0].imag,MiCvD1[0].imag],[0,0],color="green",lw=1)
    ax.plot([uc[0].real,uc[0].real],[uc[0].imag,uc[0].imag],[-1,1],color="green",lw=1)    
    ax.plot([uc[0].real,MiAvD1[0].real],[uc[0].imag,MiAvD1[0].imag],[0,MiAh[0]],color="green",lw=1)
    ax.plot([0,MiCvD1[0].real],[0,MiCvD1[0].imag],[1,1],color="green",lw=1)
    ax.plot([MiCvD1[0].real,MiCvD1[0].real],[MiCvD1[0].imag,MiCvD1[0].imag],[-1,1],color="green",lw=1)
    ax.plot(MiAvD1.real,MiAvD1.imag,MiAh,color="green",lw=1)
    ax.plot(MiBvD1.real,MiBvD1.imag,MiHz,color="blue",lw=1)
    #アニメーション描画
    ax.plot([0,MiCvD[n].real],[0,MiCvD[n].imag],[-1,-1],color="black",lw=1)
    ax.plot([0,uc[n].real],[0,uc[n].imag],[0,0],color="blue",lw=1)
    ax.plot([uc[n].real,MiCvD[n].real],[uc[n].imag,MiCvD[n].imag],[0,0],color="black",lw=1)
    ax.plot([uc[n].real,uc[n].real],[uc[n].imag,uc[n].imag],[-1,1],color="black",lw=1)    
    ax.plot([uc[n].real,MiAvD[n].real],[uc[n].imag,MiAvD[n].imag],[0,MiAh[n]],color="red",lw=1)
    ax.plot([0,MiCvD[n].real],[0,MiCvD[n].imag],[1,1],color="black",lw=1)
    ax.plot([MiCvD[n].real,MiCvD[n].real],[MiCvD[n].imag,MiCvD[n].imag],[-1,1],color="black",lw=1)
    ax.plot(MiAvD.real,MiAvD.imag,MiAh,color="red",lw=1)
    ax.plot(MiBvD.real,MiBvD.imag,MiHz,color="blue",lw=1)
    #軌跡描画
    ax.plot(Orbv.real,Orbv.imag,Orbh,color="red",lw=1)
    #諸元追加
    ax.set_ylim([-2.1,2.1])
    ax.set_xlim([-2.1,2.1])
    ax.set_zlim([-2.1,2.1])
    ax.set_title("Unit Cylinder")
    ax.set_xlabel("Real")
    ax.set_ylabel("Imaginal")
    ax.set_zlabel("Cycle")
    # グラフを回転
    ax.view_init(elev=25, azim=-45)

Tcode=num.linspace(0,m.pi*2,61,endpoint =True)
#Time_code0=num.arange(0,360,6) 
#Time_code=Time_code0[::-1] 
#unit_cylinder(15)
#plt.show()

ani = animation.FuncAnimation(fig, unit_cylinder, interval=50,frames=len(Time_code))
ani.save("torus001.gif", writer="pillow")
```
[【Rで球面幾何学】ハミルトンの四元数は何を表しているのか？](https://qiita.com/ochimusha01/items/aff8d52f20af01d13bed)
![output233.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210326/20210326101827.gif)

これらの対数写像をとると、それぞれリー群$S_2$が**方眼**(二次元直交座標系)、リー群$S_3$が**立方眼**(三次元直交座標系)に展開される。

**指数写像**(Exponential Map)…平面上の円を球面に展開する。半径πの縁が半径1の球面に対応。
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210627/20210627120906.gif)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210627/20210627120457.gif)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210627/20210627120837.gif)
pythonによる実装例

```python
%matplotlib nbagg
import math as m
import cmath as c
import numpy as np
from functools import reduce
from itertools import accumulate
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.animation as animation


#指数写像演算
def Napier_culc(ABS,n):
    RIM=ABS*m.pi*(0+1j)
    Tarm0=np.repeat(RIM/n,n)
    Tarm=np.concatenate([[(1+0j)],Tarm0])
    return accumulate(Tarm,lambda x,y:x+x*y)

#単位円データ作成
u0=np.linspace(0,m.pi*2,61,endpoint = True)
u1=[]
for nm in range(len(u0)):
    u1.append(complex(m.cos(u0[nm]),m.sin(u0[nm])))
uc=np.array(u1)
uz0=np.repeat(0,61)
uz1=np.repeat(1,61)
uz2=np.repeat(2,61)

#タイムテーブル
Tcode=np.linspace(0,m.pi*2,61,endpoint =True)

#グラフ表示
plt.style.use('default')
fig = plt.figure()
ax = Axes3D(fig)

#関数定義
def Exponential_map(n):
    plt.cla()
    #元(Element)算出
    Ed=np.array(list(Napier_culc(ABS,Time_Code[n])))-1
    #指数射影描画
    rollc0=[]
    for nm in range(len(Tcode)):
        rollxy0=[]
        for ni in range(len(Ed)):
            rollxy0.append(c.rect(Ed[ni].imag,Tcode[nm]))
        rollxy=np.array(rollxy0)
        rollc0.append(rollxy[len(rollxy)-1])
        ax.plot(rollxy.real,rollxy.imag,-Ed.real,color="gray",lw=0.5)
    rollc=np.array(rollc0)
    rollz=np.repeat(-Ed[len(Ed)-1].real,len(rollc))
    ax.plot(rollc.real,rollc.imag,rollz,color="black",lw=0.5)
    #円筒追加
    ax.plot(uc.real*np.pi,uc.imag*np.pi,uz0,color="green",lw=1)
    ax.plot(uc.real,uc.imag,uz0,color="green",lw=1)
    ax.plot(uc.real,uc.imag,uz1,color="green",lw=1)
    #スポーク描画
    for num in range(len(uc)):
        ax.plot([0,uc[num].real],[0,uc[num].imag],[1,1],color="olivedrab",lw=0.5)
    ax.plot(uc.real,uc.imag,uz2,color="green",lw=1)
    ax.plot([0,0],[0,0],[0,1],color="black",marker='x',lw=1)
    ax.plot([0,0],[0,0],[0,2],color="black",marker='x',lw=1)
    #諸元追加
    ax.set_ylim([-np.pi,np.pi])
    ax.set_xlim([-np.pi,np.pi])
    ax.set_zlim([0,np.pi*2])
    ax.set_title("Logarithmic Projection of Exponential Map")
    ax.set_xlabel("Imaginal x")
    ax.set_ylabel("Imaginal y")
    ax.set_zlabel("Real")
    # グラフを回転(elv=45,0で水平,90で垂直)
    ax.view_init(elev=45, azim=-45)

ABS=1
Time_Code=[1,2,4,8,16,32,64,128,256]

#Exponential_map(7)
#plt.show()

ani = animation.FuncAnimation(fig, Exponential_map, interval=100,frames=len(Time_Code))
ani.save("map100001.gif", writer="pillow")
```
**対数写像**(Logarithmic Map)…指数写像の逆に球面を平面に展開する。半径1の球面が、半径πの円弧に対応。
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210709/20210709162021.gif)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210709/20210709161934.gif)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210709/20210709161959.gif)
pythonによる実装例。

```python
%matplotlib nbagg
import math as m
import cmath as c
import numpy as np
from functools import reduce
from itertools import accumulate
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.animation as animation

#指数写像演算
def Napier_culc(ABS,n):
    RIM=ABS*m.pi*(0+1j)
    Tarm0=np.repeat(RIM/n,n)
    Tarm=np.concatenate([[(1+0j)],Tarm0])
    return accumulate(Tarm,lambda x,y:x+x*y)

#単位円データ作成
u0=np.linspace(0,m.pi*2,61,endpoint = True)
u1=[]
for nm in range(len(u0)):
    u1.append(complex(m.cos(u0[nm]),m.sin(u0[nm])))
uc=np.array(u1)
uz0=np.repeat(0,61)
uz1=np.repeat(1,61)
uz2=np.repeat(2,61)

#タイムテーブル
Tcode=np.linspace(0,m.pi*2,61,endpoint =True)

#グラフ表示
plt.style.use('default')
fig = plt.figure()
ax = Axes3D(fig)

#関数定義
def Exponential_map(n):
    plt.cla()
    #元(Element)算出
    Ed=np.array(list(Napier_culc(ABS,Time_Code[n])))-1
    #指数射影描画
    rollc0=[]
    for nm in range(len(Tcode)):
        rollxy0=[]
        for ni in range(len(Ed)):
            rollxy0.append(c.rect(Ed[ni].imag,Tcode[nm]))
        rollxy=np.array(rollxy0)
        rollc0.append(rollxy[len(rollxy)-1])
        ax.plot(rollxy.real,rollxy.imag,-Ed.real,color="gray",lw=0.5)
    rollc=np.array(rollc0)
    rollz=np.repeat(-Ed[len(Ed)-1].real,len(rollc))
    ax.plot(rollc.real,rollc.imag,rollz,color="black",lw=0.5)
    #円筒追加
    ax.plot(uc.real*np.pi,uc.imag*np.pi,uz0,color="green",lw=1)
    ax.plot(uc.real,uc.imag,uz0,color="green",lw=1)
    ax.plot(uc.real,uc.imag,uz1,color="green",lw=1)
    #スポーク描画
    for num in range(len(uc)):
        ax.plot([0,uc[num].real],[0,uc[num].imag],[1,1],color="olivedrab",lw=0.5)
    ax.plot(uc.real,uc.imag,uz2,color="green",lw=1)
    ax.plot([0,0],[0,0],[0,1],color="black",marker='x',lw=1)
    ax.plot([0,0],[0,0],[0,2],color="black",marker='x',lw=1)
    #諸元追加
    ax.set_ylim([-np.pi,np.pi])
    ax.set_xlim([-np.pi,np.pi])
    ax.set_zlim([0,np.pi*2])
    ax.set_title("Logarithmic Projection of Exponential Map")
    ax.set_xlabel("Imaginal x")
    ax.set_ylabel("Imaginal y")
    ax.set_zlabel("Real")
    # グラフを回転(elv=45,0で水平,90で垂直)
    ax.view_init(elev=45, azim=-45)

ABS=1
Time_Code=[1,2,4,8,16,32,64,128,256]
Time_Code.reverse()

#Exponential_map(7)
#plt.show()

ani = animation.FuncAnimation(fig, Exponential_map, interval=100,frames=len(Time_Code))
ani.save("map200001.gif", writer="pillow")
```

**直交座標系**(Cartesian Coordinates System)と**極座標系**(Polar Coordinates System)は、こういう意外な連続性を備えていたんですね。

#微小領域環(<font color=blue>Microregion Ring</font>)

**加法系微小領域群**と**乗法系微小領域群**を統合したのが、**微小領域環**(Microregion Ring)となります。とりあえず前者を垂直軸、後者を水平軸に射影すると**円筒座標系**(Cylindrical Coordinate System)が構成されますね。半径1の時、それは実数列そのものと一致します。上掲の様にここに割り当てるのは加法系の$N_1$群でも、乗法系の$M_1$群でも構いません。
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210623/20210623052916.gif)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210623/20210623051253.gif)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210623/20210623052623.gif)
Z軸上の1の位置にある単位円に対し、-1の位置にある単位円を水平に半周回すと円錐座標系に移動します。円錐対はXY面、XZ面、YZ面それぞれに通っていてy=x(傾き1)、y=-x(傾き-1)、絶対値関数などと接線を共有します。
[【初心者向け】線形関数や絶対値関数](https://qiita.com/ochimusha01/items/8b7050e65b599f9e15c2)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20220110/20220110060823.gif)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20220110/20220110060911.gif)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20220110/20220110060957.gif)
ここで興味深いのが、かかる円錐に沿って配された半径$\sqrt{2}$の円を回転させ、水平面から観測すると統計学でいう「**確率楕円**」が観測される事…
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20220110/20220110064455.gif)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20220110/20220110064425.gif)
その一方でZ軸上の+1と-1の位置を縦方向に回転させ、円錐表面に射影すると円→楕円→放物線→双曲線→十字線と離心率の式に沿った変化が現れる事。もしかしたら、ここに現れる放物線が統計学における**分散**(Variance)の概念と何か関わってくる？
[【連続極座標系】離心率εの極限に現れる虚数について。](https://qiita.com/ochimusha01/items/62300d5bceae7e9c5e1d)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20220110/20220110062809.gif)
とりあえずは、そんな感じで以下続報…