2020年4月4日土曜日

学習環境

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


  1. 余弦の3倍角について。

    cos 3 θ + i sin 3 θ = cos θ + i sin θ 3 = cos 3 θ + 3 cos 2 θ i sin θ + 3 cos θ i sin θ 2 + i sin θ 3 = cos 3 θ + 3 i cos 2 θ sin θ - 3 sin 2 θ cos θ - i sin 3 θ = cos 3 θ - 3 sin 2 θ cos θ + i 3 cos 2 θ c i n θ - sin 3 θ cos 3 θ = cos 3 θ - 3 sin 2 θ cos θ

    正弦の4倍角について。

    sin 4 θ = Im cos 4 θ + i sin 4 θ = Im cos θ + i sin θ 4 = 4 cos 3 θ sin θ + 4 i 2 cos θ sin 3 θ = 4 cos 3 θ sin θ - 4 cos θ sin 3 θ

    余弦の5倍角について。

    Re cos 5 θ + i sin 5 θ = Re cos θ + i sin θ 5 = cos 5 θ + 10 cos 3 θ i sin θ 2 + 5 ( cos θ ) i sin θ 4 = cos 5 θ - 10 cos 3 θ sin 2 θ + 5 cos θ sin 4 θ

コード

#!/usr/bin/env python3
from unittest import TestCase, main
from sympy import symbols, I, sin, cos, sqrt
import random

print('10.')

theta = symbols('θ')


class MyTestCase(TestCase):
    def test_cos3(self):
        self.assertEqual(
            cos(3 * theta),
            (cos(theta) ** 3 -
             3 * sin(theta) ** 2 * cos(theta)).simplify())

    def test_sin4(self):
        self.assertEqual(
            sin(4 * theta),
            (4 * cos(theta) ** 3 * sin(theta) -
             4 * cos(theta) * sin(theta) ** 3).simplify())

    def test_cos5(self):
        for theta in range(-10, 11):
            self.assertEqual(
                float(cos(5 * theta)),
                float(cos(theta) ** 5 - 10 * cos(theta) ** 3 * sin(theta) ** 2 +
                      5 * cos(theta) * sin(theta) ** 4))


if __name__ == "__main__":
    main()

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

% ./sample10.py -v
10.
test_cos3 (__main__.MyTestCase) ... ok
test_cos5 (__main__.MyTestCase) ... ok
test_sin4 (__main__.MyTestCase) ... ok

----------------------------------------------------------------------
Ran 3 tests in 0.439s

OK
%

0 コメント:

コメントを投稿