2020年7月13日月曜日

学習環境

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


  1. SP 1 の可換律について。

    A , B
    = t r ( A B )
    = t r ( k = 1 n a i k b k j )
    = i = 1 n ( k = 1 n a i k b k i )
    = i = 1 n ( k = 1 n b i k a k i )
    = t r ( k = 1 n b i k a k j )
    = t r ( B A )
    = B , A

    SP 2の分配律について。

    A , B + C
    = t r ( A ( B + C ) )
    = t r ( A B + A C )
    = t r ( k = 1 n ( a i k b k j + a i k c k j ) )
    = i = 1 n ( k = 1 n ( a i k b k i + a i k c k i ) )
    = i = 1 n ( k = 1 n a i k b k i + k = 1 n a i k c k i )
    = i = 1 n k = 1 n a i k b k i + i = 1 n k = 1 n a i k c k i
    = t r ( A B ) + t r ( A C )
    = A , B + A , C

    SP 3の スカラ倍について。

    x A , B
    = t r ( x A B )
    = x t r ( A B )
    = x A , B
    A , x B
    = t r ( A ( x B ) )
    = x t r ( A B )
    = x A , B

    よって、トレースはスカラー積である。

    また、 任意の n 次の正方行列 A が任意の n 次の正方形行列 B に対してそのスカラー積が零 ならば、

    t r ( A B ) = 0
    i = 1 n k = 1 n ( a i k b k i ) = 0

    なので、

    A = O

    よって、 トレースによるスカラー積の定義は退化していない。

    (証明終)

コード

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

print('7.')

a = Matrix(symbols('a:16', real=True)).reshape(4, 4)
b = Matrix(symbols('b:16', real=True)).reshape(4, 4)
c = Matrix(symbols('c:16', real=True)).reshape(4, 4)
x = symbols('x', real=True)


def scalar_mul(a, b):
    return (a * b).trace()


class TestTrace(TestCase):
    def test1(self):
        self.assertEqual(scalar_mul(a, b), scalar_mul(b, a))

    def test2(self):
        self.assertEqual(scalar_mul(a, b + c).expand(),
                         scalar_mul(a, b) + scalar_mul(a, c))

    def test3(self):
        for ai, bi in [(x * a, b), (a, x * b)]:
            self.assertEqual(scalar_mul(ai, bi).expand(),
                             (x * scalar_mul(a, b)).expand())


if __name__ == "__main__":
    main()

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

% ./sample7.py -v
7.
test1 (__main__.TestTrace) ... ok
test2 (__main__.TestTrace) ... ok
test3 (__main__.TestTrace) ... ok

----------------------------------------------------------------------
Ran 3 tests in 0.090s

OK
%

0 コメント:

コメントを投稿