行列式 計算機

分解方法:
0
0
0
0
数値形式
解法コメント
説明なし

a

b

c

d

x

y

z

clear

i

Randomize

313131313135151515151583137
2
2510
=Solve

  モンタンテ法(Bareiss アルゴリズム)を用いた行列式の求め方

モンタンテ法(Bareiss アルゴリズムとしても知られています)はガウス消去法の整数保存型です。各ステップで、前の反復のピボットが新しい要素を正確に除算するため、すべての中間結果が整数のままになります。行列式は最終的なピボットです。

  モンタンテ(Bareiss)— 計算例(5×5)

初期行列
A
を書き出す:
A
=
3
1
2
0
1
1
4
1
2
0
2
0
5
1
2
0
2
1
3
1
1
1
0
2
4
モンタンテ法(Bareiss アルゴリズム)を使って行列
A
を階段形に還元すると、最後に対角線上の要素が行列
A
の行列式に等しくなります。
1)
ピボット要素がある行は、次の行列に変更なく書き直されます。
2)
ピボット要素自体を除いて、ピボット要素が配置されている列のすべての要素にゼロを書き込みます。
3)
不明な要素を見つけるには、次の式を使用します:
a
(k+1)
i,j
=
a
(k)
i,j
·
p
0
k+1
a
(k)
k+1,j
·
a
(k)
i,k+1
p
0
k
// ただし
a
a は行列 A の要素;
p
p は現在のピボット要素です。
2
イテレーション 1
A0
=
3
1
2
0
1
1
4
1
2
0
2
0
5
1
2
0
2
1
3
1
1
1
0
2
4
最初のイテレーションでは、前のピボット要素は常に 1 に等しくなります:
p0
=
1
;
現在のピボット要素は、前の行列 (
A0
) の要素で、インデックスが
1
,
1
のものです:
p1
=
a0
0
1,1
=
3
;
前の行列 (
A0
) に基づいて次の行列 (
A1
) を計算します。
ピボット要素がある行は、次の行列に変更なく書き直されます。
ピボット要素自体を除いて、ピボット要素が配置されている列のすべての要素にゼロを書き込みます。
初期行列
A1
を書き出し、求めたい要素を未知数としてマークする:
A1
=
3
0
0
0
0
1
x
x
x
x
2
x
x
x
x
0
x
x
x
x
1
x
x
x
x
不明な要素を見つけるには、次の式を使用します:
a1
0
i,j
=
a0
0
i,j
*
p1
-
a0
0
1,j
*
a0
0
i,1
p0
;
ここで:
p0
は前のピボット要素です。
p1
は現在のピボット要素です。
a0
は、前のイテレーションで計算された前の行列の要素です。
a1
は、現在のイテレーションで計算された次の行列の要素です。
i
は行番号;
j
は列番号;
Ɐ(
i, j
)
∈ {2, 3, 4, 5} × {2, 3, 4, 5}
A1
=
3
0
0
0
0
1
11
1
6
-1
2
-2
11
3
4
0
6
3
9
3
1
2
-2
6
11
a1
0
2,2
=
a0
0
2,2
*
p1
-
a0
0
1,2
*
a0
0
2,1
p0
=
4
*
3
-
1
*
1
1
=
11
;
a1
0
2,3
=
a0
0
2,3
*
p1
-
a0
0
1,3
*
a0
0
2,1
p0
=
0
*
3
-
2
*
1
1
=
-2
;
a1
0
2,4
=
a0
0
2,4
*
p1
-
a0
0
1,4
*
a0
0
2,1
p0
=
2
*
3
-
0
*
1
1
=
6
;
a1
0
2,5
=
a0
0
2,5
*
p1
-
a0
0
1,5
*
a0
0
2,1
p0
=
1
*
3
-
1
*
1
1
=
2
;
a1
0
3,2
=
a0
0
3,2
*
p1
-
a0
0
1,2
*
a0
0
3,1
p0
=
1
*
3
-
1
*
2
1
=
1
;
a1
0
3,3
=
a0
0
3,3
*
p1
-
a0
0
1,3
*
a0
0
3,1
p0
=
5
*
3
-
2
*
2
1
=
11
;
a1
0
3,4
=
a0
0
3,4
*
p1
-
a0
0
1,4
*
a0
0
3,1
p0
=
1
*
3
-
0
*
2
1
=
3
;
a1
0
3,5
=
a0
0
3,5
*
p1
-
a0
0
1,5
*
a0
0
3,1
p0
=
0
*
3
-
1
*
2
1
=
-2
;
a1
0
4,2
=
a0
0
4,2
*
p1
-
a0
0
1,2
*
a0
0
4,1
p0
=
2
*
3
-
1
*
0
1
=
6
;
a1
0
4,3
=
a0
0
4,3
*
p1
-
a0
0
1,3
*
a0
0
4,1
p0
=
1
*
3
-
2
*
0
1
=
3
;
a1
0
4,4
=
a0
0
4,4
*
p1
-
a0
0
1,4
*
a0
0
4,1
p0
=
3
*
3
-
0
*
0
1
=
9
;
a1
0
4,5
=
a0
0
4,5
*
p1
-
a0
0
1,5
*
a0
0
4,1
p0
=
2
*
3
-
1
*
0
1
=
6
;
a1
0
5,2
=
a0
0
5,2
*
p1
-
a0
0
1,2
*
a0
0
5,1
p0
=
0
*
3
-
1
*
1
1
=
-1
;
a1
0
5,3
=
a0
0
5,3
*
p1
-
a0
0
1,3
*
a0
0
5,1
p0
=
2
*
3
-
2
*
1
1
=
4
;
a1
0
5,4
=
a0
0
5,4
*
p1
-
a0
0
1,4
*
a0
0
5,1
p0
=
1
*
3
-
0
*
1
1
=
3
;
a1
0
5,5
=
a0
0
5,5
*
p1
-
a0
0
1,5
*
a0
0
5,1
p0
=
4
*
3
-
1
*
1
1
=
11
;
説明を隠す
3
イテレーション 2
現在のピボット要素は、前の行列 (
A1
) の要素で、インデックスが
2
,
2
のものです:
p2
=
a1
0
2,2
=
11
;
前の行列 (
A1
) に基づいて次の行列 (
A2
) を計算します。
ピボット要素がある行は、次の行列に変更なく書き直されます。
ピボット要素自体を除いて、ピボット要素が配置されている列のすべての要素にゼロを書き込みます。
以前のすべてのピボット要素を
p2
に置き換えます。
初期行列
A2
を書き出し、求めたい要素を未知数としてマークする:
A2
=
11
0
0
0
0
0
11
0
0
0
x
-2
x
x
x
x
6
x
x
x
x
2
x
x
x
不明な要素を見つけるには、次の式を使用します:
a2
0
i,j
=
a1
0
i,j
*
p2
-
a1
0
2,j
*
a1
0
i,2
p1
;
ここで:
p1
は前のピボット要素です。
p2
は現在のピボット要素です。
a1
は、前のイテレーションで計算された前の行列の要素です。
a2
は、現在のイテレーションで計算された次の行列の要素です。
i
は行番号;
j
は列番号;
Ɐ(
i, j
)
∈ {1, 3, 4, 5} × {3, 4, 5}
A2
=
11
0
0
0
0
0
11
0
0
0
8
-2
41
15
14
-2
6
9
21
13
3
2
-8
18
41
a2
0
1,3
=
a1
0
1,3
*
p2
-
a1
0
2,3
*
a1
0
1,2
p1
=
2
*
11
-
-2
*
1
3
=
8
;
a2
0
1,4
=
a1
0
1,4
*
p2
-
a1
0
2,4
*
a1
0
1,2
p1
=
0
*
11
-
6
*
1
3
=
-2
;
a2
0
1,5
=
a1
0
1,5
*
p2
-
a1
0
2,5
*
a1
0
1,2
p1
=
1
*
11
-
2
*
1
3
=
3
;
a2
0
3,3
=
a1
0
3,3
*
p2
-
a1
0
2,3
*
a1
0
3,2
p1
=
11
*
11
-
-2
*
1
3
=
41
;
a2
0
3,4
=
a1
0
3,4
*
p2
-
a1
0
2,4
*
a1
0
3,2
p1
=
3
*
11
-
6
*
1
3
=
9
;
a2
0
3,5
=
a1
0
3,5
*
p2
-
a1
0
2,5
*
a1
0
3,2
p1
=
-2
*
11
-
2
*
1
3
=
-8
;
a2
0
4,3
=
a1
0
4,3
*
p2
-
a1
0
2,3
*
a1
0
4,2
p1
=
3
*
11
-
-2
*
6
3
=
15
;
a2
0
4,4
=
a1
0
4,4
*
p2
-
a1
0
2,4
*
a1
0
4,2
p1
=
9
*
11
-
6
*
6
3
=
21
;
a2
0
4,5
=
a1
0
4,5
*
p2
-
a1
0
2,5
*
a1
0
4,2
p1
=
6
*
11
-
2
*
6
3
=
18
;
a2
0
5,3
=
a1
0
5,3
*
p2
-
a1
0
2,3
*
a1
0
5,2
p1
=
4
*
11
-
-2
*
-1
3
=
14
;
a2
0
5,4
=
a1
0
5,4
*
p2
-
a1
0
2,4
*
a1
0
5,2
p1
=
3
*
11
-
6
*
-1
3
=
13
;
a2
0
5,5
=
a1
0
5,5
*
p2
-
a1
0
2,5
*
a1
0
5,2
p1
=
11
*
11
-
2
*
-1
3
=
41
;
説明を隠す
4
イテレーション 3
現在のピボット要素は、前の行列 (
A2
) の要素で、インデックスが
3
,
3
のものです:
p3
=
a2
0
3,3
=
41
;
前の行列 (
A2
) に基づいて次の行列 (
A3
) を計算します。
ピボット要素がある行は、次の行列に変更なく書き直されます。
ピボット要素自体を除いて、ピボット要素が配置されている列のすべての要素にゼロを書き込みます。
以前のすべてのピボット要素を
p3
に置き換えます。
初期行列
A3
を書き出し、求めたい要素を未知数としてマークする:
A3
=
41
0
0
0
0
0
41
0
0
0
0
0
41
0
0
x
x
9
x
x
x
x
-8
x
x
不明な要素を見つけるには、次の式を使用します:
a3
0
i,j
=
a2
0
i,j
*
p3
-
a2
0
3,j
*
a2
0
i,3
p2
;
ここで:
p2
は前のピボット要素です。
p3
は現在のピボット要素です。
a2
は、前のイテレーションで計算された前の行列の要素です。
a3
は、現在のイテレーションで計算された次の行列の要素です。
i
は行番号;
j
は列番号;
Ɐ(
i, j
)
∈ {1, 2, 4, 5} × {4, 5}
A3
=
41
0
0
0
0
0
41
0
0
0
0
0
41
0
0
-14
24
9
66
37
17
6
-8
78
163
a3
0
1,4
=
a2
0
1,4
*
p3
-
a2
0
3,4
*
a2
0
1,3
p2
=
-2
*
41
-
9
*
8
11
=
-14
;
a3
0
1,5
=
a2
0
1,5
*
p3
-
a2
0
3,5
*
a2
0
1,3
p2
=
3
*
41
-
-8
*
8
11
=
17
;
a3
0
2,4
=
a2
0
2,4
*
p3
-
a2
0
3,4
*
a2
0
2,3
p2
=
6
*
41
-
9
*
-2
11
=
24
;
a3
0
2,5
=
a2
0
2,5
*
p3
-
a2
0
3,5
*
a2
0
2,3
p2
=
2
*
41
-
-8
*
-2
11
=
6
;
a3
0
4,4
=
a2
0
4,4
*
p3
-
a2
0
3,4
*
a2
0
4,3
p2
=
21
*
41
-
9
*
15
11
=
66
;
a3
0
4,5
=
a2
0
4,5
*
p3
-
a2
0
3,5
*
a2
0
4,3
p2
=
18
*
41
-
-8
*
15
11
=
78
;
a3
0
5,4
=
a2
0
5,4
*
p3
-
a2
0
3,4
*
a2
0
5,3
p2
=
13
*
41
-
9
*
14
11
=
37
;
a3
0
5,5
=
a2
0
5,5
*
p3
-
a2
0
3,5
*
a2
0
5,3
p2
=
41
*
41
-
-8
*
14
11
=
163
;
説明を隠す
5
イテレーション 4
現在のピボット要素は、前の行列 (
A3
) の要素で、インデックスが
4
,
4
のものです:
p4
=
a3
0
4,4
=
66
;
前の行列 (
A3
) に基づいて次の行列 (
A4
) を計算します。
ピボット要素がある行は、次の行列に変更なく書き直されます。
ピボット要素自体を除いて、ピボット要素が配置されている列のすべての要素にゼロを書き込みます。
以前のすべてのピボット要素を
p4
に置き換えます。
初期行列
A4
を書き出し、求めたい要素を未知数としてマークする:
A4
=
66
0
0
0
0
0
66
0
0
0
0
0
66
0
0
0
0
0
66
0
x
x
x
78
x
不明な要素を見つけるには、次の式を使用します:
a4
0
i,j
=
a3
0
i,j
*
p4
-
a3
0
4,j
*
a3
0
i,4
p3
;
ここで:
p3
は前のピボット要素です。
p4
は現在のピボット要素です。
a3
は、前のイテレーションで計算された前の行列の要素です。
a4
は、現在のイテレーションで計算された次の行列の要素です。
i
は行番号;
j
は列番号;
Ɐ(
i, j
)
∈ {1, 2, 3, 5} × {5}
A4
=
66
0
0
0
0
0
66
0
0
0
0
0
66
0
0
0
0
0
66
0
54
-36
-30
78
192
a4
0
1,5
=
a3
0
1,5
*
p4
-
a3
0
4,5
*
a3
0
1,4
p3
=
17
*
66
-
78
*
-14
41
=
54
;
a4
0
2,5
=
a3
0
2,5
*
p4
-
a3
0
4,5
*
a3
0
2,4
p3
=
6
*
66
-
78
*
24
41
=
-36
;
a4
0
3,5
=
a3
0
3,5
*
p4
-
a3
0
4,5
*
a3
0
3,4
p3
=
-8
*
66
-
78
*
9
41
=
-30
;
a4
0
5,5
=
a3
0
5,5
*
p4
-
a3
0
4,5
*
a3
0
5,4
p3
=
163
*
66
-
78
*
37
41
=
192
;
説明を隠す
6
イテレーション 5
現在のピボット要素は、前の行列 (
A4
) の要素で、インデックスが
5
,
5
のものです:
p5
=
a4
0
5,5
=
192
;
前の行列 (
A4
) に基づいて次の行列 (
A5
) を計算します。
ピボット要素がある行は、次の行列に変更なく書き直されます。
ピボット要素自体を除いて、ピボット要素が配置されている列のすべての要素にゼロを書き込みます。
以前のすべてのピボット要素を
p5
に置き換えます。
初期行列
A5
を書き出し、求めたい要素を未知数としてマークする:
A5
=
192
0
0
0
0
0
192
0
0
0
0
0
192
0
0
0
0
0
192
0
0
0
0
0
192
ご覧のとおり、不明な要素はありません。これは、行列
A5
の計算がすでに完了していることを意味します。
7
行列式
det(
A
) =
A3
0
5,5
=
192
;
Answer
det(A)
det(
A
) =
192
;
サイズ5×5方法モンタンテ (Bareiss アルゴリズム)

  ソース