2017年11月7日火曜日

学習環境

線型代数入門(松坂 和夫(著)、岩波書店)の第3章(線型写像)、10(行列の階数)、問題7.を取り組んでみる。

    1. A、Bをn次の正方行列とする。

      rank(A + B) ≤ rank A + rank Bが成り立つ。

    2. Aをl × m 行列、Bをm × n行列とする。

      もし、AB=Oならば、rank A + rank B ≤ mが成り立つ。

コード(Emacs)

Python 3

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

print('7-9.')
for n in range(1, 6):
    print(f'{n}次の正方行列')
    for _ in range(2):
        A = Matrix([[random.randrange(10) for _ in range(n)]
                    for _ in range(n)])
        B = Matrix([[random.randrange(10) for _ in range(n)]
                    for _ in range(n)])
        C = A + B
        b = C.rank() <= A.rank() + B.rank()
        for t in [A, B, C, C.rank(), A.rank() + B.rank(), b]:
            pprint(t)
            print()
    print()

print('7-10.')

for _ in range(10):
    while True:
        l = random.randrange(1, 10)
        m = random.randrange(1, 10)
        n = random.randrange(1, 10)
        A = Matrix([[random.randrange(10) - 5 for _ in range(m)]
                    for _ in range(l)])
        B = Matrix([[random.randrange(10) - 5 for _ in range(n)]
                    for _ in range(m)])
        Z = Matrix([[0 for _ in range(n)]
                    for _ in range(l)])
        if A * B == Z:
            print(f'A: {l}×{m}行列, B: {m}×{n}行列')
            for t in [A, B]:
                pprint(t)
                print()
            print(A.rank() + B.rank() <= m)
            break

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

$ ./sample7.py
7-9.
1次の正方行列
[4]

[1]

[5]

1

2

True

[7]

[7]

[14]

1

2

True


2次の正方行列
⎡1  3⎤
⎢    ⎥
⎣0  6⎦

⎡6  9⎤
⎢    ⎥
⎣7  6⎦

⎡7  12⎤
⎢     ⎥
⎣7  12⎦

1

4

True

⎡4  9⎤
⎢    ⎥
⎣4  3⎦

⎡9  5⎤
⎢    ⎥
⎣9  7⎦

⎡13  14⎤
⎢      ⎥
⎣13  10⎦

2

4

True


3次の正方行列
⎡9  9  6⎤
⎢       ⎥
⎢5  0  6⎥
⎢       ⎥
⎣2  3  3⎦

⎡4  1  0⎤
⎢       ⎥
⎢2  0  3⎥
⎢       ⎥
⎣5  1  9⎦

⎡13  10  6 ⎤
⎢          ⎥
⎢7   0   9 ⎥
⎢          ⎥
⎣7   4   12⎦

3

6

True

⎡7  8  8⎤
⎢       ⎥
⎢8  5  6⎥
⎢       ⎥
⎣3  0  5⎦

⎡0  3  3⎤
⎢       ⎥
⎢1  3  8⎥
⎢       ⎥
⎣5  4  6⎦

⎡7  11  11⎤
⎢         ⎥
⎢9  8   14⎥
⎢         ⎥
⎣8  4   11⎦

3

6

True


4次の正方行列
⎡4  6  7  9⎤
⎢          ⎥
⎢8  2  7  6⎥
⎢          ⎥
⎢7  0  3  4⎥
⎢          ⎥
⎣9  3  3  8⎦

⎡4  2  6  9⎤
⎢          ⎥
⎢7  5  1  8⎥
⎢          ⎥
⎢5  3  8  7⎥
⎢          ⎥
⎣8  2  3  1⎦

⎡8   8  13  18⎤
⎢             ⎥
⎢15  7  8   14⎥
⎢             ⎥
⎢12  3  11  11⎥
⎢             ⎥
⎣17  5  6   9 ⎦

4

8

True

