小行列・小行列式・余因子・余因子行列など
エクセルやグーグルドライブやリブレオフィスで小行列式・余因子・余因子行列などを計算する。
(範囲の名前等は配列・ベクトル・行列(4)と同様)
小行列式や余因子行列の例(5x5行列から1行1列を取り除いて4x4行列を求めた)
エクセル(2019)
小行列式
D43= {=(MDETERM(MMULT(IF(COLUMN(四五)=ROW(四五)+IF(ROW(四五)>ROW(作業シート!A1)-1,1,0),1,0),MMULT($D$6:$H$10,IF(ROW(五四)=COLUMN(五四)+IF(COLUMN(五四)>COLUMN(作業シート!A1)-1,1,0),1,0)))))}
D43:H47= D43をコピペ
余因子行列の転置(正確に言うと未転置 余因子を並べただけの行列)
D49= {=(MDETERM(MMULT(IF(COLUMN(四五)=ROW(四五)+IF(ROW(四五)>ROW(作業シート!A1)-1,1,0),1,0),MMULT($D$6:$H$10,IF(ROW(五四)=COLUMN(五四)+IF(COLUMN(五四)>COLUMN(作業シート!A1)-1,1,0),1,0))))*-1^(ROW(作業シート!A1)+COLUMN(作業シート!A1)))}
D49:H53= D49のコピペ
余因子行列
D61= {=MDETERM(MMULT(IF(COLUMN(四五)=ROW(四五)+IF(ROW(四五)>COLUMN(作業シート!A1)-1,1,0),1,0),MMULT($D$6:$H$10,IF(ROW(五四)=COLUMN(五四)+IF(COLUMN(五四)>ROW(作業シート!A1)-1,1,0),1,0))))*-1^(ROW(作業シート!A1)+COLUMN(作業シート!A1))}
D61:H65= D61をコピペ
検算(元行列と余因子行列の積)
D68:H72= {=MMULT(D6:H10,J68:N72)}
行列式(2つの方法)
J63= {=SUMPRODUCT(D6:D10,TRANSPOSE(J68:N68))}
J65= =MMULT(J68:N68,D6:D10) (非配列数式)
余因子行列(名前定義不使用)
J68= =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))
J68:N72= J68をコピペ
グーグルドライブのスプレッドシート(20250320現在)
小行列式
D43= =(mdeterm(mmult(arrayformula(IF(column(四五)=row(四五)+if(row(四五)>ROW('作業シート'!A1)-1,1,0),1,0)),mmult($D$6:$H$10,arrayformula(IF(row(五四)=column(五四)+if(column(五四)>column('作業シート'!A1)-1,1,0),1,0))))))
D43:H47= D43をコピペ
余因子行列の転置(正確に言うと未転置 余因子を並べただけの行列)
D49= =(mdeterm(mmult(arrayformula(IF(column(四五)=row(四五)+if(row(四五)>ROW('作業シート'!A1)-1,1,0),1,0)),mmult($D$6:$H$10,arrayformula(IF(row(五四)=column(五四)+if(column(五四)>column('作業シート'!A1)-1,1,0),1,0)))))*-1^(row('作業シート'!A1)+column('作業シート'!A1)))
D49:H53= D49のコピペ
余因子行列
D61= =ArrayFormula(mdeterm(mmult(IF(column(四五)=row(四五)+if(row(四五)>column('作業シート'!A1)-1,1,0),1,0),mmult($D$6:$H$10,IF(row(五四)=column(五四)+if(column(五四)>ROW('作業シート'!A1)-1,1,0),1,0))))*-1^(row('作業シート'!A1)+column('作業シート'!A1)))
D61:H65= D61をコピペ
検算(元行列と余因子行列の積)
D68:H72= =ArrayFormula(mmult(D6:H10,J68:N72))
行列式(2つの方法)
J63= =sumproduct(D6:D10,transpose(J68:N68)) (非配列数式)
J65= =mmult(J68:N68,D6:D10) (非配列数式)
余因子行列(名前定義不使用)
J68= =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)))
J68:N72= J68をコピペ
リブレオフィス(24.8ポータブル)のカルク
小行列式
D43= =MDETERM(MMULT(IF(COLUMN(四五)=ROW(四五)+IF(ROW(四五)>ROW($作業シート.A1)-1,1,0),1,0),MMULT($D$6:$H$10,IF(ROW(五四)=COLUMN(五四)+IF(COLUMN(五四)>COLUMN($作業シート.A1)-1,1,0),1,0)))) (非配列数式)
D43:H47= D43をコピペ
余因子行列の転置(正確に言うと未転置 余因子を並べただけの行列)
D49= =MDETERM(MMULT(IF(COLUMN(四五)=ROW(四五)+IF(ROW(四五)>ROW($作業シート.A1)-1,1,0),1,0),MMULT($D$6:$H$10,IF(ROW(五四)=COLUMN(五四)+IF(COLUMN(五四)>COLUMN($作業シート.A1)-1,1,0),1,0))))*-1^(ROW($作業シート.A1)+COLUMN($作業シート.A1)) (非配列数式)
D49:H53= D49のコピペ
余因子行列
D61= =MDETERM(MMULT(IF(COLUMN(四五)=ROW(四五)+IF(ROW(四五)>COLUMN($作業シート.A1)-1,1,0),1,0),MMULT($D$6:$H$10,IF(ROW(五四)=COLUMN(五四)+IF(COLUMN(五四)>ROW($作業シート.A1)-1,1,0),1,0))))*-1^(ROW($作業シート.A1)+COLUMN($作業シート.A1)) (非配列数式)
D61:H65= D61をコピペ
検算(元行列と余因子行列の積)
D68:H72= {=MMULT(D6:H10,J68:N72)}
行列式(2つの方法)
J63= =SUMPRODUCT(D6:D10,TRANSPOSE(J68:N68)) (非配列数式)
J65= {=MMULT(J68:N68,D6:D10)} (自動配列数式)
余因子行列(名前定義不使用)
J68= =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)) (非配列数式)
J68:N72= J68をコピペ
余談1 r070404追記
「配列・ベクトル・行列(4)」と「配列・ベクトル・行列(5)」の主旨は
「エクセル等で小行列式を計算するのは難易度が高いので応用が利かない。別の手段を模索すべき。しかし一応できることを示してみた。」
余談2 r070504
セルや範囲と数式等の間にある半角スペースを全て全角スペースに変えた。