2020年7月13日月曜日

学習環境

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


  1. A=(a1,a2,a3)B=(b1,b2,b3)C=(c1,c2,c3)

    とおく。

    CP 1について。

    A×B
    =(a2b3-a3b2,a3b1-a1b3,a1b2-a2b1)
    =-(b2a3-b3a2,b3a1-b1a3,b1a2-b2a2)
    =-(B×A)

    CP 2 について。

    A×(B+C)
    =(a2(b3+c3)-a3(b2+c2),a3(b1+c1)-a1(b3+c3),a1(b2+c2)-a2(b1+c1))
    =(a2b3-a3b2,a3b1-a1b3,a1b2-a2b1)+(a2c3-a3c2,a3c1-a1c31a1c2-a2c1)
    =(A×B)+(A×C)
    (B+C)×A
    =((b2+c2)a3-(b3+c3)a2,(b3+c3)a1-(b1+c2)a3,(b1+c1)a2-(b2+c2)a1)
    =(b2a3-b3a2,b3a1-b1a3,b1a2-b2a1)+(c2a3-c3a2,c3a1-a3c1,c1a2-c2a1)
    =(B×A)+(C×A)

    CP 3について。

    任意の a に対して

    (aA)×B
    =(aa2b3-aa3b2,aa3b1-aa1b3,aa1b2-aa2b1)
    =a(a2b3-a3b2,a3b1-a1b3,a1b2-a2b1)
    =a(A×B)
    a(A×B)
    =(a2ab3-a3ab2,a3ab1-a1ab3,a1ab2-a2ab1)
    =A×(aB)

    CP 4について。

    (A×B)×C
    =(a2b3-a3b2,a3b1-a1b3,a1b2-a2b1)×(c1,c2,c3)
    =(a3b1c3-a1b3c3-a1b2c2+a2b1c2,a1b2c1-a2b1c1-a2b3c3+a3b2c3,a2b3c2-a3b2c2-a3b1c1+a1b3c1)
    (A·C)B-(B·C)A
    =(a1c1+a2c2+a3c3)(b1,b2,b3)-(b1c1+b2c2+b3c3)(a1,a2,a3)
    =(a2b1c2+a3b1c3-a1b2c2-a1b3c3,a1b2c1+a3b2c3-a2b1c1-a2b3c3,a1b3c1+a2b3c2-a3b1c1-a3b2c2)

    よって、

    (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 コメント:

コメントを投稿