2018年6月23日土曜日

学習環境

解析入門〈3〉(松坂 和夫(著)、岩波書店)の第16章(行列式)、16.2(行列式の他の性質)、問題4.を取り組んでみる。


  1. A a d j A = det A I n det A a d j A = det det A I n det A det a d j A = det A n det A 0 det a d j A = det A n - 1 det A = 0 A a d j A = O

    ここで、 A の随伴行列が可逆、 すなわち行列式が零ではないと仮定すると、

    A a d j A a d j A - 1 = O A = O a d j A = O det a d j A = 0

    これは

    det a d j A 0

    と矛盾する。

    よって、

    det a d j A = 0

    ゆえに

    det a d j A = det A n - 1 = 0

コード(Emacs)

Python 3

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

print('4')


def f(A, i, j, n):
    def f(k, l):
        if k < i and l < j:
            return A[k, l]
        if k < i and l >= j:
            return A[k, l + 1]
        if k >= i and l < j:
            return A[k + 1, l]
        return A[k + 1, l + 1]
    return Matrix([[f(k, l) for l in range(n - 1)]
                   for k in range(n - 1)])


def g(A, i, j, n):
    return (-1) ** (i + j) * f(A, i, j, n).det()


for n in range(1, 4):
    print(f'{n}次')
    A = Matrix([symbols(', '.join([chr(ord('a') + i)
                                   for i in range(n * n)]))]).reshape(n, n)

    adjA = Matrix([[g(A, j, i, n) for j in range(n)]
                   for i in range(n)])

    for t in [A, adjA, adjA.det().expand() == (A.det() ** (n - 1)).expand()]:
        pprint(t)
        print()
    print()

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

$ ./sample5.py
4.
1次
[a]

[1]

True


2次
⎡a  b⎤
⎢    ⎥
⎣c  d⎦

⎡d   -b⎤
⎢      ⎥
⎣-c  a ⎦

True


3次
⎡a  b  c⎤
⎢       ⎥
⎢d  e  f⎥
⎢       ⎥
⎣g  h  i⎦

⎡e⋅i - f⋅h   -b⋅i + c⋅h  b⋅f - c⋅e ⎤
⎢                                  ⎥
⎢-d⋅i + f⋅g  a⋅i - c⋅g   -a⋅f + c⋅d⎥
⎢                                  ⎥
⎣d⋅h - e⋅g   -a⋅h + b⋅g  a⋅e - b⋅d ⎦

True


$

0 コメント:

コメントを投稿