以下の投稿までに実数列(Real Sequance)を単位円(Unit Circle)の円筒座標系(Cylindrical Coordinate System)と規定し、これを環(Ring)概念の出発点と置きました。
【Pyrhon演算処理】同心集合①乗法的同心集合とは?
【Pyrhon演算処理】同心集合②加法的同心集合とは?
- 要するに(小数点下を切り捨てる)整数環(Integer Ring)概念を引き摺り「半群(Semigroup)」なる方便を導入する以下の様な定義が気に食わなかったのです。
台集合に「加法(和)」および「乗法(積)」と呼ばれる二種類の二項演算を備えた代数系になっており、最もよく知られた環の例は、整数全体の成す集合に自然な加法と乗法を考えたものである(これは乗法が可換だから可換環の例でもある)。
ただし、それが環と呼ばれるためには、環の公理として、加法は可換で、加法と乗法はともに結合的であって、乗法は加法の上に分配的で、各元は加法逆元をもち、加法単位元が存在すること、が全て要求される。従って、台集合は加法のもと「加法群」と呼ばれるアーベル群を成し、乗法のもと「乗法半群」と呼ばれる半群であって、乗法は加法に対して分配的であり、またしばしば乗法単位元を持つ。
それで以下の投稿においては加法実数群(Additive Real Group)と乗法実数群(Multiplicative Real Group)の統合を指数/対数写像(Exponential/Logarithmic Map)の概念を用いて説明しようと試みました。
【数理考古学】群論とシミュレーション原理⑧族の分類とそれに下属する演算集合の関係の整理
乗法実数群とは加法実数群の指数写像(Exponential Map)に他ならない。
加法実数群 | 乗法実数群 | |
---|---|---|
0 | -∞ | 0 |
1 | -1 | exp(-1) |
2 | 0 | 1 |
3 | 1 | exp(+1) |
4 | +∞ | ∞ |
import numpy as np
import pandas as pd
X1 = np.matrix([
["-∞","-1","0","1","+∞"],
["0","exp(-1)","1","exp(+1)","∞"]])
x=X1.transpose()
df=pd.DataFrame(x,columns=['加法実数群', '乗法実数群'])
sp.init_printing()
org=df.to_html()
print(org.replace('\n', ''))
従って逆に加法実数群とは乗法実数群の対数写像(Logarithmic Map)に他ならない。
乗法実数群 | 加法実数群 | |
---|---|---|
0 | 0 | -∞ |
1 | exp(-1) | -1 |
2 | 1 | 0 |
3 | exp(+1) | 1 |
4 | ∞ | +∞ |
import numpy as np
import pandas as pd
X1 = np.matrix([
["0","exp(-1)","1","exp(+1)","∞"],
["-∞","-1","0","1","+∞"]])
x=X1.transpose()
df=pd.DataFrame(x,columns=['乗法実数群', '加法実数群'])
sp.init_printing()
org=df.to_html()
print(org.replace('\n', ''))
この操作によって加法実数群における乗除算は乗法実数群における加減算に、加法実数群における冪算は乗法実数群における乗算に対応付けられる。
【数理考古学】常用対数表を使った計算
もちろんこの定義が全ての環に当てはまる保証などありません。しかしとりあえず加法同心群(Additive Concentric Group)と乗法同心群(Multiplicative Concentric Group)を同心環(Concentric Ring)に統合する役割くらいは果たせそうに見えるのです。
#空環(Empty/Nullary Ring)概念からの再出発
【数理考古学】とある実数列の規定例③オイラーの等式が意味するもの?
空環概念(Empty/Nullary Ring Concept)とは空集合(Empty/Nullary Set)$\emptyset _n(n=0)=()$が「空和概念(Empty/Nullary Sum Concept)」の規約と「空積概念(Empty/Nullary Product Concept)」の規約の両方を満たす為、環(Ring)として認識される事をいう。
###空積概念(Empty/Nullary Product Concept)
ここでいう「空積概念(Empty/Nullary Product Concept)の規約」とは、群論(Group Theory)における、空集合概念(Empty/Nullary Set)$\emptyset _n(n=0)=()$について「0個の因子を掛け合わせた演算結果集合(Operation Result Set)で、乗法単位元(Multiplicative Identity)1に等しい(():=1)」とする規約をいう。
二項演算(Binary Operation)のうち、乗除算(Multiplying and Dividing)すなわち乗法単位元(Multiplicative Identity)$1×Α×Β(Α×(1/Β))$においては任意の元(Any Element)$Α_n(n=0)()=Β_n(n=0)()=Γ_n(n=0)()=1$となるので結合則(Associative Law)1×(Α×Β)×C+…=1×Α×(Β×C)×…も交換則(Commutative Law)1×Α×Β×…=1×Β×Α×…も成立し、その演算結果は閉じている(演算の都度1=()に戻る)。
二項演算(Binary Operation)のうち、冪算(Exponentiation)それ自体こそ分配法則や交換法則を満たさないものの、その計算範囲自体は上掲の演算に内包され、自明の理としてその演算結果も同じ範囲で閉じている($…A^2=A×A,A^2=A,A^0=\frac{A}{A}=1,A^-1=\frac{1}{A},A^-2=\frac{1}{A×A},…・$)。
- 観測限界(Observation Limit)∞を点と置いた場合、観測原点(Observation Origin)0との距離$x$(範囲0~∞)は、何倍にしても何分の1にしても値は変わらない。
- ただし例外的に$\frac{x}{x}=1$となり、これが乗法単位元(Multiplicative
Identity)の概念の出発点になる。
###空和概念(Empty/Nullary Sum Concept)
「空和概念(Empty/Nullary Sum Concept)の規約」とは、群論(Group Theory)上における、空集合(Empty/Nullary Set)$\emptyset_n(n=0)=()$について「0個の因子を足し合わせた演算結果集合(Operation Result Set)で、加法単位元(Additive Identity)0に等しい(():=0)」とする規約をいう。
二項演算(Binary Operation)のうち、加減算(Addition and Subtraction)すなわち加法単位元(Additive Identity)$0+Α+Β(Α+(-Β))$においては任意の元(Any Element)$Α_n(n=0)()=Β_n(n=0)()=Γ_n(n=0)()=0$なので結合則(Associative Law)0+(Α+Β)+C+…=0+Α+(Β+C)+…も交換則(Commutative Law)0+Α+Β+…=0+Β+Α+…も成立し、その演算結果は閉じている(演算の都度0=()に戻る)。
- 観測限界∞を観測原点0との距離$x$(範囲0~∞)を半径とする円弧/球面と置いた場合、それをどんなに足し合わせても値は変わらない。
- ただし例外的に$x-x=0$となり、これが加法単位元(Additive Identity Identity)の概念の出発点になる。
この時点ではあくまで空集合$\emptyset _n(n=0)()$=(加減算における単位元)0=(乗除算における単位元)1と規約されるだけで$\emptyset _n(n=2)=(0,1)$が成立する訳ではない点に注意されたい。実際、単元集合(Singleton)/単位集合(Unit Set)$Α_n(n=1)=(0)$及び$Β_n(n=1)=(1)$、さらには二つを合算した集合$Γ_n(n=2)=(0,1)$全てが空環/空群$\emptyset(n=0)=()$と異なりそれ自体は群も環も構成しないのである。
そしてこの一見異なる2つの幾何学的イメージ(空和概念は観測限界を円周と認識し、空積概念は同じそれを点と認識する)を環概念(Ring Concept)に統合するのが指数/対数写像(Exponential/Logarithmic Map)概念という訳です。群論でいう群同型(Group Isomorphic)の考え方ですね。
群同型写像(Group Isomorphism)とは、与えられた2つの群の元の一対一対応(One-to-One Correspondence,「全単射」あるいは「直積」とも)において、それぞれの群演算を両立する全単射関数である。2つの群の間に同型写像が存在すればそれは同型(Isomorphic)と呼ばれ、群論の見地からは同じ性質を持つとされ区別する必要がなくなる。
全単射 - Wikipedia
直積集合 - Wikipedia
- 一対一対応(全単射、直液)の集合論的表現は以下。
A \times B=((a,b)\mid a\in A\land b\in B)
- 「加法空群は乗法空群と群同型である(従って環として統合可能である)」の数学的表現は以下。
(\emptyset,+) \cong (\emptyset,×)
実際にプログラミングしてみると以下の様に「巾着袋の口を締める」イメージのアニメーションが現れます。確かに「観測限界の円周と点の間の往復」が見て取れますね。これが(半径が1の時に実数列そのものとして振る舞う円筒座標系としての)同心環(Concentric Ring)のもう一つの姿なのです。
%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")
この考え方を援用すれば(加法群と乗法群の統合結果で、半径が乗法単位元1の場合に実数列そのものとして振る舞う)円柱座標系(Cylindrical Coordinate System)と(乗法群の特殊発展例ながら周回運動において加法群の様な振る舞いも見せる)トーラス座標系(Torus Coordinate System)を群同型(Group Isomorphism)として統合する事が可能となる筈です。
【Pyrhon演算処理】同心集合②加法的同心集合とは?
【Pyrhon演算処理】同心集合①乗法的同心集合とは?
トーラスの表面積は底面が半径rで高さが2πRの円柱の側面積に等しく、体積はその円柱と同値となる。
とどのつまり両者の表面積と体積がこういう関係にある事は、決して偶然ではなかったという事ですね。
#乗法同心群(円筒座標系の水平軸)と加法同心群(半径1の時に実数列とピッチが一致する円筒座標系の垂直軸)を環概念(Ring Concept)に統合する指数/対数写像(Exponential/Logarithmic Map)とは?
順を追ってこれまでの検証内容を検証していく事にします。
①そもそも指数/対数写像(Exponential/Logarithmic Map)の本質には既に以下の投稿で迫っていたのである。この時点で既にその変換過程がネイピア数の導出式たる$(1±\frac{πi}{n})^n$で表せる事、その始点が実数軸に対して垂直に交わる±πi(半周)や±2πi(一周)で示せる事も明らかになっていた。
【Rで球面幾何学】「世界で一番美しい公式」オイラーの等式の罠?
- ただし当時の私はここで冪乗関数$π^n$の罠に引っ掛かって頭を混乱させてしまう。
【無限遠点を巡る数理】「名状し難きもの問題」を世に解き放つ。
②「加法実数群の対数写像が乗法実数群になる」原理そのものについても一応は常用対数表への考察からたどり着いていた。
【数理考古学】常用対数表を使った計算
群論上の定義は以下の様になっている。
群同型 Wikipedia
加法実数群$(\mathbb{R},+)$は、すべての正の実数が乗法についてなす群$(\mathbb {R}^+,×)$に、同型写像$f(x)=e^x(x \in \mathbb{R})$によって同型である:
(\mathbb {R},+) \cong (\mathbb{R}^{+},×)
- これは私が冒頭で掲げた「加法実数群(Additive Real Group)と乗法実数群(Multiplicative Real Group)の指数/対数写像(Exponential/Logarithmic Map)を用いての統合」そのものの定義となっている。
③大半径も小半径も1の単位トーラス(Unit Torus)は(コンピューターRPGゲームに使われる上端が下端、左端が右端に連結した世界マップの様な)平坦トーラス(Frat Torus)に展開可能で、この時その面積は2π×2πで表される。逆を言えばこれを単位方眼に対応させるには各辺を$\frac{1}{2π}$倍すれば良いのである。
【Python演算処理】単位トーラスを巡る数理①平坦トーラスとの往復
④一方「半径1の円筒座標系を用いれば実数列全体を表せる」は、群論の定義では以下となっている。
群同型 Wikipedia
加法整数群$(\mathbb {Z},+)$は加法実数群$(\mathbb{R},+)$の部分群であり、商群$\frac{\mathbb{R}}{\mathbb{Z}}$は、同型写像$f(x+\mathbb {Z})=e^{2πxi}(x \in \mathbb{R})$(x=0→2π)によって絶対値1の乗法複素数群$S^1$に同型である:
\frac{(\mathbb{R},+)}{(\mathbb{Z},+)} \cong S^1
-
商群(Quotient Group/Factor Group)とは要するに剰余群の事であり、この座標系において各座標系を周回数(整数)で割った余りは自明の場合(Trival Case)として何らかの形で複素平面上の単位円の円弧上の位置によって表されるという訳である。
商群 - Wikipedia
商群 [物理のかぎしっぽ] - 現段階の私には、ここでいう$S^1$が1次元トーラスでもあるリー群$S_1$の事としか思えないが、いかんせん罠だらけの群論表現なので、ここはあえて膾を吹いて断言まではしないでおく。
リー群 - Wikipedia - 以前から私は学校で習った「数直線上における自然数→整数→有理数→実数→複素数という自明な発展」なる考え方に反感を覚えていて、それでコンピューター流の「十進法の無限入れ子導入による整数列の実数列への漸近」なる方便を導入したりしてきた訳だが、なるほど群論上の規定はこうなっている訳である。この様に「実数列の定義が整数列に直行する単位円」までの言及で閉じてしまう以上、迂闊に(指数・対数写像をコンピューター上でアニメーションさせる上で不可避的に登場する)乗法的同心集合$π^n$に言及する危険も回避出来るという仕組みになっているらしい。
いずれにせよ、上記内容から乗法同心群と加法同心群を環概念に統合する指数**/対数写像(Exponential/Logarithmic Map)は$f(x)=e^{xi}(x \in \mathbb{R} \land 0 \leqq x \leqq 2π)$と推測されるので、以降はその事を前提に話を進めていきます。
e^{2πi}(exp(0+6.283185i))=\cos(2π)+\sin(2π)i=1+0i\\
e^{πi}(exp(0+3.141593i))=\cos(π)+\sin(π)i=-1+0i\\
-e^{πi}(-exp(0+3.141593i))=-\cos(π)-\sin(π)i=1+0i
また
-1^n=±i^{2n}\\
-1^1=±i^{2}=-1\\
-1^2=±i^{2*2}=1
- 一見「進数的発想を導入して整数列を実数列に拡張した」点で私の「10進数方便」と同路線に見えるが、Γ関数の概念が飛び出してくるのはこちらの路線からである。群論の表現は概ね伊達に難解なのではなく、例外の除去を想定した厳密解を導出する為にそうなっている事が多いので油断ならない。
Python演算処理】階乗と順列と組み合わせ -
指数写像を$f(x+\mathbb {Z})=e^{2πxi}(x \in \mathbb{R})$(x=0→2π)と捉える考え方は複素解析(Complex Analysis)の世界が多価関数(Multivalued Function)解消の為に分岐点(Branch Point)の方便を用いるのに対応する。
分岐点 (数学) - Wikipedia
やっとこの話題の近傍における数学上の「勢力関係」が朧げながら見えてきた気がします。
#偶奇性(Parity)概念と指数・対数写像
群同型概念の導入は群概念そのものの見直しにもつながってきます。
【数理考古学】群論概念①基本定義
【Pyrhon演算処理】同心集合②加法的同心集合とは?
- まず加法単位元(Additive Identity)0の概念を追加した**「元**(Rlement)=観測原点0と観測限界∞を含まない正の実数列」Aを用意する。
- それに対する逆元(Inverse Element)$A^{-1}$を準備する。
- 両者を結合する。
ところで実は上掲の共役複素数(半周分一対)を用いた「指数・対数写像アニメーション」ではちょっとしたインチキをやらかしています(実際には0+1iの共益複素数0-1iは進行方向も真逆)。
そのまま素直にプログラミングすると以下の様になるのです。
%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)
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(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="blue",lw=1)
ax.plot(uc.real,uc.imag,uz2,color="blue",lw=1)
ax.plot(uc.real,uc.imag,-uz1,color="red",lw=1)
ax.plot(uc.real,uc.imag,-uz2,color="red",lw=1)
#スポーク描画
for num in range(len(uc)):
ax.plot([0,uc[num].real],[0,uc[num].imag],[1,1],color="blue",lw=0.5)
ax.plot([0,uc[num].real],[0,uc[num].imag],[-1,-1],color="red",lw=0.5)
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.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([-np.pi,np.pi])
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("map300001.gif", writer="pillow")
これは加法群の生成過程であるのと同時に(逆関数を備える)奇数集合(Odd Set)2n+1の振る舞いそのものですね。(逆関数を備えない)偶数群2nに対応するアニメーションは以下となります。
%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-1,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-1,color="black",lw=0.5)
#円筒追加
ax.plot(uc.real*np.pi,uc.imag*np.pi,-uz1,color="red",lw=1)
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,-uz1,color="red",lw=1)
#スポーク描画
for num in range(len(uc)):
ax.plot([0,uc[num].real],[0,uc[num].imag],[0,0],color="green",lw=0.5)
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.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([-np.pi,np.pi])
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("map400001.gif", writer="pillow")
こちらは逆から試みても同じ結果(演算結果集合の元がぴったりと重なり合う)となります。
%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+1,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+1,color="black",lw=0.5)
#円筒追加
ax.plot(uc.real*np.pi,uc.imag*np.pi,uz1,color="blue",lw=1)
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,-uz1,color="red",lw=1)
#スポーク描画
for num in range(len(uc)):
ax.plot([0,uc[num].real],[0,uc[num].imag],[0,0],color="green",lw=0.5)
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.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([-np.pi,np.pi])
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("map500001.gif", writer="pillow")
「偶関数に逆関数は存在しない」とは、要するにこの様に「演算結果集合の元がぴったりと重なり合う=全単射条件が満たされる」事によって同型判定を受けた状態とも見做せそうですね(特に指数関数と三角関数はあらゆる角度からの演算がこの条件を満たす事で知られている。まさしく「円環の理」そのもの?)。
円環の理の意味・由来 - 元ネタ・由来を解説するサイト
-
$Cos(θ)\frac{d^n}{dx^θ}=(-Sin(θ),-Cos(θ),Sin(θ),Cos(θ),…)$
-
$Sin(θ)\frac{d^n}{dx^θ}=(Cos(θ),-Sin(θ),-Cos(θ),Sin(θ),…)$
-
$\int \int \int … \int Cos(θ)(dθ)=(Sin(θ),-Cos(θ),-Sin(θ),Cos(θ),…)$
-
$\int \int \int … \int Sin(θ)(dθ)=(Cos(θ),-Sin(θ),Cos(θ),Sin(θ),…)$
-
$e^{ix}\frac{d^n}{dx^n}=(i e^{i x}(-\log ix),-e^{ix},-i e^{i x}(\log ix),e^{ix},…)$
-
$\int \int \int … \int e^{ix}(dx)=(- i e^{i x}(\log ix),- e^{i x},i e^{i x}(-\log ix),e^{ix},…)$
かくして「1ずつの増減」は、こうして(それぞれは周期2で進む)偶数列と奇数集合が交代で(円周上の回転の場合は$\frac{1}{4}単位で$)現れる事によって実現されるという訳です(偶数列の周期を1に設定すると奇数集合はその狭間、すなわち1/2の箇所に現れる)。
【数理考古学】とある実数列の規定例①等差数列から加法整数群へ
これまでの投稿で堂々巡りだった部分がそれっぽく一つに統合されてきましたね。
#コンピューターと数学の正しい関係とは?
こうして全体像をまとめると吃驚するほどあっけないのですが、実際の私はこうした内容を片っ端からプログラミングしていく過程でやっとこうした内容を把握してきたのでした。数学上の概念って、どれもその一つ一つが本当に難しく、こうしてコンピューターを利用して視覚化しながらでない到底到達出来るものではありません。この辺り他の人は一体どうしてるんでしょうね?
そんな感じで以下続報…