数学のブログ

“離散的”な世界 等差数列とその一般項、初項、末項、項数、公差、一般項

新装版 数学読本3 (松坂 和夫(著)、岩波書店)の第13章(“離散的”な世界 - 数列)、13.1(数列とその和)、等差数列の和の問6の解答を求めてみる。

  1. 100 ( 1 + 100 ) 2 = 5050
  2. 10 ( 20 + 60 ) 2 = 400

    ここから
    一般項。

    a n = - 17 + 5 n

    末頃。

    a 20 = 83

    求める和。

    20 ( - 12 + 83 ) 2 = 710

    ここから
    公差は3。
    一般項。

    a n = - 2 + 3 n

    n 項の和。

    n ( 1 + ( - 2 + 3 n ) ) 2 = n ( 3 n - 1 ) 2
  3. 公差は-13。

    一般項。

    a n = 57 - 13 n

    また、

    57 - 13 n = - 86 n = 143 13 = 11

    なので-86は第11項。

    求める和。

    11 ( 44 - 86 ) 2 = 11 ( - 42 ) 2 = - 231

コード

#!/usr/bin/env python3
from unittest import TestCase, main
from sympy import solve
from sympy.abc import n

print('6.')


class Test(TestCase):
    def test1(self):
        self.assertEqual(sum(range(1, 101)), 5050)

    def test2(self):
        self.assertEqual(10 * (20 + 60) / 2, 400)

    def test3(self):
        self.assertEqual(
            20 * (-12 + -12 + (20 - 1) * 5) / 2, 710
        )

    def test4(self):
        self.assertEqual(
            n * (1 + 1 + (n - 1) * 3) / 2,
            n * (3 * n - 1) / 2
        )

    def test5(self):
        an = 44 + (n - 1) * -13
        ns = solve(an - -86)
        self.assertEqual(ns, [11])
        self.assertEqual(
            11 * (an.subs({n: 1}) + an.subs({n: 11})) / 2,
            -231
        )


if __name__ == "__main__":
    main()

入出力結果

% ./sample6.py -v
6.
test1 (__main__.Test) ... ok
test2 (__main__.Test) ... ok
test3 (__main__.Test) ... ok
test4 (__main__.Test) ... ok
test5 (__main__.Test) ... ok

----------------------------------------------------------------------
Ran 5 tests in 0.010s

OK
%