2020年1月4日土曜日

学習環境

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



    1. a - b c + a b - c + b c - a a b c = 0

    2. 1 - x + 2 x 1 - x 2 = 1 + x 1 - x 2 = 1 1 - x

    3. x - 4 - x + 3 x 2 - 16 = - 7 x 2 - 16

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

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

    6. x + 1 2 - x - 2 x + 2 + x 2 - 4 x + 2 x + 1 = x 2 + 2 x + 1 - x 2 + 4 + x 2 - 4 x + 1 x + 2 = x 2 + 2 x + 1 x + 1 x + 2 = x + 1 x + 2

    7. x + 2 x + 1 - 2 x x + 1 - 3 x 2 + 4 x x + 1 = x 2 + x + 2 x + 1 - 3 x 2 + 4 x x + 1 = x 3 - 2 x 2 + 2 x - 4 x x + 1

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

    9. 2 a a 2 - 1 + 2 a a 2 + 1 + 4 a 3 a 4 + 1 = 4 a 3 a 4 - 1 + 4 a 3 a 4 + 1 = 8 a 7 a 8 - 1

    10. x 3 + x + x x 2 + 1 2 + 1 x x 2 + 1 2 = x 4 + 2 x 2 + 1 x x 2 + 1 2 = x 2 + 1 2 x x 2 + 1 2 = 1 x

    11. x - 2 2 x - 3 x - 1 + 3 x - 1 2 x - 3 x + 2 + 2 x 2 - 5 x + 2 x - 1 = x 2 - 4 + 3 x 2 - 4 x + 1 2 x - 3 x - 1 x + 2 + 2 x 2 - 5 x + 2 x - 1 = 4 x 2 - 4 x - 3 2 x - 3 x - 1 x + 2 + 4 x 3 - 6 x 2 - 10 x + 15 2 x - 3 x - 1 x + 2 = 4 x 3 - 2 x 2 - 14 x + 12 2 x - 3 x - 1 x + 2

コード

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

print('13.')


class MyTest(TestCase):
    def test(self):
        x, a, b, c = symbols('x, a, b, c')
        spam = [(a - b) / (a * b) + (b - c) / (b * c) + (c - a) / (c * a),
                1 / (1 + x) + 2 * x / (1 - x ** 2),
                1 / (x + 4) - (x + 3) / (x ** 2 - 16),
                (x + 1) / (2 * x - 2) - (x ** 2 + 3) / (2 * x ** 2 - 2),
                (x + 8) / (x ** 2 + x - 2) - (x + 4) / (x ** 2 + 3 * x + 2),
                (x + 1) / (x + 2) - (x - 2) / (x + 1) +
                (x ** 2 - 4) / (x ** 2 + 3 * x + 2),
                x + 2 - 2 * x / (x + 1) - (3 * x ** 2 + 4) / x / (x + 1),
                (x - 2) / (x ** 2 - x + 1) - 1 /
                (x + 1) + (x ** 2 + x + 3) / (x ** 3 + 1),
                1 / (a - 1) + 1 / (a + 1) + 2 * a /
                (a ** 2 + 1) + 4 * a ** 3 / (a ** 4 + 1),
                x / (x ** 2 + 1) + x / (x ** 2 + 1) ** 2 +
                1 / (x * (x ** 2 + 1) ** 2),
                (x - 2) / (2 * x ** 2 - 5 * x + 3) + (3 * x - 1) /
                (2 * x ** 2 + x - 6) + (2 *
                                        x ** 2 - 5) / (x ** 2 + x - 2),
                a / ((a - b) * (a - c)) + b / (b - c) / (b - a) + c / (c - a) / (c - b)]
        egg = [0,
               1 / (1 - x),
               -7 / (x ** 2 - 16),
               1 / (x + 1),
               6 / (x ** 2 - 1),
               (x + 1) / (x + 2),
               (x ** 3 - 2 * x ** 2 + 2 * x - 4) / x / (x + 1),
               (x ** 2 + x) / (x ** 3 + 1),
               8 * a ** 7 / (a ** 8 - 1),
               1 / x,
               (4 * x ** 3 - 2 * x ** 2 - 14 * x + 12) / (2 * x - 3) / (x - 1) / (x + 2)]
        for s, t in zip(spam, egg):
            self.assertEqual((s - t).simplify(), 0)


if __name__ == '__main__':
    main()

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

% ./sample13.py -v
13.
test (__main__.MyTest) ... ok

----------------------------------------------------------------------
Ran 1 test in 1.029s

OK
%

0 コメント:

コメントを投稿