2024年4月28日日曜日

行列式・余因子行列・逆行列の計算(1)

目標:mdeterm関数やminverse関数を使わずに行列式や逆行列を求める。(でも実は求めるのは行列式と余因子行列だけ。逆行列=余因子行列/行列式なので充分と考える。)


今回は小行列式(小行列の行列式)を使って余因子行列(5x5)を計算してみる。 

エクセル等の表計算ソフトで小行列を計算するのは大変ではあるができなくはない事を示すのが今回の目的。4x4の行列式をmdeterm関数で求めているので不完全版でもある。

D6:H10 =元行列A

C5 =mdeterm(D6:H10) (元行列Aの行列式)

C5:AG35 =小行列を求める作業セル (表示は一部)

J62 =ArrayFormula(mdeterm(mmult(IF(column($A$1:$E$4)=row($A$1:$E$4)+if(row($A$1:$E$4)>column(A1)-1,1,0),1,0),mmult($D$6:$H$10,IF(row($A$1:$D$5)=column($A$1:$D$5)+if(column($A$1:$D$5)>ROW(A1)-1,1,0),1,0))))*-1^(row(A1)+column(A1))) (上の作業セルは不使用 転置&符号調整済)

J62:N66 =J62をコピペ (元行列Aの余因子行列)

I62 =sumproduct(D6:D10,transpose(J62:N62)) (元行列Aの行列式 確認用)

I63 =mmult(J62:N62,D6:D10) (元行列Aの行列式 確認用)

D62:H66 =ArrayFormula(mmult(D6:H10,J62:N66)) (検算 単位行列*行列式ならばok)

BCDEFGHIJKLMNOPQRS
51912
6A12-22000001000
70-111-110000000
800-20-101000100
901-21000100010
100-2-21100010001
11A_11A_21
12101000A_11-111-1011-1
13001000-20-10-20-1
14000101-2100-210
1500001-2-2110-211
16
17210000A_122-2201-220
18001000-20-10-20-1
19000101-2100-210
2000001-2-2110-211
21
22310000A_132-2201-220
2301000-111-1011-1
24000101-2100-210
2500001-2-2110-211
26
27410000A_142-2201-220
2801000-111-1011-1
29001000-20-10-20-1
3000001-2-2110-211
31
32510000A_152-2201-220
3301000-111-1011-1
34001000-20-10-20-1
35000101-2100-210

BCDEFGHIJKLMN
621900001919-610-364
63019000190-2-37-5
6400190003-5-1-2
6500019008-7101
660000190-6-924
67

2024.04.28 16:32公開 単純ミスなどは適宜修正済&修正予定