見出し画像

オイラー定数について 続き

では$${\displaystyle \sum_{k=1}^{2^n} \dfrac{1}{k} \gt 1+\frac{n}{2}}$$を示し、この数列が発散することがわかりました。そこで、ここでは定積分を使い、この数列の面白さに迫ってみたいと思います。
定積分の考え方を使うと、$${\displaystyle \sum_{k=1}^{n} \dfrac{1}{k}}$$に対して、次の不等式が成り立ちます。

$${\displaystyle \log(n+1)<\displaystyle \sum_{k=1}^{n} \dfrac{1}{k}=1+\frac{1}{2}+\frac{1}{3}+\frac{1}{4}+\frac{1}{5}+\frac{1}{6}\cdots+\dfrac{1}{n}<1+\log n}$$

これは、

$${\displaystyle\int_{k}^{k+1}\frac{1}{x}dx< \frac{1}{k}<\int_{k-1}^{k}\frac{1}{x}dx}$$から導くことができます。それでは、早速これらの関係をグラフにしてみます。

import matplotlib.pyplot as plt
import numpy as np
plt.style.use('seaborn-poster')
n = 15
x = np.arange(1, 2**n+1)
#1/nの合計
sigma=0
func=[]
for i in x:
   sigma+=(1/i)
   func.append(sigma)
func_np=np.array(func)
j=0
func2=[]
sigma=0
for i in x:
   sigma+=1/(2**j)
   func2.append(sigma)
   if i==2**j:
       j+=1
func2_np=np.array(func2)
#グラフの作成
formula=[np.log(x)+1,func_np,np.log(x+1),func2_np,]
labels = [r'$1+\log{n}$',r'$\sum \frac{1}{x}$',r'$\log(n+1)$',r'$\frac{2}{n}+1$']
colors=['k','r','y','b']
plt.figure(figsize = (10,8))
for fx, label, color in zip(formula, labels,colors):
   plt.plot(x,fx, color, label = label)
plt.grid()
plt.title(r'$\sum \frac{1}{x}$と$1+\log{n},\log{n+1}$の関係',fontname="MS Gothic")
plt.xlabel('x')
plt.ylabel('y')
plt.legend()

画像1

赤い線$${\sum \frac{1}{x}}$$は、黒い線$${\log n +1}$$と黄色い線$${\log(n+1)}$$の間を通っています。しかもxを大きくしていくと3本の線はほぼ同じ間隔を保ったまま増えており、青い線$${\frac{2}{n}+1}$$よりもはるかに近いところを通っていることがわかります。
そこで、今度は$${\sum \frac{1}{x}}$$と$${\log n}$$の差がどのような値になるかを見てみます。

import matplotlib.pyplot as plt
import numpy as np
plt.style.use('seaborn-poster')
n = 100
x = np.arange(1, n+1)
gamma=0.5772156649
#1/nの合計
sigma=0
func=[]
for i in x:
   sigma+=(1/i)
   func.append(sigma)
func_np=np.array(func)
logx=np.array(func)-np.log(x)
#グラフの作成
formula=[logx,np.full(n, gamma)]
labels = [r'$\sum \frac{1}{x}-\log n$',r'0.5772156649']
colors=['g','r']
plt.figure(figsize = (10,8))
for fx, label, color in zip(formula, labels,colors):
   plt.plot(x,fx, color, label = label)
plt.grid()
plt.title(r'$\sum \frac{1}{x}$と$\log n$の関係',fontname='MS Gothic')
plt.xlabel('x')
plt.ylabel('y')
plt.ylim(0.576,1)
plt.legend()

画像2

グラフにすると、$${x=1}$$のときは$${\log 1=0}$$なので、差は1と大きく開いていきますが、$${x=20}$$あたりから急速に差が小さくなり0.57あたりに収束していくのがわかります。実は$${\displaystyle \sum_{k=1}^{n} \dfrac{1}{k}-\log n \fallingdotseq 0.5772156649}$$となり、この収束値はオイラー定数といい、一般的に $${\gamma}$$で表現しています。それでは、オイラー定数をx=100,000まで計算してみます。

from fractions import Fraction
l=[1,2,3,4,5,6,7,8,9,10,100,1000,10000,100000]
sigma=0
for i in range(1,100001):
   sigma+=Fraction(1,i)
   if i in l:    
       print(f'{i:>8}  {sigma-np.log(i)}')
       
 #output
      1  1.0
      2  0.8068528194400547
      3  0.7347210446652235
      4  0.6970389722134429
      5  0.6738954208992329
      6  0.6582405307719452
      7  0.6469469938018297
      8  0.6384156011773072
      9  0.6317436766320346
     10  0.6263831609742079
    100  0.5822073316515288
   1000  0.5777155815682082
  10000  0.5772656640681983
 100000  0.5772206648931988      

正確を期すために、fractionsモジュールのFractionクラスを使っています。
x=1,000で小数点第3位(0.577)、x=10,000で第4位(0.5772)、しかしx=100,000でも第5位(0.57721)まで迫ることができませんでした。さらに、頑張る必要がありそうです。
ということで、数学的には大雑把ですがオイラー定数について直感的に理解できるのではないかと思います。

この記事が気に入ったらサポートをしてみませんか?