数列への考察

計算機における計算によって、数列と数列の極限の概念を理解します。

  • 数列が収束する時、収束列の極限の確認と計算
  • 収束してない数列について、グラフで「発散」を確認すること。

復習 数列の極限の定義

$x$が数列$x_n$の極限であるとは、以下の条件が成り立つことをいう:
任意の実数$\epsilon> 0$に対して、ある自然数$N$が存在して、任意の自然数 $n>N$に対して、$|x_n-x| < \epsilon$が成り立つ。

1. 数列の単調性

数列の単調性を利用して、数列が収束しているがとうかを検討できます。

数列に関する基本定理:

有界な単調数列は収束する。同じように、下界を持っている単調減少数列は収束する。

演習1

以下の2つ数列の単調性をグラフで確認しなさい。

  • 数列$a_n$

$$ a(n) = \;\bigg(1+\frac{1}{n}\bigg)^{n} $$

  • 数列$b_n$

$$ b(n) = \;\bigg(1+\frac{1}{n}\bigg)^{n+1} $$

補足:数列の作成方法

この演習での数列はfor文で作成できます。例えば、以下の例文は1から10番目までの数例を作成します。

n_list=range(1,11)
a=[]
for n in n_list:
    a.append(pow(1+1/n,n))
  • 1行目range(p,q,r)関数は数$p$から$q$未満まで、$r$ずつ増やした配列を生成します。3つ目の引数を省略した場合には1ずつの増加となります。
  • 2行目の"[ ]"では空のリストを定義しています。
  • for文を用いて数列を順番に計算しリストに格納していきます。

    (リスト名:a).append( (リストの最後尾に追加する要素:第i項) )

  • pow(x,n): $x$の$n$乗を返す。

演習1:以下のコードを実行してください。

In [ ]:
import matplotlib.pyplot as plt

n_list=range(1,51)
a=[]
b=[]
for n in n_list:
    a.append(pow(1+1/n,n))
    b.append(pow(1+1/n,n+1))
    
plt.plot(n_list,a,'.r') # Red色の点を描く
plt.plot(n_list,b,'.b') # Blue色の点を描く
plt.grid() #グリッドを表示する。
plt.show() #グラフを表示する。

補足:線分のグラフの描画

$A=(x1,y1)$と$B=(x2,y2)$2つの端点を持っている線分を描画するために、x座標のリストとy座標のリストを利用してます。

In [ ]:
x1=0; y1=0;
x2=5; y2=1;
x_list = [x1,x2]
y_list = [y1,y2]
plt.plot(x_list, y_list)
plt.grid()
plt.show()

Pythonでは改行すると別の文と見なされますが,1行に複数文書くときはセミコロンで区切ります。

演習1の補足演習

演習1のグラフに、点(0,e)と点(50,e)という2つの端点を持っている線分を描いてください。ここで、$e$はネイピア数です。即ち

$$ e = 2.71828 18284 \cdots $$

In [ ]:
e=2.7182818284

2. 発散する数列

  • 収束していない数列は「発散数列」と呼びます。

  • 発散数列は正の無限大へ発散することは以下のように定義できます。

$$\forall K > 0 \; \exists n_0 \in \mathbb{N} \;\forall n \in \mathbb{N}\;\bigg[n>n_0 \Longrightarrow a_n > K\bigg] $$ 即ち、項数$n$を限りなく大きくしていくとき、数列の項の値$a_n$が限りなく大きくなります。

演習2

以下の数列の収束性をグラフで確認しなさい。例文では、$a_n$がすでに用意されていますが、$b_n$を自分で作成してください。

  • $ a_n = \sin(n) $
  • $ b_n = \sin(n)/n $

ここで、数学関数$\sin(x)$を使用するために、import mathmath.sin(x)の使用が必要です。

In [ ]:
#演習2
import matplotlib.pyplot as plt
import math

n_list=range(1,51)
a=[]
for n in n_list:
    a.append(math.sin(n))
    
plt.plot(n_list,a,'.-b') #点と折れ線のグラフを描く
plt.grid()
plt.show()

3. 級数と調和数列

実数$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}$$

特に、$b=1$の時、$\{a(k)\}$は調和数列となります。

演習3

  • 3.1) 数列$\{a(k)\}$を作成してください。ただし、$k$を50までとします。
  • 3.2) $p=0.1, 0.5,1,2,4$に対して、数列$S(n)$ ($n=1,\cdots, 50$)のグラフを描いて、数列が収束しているがとうかを考察してください。
In [ ]:
#演習3の1

n_list=range(1,51)
p = 2;
a_list=[]
for n in n_list:
    # a_listを作成するコードを書いてください。
    # ?
In [ ]:
#演習3の2

import matplotlib.pyplot as plt
import math

S_list=[]
sum=0
for a in a_list:
    sum = sum + a
    S_list.append(sum)

plt.plot(S_list,'.-') #x軸の数列を省略することが可能です。この場合、Pythonによって自動的に設定してくれます。
plt.grid()
plt.show()

演習3の補足演習

演習3の2では、以下のコード

for a in a_list:

for k in range(50):

に入れ替えて、それに応じてループの中身を修正してみてください。

演習3の結論

(ここに書いてください。)