亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

球體上兩點之間平均距離預期值的偏差

球體上兩點之間平均距離預期值的偏差

慕桂英4014372 2022-12-20 13:55:34
我試圖通過取多個隨機案例的平均值來驗證各種 3-D 和 2-D 結構中兩點之間的平均距離。幾乎一直以來,除了球體表面上的點外,我都獲得了相當不錯的準確度。我的代碼使用受此答案啟發的高斯分布(請參閱第二個投票最多的答案)這是蟒蛇代碼:import math as mfrom random import uniform as usum = 0for i in range(10000):    x1 = u(-1, 1)    y1 = u(-1, 1)    x2 = u(-1, 1)    y2 = u(-1, 1)    z1 = u(-1, 1)    z2 = u(-1, 1)    if x1 == y1 == z1 == 0:        sum += m.sqrt((x2) ** 2 + (y2) ** 2 + (z2) ** 2)    elif x2 == y2 == z2 == 0:        sum += m.sqrt((x1) ** 2 + (y1) ** 2 + (z1) ** 2)    else:        x1 /= m.sqrt(x1 ** 2 + y1 ** 2 + z1 ** 2)        y1 /= m.sqrt(x1 ** 2 + y1 ** 2 + z1 ** 2)        z1 /= m.sqrt(x1 ** 2 + y1 ** 2 + z1 ** 2)        x2 /= m.sqrt(x2 ** 2 + y2 ** 2 + z2 ** 2)        y2 /= m.sqrt(x2 ** 2 + y2 ** 2 + z2 ** 2)        z2 /= m.sqrt(x2 ** 2 + y2 ** 2 + z2 ** 2)        sum += m.sqrt((x1 - x2) ** 2 + (y1 - y2) ** 2 + (z1-z2) ** 2)print(sum/10000)預期值為 4/3,此處顯示可以說絕對差別不是很大。但在任何運行中,與預期值的百分比偏差都在 1% 左右。另一方面,在具有其他形狀和相同數量隨機案例的所有其他類似程序中,百分比偏差平均約為 0.05%。此外,代碼返回的值始終小于 4/3。這是我最關心的問題。我的猜測是我以錯誤的方式實現了算法。任何幫助表示贊賞。
查看完整描述

2 回答

?
繁星點點滴滴

TA貢獻1803條經驗 獲得超3個贊

兩個點的初始隨機值包含在立方體中,而不是球體中。在按 1/length 縮放每個矢量后,矢量位于單位球體上,但它們在球體表面上分布不均勻。


與每個面的中心相比,您往往會在立方體的角附近獲得更多矢量。由于向量傾向于聚集在區域中,因此它們之間的距離平均值小于 4/3。


這將達到目的: https ://mathworld.wolfram.com/SpherePointPicking.html


此代碼對我有用:


from math import sqrt

from random import uniform



sum2 = 0

size = 0

while size < 100000:

    x1 = uniform(-1, 1)

    y1 = uniform(-1, 1)

    x2 = uniform(-1, 1)

    y2 = uniform(-1, 1)

    z1 = uniform(-1, 1)

    z2 = uniform(-1, 1)


    r1 = sqrt(x1**2 + y1**2 + z1**2)

    r2 = sqrt(x2**2 + y2**2 + z2**2)

    if r1 > 1 or r2 > 1 or x1==y1==z1==0 or x2==y2==z2==0: continue

    size += 1

    x1 /= r1

    y1 /= r1

    z1 /= r1

    x2 /= r2

    y2 /= r2

    z2 /= r2

    sum2 += sqrt((x1 - x2) ** 2 + (y1 - y2) ** 2 + (z1 - z2) ** 2)

print(sum2/size)

輸出是:


1.3337880809331075


查看完整回答
反對 回復 2022-12-20
?
HUH函數

TA貢獻1836條經驗 獲得超4個贊

正如所解釋的那樣,這個小型 MC 模擬的隨機抽樣沒有以正確的方式進行。

您想要提取均勻分布在球體表面的隨機點。最簡單的方法是使用極坐標并隨機選擇角度 theta(0-pi)和 phi(0-2pi)。

如果你想保持笛卡爾坐標,你必須使用已知的變換矩陣將你的分布從笛卡爾坐標系轉換為 3-d 極坐標系。


查看完整回答
反對 回復 2022-12-20
  • 2 回答
  • 0 關注
  • 148 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號