サイトトップ

Director Flash 書籍 業務内容 プロフィール

Adobe Flash CS3 Professional ActionScript 3.0

□Math 01 数列の基礎

01-01 数列とは
順序づけされた数の並びを「数列」といいます。順序を示す番号(順序数)を指定すれば、必ずひとつの値が決まるような数の集まりといってもよいでしょう。この順序数自体も、「自然数」により構成されるもっとも基本的な数列(自然数列)になります。

1, 2, 3, 4, ...

[*筆者用参考] Wikipedia「数列」、「数列とその極限

Tips Math01-001■自然数に0は入るか
中学校や高等学校の数学教育では、おそらく自然数に0は含まないと教わったのではないでしょうか。しかし、学問としての数学では、0を含めた方が定義として自然なこともあり、0から始まる整数とされる場合が少なくありません。

どちらであっても、議論の最初に定義しておけば、とくに問題はないでしょう。本書は、高等学校までの教育課程を基本としますので、自然数を1から始まる正の整数としておきます。

並べられた数のひとつひとつを「項」といいます。そして、とくに最初の項は「初項」と呼ばれます。数学では、各項や順序数との間に何らかの規則のある数列が、おもに扱われます。中でも「等差数列」と「等比数列」が、基礎的かつ代表的な数列でしょう。


01-02 等差数列
等差数列は、隣り合う2項の差がすべて等しい数列です。その等しい差を「公差」といいます。すでに上に挙げた自然数列は、初項1、公差1の等差数列です。また、偶数や奇数の数列も、初項がそれぞれ0と1で、公差がともに2の等差数列です。

偶数: 0, 2, 4, 6, ...
奇数: 1, 3, 5, 7, ...


偶数や奇数の数列は、隣り合うどの2つの項を取っても差が2なので、公差2の等差数列。

aという数列について、第n項は右下に添字をつけて、anと表します。初項がa1で公差dの等差数列の第n項は、つぎの式で示すことができます。

an = a1+(n-1)d

上記の偶数および奇数の数列で、第5項はそれぞれ、8(=0+2×4)と9(=1+2×4)になることが、この式でも確かめられます。

それでは、等差数列の項を初項から第n項まですべて足したとき、その合計Snはどうなるでしょう?

Sn = a1 + a2 + a3 + ... + an
   = a1 + (a1+d) + (a1+2d) + ... + (a1+(n-1)d)

右辺の項数はnですから、取りあえずつぎのようにまとめることができます。

Sn = na1 + (d + 2d + ... + (n-1)d)

ここで、右辺の括弧()の中の合計Aを求めることができれば、Snが導けます。数学もスクリプトも、わかった部分とわからない部分とはできるだけ分け、1度に考える範囲を小さくすることが、確実に理解するコツです。

A = d + 2d + ... + (n-1)d

天才数学者ガウスは、小学生のとき「自然数1から100までの合計を求めよ」という問題を出されて、即座に答えを計算したといいます。その逸話から、ヒントをもらいましょう。

まず、1から100までの合計をSとします。つぎに、逆に100から1までの合計を考えると、足し算は足す順序を変えても答えは変わりませんから、やはり計はSになります。このふたつの式を、各項ごとに足し合わせます。

    S = 1 + 2 + 3 + ... + 100
+) S = 100 + 99 + 98 + ... + 1
________________
   2S = 101 + 101 + 101 + ... + 101

右辺は全部で100項ありますから、つぎのように合計Sを5050と導くことができます。

2S = 101×100 = 10100
S = 10100/2 = 5050

では改めて、ガウスの考え方に倣い、上記の合計Aを求めてみましょう。

    A = d + 2d + ... + (n-1)d
+) A = (n-1)d + (n-2)d + ... + d
________________
   2A = nd + nd + ... + nd

右辺の項数は、初項を除いた(n-1)項ですから、合計Aはつぎのように求められます。

2A = n(n-1)d
A = n(n-1)d/2

この結果を、上記の等差数列の合計Snの式に戻します。

Sn = na1 + A
   = na1 + n(n-1)d/2
   = n(a1 + (n-1)d/2)

自然数1から100までの合計は、初項1で公差1の自然数列第100項までの和になりますから、つぎのように求められます。

S100 = 100(1+99×1/2) = 100×(2+99)/2 = 50×101 = 5050

Tips Math01-002■初項と末項から等差数列の和を求める
最後の項(末項)anがわかっているなら、その数を用いた方が計算は楽です。まず、末項anの式を、公差dについて解きます。

an = a1+(n-1)d
d = (an-a1)/(n-1)

このdの式を上記等差数列の合計Snの式の右辺に代入すると、つぎのように初項a1と末項anから合計Snを導く式が得られます。

Sn = n(a1 + (n-1)(an-a1)/2(n-1))
   = n(2a1 + (an-a1))/2
   = n(a1 + an)/2

この式を自然数1から100までの合計S100の場合に当てはめると、まさにガウスの考えた計算になります。

S100 = 100(1+100)/2 = 100×101/2 = 5050

表Math01-001■等差数列のポイント
項目 内容
第n項an

初項をa1、公差はdとする。

an = a1+(n-1)d
初項から第n項までの和Sn

(1)初項をa1、公差はdとする。

Sn = n(a1 + (n-1)d/2)

(2)初項をa1、末項はanとする。

Sn = n(a1 + an)/2

01-03 等比数列
等比数列は、隣り合う2項の比がすべて等しい数列です。その等しい比を「公比」といいます。初項1、公比2の等比数列は、コンピュータに関わりの深い2のべき乗の数字が並びます。

1, 2, 4, 8, ...

初項がa1で公比rの等比数列の第n項は、つぎの式で表せます。

