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

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

【解析学情報倉庫】指数関数と対数関数に関する基本メモ。

概説はこちら。

f:id:ochimusha01:20190927233136p:plain

  • Y=e^Xiの極限={-∞~0,0~1},{0,1},{0~1,1~∞}
  • X=log(Xi)の極限={0~1,-∞~0},{1,0},{1~∞,0~1}
  • Y=e^-Xiの極限={-1~0,∞~1},{0,1},{0~∞,1~0}
  • X=log(-Xi)の極限={0~1,∞~0},{1,0},{1~∞,0~-1}
  • Y=-e^Xiの極限={-∞~0,0~-1},{0,-1},{0~1,-1~-∞}
  • X=-log(Xi)の極限={-∞~-1~1,1~0},{-1,0},{-1~0,0~-∞}
  • Y=-e^-Xiの極限={-1~0,-∞~-1},{0,-1},{0~∞,-1~0}
  • X=-log(-Xi)の極限={-∞~-1,-1~0},{-1,0},{-1~0,0~∞}

 統計言語Rによるコーディング例。

#各指数関数・対数関数の交差点
Graph_scale_x<-c(-2,2)
Graph_scale_y<-c(-2,2)
theta <- seq(pi, -pi, length=360)
plot(cos(theta), sin(theta),asp=0,xlim=Graph_scale_x,ylim=Graph_scale_y,type="l",col=rgb(0,0,0), main="Exponential & Logarithmic", xlab="X", ylab="Y")

par(new=T)#上書き指定
#指数関数

e0<-function(x){exp(x)}
plot(e0,asp=0,xlim=Graph_scale_x,ylim=Graph_scale_y,type="l",col=rgb(0,0,1), main="",xlab="",ylab="")
par(new=T)#上書き指定
e1<-function(x){exp(-x)}
plot(e1,asp=0,xlim=Graph_scale_x,ylim=Graph_scale_y,type="l",col=rgb(0,0,1), main="",xlab="",ylab="")
par(new=T)#上書き指定
e2<-function(x){-1*exp(x)}
plot(e2,asp=0,xlim=Graph_scale_x,ylim=Graph_scale_y,type="l",col=rgb(0,0,1), main="",xlab="",ylab="")
par(new=T)#上書き指定
e3<-function(x){-1*exp(-x)}
plot(e3,asp=0,xlim=Graph_scale_x,ylim=Graph_scale_y,type="l",col=rgb(0,0,1), main="",xlab="",ylab="")
par(new=T)#上書き指定

#対数関数
tc <- seq(-6, 6, length=60) #-6から6までを60等分
l0<-function(x){exp(x)}
tcvals0 <- l0(tc) #それぞれの縦軸の値
plot(tcvals0,tc,asp=0,xlim=Graph_scale_x,ylim=Graph_scale_y,type="l",col=rgb(0,1,0), main="",xlab="",ylab="")
par(new=T)#上書き指定

l1<-function(x){exp(-x)}
tcvals1 <- l1(tc) #それぞれの縦軸の値
plot(tcvals1,tc,asp=0,xlim=Graph_scale_x,ylim=Graph_scale_y,type="l",col=rgb(0,1,0), main="",xlab="",ylab="")
par(new=T)#上書き指定
l2<-function(x){-1*exp(x)}
tcvals2 <- l2(tc) #それぞれの縦軸の値
plot(tcvals2,tc,asp=0,xlim=Graph_scale_x,ylim=Graph_scale_y,type="l",col=rgb(0,1,0), main="",xlab="",ylab="")
par(new=T)#上書き指定
l3<-function(x){-1*exp(-x)}
tcvals3 <- l3(tc) #それぞれの縦軸の値
plot(tcvals3,tc,asp=0,xlim=Graph_scale_x,ylim=Graph_scale_y,type="l",col=rgb(0,1,0), main="",xlab="",ylab="")
#90度(π/2)の補助線
abline(h=0)
abline(v=0)
#45度(π/4)の補助線
segments(-8,-8,8,8,col=c(128,128,128))
segments(-8,8,8,-8,col=c(128,128,128))
#18度(π/10)/72度の補助線
segments(-8,-(sin(pi/10))*8,8,(sin(pi/10))*8,col=c(128,128,128))
segments(-8,(sin(pi/10))*8,8,-1*(sin(pi/10))*8,col=c(128,128,128))
segments(-(sin(pi/10))*8,-8,(sin(pi/10))*8,8,col=c(128,128,128))
segments*1*8,-8,-1*(sin(pi/10))*8,8,col=c(128,128,128))
legend("bottomleft", legend=c("±e^±x","±log(±x)"),lty=c(1,1),col=c(rgb(0,0,1),rgb(0,1,0)))

f:id:ochimusha01:20190927233136p:plain

航海や測量に欠かせない)円周率や三角関数の数表の制度追求要求が17世紀に対数関数を、18世紀に指数関数を発見させました。人類の数学史ではこの時代が一つのパラダイムシフトとなっています。

a=0の時

  • ① a^0 = 1

    統計言語Rによる計算例

    3^0
    [1] 1

    2^0
    [1] 1

    1^0
    [1] 1

    *a=1の場合の結果は全て1となる。

