2020年3月28日土曜日

学習環境

解析入門(上) (松坂和夫 数学入門シリーズ 4) (松坂 和夫(著)、岩波書店)の第10章(n次元空間)、10.1(ユークリッド空間)、問題10の解答を求めてみる。



    1. - b × a = - b 2 a 3 - b 3 a 2 , b 3 a 1 - b 1 a 3 , b 1 a 2 - b 2 a 1 = a 2 b 3 - a 3 b 2 , a 3 b 1 - a 1 b 3 , a 1 b 2 - a 2 b 1 = a × b

    2. a × b + b ' = a 2 b 3 + b 3 ' - a 3 b 2 + b 2 ' , a 3 b 1 + b 1 ' - a 1 b 3 + b 3 ' , a 1 b 2 + b 2 ' - a 2 b 1 + b 1 ' = ( a 2 b 3 + a 2 b 3 ' - a 3 b 2 - a 3 b 2 ' , a 3 b 1 + a 3 b 1 ' - a 1 b 3 - a 1 b 3 ' , a 1 b 2 + a 1 b 2 ' - a 2 b 1 - a 2 b 1 ' ) = a 2 b 3 - a 3 b 2 , a 3 b 1 - a 1 b 3 , a 1 b 2 - a 2 b 1 + a 2 b 3 ' - a 3 b 2 , a 3 b 1 ' - a 1 b 3 ' , a 1 b 2 ' - a 2 b 1 ' = a × b - a × b '

    3. α a × b = α a 2 b 3 - α a 3 b 2 , α a 3 b 1 - α a 1 b 3 , α a 1 b 2 - α a 2 b 1 = α a 2 b 3 - a 3 b 2 , a 3 b 1 - a 2 b 3 , a 2 b 2 - a 2 b 1 = α a × b α a × b = a 2 α b 3 - a 3 α b 2 , a 3 α b 1 - a 1 α b 3 , a 1 α b 2 - a 2 α b 1 = a × α b

    4. a × b · c = a 2 b 3 - a 3 b 2 c 1 + a 3 b 1 - a 1 b 3 c 2 + a 1 b 2 - a 2 b 1 c 3 = a 2 b 3 c 1 - a 3 b 2 c 1 + a 3 b 1 c 2 - a 1 b 3 c 2 + a 1 b 2 c 3 - a 2 b 1 c 3 a · b × c = a 1 b 2 c 3 - b 3 c 2 + a 2 b 3 c 1 - b 1 c 3 + a 3 b 1 c 2 - b 2 c 1 = a 2 b 3 c 1 - a 3 b 2 c 1 + a 3 b 1 c 2 - a 1 b 3 c 2 - a 2 b 1 c 3

      よって、

      a × b · c = a · b × c

    5. a × b × c = a 2 b 3 - a 3 b 2 , a 3 b 1 - a 1 b 3 , a 1 b 2 - a 2 b 1 × c = ( a 3 b 1 - a 1 b 3 c 3 - a 1 b 2 - a 2 b 1 c 2 , a 1 b 2 - a 2 b 1 c 1 - a 2 b 3 - a 3 b 2 c 3 , a 2 b 3 - a 3 b 2 c 2 - a 3 b 1 - a 1 b 3 c 1 ) = ( a 3 b 1 c 3 - a 1 b 3 c 3 - a 1 b 2 c 2 + a 2 b 1 c 2 , a 1 b 2 c 1 - a 2 b 1 c 1 - a 2 b 3 c 3 + a 3 b 2 c 3 , a 2 b 3 c 2 - a 3 b 2 c 2 - a 3 b 1 c 1 + a 1 b 3 c 1 ) a · c b - b · c a = ( a 1 b 1 c 1 + a 2 b 1 c 2 + a 3 b 1 c 3 , a 1 b 2 c 1 + a 2 b 2 c 2 + a 3 b 2 c 3 , a 1 b 3 c 1 + a 2 b 3 c 2 + a 3 b 3 c 3 ) - ( a 1 b 1 c 1 + a 1 b 2 c 2 + a 1 b 3 c 3 , a 2 b 1 c 1 + a 2 b 2 c 2 + a 2 b 3 c 3 , a 3 b 1 c 1 + a 3 b 2 c 2 + a 3 b 3 c 3 ) = ( a 2 b 1 c 2 + a 3 b 1 c 3 - a 1 b 2 c 2 - a 2 b 3 c 3 , a 1 b 2 c 1 + a 3 b 2 c 3 - a 2 b 1 c 1 - a 2 b 3 c 3 , a 1 b 3 c 1 + a 2 b 3 c 2 - a 3 b 1 c 1 - a 3 b 2 c 2 )

      よって、

      a × b × c = a · c b - b · c a

コード

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

print('10.')

alpha = symbols('α')
a = Matrix(symbols('a:3')).reshape(1, 3)
b = Matrix(symbols('b:3')).reshape(1, 3)
c = Matrix(symbols('c:3')).reshape(1, 3)


class MyTestCase(TestCase):
    def test_a(self):
        self.assertEqual(a.cross(b).simplify(), (-b.cross(a)).simplify())

    def test_b(self):
        self.assertEqual(a.cross(b + c).simplify(),
                         (a.cross(b) + a.cross(c)).simplify())
        self.assertEqual((a + b).cross(c).simplify(),
                         (a.cross(c) + b.cross(c)).simplify())

    def test_c(self):
        self.assertEqual((alpha * a).cross(b).simplify(),
                         a.cross(alpha * b).simplify(),
                         alpha * a.cross(b))

    def test_d(self):
        self.assertEqual(a.cross(b).dot(c).expand(),
                         a.dot(b.cross(c)).expand())

    def test_e(self):
        self.assertEqual(a.cross(b).cross(c).simplify(),
                         (a.dot(c) * b - b.dot(c) * a).simplify())


if __name__ == "__main__":
    main()

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

% ./sample10.py -v
10.
test_a (__main__.MyTestCase) ... ok
test_b (__main__.MyTestCase) ... ok
test_c (__main__.MyTestCase) ... ok
test_d (__main__.MyTestCase) ... ok
test_e (__main__.MyTestCase) ... ok

----------------------------------------------------------------------
Ran 5 tests in 0.824s

OK
%

0 コメント:

コメントを投稿