Processing math: 80%

2019年6月26日水曜日

学習環境

ラング線形代数学(上)(S.ラング (著)、芹沢 正三 (翻訳)、ちくま学芸文庫)の7章(スカラー積と直交性)、2(正値スカラー積)、練習問題6の解答を求めてみる。


  1. 行列の積の成分表示。

    A,B=tr(AB)=tr(nk=1aikbkj)=ni=1(nk=1aikbki)

    SP 1 の可換について。

    B,A=ni=1(nk=1bikaki)=ni=1(nk=1akibik)=ni=1(nk=1aikbki)=A,B

    SP 2の分配律について。

    A,B+C=tr(A(B+C))=tr(AB+AC)=tr(AB)+tr(AC)=A,B+A,C

    SP 3のスカラー倍について。

    xA,B=tr(xAB)=xtr(AB)A,xB=tr(A(xB))=tr(xAB)=xtr(AB)

    よってスカラー積で ある。

    また、 行列 A が すべての行 B に対して零のとき、

    t r A B = 0 i = 1 n k = 1 n a i k b k i = 0 a i j = 0 A = O

    よって、退化していない。

    (証明終)

コード

Python 3

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

print('7.')

n = 4
A = Matrix([[symbols(f'a{i + 1}{j + 1}') for j in range(n)]
            for i in range(n)])
B = Matrix([[symbols(f'b{i + 1}{j + 1}') for j in range(n)]
            for i in range(n)])
C = Matrix([[symbols(f'c{i + 1}{j + 1}') for j in range(n)]
            for i in range(n)])
x = symbols('x')
for a, b in [((A * B).trace(), (B * A).trace()),
             ((A * (B + C)).trace(), (A * B).trace() + (A * C).trace()),
             (((x * A) * B).trace(), x * (A * B).trace()),
             ((A * (x * B)).trace(), x * (A * B).trace())]:
    print(a.expand() == b.expand())

pprint(solve((A * B).trace(),
             *[symbols(f'a{i + 1}{j + 1}')
               for i in range(n)
               for j in range(n)], dict=True))

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

C:\Users\...>py sample7.py
7.
True
True
True
True
⎡⎧     -(a₁₂⋅b₂₁ + a₁₃⋅b₃₁ + a₁₄⋅b₄₁ + a₂₁⋅b₁₂ + a₂₂⋅b₂₂ + a₂₃⋅b₃₂ + a₂₄⋅b₄₂ +
⎢⎨a₁₁: ───────────────────────────────────────────────────────────────────────
⎣⎩                                                                            

 a₃₁⋅b₁₃ + a₃₂⋅b₂₃ + a₃₃⋅b₃₃ + a₃₄⋅b₄₃ + a₄₁⋅b₁₄ + a₄₂⋅b₂₄ + a₄₃⋅b₃₄ + a₄₄⋅b₄₄
──────────────────────────────────────────────────────────────────────────────
   b₁₁                                                                        

) ⎫⎤
──⎬⎥
  ⎭⎦

C:\Users\...>

0 コメント:

コメントを投稿