2020年2月18日火曜日

学習環境

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


  1. A B = I n k = 1 n a i k b k j = I n a i i b i j = I n i = j a i i b i j = 1 a i i b i i = 1 b i i = 1 a i i i j a i i b i j = 0 b i j = 0

    よって、 対角行列 A の逆行列は、

    B = [ 1 a 1 0 0 0 1 a 2 0 0 0 1 a n ]

コード

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


print('15.')


def f(i, j):
    if i == j:
        return symbols(f'a{i+1}{j + 1}', nonzero=True)
    return 0


def g(i, j):
    if i == j:
        return 1 / f(i, j)
    return 0


class MyTestCase(TestCase):
    def test(self):
        for n in range(1, 3):
            A = Matrix([[f(i, j) for j in range(n)]
                        for i in range(n)])
            B = Matrix([[g(i, j) for j in range(n)]
                        for i in range(n)])
            self.assertEqual(A ** -1, B)


if __name__ == '__main__':
    main()

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

% ./sample15.py -v
15.
test (__main__.MyTestCase) ... ok

----------------------------------------------------------------------
Ran 1 test in 0.001s

OK
%

0 コメント:

コメントを投稿