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

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

【自然対数eとの邂逅】「ベルヌーイの思考実験」より

ヤコブ・ベルヌーイ(1654年〜1705年)が1683年に提示した思考実験とは以下の様なものでした。お題は「夢の金融商品」。ただしこの甘い夢には自然が用意した「無慈悲な上限」が設けられていたのです。
f:id:ochimusha01:20190301073243j:plain

ヤコブ・ベルヌーイ(1654年〜1705年)の思考実験(1683年

毎年100%の金利がつく金融商品について考える。

「いらすとや 金融商品」の画像検索結果

  • 年1回利息がつく運用を想定すると資金はこう動く。

    #統計言語Rでの作図例

    Principal<-1
    #増加基準単位となる元本を1=100/100=100%と置く。
    f0=function(x){Principal+2*x}
    #毎年元本100%分が増加する。
    Operation_Period=c(0:5)
    #とりあえず5年分見る。
    Principal_Growth=c(f0(Operation_Period))
    plot(Operation_Period,Principal_Growth, type="s",xlim=c(0,5),ylim=c(0,12), main="Principal growth on Simple interest", xlab="Operation period (By year)", ylab="Principal growth(100% base)")

    f:id:ochimusha01:20190308151730p:plain

    月1回(年12回)利息がつく運用、すなわち「月割り」計算だとこうなる。

    #統計言語Rでの作図例

    Principal<-1
    #増加基準単位となる元本を1=100/100=100%と置く。
    f0=function(x){Principal+2*x/12}
    #毎月、元本100%分の月割り分が増加する。Operation_Period=c(0:(3*12))
    #とりあえず12ケ月を3年分、すなわち36ケ月分見る。
    Principal_Growth=c(f0(Operation_Period))
    plot(Operation_Period,Principal_Growth, type="s",xlim=c(0,12*3),ylim=c(0,7), main="Principal growth on Simple interest", xlab="Operation period (By month)", ylab="Principal growth(100% base)") 

    f:id:ochimusha01:20190308151844p:plain

    日割り計算」だとこうなる。

    #統計言語Rでの作図例
    Principal<-1
    #増加基準単位となる元本を1=100/100=100%と置く。f0=function(x){Principal+1*(x/12/30)}
    #毎日(とりあえず毎月を30日と見る)、元本100%分の日割り分が増加する。
    Operation_Period=c(0:(1*12*30))
    #とりあえず1年分見る。

    Principal_Growth=c(f0(Operation_Period))
    plot(Operation_Period,Principal_Growth, type="s",xlim=c(0,12*30),ylim=c(0,2), main="Principal growth on Simple interest", xlab="Operation period (By day)", ylab="Principal growth(100% base)")

    f:id:ochimusha01:20190308171817p:plain
    *この様に「どこかでも細かく分割して合算する作業が理論上の連続性を示唆する」という考え方こそが解析(Analysis)、すなわち微積分の概念の出発点の一つ。

    #統計言語Rでの作図例
    Principal_Growth=function(years,month,days){
    #増加基準単位となる元本を1=100/100=100%と置く。
    Principal<-1
    #Operation periodの期間、元本100%分の増加。
    f0=function(x){Principal+x/(years*month*days)}
    #とりあえずOperation period分見る。
    Operation_Period=c(0:(years*month*days))
    Principal_Growth=c(f0(Operation_Period))
    plot(Operation_Period,Principal_Growth, type="s",xlim=c(0,(years*month*days)),ylim=c(0.5,2), main="Principal growth on Simple interest", xlab="Operation period", ylab="Principal growth(100% base)")

    }
    #とりあえずアニメーションさせてみる。
    library("animation")
    saveGIF({
    #5年->1年
    Principal_Growth(5,1,1)
    Principal_Growth(4,1,1)
    Principal_Growth(5,1,1)
    Principal_Growth(4,1,1)
    Principal_Growth(3,1,1)
    Principal_Growth(2,1,1)
    Principal_Growth(1,1,1)
    #年1割->年12割->年1割
    Principal_Growth(1,2,1)
    Principal_Growth(1,3,1)
    Principal_Growth(1,4,1)
    Principal_Growth(1,6,1)
    Principal_Growth(1,12,1)
    Principal_Growth(1,6,1)
    Principal_Growth(1,4,1)
    Principal_Growth(1,2,1)
    Principal_Growth(1,1,1)
    #月1割->日割り->年1割
    Principal_Growth(1,2,1)
    Principal_Growth(1,3,1)
    Principal_Growth(1,4,1)
    Principal_Growth(1,5,1)
    Principal_Growth(1,15,1)
    Principal_Growth(1,30,1)
    #日割り率を戻しつつ最初の5年にリセット
    Principal_Growth(2,15,1)
    Principal_Growth(3,10,1)
    Principal_Growth(4,5,1)
    }, interval = 0.1, movie.name = "TEST.gif")
    *そう、そもそもコンピューター側にとっては「年累計」「月割り」「日割り」といった概念はあくまで便宜上のものに過ぎず、与えられた関数を何分割で表示するかしか認識していないのである!!

    f:id:ochimusha01:20190314235646g:plain

    *統計言語RにおけるGIFアニメーション作成方法は以下参照の事。

     かくしてこれを「増加率が毎年100%の単利運用」という形に一般化し、増加率だけに注目(すなわち計算の原点を「元本100%」から「増加率0%」に設定)するとこうなる。

    #統計言語Rでの作図例
    f0=function(x){2*x}
    #毎年最初の元本1に対して200%の増加率
    plot(f0, xlim=c(0,1), main="Principal growth on Simple interest", xlab="Operation period (Year)", ylab="Principal growth rate (100% base)")

    f:id:ochimusha01:20190308171943p:plain

  • 今度は金利を半分の50%に下げる代わり、半年ごとに金利がつくと考える。この場合も1 年間の合計金利は100%となるが、元本のx円を 1 年間複利で運用すると元本は半年ごとに「1+1/2」倍になるため、1 年後の元利合計は「x*(1+1/2)^2=2.25*x」 円となる。つまり、1 年間で元本は2.25倍となるが、これは単利の場合の2倍よりも高い水準である。つまり単利より複利の方が元本の増加率が大きい。

    #統計言語Rでの作図例
    Principal<-1
    #増加基準単位となる元本を1=100/100=100%と置く。
    f0=function(x){(x*(Principal+1/2))^2}
    #半年ごとに50%の金利

    Operation_Period=seq(0,3,by=1/2)
    #とりあえず2年分見る。
    Principal_Growth=c(f0(Operation_Period))
    plot(Operation_Period,Principal_Growth, type="s",xlim=c(0,2),ylim=c(0,10), main="Principal growth on compound interest", xlab="Operation period (By 6 month)", ylab="Principal growth(100% base)") 

    f:id:ochimusha01:20190308172241p:plain

    さらに金利を100%の1/3に相当する「100/3≈0.3333)」%に下げる代わり、1 年間の1/3に相当する 4 カ月ごとに金利がつくと考える。この場合も 1 年間の合計金利は100%だが、元本のx円を 1 年間複利で運用すると、元本は 4 カ月ごとに1+1/3倍になるため、1 年後の元利合計は「x(1+1/3)^3≈2.3704x」円となる。つまり、1 年間で元本は約2.3704倍となるが、これは半年ごとの複利の場合の2.25倍よりも高い水準である。この様に合計金利は同じでも、金利の水準と発生期間をさらに細かくすると、複利の効果によって元本の増加率はさらに大きくなる。
    *ただし増加率そのものはこの時点において既に低減を始めている。

    #統計言語Rでの作図例
    Principal<-1
    #増加基準単位となる元本を1=100/100=100%と置く。
    f0=function(x){(x*(Principal+1/3))^2}
    #1/3年ごとに約33%の金利Operation_Period=seq(0,3,by=1/3)
    #とりあえず3年分見る。
    Principal_Growth=c(f0(Operation_Period))
    plot(Operation_Period,Principal_Growth, type="s",xlim=c(0,3),ylim=c(0,16), main="Principal growth on Compound interest", xlab="Operation period (By 4 month)", ylab="Principal growth(100% base)") 

    f:id:ochimusha01:20190308172526p:plain

    この計算を「元本x円の 1 年間複利運用」という形に一般化する。金利の水準を100%の1/nに相当する100/n%に下げる代わり、1 年間の1/nに相当する1/n年ごとに金利がつくと考えれば 1 年後の合計金利が100%となるのは同じだが、元本は1/n年ごとに1+1/n倍になるため、1 年後の元利合計は「x(1+1/n)^n」円となる。つまり、1 年間で元本は(1+1n)^n倍に増加する。

    #統計解析言語Rによる確認例。
    Principal<-1
    #増加基準単位となる元本を1=100/100=100%と置く。
    f0=function(x){(x*(Principal+1/2))^2}
    #半年ごとに50%の金利
    plot(f0, xlim=c(0,3),ylim=c(0,200),lty =1,main="Principal growth on Compound interest", xlab="Operation period (Year)", ylab="Principal growth rate (100% base)")
    par(new=T) # 上書き指定
    f1=function(x){(x*(Principal+1/3))^3}
    #1/3年ごとに約33%の金利
    plot(f1,xlim=c(0,3),ylim=c(0,200),lty =2,main="", xlab="", ylab="")
    par(new=T) # 上書き指定
    f2=function(x){(x*(Principal+1/4))^4}
    #1/4年ごとに25%の金利
    plot(f2,xlim=c(0,3),ylim=c(0,200),lty =3,main="", xlab="", ylab="")
     legend("topleft", legend=c("By 6 month", "By 4 month","By 3 month"), lty =c(1,2,3))
    # 凡例を書き添える 。

    f:id:ochimusha01:20190308173139p:plain

