## 2020年6月11日木曜日

### 数学 - Python - 線形代数学 - 行列式 - 行列式の存在 - 置換、互換の積、符号

ラング線形代数学(上) (ちくま学現文庫)(S.ラング (著)、芹沢 正三 (翻訳)、筑摩書房)の6章(行列式)、5(行列式の存在)、練習問題1の解答を求めてみる。

1. 互換の積としてあらわすと、

$\left[\begin{array}{ccc}1& 2& 3\\ 2& 3& 1\end{array}\right]=\left(1,3\right)\left(2,3\right)$

符号は

${\left(-1\right)}^{2}=1$

2. $\begin{array}{l}\left(1,3\right)\left(1,2\right)\\ 1\end{array}$

3. $\begin{array}{l}\left(1,3\right)\\ -1\end{array}$

4. $\begin{array}{l}\left(1,2\right)\left(1,3\right)\\ 1\end{array}$

5. $\begin{array}{l}\left(1,2\right)\left(3,4\right)\\ 1\end{array}$

6. $\begin{array}{l}\left(1,3\right)\left(1,4\right)\\ 1\end{array}$

コード

#!/usr/bin/env python3
from unittest import TestCase, main

print('1.')

def f(s, i, j):
k = s.index(i)
l = s.index(j)
s[k], s[l] = s[l], s[k]

class TestPermutationTransposition(TestCase):
def test(self):
permutation = [[2, 3, 1, 4],
[3, 1, 2, 4],
[3, 2, 1, 4],
[2, 3, 1, 4],
[2, 1, 4, 3],
[3, 2, 4, 1]]
transpositions = [[(1, 3), (2, 3)],
[(1, 3), (1, 2)],
[(1, 3)],
[(1, 2), (1, 3)],
[(1, 2), (3, 4)],
[(1, 3), (1, 4)]]
for i, (p, ts) in enumerate(zip(permutation, transpositions)):
print(f'({chr(ord("a") + i)})')
s = [1, 2, 3, 4]
for t in ts:
f(s, *t)
self.assertEqual(s, p)

if __name__ == "__main__":
main()


% ./sample1.py -v
1.
test (__main__.TestPermutationTransposition) ... (a)
(b)
(c)
(d)
(e)
(f)
ok

----------------------------------------------------------------------
Ran 1 test in 0.000s

OK
%