このシリーズについて
数学の理解を深めるためにpythonで実装しながら、理解を進めてます。当分は線形代数やろうと思います。数学はそんなに好きではありませんでしたが、最近好きになってきたかもしれません。シリーズの目次はこちら。
行列式と置換
行列式は以下の式で定義されます。参照元
いきなり、行列式を実装しようとしても色々と知識が足りなかったので、とりあえず置換をまずやっていこうと思います。
置換は以下のように定義されます。参照元
(1, 2, 3)とかだと(3, 1, 2)とかが置換されたものの例になります。n文字の置換は全部でn!通りあることになります。今回は置換の積を実装していこうと思います。
置換の積は以下のように表されます。参照元
こちらの記事いわく、2つの置換の対応関係(「A→B」と「B→C」)を3段論法的な感じで1つにギュッとまとめる(「A→C」)感じだそうです。詳しく突き詰めると、自分の場合沼にはまりそうなのでこのイメージでとどめておきます。今回はこの置換の積を実装していこうと思います。
置換の積
置換の積ができるpythonのライブラリが見つからなかったので、自分の実装が合っているか不安です。もしライブラリがあれば教えてください。下のような感じで実装してみました。シンプルに定義どおりにやってみました。
def permutation(list1, list2):
list_len = len(list2[1])
final_list = []
first_list = []
ans_list = []
for i in range(list_len):
a = list2[1][i]
ans = list1[1][a - 1]
if list1[0][i] != ans:
first_list.append(list1[0][i])
ans_list.append(ans)
final_list.append(first_list)
final_list.append(ans_list)
return final_list
def main():
print("~~permutation_test~~")
pm1 = [[1, 2, 3], [2, 3, 1]]
pm2 = [[1, 2, 3], [3, 2, 1]]
print("my_answer:", permutation(pm1, pm2))
# 出力結果
# ~~permutation_test~~
# my_answer: [[2, 3], [3, 2]]
これは改善の余地が大いにありそうですが、とりあえずこんな感じで今回はやってみました。
まとめ
大学の数学の授業、予備のりたくみの動画でいい説。
間違いや質問、ご意見等ありましたらお気軽にコメントください。頑張って答えますので(笑)。