2020年4月1日水曜日

学習環境

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



    1. 4 y + 11 z = 25 12 x + 16 y - 8 z = - 44 12 x - 6 y + 9 z = 51 22 y - 17 z = - 95 44 y - 34 z = - 190 44 y + 121 z = 275 155 z = 465 31 z = 93 z = 3 4 y + 33 = 25 4 y = - 8 y = - 2 2 x + 6 - 12 = - 4 x = 1

    2. 2 x = 24 x = 12 2 y = 14 y = 7 2 z = 10 z = 5

    3. 9 y - 5 z = - 1 13 y - 4 z = 5 36 y - 20 z = - 4 65 y - 20 z = 25 29 y = 29 y = 1 13 - 4 z = 5 z = 2 x - 4 + 4 = 3 x = 3

    4. 2 y + 2 z = 10 y + z = 5 z = 5 - y 5 y - 15 + 3 y = 1 8 y = 16 y = 2 z = 3 2 x - 2 + 3 = - 1 x = - 1

    5. { 3 x + 2 y = 8 3 y + z = 10 5 x + y - z = 12 z = 10 - 3 y 5 x + y - 10 + 3 y = 12 5 x + 4 y = 22 6 x + 4 y = 16 x = - 6 - 18 + 2 y = 8 y = 13 z = - 29

    6. 3 x + y + z + u = 30 x + y + z + u = 10 x = 1 y = 2 z = 7 u = 4

    7. 6 x + y + z + u = 0 x + y + z + u = 0 2 u = 2 u = 1 2 z = - 6 z = - 3 y = 0 x = 2

    8. z = 4 x + 4 + 5 = 4 x + 9 y = 8 x + 18 - 4 = 8 x + 14 x = 16 x + 28 + 2 x = - 2 y = - 2 z = 1 u = - 2

コード

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

print('2.')

x, y, z, u = symbols('x, y, z, u', real=True)
eqss = [(2 * x - 3 * y - 4 * z + 4,
         3 * x + 4 * y - 2 * z + 11,
         4 * x - 2 * y + 3 * z - 17),
        (x + y - z - 14,
         x - y + z - 10,
         x - y - z),
        (x - 4 * y + 2 * z - 3,
         2 * x + y - z - 5,
         3 * x + y + 2 * z - 14),
        (2 * x - y + z + 1,
         5 * y - 3 * z - 1,
         6 * x - y + 5 * z - 7),
        ((3 * x + 2 * y) / 4 - 2,
         (3 * y + z) / 5 - 2,
         (5 * x + y - z) / 6 - 2),
        (y + z + u - 9,
         z + u + x - 8,
         u + x + y - 7,
         x + y + z - 6),
        (x + y + z + 3 * u - 2,
         x + y + 3 * z + u + 6,
         x + 3 * y + z + u,
         3 * x + y + z + u - 4),
        (x - (2 * y + 2),
         y - (2 * z - 4),
         z - (2 * u + 5),
         u - (2 * x + 2))]
xyzus = [(1, -2, 3),
         (12, 7, 5),
         (3, 1, 2),
         (-1, 2, 3),
         (-6, 13, -29),
         (1, 2, 3, 4),
         (2, 0, -3, 1),
         (-2, -2, 1, -2)]


class Test(TestCase):
    def test3(self):
        for eqs, (x0, y0, z0) in zip(eqss[0:5], xyzus[:5]):
            s = solve(eqs)
            d = {x: x0, y: y0, z: z0}
            if type(s) == list:
                self.assertEqual(s, [d])
            else:
                self.assertEqual(s, d)

    def test4(self):
        for eqs, (x0, y0, z0, u0) in zip(eqss[5:], xyzus[5:]):
            s = solve(eqs)
            d = {x: x0, y: y0, z: z0, u: u0}
            if type(s) == list:
                self.assertEqual(s, [d])
            else:
                self.assertEqual(s, d)


if __name__ == "__main__":
    main()

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

% ./sample2.py -v
2.
test3 (__main__.Test) ... ok
test4 (__main__.Test) ... ok

----------------------------------------------------------------------
Ran 2 tests in 0.106s

OK
%

0 コメント:

コメントを投稿