2017年12月18日月曜日

学習環境

オイラーの贈物―人類の至宝eiπ=-1を学ぶ (吉田 武(著)、東海大学出版会)の第III部(オイラーの公式とその応用(Euler's Formula & Its Applications))、第9章(ベクトルと行列(Vector & Matrix))、9.3(逆行列と連立1次方程式の解法)、問題4.を取り組んでみる。


  1. 2×2行列 A. B をそれぞれ

    A = ( a b c d ) B = ( e f g h )

    とおく。

    det A = a d - b c A T = ( a c b d ) det A T = a d - c b = a d - b c

    よって、

    det A = det A T
    A B = ( a e + b g a f + b h c e + dg c f + d h )
    det A B = a e + b g c f + d h - a f + b h c e + dg = a c e f + a d e h + b c f g + b dg h - a c e f - a d f g - b c e h - b dg h = a d e h + h c f g - a d f g - b c e h
    det A det B = a d - b c e h - f g = a d e h + b c f g - a d f g - b c e h

    よって、

    det A B = det A det B

コード(Emacs)

Python 3

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

A = Matrix(symbols([chr(ord('a') + i) for i in range(4)])).reshape(2, 2)
B = Matrix(symbols([chr(ord('e') + i) for i in range(4)])).reshape(2, 2)

d1 = A.det()
d2 = A.T.det()
d3 = (A * B).det()
d4 = A.det() * B.det()
for t in [A, B, d1, d2, d1 == d2, d3, d4, d3.expand() == d4.expand()]:
    pprint(t)
    print()

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

$ ./sample4.py
⎡a  b⎤
⎢    ⎥
⎣c  d⎦

⎡e  f⎤
⎢    ⎥
⎣g  h⎦

a⋅d - b⋅c

a⋅d - b⋅c

True

(a⋅e + b⋅g)⋅(c⋅f + d⋅h) - (a⋅f + b⋅h)⋅(c⋅e + d⋅g)

(a⋅d - b⋅c)⋅(e⋅h - f⋅g)

True

$

0 コメント:

コメントを投稿