行列の関数とクラス

作成日 : 2017-08-05
最終更新日 :

JavaScript における行列

前回は JavaScript で多項式のクラスを考えた。 今度は行列のクラスを考えようとした。しかし、行列はある程度 JavaScript の 2 次元配列で操作できる。 まずは関数を実装することを先にして、クラスは後回しにする。

ここで、行列とは、`A = [(a_(11), a_(12), a_(13) ) , ( a_(21), a_(22), a_(23) )] ` のようなものをいう。このような行列を操作する関数を作る。

行列を二次元配列(多重配列)で表しておけば、JavaScript の配列のメソッドが使える。

演算

四則演算のうち除算を除く加算、減算、乗算をそれぞれ ad, sub, mul (それぞれエスペラントの加減乗を表す adicii, subtrahi, multipliki の省略形)という関数を実装する。 もちろん、演算が可能であることを確認するための型の一致を事前にチェックする必要がある。

ベクトルの内積

`v = [1, 0, 3, -2]` と `w = [-4, 9, 2, 3]` の内積を求める。

`v * w = 4` である。

加減算

`C = A + B , D = A - B` を計算する。 `A = [[1,4,2], [8,5,7]]`,`B = [[8,5,7], [1,4,2]]` としたとき、 `C = [[9,9,9], [9,9,9]], D = [[-7,-1,-5],[7,1,5]]` である。

乗算

`G = EF` を計算する。 `E = [[1,-4,0,0], [1,0,5,-3],[0,1,7,2],[9,-3,0,0]]`, `F = [[4,0,0], [0,4,0],[0,0,-3],[0,0,-1]]` としたとき、 `G = [[4,-16,0], [4,0,-12],[0,4,-23],[36,-12,0]]` である。

小行列

`i` 行 `j` 列を除く小行列を得る。行列 `A` の `i` 行 `j` 列を除いた行列を `A(i, j)` と書く。 上記の `E` の場合、 `H = A(0, 0) = [[0,5,-3],[1,7,2],[-3,0,0]]`。

行列式

`n` 次の行列式を求めるにはいろいろな方法があるが、ここで実装するのは次の方法である。 `n = 1, 2, 3` のときは直接計算する。`n gt 3` のときは余因子展開を用いる。 `n` 次の正方行列 `A=(a_(ij))` の第 `(i,j)` 余因子を `tilde a_(ij)` とおくと, 次の展開式が成り立つことを利用する。

`det A = a_(i1)tilde a_(i1) + a_(i2)tilde a_(i2) + cdots + a_(n1)tilde a_(n1)`

入力の欄に、角括弧を 2 重で使う記法により行列を入力すると、表示の欄に行列が表示されると同時に、 行列式の値を計算する。入力が正方行列でない場合、行列の記法から外れている場合は、 行列式の値は誤って表示される。最初の行列と行列式の表示は、 浅野啓三「行列と行列式」 の演習問題1.1(3) (p.81) から取った。



`[[2,-1,3,-2], [1,7,1,-1],[3,5,-5,3],[4,-3,2,-1]]`

`-42`

数式の記述と表現

数式記述には ASCIIMathML を使っている。 また数式表現には MathJax を使っている。


まりんきょ学問所JavaScript 手習い > 行列の関数とクラス