2020年6月3日水曜日

学習環境

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


  1. A+B2=A+B·A+B

    性質 S P 2 より

    =A+B·A+A+B·B=A·A+B·A+A·B+B·B=A2+B·A+A·B+B2

    性質 SP 1より

    =A2+A·B+A·B+B2=A2+2A·B+B2

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

    A-B2=A+-B2=A2+2A·-B+-B2

    性質 SP 3より

    =A2-2A·B+-B·-B=A2-2A·B+-12B·B=A2-2A·B+B2

    よって、

    A+B2=A2+2A·B+B2A-B2=A2-2A·B+B2

    (証明終)

コード

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

コメントを投稿