2019年2月1日金曜日

学習環境

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


  1. A + B 2 = A + B A + B = A + B A + A + B B = A A + B + B A + B = A 2 + A B + B A + B 2 = A 2 + A B + A B + B 2 = A 2 + 2 A B + B 2 A + B A - B = A + B A + A + B - B = A A + B + - B A + B = A 2 + A B - B A + B = A 2 + A B - B A - B 2 = A 2 + A B - A B - B 2 = A 2 - B 2

コード

Python 3

#!/usr/bin/env python3
from sympy import pprint, symbols, Matrix, solve
print('4.')


def cmp(A, B):
    return all([A[i, j].expand() == B[i, j].expand()
                for i in range(2)
                for j in range(2)])


print('可換な場合。')
a, b, c, d = symbols('a, b, c, d', real=True)
A = Matrix([[1, 1],
            [0, 1]])
B = Matrix([[a, b],
            [c, d]])

d = solve(A * B - B * A, a, b, c, d)
pprint(d)
B = B.subs(d)
for t in [A, B, A * B == B * A,
          cmp((A + B) ** 2,  A ** 2 + 2 * A * B + B ** 2),
          cmp((A + B) * (A - B), A ** 2 - B ** 2)]:
    pprint(t)
    print()

print('可換ではない場合。')
B = Matrix([[1, 1],
            [1, 1]])

for t in [A, B, A * B == B * A,
          cmp((A + B) ** 2,  A ** 2 + 2 * A * B + B ** 2),
          cmp((A + B) * (A - B), A ** 2 - B ** 2)]:
    pprint(t)
    print()

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

$ python3 sample4.py
4.
可換な場合。
{a: d, c: 0}
⎡1  1⎤
⎢    ⎥
⎣0  1⎦

⎡d  b⎤
⎢    ⎥
⎣0  d⎦

True

True

True

可換ではない場合。
⎡1  1⎤
⎢    ⎥
⎣0  1⎦

⎡1  1⎤
⎢    ⎥
⎣1  1⎦

False

False

False

$

0 コメント:

コメントを投稿