2020年4月18日土曜日

学習環境

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


  1. 直方体の縦、横、高さをそれぞれ a、 b、c とする。

    問題の仮定より、

    a > 0 , b > 0 , c > 0 { 2 a b + b c + c a = 376 2 a + 1 b + b c + c a + 1 = 376 + 36 2 a b + 1 + b + 1 c + 1 + c + 1 a = 376 + 70

    この連立3元2次方程式の解を求める。

    { a b + b c + c a = 188 a b + b c + c a + b + c = 206 a b + a + b c + b + c + 1 + c a + c = 223 b + c = 206 - 188 b + c = 18 206 + a + c = 222 a + c = 16 b = 18 - c a = 16 - c 16 - c 18 - c + 18 - c c + c 16 - c = 188 c 2 - 34 c + 16 · 18 + 18 c - c 2 + 16 c - c 2 = 188 c 2 = 100 c = 10 b = 8 a = 6

    よって問題の直方体の縦、横、高さのはそれぞれ6 cm、 8 cm、10 cm。

コード

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

print('14.')

x, y, z = symbols('x, y, z', positive=True)


def s(a, b, c):
    return 2 * (a * b + b * c + c * a)


class TestRightTriangleSides(TestCase):
    def test(self):
        self.assertEqual(solve([s(x, y, z) - 376,
                                s(x + 1, y, z) - (376 + 36),
                                s(x + 1, y + 1, z) - (376 + 70)]),
                         [{x: 6, y: 8, z: 10}])


if __name__ == "__main__":
    main()

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

% ./sample14.py -v
14.
test (__main__.TestRightTriangleSides) ... ok

----------------------------------------------------------------------
Ran 1 test in 0.325s

OK
%

0 コメント:

コメントを投稿