誤差のない音律データを求めて。
音律計算やその他について、気になった事をまったりと書いていこうと思います。
(元ブログ(goo)からの引越し。電波度を減らそうと試みた事もあるがちょっと難しそうだ。)

配列・ベクトル・行列(11)

複素数行列の行列式と余因子行列と逆行列を求める数式の作り方 その2

エクセル、グーグルドライブ、リブレオフィスにて行列式と余因子行列と逆行列をmdeterm関数やminverse関数に頼らずに組み立ててみる。(この頁でやりたい事が書いてないと分かりにくいと思ったので前頁から持ってきた。 r070517追記)

 

前の配列・ベクトル・行列(10)の余談8にて「4.尾固定小行列循環シフト型(仮)」の順列に基づいた行列式の作り方を模索してみた。それよりも因数分解表示はそれほど悪くはないと思っていたが、展開した形がこれほどまでにシンプルで最適だとは予想外だった。ネストが全然増えないのが素晴らしい。四則演算に演算子がほぼ使えない状況だから演算をまとめた方が綺麗なのかも。

 

まずは展開した行列式 (複素数版を修正して実数版も作ってみた。実数版は1行の文字数増加率が高いので1行にしたかったものが1行半になってしまったり。 r070506)(改行を複素数の数式に近い形に修正した。 r070517)

 

2x2 元行列= AD16:AE17

実 AC23= =AD16*AE17-AD17*AE16

複 AC23= =IMSUM(IMPRODUCT(+1,AD16,AE17),IMPRODUCT(-1,AD17,AE16))

 

3x3 元行列= AD16:AF18

実 AC25=
=AD16*AE17*AF18-AD17*AE16*AF18
+AD18*AE16*AF17-AD16*AE18*AF17
+AD17*AE18*AF16-AD18*AE17*AF16

複 AC25= =IMSUM(
IMPRODUCT(+1,AD16,AE17,AF18),IMPRODUCT(-1,AD17,AE16,AF18),
IMPRODUCT(+1,AD18,AE16,AF17),IMPRODUCT(-1,AD16,AE18,AF17),
IMPRODUCT(+1,AD17,AE18,AF16),IMPRODUCT(-1,AD18,AE17,AF16))

 

4x4 元行列= AD16:AG19

実 AC27=
=AD16*AE17*AF18*AG19-AD17*AE16*AF18*AG19
+AD18*AE16*AF17*AG19-AD16*AE18*AF17*AG19
+AD17*AE18*AF16*AG19-AD18*AE17*AF16*AG19
-AD19*AE16*AF17*AG18+AD16*AE19*AF17*AG18
-AD17*AE19*AF16*AG18+AD19*AE17*AF16*AG18
-AD16*AE17*AF19*AG18+AD17*AE16*AF19*AG18
+AD18*AE19*AF16*AG17-AD19*AE18*AF16*AG17
+AD16*AE18*AF19*AG17-AD18*AE16*AF19*AG17
+AD19*AE16*AF18*AG17-AD16*AE19*AF18*AG17
-AD17*AE18*AF19*AG16+AD18*AE17*AF19*AG16
-AD19*AE17*AF18*AG16+AD17*AE19*AF18*AG16
-AD18*AE19*AF17*AG16+AD19*AE18*AF17*AG16

複 AC27= =IMSUM(
IMPRODUCT(+1,AD16,AE17,AF18,AG19),IMPRODUCT(-1,AD17,AE16,AF18,AG19),
IMPRODUCT(+1,AD18,AE16,AF17,AG19),IMPRODUCT(-1,AD16,AE18,AF17,AG19),
IMPRODUCT(+1,AD17,AE18,AF16,AG19),IMPRODUCT(-1,AD18,AE17,AF16,AG19),
IMPRODUCT(-1,AD19,AE16,AF17,AG18),IMPRODUCT(+1,AD16,AE19,AF17,AG18),
IMPRODUCT(-1,AD17,AE19,AF16,AG18),IMPRODUCT(+1,AD19,AE17,AF16,AG18),
IMPRODUCT(-1,AD16,AE17,AF19,AG18),IMPRODUCT(+1,AD17,AE16,AF19,AG18),
IMPRODUCT(+1,AD18,AE19,AF16,AG17),IMPRODUCT(-1,AD19,AE18,AF16,AG17),
IMPRODUCT(+1,AD16,AE18,AF19,AG17),IMPRODUCT(-1,AD18,AE16,AF19,AG17),
IMPRODUCT(+1,AD19,AE16,AF18,AG17),IMPRODUCT(-1,AD16,AE19,AF18,AG17),
IMPRODUCT(-1,AD17,AE18,AF19,AG16),IMPRODUCT(+1,AD18,AE17,AF19,AG16),
IMPRODUCT(-1,AD19,AE17,AF18,AG16),IMPRODUCT(+1,AD17,AE19,AF18,AG16),
IMPRODUCT(-1,AD18,AE19,AF17,AG16),IMPRODUCT(+1,AD19,AE18,AF17,AG16))

 

