tkenichi の日記

毒舌皮肉系恥さらし日記

方程式で定義された曲面の曲率

f:id:tkenichi:20141116160235j:plain

通常、曲面の曲率はパラメータ表示が与えられた時の式で与えられているが、実際の曲面は方程式としてあらわされることが多い。そこで、方程式が与えられているときの曲率の計算式をまとめておこう。

関数  f : \bf{R}^3 \to \bf{R} が与えられているとき、方程式  f(x,y,z) = 0 で表される曲面の曲率は以下のように計算できる。

ガウス曲率

 K = \frac{1}{|\nabla f|^4} \{ f_{x}^2(f_{yy}f_{zz}-f_{yz}^2) + 2f_{y}f_{z}(f_{zx}f_{xy} -f_{xx}f_{yz}) \\ + f_{y}^2(f_{zz}f_{xx}-f_{zx}^2) + 2f_{z}f_{x}(f_{xy}f_{yz} -f_{yy}f_{zx}) \\ + f_{z}^2(f_{xx}f_{yy}-f_{zx}^2) + 2f_{x}f_{y}(f_{yz}f_{zx} -f_{zz}f_{xy}) \}

平均曲率

 H = -\frac{1}{2|\nabla f|^3} \{ f_{xx}(f_{y}^2 + f_{z}^2) - 2f_{y}f_{z}f_{yz} \\ + f_{yy}(f_{z}^2 + f_{x}^2) - 2f_{z}f_{x}f_{zx} \\ + f_{zz}(f_{x}^2 + f_{y}^2) - 2f_{x}f_{y}f_{xy} \}

衝突の復習

f:id:tkenichi:20140818111247j:plain

古典物理学で衝突を記述する場合、重心座標系で考える場合が多いが、鏡映変換のアイディアを用いると比較的わかりやすい。鏡映変換とは、 n に直交する平面を鏡として、鏡に映る像を与える写像である。

 R_{n}(v) = v - 2 \frac{v \cdot n}{n \cdot n} n

 n が単位ベクトルの時には、より単純に  R_{n}(v) = v - 2 (v \cdot n) n と書ける。

それぞれの質量が  m_1, m_2 の2つの物体が衝突したとき、前後で運動量  p_1, p_2 の和と運動エネルギーの和 E = \frac{p_1^2}{2m_1} + \frac{p_2^2}{2m_2}が保存するとする。このとき、

 \left(\frac{p_1}{m_{1}} - \frac{p_2}{m_{2}}\right)^{2} = \left(\frac{2}{m_1}+\frac{2}{m_2}\right)E - \frac{(p_1+p_2)^2}{m_1m_2}

が成り立つので、相対速度の絶対値も保存することに注意する。

衝突によって変化する方向の単位ベクトルを  n とする。鏡映変換と同様に  n 方向成分だけ変化すると考える。それぞれの係数が符号だけ異なるとすると自動的に運動量保存は満たされるので、運動エネルギー保存の式から係数を決めればよい。衝突後の運動量を  p_1^{\prime}, p_2^{\prime} とすると以下のようになる。

 p_1^{\prime} = p_1 - \frac{m_1 m_2}{m_1 + m_2} 2 \left(\left(\frac{p_1}{m_1} - \frac{p_2}{m_2}\right) \cdot n \right) n
 p_2^{\prime} = p_2 + \frac{m_1 m_2}{m_1 + m_2} 2 \left(\left(\frac{p_1}{m_1} - \frac{p_2}{m_2}\right) \cdot n \right) n

これを写像 c_{n}(p_1,p_2) = (p_1^{\prime},p_2^{\prime}) とすると、簡単な計算で

 c_{n}(p_1^{\prime}, p_2^{\prime}) = (p_1, p_2)

がわかる。これはいわゆる逆衝突の存在を表している。

ちなみに、剛体球の衝突の場合、2つの球の中心を結んだベクトルを正規化したものが  n になる。

運動量の復習

f:id:tkenichi:20140819090024j:plain

シンプレクティック多様体  (M,\omega) にリー群  G \omega を保つように作用しているとする。運動量写像とは  M からリー環の双対  \mathcal{G}^{*} への写像
 \mu: M \rightarrow \mathcal{g}^{*}
