2020年6月20日土曜日

学習環境

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



    1. det A = det [ 2 1 2 0 3 - 1 4 1 1 ] = 2 ( 3 + 1 ) + 4 ( - 1 - 6 ) = 8 - 28 = - 20
      det A 11 = 3 + 1 = 4
      det A 12 = 4
      det A 13 = - 12
      det A 21 = 1 - 2 = - 1
      det A 22 = 2 - 8 = - 6
      det A 23 = 2 - 4 = - 2
      det A 31 = - 1 - 6 = - 7
      det A 32 = - 2
      det A 33 = 6
      A - 1 = - 1 20 [ 4 1 - 7 - 4 - 6 2 - 12 2 6 ]

    2. det [ 3 - 1 5 - 1 2 1 - 2 4 3 ] = 3 ( 6 - 4 ) + ( - 3 + 2 ) + 5 ( - 4 + 4 ) = 6 - 1 = 5
      det A 11 = 6 - 4 = 2
      det A 12 = - 3 + 2 = - 1
      det A 13 = - 4 + 4 = 0
      det A 21 = - 3 - 20 = - 23
      det A 22 = 9 + 10 = 19
      det A 23 = 12 - 2 = 10
      det A 31 = - 1 - 10 = - 11
      det A 32 = 3 + 5 = 8
      det A 33 = 6 - 1 = 5
      A - 1 = 1 5 [ 2 23 - 11 1 19 - 8 0 - 10 5 ]

    3. det [ 2 4 3 - 1 3 0 0 2 1 ] = 6 + ( 4 - 6 ) = 4
      det A 11 = 3 det A 12 = - 1 det A 13 = - 2 det A 21 = 4 - 6 = - 2 det A 22 = 2 det A 23 = 4 det A 31 = - 9 det A 32 = 3 det A 33 = 6 + 4 = 10
      A - 1 = 1 4 [ 3 2 - 9 1 2 - 3 - 2 - 4 10 ]

    4. det A = 7 - 2 = 5 det A 11 = 5 , det A 12 = 0 , det A 13 = 0 det A 21 = 16 , det A 22 = 7 , det A 23 = 2 det A 31 = 3 , det A 32 = 1 , det A 33 = 1 A - 1 = 1 5 [ 5 - 16 3 0 7 - 1 0 - 2 1 ]

    5. det A = - 4 ( 40 - 21 ) = - 4 · 19 = - 76 det A 11 = 0 , det A 12 = 32 , det A 13 = 28 det A 21 = 19 , det A 22 = - 14 , det A 23 = - 17 det A 31 = 0 , det A 32 = - 12 , det A 33 = - 20 A - 1 = - 1 76 [ 0 - 19 0 - 32 - 14 12 28 17 - 20 ]

コード

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

print('1.')


class TestInverse(TestCase):
    def test(self):
        As = [Matrix(t) for t in [
            [[2, 1, 2],
             [0, 3, -1],
             [4, 1, 1]],
            [[3, -1, 5],
             [-1, 2, 1],
             [-2, 4, 3]],
            [[2, 4, 3],
             [-1, 3, 0],
             [0, 2, 1]],
            [[1, 2, -1],
             [0, 1, 1],
             [0, 2, 7]],
            [[-1, 5, 3],
             [4, 0, 0],
             [2, 7, 8]]
        ]]
        Bs = [c * Matrix(t) for c, t in [
            (-Rational(1, 20),
             [[4, 1, -7],
              [-4, -6, 2],
              [-12, 2, 6]]),
            (Rational(1, 5),
             [[2, 23, -11],
              [1, 19, -8],
              [0, -10, 5]]),
            (Rational(1, 4),
             [[3, 2, -9],
              [1, 2, -3],
              [-2, -4, 10]]),
            (Rational(1, 5),
             [[5, -16, 3],
                [0, 7, -1],
                [0, -2, 1]]),
            (-Rational(1, 76),
             [[0, -19, 0],
              [-32, -14, 12],
              [28, 17, -20]])
        ]]
        for i, (A, B) in enumerate(zip(As, Bs)):
            print(f'({chr(ord("a") + i)})')
            self.assertEqual(A.inv(), B)


if __name__ == "__main__":
    main()

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

% ./sample1.py -v
1.
test (__main__.TestInverse) ... (a)
(b)
(c)
(d)
(e)
ok

----------------------------------------------------------------------
Ran 1 test in 0.008s

OK
%

0 コメント:

コメントを投稿