2019年2月19日火曜日

学習環境

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


  1. A、 B はベキ零なので、ある1以上の整数 r、 s が存在して、

    A r = O B s = O

    よって、

    t = max r , s

    とおけば、可換であることから

    A B t = A t B t = A r A t - r B s B t - s = O A t - r O B t - s = O

    和について。

    k = r + s

    ておけば、

    A + B k = i = 0 k k i A i B k - i

    ここでも、

    0 i r

    のとき、

    k - i = m + n - i r + s - r = s

    よって、

    B k - i = B s B k - i - s = O

    また、

    r < i k

    の場合、

    A i = A r A r - i = O A r - i = O

    よって、

    A + B k = O

    ゆえに、和はベキ零行列である。

    (証明終)

コード

Python 3

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

print('22.')


def is_equal(a, b, n):
    for i in range(n):
        for j in range(n):
            if a[i, j] != b[i, j]:
                return False
    return True


for n in range(2, 6):
    O = Matrix([[0 for j in range(n)]
                for i in range(n)])
    while True:
        is_zero = False
        while True:
            A = randMatrix(n, min=-10, max=10, percent=20)
            if is_equal(A, O, n):
                continue
            for r in range(1, 11):
                if is_equal(A ** r, O, n):
                    is_zero = True
                    break
            if is_zero:
                break
        is_zero = False
        while True:
            B = randMatrix(n, min=-10, max=10, percent=20)
            if is_equal(B, O, n):
                continue
            for s in range(1, 11):
                if is_equal(B ** s, O, n):
                    is_zero = True
                    break
            if is_zero:
                break
        if is_equal(A * B, B * A, n):
            print(f'r = {r}, s = {s}')
            for t in [A, B, (A * B) ** r, (A + B) ** (r + s)]:
                pprint(t)
                print()
            print()
            break

入出力結果(cmd(コマンドプロンプト)、Terminal、Jupyter(IPython))

C:\Users\...> py -3 sample22.py
22.
r = 2, s = 2
⎡0  2⎤
⎢    ⎥
⎣0  0⎦

⎡0  7⎤
⎢    ⎥
⎣0  0⎦

⎡0  0⎤
⎢    ⎥
⎣0  0⎦

⎡0  0⎤
⎢    ⎥
⎣0  0⎦


r = 3, s = 2
⎡0   0  0⎤
⎢        ⎥
⎢-4  0  0⎥
⎢        ⎥
⎣0   9  0⎦

⎡ 0   0  0⎤
⎢         ⎥
⎢ 0   0  0⎥
⎢         ⎥
⎣-10  0  0⎦

⎡0  0  0⎤
⎢       ⎥
⎢0  0  0⎥
⎢       ⎥
⎣0  0  0⎦

⎡0  0  0⎤
⎢       ⎥
⎢0  0  0⎥
⎢       ⎥
⎣0  0  0⎦


r = 2, s = 2
⎡0   0  0  0⎤
⎢           ⎥
⎢0   0  0  0⎥
⎢           ⎥
⎢-5  2  0  0⎥
⎢           ⎥
⎣10  3  0  0⎦

⎡0    0   0  0⎤
⎢             ⎥
⎢0    0   0  0⎥
⎢             ⎥
⎢-7  -10  0  0⎥
⎢             ⎥
⎣2    0   0  0⎦

⎡0  0  0  0⎤
⎢          ⎥
⎢0  0  0  0⎥
⎢          ⎥
⎢0  0  0  0⎥
⎢          ⎥
⎣0  0  0  0⎦

⎡0  0  0  0⎤
⎢          ⎥
⎢0  0  0  0⎥
⎢          ⎥
⎢0  0  0  0⎥
⎢          ⎥
⎣0  0  0  0⎦


r = 3, s = 2
⎡0   0  0   0  0⎤
⎢               ⎥
⎢0   0  0   0  0⎥
⎢               ⎥
⎢10  0  0   0  0⎥
⎢               ⎥
⎢0   0  0   0  0⎥
⎢               ⎥
⎣9   1  -1  0  0⎦

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

⎡0  0  0  0  0⎤
⎢             ⎥
⎢0  0  0  0  0⎥
⎢             ⎥
⎢0  0  0  0  0⎥
⎢             ⎥
⎢0  0  0  0  0⎥
⎢             ⎥
⎣0  0  0  0  0⎦

⎡0  0  0  0  0⎤
⎢             ⎥
⎢0  0  0  0  0⎥
⎢             ⎥
⎢0  0  0  0  0⎥
⎢             ⎥
⎢0  0  0  0  0⎥
⎢             ⎥
⎣0  0  0  0  0⎦



C:\Users\...>

0 コメント:

コメントを投稿