であって、 G 同変かつ、リー環の元  \xi \in \mathcal{G} に対して、
 \mu_{\xi} = \xi \circ \mu : M \to \mathcal{G}^{*} \to \mathbf{R} と置くとき、
 d \mu_{\xi} = i_{\xi^{\sharp}} \omega
が成り立つものをいう。ただしここで  \xi^{\sharp}リー環の基本ベクトル場である。
後半の条件の言いかえとして、 \mu_{\xi}のハミルトンベクトル場が  \xi^{\sharp} と言ってもよい。

例1:
 \mathbf{R}^3 の余接空間  T^{*}\mathbf{R}^3 の座標を底空間を  q 余接ベクトルを  p として  (q_1,q_2,q_3,p_1,p_2,p_3) = (q,p) とする。シンプレクティック構造を  \omega = dq\wedge dp とする。
 G=\mathbf{R}^3 の作用を底空間の平行移動とする。 G \ni s = (s_1,s_2,s_3) とするとき、 s \cdot (q,p) = (q+s,p)。 この時運動量写像 \mu: T^{*}\mathbf{R}^3 \to \mathbf{R}^3, (q,p) \mapsto p で与えられる。

例2:
 (\mathbf{R}^2, dx_1 \wedge dx_2) に対して、回転群

 SO(2) = \left\{ \left( \begin{array}{cc} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{array} \right) \right\}

が作用しているとする。リー環とその双対を

 so(2) = \left\{ \left( \begin{array}{cc} 0 & -a \\ a & 0 \end{array} \right) \right\}
 so^{*}(2) = \left\{ \left( \begin{array}{cc} 0 & -b \\ b & 0 \end{array} \right) \right\}
 so(2) \times so^{*}(2) : <\xi, \eta> = \frac{1}{2} \mbox{tr}( \xi \eta^{t} )

とすると運動量写像
 \mu : \mathbf{R}^2 \to so^{*}(2), (x,y) \mapsto \frac{1}{2}(x^2+y^2) \left( \begin{array}{cc} 0 & 1 \\ -1 & 0 \end{array} \right)
で与えられる。

振り子と楕円関数

f:id:tkenichi:20140621130309j:plain

単振り子は振幅が大きくないときには、単振動とみなすことができると考える。振幅が大きいときは楕円関数で記述され、周期は完全楕円積分で表すことができる。以下に簡単にまとめておく。

単振り子の運動方程式の導出

長さlの糸の先に質量mのおもりをつける。糸の固定点を原点、水平方向にx軸、鉛直方向にy軸を取って、鉛直方向からの糸のなす角をθとする。時間に関する微分を変数の上にドットをつけて表す。

f:id:tkenichi:20140727190610p:plain

質点の座標 (x,y) と角θの間の関係式は、
 x = l \sin(\theta), y = l \cos(\theta)
 \dot{x} = l \dot{\theta} \cos(\theta) = y \dot{\theta}, \dot{y} = - l \dot{\theta} \sin(\theta) = - x \dot{\theta}
 \ddot{x} = \dot{y} \dot{\theta} + y \ddot{\theta}, \ddot{y} = - \dot{x} \dot{\theta} - x \ddot{\theta}
から
 \dot{\theta} = \frac{1}{l^2}(y\dot{x}-x\dot{y})
 \ddot{\theta} = \frac{1}{l^2}(y\ddot{x}-x\ddot{y})
が成り立つ。

糸の張力をT、重力をgとすると、それぞれの方向の運動方程式
 m\ddot{x} = -T \sin(\theta) \\ m\ddot{y} = mg - T \cos(\theta)
となる。上の関係式からθの微分方程式にすると
 \ddot{\theta} = -\frac{g}{l} \sin(\theta) = -\omega^2 \sin(\theta)
になる。ここで  \omega = \sqrt{\frac{g}{l}} とした。

振幅の大きいとき

