数学のブログ

“離散的”な世界 等差数列の和、和から項数を求める、和が最大になる項数

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

  1. 一般項。

    a n = 27 - 3 n

    n 頃までの和。

    n ( 24 + ( 27 - 3 n ) ) 2 = - 3 n 2 + 51 n 2

    よって105になるのは

    - 3 n 2 + 51 n 2 = 105
    3 n 2 - 51 n + 210 = 0
    n 2 - 17 + 70 = 0
    ( n - 7 ) ( n - 10 ) = 0

    よって、第7項と第10頃までの和が105になる。

  2. - 3 n 2 + 51 n
    = - 3 ( n 2 - 17 n )
    = - 3 ( n - 17 2 ) 2 + 3 · ( 17 2 ) 2

    よって、

    16 2 = 8 , 18 2 = 9

    のとき、 すなわち 第8項と第9項までの和が最も大きくなる。

コード

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

print('7.')

an = 27 - 3 * n
s = n * (24 + an) / 2


class Test(TestCase):
    def test1(self):
        ns = solve(s - 105)
        self.assertEqual(ns, [7, 10])

    def test2(self):
        ns = solve(Derivative(s, n, 1).doit())
        self.assertEqual(ns, [Rational(17, 2)])


p = plot(an, s, 105,
         (n, 1, 11),
         legend=False,
         show=False)
colors = ['red', 'green', 'blue', 'brown', 'orange',
          'purple', 'pink', 'gray', 'skyblue', 'yellow']
for o, color in zip(p, colors):
    o.line_color = color
p.save('sample7.png')
p.show()

if __name__ == "__main__":
    main()

入出力結果

% ./sample7.py -v
7.
test1 (__main__.Test) ... ok
test2 (__main__.Test) ... ok

----------------------------------------------------------------------
Ran 2 tests in 0.017s

OK
%