2020年4月7日火曜日

学習環境

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


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

    n=3k

    とおく。

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

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

    ωn1ω2n+ωn+1=ωn2+ωn+1=ωn-1ωn2+ωn+1ωn-1=ωn3-1ωn-1=ω3n-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 コメント:

コメントを投稿