数値形式
解法コメント
説明なし
a
b
c
d
x
y
z
clear
i
Randomize
3131313131351515151515≈83137
モンタンテ法を用いた逆行列の求め方
Bareiss 形式の整数保存消去を拡大行列 [A|I] に適用します。各消去ステップは前のピボットで正確に除算されるため、中間値がすべて整数のままになります。完全に簡約された後、逆行列が右側に現れます。
モンタンテ(Bareiss)による逆行列 — 計算例(4×4)
初期行列
A
を書き出す:
A
=
4
1
0
1
1
5
1
0
0
1
4
1
1
0
1
3
行列
A
の逆行列を求めるには、同じサイズの単位行列を右側に足します。
その後、
モンタンテ (Bareiss アルゴリズム)
メソッドを使用して、左側の部分を単位行列にし、右側に行列
A
の逆行列を生成します。
展開行列 (行列
A
の右側に単位行列を追加) を作成:
4
1
0
1
1
5
1
0
0
1
4
1
1
0
1
3
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1
3
イテレーション 1A0
=
4
1
0
1
1
5
1
0
0
1
4
1
1
0
1
3
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1
最初のイテレーションでは、前のピボット要素は常に 1 に等しくなります:
p0
=
1
;
現在のピボット要素は、前の行列 (
A0
) の要素で、インデックスが
1
,
1
のものです:
p1
=
a0
0
1,1
=
4
;
前の行列 (
A0
) に基づいて次の行列 (
A1
) を計算します。
1)
ピボット要素がある行は、次の行列に変更なく書き直されます。2)
ピボット要素自体を除いて、ピボット要素が配置されている列のすべての要素にゼロを書き込みます。初期行列
A1
を書き出し、求めたい要素を未知数としてマークする:
A1
=
4
0
0
0
1
0
1
1
0
0
0
不明な要素を見つけるには、次の式を使用します:
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} × {2, 3, 4, 5, 6, 7, 8}
A1
=
4
0
0
0
1
19
4
-1
0
4
16
4
1
-1
4
11
1
-1
0
-1
0
4
0
0
0
0
4
0
0
0
0
4
4
イテレーション 2現在のピボット要素は、前の行列 (
A1
) の要素で、インデックスが
2
,
2
のものです:
p2
=
a1
0
2,2
=
19
;
前の行列 (
A1
) に基づいて次の行列 (
A2
) を計算します。
1)
ピボット要素がある行は、次の行列に変更なく書き直されます。2)
ピボット要素自体を除いて、ピボット要素が配置されている列のすべての要素にゼロを書き込みます。3)
以前のすべてのピボット要素を p2 に置き換えます。初期行列
A2
を書き出し、求めたい要素を未知数としてマークする:
A2
=
19
0
0
0
0
19
0
0
×××
4
×××
-1
×××
-1
×××
4
×××
0
×××
0
不明な要素を見つけるには、次の式を使用します:
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} × {3, 4, 5, 6, 7, 8}
A2
=
19
0
0
0
0
19
0
0
-1
4
72
20
5
-1
20
52
5
-1
1
-5
-1
4
-4
1
0
0
19
0
0
0
0
19
5
イテレーション 3現在のピボット要素は、前の行列 (
A2
) の要素で、インデックスが
3
,
3
のものです:
p3
=
a2
0
3,3
=
72
;
前の行列 (
A2
) に基づいて次の行列 (
A3
) を計算します。
1)
ピボット要素がある行は、次の行列に変更なく書き直されます。2)
ピボット要素自体を除いて、ピボット要素が配置されている列のすべての要素にゼロを書き込みます。3)
以前のすべてのピボット要素を p3 に置き換えます。初期行列
A3
を書き出し、求めたい要素を未知数としてマークする:
A3
=
72
0
0
0
0
72
0
0
0
0
72
0
×××
20
×××
1
×××
-4
×××
19
×××
0
不明な要素を見つけるには、次の式を使用します:
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} × {4, 5, 6, 7, 8}
A3
=
72
0
0
0
0
72
0
0
0
0
72
0
20
-8
20
176
19
-4
1
-20
-4
16
-4
8
1
-4
19
-20
0
0
0
72
6
イテレーション 4現在のピボット要素は、前の行列 (
A3
) の要素で、インデックスが
4
,
4
のものです:
p4
=
a3
0
4,4
=
176
;
前の行列 (
A3
) に基づいて次の行列 (
A4
) を計算します。
1)
ピボット要素がある行は、次の行列に変更なく書き直されます。2)
ピボット要素自体を除いて、ピボット要素が配置されている列のすべての要素にゼロを書き込みます。3)
以前のすべてのピボット要素を p4 に置き換えます。初期行列
A4
を書き出し、求めたい要素を未知数としてマークする:
A4
=
176
0
0
0
0
176
0
0
0
0
176
0
0
0
0
176
×××
-20
×××
8
×××
-20
×××
72
不明な要素を見つけるには、次の式を使用します:
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, 6, 7, 8}
A4
=
176
0
0
0
0
176
0
0
0
0
176
0
0
0
0
176
52
-12
8
-20
-12
40
-12
8
8
-12
52
-20
-20
8
-20
72
7
行列式の逆行列行列の非ゼロ要素すべてを
176
で割ります。
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1
3
10
-
7
100
1
20
-
11
100
-
7
100
23
100
-
7
100
1
20
1
20
-
7
100
3
10
-
11
100
-
11
100
1
20
-
11
100
41
100
Answer
B = A⁻¹3
10
-
7
100
1
20
-
11
100
-
7
100
23
100
-
7
100
1
20
1
20
-
7
100
3
10
-
11
100
-
11
100
1
20
-
11
100
41
100
サイズ4×4方法モンタンテ (Bareiss アルゴリズム)