「3次元の内積の幾何学的な性質」の版間の差分
| 14行: | 14行: | ||
平面が決まります。2つのベクトルなす角度とは、この平面上での、つまり2次元での角度と同じものと考えることができます。  | 平面が決まります。2つのベクトルなす角度とは、この平面上での、つまり2次元での角度と同じものと考えることができます。  | ||
| − | 3次元の内積は、2次元の内積の自然の拡張で、2つのベクトル   | + | 3次元の内積は、2次元の内積の自然の拡張で、2つのベクトル <math>{\bf a}, {\bf b}</math> のデカルト座標での成分表示を    | 
| − | + | <math>{\bf a} = (a_1, a_2, a_3), {\bf b} = (b_1, b_2, b_3)</math> とすると  | |
| − | + | <math>  | |
   {\bf a}\cdot{\bf b} = a_1b_1+a_2b_2+a_3b_3 \label{DotProduct}  |    {\bf a}\cdot{\bf b} = a_1b_1+a_2b_2+a_3b_3 \label{DotProduct}  | ||
| − | + | </math>  | |
と定義されますが、  | と定義されますが、  | ||
| − | ベクトル   | + | ベクトル <math>{\bf a}</math>、 <math>{\bf b}</math>それぞれ長さを <math>r_a</math>、<math>r_b</math> 、2つのベクトルのなす角度を <math>\beta </math> とすると、2次元の内積の結果をそのまま拡張すれば  | 
| − | + | <math>  | |
   {\bf a}\cdot{\bf b} = a_1b_1+a_2b_2+a_3b_3 = r_ar_b\cos\beta \label{DotProduct2}  |    {\bf a}\cdot{\bf b} = a_1b_1+a_2b_2+a_3b_3 = r_ar_b\cos\beta \label{DotProduct2}  | ||
