tsujimotterのノートブック

日曜数学者 tsujimotter の「趣味で数学」実践ノート

空間内の「ねじれの位置」にある2直線間の距離

高校数学で習う「空間内の2直線間の距離」について考えてみたいと思います。

3次元空間内に2直線  l_1, l_2 があるとします。 l_1, l_2 が「ねじれの位置にある」とは、 l_1, l_2 が交点を持たず、かつ、平行でもないことを言います。このとき、2直線  l_1, l_2 の距離を考えてみたいと思います。

そもそも2直線の距離とは、というところから考えたいと思います。 l_1 の点  P および  l_2 の点  Q を任意にとったとき、距離  PQ の最小値を2直線  l_1, l_2 の距離と定義します。


ここで疑問に思うのは、そもそもこの最小値は存在するのか?、という問題です。2直線の位置関係によっては、2直線のそれぞれの点の距離がいつまでも漸近的に小さくなり続けるなんてこともあるかもしれません。この場合、最小値は存在しないことになります。もちろん、直感的にはそんな状況はなさそうに思えますが、証明される必要があると思います。

最小値が存在しなければ、2直線の距離は定義できない場合が存在するということになってしまいますね。

この記事の最後に述べるように、結果的には最小値は存在し、2直線の距離が定義できます。この事実って高校数学では証明されるのでしょうか? 少なくともtsujimotterはこの証明について聞いた記憶がありませんでした。証明が気になって眠れません。


というわけで、最小値が存在することについて自分なりに考えてみたのがこちらの記事となります。今回は「ベクトル解析」を使った証明ですが、もしかしたら、もっと簡単に考えることもできるかもしれません。

個人的に楽しかったのでまとめてみたという記事になりますので、おおらかな目でみてあげてください。別解などあればお気軽におしらせください。


(追記)
実は最後に書いたのですが、もっとシンプルな解決策があったようです。結果的には、前半で書いたような計算はしなくてもよかったのですが、計算していて楽しかったのでそのまま載せたいと思います。



2直線の距離を求めよう

各直線上にある点をベクトルによって表現してみましょう。

直線  l_1 上のある1点の座標をベクトルを用いて  \mathbf{a} = (a_1, a_2, a_3) \in \mathbb{R}^3 と表します。直線  l_1 の方向を指す方向ベクトルを  \mathbf{b} = (b_1, b_2, b_3) を考えると、直線  l_1 上の任意の点の座標は

 \mathbf{a} + \mathbf{b}x x \in \mathbb{R}

と表せますね。

同様に、 l_2 上の点の座標ベクトルを  \mathbf{r} = (r_1, r_2, r_3) \in \mathbb{R}^3 とし、 l_2 の方向ベクトルを  \mathbf{s} = (s_1, s_2, s_3) \in \mathbb{R}^3 とすると、直線  l_2 上の任意の点の座標は

 \mathbf{r} + \mathbf{s}y y \in \mathbb{R}

と表せます。


 l_1 の点  P と、 l_2 の点  Q の座標をそれぞれ  \mathbf{a} + \mathbf{b}x, \; \mathbf{r} + \mathbf{s}y を用いて表したとき、2点  P, Q の間の距離の二乗  d^2(P, Q) は、次のように表されます:

 d^2(P, Q) = \| (\mathbf{a} + \mathbf{b}x) - (\mathbf{r} + \mathbf{s}y)  \|^2

ここで、 P \in l_1, Q \in l_2 を動かしたときの  d(P, Q) の最小値が  l_1, l_2 の距離というわけですね。

ベクトルのノルムの二乗は、ベクトルの内積で表せます。これを使って  d^2(P, Q) を計算すると

 \begin{align*} d^2(P, Q) &= \| (\mathbf{a} + \mathbf{b}x) - (\mathbf{r} + \mathbf{s}y)  \|^2 \\