5x5 元行列= AD16:AH20

実 AC29=
=AD16*AE17*AF18*AG19*AH20-AD17*AE16*AF18*AG19*AH20
+AD18*AE16*AF17*AG19*AH20-AD16*AE18*AF17*AG19*AH20
+AD17*AE18*AF16*AG19*AH20-AD18*AE17*AF16*AG19*AH20
-AD19*AE16*AF17*AG18*AH20+AD16*AE19*AF17*AG18*AH20
-AD17*AE19*AF16*AG18*AH20+AD19*AE17*AF16*AG18*AH20
-AD16*AE17*AF19*AG18*AH20+AD17*AE16*AF19*AG18*AH20
+AD18*AE19*AF16*AG17*AH20-AD19*AE18*AF16*AG17*AH20
+AD16*AE18*AF19*AG17*AH20-AD18*AE16*AF19*AG17*AH20
+AD19*AE16*AF18*AG17*AH20-AD16*AE19*AF18*AG17*AH20
-AD17*AE18*AF19*AG16*AH20+AD18*AE17*AF19*AG16*AH20
-AD19*AE17*AF18*AG16*AH20+AD17*AE19*AF18*AG16*AH20
-AD18*AE19*AF17*AG16*AH20+AD19*AE18*AF17*AG16*AH20
+AD20*AE16*AF17*AG18*AH19-AD16*AE20*AF17*AG18*AH19
+AD17*AE20*AF16*AG18*AH19-AD20*AE17*AF16*AG18*AH19
+AD16*AE17*AF20*AG18*AH19-AD17*AE16*AF20*AG18*AH19
-AD18*AE20*AF16*AG17*AH19+AD20*AE18*AF16*AG17*AH19
-AD16*AE18*AF20*AG17*AH19+AD18*AE16*AF20*AG17*AH19
-AD20*AE16*AF18*AG17*AH19+AD16*AE20*AF18*AG17*AH19
+AD17*AE18*AF20*AG16*AH19-AD18*AE17*AF20*AG16*AH19
+AD20*AE17*AF18*AG16*AH19-AD17*AE20*AF18*AG16*AH19
+AD18*AE20*AF17*AG16*AH19-AD20*AE18*AF17*AG16*AH19
-AD16*AE17*AF18*AG20*AH19+AD17*AE16*AF18*AG20*AH19
-AD18*AE16*AF17*AG20*AH19+AD16*AE18*AF17*AG20*AH19
-AD17*AE18*AF16*AG20*AH19+AD18*AE17*AF16*AG20*AH19
+AD19*AE20*AF16*AG17*AH18-AD20*AE19*AF16*AG17*AH18
+AD16*AE19*AF20*AG17*AH18-AD19*AE16*AF20*AG17*AH18
+AD20*AE16*AF19*AG17*AH18-AD16*AE20*AF19*AG17*AH18
-AD17*AE19*AF20*AG16*AH18+AD19*AE17*AF20*AG16*AH18
-AD20*AE17*AF19*AG16*AH18+AD17*AE20*AF19*AG16*AH18
-AD19*AE20*AF17*AG16*AH18+AD20*AE19*AF17*AG16*AH18
+AD16*AE17*AF19*AG20*AH18-AD17*AE16*AF19*AG20*AH18
+AD19*AE16*AF17*AG20*AH18-AD16*AE19*AF17*AG20*AH18
+AD17*AE19*AF16*AG20*AH18-AD19*AE17*AF16*AG20*AH18
-AD20*AE16*AF17*AG19*AH18+AD16*AE20*AF17*AG19*AH18
-AD17*AE20*AF16*AG19*AH18+AD20*AE17*AF16*AG19*AH18
-AD16*AE17*AF20*AG19*AH18+AD17*AE16*AF20*AG19*AH18
+AD18*AE19*AF20*AG16*AH17-AD19*AE18*AF20*AG16*AH17
+AD20*AE18*AF19*AG16*AH17-AD18*AE20*AF19*AG16*AH17
+AD19*AE20*AF18*AG16*AH17-AD20*AE19*AF18*AG16*AH17
-AD16*AE18*AF19*AG20*AH17+AD18*AE16*AF19*AG20*AH17
-AD19*AE16*AF18*AG20*AH17+AD16*AE19*AF18*AG20*AH17
-AD18*AE19*AF16*AG20*AH17+AD19*AE18*AF16*AG20*AH17
+AD20*AE16*AF18*AG19*AH17-AD16*AE20*AF18*AG19*AH17
+AD18*AE20*AF16*AG19*AH17-AD20*AE18*AF16*AG19*AH17
+AD16*AE18*AF20*AG19*AH17-AD18*AE16*AF20*AG19*AH17
-AD19*AE20*AF16*AG18*AH17+AD20*AE19*AF16*AG18*AH17
-AD16*AE19*AF20*AG18*AH17+AD19*AE16*AF20*AG18*AH17
-AD20*AE16*AF19*AG18*AH17+AD16*AE20*AF19*AG18*AH17
+AD17*AE18*AF19*AG20*AH16-AD18*AE17*AF19*AG20*AH16
+AD19*AE17*AF18*AG20*AH16-AD17*AE19*AF18*AG20*AH16
+AD18*AE19*AF17*AG20*AH16-AD19*AE18*AF17*AG20*AH16
-AD20*AE17*AF18*AG19*AH16+AD17*AE20*AF18*AG19*AH16
-AD18*AE20*AF17*AG19*AH16+AD20*AE18*AF17*AG19*AH16
-AD17*AE18*AF20*AG19*AH16+AD18*AE17*AF20*AG19*AH16
+AD19*AE20*AF17*AG18*AH16-AD20*AE19*AF17*AG18*AH16
+AD17*AE19*AF20*AG18*AH16-AD19*AE17*AF20*AG18*AH16
+AD20*AE17*AF19*AG18*AH16-AD17*AE20*AF19*AG18*AH16
-AD18*AE19*AF20*AG17*AH16+AD19*AE18*AF20*AG17*AH16
-AD20*AE18*AF19*AG17*AH16+AD18*AE20*AF19*AG17*AH16
-AD19*AE20*AF18*AG17*AH16+AD20*AE19*AF18*AG17*AH16

 