a ≠ 0で、nが正の数の時

  • ② a^-n = 1/a^n

    統計言語Rによる計算例(計算機代数ソフトウェアYacas使用)

    library(Ryacas)

    #1の段

    yac("1^-1") #1/1^1
    [1] "1"
    yac("1^-2") #1/1^2
    [1] "1"
    yac("1^-3") #1/1^3
    [1] "1"
    #2の段

    yac("2^-1") #1/2^1
    [1] "1/2"
    yac("2^-2") #1/2^2
    [1] "1/4"
    yac("2^-3") #1/2^3
    [1] "1/8"

    #3の段

    yac("3^-1")  #1/3^1
    [1] "1/3"

    yac("3^-2")  #1/3^2
    [1] "1/9"
    yac("3^-3")  #1/3^3
    [1] "1/27"

     *a=1の場合の結果は全て1となる。

a ≠ 0で、m、nが正の数の時

  • ③ a^m*a^n = a^(m+n)

    統計言語Rによる計算例

    2^3*2^4
    [1] 128
    2^(3+4)
    [1] 128

    *この性質を利用して乗算加算に単純化可能。

  • ④ (a^m)^n = a^(m*n)

    統計言語Rによる計算例

     (2^3)^4
    [1] 4096
    2^(3*4)
    [1] 4096

    *この性質を利用して累乗算乗算に単純化可能。

  • ⑤ a^m/a^n = a^(m-n)

    統計言語Rによる計算例(計算機代数ソフトウェアYacas使用)

    library(Ryacas)
    #計算結果
    yac("2^3/2^4")
    [1] "1/2"
    yacas("2^(3-4)")
    [1] "1/2"

    *この性質を利用して除算減算に単純化可能。

a ≠ 0、b ≠ 0で、m、nが整数の時

  • ⑥ (a*b)^n = a^n*b^n

    統計言語Rによる計算例

     (2*3)^4
    [1] 1296
    2^4*3^4
    [1] 1296

    *実はここに列記した指数関数7大法則の中では、次に述べる(a/b)^n = a^n/b^n法則同様にあまり使われない。理由は後述。

  • ⑦ (a/b)^n = a^n/b^n

    統計言語Rによる計算例(計算機代数ソフトウェアYacas使用)

    library(Ryacas)
    #計算結果
    yac(" (2/3)^4")
    [1] "16/81"
    yac("2^4/3^4")
    [1] "16/81"

    *わざわざYacasを使ったのは、この計算があくまで有理数(Rational number)」すなわち分数Fractionで表せる範囲に留まっている事を示すため。

ところで、指数関数y=a^xx=a^yに変形すると対数関数y=log(x,base=a)となり、当然上掲の指数法則がそのまま逆対応する。

  • ① log(1,base=a) = 0ただしa が1でない正の数のとき

    統計言語Rによる計算例 

    log(1,base=1)
    [1] NaN
    警告メッセージ:
    計算結果が NaN になりました
    log(1,base=2)
    [1] 0
    log(2,base=2)
    [1] 1
    log(1,base=3)
    [1] 0
    log(3,base=3)
    [1] 1

    *指数関数でbase,root)」が0になってはいけない様に、対数関数ではそれが1になってはならない。なお、Log関数はbase=指数の時に1を返す。

  • ② log(-n,base=a) = 1/log(n,base=a) ただしmnが正の数,a が1でない正の数の時)

    統計言語Rによる計算例

    log(1/2,base=2)
    [1] -1
    1/log(1/2,base=2)
    [1] -1

    *後述する理由により、こういう時計算機代数ソフトウェアYacasは役に立たないのである。

  • ③log(m^n,base=a) = n*log(m,base=a)(x・yが正の数,a が1でない正の数のとき)

    統計言語Rによる計算例

    log(3^4,base=2)
    [1] 6.33985
    4*log(3,base=2)
    [1] 6.33985

    *ここでは乗算指数上の類乗算に置換される。

  • ④log(m*n,base=a) = log(m,base=a)+log(n,base=a)
    統計言語Rによる計算例

    log(3*4,base=2)
    [1] 3.584963
    log(3,base=2)+log(4,base=2)
    [1] 3.584963

    *ここでは加算指数上の乗算に置換される。

  • ⑤ log(b,base=a)-log(c,base=a)=log(b/c,base=a)

    統計言語Rによる計算例

    log(3/4,base=2)
    [1] -0.4150375
    log(3,base=2)-log(4,base=2)
    [1] -0.4150375

    *ここでは減算指数上の除算に置換される。

  • ⑥log(a,base=b) = log(b,base=c)/log(a,base=c)
    統計言語Rによる計算例

    log(2,base=3)
    [1] 0.6309298
    log(2,base=4)/log(3,base=4)
    [1] 0.6309298

     *しばしば(base,root)の変換式と呼ばれる。

その一方で指数関数The exponential function)や対数関数Logarithmic function)における指数(Index)の分数表現や少数表現は平方根The square root)や立方根The cube root)概念、ひいては正多角形Regular polygon)と内接円Inscribed circle)/外接円Circumscribed circle)の追求を経て「円周率Pi3.141593…)」の近似問題に至る。そう「目盛り設定Scale setting)」や「正規化Normalization:合計値または積分値を1にする)」作業の本質もまさに「周期関数Periodic function)」の設定基準に準拠するのである。
f:id:ochimusha01:20190819051732g:plain
f:id:ochimusha01:20190819051231p:plain

*1:sin(pi/10