2017年6月11日日曜日

学習環境

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


  1. A r 1 =O B r 2 =O AB=BA ( AB ) r 1 + r 2 = A r 1 + r 2 B r 1 + r 2 =OO =O ( A+B ) r 1 + r 2 = i=0 r 1 + r 2 ( r 1 + r 2 i ) A i B r 1 + r 2 i = i=0 r 1 + r 2 ( r 1 + r 2 i )O =O

コード(Emacs)

Python 3

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

from sympy import pprint, Matrix
import random

print('22.')
for n in range(2, 5):
    print('{0} x {0}'.format(n))
    O = Matrix([[0 for j in range(n)]
                for i in range(n)])
    while True:
        A = Matrix([[random.randrange(-10, 10) if i < j else 0
                     for j in range(n)]
                    for i in range(n)])
        B = Matrix([[random.randrange(-10, 10) if i < j else 0
                     for j in range(n)]
                    for i in range(n)])
        if A * B == B * A:
            print('A')
            pprint(A)
            print('B')
            pprint(B)
            for i in range(1, 10):
                if A ** i == O:
                    r = i
                    for i in range(1, 10):
                        if B ** i == O:
                            r += i
                            print('A * B')
                            pprint(A * B)
                            print('(A * B) ** {}'.format(r))
                            pprint((A * B) ** r)
                            print('A + B')
                            pprint(A + B)
                            print('(A + B) ** {}'.format(r))
                            pprint((A + B) ** r)
                            break
                    break
            break

入出力結果(Terminal, IPython)

$ ./sample22.py
22.
2 x 2
A
⎡0  -7⎤
⎢     ⎥
⎣0  0 ⎦
B
⎡0  -7⎤
⎢     ⎥
⎣0  0 ⎦
A * B
⎡0  0⎤
⎢    ⎥
⎣0  0⎦
(A * B) ** 4
⎡0  0⎤
⎢    ⎥
⎣0  0⎦
A + B
⎡0  -14⎤
⎢      ⎥
⎣0   0 ⎦
(A + B) ** 4
⎡0  0⎤
⎢    ⎥
⎣0  0⎦
3 x 3
A
⎡0  5  4 ⎤
⎢        ⎥
⎢0  0  -5⎥
⎢        ⎥
⎣0  0  0 ⎦
B
⎡0  -2  -7⎤
⎢         ⎥
⎢0  0   2 ⎥
⎢         ⎥
⎣0  0   0 ⎦
A * B
⎡0  0  10⎤
⎢        ⎥
⎢0  0  0 ⎥
⎢        ⎥
⎣0  0  0 ⎦
(A * B) ** 6
⎡0  0  0⎤
⎢       ⎥
⎢0  0  0⎥
⎢       ⎥
⎣0  0  0⎦
A + B
⎡0  3  -3⎤
⎢        ⎥
⎢0  0  -3⎥
⎢        ⎥
⎣0  0  0 ⎦
(A + B) ** 6
⎡0  0  0⎤
⎢       ⎥
⎢0  0  0⎥
⎢       ⎥
⎣0  0  0⎦
4 x 4
A
⎡0  -1  -8  1 ⎤
⎢             ⎥
⎢0  0   8   9 ⎥
⎢             ⎥
⎢0  0   0   -2⎥
⎢             ⎥
⎣0  0   0   0 ⎦
B
⎡0  0  2  5⎤
⎢          ⎥
⎢0  0  0  4⎥
⎢          ⎥
⎢0  0  0  0⎥
⎢          ⎥
⎣0  0  0  0⎦
A * B
⎡0  0  0  -4⎤
⎢           ⎥
⎢0  0  0  0 ⎥
⎢           ⎥
⎢0  0  0  0 ⎥
⎢           ⎥
⎣0  0  0  0 ⎦
(A * B) ** 6
⎡0  0  0  0⎤
⎢          ⎥
⎢0  0  0  0⎥
⎢          ⎥
⎢0  0  0  0⎥
⎢          ⎥
⎣0  0  0  0⎦
A + B
⎡0  -1  -6  6 ⎤
⎢             ⎥
⎢0  0   8   13⎥
⎢             ⎥
⎢0  0   0   -2⎥
⎢             ⎥
⎣0  0   0   0 ⎦
(A + B) ** 6
⎡0  0  0  0⎤
⎢          ⎥
⎢0  0  0  0⎥
⎢          ⎥
⎢0  0  0  0⎥
⎢          ⎥
⎣0  0  0  0⎦
$

0 コメント:

コメントを投稿