*使用パラメーターについては以下参照の事。

この様に複利運用における元本増加率は単利運用における元本増加率より遥かに増大幅が大きい。ただし発生期間を細かくすればするほど元本の増加率は小さくなっていく。

#統計解析言語Rによる確認例。
Principal<-1
#増加基準単位となる元本を1=100/100=100%と置く。
f0=function(x){(Principal+1)*x}
#単利運用
plot(f0, xlim=c(0,3),ylim=c(0,200),lty =1,main="Simple interest and Compound interest", xlab="Operation period (Year)", ylab="Principal growth rate (100% base)")
par(new=T) # 上書き指定
f1=function(x){(x*(Principal+1/2))^2}
#半年ごとに50%の金利
plot(f1, xlim=c(0,3),ylim=c(0,200),lty =1,main="", xlab="", ylab="")
par(new=T) # 上書き指定
f2=function(x){(x*(Principal+1/3))^3}
#1/3年ごとに約33%の金利
plot(f2,xlim=c(0,3),ylim=c(0,200),lty =2,main="", xlab="", ylab="")
par(new=T) # 上書き指定
f3=function(x){(x*(Principal+1/4))^4}
#1/4年ごとに25%の金利
plot(f3,xlim=c(0,3),ylim=c(0,200),lty =3,main="", xlab="", ylab="")
 legend("topleft", legend=c("Simple interest","By 6 month", "By 4 month","By 3 month"), lty =c(1,2,3,4))
