レポート課題の解答例
実数$p (p>0)$に対して、数列$a(k)$を以下のように定義します。
$$ a(k)=\frac{1}{k^p}, \quad k=1,2,3,\cdots $$
数列$a(k)$による級数$\sum_{n=1}^\infty a(n) $を定義します。級数の第$n$部分和$S(n)$を以下の式で計算できます。
$$S(n) = \sum_{k=1}^n a(k) = 1+\frac{1}{2^p}+\frac{1}{3^p}+\frac{1}{4^p} + \cdots + \frac{1}{n^p}$$
特に、$p=1$の時、$\{a(k)\}$は調和数列となります。
import matplotlib.pyplot as plt
max_N= 100
#for p in [0.1, 0.5, 1,2,4]:
for p in [1]:
n_list=range(1,max_N+1)
a_list=[]
for n in n_list:
a_list.append( 1/pow(n,p))
S_list=[]
sum=0
for a in a_list:
sum = sum + a
S_list.append(sum)
plt.plot(S_list,'.-') #x軸の数列を省略することが可能です。この場合、Pythonによって自動的に設定してくれます。
plt.title("p=%5.2f"%p)
plt.grid()
plt.show()
次のコードではすべてのグラフを同じ図形に描いてみます。labelとlegendの使用を組み合わせて、各曲線にラベルを付けることができます。
import matplotlib.pyplot as plt
max_N= 100
n_list=range(1,max_N+1)
for p in [0.1, 0.5, 1,2,4]:
a_list=[]
for n in n_list:
a_list.append( 1/pow(n,p))
S_list=[]
sum=0
for a in a_list:
sum = sum + a
S_list.append(sum)
plt.plot(S_list,'-', label="p=%5.2f"%p)
plt.title("Graph of seriry S(n) for differen p")
plt.legend()
plt.grid()
plt.show()
$p=1$のとき、$\{S_n\}$が発散することを証明してみます。
$$ \sum_{n=1}^{\infty} \frac{1}{n} = 1 + \frac{1}{2}+ \frac{1}{3} + \cdots = 1+\frac{1}{2}+(\frac{1}{3}+\frac{1}{4}) + (\frac{1}{5}+\frac{1}{6}+\frac{1}{7}+\frac{1}{8}) + \cdots $$
ここで、以下の不等式を注意してください。 $$ (\frac{1}{3}+\frac{1}{4}) \ge (\frac{1}{4}+\frac{1}{4}) =\frac{1}{2} $$
$$ (\frac{1}{5}+\frac{1}{6}+\frac{1}{7}+\frac{1}{8}) \ge (\frac{1}{8}+\frac{1}{8}+\frac{1}{8}+\frac{1}{8}) = \frac{1}{2} $$
よって、
$$ \lim_{n\to \infty}S(n) = \sum_{n=1}^{\infty} \frac{1}{n} \ge 1 + \frac{1}{2}+ \frac{1}{2} + \frac{1}{2} + \cdots = \infty $$
$0<p\le 1$のとき、$\{S_n\}$が発散します。また、$p>1$のとき、$\{S_n\}$が収束します。この結果について、以下の関数の積分を利用して証明することができます。その詳細をここで略します。