2019年12月21日土曜日

学習環境

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



    1. 25x2-20x+4=5x-22

    2. 14x2-15xy+125y=12x-15y2

    3. 4a2+12a+9=2a+32

    4. 14x+y2-ax+y+a2=12x+y-a2=12x+12y-a2=14x+y-2a2

    5. 36x3+4x2y+19xy2=x(36x2+4xy+19y2)=x6x+13y2=19x18x+y2

    6. 25a2b2-9c2d2=5ab-3cd5ab+3cd

    7. a-2b2-3a+4b2=a-2b+3a+4ba-2b-3a-4b=4a+2b-2a-6b=-42a+ba+3b

    8. x2y2-x2-y2+1=y2-1x2-y2-1=12-1x2-1=x-1x+1y-1y+1

    9. a4-b4=a2+b2a2-b2=a2+b2a+ba-b

    10. a5-a=aa4-1=aa2+1a2-1=a2+1aa+1a-1

    11. 16x2-8xy+y2-9z2=4x-y2-9z2=4x-y-3z4x-y+3z

    12. 4a2b2-a2+b2-c22=2ab-a2+b2-c22ab+a2+b2-c2=-a-b2-c2a+b2-c2=-a-b+ca-b-ca+b+ca+b-c

コード

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

print('2.')


class MyTest(TestCase):
    def test(self):
        x, y, z, a, b, c, d = symbols('x, y, z, a, b, c, d')
        spam = [25 * x ** 2 - 20 * x + 4,
                x ** 2 / 4 - x * y / 5 + y ** 2 / 25,
                4 * a ** 2 + 12 * a + 9,
                (x + y) ** 2 / 4 - a * (x + y) + a ** 2,
                36 * x ** 3 + 4 * x ** 2 * y + x * y ** 2 / 9,
                25 * a ** 2 * b ** 2 - 9 * c ** 2 * d ** 2,
                (a - 2 * b) ** 2 - (3 * a + 4 * b) ** 2,
                x ** 2 * y ** 2 - x ** 2 - y ** 2 + 1,
                a ** 4 - b ** 4,
                a ** 5 - a,
                16 * x ** 2 - 8 * x * y + y ** 2 - 9 * z ** 2,
                4 * a ** 2 * b ** 2 - (a ** 2 + b ** 2 - c ** 2) ** 2]
        egg = [(5 * x - 2) ** 2,
               (x / 2 - y / 5) ** 2,
               (2 * a + 3) ** 2,
               (x + y - 2 * a) ** 2 / 4,
               x * (18 * x + y) ** 2 / 9,
               (5 * a * b - 3 * c * d) * (5 * a * b + 3 * c * d),
               -4 * (2 * a + b) * (a + 3 * b),
               (x - 1) * (x + 1) * (y - 1) * (y + 1),
               (a ** 2 + b ** 2) * (a + b) * (a - b),
               (a ** 2 + 1) * a * (a + 1) * (a - 1),
               (4 * x - y - 3 * z) * (4 * x - y + 3 * z),
               -(a - b + c) * (a - b - c) * (a + b + c) * (a + b - c)]

        for s, t in zip(spam, egg):
            self.assertEqual(s.expand(), t.expand())


if __name__ == '__main__':
    main()

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

% ./sample2.py -v
2.
test (__main__.MyTest) ... ok

----------------------------------------------------------------------
Ran 1 test in 0.124s

OK
%

0 コメント:

コメントを投稿