複 AC29= =IMSUM(
IMPRODUCT(+1,AD16,AE17,AF18,AG19,AH20),IMPRODUCT(-1,AD17,AE16,AF18,AG19,AH20),
IMPRODUCT(+1,AD18,AE16,AF17,AG19,AH20),IMPRODUCT(-1,AD16,AE18,AF17,AG19,AH20),
IMPRODUCT(+1,AD17,AE18,AF16,AG19,AH20),IMPRODUCT(-1,AD18,AE17,AF16,AG19,AH20),
IMPRODUCT(-1,AD19,AE16,AF17,AG18,AH20),IMPRODUCT(+1,AD16,AE19,AF17,AG18,AH20),
IMPRODUCT(-1,AD17,AE19,AF16,AG18,AH20),IMPRODUCT(+1,AD19,AE17,AF16,AG18,AH20),
IMPRODUCT(-1,AD16,AE17,AF19,AG18,AH20),IMPRODUCT(+1,AD17,AE16,AF19,AG18,AH20),
IMPRODUCT(+1,AD18,AE19,AF16,AG17,AH20),IMPRODUCT(-1,AD19,AE18,AF16,AG17,AH20),
IMPRODUCT(+1,AD16,AE18,AF19,AG17,AH20),IMPRODUCT(-1,AD18,AE16,AF19,AG17,AH20),
IMPRODUCT(+1,AD19,AE16,AF18,AG17,AH20),IMPRODUCT(-1,AD16,AE19,AF18,AG17,AH20),
IMPRODUCT(-1,AD17,AE18,AF19,AG16,AH20),IMPRODUCT(+1,AD18,AE17,AF19,AG16,AH20),
IMPRODUCT(-1,AD19,AE17,AF18,AG16,AH20),IMPRODUCT(+1,AD17,AE19,AF18,AG16,AH20),
IMPRODUCT(-1,AD18,AE19,AF17,AG16,AH20),IMPRODUCT(+1,AD19,AE18,AF17,AG16,AH20),
IMPRODUCT(+1,AD20,AE16,AF17,AG18,AH19),IMPRODUCT(-1,AD16,AE20,AF17,AG18,AH19),
IMPRODUCT(+1,AD17,AE20,AF16,AG18,AH19),IMPRODUCT(-1,AD20,AE17,AF16,AG18,AH19),
IMPRODUCT(+1,AD16,AE17,AF20,AG18,AH19),IMPRODUCT(-1,AD17,AE16,AF20,AG18,AH19),
IMPRODUCT(-1,AD18,AE20,AF16,AG17,AH19),IMPRODUCT(+1,AD20,AE18,AF16,AG17,AH19),
IMPRODUCT(-1,AD16,AE18,AF20,AG17,AH19),IMPRODUCT(+1,AD18,AE16,AF20,AG17,AH19),
IMPRODUCT(-1,AD20,AE16,AF18,AG17,AH19),IMPRODUCT(+1,AD16,AE20,AF18,AG17,AH19),
IMPRODUCT(+1,AD17,AE18,AF20,AG16,AH19),IMPRODUCT(-1,AD18,AE17,AF20,AG16,AH19),
IMPRODUCT(+1,AD20,AE17,AF18,AG16,AH19),IMPRODUCT(-1,AD17,AE20,AF18,AG16,AH19),
IMPRODUCT(+1,AD18,AE20,AF17,AG16,AH19),IMPRODUCT(-1,AD20,AE18,AF17,AG16,AH19),
IMPRODUCT(-1,AD16,AE17,AF18,AG20,AH19),IMPRODUCT(+1,AD17,AE16,AF18,AG20,AH19),
IMPRODUCT(-1,AD18,AE16,AF17,AG20,AH19),IMPRODUCT(+1,AD16,AE18,AF17,AG20,AH19),
IMPRODUCT(-1,AD17,AE18,AF16,AG20,AH19),IMPRODUCT(+1,AD18,AE17,AF16,AG20,AH19),
IMPRODUCT(+1,AD19,AE20,AF16,AG17,AH18),IMPRODUCT(-1,AD20,AE19,AF16,AG17,AH18),
IMPRODUCT(+1,AD16,AE19,AF20,AG17,AH18),IMPRODUCT(-1,AD19,AE16,AF20,AG17,AH18),
IMPRODUCT(+1,AD20,AE16,AF19,AG17,AH18),IMPRODUCT(-1,AD16,AE20,AF19,AG17,AH18),
IMPRODUCT(-1,AD17,AE19,AF20,AG16,AH18),IMPRODUCT(+1,AD19,AE17,AF20,AG16,AH18),
IMPRODUCT(-1,AD20,AE17,AF19,AG16,AH18),IMPRODUCT(+1,AD17,AE20,AF19,AG16,AH18),
IMPRODUCT(-1,AD19,AE20,AF17,AG16,AH18),IMPRODUCT(+1,AD20,AE19,AF17,AG16,AH18),
IMPRODUCT(+1,AD16,AE17,AF19,AG20,AH18),IMPRODUCT(-1,AD17,AE16,AF19,AG20,AH18),
IMPRODUCT(+1,AD19,AE16,AF17,AG20,AH18),IMPRODUCT(-1,AD16,AE19,AF17,AG20,AH18),
IMPRODUCT(+1,AD17,AE19,AF16,AG20,AH18),IMPRODUCT(-1,AD19,AE17,AF16,AG20,AH18),
IMPRODUCT(-1,AD20,AE16,AF17,AG19,AH18),IMPRODUCT(+1,AD16,AE20,AF17,AG19,AH18),
IMPRODUCT(-1,AD17,AE20,AF16,AG19,AH18),IMPRODUCT(+1,AD20,AE17,AF16,AG19,AH18),
IMPRODUCT(-1,AD16,AE17,AF20,AG19,AH18),IMPRODUCT(+1,AD17,AE16,AF20,AG19,AH18),
IMPRODUCT(+1,AD18,AE19,AF20,AG16,AH17),IMPRODUCT(-1,AD19,AE18,AF20,AG16,AH17),
IMPRODUCT(+1,AD20,AE18,AF19,AG16,AH17),IMPRODUCT(-1,AD18,AE20,AF19,AG16,AH17),
IMPRODUCT(+1,AD19,AE20,AF18,AG16,AH17),IMPRODUCT(-1,AD20,AE19,AF18,AG16,AH17),
IMPRODUCT(-1,AD16,AE18,AF19,AG20,AH17),IMPRODUCT(+1,AD18,AE16,AF19,AG20,AH17),
IMPRODUCT(-1,AD19,AE16,AF18,AG20,AH17),IMPRODUCT(+1,AD16,AE19,AF18,AG20,AH17),
IMPRODUCT(-1,AD18,AE19,AF16,AG20,AH17),IMPRODUCT(+1,AD19,AE18,AF16,AG20,AH17),
IMPRODUCT(+1,AD20,AE16,AF18,AG19,AH17),IMPRODUCT(-1,AD16,AE20,AF18,AG19,AH17),
IMPRODUCT(+1,AD18,AE20,AF16,AG19,AH17),IMPRODUCT(-1,AD20,AE18,AF16,AG19,AH17),
IMPRODUCT(+1,AD16,AE18,AF20,AG19,AH17),IMPRODUCT(-1,AD18,AE16,AF20,AG19,AH17),
IMPRODUCT(-1,AD19,AE20,AF16,AG18,AH17),IMPRODUCT(+1,AD20,AE19,AF16,AG18,AH17),
IMPRODUCT(-1,AD16,AE19,AF20,AG18,AH17),IMPRODUCT(+1,AD19,AE16,AF20,AG18,AH17),
IMPRODUCT(-1,AD20,AE16,AF19,AG18,AH17),IMPRODUCT(+1,AD16,AE20,AF19,AG18,AH17),
IMPRODUCT(+1,AD17,AE18,AF19,AG20,AH16),IMPRODUCT(-1,AD18,AE17,AF19,AG20,AH16),
IMPRODUCT(+1,AD19,AE17,AF18,AG20,AH16),IMPRODUCT(-1,AD17,AE19,AF18,AG20,AH16),
IMPRODUCT(+1,AD18,AE19,AF17,AG20,AH16),IMPRODUCT(-1,AD19,AE18,AF17,AG20,AH16),
IMPRODUCT(-1,AD20,AE17,AF18,AG19,AH16),IMPRODUCT(+1,AD17,AE20,AF18,AG19,AH16),
IMPRODUCT(-1,AD18,AE20,AF17,AG19,AH16),IMPRODUCT(+1,AD20,AE18,AF17,AG19,AH16),
IMPRODUCT(-1,AD17,AE18,AF20,AG19,AH16),IMPRODUCT(+1,AD18,AE17,AF20,AG19,AH16),
IMPRODUCT(+1,AD19,AE20,AF17,AG18,AH16),IMPRODUCT(-1,AD20,AE19,AF17,AG18,AH16),
IMPRODUCT(+1,AD17,AE19,AF20,AG18,AH16),IMPRODUCT(-1,AD19,AE17,AF20,AG18,AH16),
IMPRODUCT(+1,AD20,AE17,AF19,AG18,AH16),IMPRODUCT(-1,AD17,AE20,AF19,AG18,AH16),
IMPRODUCT(-1,AD18,AE19,AF20,AG17,AH16),IMPRODUCT(+1,AD19,AE18,AF20,AG17,AH16),
IMPRODUCT(-1,AD20,AE18,AF19,AG17,AH16),IMPRODUCT(+1,AD18,AE20,AF19,AG17,AH16),
IMPRODUCT(-1,AD19,AE20,AF18,AG17,AH16),IMPRODUCT(+1,AD20,AE19,AF18,AG17,AH16))

 

