作者ttvic ( 短 維)
看板Fortran
標題[問題] 圓錐體積 蒙地卡羅法
時間Mon Dec 23 23:32:10 2013
最近碰到需要使用蒙地卡羅法找出圓錐的體積
示意圖:
https://www.dropbox.com/s/gemf3q3yqrmg1lt/cone.jpg
想法: 利用圓柱來抓出1/3的圓錐,但投出機率是錯誤的...
以下是我的程式
nh=0
do i=1, n
call random_number (rand)
r=rand
call random_number (rand)
a=2*3.1415926*rand !角度一 0~2*pi
call random_number (rand)
b=2*3.1415926*rand !角度二 0~2*pi
call random_number (rand)
z=rand !高度 0~1
x=r*cos(a)
y=r*sin(b)
if (z>=f1(x,y)) then
nh=nh+1
endif
enddo
pr=(real(nh)/real(n)) !←
主要是這裡的機率一直抓不到
area1=(real(nh)/real(n))*3.1415926*1**2
write(*,*) 'con area',area1
!external function
real function f1(x,y)
f1=sqrt(x**2+y**2)
end function
不曉得邊界的界定是錯在哪邊? 懇請大大幫忙~謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.249.76
1F:推 iinon:可以有analytical 解為什麼不用? 12/26 15:05
2F:推 KAOKAOKAO:蒙地卡羅的練習啊 用解析解還用練習嗎 01/18 21:26
3F:推 bonbbon:x=-1~1,y=-1~1,這個程式算出來的是角錐! 03/19 02:31
4F:→ bonbbon:y=r*sin(a) 才會是圓錐 03/19 02:32