2020年6月3日水曜日

学習環境

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


  1. A + B 2 = A + B · A + B

    性質 S P 2 より

    = A + B · A + A + B · B = A · A + B · A + A · B + B · B = A 2 + B · A + A · B + B 2

    性質 SP 1より

    = A 2 + A · B + A · B + B 2 = A 2 + 2 A · B + B 2

    また、 B を一 B に置き換えると、

    A - B 2 = A + - B 2 = A 2 + 2 A · - B + - B 2

    性質 SP 3より

    = A 2 - 2 A · B + - B · - B = A 2 - 2 A · B + - 1 2 B · B = A 2 - 2 A · B + B 2

    よって、

    A + B 2 = A 2 + 2 A · B + B 2 A - B 2 = A 2 - 2 A · B + B 2

    (証明終)

コード

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

print('3.')

As = [Matrix(t) for t in [(2, -1), (-1, 3), (2, -1, 5),
                          (-1, -2, 3), (pi, 3, -1), (15, -2, 4)]]
Bs = [Matrix(t) for t in [(-1, 1), (0, 4), (-1, 1, 1),
                          (-1, 3, -4), (2 * pi, -3, 7), (pi, 3, -1)]]


class TestScalarProduct(TestCase):
    def test(self):
        for A, B in zip(As, Bs):
            self.assertEqual((A + B).dot(A + B).expand(),
                             A.dot(A) + 2 * A.dot(B) + B.dot(B))
            self.assertEqual((A - B).dot(A - B).expand(),
                             A.dot(A) - 2 * A.dot(B) + B.dot(B))


if __name__ == "__main__":
    main()

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

% ./sample3.py -v
3.
test (__main__.TestScalarProduct) ... ok

----------------------------------------------------------------------
Ran 1 test in 0.045s

OK
%

0 コメント:

コメントを投稿