an = a1rn-1

等比数列の和は、「幾何級数」とも呼ばれます。幾何級数的とかねずみ算的という表現は、いずれも瞬く間に増加する等比級数の性質を示しています。

Tips Math01-003■ねずみ算
「ねずみ算」は日本独自に発達した数学である「和算」のひとつで、「ある期間にねずみがどれだけ増えるか」を計算する問題です。初出は吉田光由が著した『塵劫記』とされます。

『塵劫記』では、つがいの2匹のねずみが、ひと月で12匹の子を産み、全部で14匹つまり7倍に増えるという計算で始めます。つまり、初項2で公比7の等比数列になります。すると、1年後つまり13ヶ月目の始まり(初項2が1ヶ月目の始まりなので)には、2×713-1で約277億匹に届く計算です(もちろん、実際には死ぬ割合が相当程度あるでしょう)。

ねずみ算ほどではないにしても、雪だるま式に増えるという高利のローンの計算も、等比数列になります。100万円を利息制限法上限金利の年15%で借入れると、初項100万で公比1.15(元本1+利子0.15)の等比数列です。すると、5年で2倍を超える返済額(約201万円 = 100万×1.155)になることがわかります。

では、等比級数の初項から第n項までの和Snを求めてみましょう。まずは、少しまとめます。

Sn = a1 + a1r + a1r2 + ... + a1rn-1
   = a1(1 + r + r2 + ... + rn-1)

ここで、括弧()の中の式をAと置いて、その合計を求めれば、Snが導けます。等比数列は、各項に公比rを掛合わせると、次項と等しくなります。そこで、初項と末項との間の不定数の項を消すために、A - rAを計算します。

   A = 1 + r + r2 + ... + rn-1
-) rA =    r + r2 + ... + rn-1 + rn
_______________
(1-r)A = 1 - rn
   A = (1-rn)/(1-r)

このAの式をSnの式に代入すると、等比数列の初項から第n項までの合計がつぎのように求まります。

Sn = a1(1-rn)/(1-r)

Tips Math01-004■公比が1の等比数列の和
上記の等比数列の和の式には、分母に(1-r)があります。分数の分母に0は置けませんので、この式は厳密には、公比rが1でないことを条件とします。

公比が1の等比数列というのは、すべての項が初項と等しくなります。したがって、公比が1の等比数列の和はつぎのとおりです。

Sn = na1

項数を無限大(∞)に拡大した等比級数の和すなわち無限等比級数において、公比rの絶対値が1未満(|r|<1または-1<r<1)のとき、値は収束することが知られています。

Sn = a1(1-rn)/(1-r)

この等比級数の和Snの式で、右辺の分母にあるrnは、-1<r<1の場合項数nをかぎりなく大きく(n→∞)したとき0に収束します。したがって、無限等比数列の和(無限等比級数)Snは、つぎの式で表されます。

Sn = a1/(1-r)
表Math01-002■等比数列のポイント
項目 内容
第n項an

初項をa1、公比はrとする。

an = a1rn-1
初項から第n項までの和Sn

(1)初項をa1とし、公比がr(ただし、r≠1)の場合。

Sn = a1(1-rn)/(1-r)

(2)初項をa1とし、公比が1の場合。

Sn = na1
無限等比数列の和(無限等比級数)Sn 初項をa1とし、公比rが-1<r<1のとき、項数nをかぎりなく大きくした場合。
Sn = a1/(1-r)

01-04 イーズアウトと等比数列
本編第04章の04-05「イーズアウトの公式」で、減速しながら一定値にかぎりなく近づくフレームごとのアニメーション処理を、つぎのように示しました。

プロパティ += 自分から見た相手との差*減速率

ただし、0 < 減速率 < 1とする。

この処理において、毎フレーム目的の値に向かって近づく数値の並びは、等比数列になっています。たとえば、減速率を0.2として、初期状態から見た目的の値(たとえば座標値)は簡単のために1とします。 すると、フレームごとに変化する値は、つぎのようになります。

1: 0.2 … 残り0.8
2: 0.2×0.8 … 残り0.8×0.8 = 0.82
3: 0.2×0.8×0.8 = 0.2×0.82 … 残り0.8×0.82 = 0.83


n: 0.2×0.8n-1 … 残り0.8n

まず第1回目のフレーム更新で、目的の値1のうち減速率0.2、つまり2割だけ変化(移動)します。目的の値まで、残りは0.8です。つぎに第2回目のフレーム更新では、残り0.8のうち減速率0.2分(2割)つまり0.2×0.8変化します。すると、残りは0.8のさらに8割である0.82です。同様に第3回目のフレーム更新では、残り0.82のさらに2割である0.2×0.82変化し、残りは8割の0.83となります。

これは結局、初項が0.2で公比0.8の等比数列ですから、第n項は0.2×0.8n-1となります。残りの0.8nは、nをかぎりなく大きくすれば0に収束します。

さらに一般化して減速率をdとすると、初項はdで公比(1-d)の等比数列だと考えることができます。すると、第nフレーム目の第n項anは、つぎのように表せます。

an = d(1-d)n-1

フレームごとの変化(移動)の合計、つまり等比数列の和がかぎりなく一定の値に近づく条件は、公比の絶対値が1より小さいことですから、-1<(1-d)<1となり、0<d<2であることがわかります(Tips 04-005「減速率」参照)。

確認のため、無限等比数列の和(無限等比級数)Snを求めると1となり、目的の値1に収束することがわかります。

Sn = d/(1-(1-d)) = d/d = 1

作成者: 野中文雄
作成日: 2007年9月17日


Copyright © 2001-2007 Fumio Nonaka.  All rights reserved.