2019年10月21日月曜日

学習環境

ラング線形代数学(下) (ちくま学現文庫)(S.ラング (著)、芹沢 正三 (翻訳)、筑摩書房)の14章(群)、1(巡回群)、練習問題2の解答を求めてみる。



    1. [ 0 1 0 0 0 1 1 0 0 ] [ 0 1 0 0 0 1 1 0 0 ] = [ 0 0 1 1 0 0 0 1 0 ] [ 0 0 1 1 0 0 0 1 0 ] [ 0 1 0 0 0 1 1 0 0 ] = [ 1 0 0 0 1 0 0 0 1 ]

      よって、 周期は3。


    2. [ 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 ] [ 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 ] = [ 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 ] [ 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 ] [ 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 ] = [ 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 ] [ 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 ] [ 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 ] = [ 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 ]

      よって周期は4。

コード

Python 3

#!/usr/bin/env python3
from unittest import TestCase, main
from sympy import pprint, Matrix, Identity, ZeroMatrix

print('2.')


def f(n):
    return Matrix([[g(n, i, j)for j in range(1, n + 1)]
                   for i in range(1, n + 1)])


def g(n, i, j):
    if i % n == j - 1:
        return 1
    return 0


def h(n):
    return Matrix([[k(i, j) for j in range(n)]
                   for i in range(n)])


def k(i, j):
    if i == j:
        return 1
    return 0


for o in [f(3), f(4)]:
    pprint(o)
    print()


class MyTestCase(TestCase):
    def test3(self):
        self.assertEqual(f(3) ** 3, h(3))

    def test4(self):
        self.assertEqual(f(4) ** 4, h(4))


if __name__ == '__main__':
    main()

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

% ./sample2.py -v
2.
⎡0  1  0⎤
⎢       ⎥
⎢0  0  1⎥
⎢       ⎥
⎣1  0  0⎦

⎡0  1  0  0⎤
⎢          ⎥
⎢0  0  1  0⎥
⎢          ⎥
⎢0  0  0  1⎥
⎢          ⎥
⎣1  0  0  0⎦

test3 (__main__.MyTestCase) ... ok
test4 (__main__.MyTestCase) ... ok

----------------------------------------------------------------------
Ran 2 tests in 0.001s

OK
%

0 コメント:

コメントを投稿