2020年3月28日土曜日

学習環境

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



    1. -b×a=-b2a3-b3a2,b3a1-b1a3,b1a2-b2a1=a2b3-a3b2,a3b1-a1b3,a1b2-a2b1=a×b

    2. a×b+b'=a2b3+b3'-a3b2+b2',a3b1+b1'-a1b3+b3',a1b2+b2'-a2b1+b1'=(a2b3+a2b3'-a3b2-a3b2',a3b1+a3b1'-a1b3-a1b3',a1b2+a1b2'-a2b1-a2b1')=a2b3-a3b2,a3b1-a1b3,a1b2-a2b1+a2b3'-a3b2,a3b1'-a1b3',a1b2'-a2b1'=a×b-a×b'

    3. αa×b=αa2b3-αa3b2,αa3b1-αa1b3,αa1b2-αa2b1=αa2b3-a3b2,a3b1-a2b3,a2b2-a2b1=αa×bαa×b=a2αb3-a3αb2,a3αb1-a1αb3,a1αb2-a2αb1=a×αb

    4. a×b·c=a2b3-a3b2c1+a3b1-a1b3c2+a1b2-a2b1c3=a2b3c1-a3b2c1+a3b1c2-a1b3c2+a1b2c3-a2b1c3a·b×c=a1b2c3-b3c2+a2b3c1-b1c3+a3b1c2-b2c1=a2b3c1-a3b2c1+a3b1c2-a1b3c2-a2b1c3

      よって、

      a×b·c=a·b×c

    5. a×b×c=a2b3-a3b2,a3b1-a1b3,a1b2-a2b1×c=(a3b1-a1b3c3-a1b2-a2b1c2,a1b2-a2b1c1-a2b3-a3b2c3,a2b3-a3b2c2-a3b1-a1b3c1)=(a3b1c3-a1b3c3-a1b2c2+a2b1c2,a1b2c1-a2b1c1-a2b3c3+a3b2c3,a2b3c2-a3b2c2-a3b1c1+a1b3c1)a·cb-b·ca=(a1b1c1+a2b1c2+a3b1c3,a1b2c1+a2b2c2+a3b2c3,a1b3c1+a2b3c2+a3b3c3)-(a1b1c1+a1b2c2+a1b3c3,a2b1c1+a2b2c2+a2b3c3,a3b1c1+a3b2c2+a3b3c3)=(a2b1c2+a3b1c3-a1b2c2-a2b3c3,a1b2c1+a3b2c3-a2b1c1-a2b3c3,a1b3c1+a2b3c2-a3b1c1-a3b2c2)

      よって、

      a×b×c=a·cb-b·ca

コード

#!/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 コメント:

コメントを投稿