6x6以降は省略

 

2x2

各項目についてはほぼ前と同じだが違う点もある。

 元行列の起点をAC15からAD16に変更。

 行列式は元行列の1列目の真下ではなくその一つ左側。

 sag1は元行列と小行列式はみ出しシフト(仮)の1列目ではなく最後の列(最右列)同士の積。作業セルの取り込みも下から順に。

 imsub関数は使わなくなった。

 罫線の囲みが揃っているので行挿入列挿入がしやすくなったか。

 展開作業では検索=「),」置換=「,追加でかけるセル),」等も駆使して何とか乗り切った。

 検索=「+」置換=「_」、検索=「-」置換=「+」、検索=「_」置換=「-」により「improduct(-1,~)」を減らしたり。

 

逆行列の分母 (ここでは省略したが約分作業が別途必要だ。)

 AM22= =TEXT(IMABS(AC23)^2,"#,##0") (カンマ区切りテキストにしてみた)

 

行列式の共役複素数

 AM24= =IMCONJUGATE(AC23)

 

逆行列の分子

 AM19= =IMPRODUCT(AJ19,$AM$24)

 AM19:AN20= AM19をコピペ

 

検算2

 AM16= =IMSUM(IMPRODUCT($AD16,AM$19),IMPRODUCT($AE16,AM$20))

 AM16:AN17= AM16をコピペ

 

3x3

 

7x7

 

余談1

 リブレオフィスの6x6の行列式では作業セルが2つから3つに増えてしまった。リブレオフィスの違うバージョンを使ったからかも知れないが。要調査。