&= \| (\mathbf{a} + \mathbf{r}) - (\mathbf{b}x + \mathbf{s}y)  \|^2 \\
&= ( (\mathbf{a} + \mathbf{r}) - (\mathbf{b}x + \mathbf{s}y)  ) \cdot ( (\mathbf{a} + \mathbf{r}) - (\mathbf{b}x + \mathbf{s}y)  ) \\
&= \| \mathbf{a} - \mathbf{r} \|^2 + 2(\mathbf{a} - \mathbf{r})\cdot (\mathbf{b}x + \mathbf{s}y) + \|\mathbf{b}x + \mathbf{s}y\|^2 \\
&= \| \mathbf{a} - \mathbf{r} \|^2 + 2(\mathbf{a} - \mathbf{r})\cdot \mathbf{b}x - 2(\mathbf{a} - \mathbf{r})\cdot \mathbf{s}y  \\
& \;\;\;\;\;\; + \|\mathbf{b}\|^2 x^2 + \|\mathbf{s}\|^2 y^2 - 2\mathbf{b}\cdot \mathbf{s} xy
\end{align*}

最後に得られた式は、大変変数が多くてややこしいですが、 \mathbf{a}, \mathbf{b}, \mathbf{r}, \mathbf{s} は定数であって、 x, y は変数だと思うと、これは  x, y についての「2次関数」ということになります。


具体的には

 F(x, y) = ax^2 + bxy + cy^2 + dx + ey + f

とおいて、係数を

 a = \|\mathbf{b}\|^2, \;\; b = -2\mathbf{b}\cdot \mathbf{s}, \;\; c = \|\mathbf{s}\|^2,
 d = 2(\mathbf{a} - \mathbf{r})\cdot \mathbf{b}, \;\; e = -2(\mathbf{a} - \mathbf{r})\cdot \mathbf{s}, \;\; f = \| \mathbf{a} - \mathbf{r} \|^2

のように設定すると、 F(x, y) = d^2(P, Q) となりますね。


そんなわけで、2変数2次関数の最小値問題ということになります。

今、 a = \|\mathbf{b}\|^2 > 0 かつ  c = \|\mathbf{s}\|^2 > 0 であることに注意しましょう。
(どちらも方向ベクトルのノルムなので。)

よって、 F(x, y) は1次式に落ちることはありません。


ここで、次節で示す2変数2次関数の一般論により、 F のヘッセ行列  H(F) の行列式が正であれば、 F(x, y) はただ一つの最小値を持ちます。ヘッセ行列とは

 \displaystyle H(F) :=  \begin{pmatrix} \frac{\partial^2 F}{\partial x^2} & \frac{\partial^2 F}{\partial x \partial y} \\
\frac{\partial^2 F}{\partial y \partial x} & \frac{\partial^2 F}{\partial x^2} \end{pmatrix}

で表される行列でした。

ヘッセ行列の行列式を計算すると

 \displaystyle \begin{align*} |H(F)| &=  \begin{vmatrix} \frac{\partial^2 F}{\partial x^2} & \frac{\partial^2 F}{\partial x \partial y} \\
\frac{\partial^2 F}{\partial y \partial x} & \frac{\partial^2 F}{\partial x^2} \end{vmatrix} \\
&= \begin{vmatrix} 2a & b \\
b & 2c \end{vmatrix} \\
&= 4ac - b^2 \\
&= 4\|\mathbf{b}\|^2 \|\mathbf{s}\|^2 - (-2\mathbf{b}\cdot \mathbf{s})^2 \\
&= 4(\|\mathbf{b}\|^2 \|\mathbf{s}\|^2 - (\mathbf{b}\cdot \mathbf{s})^2 ) \end{align*}

ということになります。

ここで

 \|\mathbf{b}\|  \|\mathbf{s}\| > |\mathbf{b}\cdot \mathbf{s}|