⎡8  6  9  1⎤
⎢          ⎥
⎢0  3  2  3⎥
⎢          ⎥
⎢8  6  4  8⎥
⎢          ⎥
⎣5  0  3  4⎦

⎡5  0  4  9⎤
⎢          ⎥
⎢6  8  5  4⎥
⎢          ⎥
⎢4  7  7  2⎥
⎢          ⎥
⎣1  8  0  4⎦

⎡13  6   13  10⎤
⎢              ⎥
⎢6   11  7   7 ⎥
⎢              ⎥
⎢12  13  11  10⎥
⎢              ⎥
⎣6   8   3   8 ⎦

4

8

True


5次の正方行列
⎡8  8  2  5  7⎤
⎢             ⎥
⎢9  6  4  7  1⎥
⎢             ⎥
⎢1  5  0  9  1⎥
⎢             ⎥
⎢2  6  1  5  7⎥
⎢             ⎥
⎣8  9  3  8  6⎦

⎡9  9  4  8  1⎤
⎢             ⎥
⎢8  6  9  9  9⎥
⎢             ⎥
⎢1  0  0  1  1⎥
⎢             ⎥
⎢9  5  4  1  7⎥
⎢             ⎥
⎣3  4  2  1  5⎦

⎡17  17  6   13  8 ⎤
⎢                  ⎥
⎢17  12  13  16  10⎥
⎢                  ⎥
⎢2   5   0   10  2 ⎥
⎢                  ⎥
⎢11  11  5   6   14⎥
⎢                  ⎥
⎣11  13  5   9   11⎦

5

10

True

⎡6  5  3  8  6⎤
⎢             ⎥
⎢7  4  8  0  7⎥
⎢             ⎥
⎢7  2  5  6  9⎥
⎢             ⎥
⎢7  5  2  9  3⎥
⎢             ⎥
⎣2  4  6  0  0⎦

⎡8  7  4  0  7⎤
⎢             ⎥
⎢1  9  8  1  6⎥
⎢             ⎥
⎢6  5  0  2  3⎥
⎢             ⎥
⎢3  4  4  4  2⎥
⎢             ⎥
⎣1  3  5  6  9⎦

⎡14  12  7   8   13⎤
⎢                  ⎥
⎢8   13  16  1   13⎥
⎢                  ⎥
⎢13  7   5   8   12⎥
⎢                  ⎥
⎢10  9   6   13  5 ⎥
⎢                  ⎥
⎣3   7   11  6   9 ⎦

5

10

True


7-10.
A: 1×3行列, B: 3×3行列
[0  0  0]

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

True
A: 1×1行列, B: 1×4行列
[0]

[1  2  -3  4]

True
A: 1×1行列, B: 1×8行列
[0]

[0  3  0  -5  -2  0  4  -4]

True
A: 1×2行列, B: 2×7行列
[0  0]

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

True
A: 1×1行列, B: 1×4行列
[0]

[0  -2  4  -2]

True
A: 1×2行列, B: 2×1行列
[-2  -1]

⎡1 ⎤
⎢  ⎥
⎣-2⎦

True
A: 8×1行列, B: 1×1行列
⎡-3⎤
⎢  ⎥
⎢0 ⎥
⎢  ⎥
⎢-2⎥
⎢  ⎥
⎢1 ⎥
⎢  ⎥
⎢2 ⎥
⎢  ⎥
⎢-2⎥
⎢  ⎥
⎢3 ⎥
⎢  ⎥
⎣-2⎦

[0]

True
A: 5×1行列, B: 1×1行列
⎡-2⎤
⎢  ⎥
⎢4 ⎥
⎢  ⎥
⎢-2⎥
⎢  ⎥
⎢-3⎥
⎢  ⎥
⎣-4⎦

[0]

True
A: 1×1行列, B: 1×4行列
[0]

[-4  4  4  4]

True
A: 3×1行列, B: 1×1行列
⎡4⎤
⎢ ⎥
⎢3⎥
⎢ ⎥
⎣0⎦

[0]

True
$

0 コメント:

コメントを投稿