2017年12月11日月曜日

学習環境

ラング線形代数学(上)(S.ラング (著)、芹沢 正三 (翻訳)、ちくま学芸文庫)の3章(行列)、3(行列の乗法)、練習問題3.を取り組んでみる。


    1. A B C = ( - 1 2 - 2 3 ) ( 1 4 2 3 ) = ( 3 2 4 1 ) A B C = ( 2 1 3 1 ) ( 1 - 1 1 4 ) = ( 3 2 4 1 )

    2. A B C = ( 1 3 11 1 ) ( 1 3 ) = ( 10 14 ) A B C = ( 2 1 - 1 3 1 2 ) ( 4 2 0 ) = ( 10 14 )

    3. A B C = ( 13 7 1 0 2 - 5 ) ( 1 2 3 1 - 1 4 ) = ( 33 37 11 - 18 ) A B C = ( 2 4 1 3 0 - 1 ) ( 4 3 6 1 1 27 ) = ( 33 37 11 - 18 )

コード(Emacs)

Python 3

#!/usr/bin/env python3
from sympy import pprint, symbols, Matrix

ABCs = [
    (
        [[2, 1],
         [3, 1]],
        [[-1, 1],
         [1, 0]],
        [[1, 4],
         [2, 3]]
    ),
    (
        [[2, 1, -1],
         [3, 1, 2]],
        [[1, 1],
         [2, 0],
         [3, -1]],
        [[1],
         [3]]
    ),
    (
        [[2, 4, 1],
         [3, 0, -1]],
        [[1, 1, 0],
         [2, 1, -1],
         [3, 1, 5]],
        [[1, 2],
         [3, 1],
         [-1, 4]]
    )
]

for i, (a, b, c) in enumerate(ABCs):
    print(f'({chr(ord("a") + i)})')
    A = Matrix(a)
    B = Matrix(b)
    C = Matrix(c)
    l = (A * B) * C
    r = A * (B * C)
    for t in [A, B, C, l, r, l == r]:
        pprint(t)
        print()
    print()

入出力結果(Terminal, Jupyter(IPython))

$ ./sample3.py
(a)
⎡2  1⎤
⎢    ⎥
⎣3  1⎦

⎡-1  1⎤
⎢     ⎥
⎣1   0⎦

⎡1  4⎤
⎢    ⎥
⎣2  3⎦

⎡3  2⎤
⎢    ⎥
⎣4  1⎦

⎡3  2⎤
⎢    ⎥
⎣4  1⎦

True


(b)
⎡2  1  -1⎤
⎢        ⎥
⎣3  1  2 ⎦

⎡1  1 ⎤
⎢     ⎥
⎢2  0 ⎥
⎢     ⎥
⎣3  -1⎦

⎡1⎤
⎢ ⎥
⎣3⎦

⎡10⎤
⎢  ⎥
⎣14⎦

⎡10⎤
⎢  ⎥
⎣14⎦

True


(c)
⎡2  4  1 ⎤
⎢        ⎥
⎣3  0  -1⎦

⎡1  1  0 ⎤
⎢        ⎥
⎢2  1  -1⎥
⎢        ⎥
⎣3  1  5 ⎦

⎡1   2⎤
⎢     ⎥
⎢3   1⎥
⎢     ⎥
⎣-1  4⎦

⎡33  37 ⎤
⎢       ⎥
⎣11  -18⎦

⎡33  37 ⎤
⎢       ⎥
⎣11  -18⎦

True


$

0 コメント:

コメントを投稿