であれば、 |H(F)| > 0 ということになります。 \mathbf{b}, \mathbf{s} のなす角を  \theta としたとき、空間ベクトルの内積の性質より

 \mathbf{b} \cdot \mathbf{s} = \|\mathbf{b}\|  \|\mathbf{s}\| \cos \theta

であったことを思い出しましょう。上の条件は  |\cos \theta\,| < 1 ということなので、これは  \mathbf{b}, \mathbf{s} が平行でないことと同値です。

 \mathbf{b}, \mathbf{s} は、それぞれ  l_1, l_2 の方向ベクトルでしたから、これは  l_1, l_2 が平行でないという条件に他なりませんね。


したがって、 l_1, l_2 が平行でない場合は、 |H(F)| > 0 となり  F(x, y) はただ一つの最小値を持つことがわかりました。特に、定義より

  •  l_1, l_2 が交点を持つ場合、 F(x, y) の最小値は  0
  •  l_1, l_2 が交点を持たない場合(ねじれの位置)、 F(x, y) の最小値は正の値

となります。


なお、 |H(F)| = 0 であれば、 l_1, l_2 が平行であるということです。この場合は、 F(x, y) が最小値をとるかどうか、式から直ちにはわかりません。

しかしながら、そもそもの問題に立ち返って、平行な  l_1, l_2 を思い浮かべれば議論できます。 l_1, l_2 は平行なので、直線と直線の距離はどこでも一定になるわけです。



2変数2次関数の最小値

最後に

 F(x, y) = ax^2 + bxy + cy^2 + dx + ey + f

の最小値を求めることにしましょう。ただし、最小値を持つための仮定として、 a > 0, \;  c > 0 および  |H(F)| > 0 を仮定したいと思います。

このとき、 F(x, y) はただ一つの最小解を持つことを示しましょう。


方針としては「平方完成」を2回用います。

まずは、 F(x, y) x の2次式だと思って平方完成します。ここで  a > 0 なので  a で割れることに注意します。

 \begin{align*} F(x, y) &= ax^2 + (by+d)x + cy^2 + ey + f \\
&= a\left(x^2 + \frac{by+d}{a}x + \frac{(by+d)^2}{4a^2}\right) - \frac{(by+d)^2}{4a} + cy^2 + ey + f \\
&= a\left(x + \frac{by+d}{2a}\right)^2 - \frac{(by+d)^2}{4a} + cy^2 + ey + f \\
&= a\left(x + \frac{by+d}{2a}\right)^2 + \frac{4ac - b^2}{4a}y^2 + \frac{2ae - bd}{2a}y + f - \frac{d^2}{4a} \end{align*}

さらに、残った  y^2 の係数の分子  4ac - b^2 は、ヘッセ行列  H(F) の行列式そのものでした。今、 |H(F)| > 0 と仮定していますので、 4ac - b^2 で割ることは許されます。そのことを念頭に入れて、 y についての2次式を平方完成しましょう。

 \begin{align*} F(x, y) &= a\left(x + \frac{by+d}{2a}\right)^2 + \frac{4ac - b^2}{4a}y^2 + \frac{2ae - bd}{2a}y + f - \frac{d^2}{4a}  \\
&= a\left(x + \frac{by+d}{2a}\right)^2 + \frac{4ac - b^2}{4a}\left(y^2 + 2\frac{2ae - bd}{4ac-b^2}y + \frac{(2ae - bd)^2}{(4ac-b^2)^2} \right) + f - \frac{d^2}{4a} - \frac{(2ae - bd)^2}{4a(4ac-b^2)}  \\
&= a\left(x + \frac{by+d}{2a}\right)^2 + \frac{4ac - b^2}{4a}\left(y + \frac{2ae - bd}{4ac-b^2} \right)^2 + f - \frac{d^2}{4a} - \frac{(2ae - bd)^2}{4a(4ac-b^2)}  \end{align*}

というわけで、完成です!

新しい変数

 \displaystyle X = x + \frac{by+d}{2a}, \;\; Y = y + \frac{2ae - bd}{4ac-b^2}

