2020年1月27日月曜日

学習環境

代数への出発 (新装版 数学入門シリーズ) (松坂 和夫(著)、岩波書店)の第3章(因数分解と分数式)、練習問題の問9の解答を求めてみる。



    1. 1 3 - 1 = 0

      また、

      n 3 - n = n - 1 + 1 3 - n - 1 + 1 = n - 1 3 + 3 n - 1 2 + 3 n - 1 + 1 - n - 1 - 1 = n - 1 3 - n - 1 + 3 n - 1 + 3 n - 1 = n - 1 3 - n - 1 + 6 n - 1

      よって、 帰納法により、すべての正の整数 n に対して

      n 3 - n

      は6で割り切れる。

      (証明終)


    2. n が奇数なので、

      n = 2 k + 1 k

      とおく。

      n 3 - n = 2 k + 1 3 - 2 k + 1 = 2 k - 1 + 2 3 - 2 k - 1 + 2 = 2 k - 1 3 + 3 · 2 k - 1 2 · 2 + 3 2 k - 1 · 4 + 8 - 2 k - 1 - 2 = 2 k - 1 3 - 2 k - 1 + 6 2 k - 1 2 + 2 2 k - 1 + 1 = 2 k - 1 3 - 2 k - 1 + 6 2 k - 1 2 k - 1 + 2 + 1 = 2 k - 1 3 - 2 k - 1 + 6 2 k - 1 2 k + 1 + 1 = 2 k - 1 3 - 2 k - 1 + 6 · 4 k 2 = 2 k - 1 3 - 2 k - 1 + 24 k 2

      よって、 帰糸内法になり、すべての正の長を久 n に対して、

      n 3 - n

      は24で割り切れる。

      (証明終)

コード

#!/usr/bin/env python3
from unittest import TestCase, main
from sympy import symbols, pprint, solve

print('8.')

n = symbols('n', integer=True, positive=True)
m = 2 * n - 1

for o in [(n ** 3 - n) % 6, (m ** 3 - m) % 24]:
    pprint(o)
    print()


class MyTestCase(TestCase):
    def test1(self):
        for n in range(1, 101):
            self.assertEqual((n ** 3 - n) % 6, 0)

    def test2(self):
        for n in range(1, 202, 2):
            self.assertEqual((n ** 3 - n) % 24, 0)


if __name__ == "__main__":
    main()

入出力結果(Zsh、PowerShell、Terminal、Jupyter(IPython))

% ./sample9.py -v
8.
⎛ 3    ⎞      
⎝n  - n⎠ mod 6

  ⎛⎛               3    ⎞      ⎞
  ⎜⎜  n   (2⋅n - 1)    1⎟      ⎟
4⋅⎜⎜- ─ + ────────── + ─⎟ mod 6⎟
  ⎝⎝  2       4        4⎠      ⎠

test1 (__main__.MyTestCase) ... ok
test2 (__main__.MyTestCase) ... ok

----------------------------------------------------------------------
Ran 2 tests in 0.000s

OK
%

0 コメント:

コメントを投稿