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

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

【指数・対数関数】指数関数と対数関数の極限値としての自然対数eと1/e

冪(べき)e^tがx自身に一致するような指数t」のことをxの自然対数eといいます。

f:id:ochimusha01:20190501163726g:plain

*実際には微積分によって対象の状態そのものが変化してる訳ではない。我々がその都度(360度の次は1度とカウントする様に)累積した誤謬上の誤謬をクリアしてるに過ぎないとも。

 ①ヤコブ・ベルヌーイ(Jakob Bernoulli、1654年〜1705年)が1683年の導出に用いた複利計算式「(1+1/N)^N」に立脚する導出方法。

#ヤコブ・ベルヌイの複利計算法に基づく算出方法
f0=function(x){(1+1/x)^x}
#グラフ化してみる。
plot(f0, xlim=c(0,50),ylim=c(0,3),lty =1,main="Natural logarithm", xlab="N", ylab="(1+1/N)^N")
#自然対数eと比較。
abline(h=exp(1))#exp(1)=2.718282...

f:id:ochimusha01:20190426031522p:plain

結果として極限値exp(1)^1=exp(1)」すなわち「2.718282…」を求める形となった。

#オイラーの等式ヤコブ・ベルヌーイ方式による作図)

Eulers_identity<-function(n){
rim01<-pi*complex(real=0,imaginary=1)
Tarm=c(complex(real=1,imaginary=0),seq(rim01/n,rim01/n,length=n))
Reduce(function(a,b) {a+a*b}, Tarm, accumulate = T)

}
theta <- seq(pi, -pi, length=360) #円周率(ラジアン表記)

Eulers_identity00_plot<-function(n){
plot(cos(theta), sin(theta), xlim=c(-2,1),ylim=c(0,4),type="l",col=rgb(0,1,0), main="Euler’s identity", xlab="Real Expanse", ylab="Imaginary Expanse")
par(new=T) # 上書き指定

plot(Re(Eulers_identity(n)),Im(Eulers_identity(n)),xlim=c(-2,1),ylim=c(0,4),type="l",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))
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,2,4,8,16,32,64,128)
saveGIF({
for (i in Time_Code){
  Eulers_identity00_plot(i)
}
}, interval = 0.1, movie.name = "TEST.gif")

f:id:ochimusha01:20190419000412g:plain

レオンハルト・オイラーLeonhard Euler, 1707年〜1783年)がジョン・ネイピアJohn Napier, 1550年〜1617年)の対数表の底「0.9999999」から導出した式「(1-1/N)^N」に立脚する導出方法。

#オイラーの「ネイピアの対数表」に基づく算出方法
f0=function(x){(1-1/x)^x}
#グラフ化してみる
plot(f0, xlim=c(0,50),ylim=c(0,0.5),lty =1,main="Natural logarithm", xlab="N", ylab="(1-1/N)^N")
#自然対数1/eと比較。
abline(h=exp(-1))#exp(-1)=0.3678794...

f:id:ochimusha01:20190426032119p:plain

 結果として極限値exp(1)^-1=exp(-1)=1/exp(1)」すなわち「0.3678794…」を求める形となった。

#オイラーの等式オイラー方式による作図)

Eulers_identity<-function(n){
rim01<-pi*complex(real=0,imaginary=1)
Tarm=c(complex(real=1,imaginary=0),seq(rim01/n,rim01/n,length=n))
Reduce(function(a,b) {a-a*b}, Tarm, accumulate = T)

}
theta <- seq(pi, -pi, length=360) #円周率(ラジアン表記)

Eulers_identity00_plot<-function(n){
plot(cos(theta), sin(theta), xlim=c(-2,1),ylim=c(-4,0),type="l",col=rgb(0,1,0), main="Euler’s identity", xlab="Real Expanse", ylab="Imaginary Expanse")
par(new=T) # 上書き指定

plot(Re(Eulers_identity(n)),Im(Eulers_identity(n)),xlim=c(-2,1),ylim=c(-4,0),type="l",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))
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,2,4,8,16,32,64,128)
saveGIF({
for (i in Time_Code){
  Eulers_identity00_plot(i)
}
}, interval = 0.1, movie.name = "TEST.gif")

f:id:ochimusha01:20190419001208g:plain

③この2つの計算結果は複素図表上において共役関係にある。というよりどちらも距離1の線分にして、その旋回範囲に(これを半径とする)円や球面を形成する「オイラーの原始量Euler's primitive sweep)=観測原点をすっぽり包む全球型スクリーン」の一部に過ぎないとも。
f:id:ochimusha01:20190501174943j:plain

#オイラーの等式(全周分)

Eulers_identity<-function(n){
rim01<-pi*complex(real=0,imaginary=1)
Tarm=c(complex(real=1,imaginary=0),seq(rim01/n,rim01/n,length=n))
Reduce(function(a,b) {a+a*b}, Tarm, accumulate = T)

}
theta <- seq(pi, -pi, length=360) #円周率(ラジアン表記)
#グラフを描画してみる。
Eulers_identity01_plot<-function(n){
ei01<-Eulers_identity(n)
ei02<-Conj(ei01)
plot(cos(theta), sin(theta), xlim=c(-2,1),ylim=c(-4,4),type="l",col=rgb(0,1,0), main="Euler’s identity", xlab="Real Expanse", ylab="Imaginary Expanse")
par(new=T) # 上書き指定
plot(Re(ei01),Im(ei01),xlim=c(-2,1),ylim=c(-4,4),type="l",main="", xlab="", ylab="")
par(new=T) # 上書き指定
plot(Re(ei02),Im(ei02),xlim=c(-2,1),ylim=c(-4,4),type="l",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))
}

#アニメーションさせてみる。

library("animation")
Time_Code=c(1,2,4,8,16,32,64,128)
saveGIF({
for (i in Time_Code){
  Eulers_identity01_plot(i)
}
}, interval = 0.1, movie.name = "TEST.gif")

f:id:ochimusha01:20190418235412g:plain

ちなみに指数関数/級数関数は一定以上の規模に到達しないと、その指数関数的増大を顕現させません。従って両者の中間たる「e^0=1」すなわち「(1/N)^N」を計算しても急激に0に近付く減衰曲線を描くのみです。

#オイラーの「ネイピアの対数表」に基づく算出方法
f0=function(x){(1/x)^x}
#グラフ化してみる。
plot(f0, xlim=c(0,50),ylim=c(0,0.5),lty =1,main="n-th root of 1 / n", xlab="N", ylab="(1/N)^N")

f:id:ochimusha01:20190429180635p:plain

ちなみに確率論上の最重要概念の一つである「ベルヌーイ試行Bernoulli trial)」は、後者に鑑みて「N回の試行におけるN回目の成功確率は0.6321…(1-1/e)に収束する」となる特徴を有しています。要するに単なる(1/N)^N計算ではないという事…