2019年10月13日日曜日

学習環境

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



    1. 加法、減法、乗法の演算について閉じている。

      2 m + 2 n = 2 m + n 2 m - 2 n = 2 m - n 2 m 2 n = 2 2 m n

      除法についての反例。

      2 2 = 1 2 4 = 1 2

    2. 乗法について閉じている。

      2 m + 1 2 n + 1 = 2 m n + m + n + 1

      加法、減法、除法についての反例。

      1 + 1 = 2 1 - 1 = 0 1 3

      加法、乗法、除法について閉じている。

      m n + k l = ml + n k n l m n · k l = m k n l m n k l = m l n k

      減法についての反例。

      1 - 1 = 0 0

コード

Python 3

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

print('2.')


class MyTest(TestCase):
    def setUp(self):
        pass

    def tearDown(self):
        pass

    def test_even(self):
        m, n = symbols('m, n', integer=True)
        k, l = 2 * m, 2 * n
        for o in [k + l, k - l, k * l]:
            self.assertTrue(o % 2 == 0)
        self.assertTrue(k / l % 2 != 0)

    def test_odd(self):
        m, n = symbols('m, n', integer=True)
        k, l = 2 * m + 1, 2 * n + 1
        self.assertTrue(k * l % 2 == 1)
        for o in [k + l, k - l, k / l]:
            self.assertTrue(o % 2 != 1)

    def test_positive_rational(self):
        m, n = symbols('m, n', integer=True, positive=True)
        k, l = symbols('k, l', nonzero=True, integer=True, positive=True)
        a, b = m / k, n / l
        for o in [a + b, a * b, a / b]:
            self.assertTrue(o.is_rational and o.is_positive)
        self.assertFalse((a - b).is_positive)


if __name__ == '__main__':
    main()

入出力結果(Bash、cmd.exe(コマンドプロンプト)、Terminal、Jupyter(IPython))

% ./sample2.py -v
2.
test_even (__main__.MyTest) ... ok
test_odd (__main__.MyTest) ... ok
test_positive_rational (__main__.MyTest) ... ok

----------------------------------------------------------------------
Ran 3 tests in 0.029s

OK
% 

0 コメント:

コメントを投稿