JavaScript におけるベクトル
前回は JavaScript で行列の関数とクラスを考えた。 今度はベクトルの関数である。すでに行列を考えたのだからかなりの部分実装しているのだが、 ここでは外積など、ベクトル解析に関する関数を実装したいと考えた。
ベクトルを一次元配列で、また行列を二次元配列で表すのは、行列の関数とクラスと同様である。
平面の方程式
同一直線上にない 3 点 `"A"(a_1, a_2, a_3), "B"(b_1, b_2, b_3), "C"(c_1, c_2, c_3) ` を通る平面の方程式は、行列式を用いて次のようにあらわされる。
これを利用して、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)` の外積は次であらわされる:
ベクトルの外積を計算するプログラムを作った。
A: B: 外積 : (-8,2,7)
曲線の長さ
3 次元空間で点 `P` が変数 `t` の値に応じて連続的に動くものとする。このとき点 `P` は曲線を描く。点 `P` の位置ベクトルを `bbr` とすると。`bbr` は `t` の関数として次のように書ける。
これをベクトル方程式という。
曲線 `bbr(t)` の `t = 0` から `t = a` までの長さ `s(a)` は次で与えられる。
ベクトル方程式の表す曲線の長さを計算するプログラムを作った。 数式微分はアドホックなやり方であり、成分が `asint` か `acost` か `at` の場合にしか対応できない。 他の場合は誤った結果になる。
`bbr(t)` : , `bbr'(t)` : `(-3sint,-3cost,4)`, `abs(bbr'(t))` : `5`, `s(a)` : `5a`
ベクトル場の発散
ベクトル場 `A(x,y,z) = (A_x(x,y,z), A_y(x,y,z), A_z(x,y,z))` の発散 `"div" bbA` は次で定義される:
3 次元空間で点 `P` が変数 `t` の値に応じて連続的に動くものとする。このとき点 `P` は曲線を描く。点 `P` の位置ベクトルを `bbr` とすると。`bbr` は `t` の関数として次のように書ける。
ベクトル場 `bbA` の発散 `"div" bbA` を求めるプログラムを作る予定だが、 数式微分はアドホックなやり方であり、成分が `x^ay^bz^c` の場合しか正しい値を示さない。
スカラー場の勾配
スカラー場 `F(x,y,z)` の勾配 `"grad" F` は次で定義される:
ベクトル場の回転
ベクトル場 `A(x,y,z) = (A_x(x,y,z), A_y(x,y,z), A_z(x,y,z))` の回転 `"rot" bbA` は次で定義される:
数式の記述と表現
数式記述には ASCIIMathML を使っている。 また数式表現には MathJax4 を使っている。