| − | + | </math>  | |
となりそうです。事実そうなるのですが、本当でしょうか? 証明してみましょう。  | となりそうです。事実そうなるのですが、本当でしょうか? 証明してみましょう。  | ||
| 40行: | 40行: | ||
まず、2次元に限定して、回転で内積が変化しないことを示しましょう。  | まず、2次元に限定して、回転で内積が変化しないことを示しましょう。  | ||
| − | ふたつの位置ベクトルを   | + | ふたつの位置ベクトルを <math>{\bf a}=\left( \begin{array}{cc} a_1 \\ a_2  \end{array} \right)</math>,    | 
| − | + | <math>{\bf b}=\left( \begin{array}{cc} b_1 \\ b_2  \end{array} \right)</math> とすると、内積は  | |
| − | + | <math> {\bf a}\cdot {\bf b} = a_1b_1+a_2b_2 \label{DotProduct3}</math>  | |
[[回転行列と複素数の積]]で示しましたように、位置ベクトルは回転行列をかけることで回転させることができます。  | [[回転行列と複素数の積]]で示しましたように、位置ベクトルは回転行列をかけることで回転させることができます。  | ||
| − | 回転行列   | + | 回転行列 <math>\left( \begin{array} {cc} \cos\beta & -sin\beta \\ \sin\beta& \ cos\beta \end{array}\right)</math>  | 
| − | で、ベクトル   | + | で、ベクトル <math>{\bf a}</math> と <math>{\bf b}</math> を回転させると、回転後のベクトル <math>{\bf a'}</math> と <math>{\bf b'}</math> は  | 
| − | + | <math> {\bf a'} = \left( \begin{array}{cc} a_1\cos\beta-a_2\sin\beta \\ a_1\sin\beta+a_2\cos\beta  \end{array} \right)    | |
| − | \label{rotateda}  | + | \label{rotateda}</math>  | 
| − | + | <math> {\bf b'} = \left( \begin{array}{cc} b_1\cos\beta-b_2\sin\beta \\ b_1\sin\beta+b_2\cos\beta  \end{array} \right)    | |
| − | \label{rotatedb}  | + | \label{rotatedb}</math>  | 
回転後の内積を計算すると  | 回転後の内積を計算すると  | ||
| − | + | <math>   | |
\begin{align}  | \begin{align}  | ||
{\bf a'}\cdot{\bf b'} &= (a_1\cos\beta-a_2\sin\beta)(b_1\cos\beta-b_2\sin\beta)+  | {\bf a'}\cdot{\bf b'} &= (a_1\cos\beta-a_2\sin\beta)(b_1\cos\beta-b_2\sin\beta)+  | ||
| 66行: | 66行: | ||
\end{align}  | \end{align}  | ||
\label{RotatedDotProduct}  | \label{RotatedDotProduct}  | ||
| − | + | </math>  | |
以上から、回転変換によって、内積が変化しないことがわかります。  | 以上から、回転変換によって、内積が変化しないことがわかります。  | ||
| 73行: | 73行: | ||
'''内積が変化しない'''とはどういうことでしょうか?  | '''内積が変化しない'''とはどういうことでしょうか?  | ||
| − | ベクトルの大きさの2乗は   | + | ベクトルの大きさの2乗は <math>|{\bf a}|^2={\bf a}\cdot{\bf a}</math> ですから、'''回転によって、ベクトルの大きさは変わりません。'''  | 
2個の位置ベクトル間の終点間距離の2乗は    | 2個の位置ベクトル間の終点間距離の2乗は    | ||
| − | + | <math> |{\bf a} - {\bf b}|^2 = ({\bf a}-{\bf b})({\bf a}-{\bf b}) = {\bf a}^2 + {\bf b}^2 - 2{\bf a}\cdot{\bf b} \label{distance1}</math>  | |
回転後の2個の位置ベクトル間の終点間距離の2乗は  | 回転後の2個の位置ベクトル間の終点間距離の2乗は  | ||
| − | + | <math> |{\bf a'} - {\bf b'}|^2 = ({\bf a'}-{\bf b'})({\bf a'}-{\bf b'}) = {\bf a'}^2 + {\bf b'}^2 - 2{\bf a'}\cdot{\bf b'} = {\bf a}^2 + {\bf b}^2 - 2{\bf a}\cdot{\bf b}\label{distance2} </math>  | |
つまり、ベクトルの長さは回転によって変わりません。つまり、回転はベクトルが作る三角形を合同な三角形に変換します。従って、'''回転変換はベクトルがなす角度を変更しません。'''  | つまり、ベクトルの長さは回転によって変わりません。つまり、回転はベクトルが作る三角形を合同な三角形に変換します。従って、'''回転変換はベクトルがなす角度を変更しません。'''  | ||
| 94行: | 94行: | ||
ここで z軸を回転軸とした回転とは、z軸の正方向に対して、図のように右回転する方向を正の角度の回転とします。  | ここで z軸を回転軸とした回転とは、z軸の正方向に対して、図のように右回転する方向を正の角度の回転とします。  | ||
| − | この回転は、  | + | この回転は、<math>x, y</math> に関しては2次元の回転と同じになり、回転変換によって <math>z</math> は変化しないので、変換行列は  | 
| − | + | <math>   | |
\left(\begin{array}{ccc}  | \left(\begin{array}{ccc}  | ||
| 121行: | 121行: | ||
\label{zrotation}  | \label{zrotation}  | ||
| − | + | </math>  | |
になります。  | になります。  | ||
| − | + | <math>{\bf a} = \left(  | |
\begin{array}{ccc}  | \begin{array}{ccc}  | ||
a_1 \\  | a_1 \\  | ||
| 138行: | 138行: | ||
b_3  | b_3  | ||
\end{array}  | \end{array}  | ||
| − | \right)  | + | \right)</math> の3次元の内積は、2次元からの自然な拡張から  | 
| − | + | <math>{\bf a}\cdot {\bf b}=a_1b_1+a_2b_2+a_3b_3 \label{3DCrossProduct} </math>  | |
と定義しますが、  | と定義しますが、  | ||
| − | + | <math>{\bf a}</math> と <math>{\bf b}</math> の回転後のベクトル <math>{\bf a'}    | |
= \left(  | = \left(  | ||
\begin{array}{ccc}  | \begin{array}{ccc}  | ||
| 158行: | 158行: | ||
b'_3  | b'_3  | ||
\end{array}  | \end{array}  | ||
| − | \right)  | + | \right)</math> の内積は    | 
| − | + | <math>{\bf a'}\cdot {\bf b'}=a'_1b'_1+a'_2b'_2+a'_3b'_3 \label{3DCrossProduct2} </math>  | |
| − | となります。このうち   | + | となります。このうち <math>a_1b_1+a_2b_2</math> と <math>a'_1b'_1+a'_2b'_2</math> の部分は2次元の回転と同じなので同じになります。<math>a_3</math> と <math>a'_3</math>、<math>b_3</math> と <math>b'_3</math> は同じなので、<math>a_3b_3=a'_3b'_3</math> となります。  | 
| − | 結局   | + | 結局 <math>a_1b_1+a_2b_2+a_3b_3 = a'_1b'_1+a'_2b'_2+a'_3b'_3</math> なので、<math>z</math>軸を回転軸とする回転変換で、内積は変化しないことになります。  | 
| − | + | 同様に、<math>x</math>軸を回転軸とし、<math>x</math>軸の正方向に対して右回転する回転変換は  | |
| − | + | <math>  | |
\left(\begin{array}{ccc}  | \left(\begin{array}{ccc}  | ||
x' \\  | x' \\  | ||
| 192行: | 192行: | ||
\label{xrotation}  | \label{xrotation}  | ||
| − | + | </math>  | |
| − | + | <math>y</math>軸を回転軸とし、<math>y</math>軸の正方向に対して右回転する回転変換は  | |
| − | + | <math>  | |
\left(\begin{array}{ccc}  | \left(\begin{array}{ccc}  | ||
x' \\  | x' \\  | ||
| 220行: | 220行: | ||
| − | + | </math>  | |
となります。いずれの回転も内積を変化させないのはいうまでもないでしょう。  | となります。いずれの回転も内積を変化させないのはいうまでもないでしょう。  | ||
| 226行: | 226行: | ||
==3次元の内積==  | ==3次元の内積==  | ||
| − | + | ここで、任意の2ベクトルを、内積を保ったまま、<math>x-y</math>平面内に回転変換できることを示します。まず下図のように、ベクトル<math>{\bf a}</math>, <math>{\bf b}</math> を<math>y</math>軸で回転させます。ベクトル<math>{\bf a}</math> が <math>x-y</math> 平面上にくるように回転させます。これを ベクトル<math>{\bf a'}</math>, <math>{\bf b'}</math> とします。  | |
[[ファイル:3次元の内積の幾何学的な性質-3.png]]  | [[ファイル:3次元の内積の幾何学的な性質-3.png]]  | ||
| − | 次に、ベクトル  | + | 次に、ベクトル<math>{\bf a'}</math>, <math>{\bf b'}</math> <math>z</math>軸で回転させて、ベクトル<math>{\bf a'}</math> の方向を <math>x</math> 軸と一致させます。これを ベクトル<math>{\bf a''}</math>, <math>{\bf b''}</math> とします。  | 
[[ファイル:3次元の内積の幾何学的な性質-4.png]]  | [[ファイル:3次元の内積の幾何学的な性質-4.png]]  | ||
| − | 最後に,   | + | 最後に, <math>x</math>軸で回転変換を行って、<math>{\bf b''}</math> も <math>x-y</math>平面上に持ってきます。  | 
| 242行: | 242行: | ||
以上から  | 以上から  | ||
| − | *上のように3軸の回転変換で、任意の2ベクトルを x-  | + | *上のように3軸の回転変換で、任意の2ベクトルを <math>x-y</math>平面上に3次元の内積を変化させずにもってくることが出来る。  | 
| − | *x-  | + | *<math>x-y</math>平面に移動したベクトルはz座標が0なので、3次元の内積は2次元の内積と一致する。  | 
*3次元の3軸による回転は内積を変更しない。つまり、2次元回転の場合と同様、図形を合同に変換し、辺の長さや辺のなす角度を変更しない。  | *3次元の3軸による回転は内積を変更しない。つまり、2次元回転の場合と同様、図形を合同に変換し、辺の長さや辺のなす角度を変更しない。  | ||
| − | 従って、2次元の内積の幾何学的な性質はそのまま3次元の内積でも成り立ち、ベクトル  | + | 従って、2次元の内積の幾何学的な性質はそのまま3次元の内積でも成り立ち、ベクトル<math>{\bf a}、{\bf b}</math>の長さを <math>r_a</math>、<math>r_b</math>、ベクトル<math>{\bf a}、{\bf b}</math> 同士のなす角度を <math>\beta</math> とすると  | 
| − | + | <math>{\bf a}\cdot{\bf b} = r_ar_b\cos\beta\label{lastCrossProduct} </math>  | |
が成立します。以上で2次元の内積は3次元へ自然な形で拡張できることを示しました。  | が成立します。以上で2次元の内積は3次元へ自然な形で拡張できることを示しました。  | ||
2014年12月28日 (日) 11:57時点における版
3次元の内積
2次元の内積の幾何学的な性質では内積と2つのベクトルがなす角度との関係を紹介しました。この性質は実は3次元でもまったく同じなのですが、 3次元になるとこのことを説明するのが格段に難しくなります。
そもそも3次元で二つのベクトルのなす角度とはなんなのでしょうか?
図のように2つのベクトルの始点を同じ点として重ねると、2つのベクトルが同じ向きではなければ、2つのベクトルを含む 平面が決まります。2つのベクトルなす角度とは、この平面上での、つまり2次元での角度と同じものと考えることができます。
3次元の内積は、2次元の内積の自然の拡張で、2つのベクトル 構文解析に失敗 (構文エラー): {{\bf {a}}},{{\bf {b}}}
のデカルト座標での成分表示を
構文解析に失敗 (構文エラー): {{\bf {a}}}=(a_{1},a_{2},a_{3}),{{\bf {b}}}=(b_{1},b_{2},b_{3})
とすると
構文解析に失敗 (不明な関数「\label」): {\bf a}\cdot{\bf b} = a_1b_1+a_2b_2+a_3b_3 \label{DotProduct}
と定義されますが、
ベクトル 構文解析に失敗 (構文エラー): {{\bf {a}}}
、 構文解析に失敗 (構文エラー): {{\bf {b}}}
それぞれ長さを 
、
 、2つのベクトルのなす角度を 
 とすると、2次元の内積の結果をそのまま拡張すれば
構文解析に失敗 (不明な関数「\label」): {\bf a}\cdot{\bf b} = a_1b_1+a_2b_2+a_3b_3 = r_ar_b\cos\beta \label{DotProduct2}
となりそうです。事実そうなるのですが、本当でしょうか? 証明してみましょう。
基本的には流れは以下の通り
- 2次元3次元の回転で内積が変化しないことを示す。
 - 回転で2つベクトルを含む平面を x-y 平面に変換できることを示す。
 - 内積が変化しないことの意味を示し、2次元の内積の性質がそのまま3次元でも成り立つことを示す。
 
2次元の回転と2次元の内積
まず、2次元に限定して、回転で内積が変化しないことを示しましょう。
ふたつの位置ベクトルを 構文解析に失敗 (構文エラー): {{\bf {a}}}=\left({\begin{array}{cc}a_{1}\\a_{2}\end{array}}\right) , 構文解析に失敗 (構文エラー): {{\bf {b}}}=\left({\begin{array}{cc}b_{1}\\b_{2}\end{array}}\right)
とすると、内積は
構文解析に失敗 (不明な関数「\label」): {\bf a}\cdot {\bf b} = a_1b_1+a_2b_2 \label{DotProduct3}
回転行列と複素数の積で示しましたように、位置ベクトルは回転行列をかけることで回転させることができます。
回転行列 
で、ベクトル 構文解析に失敗 (構文エラー): {{\bf {a}}}
と 構文解析に失敗 (構文エラー): {{\bf {b}}}
を回転させると、回転後のベクトル 構文解析に失敗 (構文エラー): {{\bf {a'}}}
と 構文解析に失敗 (構文エラー): {{\bf {b'}}}
は
構文解析に失敗 (不明な関数「\label」): {\bf a'} = \left( \begin{array}{cc} a_1\cos\beta-a_2\sin\beta \\ a_1\sin\beta+a_2\cos\beta \end{array} \right) \label{rotateda}
構文解析に失敗 (不明な関数「\label」):  {\bf b'} = \left( \begin{array}{cc} b_1\cos\beta-b_2\sin\beta \\ b_1\sin\beta+b_2\cos\beta  \end{array} \right)  \label{rotatedb}
回転後の内積を計算すると
構文解析に失敗 (不明な関数「\label」): \begin{align} {\bf a'}\cdot{\bf b'} &= (a_1\cos\beta-a_2\sin\beta)(b_1\cos\beta-b_2\sin\beta)+ (a_1\sin\beta+a_2\cos\beta)( b_1\sin\beta+b_2\cos\beta) \\ &=a_1b_1\cos^2\beta+a_2b_2\sin^2\beta+(-a_1b_2-a_2b_1)\cos\beta\sin\beta+ a_1b_1\sin^2\beta+a_2b_2\cos^2\beta+(a_1b_2+a_2b_1)\cos\beta\sin\beta \\ &=a_1b_1+a_2b_2 \end{align} \label{RotatedDotProduct}
以上から、回転変換によって、内積が変化しないことがわかります。
内積が変化しないとはどういうことでしょうか?
ベクトルの大きさの2乗は 構文解析に失敗 (構文エラー): |{{\bf {a}}}|^{2}={{\bf {a}}}\cdot {{\bf {a}}}
ですから、回転によって、ベクトルの大きさは変わりません。
2個の位置ベクトル間の終点間距離の2乗は
構文解析に失敗 (不明な関数「\label」): |{\bf a} - {\bf b}|^2 = ({\bf a}-{\bf b})({\bf a}-{\bf b}) = {\bf a}^2 + {\bf b}^2 - 2{\bf a}\cdot{\bf b} \label{distance1}
回転後の2個の位置ベクトル間の終点間距離の2乗は
構文解析に失敗 (不明な関数「\label」): |{\bf a'} - {\bf b'}|^2 = ({\bf a'}-{\bf b'})({\bf a'}-{\bf b'}) = {\bf a'}^2 + {\bf b'}^2 - 2{\bf a'}\cdot{\bf b'} = {\bf a}^2 + {\bf b}^2 - 2{\bf a}\cdot{\bf b}\label{distance2}
つまり、ベクトルの長さは回転によって変わりません。つまり、回転はベクトルが作る三角形を合同な三角形に変換します。従って、回転変換はベクトルがなす角度を変更しません。
3次元の回転
3次元の回転は意外と奥が深いので、ここでは x軸、y軸、z軸 を回転軸にした回転のみを扱います。
まず、z軸を回転軸にした3次元回転を考えてみましょう。
ここで z軸を回転軸とした回転とは、z軸の正方向に対して、図のように右回転する方向を正の角度の回転とします。
この回転は、
 に関しては2次元の回転と同じになり、回転変換によって 
 は変化しないので、変換行列は
構文解析に失敗 (不明な関数「\label」):    \left(\begin{array}{ccc} x' \\ y' \\ z' \end{array} \right)  =  \left(  \begin{array}{ccc}      \cos\theta_z & -\sin\theta_z & 0 \\     \sin\theta_z & \cos\theta_z & 0 \\     0 & 0 & 1 \end{array}  \right) \left(\begin{array}{ccc} x \\ y \\ z \end{array} \right) \label{zrotation}  
になります。
 
構文解析に失敗 (字句解析エラー): {\bf a} = \left( \begin{array}{ccc} a_1 \\ a_2 \\ a_3 \end{array} \right)$ と  ${\bf b} = \left( \begin{array}{ccc} b_1 \\ b_2 \\ b_3 \end{array} \right)
の3次元の内積は、2次元からの自然な拡張から
構文解析に失敗 (不明な関数「\label」): {\bf a}\cdot {\bf b}=a_1b_1+a_2b_2+a_3b_3 \label{3DCrossProduct}
と定義しますが、
構文解析に失敗 (構文エラー): {{\bf {a}}}
と 構文解析に失敗 (構文エラー): {{\bf {b}}}
の回転後のベクトル 構文解析に失敗 (字句解析エラー): {\bf a'} = \left( \begin{array}{ccc} a'_1 \\ a'_2 \\ a'_3 \end{array} \right)$と ${\bf b'}= \left( \begin{array}{ccc} b'_1 \\ b'_2 \\ b'_3 \end{array} \right)
の内積は
構文解析に失敗 (不明な関数「\label」): {\bf a'}\cdot {\bf b'}=a'_1b'_1+a'_2b'_2+a'_3b'_3 \label{3DCrossProduct2}
となります。このうち 
 と 
 の部分は2次元の回転と同じなので同じになります。
 と 
、
 と 
 は同じなので、
 となります。
結局 
 なので、
軸を回転軸とする回転変換で、内積は変化しないことになります。
同様に、
軸を回転軸とし、
軸の正方向に対して右回転する回転変換は
構文解析に失敗 (不明な関数「\label」): \left(\begin{array}{ccc} x' \\ y' \\ z' \end{array} \right) = \left( \begin{array}{ccc} 1 & 0 & 0 \\ 0 & \cos\theta_x & -\sin\theta_x \\ 0 & \sin\theta_x & \cos\theta_x \\ \end{array} \right) \left(\begin{array}{ccc} x \\ y \\ z \end{array} \right) \label{xrotation}
軸を回転軸とし、
軸の正方向に対して右回転する回転変換は
構文解析に失敗 (不明な関数「\label」): \left(\begin{array}{ccc} x' \\ y' \\ z' \end{array} \right) = \left( \begin{array}{ccc} \cos\theta_y & 0 & \sin\theta_y \\ 0 & 1 & 0 \\ -\sin\theta_y & 0 & \cos\theta_y \\ \end{array} \right) \left(\begin{array}{ccc} x \\ y \\ z \end{array} \right) \label{yrotation}
となります。いずれの回転も内積を変化させないのはいうまでもないでしょう。
3次元の内積
ここで、任意の2ベクトルを、内積を保ったまま、
平面内に回転変換できることを示します。まず下図のように、ベクトル構文解析に失敗 (構文エラー): {{\bf {a}}}
, 構文解析に失敗 (構文エラー): {{\bf {b}}}
を軸で回転させます。ベクトル構文解析に失敗 (構文エラー): {{\bf {a}}} が
平面上にくるように回転させます。これを ベクトル構文解析に失敗 (構文エラー): {{\bf {a'}}}
, 構文解析に失敗 (構文エラー): {{\bf {b'}}}
とします。
次に、ベクトル構文解析に失敗 (構文エラー): {{\bf {a'}}} , 構文解析に失敗 (構文エラー): {{\bf {b'}}}
軸で回転させて、ベクトル構文解析に失敗 (構文エラー): {{\bf {a'}}} の方向を
軸と一致させます。これを ベクトル構文解析に失敗 (構文エラー): {{\bf {a''}}}
, 構文解析に失敗 (構文エラー): {{\bf {b''}}}
とします。
最後に, 
軸で回転変換を行って、構文解析に失敗 (構文エラー): {{\bf {b''}}}
も平面上に持ってきます。
以上から
- 上のように3軸の回転変換で、任意の2ベクトルを 
平面上に3次元の内積を変化させずにもってくることが出来る。
 
平面に移動したベクトルはz座標が0なので、3次元の内積は2次元の内積と一致する。
- 3次元の3軸による回転は内積を変更しない。つまり、2次元回転の場合と同様、図形を合同に変換し、辺の長さや辺のなす角度を変更しない。
 
従って、2次元の内積の幾何学的な性質はそのまま3次元の内積でも成り立ち、ベクトル構文解析に失敗 (字句解析エラー): {\bf a}、{\bf b}
の長さを 
、
、ベクトル構文解析に失敗 (字句解析エラー): {\bf a}、{\bf b}
同士のなす角度をとすると
構文解析に失敗 (不明な関数「\label」): {\bf a}\cdot{\bf b} = r_ar_b\cos\beta\label{lastCrossProduct}
が成立します。以上で2次元の内積は3次元へ自然な形で拡張できることを示しました。




