2020年3月20日金曜日

学習環境

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


  1. 2次方程式の解と係数の関係により、

    α + β = - b a α β = c a b = - a α + β c = a α β

    よって判別式は、

    D = b 2 - 4 a c = a 2 α + β 2 - 4 a 2 α β = a 2 α + β 2 - 4 α β = a 2 α 2 - 2 α β + β 2 = a 2 α - β 2

    (証明終)



    1. α + β = - b a α β = c a 2 α + β α + 2 β = 2 α 2 + 5 α β + 2 β 2 = 2 α + β 2 + α β = 2 b 2 a 2 + c a

    2. α 3 + β 3 = α + β α 2 - α β + β 2 = α + β α + β 2 - 3 α β = - b a b 2 a 2 - 3 c a

    3. 1 α 2 + 1 β 2 = α 2 + β 2 α 2 β 2 = α + β 2 - 2 α β α β 2 = b 2 a 2 - 2 c a c 2 a 2 = b 2 - 2 a c c 2

    4. α 4 + β 4 = α 2 + β 2 2 - 2 α β 2 = α + β 2 - 2 α β - 2 α β 2 = b 2 a 2 - 2 c a 2 - 2 c 2 a 2

コード

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

print('14.')


def discriminant(a, b, c):
    return b ** 2 - 4 * a * c


x = symbols('x')
a, b, c = symbols('a:c')
eq = a * x ** 2 + b * x + c
alpha, beta = solve(eq, x)
d = discriminant(a, b, c)


class MyTestCase(TestCase):
    def test14(self):
        self.assertEqual(
            d.simplify(), (a ** 2 * (alpha - beta) ** 2).simplify())

    def test15_1(self):
        self.assertEqual(((2 * alpha + beta) * (alpha + 2 * beta)).simplify(),
                         (2 * b ** 2 / a ** 2 + c / a).simplify())

    def test15_2(self):
        self.assertEqual((alpha ** 3 + beta ** 3).simplify(),
                         (-b / a * (b ** 2 / a ** 2 - 3 * c / a)).simplify())

    def test15_3(self):
        self.assertEqual((1 / alpha ** 2 + 1 / beta ** 2).simplify(),
                         ((b ** 2 - 2 * a * c) / c ** 2).simplify())

    def test15_4(self):
        self.assertEqual((alpha ** 4 + beta ** 4).expand(),
                         ((b ** 2 / a ** 2 - 2 * c / a) ** 2 - 2 * c ** 2 / a ** 2).expand())


if __name__ == "__main__":
    main()

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

% ./sample14.py -v
14.
test14 (__main__.MyTestCase) ... ok
test15_1 (__main__.MyTestCase) ... ok
test15_2 (__main__.MyTestCase) ... ok
test15_3 (__main__.MyTestCase) ... ok
test15_4 (__main__.MyTestCase) ... ok

----------------------------------------------------------------------
Ran 5 tests in 0.368s

OK
%

0 コメント:

コメントを投稿