Pappus-Guldinus theorem

パップス・ギョルダンの定理です.

回転体の体積を高速で求める必要があり, 色々調べてみるとかなり使い勝手が良かったので紹介.

定理. 回転軸Aを固定し, Aと交わらない任意に与えられた二次曲線をC:s(x,y)=0,\ \alpha\leq x\leq \beta,\ \gamma\leq y \leq\deltaとする(一般の, C^\infty級のもので, 二次曲線の端点とAは接触しても良い). このとき, Aを中心に回転させた回転体の体積Vは, Cの面積S, 重心とAとの距離Lに対し,

    \[V=2\pi S L\]

を満たす.

※座標系が直交でない場合は基底を正規化すれば常に直交座標を取れるので, 以下では直交座標で議論します((u, v)座標系で表される二次曲線s'(u,v)の直交座標系における関数は, 座標変換を与える同相写像(u,v)=\phi(x,y)に対し, s=s'\circ\phiです).

以下比較のため通常の回転体の体積の求め方です.

上で注意した座標変換, 平行移動, 鏡映を合成して, 曲線を定義する関数sに繰り込んでしまえば, x軸を回転軸とし, sのグラフが常に上半平面にあるようにすることができる. C上ヤコビアンJ_s\neq 0を満たす任意の点(とその近傍)でy=g(x),\ \forall x\in U(p,\epsilon))となるものが存在する. 特にpの付近で多価となるものはこのようなyは一意的には定まらないが, 直線x=pから曲線Cが切り取る長さの総和をすべてのxについてr(x)と定義すれば, これは回転させる時の半径を与える. ∴V=\pi\int_\alpha^\beta r(x)^2dx

この体積の求め方は分かりやすいですが, 計算量においてパップス・ギョルダンの方法に劣ることがある場合は次のような時です.

  • 多価である場合: 場合分けし, 各々の切り取る切片の総和
  • 左右対象である場合: 計算量がどちらも半分になる

ギョルダンの方法では, まずCの重心座標を求める必要があります. 上と同様Cの面積をSとすれば, 重心の座標(g_x,g_y)は次で与えられます.

    \[(g_x,g_y)=S^{-1}(\int_\alpha^\beta xdS_x,\int_\gamma^\delta ydS_y)\]

ここでdS_x,\ dS_yは, それぞれx方向, y方向に積分する時の微小面積要素で, dS_x

「xを固定した時のグラフの(n-1)次元体積, つまりyの幅をxの関数とみて表したもの×dx」

のこと. dS_yはyの関数×dyです.

※特に今の場合左右対称であれば, g_x = S^{-1}\int^{-\alpha}^\alpha xdS_xは, 面積要素が偶関数, 重み(x)が奇関数で, その積は奇関数. つまり積分値0になります.

e.g.1

s(x,y)=x^2+y^2-1,\ x\in [-1,1],\ y\in [0,1]. x軸中心に回転させて単位球の体積を得る.

対称性からg_x = 0. よってg_yを求める. y方向への面積要素は, yを固定した時の切り口の長さ×dyだから, x=\pm\sqrt{1-y^2}の差を取ってdS_y=2\sqrt{1-y^2}dyを得る. そこで重心から回転軸までの距離Lはそのまま重心のy座標でよくて,

    \[\begin{array}{lcl} L &=& S^{-1} g_y \\ &=& S^{-1} \int_0^1 2y \sqrt{1-y^2}dy \\ &=& 2S^{-1} \int_0^{\pi/2} \sin\theta cos^2\theta d\theta \\ &=& 2S^{-1} \int_0^{\pi/2} d(-\cos\theta)- \sin^3\theta d\theta \\ &=& 2S^{-1} ( 1 - \int_0^{\pi/2} \sin^3\theta d\theta ) \\ &=& 2S^{-1} ( 1 - 2/3 ) = S^{-1}2/3 \end{array}\]

よってV=2\pi SL = 4\pi/3.

※途中の計算にはWallisの公式\int^{\pi/2}_0 \sin^n\thetad\theta =\int^{\pi/2}_0 \cos^n\thetad\theta = \frac{(n-1)!!}{n!!}r_nを使うなどして早く解けるようにするのが良い(r_n=\begin{cases}\pi/2 \ (n\simeq 0\mod 2) \\ 1 \ (n\simeq 1\mod 2) \end{cases})

e.g.2

y=x+1y=\cosh(x)とで囲まれた部分をy=x+1を軸に回転させた体積. つまりy=\cosh(x)-1のグラフを原点中心に-3\pi/4回転させたものの第一象限にある部分.

    \[\begin{array}{lcl} (x,\cosh(x)-1)&\mapsto& \begin{pmatrix}\cos(3/4\pi) & -\sin(3/4\pi)\\ \sin(3/4\pi) & \cos(3/4\pi)\end{pmatrix}{}^t(x,\cosh(x)-1) \\ &=&\psi(x) \\ &=& 1/\sqrt{2}\begin{pmatrix} -x-\cosh(x)+1 \\ x-\cosh(x)+1\end{pmatrix} \end{array}\]

が曲線を定めるのだが, これはグラフ

cosh_zeros

から分かるように, x=0ともう一つx=8/5付近で零点を持つ. この点をρと書くことにする.

    \[\tau(x)=\begin{cases} (0,2x\rho) & (0\leq x \leq 1/2)\\ \psi(2\rho (1-x)) & (1/2\leq x \leq 1) \end{cases}\]

と定義すると, 弧のベクトル場を定義するC^\infty級ベクトル値関数である. グリーンの定理の帰結から, \iint_C {\rm rot}G dV=\oint_{\partial C}Gである(ここで{\rm rot}G=x,\ yとなるよう適当に選べば, G=(0,x^2/2),\ (-y^2/2,0)として良い).

Sg_x=\oint_{\partial C}G d\tau =\int_0^1 G(\tau(t))\tau'(t)dt等となるが, t\in [0,1/2]において左辺が0になるのでこれは省くと,

    \[\begin{array}{lcl} && \int_{1/2}^1 G(\tau(t))\tau'(t)dt \\ &=& \frac{\rho\sqrt{2}}{4} (\sinh(2\rho(1-t))-1)(2\rho(1-t)+\cosh(2\rho(1-t))-1)^2 \end{array}\]

等となる. 計算は非常に複雑だが, この方法で線積分に帰着させることができる.

————————-
2015/03/15 00:30:53

関数が多価の場合に有用ではあるが, 線積分に依らないと正しい値はでないことが, 後で簡単な考察により分かった. 多価の部分を切り詰めると体積が小さくなってしまうから.

コメントする