IA2 - n維球上的點

馬可夫過程 (Markov process) 生成三維球面上的點,此時點的位置不是均勻分佈,而是猶如醉漢走路 (drunkard's walk) 的情況。馬可夫過程在針對自然界運作或是社會結構演變的模擬中扮演著核心的角色! 一、二維圓盤的case 這次的專題非常簡單,我們先從二維的情況開始,二維球面上的點即為是分散在圓周上的點。我們知道如何產生散布在(x,y)上的點 (圖1),但如何將之收縮到單位圓的圓周上呢? 圖1. 均勻散布在邊長為1的正方形內的藍點以及單位圓 (紅) 的範圍 在圖1我們產生了1000個點,以及對應單位圓圈起來的面積。這次我們並不是要估計π,而是要找出哪些點分佈在紅色的圓周上,亦即產生出散布在單位圓上的點。你可能想說可以用以下的方式來實現 (以二維的case為例): 產生N的點的座標分別在(−1,1)之間 x=rand(−1,1) y=rand(−1,1) if (x2+y2=1): return (x,y) else: return 0 上述的算法在第2步就是去篩出隨機生成的N個點中,哪些是符合半徑等於1的狀況 (即這些點在紅色的圓上),如果不等於1則將之刪去。我不做計算,但我可以打包票,上面的算法接受率 (acceptance rate) 是超級低,生成數以萬計的點可能都不見得有一個是符合半徑等於1的條件。 但換個角度來看生成的點,點座標(x,y)其實也代表著向量,既然單位圓有半徑為1,我們只要將每個點的向量都做歸一化的動作,我們就可以得到單位向量(x′,y′) (即向量距原點的長度為1),所以可以保證歸一化後的單位向量一定會在圖1的紅色圓上,而未歸一化前的點座標則用來決定在極座標上的角度ϕ,即 ϕ=tan−1(yx). 示意圖如圖2。這樣不僅保證所有的點都在單位圓上,又由於點是隨機生成的,在圓周上的位置ϕ也是在0和2π之間均勻分佈。 圖2. 歸...