0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

本記事はQiita 全国学生対抗戦 Advent Calender2024に参加しています。
Advent calender

こんにちは。あずびわです。
現在、数学科に通っている1年生です。
代数学の授業で線形代数を習ったので、その中でも行列式をいろいろな定義を用いてプログラムで実装したいと思います!

行列の準備

今回は計算が分かりやすいように、3次正方行列を用いて計算します。

Python
import random
N = 3  # 3次行列

matrix = [[random.randint(0,5) for i in range(N)]for i in range(N)]
for i in range(N):
  print(matrix[i])

二重のリストを使って行列を作成しています。
行列の要素は0から5までランダムな整数を取るようにしています。

行列式の定義

n次正方行列${A=(a_{ij})}$に対して、置換${S_n}$を用いて

${\det A =\sum_{\sigma \in S_n} \varepsilon (\sigma)a_1{\sigma _{(1)}}a_2...a_n{\sigma _{(n)}}}$

と表されるものが行列式です。

これは、各行各列から1つずつ要素を取り出してかけて、そこにそれらの置換に応じた符号をかけて足し合わせたものになります。

定義
det = 0

for i in range(3):
  for j in range(3):
    if i!=j:
      k = (6-i-j)%3  # 3行目が何列目になるか
      
      hugou_pls = False
      if (i==0 and j==1 and k==2) or (i!=0 and j!=1 and k!=2):  # 置換による符号
        hugou_pls = True
        
      sum = matrix[0][i] * matrix[1][j] * matrix[2][k]
      if hugou_pls:
        det += sum
      else:
        det -= sum
        
print(det)

こんな感じです。
今回は3次正方行列を考えているので、置換は各行と各列の値が等しい時か各行と各列の値が全て異なっている時に正になります。

余因子展開

余因子展開
det = 0

for i in range(3):
  sum =  matrix[i][0] * (matrix[(i+1)%N][1] * matrix[(i+2)%N][2] - matrix[(i+1)%N][2] * matrix[(i+2)%N][1])
  det += sum
  
print(det)

余因子展開は、1つの行または列を選び、そこから小行列を考えて行列式を計算する方法です。
このプログラムでは、1列目で余因子展開しています。

サラスの公式

サラスの公式
det = 0

det += matrix[0][0] * matrix[1][1] * matrix[2][2]
det += matrix[0][1] * matrix[1][2] * matrix[2][0]
det += matrix[0][2] * matrix[1][0] * matrix[2][1]
det -= matrix[0][0] * matrix[1][2] * matrix[2][1]
det -= matrix[0][1] * matrix[1][0] * matrix[2][2]
det -= matrix[0][2] * matrix[1][1] * matrix[2][0]

print(det)

3次正方行列で使える公式で、斜めにかけて足すことで行列式を求めることができます。
プログラムとしては見たままで、それぞれの対象を計算して、足すものと引くものに分けて計算しています。

0
1
1

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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?