2020年4月12日日曜日

学習環境

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



    1. x2+x+12=132x2+2x-12=0x2+x-6=0x+3x-2=0x=-3,2

      よって解は、

      {x=-3y=-2{x=2y=3

    2. y=-x-5x-x-5=6x2+5x+6=0x+2x+3=0{x=-2y=-3{x=-3y=-2

    3. y=5-xx2+x5-x+5-x2=21x2-5x+4=0x-1x-4=0{x=1y=4{x=4y=1

    4. y=x-8xx-8=-15x2-8x+15=0x-3x-5=0{x=3y=-5{x=5y=-3

    5. 2x-12-x2=53x2-4x-4=0x-23x+2=0{x=-23y=-73{x=2y=3

    6. y=5-3x44x2+x·5-3x4-3·5-3x42=064x2+20x-12x2-325-30x+9x2=025x2+110x-75=05x2+22x-15=0x+55x-3=0{x=-5y=5{x=35y=45

    7. x-2yx-3y=0x=2y4y2+2y2+2y2=56y2=7y=±7x=3y9y2+3y2+2y2=56y2=4y=±2{x=-27y=-7{x=27y=7{x=-6y=-2{x=6y=2

    8. x-2yx-18y=0x=2y4y2-4y2+6y2=6y=±1x=18y182y2-2·18·y2+6y2=63·18y2-2·3y2+y2=1y2=149y=±17{x=-2y=-1{x=2y=1{x=-187y=-17{x=187y=17

    9. 9xy+27y2=129xy+27y2=x2+3xyx2-6xy-27y2=0x-9yx+3y=0x=9y81y2+27y2=12y2=12108=19y=±13x=-3y9y2-9y212{x=-3y=-13{x=3y=13

    10. {60xy+48x-72y-60=060xy+45x-70y-55=03x-2y-5=0x=2y+538y2+20y+6y+15-14y-11=08y2+12y+4=02y2+3y+1=0y+12y+1=0{x=1y=-1{x=43y=-12

    11. 2xy-x-y=xy-1xy-x-y+1=0x-1y-x-1=0x-1y-1=0x=11+y2=5y-1y2-5y+6=0y-2y-3=0y=2,3y=1x=2,3{x=1y=2{x=1y=3{x=2y=1{x=3y=1

コード

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

print('9.')

x, y = symbols('x, y')


class TestEquations(TestCase):
    def test1(self):
        self.assertEqual(solve([x ** 2 + y ** 2 - 13, y - x - 1]),
                         [{x: -3, y: -2}, {x: 2, y: 3}])

    def test2(self):
        self.assertEqual(solve([x + y + 5, x * y - 6]),
                         [{x: -3, y: -2}, {x: -2, y: -3}])

    def test3(self):
        self.assertEqual(solve([x + y - 5,
                                x ** 2 + x * y + y ** 2 - 21]),
                         [{x: 1, y: 4}, {x: 4, y: 1}])

    def test4(self):
        self.assertEqual(solve([x - y - 8, x * y + 15]),
                         [{x: 3, y: -5}, {x: 5, y: -3}])

    def test5(self):
        self.assertEqual(solve([y - 2 * x + 1, y ** 2 - x ** 2 - 5]),
                         [{x: -Rational(2, 3), y: -Rational(7, 3)},
                          {x: 2, y: 3}])

    def test6(self):
        self.assertEqual(solve([3 * x + 4 * y - 5,
                                4 * x ** 2 + x * y - 3 * y ** 2]),
                         [{x: -5, y: 5},
                          {x: Rational(3, 5), y: Rational(4, 5)}])

    def test7(self):
        self.assertEqual(
            sorted(solve([x ** 2 + x * y + 2 * y ** 2 - 56,
                          x ** 2 - 5 * x * y + 6 * y ** 2]),
                   key=lambda d: d[x]),
            sorted([{x: -2 * sqrt(7), y: -sqrt(7)},
                    {x: 2 * sqrt(7), y: sqrt(7)},
                    {x: -6, y: -2},
                    {x: 6, y: 2}],
                   key=lambda d: d[x]))

    def test8(self):
        self.assertEqual(
            sorted(solve([x ** 2 - 20 * x * y + 36 * y ** 2,
                          x ** 2 - 2 * x * y + 6 * y ** 2 - 6]),
                   key=lambda d: d[x]),
            sorted([{x: -2, y: -1},
                    {x: 2, y: 1},
                    {x: -Rational(18, 7), y: -Rational(1, 7)},
                    {x: Rational(18, 7), y: Rational(1, 7)}],
                   key=lambda d: d[x]))

    def test9(self):
        self.assertEqual(
            sorted(solve([x ** 2 + 3 * x * y - 12,
                          x * y + 3 * y ** 2 - Rational(4, 3)]),
                   key=lambda d: d[x]),
            sorted([{x: -3, y: -Rational(1, 3)},
                    {x: 3, y: Rational(1, 3)}],
                   key=lambda d: d[x])
        )

    def test10(self):
        self.assertEqual(
            sorted(solve([5 * x * y + 4 * x - 6 * y - 5,
                          12 * x * y + 9 * x - 14 * y - 11]),
                   key=lambda d: d[x]),
            sorted([{x: 1, y: -1},
                    {x: Rational(4, 3), y: -Rational(1, 2)}],
                   key=lambda d: d[x])
        )

    def test11(self):
        self.assertEqual(
            sorted(solve([x ** 2 + y ** 2 - 10 * x * y + 5 * (x + y),
                          x ** 2 + y ** 2 - 5 * (x * y - 1)]),
                   key=lambda d: d[x]),
            sorted([{x: 1, y: 2},
                    {x: 1, y: 3},
                    {x: 2, y: 1},
                    {x: 3, y: 1}],
                   key=lambda d: d[x])
        )


if __name__ == "__main__":
    main()

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

% ./sample9.py -v
9.
test1 (__main__.TestEquations) ... ok
test10 (__main__.TestEquations) ... ok
test11 (__main__.TestEquations) ... ok
test2 (__main__.TestEquations) ... ok
test3 (__main__.TestEquations) ... ok
test4 (__main__.TestEquations) ... ok
test5 (__main__.TestEquations) ... ok
test6 (__main__.TestEquations) ... ok
test7 (__main__.TestEquations) ... ok
test8 (__main__.TestEquations) ... ok
test9 (__main__.TestEquations) ... ok

----------------------------------------------------------------------
Ran 11 tests in 0.519s

OK
%

0 コメント:

コメントを投稿