球面上に均一な点を配置したい。約N個ならばこんな感じでやれるが、厳密にN 個おきたい。 実装が簡単なこれをやってみる。 そもそも、なぜ均一な点を球面上に配置したいかというと、基準点集合として扱えるからである。計算機では3次元データは離散的に持っており、ある球面上の点と別の物体の球面上の点を比較したいときに、両者で揃っていて、なおかつ有限個でありながら無数の点があれば離散でも連続っぽく扱えるため、比較がなんとかできるようになる。だから均一な点をたくさん発生させたい。 しかしながら、数学的に厳密な球面上の均一配置は不可能である。正多面体を考えて、その頂点に点を配置させれば、厳密に均一な点が配置できるが、正多面体は四、六、八、十二、二十に限られているので、たくさん均一な点を置きたいときには不便である。 球面上にランダムに点を発生させたときは、球面全体で見れば均一だが、局所的には疎だったり密だった
なんとなーく頭でわかっているつもりになっていたものをちゃんと手を動かしてやっておきたい。 まず、インポータンスサンプリングについて一言で説明しておくと 「ある量の期待値を計算したいという状況において、その確率変数が大きな値を取る個所を重点的*1にサンプリングしてやることで、期待値評価の精度をあげる手法」 ということができる。 問題設定としては以下のような期待値評価をモンテカルロ法で計算したい、そんな状況を考える。 意味合いとしては「指数分布に従うxを使って正規分布(ガウシアン)的な関数の期待値を評価したい」ということ。 ここで,は適当に決める定数で、今回はそれぞれ10000, 6と設定した。 この積分自体は解析的に計算できて となって、以下ではこの答えをきちんとモンテカルロ法で再現できるかどうかというのが問題になる。 まずはパス数を1,000パスとしてR言語を使って評価したい関数を定義する
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く