1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Python数学シリーズ③ 行列式(置換)

Last updated at Posted at 2021-01-06

このシリーズについて

数学の理解を深めるためにpythonで実装しながら、理解を進めてます。当分は線形代数やろうと思います。数学はそんなに好きではありませんでしたが、最近好きになってきたかもしれません。シリーズの目次はこちら

行列式と置換

行列式は以下の式で定義されます。参照元
Screenshot from 2021-01-05 23-00-30.png
いきなり、行列式を実装しようとしても色々と知識が足りなかったので、とりあえず置換をまずやっていこうと思います。
置換は以下のように定義されます。参照元
Screenshot from 2021-01-06 22-33-49.png
(1, 2, 3)とかだと(3, 1, 2)とかが置換されたものの例になります。n文字の置換は全部でn!通りあることになります。今回は置換の積を実装していこうと思います。
置換の積は以下のように表されます。参照元
Screenshot from 2021-01-06 22-42-51.png
こちらの記事いわく、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]]

これは改善の余地が大いにありそうですが、とりあえずこんな感じで今回はやってみました。

まとめ

大学の数学の授業、予備のりたくみの動画でいい説。

間違いや質問、ご意見等ありましたらお気軽にコメントください。頑張って答えますので(笑)。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?