読者です 読者をやめる 読者になる 読者になる

倭算数理研究所

科学・数学・学習関連の記事を、「倭マン日記」とは別に書いていくのだ!

n次元単位球面上・単位球体内の一様分布

極座標 シミュレーション技法 高次元

単位球体内の一様分布を生成する方法を見ていくシリーズ(目次)& 倭式極座標を見ていくシリーズ(目次)。 前回列挙した、一般次元での単位球体内・球面上の一様分布を任意の次元に拡張してみます。

球面上の一様分布は帰納的な定義(2次元低い一様分布を使って定義)しており、球体内の一様分布は1次元低い球面上の一様分布の式を用いて定義しています:

  • 単位球面上の一様分布
    • 【基底部】1次元球面(円周)、2次元球面(球面)上の一様分布
    • 再帰部】n 次元球面上の一様分布 ({ n \ge 3} ) ・・・ (n-2)次元球面上の一様分布を使って定義
  • 単位球体内の一様分布
    • n 次元球体内の一様分布 ( { n \ge 2 } ) ・・・ (n-1) 次元球面上の一様分布を使って定義

前回は単位球体内の一様分布から { R=1 } とおいて単位球面上の一様分布を導出しましたが、ここでは単位球面上の一様分布を先に定義しています。 以下では、変数 { X \in [a,\,b] } に対して、{ \tilde{X} }区間 { [a,\,b] } 間に一様分布する変数とします。

1, 2次元球面上の一様分布

単位球面上の一様分布を再帰的に定義するために、まずは基底部再帰を止める部分)の定義から。 再帰的な定義は n 次元単位球面上の一様分布を (n-2) 次元のもので定義するので、基底部は1, 2次元の2つが必要。 1次元球面(円周)上の一様分布は簡単。 ただし、倭式極座標に合わせた形にしてます(前回参照):

  { \displaystyle\begin{align*}
    &\begin{cases}
         x_1 = \sin\tilde{\varphi}_1 \\
         x_2 = \cos\tilde{\varphi}_1
    \end{cases} &
    (0 \le \varphi_1 < 2\pi)
\end{align*}}

2次元球面(通常の球面)上の一様分布も倭式極座標に合わせて書いて、以下のようになります:

  { \displaystyle\begin{align*}
    &\begin{cases}
        x_1 = \tilde{\Psi} \\
        x_2 = \sqrt{1-\tilde{\Psi}^2} \sin\tilde{\varphi}_1 \\
        x_3 = \sqrt{1-\tilde{\Psi}^2} \cos\tilde{\varphi}_1
    \end{cases} &
    \begin{pmatrix}
        -1 \le \Psi \le 1 \\
        0 \le \varphi_1 < 2\pi
    \end{pmatrix}
\end{align*}}

n 次元球面上の一様分布 { x_i \,(n \ge 3) }

次は本丸の再帰の定義。 n 次元球面上の一様分布は、n-2 次元球面上の一様分布を用いて定義します。 この定義は倭式極座標再帰定義から来ています(偶数次元奇数次元の倭式極座標の定義を参照)。 { y_i\,(1 \le i \le n-1) } が (n-2) 次元球面上の一様分布として

  { \displaystyle\begin{align*}
    &\begin{cases}
        x_i &= y_i  (\tilde{\Theta}_m)^{\frac{1}{n-1}} \\
        x_n &= \sqrt{1-(\tilde{\Theta}_m)^{\frac{2}{n-1}}} \sin\tilde{\varphi}_{m+1} \\
        x_{n+1} &= \sqrt{1-(\tilde{\Theta}_m)^{\frac{2}{n-1}}} \cos\tilde{\varphi}_{m+1}
    \end{cases} &
    \begin{pmatrix}
        0 \le \Theta_m \le 1 \\
        0 \le \varphi_{m+1} < 2\pi
    \end{pmatrix} \\[4mm]
    &\textrm{where} \quad
    m = [\tfrac{n-1}{2}] 
\end{align*}}

ここで { [\cdots] }ガウス記号で、{ [x] }{ x } を超えない最大の整数を表します。 ただし、これは偶数次元と奇数次元をまとめて書きつつ、変数 { \Theta,\,\varphi } の番号付けを倭式極座標に合わせるためにしている小細工で、あまり詳細を気にする必要はありません。 また、倭式極座標を定義した際の { \theta,\,\varphi } と添字がずれていますが(倭式極座標のときは { \theta _{m-1},\,\varphi_m } だった)、これは n 次元球と n 次元球で変数の添字がずれるためです。 これまた、あまり気にする必要はありません。 ちなみに

  { \displaystyle\begin{align*}
    (\Theta_m)^{\frac{1}{n-1}} &= \sin\theta_m &
    \sqrt{1-(\Theta_m)^{\frac{2}{n-1}}} &= \cos\theta_m
\end{align*}}

に対応しています。

便利のため、(n-1) 次元球面上の一様分布を計算する公式も書き下しておきます。 これは上記の公式で { n \rightarrow n-1 } としただけのものです。 { y_i\,(1 \le i \le n-2) } を (n-3) 次元球面上の一様分布として:

  { \displaystyle\begin{align*}
    &\begin{cases}
        x_i &= y_i  (\tilde{\Theta}_m)^{\frac{1}{n-2}} \\
        x_{n-1} &= \sqrt{1-(\tilde{\Theta}_m)^{\frac{2}{n-2}}} \sin\tilde{\varphi}_{m+1} \\
        x_n &= \sqrt{1-(\tilde{\Theta}_m)^{\frac{2}{n-2}}} \cos\tilde{\varphi}_{m+1}
    \end{cases} &
    \begin{pmatrix}
        0 \le \Theta_m \le 1 \\
        0 \le \varphi_{m+1} < 2\pi
    \end{pmatrix} \\[4mm]
    &\textrm{where} \quad
    m = [\tfrac{n}{2}]-1
\end{align*}}

{ n } の範囲は { n \ge 4 } となります({ n-1 \ge 3 })。

n 次元球体内の一様分布 { X_i\, (n \ge 2 ) }

最後は n 次元球体内の一様分布。 これは (n-1) 次元球面の一様分布を使うと簡単に書けます。 { x_i \; (1 \le i \le n) } を ( { n-1 } ) 次元球面上の一様分布として

  { \displaystyle\begin{align*}
    X_i &= \tilde{R}^{\frac{1}{n}} x_i & (0 \le R \le 1)
\end{align*}}

となります。

  { \displaystyle\begin{align*}
    R^{\frac{1}{n}} = r
\end{align*}}

に対応しています。 これで n 次元単位球面上、単位球体内の一様分布を計算する公式が書き下せました。 一般化するとちょっとごちゃごちゃしてる感が否めませんが、一様分布と簡単な初等関数しか使ってません。 これも倭式極座標のなせる技。 後はこれを使ってこれらの一様分布を生成するコードを書いてみないとね。 そのうちに。

Javaによるアルゴリズム事典

Javaによるアルゴリズム事典

計算物理学入門

計算物理学入門

  • 作者: ハーベイゴールド,ジャントボチニク,Harvey Gould,Jan Tobochnik,鈴木増雄,石川正勝,溜渕継博,宮島佐介
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2000/12
  • メディア: 単行本
  • 購入: 1人 クリック: 28回
  • この商品を含むブログ (45件) を見る