2020年6月20日土曜日

学習環境

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



    1. detA=det[21203-1411]=2(3+1)+4(-1-6)=8-28=-20
      detA11=3+1=4
      detA12=4
      detA13=-12
      detA21=1-2=-1
      detA22=2-8=-6
      detA23=2-4=-2
      detA31=-1-6=-7
      detA32=-2
      detA33=6
      A-1=-120[41-7-4-62-1226]

    2. det[3-15-121-243]=3(6-4)+(-3+2)+5(-4+4)=6-1=5
      detA11=6-4=2
      detA12=-3+2=-1
      detA13=-4+4=0
      detA21=-3-20=-23
      detA22=9+10=19
      detA23=12-2=10
      detA31=-1-10=-11
      detA32=3+5=8
      detA33=6-1=5
      A-1=15[223-11119-80-105]

    3. det[243-130021]=6+(4-6)=4
      detA11=3detA12=-1detA13=-2detA21=4-6=-2detA22=2detA23=4detA31=-9detA32=3detA33=6+4=10
      A-1=14[32-912-3-2-410]

    4. detA=7-2=5detA11=5,detA12=0,detA13=0detA21=16,detA22=7,detA23=2detA31=3,detA32=1,detA33=1A-1=15[5-16307-10-21]

    5. detA=-4(40-21)=-4·19=-76detA11=0,detA12=32,detA13=28detA21=19,detA22=-14,detA23=-17detA31=0,detA32=-12,detA33=-20A-1=-176[0-190-32-14122817-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 コメント:

コメントを投稿