[[数学]] > ベクトル
*概要 [#g6163d7e]
ベクトルは、向きと大きさを持った量のことです。~
物理や画像処理をはじめ、様々な分野で利用されています。
高校あたり?で習うので、すでに知っている方も多いでしょうし、
2D,3D処理においては四則演算並に基本事項です。~
グラフィック処理の必要なゲームなどを作る場合、必須の知識といっても過言ではありません。

*ベクトルの表現 [#s72af68f]
**ベクトル [#if18748f]
ベクトルは適当な名前の上に→を付けて&mimetex(\vec{a});などと表現します。~
(他にも様々な表現があり、専門書などでは太字&mimetex(\mathbf{a});で表現するものが多いです。)

**数ベクトル [#f8c02d1e]
数ベクトルとは、数値を縦または横に並べた、行列の一種です。
#mimetex(\vec{a} = ( a \quad b \quad c));
のように横に並べたものを、行ベクトルまたは横ベクトル。
#mimetex(\vec{a} = \begin{pmatrix} a \\ b \\ c \end{pmatrix});
のように縦に並べたものを、列ベクトルまたは縦ベクトルと呼びます。
CGの分野では行ベクトル、数学の分野では列ベクトルがよく使用されます。
一応、CG系?ということで、ここでは行ベクトルを使用します。特に断りがなければ以降、ベクトルは行ベクトルを指します。

**ベクトルの2点による表現 [#a7aa89bc]
ベクトルは2点間を結ぶ線分として表すことができます。

点P→点Qによって表される線分のベクトルを&mimetex(\vec{PQ});
と表現します。~
また、&mimetex(\vec{PQ});を数ベクトルで表現することができます。~
2点の座標を、
#mimetex(P(p_1,p_2)\\ Q(q_1,q_2));
とすると、
#mimetex(\vec{PQ} = ( q_1-p_1 \quad q_2-p_2));
となります。

**ノルム [#ge5a8383]
ベクトルは方向を持つと同時に大きさ(長さ)も持ちます。ベクトルの大きさをノルムといい、~
&mimetex(\vec{a});のノルムを&mimetex(\mid\mid \vec{a} \mid\mid);と表します。~
大体一般的には、実際の計算は二乗して足してルート!平面、立体における原点からの距離の計算と一緒です。~
&mimetex(\vec{a} = (1 \quad 2 \quad 3));だったら~
#mimetex(\mid\mid \vec{a} \mid\mid = \sqrt{1^2+2^2+3^2} = 3.7417);
です。~
特にユークリッドノルムや2-ノルムと言います。(他に変なのもあるわけだ)


*ベクトルの演算 [#yc36aeea]
**要素 [#l4c74ec7]
ベクトルの実際の数値部一つ一つを要素といいます。~
(1 2 3)~
だったら~
1 と 2 と 3 はそれぞれ(1 2 3)の要素。~
(a_1 b_1)~
だったら~
a_1, b_1はそれぞれ(a_1 b_1)の要素です。~

**スカラー [#u00092e8]
ベクトルでない通常の数値をスカラーと呼びます。1とか2とか3ですね。(1 2)はベクトル。~
ベクトルの一つ一つの要素はスカラーともいえますね。

**加減算 [#rd4a6edc]
ベクトル同士の演算です。~
単純に各要素を加算(減算)するだけです。~
&mimetex((a_1 \quad a_2 \quad a_3) + (b_1 \quad b_2 \quad b_3) = (a_1+b_1 \quad a_1+b_2 \quad a_1+b_2));~
&mimetex((a_1 \quad a_2 \quad a_3) - (b_1 \quad b_2 \quad b_3) = (a_1-b_1 \quad a_1-b_2 \quad a_1-b_2));


**乗算除算 [#l28cec30]
乗除算はスカラーとベクトルの演算で、ベクトル同士を乗算除算することはできません。~
各要素にスカラーを乗算(除算)します。~
&mimetex(3(a_1 \quad a_2 \quad a_3) = (3a_1 \quad 3a_1 \quad 3a_1));

**内積 [#j0668103]
ベクトル同士の演算です。演算結果はスカラーとなります。
2つのベクトルのなす角を&mimetex(\theta);としたとき、
#mimetex(\vec{a}\cdot\vec{b} = \mid\mid a \mid\mid \mid\mid b \mid\mid cos\theta);
という演算です。~
または、数ベクトルの要素を使って
#mimetex(\vec{a} = (a_1 \quad a_2 \quad a_3), \vec{b} = (b_1 \quad b_2 \quad b_3));
とすると
#mimetex(\vec{a} \cdot \vec{b} = a_1b_1 + a_2b_2 + a_3b_3);
で計算することができます。

***外積 [#x8d4724c]
ここは高校数学では扱わないので次の項目に進んで頂いても結構であるけれど、まあちょっと見ていって欲しい。

テンソル積まで説明するのは面倒なので省略するとして、ここでは最も簡単な外積の計算法を扱いたい。外積の計算は厄介ではあるが、二次に限ればそうでもない。また面積の計算や物理の問題に関わるので、線型代数をやる前であっても、憶えておいて損はないはずである。

内積は演算結果がスカラーであるが、外積はスカラーではない。向きを擁する、つまりベクトルである。成分を二次に限って式を示すならば、次のようになる。

#mimetex(\vec{a} \times \vec{b} = a_1b_2 - a_2b_1 = |\vec{a}||\vec{b}|sin\theta);

θはベクトルの成す角。何となく内積と対になってるなあ程度の理解で宜しい。この外積(ベクトル積)の大きさはベクトルが成す平行四辺形の面積に等しい(平行四辺形は「外積 平行四辺形」と検索すれば作図法がわかるので確かめてほしい)。

三次だと&mimetex(\vec{a} \times \vec{b} = (a_2b_3-a_3b_2,a_3b1-a_1b3,a_1b_2-a_2b_1));になる。外積はベクトルだよと先述したにも拘らず二次の積がスカラーみたいになってるのは、このa3とb3が0の時を想像すれば何となくお分かりになるでしょう。
これは単位ベクトルとの行列式になってるぞ!
ガウスの定理とかで電磁気学を勉強するなら必須!知らないやつは殺せ!

***面積への応用 [#ta51fb85]
二つのベクトルの成す角θのcosθがわかるので、sinθもまた判明する。従って、ベクトルの大きさから面積もすぐに算出できる(cf.三角函数)。ベクトル成分から面積を算出できる公式があるので参照。

#mimetex(S = \frac{1}{2}\sqrt{|\vec{a}|^2|\vec{b}|^2 - \vec{a} \cdot \vec{b}} =  \frac{1}{2}(a_1b_2 - a_2b_1) = \frac{1}{2}|\vec{a}||\vec{b}|sin\theta);

最後の式は三角函数で習う式。真ん中の式は外積の半分になってますね。根号が解けるかどうかを、ベクトル成分を実際に計算してみて確認して欲しい。

***テンソル積やらベクトルの掛け算について [#va7b22be]
こういったベクトル同士の掛け算は、どの成分を掛け合わせるのか、が重要になってきます。ベクトルは実はその基本単位を設定することができます。

#mimetex(\vec{a} = (a_1,a_2,a_3) = a_1\vec{e_1}+a_2\vec{e_2}+a_3\vec{e_3});
#mimetex(\vec{b} = (b_1,b_2,b_3) = b_1\vec{e_1}+b_2\vec{e_2}+b_3\vec{e_3});

このeで表すベクトルの表記を「基本ベクトル」と謂います。内積や外積を行うとき、実はこれら基本ベクトルで表した物を総当たり式に掛けているのです。この時、内積と外積で基本ベクトルを掛けた時の法則が異なるのです。内積や外積を表す記号を「^」で代用すると、その成分の積は次のように計算できるでしょう。

#mimetex(\vec{a} \^ \vec{b} = a_1b_1\vec{e_1} \^ \vec{e_1} + a_1b_2\vec{e_1} \^ \vec{e_2} + a_1b_3\vec{e_1} \^ \vec{e_3} +\\ \ a_2b_1\vec{e_2} \^ \vec{e_1} + a_2b_2\vec{e_2} \^ \vec{e_2} + a_2b_3\vec{e_2} \^ \vec{e_3} +\\ \ a_3b_1\vec{e_3} \^ \vec{e_1} + a_3b_2\vec{e_3} \^ \vec{e_2} + a_3b_3\vec{e_3} \^ \vec{e_3});

内積では直交するベクトルは幾ら掛けても0になりました。ですから、直交する基本ベクトルを掛けた場合にはその値は0です。三次のベクトルはXYZの座標軸の値を与えた物であると考えるならば、座標軸は直交するので、当然 &mimetex(\vec{e_1} \cdot \vec{e_2} = 0); などになります。単位ベクトルの大きさは1なので、内積は次のように定義されます。

#mimetex(\vec{a} \cdot \vec{b} = a_1b_1\vec{e_1} \cdot \vec{e_1} + a_1b_2\vec{e_1} \cdot \vec{e_2} + a_1b_3\vec{e_1} \cdot \vec{e_3} +\\ \ a_2b_1\vec{e_2} \cdot \vec{e_1} + a_2b_2\vec{e_2} \cdot \vec{e_2} + a_2b_3\vec{e_2} \cdot \vec{e_3} +\\ \ a_3b_1\vec{e_3} \cdot \vec{e_1} + a_3b_2\vec{e_3} \cdot \vec{e_2} + a_3b_3\vec{e_3} \cdot \vec{e_3}\\ \ \ = a_1b_1\vec{e_1} \cdot \vec{e_1} + a_2b_2\vec{e_2} \cdot \vec{e_2} + a_3b_3\vec{e_3} \cdot \vec{e_3}= a_1b_1 + a_2b_2 + a_3b_3);

外積ではすこし條件が異なります。平行なベクトルの積は0になるため、 &mimetex(\vec{e_1} \times \vec{e_1} = 0); です。また&mimetex(\vec{a} \times \vec{b} = -\vec{b} \times \vec{a});などの性質をもち、基本ベクトルは更に以下の性質を持ちます。

#mimetex(\vec{e_1} \times \vec{e_2} = \vec{e_3}\\\vec{e_2} \times \vec{e_3} = \vec{e_1}\\\vec{e_3} \times \vec{e_1} = \vec{e_2});

外積は物理で有名なモーメントの計算に利用できます。そんな風に廻転する向きが関連してる、とだけここでは考えてほしい。これを外積計算に反映させると、以下のようになります。

#mimetex(\vec{a} \times \vec{b} = a_1b_1\vec{e_1} \times \vec{e_1} + a_1b_2\vec{e_1} \times \vec{e_2} + a_1b_3\vec{e_1} \times \vec{e_3} +\\ \ a_2b_1\vec{e_2} \times \vec{e_1} + a_2b_2\vec{e_2} \times \vec{e_2} + a_2b_3\vec{e_2} \times \vec{e_3} +\\ \ a_3b_1\vec{e_3} \times \vec{e_1} + a_3b_2\vec{e_3} \times \vec{e_2} + a_3b_3\vec{e_3} \times \vec{e_3}\\ \ \ = a_1b_2\vec{e_1} \times \vec{e_2} + a_1b_3\vec{e_1} \times \vec{e_3} + a_2b_1\vec{e_2} \times \vec{e_1} + a_2b_3\vec{e_2} \times \vec{e_3} + a_3b_1\vec{e_3} \times \vec{e_1} + a_3b_2\vec{e_3} \times \vec{e_2}\\ \ \ = a_1b_2\vec{e_3} - a_1b_3\vec{e_2} - a_2b_1\vec{e_3} + a_2b_3\vec{e_1} + a_3b_1\vec{e_2} - a_3b_2\vec{e_1}\\ \ \ =(a_2b_3 - a_3b_2)\vec{e_1} + (a_3b_1 - a_1b_3)\vec{e_2} + (a_1b_2 - a_2b_1)\vec{e_3}\\ \ \ =(a_3b_1 - a_1b_3, a_3b_1 - a_1b_3, a_1b_2 - a_2b_1));

長々と式を書いて何が云いたかったかといえば、ベクトルの積の性質は、ベクトル成分とベクトル成分の拘り合いをどうするかで決定されるということです。線型代数をやる内にテンソル積やらベクトルの積の世界はより複雑になります。しかしそういう複雑な世界であっても、基本ベクトルをどのように処理するかで方向性が決定されてしまうのです。

ちなみに二次ベクトルの外積の場合、次のような計算になることがわかります。

#mimetex(\vec{a} \times \vec{b} = a_1b_1\vec{e_1} \times \vec{e_1} + a_1b_2\vec{e_1} \times \vec{e_2} + a_2b_1\vec{e_2} \times \vec{e_1} + a_2b_2\vec{e_2} \times \vec{e_2}\\ \ \ = a_1b_2\vec{e_1} \times \vec{e_2} + a_2b_1\vec{e_2} \times \vec{e_1} \\ \ \ =(a_1b_2 - a_2b_1)\vec{e_1} \times \vec{e_2}\\ \ \ =a_1b_2 - a_2b_1);

この場合の&mimetex(\vec{e_1} \times \vec{e_2});は、三次ベクトルの&mimetex(\vec{e_3});則ちz軸に等しく、全くあらぬ方向を向いているわけです。このままでは困る、xy平面にz軸は存在しない、単位ベクトルの大きさは1に等しいのであるから、取り敢えず&mimetex(\vec{e_1} \times \vec{e_2} = 1); と計算したと理解しておいたらそれでよい。

*ベクトル方程式 [#o0f6fd98]
ベクトルで一番大事な分野であると私は思っている。ベクトル方程式は、ベクトルを方程式(線型なぞ)へと拡張する手がかりの一つである。

ベクトルは線分のように直線の向きで表す。であるならば、方程式と同じ様にxy座標の図形を表す事が出来るのではないかとして、ベクトルで方程式を表すのがベクトル方程式である。

**位置ベクトル [#s74693ee]
点Aの''座標''を''ベクトル成分''とした位置ベクトルをA(&mimetex(\vec{a});)という表現等であらわし、これは&mimetex(\vec{OA});(Oは原点)に等しい。点Bの位置ベクトルを定めれば、ABのベクトルなどを簡単に表現できる。

***内分・外分点の位置ベクトル [#q459e2d8]
点Aと点BをA(&mimetex(\vec{a});)、B(&mimetex(\vec{b});)、としてその内分点と外分点の位置ベクトルを考える。m:nに内分・外分する点をおのおの点P、点Qとすれば、その位置ベクトルはP(&mimetex(\frac{n\vec{a}+m\vec{b}}{m+n});)、Q(&mimetex(\frac{-n\vec{a}+m\vec{b}}{m-n});)、とできる性質がある。

**ベクトル方程式の表現 [#m09e5337]
表したい線分をy=ax+bとでもして、これの向いてる方向を''方向ベクトル''&mimetex(\vec{p});と定義して、それの通過する点A(&mimetex(\vec{a});)を一つ定めれば、方程式として機能する。~
すなはち、y=ax+b は &mimetex((x,y)=\vec{a} + t\vec{p});(tは媒介変数、スカラー量)とできる。このベクトルは、y=ax+b に動点Pを考えた際の位置ベクトルに等しいことに注目して欲しい。

線分に垂直な方向ベクトルを考えた場合、これを''法線ベクトル''と呼び、方向ベクトルよりも算出しやすい。一次方程式は ax+by+c=0 で表すことができるけれども、この場合に法線ベクトル&mimetex(\vec{n} = (a,b));と定まる。方向ベクトルはこれに垂直なので内積を考えれば(b,-a)または(-b,a)などに定まる。