横浜へなちょこ勉強会#3に行ってきました

第3回「プログラマの数学読書会」にいってきました
数学的帰納法の問題
5人で飲食費10000円を払いました。
ただし、払った金額はそれぞれ200円ずつ違います。
それぞれの払った額を求めなさい。

1人目:****円
↓+200円
2人目:****円
↓+200円
3人目:****円
↓+200円
4人目:****円
↓+200円
5人目:****円
―――――――
合計1000円

解答

1人目:1600円
2人目:1800円
3人目:2000円
4人目:2200円
5人目:2400円

解説
1人目を初項「a」とする
1人目の代金をa1、2人目をa2・・・a5とする
差額200円を交差「d」とする
人数5人を「n」とする
合計金額10000円を「S」とする

a(1) = a + d * 0
a(2) = a + d * 1
a(3) = a + d * 2
a(4) = a + d * 3
a(5) = a + d * 4
S = a1 + a2 + a3 + a4 + a5

となり、等差数列の合計を求めればよい。

また、
d * 人数-1 という法則性が見つかる

これを以下のように置き換える
順番を「n」する

a(n) = a + d * ( n - 1 ) 
    ↓
a(n) = a + ( n - 1 ) d

ここでガウスの等差数列の考え方を使う

S  = a(1) + a(2) + a(3) + a(4) + a(5) 
S  = a(5) + a(4) + a(3) + a(2) + a(1)
2S = ( a(1) + a(5) ) * 5

これを一般的にすると

S  = a(1) + a(2)   + a(3)   + a(4)   + a(5)   ・・・ + a(n-4) + a(n-3) + a(n-2) + a(n-1) + a(n)
S  = a(n) + a(n-1) + a(n-2) + a(n-3) + a(n-4) ・・・ + a(5)   + a(4)   + a(3)   + a(2)   + a(1)
2S = ( a(1) + a(n) ) * n

「 a(n) = a + ( n - 1 ) d 」に置き換える

S  = { a+(1-1)d } + { a+(2-1)d } + { a+(3-1)d } + { a+(4-1)d } + { a+(5-1)d }
S  = { a+(5-1)d } + { a+(4-1)d } + { a+(3-1)d } + { a+(2-1)d } + { a+(1-1)d }
2S = ( { a+(1-1)d } + a+(5-1)d ) * 5

以下の変更を加え一般的にする

  • a1 = a
  • 人数5をnであらわす
  • {}は無意味なので除く
2S = ( a + a + ( n - 1 ) d ) * n
↓
S = { 2a + ( n - 1 )d } * n / 2
S = n{ 2a + ( n - 1 )d } / 2

となる。
よって等差数列の合計値の求め方は以下の式で表すことができる