中子穿牆問題的MonteCarlo求解方法

2021-10-12 10:35:31 字數 2477 閱讀 3294

​ 如下圖所示,代表乙個中子穿過用於遮蔽中子的鉛牆的示意圖。鉛牆的高度遠大於左右的厚度。設中子垂直由左端進入鉛牆,鉛牆中前行乙個單位距離後與乙個鉛原子碰撞。此時會改變方向,但是此時改變的方向是任意的,並且能繼續執行乙個單位後與另乙個鉛原子碰撞。這樣下去,如果中子在鉛牆裡消耗掉所有的能量或者從左端溢位即被視為中子被鉛牆擋住。但是,如果中子由右端溢位,那麼我們就視作中子溢位。假設穿牆的厚度為5個單位,能量為可以執行7個單位,每執行乙個單位後視為中子會發生碰撞,求中子溢位的概率?

​ 我們關心的是每一次碰撞後中子在x

xx軸方向前進了多少。所以行進方向是正/負對結果影響不大,我們只考慮正值情況。用計算機抽樣θi∼

u(0,

π)i=

1,2..7

\theta_i \sim u(0,\pi)\quad i = 1,2..7

θi​∼u(

0,π)

i=1,

2..7

,看經過7次碰撞後,有多少能超過牆的右端。

​ s te

p1:step1:

step1:

隨機產生θi∼

u(0,

π)i=

1,2..7

,\theta_i \sim u(0,\pi) \quad i = 1,2..7,

θi​∼u(

0,π)

i=1,

2..7

,令初值cou

nt=0

。count = 0。

count=

0。​ ste

p2:step2:

step2:

求s =∑

ijco

s(θi

)j=j

+1s = \sum_^j cos(\theta_i)\quad j = j+1

s=∑ij​

cos(

θi​)

j=j+

1.​ s te

p3:step3:

step3:

判斷如果s≥5

s \geq 5

s≥5或者s≤0

s \leq 0

s≤0。

​ s te

p4:step4:

step4:

如果s ≥5

,cou

nt=c

ount

+1s \geq 5,count = count+1

s≥5,co

unt=

coun

t+1。否則轉向ste

p1step1

step

1,直到到達總的實驗次數。

​ 求解用mat

labmatlab

matlab

求解,易如反掌。

n = 1e6;%設定總實驗次數

countsuccess = 0;

countleft = 0;

countlose = 0;

for i = 1:n

theta = unifrnd(0,pi,[1,7]);

k = 1;

s = 0;

while k<=7

s = s + cos(theta(k));

if s >= 5

countsuccess = countsuccess+1;

break;

elseif s<=0

countleft = countleft + 1;

break;

endk = k + 1;

endif k == 8 %此時正好能量消耗完

countlose = countlose + 1;

endendpsuccess = countsuccess/n;

pleft = countleft/n;

plose = countlose/n;

disp(['中子成功從右端溢位的概率:',num2str(psuccess)]);

disp(['中子成功從左端溢位的概率:',num2str(pleft)]);

disp(['中子能量耗盡的概率:',num2str(plose)]);

結果為:

中子成功從右端溢位的概率:0.002714

中子成功從左端溢位的概率:0.79054

中子能量耗盡的概率:0.20675

說明中子最後能從此鉛牆溢位的概率為0.27

%0.27\%

0.27%。

wifi是怎樣穿牆的?

現在的家用路由器一般會帶幾根天線,長長的,樣子不好看,但大多數使用者很喜歡,認為有了天線路由器發射出來的訊號就會很好,就算在家裡比較偏僻的角落,手機顯示的wifi訊號也滿滿的,也即穿牆效果很好,是這樣的嗎?首先我們要理清乙個問題,就是路由器和手機誰的wifi訊號比較弱。由於手機的無線晶元主要功能還是...

字串中子串問題

字串中子串的位置查詢 include include include 定義查詢函式原型 intsearchzc char str1,char substr int main intsearchzc char str1,char substr j 0 else i 當然也可以使用strstr 函式去尋...

flex布局中子元素寬度失效的問題

在彈性布局中,有一種情況是左邊設定乙個子元素固定寬度,右邊設定自適應佔滿剩餘空間,但有時候會發現左邊固定元素的寬度竟然失效了,被右邊的元素擠占空間了,所以仔細檢視flex屬性的特點後,發現少設定了一些屬性樣式。父元素設定完 display flex 屬性後 子元素設定固定寬度 width 50px ...