5

球体上の粒子を使用して Metropolis モンテカルロ シミュレーションを行っていますが、特定の時間ステップでのランダムな動きについて質問があります。

そもそも球上のランダムな点の均一な分布を取得するには、単純な最も単純な方法 (一定の R で球座標を使用し、ランダムな角度のシータとファイを選択する) を使用するだけでは不十分であることを理解していますが、たとえば使用する必要があります。これらの方法のいずれか: http://mathworld.wolfram.com/SpherePointPicking.html

球体上のモンテカルロの別のコードを見ると、ランダムな動きを生成するかなり複雑な方法がわかります。ランダムな粒子を選択し、それを北極に移動する回転行列を計算し、特定の長さ未満のランダムなデカルト ベクトルを見つけて移動します。それを北極に合わせ、デカルト ベクトルを正規化し、元の粒子位置の近くまで回転させます。

これはすべて、偏りのない新しいランダムな位置を取得するためです。細かいバランスに繋がっているのではないかと思いますが、完全には理解できません。しかし、これを行うためのより簡単な (つまり、より高速な) 方法があるはずだと私は感じています。実際、私は直感的に、この場合、2 つの小さなランダムな角度 theta と phi を見つけて、それらを粒子の位置に追加しても問題ないと感じています。それとも、これは間違いでしょうか?

4

2 に答える 2

1

説明するアルゴリズムの背後にある理論的根拠は、ポイントが極にマッピングされ、接平面が生成され、デカルトベクトルが通常の方法で均一に生成され、これが球にマッピングされ、最終的に回転が逆になることです。接平面は導関数であるため、大きな球と小さなステップの場合、これは適切な近似値です。

もっと上手くできますか?または、少なくとも他の誰かのコードを盗みますか?多分。これを考慮してください。MathWorldに関するその記事のおかげで、球上にランダムな点の均一な分布をすでに生成できます。

一般性を失うことなく、現在の点を球の極と見なすことができます。MathWorldアルゴリズムを使用してランダムなポイントを生成する場合、結果のポイントは任意の方位角にある確率が均一であることがわかります。

次に、問題は、2つのポイントのファイ/シータ値が与えられた場合に球上の方位を見つけ、その方位の大円ルートに沿って増分表面距離で新しいポイントを生成することになります。

この新しいバージョンの問題では、お気に入りのGISまたは投影ライブラリをインポートし、地球の球形モデル(適切なスケーリングを使用)を使用することで、必要なすべてのコードを取得できます。

多くの人がこのサイトを球形ナビゲーションについてたくさんの良い数学を持っていると言及しているようです。

于 2012-10-15T18:32:40.693 に答える
0

自分でコメントを使って上記のコメントに答えたいのですが、コメント用に予約されている限られたスペースでは答えられません。これがガイドラインを乱用する場合は申し訳ありません。

あなたが尋ねたので、そして誰かがここにたどり着いた場合に備えて-私はその質問にいくつかの新しい洞察を持っています:

ここで本当に心配しなければならないのは、詳細釣り合いです。P(a)が状態aにある確率であり、P(a-> b)が状態bに遷移する確率である場合、詳細釣り合いにはP(a)P(a-> b)= P(b)が必要です。 P(b-> a)。

メトロポリスアルゴリズムは基本的に、P(b)/ P(a)> 1の場合はP(a-> b)= 1とし、それ以外の場合はP(a-> b)= P(b)/ P(a)にすることでこれを満たします。私の(量子力学)システムでは、波動関数の2乗であるP(a)〜| psi(a)| ^ 2を使用します(統計力学アプリケーションでは、P(a)〜exp [-beta * E]を使用すると思います) 。

角度空間{theta、phi} = {t、p}の一様分布から得られたステップを持つ球でこれを使用する場合の問題は、次のとおりです。特定の角度t(1つの測定角度)を持つ点にいるとします。 z軸に沿った北極から)。表面要素dS=sin(t)dt dpから、ランダムな角度変位がDtおよびDpの場合、選択された新しい試行点は領域S = 4 * Dp * sin(Dt)* sin(t)内にあることがわかります。与えられた点p_bを選ぶチャンスは〜1 / S〜1 / sin(t)です。

| psi(a)| ^ 2を評価することとは別に、特定のポイントを試すこの確率は、もちろんP(a-> b)に影響します。実際、後者を係数sin(t)で分割することがわかります。したがって、詳細釣り合いを保存する簡単な方法の1つは、同じ値を掛けることです。P(a-> b)-> P(a-> b)sin(t)ここで、tは粒子aのシータ角度です。

これにより、詳細釣り合いが復元されます。もう1つの質問は、極の近くの粒子のステップ長は小さいが、受け入れ確率が大きいため、これが収束などにどのように影響するかということです。

于 2012-10-16T15:19:34.873 に答える