質問:逆行列ってなんですか?
Wikipediaに下記のような記述があります。
次正方行列に対して、
(は次単位行列)となる次正方行列)が存在するとき、は次正則行列、あるいは単に正則であるという。またこのとき、を 、の逆行列と呼びと書く。
うーん。なんだかわかりませんね。nを2として2x2の行列で考えよう。
]a=:i.2 2 0 1 2 3
単位行列はこんな感じですか?
]square_matrix =: 2 2 $ 1 0 0 1 1 0 0 1
ここで言う行列の積はJ言語では+/ . *(プラススラッシュ ドット アスタリスク)ですので、上記の記述は下記のように書けます。
a +/ . * x = square_matrix
length error |
a+/ .*x =square_matrix |
a 0 1 2 3 %.a _1.5 0.5 1 0 a +/ . * %.a 1 0 0 1おー、できた。このくらいなら手でも検算できるので、やってみよう。
(0*_1.5)+(1*1) 1 (0*0.5)+(1*0) 0 (2*_1.5)+(3*1) 0 (2*0.5)+(3*0) 1定義からの感じとしては逆行列はコンピュータなら計算できるかもしれないけれど、筆算では無理ですが、出来上がった逆行列はこうして検算できる。合っててあたりまえですが。 次に逆行列の用途です。連立方程式がいとも簡単に解けてしまうのはすごいと思う。これはどこかに書きました。 あと、xとyの点の分布があったときに最小自乗法による傾きの計算に使えるらしいのでこれは別項を立てて書きます。 とりあえず以上。 追記:さっきのエラーについて書き忘れました。
(a +/ . * %.a) = (square_matrix) 1 1 1 1イコールも動詞ですので比較したい対象をひとまとめにする必要があります。この場合だと左辺です。配列動詞のイコールという意味にならなくて、ここの要素が同じかどうかの戻り値になるので、戻り値も正誤(1 or 0, boolean)の配列になる。 宿題:全体が同じかどうかという動詞は作れるか? つまり配列でなく1(true)か0(false)を返してくる動詞。 以上