2020年7月13日月曜日

学習環境

続 解析入門 (原書第2版) (S.ラング(著)、松坂 和夫(翻訳)、片山 孝次(翻訳)、岩波書店)の第1章(ベクトル)、7(ベクトル積)の練習問題8の解答を求めてみる。


  1. A = ( a 1 , a 2 , a 3 ) B = ( b 1 , b 2 , b 3 ) C = ( c 1 , c 2 , c 3 )

    とおく。

    CP 1について。

    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 )
    = - ( b 2 a 3 - b 3 a 2 , b 3 a 1 - b 1 a 3 , b 1 a 2 - b 2 a 2 )
    = - ( B × A )

    CP 2 について。

    A × ( B + C )
    = ( a 2 ( b 3 + c 3 ) - a 3 ( b 2 + c 2 ) , a 3 ( b 1 + c 1 ) - a 1 ( b 3 + c 3 ) , a 1 ( b 2 + c 2 ) - a 2 ( b 1 + c 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 c 3 - a 3 c 2 , a 3 c 1 - a 1 c 31 a 1 c 2 - a 2 c 1 )
    = ( A × B ) + ( A × C )
    ( B + C ) × A
    = ( ( b 2 + c 2 ) a 3 - ( b 3 + c 3 ) a 2 , ( b 3 + c 3 ) a 1 - ( b 1 + c 2 ) a 3 , ( b 1 + c 1 ) a 2 - ( b 2 + c 2 ) a 1 )
    = ( b 2 a 3 - b 3 a 2 , b 3 a 1 - b 1 a 3 , b 1 a 2 - b 2 a 1 ) + ( c 2 a 3 - c 3 a 2 , c 3 a 1 - a 3 c 1 , c 1 a 2 - c 2 a 1 )
    = ( B × A ) + ( C × A )

    CP 3について。

    任意の a に対して

    ( a A ) × B
    = ( a a 2 b 3 - a a 3 b 2 , a a 3 b 1 - a a 1 b 3 , a a 1 b 2 - a a 2 b 1 )
    = a ( 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 ( A × B )
    a ( A × B )
    = ( a 2 a b 3 - a 3 a b 2 , a 3 a b 1 - a 1 a b 3 , a 1 a b 2 - a 2 a b 1 )
    = A × ( a B )

    CP 4について。

    ( 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 1 , c 2 , c 3 )
    = ( 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 c 1 + a 2 c 2 + a 3 c 3 ) ( b 1 , b 2 , b 3 ) - ( b 1 c 1 + b 2 c 2 + b 3 c 3 ) ( a 1 , a 2 , a 3 )
    = ( a 2 b 1 c 2 + a 3 b 1 c 3 - a 1 b 2 c 2 - a 1 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 Matrix, symbols
from sympy.abc import f

print('8.')

a = Matrix(symbols('a:3'))
b = Matrix(symbols('b:3'))
c = Matrix(symbols('c:3'))


def eq(x, y):
    return all([x0.expand() == y0.expand() for x0, y0 in zip(x, y)])


class TestCrossProduct(TestCase):
    def test1(self):
        self.assertEqual(a.cross(b), -b.cross(a))

    def test2(self):
        self.assertTrue(eq(a.cross(b + c), a.cross(b) + a.cross(c)))
        self.assertTrue(eq((b + c).cross(a), b.cross(a) + c.cross(a)))

    def test3(self):
        self.assertTrue(eq((f * a).cross(b), f * a.cross(b)))
        self.assertTrue(f * a.cross(b), a.cross(f * b))

    def test4(self):
        self.assertTrue(eq(a.cross(b).cross(c), a.dot(c) * b - b.dot(c) * a))


if __name__ == "__main__":
    main()

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

% ./sample8.py -v
8.
test1 (__main__.TestCrossProduct) ... ok
test2 (__main__.TestCrossProduct) ... ok
test3 (__main__.TestCrossProduct) ... ok
test4 (__main__.TestCrossProduct) ... ok

----------------------------------------------------------------------
Ran 4 tests in 0.042s

OK
%

0 コメント:

コメントを投稿