Loading [MathJax]/jax/output/CommonHTML/jax.js

2019年2月19日火曜日

学習環境

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


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

    Ar=OBs=O

    よって、

    t=max{r,s}

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

    (AB)t=AtBt=ArAt-rBsBt-s=OAt-rOBt-s=O

    和について。

    k=r+s

    ておけば、

    (A+B)k=ki=0(ki)AiBk-i

    ここでも、

    0ir

    のとき、

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

    よって、

    Bk-i=BsBk-i-s=O

    また、

    r<ik

    の場合、

    Ai=ArAr-i=OAr-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 コメント:

コメントを投稿