2020年4月7日火曜日

学習環境

新装版 数学読本3 (松坂 和夫(著)、岩波書店)の第10章(新しい数とその表示ー複素数と複素平面)、10.1(複素平面)、ド・モアブルの公式と複素数のn乗根の問13の解答を求めてみる。


  1. n が3の倍数のとき。

    n = 3 k

    とおく。

    ω 2 n + ω n + 1 = ω 3 2 k + ω 3 k + 1 = 1 + 1 + 1 = 3

    n が3の 倍数ではないとき。

    ω n 1 ω 2 n + ω n + 1 = ω n 2 + ω n + 1 = ω n - 1 ω n 2 + ω n + 1 ω n - 1 = ω n 3 - 1 ω n - 1 = ω 3 n - 1 ω n - 1 = 1 - 1 ω n - 1 = 0

コード

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

print('13.')

w = symbols('w', imag=False)
ws = [z for z in solve(w ** 3 - 1) if z != 1]
n, k = symbols('n, k', integer=True)
fs = [(w ** (2 * n) + w ** n + 1).subs({w: w0}) for w0 in ws]


class MyTestCubic(TestCase):
    def test_0(self):
        for f in fs:
            self.assertEqual(f.subs({n: 3 * k}).simplify(), 3)

    def test_1(self):
        for f in fs:
            a, b = f.subs({n: 3 * k + 1}).as_real_imag()
            self.assertEqual(a.simplify(), 0)
            self.assertEqual(b.simplify(), 0)

    def test_2(self):
        for f in fs:
            a, b = f.subs({n: 3 * k + 2}).as_real_imag()
            self.assertEqual(a.simplify(), 0)
            self.assertEqual(b.simplify(), 0)


if __name__ == "__main__":
    main()

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

% ./sample13.py -v
13.
test_0 (__main__.MyTestCubic) ... ok
test_1 (__main__.MyTestCubic) ... ok
test_2 (__main__.MyTestCubic) ... ok

----------------------------------------------------------------------
Ran 3 tests in 0.720s

OK
%

0 コメント:

コメントを投稿