「諸概念の迷宮(Things got frantic)」用語集

本編で頻繁に使うロジックと関連用語のまとめ。

【指数・対数関数】【幾何学】指数関数π^xの「途方もなさ」

そういえばあまり指数関数π^xのグラフを目にした事がありません。大友克洋の漫画「AKIRA」における大佐の台詞を思い出します。「見てみろ、この慌てぶりを。怖いのだ。怖くてたまらずに覆い隠したのだ。恥も尊厳も忘れ、築き上げてきた文明も、科学もかなぐり捨てて。自ら開けた恐怖の穴を慌ててふさいだのだ。

f:id:ochimusha01:20190509094234j:plainf:id:ochimusha01:20190509094342j:plain

 オイラーの等式e^πi=-1」から導出されるオイラーの原子量(Euler’s primitive sweep)…

指数関数π^xと組み合わせると、当然指数ごとに半径が円周率π(=3.141592)倍に拡大していく片対数尺(semilog graph)」スケールに従って円周や球面の軌跡が現れます。

  • 指数x=-1の時…サイズ的には半径1/π、直径2/π、円周2
  • 指数x=0の時…サイズ的には半径1、直径2、円周
  • 指数x=1の時…サイズ的には半径π、直径、円周2π^2

さらには指数関数a^xは全て自然対数関数e^xのバリエーションに過ぎませんから、こういう風にも考える事も出来るのです。

図示するとこんな感じ。

#オイラーの原始量(Euler’s primitive sweep)と指数関数π^x(Euler’s primitive sweep π^x)
theta <- seq(pi, -pi, length=360)
plot(cos(theta), sin(theta),xlim=c(-2,2),ylim=c(-2,2), type="l",col=rgb(0,1,0), main="Euler’s primitive sweep & y=π^x", xlab="Size index", ylab="π^x")

par(new=T)#上書き指定
plot(pi*cos(theta)+1, pi*sin(theta),xlim=c(-2,2),ylim=c(-2,2), type="l",col=rgb(0,1,0), main="", xlab="", ylab="")
par(new=T)#上書き指定
plot(cos(theta)/pi-1/pi, sin(theta)/pi,xlim=c(-2,2),ylim=c(-2,2), type="l",col=rgb(0,1,0), main="", xlab="", ylab="")
text(0, 0, "0",col=rgb(0,0,0))
text(1, 0, "1",col=rgb(0,0,1))
text(-1, 0, "-1",col=rgb(1,0,0))
text(0, 1, "π",col=rgb(0,1,0))
text(0, -1, "π",col=rgb(0,1,0))
segments(0,0,1,0,col=rgb(0,0,1))
segments(0,0,-1,0,col=rgb(1,0,0))

f:id:ochimusha01:20190503142804j:plain

同一視野に収め続けるのも大変という有様ですね。この独特の拡大過程をアニメーションで追ってみましょう。

#オイラーの原子量(Euler’s primitive sweep)と指数関数π^x(Euler’s primitive sweep & π^x)

pix<-function(n){
theta <- seq(pi, -pi, length=360)
plot(cos(theta), sin(theta),xlim=c(-2,2),ylim=c(-2,2), type="l",col=rgb(0,1,0), main="Euler’s primitive sweep & y=π^x", xlab="Size index", ylab="π^x")

par(new=T)#上書き指定
plot(pi*cos(theta)+1, pi*sin(theta),xlim=c(-2,2),ylim=c(-2,2), type="l",col=rgb(0,1,0), main="", xlab="", ylab="")
par(new=T)#上書き指定
plot(cos(theta)/pi-1/pi, sin(theta)/pi,xlim=c(-2,2),ylim=c(-2,2), type="l",col=rgb(0,1,0), main="", xlab="", ylab="")

#π^xのアニメーション部
pix_pitch=function(x) ifelse(x<0,x*1/pi,x*1)
polygon(cos(theta)*pi^n+pix_pitch(n), #x
sin(theta)*pi^n, #y
density=c(30), #塗りつぶす濃度
angle=c(45),     #塗りつぶす斜線の角度
col=rgb(0,1,0))  #塗りつぶす色

text(0, 0, "0",col=rgb(0,0,0))
text(1, 0, "1",col=rgb(0,0,1))
text(-1, 0, "-1",col=rgb(1,0,0))
text(0, 1, "π",col=rgb(0,1,0))
text(0, -1, "π",col=rgb(0,1,0))
segments(0,0,1,0,col=rgb(0,0,1))
segments(0,0,-1,0,col=rgb(1,0,0))
}


#アニメーションさせてみる。
library("animation")
Time_Code=c(-1.0,-0.9,-0.8,-0.7,-0.6,-0.5,-0.4,-0.3,-0.1,0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0)
saveGIF({
for (i in Time_Code){
  pix(i)
}
}, interval = 0.1, movie.name = "TEST.gif")

f:id:ochimusha01:20190509065008g:plain

 

ところでプログラム中で奇妙な事をしてるのが分かりますか?

  • 円の中心の推移の区間分割Nを-1から0の区間1/(pi*N))と0から1の区間1/N)で切り替えている。
  • だから当然、次の1から2の区間区間分割は「pi/N」となる。

要するにこれは区間が「-x…-1,0,1…x」と等間隔の連続尺度的に推移するにつれ区間距離が「1/底(root)^x…1/底(root),1(底(root)/底(root)),底(root)…底(root)^x」と対数尺度で変化していく世界と「オイラーの原子量Euler's primitive sweep」について」登場以降の「半径がxなら直径は2xとなる」連続尺度の世界の衝突を誤魔化す為の方便。

とはいえ有効範囲を−π ≦ x ≦ πに区切っても(「眼と視覚情報を処理する脊髄」を獲得した生物の直感が正しいと告げるオイラーの原始量(Euler’s primitive sweep)の世界と(現実空間を仕切る)指数関数π^xの世界の矛盾は完全な形では解消されていません。それでオイラーの等式e^πi=-1」から出発する数理モデルは指数関数π^xの示す空間的広がりに故意に言及しなくなっていったとも。
*例えば「対象多角形の内接円と外接円の重なる極限」としてイメージされるπは、それ自体透視図法上の消失点(vanishing point)そのものであり、視覚とそれを処理する脊髄を備えた生物全てをすっぽりと包む全球スクリーン上においては水平線もしくは地平線としてイメージされる事もある。

そもそも人間の感覚は、本質的に片対数尺度的という話も?
まさしく「見てみろ、この慌てぶりを。怖いのだ。怖くてたまらずに覆い隠したのだ。恥も尊厳も忘れ、築き上げてきた文明も、科学もかなぐり捨てて。自ら開けた恐怖の穴を慌ててふさいだのだ。」の世界ですね…