2020年6月9日火曜日

学習環境

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


  1. x 2 + 4 = - 2 x + k x 2 + 2 x + 4 - k = 0 D 4 = 1 - 4 - k = k - 3

    よって、

    k - 3 < 0 k < 3

    のとき、共有点はない。

    k = 3

    のとき、 1個。

    k > 3

    のとき、 2個。


  2. 2 k x - 2 k = x 2 + 3 x 2 - 2 k x + 2 k + 3 = 0 D 4 = k 2 - 2 k + 3 = 0 k 2 - 2 k - 3 = 0 k - 3 k + 1 = 0

    よって、

    k = - 1 , 3

    のとき接する。

コード

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

x, k = symbols('x, k')

print('24, 25.')
y11 = x ** 2 + 4
y12 = -2 * x + k

y21 = 2 * k * x - 2 * k
y22 = x ** 2 + 3


class Test(TestCase):
    def test_24(self):
        self.assertEqual(
            len(solveset(y11 - y12.subs({k: 2}), domain=S.Reals)),
            0,
        )

    def test_24_1(self):
        self.assertEqual(
            len(solveset(y11 - y12.subs({k: 3}), domain=S.Reals)),
            1,
        )

    def test_24_2(self):
        self.assertEqual(
            len(solveset(y11 - y12.subs({k: 4}), domain=S.Reals)),
            2,
        )

    def test_25(self):
        for k0 in [-1, 3]:
            self.assertEqual(
                len(solveset((y21 - y22).subs({k: k0}))),
                1,
            )


colors = ['red', 'green', 'blue', 'brown', 'orange',
          'purple', 'pink', 'gray', 'skyblue', 'yellow']

for i, ys in enumerate([[y11] + [y12.subs({k: k0})
                                 for k0 in [2, 3, 4]],
                        [y22] + [y21.subs({k: k0})
                                 for k0 in [-1, (-1 + 3) / 2, 3]]], 24):
    p = plot(*ys,
             (x, -10, 10),
             ylim=(-10, 10),
             legend=True,
             show=False)
    for o, color in zip(p, colors):
        o.line_color = color
    p.save(f'sample{i}.png')
p.show()
if __name__ == "__main__":
    main()

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

% ./sample24.py -v
24, 25.
test_24 (__main__.Test) ... ok
test_24_1 (__main__.Test) ... ok
test_24_2 (__main__.Test) ... ok
test_25 (__main__.Test) ... ok

----------------------------------------------------------------------
Ran 4 tests in 0.077s

OK
%

0 コメント:

コメントを投稿