2020年3月21日土曜日

学習環境

代数への出発 (新装版 数学入門シリーズ) (松坂 和夫(著)、岩波書店)の第4章(1次方程式, 2次方程式 )、練習問題16、17の解答を求めてみる。



    1. 解と係数の関係により、

      { 4 = - b 8 = 2 c b = - 4 c = 4

      よって、

      x = - b ± b 2 - c = 4 ± 16 - 4 = 4 ± 2 3

    2. x = - b ± b 2 - 4 c 2 = 4 ± 16 - 16 2 = 2


    1. D = 49 - 8 m x = 7 ± 49 - 8 m 4

      1つの解が5である場合。

      49 - 8 m 0 m 49 8 7 + 49 - 8 m 4 = 5 7 + 49 - 8 m = 20 49 - 8 m = 169 8 m = - 120 m = - 15

    2. 1つの解を a とし 、2つの解を

      a , 2 a

      とすると、 解と係数の関係により、

      a + 2 a = 7 2 a · 2 a = m 2 a = 7 6 m = 4 a 2 = 49 9

    3. 2つの解が虚数解なので、

      49 - 8 m < 0 m > 49 8

      2つの解について、解と係数の関係により、

      α + β = 7 2 α β = m 2

      問題の差の仮定より、

      α - β = 15 2 i

      よって、

      α - β 2 = - 15 4 α + β 2 - 4 α β = - 15 4 49 4 - 2 m = - 15 4 49 - 8 m = - 15 49 - 8 m = - 15 m = 8

コード

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

print('16, 17.')

x = symbols('x')
b = -4
c = 4
f = x ** 2 + b * x + 2 * c
f1 = x ** 2 + 2 * b * x + c
f2 = x ** 2 + b * x + c
m = symbols('m')
g = 2 * x ** 2 - 7 * x + m


class MyTestCase(TestCase):
    def test16(self):
        self.assertEqual(solveset(f, x),
                         {2 + 2 * I, 2 - 2 * I})

    def test16_1(self):
        self.assertEqual(solveset(f1, x),
                         {4 + 2 * sqrt(3), 4 - 2 * sqrt(3)})

    def test17_1(self):
        self.assertIn(5, solveset(g.subs({m: -15}), x))

    def test17_2(self):
        x1, x2 = solveset(g.subs({m: Rational(49, 9)}))
        self.assertTrue(2 * x1 == x2 or x1 == 2 * x2)

    def test17_3(self):
        x1, x2 = solveset(g.subs({m: 8}), x)
        self.assertTrue(x1 - x2 == sqrt(15) * I /
                        2 or x2 - x1 == sqrt(15) * I / 2)


p = plot(f, f1, f2,
         *[g.subs({m: m0}) for m0 in [-15, Rational(49, 9), 8]],
         (x, -10, 10),
         ylim=(-10, 10),
         legend=True,
         show=False)

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

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

p.show()
p.save(f'sample16.png')

if __name__ == "__main__":
    main()

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

% ./sample16.py -v
16, 17.
test16 (__main__.MyTestCase) ... ok
test16_1 (__main__.MyTestCase) ... ok
test17_1 (__main__.MyTestCase) ... ok
test17_2 (__main__.MyTestCase) ... ok
test17_3 (__main__.MyTestCase) ... ok

----------------------------------------------------------------------
Ran 5 tests in 0.148s

OK
%

0 コメント:

コメントを投稿