2020年7月8日水曜日

学習環境

ラング線形代数学(上) (ちくま学現文庫)(S.ラング (著)、芹沢 正三 (翻訳)、筑摩書房)の7章(スカラー積と直交性)、2(正値スカラー積)、練習問題2の解答を求めてみる。



    1. 直交基底。

      ( 1 , 2 , 1 , 0 )
      ( 1 , 2 , 3 , 1 ) - ( 1 , 2 , 3 , 1 ) · ( 1 , 2 , 1 , 0 ) ( 1 , 2 , 1 , 0 ) · ( 1 , 2 , 1 , 0 ) ( 1 , 2 , 1 , 0 )
      = ( 1 , 2 , 3 , 1 ) - 4 3 ( 1 , 2 , 1 , 0 )
      = 1 3 ( - 1 , - 2 , 5 , 3 )

      よって 正基直交基底は、

      ( 1 , 2 , 1 , 0 ) ( 1 , 2 , 1 , 0 ) = 1 6 ( 1 , 2 , 1 , 0 )
      ( - 1 , - 2 , 5 , 3 ) ( - 1 , - 2 , 5 , 3 ) = 1 39 ( - 1 , - 2 , 5 , 3 )

    2. ( 1 , 1 , 0 , 0 )
      ( 1 , - 1 , 1 , 1 ) - ( 1 , - 1 , 1 , 1 ) · ( 1 , 1 , 0 , 0 ) ( 1 , 1 , 0 , 0 ) · ( 1 , 1 , 0 , 0 ) ( 1 , 1 , 0 , 0 ) = ( 1 , - 1 , 1 , 1 )
      ( - 1 , 0 , 2 , 1 ) - ( - 1 , 0 , 2 , 1 ) · ( 1 , - 1 , 1 , 1 ) ( 1 , - 1 , 1 , 1 ) · ( 1 , - 1 , 1 , 1 ) ( 1 , - 1 , 1 , 1 ) - ( - 1 , 0 , 2 , 1 ) · ( 1 , 1 , 0 , 0 ) ( 1 , 1 , 0 , 0 ) · ( 1 , 1 , 0 , 0 ) ( 1 , 1 , 0 , 0 )
      ( - 1 , 0 , 2 , 1 ) - 1 2 ( 1 , - 1 , 1 , 1 ) + 1 2 ( 1 , 1 , 0 , 0 ) = 1 2 ( - 2 , 2 , 3 , 1 )

      よって、

      ( 1 , 1 , 0 , 0 ) ( 1 , 1 , 0 , 0 ) = 1 2 ( 1 , 1 , 0 , 0 )
      ( 1 , - 1 , 1 , 1 ) ( 1 , - 1 , 1 , 1 ) = 1 2 ( 1 , - 1 , 1 , 1 )
      ( - 2 , 2 , 3 , 1 ) ( - 2 , 2 , 3 , 1 ) = 1 3 2 ( - 2 , 2 , 3 , 1 )

コード

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

print('2.')


class Test(TestCase):
    def test_a(self):
        a = Matrix([1, 2, 1, 0]) / sqrt(6)
        b = Matrix([-1, -2, 5, 3]) / sqrt(39)
        for v in [a, b]:
            self.assertEqual(v.norm(), 1)
        self.assertEqual(a.dot(b), 0)

    def test_b(self):
        a = Matrix([1, 1, 0, 0]) / sqrt(2)
        b = Matrix([1, -1, 1, 1]) / 2
        c = Matrix([-2, 2, 3, 1]) / (3 * sqrt(2))
        for v in [a, b, c]:
            self.assertEqual(v.norm(), 1)
        for v in [a, b, c]:
            for w in [a, b, c]:
                if v != w:
                    self.assertEqual(a.dot(b), 0)


if __name__ == "__main__":
    main()

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

% ./sample2.py -v
2.
test_a (__main__.Test) ... ok
test_b (__main__.Test) ... ok

----------------------------------------------------------------------
Ran 2 tests in 0.052s

OK
%

0 コメント:

コメントを投稿