2020年3月20日金曜日

学習環境

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


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

    α+β=-baαβ=cab=-aα+βc=aαβ

    よって判別式は、

    D=b2-4ac=a2α+β2-4a2αβ=a2α+β2-4αβ=a2α2-2αβ+β2=a2α-β2

    (証明終)



    1. α+β=-baαβ=ca2α+βα+2β=2α2+5αβ+2β2=2α+β2+αβ=2b2a2+ca

    2. α3+β3=α+βα2-αβ+β2=α+βα+β2-3αβ=-bab2a2-3ca

    3. 1α2+1β2=α2+β2α2β2=α+β2-2αβαβ2=b2a2-2cac2a2=b2-2acc2

    4. α4+β4=α2+β22-2αβ2=α+β2-2αβ-2αβ2=b2a2-2ca2-2c2a2

コード

#!/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 コメント:

コメントを投稿