2019年12月31日火曜日

学習環境

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



    1. a 4 - b 2 c 2 + a 2 c 2 - b 4 = a 2 - b 2 a 2 + b 2 + c 2 a 2 - b 2 = a + b a - b a 2 + b 2 + c 2

    2. x 3 - y 3 - x 2 + 2 x y - y 2 = x - y x 2 + x y + y 2 - x - y 2 = x - y x 2 + x y + y 2 - x + y

    3. a 4 + 2 a 3 b - 2 a b 3 - b 4 = a 2 - b 2 a 2 + b 2 + 2 a b a 2 - b 2 = a + b a - b a + b 2 = a + b 3 a - b

    4. 3 x 3 + x 2 y + 2 y 3 = 3 x 3 + 3 y 3 - y 3 + x 2 y = 3 x + y x 2 - x y + y 2 - y y 2 - x 2 = 3 x + y x 2 - x y + y 2 + y x + y x - y = x + y 3 x 2 - 3 x y + 3 y 2 + x y - y 2 = x + y 3 x 2 - 2 x y + 2 y 2

    5. a 3 + 3 a b 2 + 4 b 3 = a 3 + b 3 + 3 b 3 + 3 a b 2 = a + b a 2 - a b + b 2 + 3 b 2 a + b = a + b a 2 - a b + 4 b 2

    6. a + b + c 3 - a 3 - b 3 - c 3 = a 3 + 3 a 2 b + c + 3 a b + c 2 + b + c 3 - a 3 - b 3 - c 3 = 3 a 2 b + c + 3 a b + c 2 + 3 b 2 c + 3 b c 2 = 3 a 2 b + c + 3 a b + c 2 + 3 b c b + c = 3 b + c a 2 + a b + c + b c = 3 b + c a + b a + c = 3 a + b b + c c + a

    7. x 2 + x - 2 x 2 + x + 1 - 28 = x 2 + x 2 - x 2 + x - 30 = x 2 + x - 6 x 2 + x + 5 = x + 3 x - 2 x 2 + x + 5

    8. 2 x 2 - 3 x 2 x 2 - 3 x - 6 + 5 = 2 x 2 - 3 x 2 - 6 2 x 2 - 3 x + 5 = 2 x 2 - 3 x - 1 2 x 2 - 3 x - 5 = 2 x 2 - 3 x - 1 2 x - 5 x + 1

コード

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

print('9.')


class MyTest(TestCase):
    def test1(self):
        x, y, z, a, b, c = symbols('x, y, z, a, b, c', real=True)
        spam = [a ** 4 - b ** 2 * c ** 2 + a ** 2 * c ** 2 - b ** 4,
                (x ** 3 - y ** 3 - x ** 2 + 2 * x * y - y ** 2),
                a ** 4 + 2 * a ** 3 * b - 2 * a * b ** 3 - b ** 4,
                3 * x ** 3 + x ** 2 * y + 2 * y ** 3,
                a ** 3 + 3 * a * b ** 2 + 4 * b ** 3,
                (a + b + c) ** 3 - a ** 3 - b ** 3 - c ** 3,
                (x ** 2 + x - 2) * (x ** 2 + x + 1) - 28,
                (2 * x ** 2 - 3 * x) * (2 * x ** 2 - 3 * x - 6) + 5]

        egg = [(a + b) * (a - b) * (a ** 2 + b ** 2 + c ** 2),
               (x - y) * (x ** 2 + x * y + y ** 2 - x + y),
               (a + b) ** 3 * (a - b),
               (x + y) * (3 * x ** 2 - 2 * x * y + 2 * y ** 2),
               (a + b) * (a ** 2 - a * b + 4 * b ** 2),
               3 * (a + b) * (b + c) * (c + a),
               (x + 3) * (x - 2) * (x ** 2 + x + 5),
               (2 * x ** 2 - 3 * x - 1) * (2 * x - 5) * (x + 1)]
        for s, t in zip(spam, egg):
            self.assertEqual(s.expand(), t.expand())
            self.assertEqual(s.factor(), t.factor())


if __name__ == '__main__':
    main()

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

% ./sample9.py -v
9.
test1 (__main__.MyTest) ... ok

----------------------------------------------------------------------
Ran 1 test in 0.194s

OK
%

0 コメント:

コメントを投稿