および定数

 \displaystyle A = a, \; B = \frac{4ac - b^2}{4a}, \; C = f - \frac{d^2}{4a} - \frac{(2ae - bd)^2}{4a(4ac-b^2)}

とおけば

 \displaystyle F(x, y) = A X^2 + B Y^2 +  C

と表せます。


 A > 0 かつ  B > 0 なので、この関数の最小値は  X = 0, \; Y = 0 のとき

 \displaystyle C = f - \frac{d^2}{4a} - \frac{(2ae - bd)^2}{4a(4ac-b^2)}

であることがわかりますね。

 Y = 0 より  y = -\frac{2ae - bd}{4ac-b^2} であることがわかります。また  X = 0 より、 y の値を

 \displaystyle x + \frac{by+d}{2a} = 0

に代入することによって、 x の値も一意に定まります。

よって、 a > 0, \; c > 0, \; |H(F)| > 0 のとき、 F(x, y) が最小となる組  (x, y) が存在して、一意に定まることが示されました。


おわりに

そんなわけで、空間内のねじれの位置の場合に、2直線の距離が一意に定まることが示されましたね。そのときの点  P, Q の組も一意に定まるということでした。ひとまず安心して眠れそうです(?)。

2直線の距離の最小化問題が、2変数2次関数の最小化問題になるというのも面白いですね。たしかにこれなら最小値(=極小値)がただ一つに定まることも納得ができそうです。

それでは今日はこの辺で!


別解:共通接線を用いた証明

色々紹介しておいてアレなんですが、実はもう少し簡単に示す方法がありました。考え方としては、こちらのサイトの「裏技 共通接線」の方法がそのまま使えます。
math-juken.com


以下の流れで示すことができます:

  • ① 2直線  l_1, l_2 の共通垂線  PQ の存在が示せる。
  •  |PQ| が求める最小の距離である。


①については、上でやったように  P, Q をそれぞれ座標ベクトル  \mathbf{a}+\mathbf{b}x, \; \mathbf{r}+\mathbf{s}yで表示します。直線  PQ l_1 が垂直より、 QP 方向のベクトル  (\mathbf{a}+\mathbf{b}x) - (\mathbf{r}+\mathbf{s}y) l_1 の方向ベクトル  \mathbf{b} の内積が  0 という条件が得られます。これを立式して

 ( (\mathbf{a}+\mathbf{b}x) - (\mathbf{r}+\mathbf{s}y) ) \cdot \mathbf{b} = 0

となります。同様に、 QP 方向のベクトルと  l_2 の方向ベクトル  \mathbf{s} の内積が  0 という条件から

 ( (\mathbf{a}+\mathbf{b}x) - (\mathbf{r}+\mathbf{s}y) ) \cdot \mathbf{s} = 0

を立式します。すると、 x, y についての連立1次方程式

 \begin{cases} (\mathbf{a} - \mathbf{r}) \cdot \mathbf{b}  + \|\mathbf{b}\|^2 x  -  (\mathbf{b}\cdot \mathbf{s})y &= 0 \\
 (\mathbf{a} - \mathbf{r}) \cdot \mathbf{s}  +  (\mathbf{b}\cdot \mathbf{s})x  -  \|\mathbf{s}\|^2y &= 0 \end{cases}

が得られます。計算してみると  l_1, l_2 が平行でないとき、連立方程式の解が一意的に存在することがわかります。ゆえに、この  x, y により共通垂線と  l_1, l_2 との交点  P, Q が得られます。


②については、上のサイトで述べているような議論そのもので、直線  PQ を上から見ると  l_1, l_2 を同一平面上に置くことができ、よって  |PQ| の最小性が従う、というものです。


いやー、めちゃめちゃ簡単ですね・・・。平方完成していたのは一体何だったのでしょうか。

まぁ、でも色々な見方ができて面白かったですね!