2020年1月1日水曜日

学習環境

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



    1. 最大公約数、最小公倍数はそれぞれ、

      xy2zx3y2z3

      (数係数は省略。以下同様。)


    2. xyx4y3

    3. a2bca3b3c2

    4. a2x-1a3x-13

    5. x+1x+2xx+1x+2x+3

    6. x2x3x+1x+22x+32

    7. x3-3x+2=x-1x-2x2-9x+14=x-2x-7x-2x-1x-2x-7

    8. x2-9=x+3x-3x2-2x-3=x-3x+1x2+4x+3=x+1x+31x-3x+1x+3

    9. x2+x-6=x-2x+3x2-6x+8=x-4x-2x2-x-12=x-4x+31x-4x-2x+3

    10. a2+2ab+b2=a+b2a2-b2=a-ba+ba3+b3=a+ba2-ab+b2a+ba-ba+b2a2-ab+b2

    11. x2+5x+6=x+2x+6x2+6x+9=x+32x3+8=x+2x2-2x+41x+2x+32x+6x2-2x+4

    12. x2+2x-3=x-1x+3x3+3x2-x-3=x-1x2+4x+3=x-1x+1x+3x3+2x2-x-2=x-1x2+3x+2=x-1x+1x+2x-1x-1x+1x+2x+3

コード

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

print('9.')


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

        gcds = [x * y ** 2 * z,
                x * y,
                a ** 2 * b,
                a ** 2 * (x - 1),
                (x + 1) * (x + 2),
                x ** 2,
                x - 2,
                1,
                1,
                a + b,
                1,
                x - 1]

        lcms = [x ** 3 * y ** 2 * z ** 3,
                x ** 4 * y ** 3,
                a ** 3 * b ** 3 * c ** 2,
                a ** 3 * (x - 1) ** 3,
                x * (x + 1) * (x + 2) * (x + 3),
                x ** 3 * (x + 1) * (x + 2) ** 2 * (x + 3) ** 2,
                (x - 1) * (x - 2) * (x - 7),
                (x - 3) * (x + 1) * (x + 3),
                (x - 4) * (x - 2) * (x + 3),
                (a - b) * (a + b) ** 2 * (a ** 2 - a * b + b ** 2),
                (x + 2) * (x + 3) ** 2 * (x ** 2 - 2 * x + 4),
                (x - 1) * (x + 1) * (x + 2) * (x + 3)]
        for s, g, l in zip(spam, gcds, lcms):
            self.assertEqual(gcd(s).factor(), g)
            self.assertEqual(lcm(s).factor(), l)


if __name__ == '__main__':
    main()

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

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

----------------------------------------------------------------------
Ran 1 test in 0.204s

OK
%

0 コメント:

コメントを投稿