2020年5月9日土曜日

学習環境

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


  1. y = k - 4 x 3 x 2 + k - 4 x 3 2 = 1 9 x 2 + k 2 - 8 k x + 16 x 2 = 9 25 x 2 - 8 k x + k 2 - 9 = 0

    問題の連立方程式の解がただ1組だけの解をもつためにはこれが重能をもてばよい。

    D 4 = 0 16 k 2 - 25 k 2 - 9 = 0 9 k 2 = 25 · 9 k 2 = 25 k = ± 5

    よって k が-5または5のときただ1組の解をもつ。

    解を求める。

    x = 4 ± 5 25 = ± 4 5 y = ± 5 - 4 · ± 4 5 3 = ± 25 16 15 = ± 9 15 = ± 3 5

    よって、 k が5の場合、

    x = 4 5 , y = 3 5

    k が-5の場合、

    x = - 4 5 , y = - 3 5

コード

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

print('5.')

x, y, k = symbols('x, y, k')
eq1 = 4 * x + 3 * y - k
eq2 = x ** 2 + y ** 2 - 1


class TestSimultanEousequations(TestCase):
    def test_k(self):
        y0 = solve(eq1, y)[0]
        eq = eq2.subs({y: y0})
        self.assertEqual(
            eq.expand(),
            ((25 * x ** 2 - 8 * k * x + k ** 2 - 9) / 9).expand(),
        )
        ks = solve(16 * k ** 2 - 25 * (k ** 2 - 9))
        self.assertEqual(ks, [-5, 5])

    def test_xy(self):
        xys = [solve([eq1.subs({k: k0}),
                      eq2.subs({k: k0})])
               for k0 in [-5, 5]]
        for xy, xy0 in zip(xys, [{x: s * Rational(4, 5), y: s * Rational(3, 5)}
                                 for s in [-1, 1]]):
            self.assertEqual(len(xy), 1)
            self.assertEqual(xy[0], xy0)


p = plot(*[(k0 - 4 * x) / 3 for k0 in [-5, 5]],
         *[s * sqrt(1 - x ** 2) for s in [-1, 1]],
         (x, -5, 5),
         ylim=(-5, 5),
         legend=True,
         show=False)
colors = ['red', 'green', 'blue', 'brown', 'orange', 'pink']

for o, color in zip(p, colors):
    o.line_color = color

p.save('sample5.png')
p.show()

if __name__ == "__main__":
    main()

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

% ./sample5.py -v
5.
test_k (__main__.TestSimultanEousequations) ... ok
test_xy (__main__.TestSimultanEousequations) ... ok

----------------------------------------------------------------------
Ran 2 tests in 0.285s

OK
%

0 コメント:

コメントを投稿