# 凡例を書き添える 。

f:id:ochimusha01:20190308174428p:plain
*使用パラメーターについては以下参照の事。

*こうした個々のグラフから「増加率の増加そのものに限界がある可能性」を読み取るのは困難なので、複利運用の推移のみをアニメーションさせてみる。

#統計解析言語Rによる確認例。
Principal_growth1<-function(op){
#増加基準単位となる元本を1=100/100=100%と置く。
Principal<-1
#関数グラフ化
f0=function(x){(x*(Principal+1/op))^op}
plot(f0, xlim=c(0,1),ylim=c(0,3),lty =1,type="s",main="Principal growth on Compound interest", xlab="Operation period", ylab="Principal growth rate (100% base)")
# 凡例を書き添える 。
 legend("topleft", legend=c("Compound interest"), lty =c(1))
}
#アニメーションさせてみる。

library("animation")
Time_Code=c(1,2,3,4,5,10,20,30,40,50)
saveGIF({
for (i in Time_Code){
  Principal_growth1(i)
}
}, interval = 0.1, movie.name = "TEST.gif")

f:id:ochimusha01:20190315015420g:plain

*これが数年越しとなると…

#統計解析言語Rによる確認例。
Principal_growth2<-function(op){
#増加基準単位となる元本を1=100/100=100%と置く。
Principal<-1
#関数グラフ化
f0=function(x){(x*(Principal+1/op))^op}
plot(f0, xlim=c(0,3),ylim=c(0,200),lty =1,type="s",main="Principal growth on Compound interest", xlab="Operation period", ylab="Principal growth rate (100% base)")
# 凡例を書き添える 。
 legend("topleft", legend=c("Compound interest"), lty =c(1))
}
#アニメーションさせてみる。
library("animation")
Time_Code=c(1,2,3,4,5,10,20,30,40,50)
saveGIF({
for (i in Time_Code){
  Principal_growth2(i)
}
}, interval = 0.1, movie.name = "TEST.gif")

