ベクトルの関数とクラス

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

JavaScript におけるベクトル

前回は JavaScript で行列の関数とクラスを考えた。 今度はベクトルの関数である。すでに行列を考えたのだからかなりの部分実装しているのだが、 ここでは外積など、ベクトル解析に関する関数を実装したいと考えた。

ベクトルを一次元配列で、また行列を二次元配列で表すのは、行列の関数とクラスと同様である。

平面の方程式

同一直線上にない 3 点 `"A"(a_1, a_2, a_3), "B"(b_1, b_2, b_3), "C"(c_1, a_2, a_3) ` を通る平面の方程式は、行列式を用いて次のようにあらわされる。

`abs({:(x,y,z,1),(a_1,a_2,a_3,1),(b_1,b_2,b_3,1),(c_1,c_2,c_3,1):})`

これを利用して、A, B, C の座標を与えるとこれら 3 点を通る平面の方程式を求めるプログラムを書いてみた。 `px+qy+rz+s=0` のように表示するが、`p, q, r, s` に公倍数があってもその公倍数で割っていないので、 みっともない。

A: B: C: 平面:-19x-11y+10z-15=0

ベクトルの外積

ベクトル `bbA = (a_1, a_2, a_3)` と `bbB = (b_1, b_2, b_3)` の外積は次であらわされる:

`bbA times bbB = (a_2b_3-a_3b_2, a_3b_1-a_1b_3, a_1b_2 - a_2b_1)`

ベクトルの外積を計算するプログラムを作った。

A: B: 外積 : (-8,2,7)

曲線の長さ

3 次元空間で点 `P` が変数 `t` の値に応じて連続的に動くものとする。このとき点 `P` は曲線を描く。点 `P` の位置ベクトルを `bbr` とすると。`bbr` は `t` の関数として次のように書ける。

`bbr = bbr(t)`

これをベクトル方程式という。

曲線 `bbr(t)` の `t = 0` から `t = a` までの長さ `s(a)` は次で与えられる。

`s(a) = int_0^a abs(bbr'(t)) dt`

ベクトル方程式の表す曲線の長さを計算するプログラムを作った。 数式微分はアドホックなやり方であり、成分が `asint` か `acost` か `at` の場合にしか対応できない。 他の場合は誤った結果になる。

`bbr(t)` : , `bbr'(t)` : `(-3sint,-3cost,4)`, `abs(bbr'(t))` : `5`, `s(a)` : `5a`

数式の記述と表現

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


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