正則行列、逆行列を複雑な行列から求める例

今回は、正則行列の逆行列を複雑な実例を元に算出したいと思います。

4×4行列も3×3行列でも計算方法は変わらないので、簡単な3×3行列を使って説明しようと思います。

今回は、コンピューターで計算した結果から小数点を切り捨てて使用していますので、四則演算の計算結果に多少誤差があります。

まずは、計算元となるマトリックスを算出しましょう。


Z軸を45度回転させるマトリックス。


Y軸を110度回転させるマトリックス。


各座標を10倍へ拡大するマトリックス。


3つのマトリックスを掛け合わせた変換元の行列です。

次は、正則行列の逆行列を算出したいと思います。


掛け合わせたマトリックスから、逆行列を算出したいと思います。
まず、1行目の1列目を1にするには、-2.4184で変換元の行列、そして逆行列の1行目を割ります。
-2.4184÷(-2.4184)=1.0
7.0710÷(-2.4184)=-2.9238
-6.6446÷(-2.4184)=2.7474
1.0÷(-2.4184)=-0.4134
0.0÷(-2.4184)=0.0
0.0÷(-2.4184)=0.0


すると、図の様なマトリックスになります。
次は、2行目と3行目の1列目をゼロにします。

2行目1列目の2.4184を1行目に掛け合わせます。
1.0000×2.4184, -2.9238×2.4184, 2.7474×2.4184, -0.4134×2.4184, 0.0×2.4184, 0.0×2.4184
=2.4184, -7.0709, 6.6443, -1.0, 0.0, 0.0

求めた数で、2行目を引きます。
2.4184-2.4184, 7.0710-(-7.0709), 6.6446-6.6443, 0.0-1.0, 1.0-0.0, 0.0-0.0
=0.0, 14.1421, 0.0, 1.0, 1.0, 0.0

3行目1列目の9.3969を1行目に掛け合わせます。
1.0000×9.3969, -2.9238×9.3969, 2.7474×9.3969, -0.4134×9.3969, 0.0×9.3969, 0.0×9.3969
=9.3969, -27.4746, 25.8170, -3.8846, 0.0, 0.0

求めた数で、2行目を引きます。
9.3969-9.3969, 0.0-(-27.4746), -3.4202-25.8170, 0.0-(-3.8846), 0.0-0.0, 1.0-0.0
=0.0, 27.4747, -29.2380, 3.8855, 0.0, 1.0


すると、図の様なマトリックスになります。

次は、2行目の2列目を1にしなければならないので、14.1421で変換元の行列、そして逆行列の2行目を割ります。
0.0÷14.1421=0.0
14.1421÷14.1421=1.0
0.0÷14.1421=0.0
1.0÷14.1421=0.0707
1.0÷14.1421=0.0707
0.0÷14.1421=0.0


すると、図の様なマトリックスになります。

次は、3行目と1行目の2列目をゼロにします。

3行目2列目の27.4747を2行目に掛け合わせます。
0.0×27.4747, 1.0×27.4747, 0.0×27.4747, 0.0707×27.4747, 0.0707×27.4747, 0.0×27.4747
=0.0, 27.4747, 0.0, 1.9424, 1.9424, 0.0

求めた数で、3行目を引きます。
0.0-0.0, 27.4747-27.4747, -29.2380-0.0, 3.8855-1.9424, 0.0-1.9424, 1.0-0.0
=0.0, 0.0, -29.2380, 1.9427, -1.9427, 1.0

1行目2列目の-2.9238を2行目に掛け合わせます。
0.0×(-2.9238), 1.0×(-2.9238), 0.0×(-2.9238), 0.0707×(-2.9238), 0.0707×(-2.9238), 0.0×(-2.9238)
=0.0, -2.9238, 0.0, -0.2067, -0.2067, 0.0

求めた数で、1行目を引きます。
1.0-0.0, -2.9238-(-2.9238), 2.7474-0.0, -0.4134-(-0.2067), 0.0-(-0.2067), 0.0-0.0
=1.0, 0.0, 2.7474, -0.2067, 0.2067, 0.0


すると、図の様なマトリックスになります。

次は、3行目の3列目を1にしなければならないので、-29.2380で変換元の行列、そして逆行列の3行目を割ります。

0.0÷(-29.2380)=0.0
0.0÷(-29.2380)=0.0
-29.2380÷(-29.2380)=1.0
1.9427÷(-29.2380)=-0.0664
-1.9427÷(-29.2380)=0.0664
1.0÷(-29.2380)=-0.0342


すると、図の様なマトリックスになります。

次は、1行目と2行目の3列目をゼロにします。

1行目3列目の2.7474を3行目に掛け合わせます。
0.0×2.7474, 0.0×2.7474, 1.0×2.7474, -0.0664×2.7474, 0.0664×2.7474, -0.0342×2.7474
=0.0, 0.0, 2.7474, -0.1824, 0.1824, -0.0939

求めた数で、1行目を引きます。
1.0-0.0, 0.0-0.0, 2.7474-2.7474, -0.2067-(-0.1824), 0.2067-0.1824, 0.0-(-0.0939)
=1.0, 0.0, 0.0, -0.0241, 0.0241, 0.0939

2行目3列目の0.0を3行目に掛け合わせます。
0.0×0.0, 0.0×0.0, 1.0×0.0, -0.0664×0.0, 0.0664×0.0, -0.0342×0.0
=0.0, 0.0, 0.0, 0.0, 0.0, 0.0

求めた数で、2行目を引きます。
0.0-0.0, 1.0-0.0, 0.0-0.0, 0.0707-0.0, 0.0707-0.0, 0.0-0.0
=0.0, 1.0, 0.0, 0.0707, 0.0707, 0.0


すると、図の様な逆行列が出来ます。

最後に、逆行列により元の数値へ戻るか確認したいと思います。


変換元の行列に、ベクトル(10.0, 20.0, 30.0)を掛け合わせましょう。
-2.4184×10.0+7.0710×20.0+(-6.6446)×30.0=-82.102
2.4184×10.0+7.0710×20.0+6.6446×30.0=364.9447
9.3969×10.0+0.0000×20.0+(-3.4202)×30.0=-8.6368


先ほど算出した計算結果と逆行列を掛け合わせると元の数値へもどるはずです。
掛け合わせてみましょう。

-0.0241×(-82.102)+0.0241×364.9447+ 0.0939×(-8.6368)=9.9999
0.0707×(-82.102)+0.0707×364.9447+ 0.0000×(-8.6368)=19.9999
-0.0664×(-82.102)+0.0664×364.9447+(-0.0342)×(-8.6368)=30.0000

ほぼ元の数値へ戻りましたので、正しい逆行列を算出できているはずです。

斜めの行列に0が含まれる場合の解き方もあるのですが、逆行列に関してはここまでにしたいと思います。

2006年頃マトリックスを使っていたので多少特性を知っていますが、今は少し忘れています。

「間違えたくない」という気持ちがあるので、コンピューターで試行して試しながら解きました。

実は、最近Youtubeに解けない数学問題があるな~とか、小学校で習う割り算の解き方を忘れていたりします。(^^;

誰が見るのかな~と思いつつ、しばらく難しい数学はお休みしましょう。

以上