振幅が大きいとき、 \theta \simeq \sin(\theta) という近似を行わずに計算する。
 \ddot{\theta} + \omega^2 \sin\theta = 0 の両辺に  \dot{\theta} をかけて変形すると
 \dot{\theta}\ddot{\theta} + \dot{\theta} \omega^2 \sin \theta = 0
 \frac{d}{dt} \left( \frac{1}{2} (\dot{\theta})^2 - \omega^2 \cos \theta \right) = 0
 \frac{1}{2} (\dot{\theta})^2 - \omega^2 \cos \theta = \mbox{constant}
 \thetaの最大値(すなわち振幅)を \alphaとすると、 \theta = \alphaのとき \dot{\theta} = 0なので、
 \frac{1}{2} (\dot{\theta})^2 - \omega^2 \cos \theta = -\omega^2 \cos \alpha
 \frac{1}{2} (\dot{\theta})^2 = \omega^2 \cos \theta -\omega^2 \cos \alpha = 2\omega^2(\sin^2 \frac{\alpha}{2} - \sin^2 \frac{\theta}{2})
 \dot{\theta}>0 の範囲で
 \dot{\theta} = 2 \omega \sqrt{\sin^2 \frac{\alpha}{2} - \sin^2 \frac{\theta}{2}}
を得る。ここで、 k = \sin \frac{\alpha}{2} とおいて、 \sin\frac{\theta}{2} = k\sin \phiで変数変換すると、
 \cos\frac{\theta}{2}d\theta = k\cos\phi d\phi
より
 d\theta = \frac{2k\cos\phi}{\sqrt{1-k^{2}\sin^{2}\phi}} d\phi
を得る。もとの微分方程式に変数変換を適用すると
 d\theta = 2 \omega \sqrt{\sin^2 \frac{\alpha}{2} - \sin^2 \frac{\theta}{2}}dt
 \frac{2k\cos\phi}{\sqrt{1-k^{2}\sin^{2}\phi}} d\phi = 2 \omega \sqrt{k^2 - k^2 \sin^2 \phi}dt
 \frac{1}{\sqrt{1-k^{2}\sin^{2}\phi}} d\phi = \omega dt
となって、両辺を積分すると、第1種楕円積分を用いて
 F(k,\phi) = \omega t
が得られる。kを母数とする第1種楕円積分逆関数、Jacobiの楕円関数を用いて
 \phi = \mbox{am}(\omega t)
 k \sin \phi = k \sin( \mbox{am}(\omega t) )
 \sin \frac{\theta}{2} = k \mbox{sn}(\omega t)
が得られる。

単振り子 単振動
振幅  \alpha \\ (k = \sin \frac{\alpha}{2})  \alpha
方程式  \ddot{\theta} = -\omega^2 \sin\theta  \ddot{\theta} = -\omega^2 \theta
t=0のとき\theta=0の解  \theta = 2\sin^{-1}(k\mbox{sn}(\omega t))  \theta = \alpha\sin(\omega t)
t=0のとき\theta=0導関数  \dot{\theta} = 2\omega k \mbox{cn}(\omega t)  \dot{\theta} = \omega \alpha \cos(\omega t)
周期  \frac{4}{\omega}K(\sin\frac{\alpha}{2})  \frac{2\pi}{\omega}

最小交叉数6の結び目

f:id:tkenichi:20140524100755j:plain

WebGLで結び目を描くことの続き。すべて12の辺で表現し、上から順に14個、18個、18個の三角形でザイフェルト曲面を表現している。これは結び目の種数を与えるザイフェルト曲面でもある。

隣接する三角形が重ならないようにするには、どの4個の頂点をとっても同一平面上にないようにしなければならない。

最小交叉数5以下の結び目

f:id:tkenichi:20140501122850j:plain

WebGLで結び目を描くことの続き。ダブルクリックすると、結び目とザイフェルト曲面が切り替わります。

いわゆるクローバー結び目(Trefoil knot)

最小交叉数が5の結び目

Figure Eight 結び目

f:id:tkenichi:20140322105357j:plain

8の字結び目を折れ線で表現したときのザイフェルトポリゴンを表示するのに WebGL を試してみた。 予想以上に使いやすいし、速度もそれほど遅くない。