2020年6月29日月曜日

学習環境

ラング線形代数学(上) (ちくま学現文庫)(S.ラング (著)、芹沢 正三 (翻訳)、筑摩書房)の6章(行列式)、10(線形写像の行列式)、練習問題5の解答を求めてみる。


  1. det ( c I - A )
    = det [ c - a 11 - a 12 - a 21 c - a 22 ] = ( c - a 11 ) ( c - a 22 ) - a 12 a 21 = c 2 - c ( a 11 + a 22 ) + a 11 a 22 - a 12 a 21
    A 2 = O
    { a 11 2 + a 12 a 21 = 0 a 11 a 12 + a 12 a 22 = 0 a 11 a 21 + a 21 a 22 = 0 a 12 a 21 + a 22 2 = 0
    a 11 2 - a 22 2 = 0 ( a 11 + a 22 ) ( a 11 - a 22 ) = 0
    a 11 + a 22 = 0

    のとき、

    a 22 = - a 11
    a 12 a 21 = - a 11 2
    a 11 a 22 = - a 11 2

    よって

    det ( c I - A ) = c 2
    a 11 - a 22 = 0

    のとき、

    a 11 = a 22
    a 11 a 12 = 0 a 11 a 21 = 0
    a 11 = 0

    のとき

    a 11 + a 22 = 0 a 11 a 22 = 0 a 12 a 21 = 0

    よって

    det ( c I - A ) = c 2
    a 12 = a 21 = 0

    のとき、

    a 11 2 = 0 a 11 = 0

    よって

    det ( c I - A ) = c 2

    (証明終)

コード

#!/usr/bin/env python3
from unittest import TestCase, main
import random
from sympy import Matrix
from sympy.abc import c

print('5.')


class Test(TestCase):
    def test(self):
        I = Matrix([[1, 0], [0, 1]])
        for i in range(50000):
            A = Matrix([random.randrange(-10, 11)
                        for _ in range(4)]).reshape(2, 2)
            if A ** 2 == Matrix([[0, 0], [0, 0]]):
                print(i)
                self.assertEqual((c * I - A).det(), c ** 2)


if __name__ == "__main__":
    main()

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

% ./sample5.py -v
5.
test (__main__.Test) ... 4248
5650
5992
12687
12689
17092
17482
18202
18573
20901
23245
24426
25631
26858
27137
29150
37909
39746
39975
42749
46018
48315
49074
49668
ok

----------------------------------------------------------------------
Ran 1 test in 14.086s

OK
%

0 コメント:

コメントを投稿