f:id:ochimusha01:20190315014022g:plain

*だいぶ「収束していく」イメージが明瞭となってきた。これも解析=微積分の概念の重要な出発点の一つである。繰り返しとなるが統計言語RにおけるGIFアニメーション作成方法は以下参照の事。

それでは複利運用において合計金利は一定のままで金利の水準と発生期間をどんどん細かくしていくと、1 年間での元本の増加率はどのように変化していくのだろうか。

#統計解析言語Rによる確認例。
Principal<-1
#増加基準単位となる元本を1=100/100=100%と置く。
f0=function(x){(Principal+1/x)^x}
#複利運用
plot(f0, xlim=c(0,50),ylim=c(0,3),lty =1,main="Compound interest and Natural logarithm", xlab="Operation period (Year)", ylab="Principal growth rate (100% base)")
par(new=T) # 上書き指定
#自然対数
f1=function(x){0*x+exp(1)}
plot(f1, xlim=c(0,50),ylim=c(0,3),lty =2,main="", xlab="", ylab="")
 legend("bottomright", legend=c("Compound interest","Natural logarithm"), lty =c(1,2))
# 凡例を書き添える 。

f:id:ochimusha01:20190308184039p:plain

*使用パラメーターについては以下参照の事。

この様に合計金利は一定にして、金利の水準と発生期間をどんどん細かくしていくと複利効果によって元本は増えていくが、金利の水準を同時に下げているため各期に得られる金利は逆に小さくなっていく。その結果、元本の増加率はなだらかになっていき、最終的に一定の水準に落ち着く。この値こそが「(人間の認識外を跋扈する絶対他者」の数理モデル上における顕現例の一つ「オイラーのe」「自然対数Natural logarithm)」「ネイピア数Number of Napier)に他ならないのである。
*解析(Analysis)、すなわち微積分の世界観において「どこかでも細かく分割して合算する作業が理論上の連続性を示唆する」という考え方と同じくらい重要な比率を占めているのが「無限に関する極限の概念をおもな対象とする」という観点。

  • ここで重要となってくるのが複式利益計算式「(1+1/N)^N」において「元手Principal)」に該当する「最初の1The first one)」。これが0だと利息計算そのものが成立しないし、残りはただ単に0に向けて幾何級数的に減衰していくに過ぎない。

    #統計解析言語Rによる確認例。
    Exponential_decay<-function(op){
    #関数化。
    f3=function(x){(x*(1/op))^op}
    #グラフ化。
    plot(f3, xlim=c(0,1),ylim=c(0,1),lty =1,type="s",main="Exponential decay", xlab="Operation period", ylab="Exponential decay")
    # 凡例を書き添える 。
    legend("topleft", legend=c("Exponential decay"), lty =c(1))
    }
    #アニメーションさせてみる。
    library("animation")
    Time_Code=seq(1,10,0.5)
    saveGIF({
    for (i in Time_Code){
    Exponential_decay(i)
    }
    }, interval = 0.1, movie.name = "TEST.gif")

    f:id:ochimusha01:20190321210014g:plain

  • ところで「(1/N)^N」なる関数においては、自然対数eが極限として別の場所(1/e=約37%付近)に現れる。

    #統計解析言語Rによる確認例。
    f3=function(FL){(1/FL)^FL}
    Time_Code=seq(0,1,0.1)
    sprintf("%.2f",f3(Time_Code))

    f:id:ochimusha01:20190321221455p:plain

    #グラフ化。
    plot(f3, lty =1,type="s",main="(1/x)^x", xlab="Fluctuation", ylab="(1/x)^x")
    # 凡例を書き添える 。
    legend("topright", legend=c("(1/x)^x"), lty =c(1))

    f:id:ochimusha01:20190321215424p:plain

それはそれとして、もう「ちょっと奥さん、なんと貴方の預けた資産がたったX年で約XXX倍に!! そりゃやるでしょ!? やるなら今でしょ!?」とかそういう部分だけで「夢の金融商品」なのですね。もちろん同じ増加率を複利式借款も辿る訳で、こちらは「債権者にとっての天国、債務者にとっての地獄」となる訳です。