【Python演算処理】単位円筒(Unit Cylinder)を巡る数理

(2021年3月29日)pythonによる投稿。
(2021年4月12日)回転方向を反時計回りで統一。

これまでの投稿内容から浮かび上がってきた**単位円筒**(Unit Cylinder)の概念についてまとめておきたいと思います。

#単位円筒(<font color=blue>Unit Cylinder</font>)の定義
[【初心者向け】N進法(N-ary)とp進数(p-adic) - Qiita](https://qiita.com/ochimusha01/items/c0eed4799d21d9a01792)
>整数の除法に由来する**商群**(Factor Group)によって**実数概念**(Real Concept)を規定する場合を考える。ここでいう**商群**とは例えば10を法とする(<font color=blue>任意の整数を10で割った結果得られる</font>)10種類の剰余$G/N_{10}=(0,1,2,3,4,5,6,7,8,9)$を元とする集合で、この場合10段階を1周期とする**10進法**(Decimal System)に対応する。よく知られている様に**周期数**(Rap Set=周回集合)と**段階数**(Index Set=添字集合)を無限に入れ子状態にし続ける事により、その範囲内において任意の実数を表す事ができる。
>[商群 - Wikipedia](https://ja.wikipedia.org/wiki/%E5%95%86%E7%BE%A4)
>
>演算上それは(<font color=blue>1の冪根の演算結果集合たるガウス巡回群によって得られる</font>)**高さ**(垂直方面の分割数)と**辺数**(水平方面の分割数)を同じくする**多角形螺旋状1次元座標系**(Polygonal Spiral One-dimensional Coordinate System)とイメージされる。
>[【初心者向け】挟み撃ち定理による円周率πの近似](https://qiita.com/ochimusha01/items/1caff7d8af4aab167aaa)
>![image.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F597772%2F2d9ca0a6-6aa5-d545-32ad-9f336ff0cdb5.gif?ixlib=rb-1.2.2&auto=format&gif-q=60&q=75&w=1400&fit=max&s=db3e50aa3b3059287041cd2a1d04fa6f)
>![image.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fo%2Fochimusha01%2F20190920%2F20190920055851.gif?ixlib=rb-1.2.2&auto=format&gif-q=60&q=75&w=1400&fit=max&s=34d1581815d2f5ed27c563823978d6db)
>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/070d44f1-c293-feab-da70-51f71aaebdfa.png)

これを**単位円筒**(Unit Cylinder)と設定し、**周期数**(周回集合)や**段階数**(添字集合)として加法整数群を与える場合を検討していく形となります。

#加法整数群(<font color=blue>Additive Integer Group</font>)
[【初心者向け】群論概念(Group Theory Concept)①基本定義](https://qiita.com/ochimusha01/items/208dc0e68db64805e4f7)

```math
Z_n(n=-\infty→-1→0→1→+\infty)\\=(-\infty,…,-3,-2,-1,0,1,2,3,…,+\infty)
```
**群論**(Group Theory)における基本中の基本ですが、**単位円筒**概念導入に合わせた再定義が必要となるのです。

##自然数集合(<font color=blue>Natulal Set</font>)の準備

まず元(Element) として**自然数集合**(Natulal Set)、すなわち**初項**(First Term)$α=1$,**公差**(Common Difference)$d=1$,**一般項**(General Term)$α+(n-1)d$の**等差数列**(Arithmetic Sequence=算術数列)を準備します。

```math
N_n(n=1→\infty)\\
=(1+(1-1)×1=1,1+(2-1)×1=2,1+(3-1)×1=3,…,1+(\infty-1)×1=\infty)\\
=(1,2,3,…,Inf(inity))
```
以下の様に再帰的に考える事も出来ます。

```math
N_n(n=1→\infty)\\
=(1,1+1=2,(1+1)+1=3,…,\infty+1=\infty)\\
=(1,2,3,…,Inf(inity))
```
どちらの場合も範囲に**加法単位元**(Additive Identity)0を加えても添字範囲が拡張されるだけで**演算の連続性**(Operation Continuity)そのものは維持され(結合法則((Associative Law))の成立)、**演算結果**(Operation Result)も閉じています(整数以外の数が登場する余地がない)。
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210411/20210411223344.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(0,2,1201,endpoint = True)

#単位円データ作成
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(0,61)
uz1=num.repeat(1,61)
uz2=num.repeat(2,61)

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

#関数定義
def unit_cylinder(n):
    plt.cla()
    #円柱描画
    ax.plot(s1.real,s1.imag,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="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 num in range(len(uc)):
        ax.plot([0,uc[num].real],[0,uc[num].imag],[0,0],color="olivedrab",lw=0.5)
    #単位円描画
    ax.plot(uc.real,uc.imag,uz0,color="green",lw=1)
    ax.plot(uc.real,uc.imag,uz1,color="blue",lw=1)
    ax.plot(uc.real,uc.imag,uz2,color="blue",lw=1)
    #実数線追加
    ax.plot([1,1],[0,0],[0,2],color="blue",lw=1)
    ax.plot([0,1],[0,0],[0,0],color="black",lw=1)
    ax.plot([0,1],[0,0],[1,1],color="blue",lw=1)
    ax.plot([0,1],[0,0],[2,2],color="blue",lw=1)
    ax.plot([0,0],[0,0],[0,2],color="black",lw=1)
    #諸元追加
    ax.set_ylim([-1.1,1.1])
    ax.set_xlim([-1.1,1.1])
    ax.set_zlim([0.1,2.1])
    ax.set_title("Unit Cylinder")
    ax.set_xlabel("Real")
    ax.set_ylabel("Imaginal")
    ax.set_zlabel("Cycle")
    # グラフを回転
    ax.view_init(elev=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("output500.gif", writer="pillow")
```
##逆元(<font color=blue>Inverse Element</font>)の準備

上掲の**拡張自然数集合**(?)$N_n(n=0→\infty)(0,1,2,3,…,\infty)$について**逆元**(Inverse Element)$-N_n(n=-\infty→0)=(-\infty,…,-3,-2,-1,0)$を準備します。この場合も「**結合法則成立による演算の連続性の担保**」は成立し、**演算結果**も閉じています。
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210411/20210411224029.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(-2,0,1201,endpoint = True)

#単位円データ作成
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(-2,61)
uz1=num.repeat(-1,61)
uz2=num.repeat(0,61)

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

#関数定義
def unit_cylinder(n):
    plt.cla()
    #円柱描画
    ax.plot(s1.real,s1.imag,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="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 num in range(len(uc)):
        ax.plot([0,uc[num].real],[0,uc[num].imag],[0,0],color="olivedrab",lw=0.5)
    #単位円描画
    ax.plot(uc.real,uc.imag,uz0,color="red",lw=1)
    ax.plot(uc.real,uc.imag,uz1,color="red",lw=1)
    ax.plot(uc.real,uc.imag,uz2,color="green",lw=1)
    #実数線追加
    ax.plot([0,0],[0,0],[-2,0],color="black",lw=1)
    ax.plot([0,1],[0,0],[-0,0],color="black",lw=1)
    ax.plot([0,1],[0,0],[-1,-1],color="red",lw=1)
    ax.plot([0,1],[0,0],[-2,-2],color="red",lw=1)
    ax.plot([1,1],[0,0],[-2,0],color="red",lw=1)
    #諸元追加
    ax.set_ylim([-1.1,1.1])
    ax.set_xlim([-1.1,1.1])
    ax.set_zlim([-2.1,0.1])
    ax.set_title("Unit Cylinder")
    ax.set_xlabel("Real")
    ax.set_ylabel("Imaginal")
    ax.set_zlabel("Cycle")
    # グラフを回転
    ax.view_init(elev=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("output401.gif", writer="pillow")
```
#元と逆元の合成

上掲二つの**演算結果集合**(Operation Result Set)を一つの集合に**射影**(Projection)した**積**(Product)が**加法整数群**となります。この場合も「**結合法則成立による演算の連続性の担保**」は成立し、**演算結果**も閉じています。
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210411/20210411224605.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)

#単位円データ作成
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)

#関数定義
def unit_cylinder(n):
    plt.cla()
    #円柱描画
    ax.plot(s1.real,s1.imag,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="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 num in range(len(uc)):
        ax.plot([0,uc[num].real],[0,uc[num].imag],[0,0],color="olivedrab",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([0,0],[0,0],[-1,1],color="black",lw=1)
    ax.plot([0,1],[0,0],[-1,-1],color="red",lw=1)
    ax.plot([0,1],[0,0],[0,0],color="black",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)
    #諸元追加
    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")
    # グラフを回転
    ax.view_init(elev=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("output502.gif", writer="pillow")
```
#偶数群(<font color=blue>Even Group</font>)と奇数集合(<font color=blue>Odd Set</font>)
単位円筒で考える以上、ここでいわゆる「**ピッチ問題**」を検討しない訳にはいきません。

##ピッチ1(<font color=blue>周期1</font>)の場合の増減
以下の無限級数に対応。ここでは仮に**ラップ級数**(Rap Series)と呼ぶ。**加法整数群**の増減幅を1に定める案外重要な**演算**(Opreation)。

```math
1^n(n=-\infty→+\infty)=(1,…,1,1,1,…,1)
```
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210412/20210412045131.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*4,121,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,121,endpoint = True)

#単位円データ作成
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)

#関数定義
def unit_cylinder(n):
    plt.cla()
    #円柱描画
    ax.plot(s1.real,s1.imag,z0,color="black",lw=0.5)
    #スポーク描画
    for nm in range(len(s1)):
        ax.plot([0,s1[nm].real],[0,s1[nm].imag],z0[nm],color="gray",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([0,0],[0,0],[-1,1],color="black",lw=1)
    ax.plot([0,1],[0,0],[-1,-1],color="red",lw=1)
    ax.plot([0,1],[0,0],[0,0],color="green",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)
    #諸元追加
    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")
    # グラフを回転
    ax.view_init(elev=10, 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("output503.gif", writer="pillow")
```
**その水平位置からの観測結果**(互いに直交する周期1の$\cos(θ)$波と$\sin(θ)$波の検出)
![image.gif](https://staging-qiita-user-contents.imgix.net/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fo%2Fochimusha01%2F20210412%2F20210412045515.gif?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&w=1400&fit=max&s=7ee1eef42564fbc986a8ee5d0df0826d)
$\cos(θ)$波
![image.png](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210415/20210415100014.png)
$\sin(θ)$波
![image.png](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210415/20210415100154.png)

```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*4,121,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,121,endpoint = True)

#単位円データ作成
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)

#関数定義
def unit_cylinder(n):
    plt.cla()
    #円柱描画
    ax.plot(s1.real,s1.imag,z0,color="black",lw=0.5)
    #スポーク描画
    for nm in range(len(s1)):
        ax.plot([0,s1[nm].real],[0,s1[nm].imag],z0[nm],color="gray",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([0,0],[0,0],[-1,1],color="black",lw=1)
    ax.plot([0,1],[0,0],[-1,-1],color="red",lw=1)
    ax.plot([0,1],[0,0],[0,0],color="green",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)
    #諸元追加
    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")
    # グラフを回転
    ax.view_init(elev=0, 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("output504.gif", writer="pillow")
```
一見単純極まりない数理に見えますが、ここから突如として**ガンマ関数**(Γ Function)の概念が派生するから要注意です。
[【Python演算処理】階乗と順列と組み合わせ](https://qiita.com/ochimusha01/items/90d9ef0a224bdd604721)
[【Python演算処理】「N次球概念導入による円/球関係の数理の統合」？](https://qiita.com/ochimusha01/items/f7c9077eccfdbd0dd47a)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/dd2a94ec-dfc7-2a91-e9fc-613bc4dcf639.png)

##ピッチ1/2(<font color=blue>周期2</font>)の場合の増減
**交代級数**(Alternating Series)概念に対応。

```math
-1^n(n=-\infty→+\infty)=(-1,…,1,-1,1,…,-1)
```
[【数理考古学】解析学史に「虚数概念」をもたらした交代級数](https://qiita.com/ochimusha01/items/a338ea75855fcb4ff6f8)

![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210412/20210412045910.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*2,121,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,121,endpoint = True)

#単位円データ作成
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)

#関数定義
def unit_cylinder(n):
    plt.cla()
    #円柱描画
    ax.plot(s1.real,s1.imag,z0,color="black",lw=0.5)
    #スポーク描画
    for nm in range(len(s1)):
        ax.plot([0,s1[nm].real],[0,s1[nm].imag],z0[nm],color="gray",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([0,0],[0,0],[-1,1],color="black",lw=1)
    ax.plot([0,1],[0,0],[-1,-1],color="red",lw=1)
    ax.plot([0,-1],[0,0],[0,0],color="green",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)
    #諸元追加
    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")
    # グラフを回転
    ax.view_init(elev=10, 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("output505.gif", writer="pillow")
```
**その水平位置からの観測**(互いに直交する周期2の$\cos(θ)$波と$\sin(θ)$波の検出)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210412/20210412050306.gif)
$\cos(θ)$波
![image.png](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210415/20210415100637.png)
$\sin(θ)$波
![image.png](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210415/20210415101047.png)

```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*2,121,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,121,endpoint = True)

#単位円データ作成
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)

#関数定義
def unit_cylinder(n):
    plt.cla()
    #円柱描画
    ax.plot(s1.real,s1.imag,z0,color="black",lw=0.5)
    #スポーク描画
    for nm in range(len(s1)):
        ax.plot([0,s1[nm].real],[0,s1[nm].imag],z0[nm],color="gray",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([0,0],[0,0],[-1,1],color="black",lw=1)
    ax.plot([0,1],[0,0],[-1,-1],color="red",lw=1)
    ax.plot([0,-1],[0,0],[0,0],color="green",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)
    #諸元追加
    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")
    # グラフを回転
    ax.view_init(elev=0, 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("output506.gif", writer="pillow")
```
周期1でとった場合にΓ関数導入が自明の場合として導入されてくる様に、周期2でとった場合には**偶数群**(Even Group)と**奇数集合**(Odd Set)の概念導入が不可避となります。
[【数理考古学】とある実数列の規定例①等差数列から加法整数群へ](https://qiita.com/ochimusha01/items/07ae45b915bb1aa6c9f5)
![image.gif](https://camo.qiitausercontent.com/9e756e40dceca25c93c9517bc61e134658c8ae2e/68747470733a2f2f63646e2d616b2e662e73742d686174656e612e636f6d2f696d616765732f666f746f6c6966652f6f2f6f6368696d7573686130312f32303230313132362f32303230313132363032303830302e676966)
**実軸**(Real Axis)を成立させる為の**虚軸**(Imaginal Axis)の設定方法自体は（<font color=blue>それこそ「補助線」に過ぎないので</font>）どの様な形にも設定可能なのですが、どの場合でも全体を周期2の単位円筒2セットで表す**偶奇性**(Parity)概念の導入だけは避けられないのです。

Rによる「**偶奇性導入による整数表現**」実装例(-方向)
![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%252F20210105%252F20210105003122.gif%3Fixlib%3Drb-1.2.2%26auto%3Dformat%26gif-q%3D60%26q%3D75%26w%3D1400%26fit%3Dmax%26s%3D1c5e7641bb15c183f387fb9c6c92759a?ixlib=rb-1.2.2&auto=format&gif-q=60&q=75&s=8b3c1ac01fe5a4de036898e40dd0d907)
Rによる「**偶奇性導入による整数表現**」実装例(+方向)
![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%252F20210105%252F20210105071334.gif%3Fixlib%3Drb-1.2.2%26auto%3Dformat%26gif-q%3D60%26q%3D75%26w%3D1400%26fit%3Dmax%26s%3D6cc2d838c056f87959b9d35678b0d60a?ixlib=rb-1.2.2&auto=format&gif-q=60&q=75&w=1400&fit=max&s=302dce6d5da2947a562c26895875c993)

###偶数群(<font color=blue>Even Group</font>)
演算結果集合としては**区間**:**無限小**$-\infty$~0~**無限大**$+\infty$、**初項**0、**公差**±2、**一般項**±2nの両側無限数列を構成する。

```math
Even_n(n=-\infty→0→+\infty)=(-\infty,…,-2n,…,-2×2=-4,-2×1=-2,-2×0=0,-2×1=2,-2×2=4,…,2n,…,+\infty)
```
* その演算は**加減算**の範囲で閉じており(偶数+偶数=偶数、偶数-偶数=偶数)、**加法単位元**と**逆元**を備え、かつ**結合則**(a+b)+c=a+(b+c)を満たす(元と単位元と逆元が同じ等差数列上に連続する)ので群の成立条件を満たす。

###奇数集合(<font color=blue>Odd Set</font>)
演算結果集合としては**区間**:**無限小**$-\infty$~0~**無限大**$+\infty$、**初項**1、**公差**±2、**一般項**±2n+1の両側無限数列を構成する。

```math
Odd_n(n=-\infty→0→+\infty)=(-\infty,…,-2n+1,…,-2×2+1=-3,-2×1+1=-1,2×0+1=1,2×1+1=3,…,2n+1,…,+\infty)
```
あるいは

```math
Odd_n(n=-\infty→0→+\infty)=(-\infty,…,-2n-1,…,-2×2-1=-5,-2×1-1=-3,2×0-1=-1,2×1-1=1,2×2-1=3,…,2n+1,…,+\infty)
```
* その演算は**逆元**を備え、**結合則**(a+b)+c=a+(b+c)も満たすものの、**加法単位元**0は集合範囲外で演算結果も閉じてない(奇数+奇数=偶数、奇数-奇数=偶数)。ゆえに群の成立条件を満たさない。
* 関数における**奇関数**も(<font color=blue>その対称性ゆえにそれを備えない偶関数と異なり</font>)**逆関数**を備え常に一対で現れる。また幾何学における(<font color=blue>対蹠間を結ぶ直線が引けない</font>)**奇数角形の多角形**もまた(<font color=blue>それぞれ片側の対蹠にのみ接する</font>)一対として現れる。この様に「<font color=red>偶数の対称性</font>」と「<font color=red>奇数の双極性</font>」の対比は(<font color=blue>それぞれ形を変えながら</font>)あらゆる分野に普遍的に現れる。

とりあえず実用レベルでは「**単位円筒には大まかに分けて**(<font color=blue>偶奇の概念の導入方法がそれぞれこの様に異なる</font>)**2種類あって状況に応じた使い分けが必要**」程度の認識で構わないでしょう。実際、それまで数学史や物理学史の世界は(<font color=blue>ほとんど無意識のうちに自明の理っぽく</font>)この辺りを巧みに使い分けてきた訳で「<font color=red>ここを曖昧にしたままではコンピューター上で走らない</font>」現実に直面して初めて問題の重要性を直視した側面すらある訳です。

#固有ベクトル(<font color=blue>Eigenvector</font>)/固有値(<font color=blue>Eigenvalue</font>)概念の萌芽。

後者の場合はCos(θ)の増減に注目するなら、こうも図示可能だったりします。
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210412/20210412050653.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*4,121,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,121,endpoint = True)

#単位円データ作成
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)

#関数定義
def unit_cylinder(n):
    plt.cla()
    #円柱描画
    ax.plot(s1.real,s1.imag,s1.real,color="black",lw=0.5)
    #スポーク描画
    for nm in range(len(s1)):
        ax.plot([s1[nm].real,s1[nm].real],[s1[nm].imag,s1[nm].imag],[s1[nm].real,0],color="gray",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([0,0],[0,0],[-1,1],color="black",lw=1)
    ax.plot([0,-1],[0,0],[-1,-1],color="red",lw=1)
    ax.plot([0,1],[0,0],[0,0],color="green",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)
    #諸元追加
    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")
    # グラフを回転
    ax.view_init(elev=0, 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("output507.gif", writer="pillow")
```
まずは以下の数理との関連に興味が湧きます。

* **一次関数**(Linear Function)$y= \pm x$や$y= \pm |x|$を回転軸とする**確率楕円**の世界。上掲の「**Cos(θ)回転概念**」の上位互換で「**2本目/3本目の実数軸導入による円錐的空間展開**」を基調とする「**デカルト座標系**(Cartesian Coordinate System)」への拡張が視野に入ってくる(<font color=blue>あくまで「上位互換」なので、偶奇性概念との関連も出てくる。</font>)。<br>[【初心者向け】方形描画関数①三角関数との関係。](https://qiita.com/ochimusha01/items/9183360c0009cfac5b04)<br>![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%252F20201120%252F20201120124656.gif%3Fixlib%3Drb-1.2.2%26auto%3Dformat%26gif-q%3D60%26q%3D75%26w%3D1400%26fit%3Dmax%26s%3D63f478803a9bfd7a0cd59d7e4d79c0a7?ixlib=rb-1.2.2&auto=format&gif-q=60&q=75&w=1400&fit=max&s=89c2819870479d532dc94cd5c5704577)
<br>![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%252F20201120%252F20201120125126.gif%3Fixlib%3Drb-1.2.2%26auto%3Dformat%26gif-q%3D60%26q%3D75%26w%3D1400%26fit%3Dmax%26s%3Db4c10d7a3a0a42144baa87b2651b11ae?ixlib=rb-1.2.2&auto=format&gif-q=60&q=75&w=1400&fit=max&s=d458d445f7dd88cc8616bc8098905ffb)
<br>![image.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fo%2Fochimusha01%2F20201218%2F20201218180039.gif?ixlib=rb-1.2.2&auto=format&gif-q=60&q=75&w=1400&fit=max&s=8b4eb55139403aefd9499ad4b2756f91)
<br>![image.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fo%2Fochimusha01%2F20201218%2F20201218063808.gif?ixlib=rb-1.2.2&auto=format&gif-q=60&q=75&w=1400&fit=max&s=8cb56725775f434df555872b0d640157)
* 平面上は$\cos(θ)$のサイクルを適用した楕円の高さの増減によってシミュレーション可能な**球面座標上の回転**の世界。実軸wと互いに(<font color=blue>少なくとも一つのベクトルがそれ以外のベクトルの線形結合によって表される</font>)**線形従属**(linearly Dependent)関係にあるi,j,kの4軸によって構成される**四元数**(Quaternion)の座標系へと繋がっていく。<br>[線形独立性とは？ 線形従属性とは？](https://risalc.info/src/linearly-independent-dependent.html)<br>[【Rで球面幾何学】ジンバルロック(?)やリサージュ曲線(?)との邂逅。](https://qiita.com/ochimusha01/items/f59827f9f7d6122671ac)<br>![image.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fo%2Fochimusha01%2F20210322%2F20210322054209.gif?ixlib=rb-1.2.2&auto=format&gif-q=60&q=75&w=1400&fit=max&s=10830492c62693f6c7d7fc50c13774a9)<br>![image.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fo%2Fochimusha01%2F20210323%2F20210323232236.gif?ixlib=rb-1.2.2&auto=format&gif-q=60&q=75&w=1400&fit=max&s=3e481575f5723ec25ce335bf46be0fd5)
* 三次元デカルト座標系の展開が**3対6個の円錐**の幾何学的イメージを基調とする様に、四元数の展開は(<font color=blue>任意の球表面上における対蹠=立方対角線の両端を出発点とする</font>)**立方体**の幾何学的イメージを基調とする。<br>[【初心者向け】線形関数や絶対値関数](https://qiita.com/ochimusha01/items/8b7050e65b599f9e15c2)<br>![image.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fo%2Fochimusha01%2F20201120%2F20201120124110.gif?ixlib=rb-1.2.2&auto=format&gif-q=60&q=75&w=1400&fit=max&s=3837216a67faea20b81bdf603119c5e8)
<br>[【オイラーの多面体定理と正多面体】正方形における平方対角線と立方体における立方対角線の関係について。](https://qiita.com/ochimusha01/items/9d899779ff8e814beb41)<br>![image.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fo%2Fochimusha01%2F20201121%2F20201121223947.gif?ixlib=rb-1.2.2&auto=format&gif-q=60&q=75&w=1400&fit=max&s=a4d1c7d76ae134afb8a905486b8ed6bf)
<br>![image.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fo%2Fochimusha01%2F20201121%2F20201121224728.gif?ixlib=rb-1.2.2&auto=format&gif-q=60&q=75&w=1400&fit=max&s=d3218ea17a11411eadc10c33c2ab44f2)


そう、どの場合も原則として(<font color=blue>立体空間上の円弧の回転操作を側面から観察した</font>)平面空間における楕円の変形過程が「**直交する2軸の値の増減の連動**」と見て取れるのが特徴で、**線形代数**(linear Algebra)の世界においては、おそらくここでいう「**直交する2軸**」が「**固有ベクトル**(Eigenvector)」、「(<font color=blue>連動して変動する</font>)**2軸の値**」が「**固有値**(Eigenvalue)」の概念で掌握される展開を迎えると思われます(<font color=red>不勉強につき断言までは出来ない</font>)。
[線形代数の基礎 第12回 - 固有値・固有ベクトル - Qiita](https://qiita.com/nognog/items/05766c319658efecf61f)
[線形代数の基礎 第13回 - 対角化 - Qiita](https://qiita.com/nognog/items/92a000a33ca755bfce3b)

ただし**単位円筒の世界**はあくまで(<font color=blue>z軸の値を「xy面上の演算結果に特定の形で紐付けられた」単純形でのみ認識する</font>)**実軸**(Real Axis)1本のみが実在し、他の座標軸全てを(<font color=blue>なまじこれと直交し、線形独立を果たしているが故に任意の設定が導入可能な</font>)**虚軸**(Imaginal Axis)に追いやる一次元的世界観に過ぎず、こうした考え方の導入は(<font color=blue>座標系全体の基本設定に影響を与えない</font>)オプションの一つとしか捉えられない訳です(<font color=blue>逆をいえば、だからこそデカルト座標系と四元数座標系の導入がチャンポンに並列的に考えられたりもする</font>)。しばしば世間は「<font color=red>虚数は実在するか?</font>」といった話題で盛り上がりますが、こう考えてしまうと残念ながらその話題自体には別に深淵な哲学的意味合いは内在してないと断言せざるを得ません。そう、あくまでどこまでがその座標系の**実数軸**に標準的に組み込まれ、どこからが**虚数軸**としてその外側に置かれるかは全て「**観測側が自ら設けた認識上の限界設定**」に依存しているに過ぎないのです。深淵な哲学的意味合いに飢えているなら、むしろ「**その峻別は観察対象を説明する上で本当に適切か**」についてこだわり抜くべきでしょう。
[線形代数６｜線形独立のイメージと線形独立性とランクの関係](https://math-note.xyz/linear-algebra/linear-independence/)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/c08c2fb2-9b39-d4d9-8054-2ab4066355ef.png)

#離心率(<font color=blue>Eccentricity</font>)概念との関連性の萌芽

ついでに上掲の「**cos(θ)回転図**」について「**円が垂直に立つ**」の極限状態を想定してみます。**円筒系座標系**(Cylinder Coordinate System)を**球面系座標系**(Spherical Coordinate System)に拡張する際に必ず通らねばならない重要な関門の一つとなるのです。

* 理論上、Z軸に位置する一対の「**対蹠円**」の**半径**を$1→0$、**中心からの距離**(絶対値)を$1→\infty$に近づける形で近似される(到達は不可能)。<br>![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210412/20210412050653.gif)
* 究極的にはZ軸を**均等尺**から**円尺**に推移させる形で対応される。<br>![image.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fo%2Fochimusha01%2F20210322%2F20210322054209.gif?ixlib=rb-1.2.2&auto=format&gif-q=60&q=75&w=1400&fit=max&s=10830492c62693f6c7d7fc50c13774a9)

どうやら(<font color=blue>実際にはそこに真円が置けないとされる一方、反対側の極限状態として放物線や双曲線が出現する</font>)**離心率の数理**と何か関係がありそうだ?(<font color=red>不勉強につき断言までは出来ない</font>)<br>[【無限遠点を巡る数理】離心率①二次曲線（楕円，放物線，双曲線）の極座標表示からの出発。](https://qiita.com/ochimusha01/items/9c709cd0e43a84bfc484)<br>![image.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fo%2Fochimusha01%2F20210201%2F20210201225433.gif?ixlib=rb-1.2.2&auto=format&gif-q=60&q=75&w=1400&fit=max&s=987568abda57d193bfd4609cfec402b8)

この問題については知識が全然足りていないので、今の私には全く論じる事が出来ません。そもそも取っ掛かりが全然見つからなくて絶賛放置中…

#最後に(<font color=blue>To be continued=以下続報</font>)

数年がかりで試行錯誤しながら理解を進めてきましたが、全体像を俯瞰するとたったこれだけの事に過ぎないんですね。以降も逐次追記していきます。