±âº» ¼öÄ¡ Çؼ®
Monte
Carlo Integral
¸ñÀû: 1.Gaussian Quadrature
µîÀ¸·ÎºÎÅÍ °è»êÇÒ ¼ö ¾ø´Â ÀûºÐ °ªÀÇ ÃßÁ¤
2.
´ÙÁß ÀûºÐ(2 Â÷¿ø ÀÌ»óÀÇ ÀûºÐ)¿¡ ´ëÇÑ Ã³¸® ¿ëÀÌ
3.
Èä³»³»±â(Àü»ê ½Ã´¿:simulation)ÀÇ ±âº»ÀÎ ³¼ö(random number)¿¡ ´ëÇÑ ÀÌÇØ
1. Random
Number(¹«ÀÛÀ§¼ö, ³¼ö)¶õ?
ÁÖ¾îÁø ±¸°£¿¡¼ ¾î¶² ƯÁ¤ÇÑ ¼ø¼ ¾øÀÌ Æ¯Á¤ÇÑ Áֱ⠾øÀÌ ÀÓÀÇÀÇ ºÎºÐ ±¸°£¿¡ µé¾î°¥ È®·üÀÌ ÀÏÁ¤ÇÑ ¼öµéÀÇ ¿.
Random Number¸¦ ¸¸µå´Â ±âº» Algorithmµé
i) computer ³»ºÎÀÇ cmos clockÀ» Àд ¹æ¹ý: CMOS clock
timeÀ» ÀÏÁ¤ÇÑ °£°ÝÀ¸·Î ÀÐ¾î¼ ÃÊ´ÜÀ§·Î ȯ»êÇÑ´Ù. ÀÌ ½Ã°£ÀÇ ¿À»
À̶óÇÏ°í, (0,1000) »çÀÌÀÇ ³¼ö¿À» ¾ò°í ½ÍÀ¸¸é, À» ÀÌ¿ëÇØ ³¼ö¿ À» ¾òÀ½.
ii)middle-square
method(von NeumannÀÌ Ã³À½À¸·Î Á¦¾È)
(0,1000)
»çÀÌÀÇ ³¼ö¿À» ¾òÀ»·Á¸é, óÀ½¿¡ 0°ú 1000»çÀÌÀÇ ÀÓÀÇÀÇ ¼ö¸¦ seed·Î ÇÑ ´ÙÀ½ ±×
seed¸¦ Á¦°öÇÏ¿© ¾òÀº ¼öÀÇ °¡¿îµ¥ 3 ÀÚ¸® ¼ö¸¦
³¼ö¿ÀÇ
óÀ½ ¼ö·Î ÇÏ°í À̼ö¸¦ ´Ù½Ã Á¦°öÇÏ¿© ¾òÀº ¼öÀÇ °¡¿îµ¥ 3 ÀÚ¸® ¼ö¸¦ ´ÙÀ½ ¼ö·Î ÇÏ´Â
¹æ¹ýµîÀ» °è¼ÓÇÏ¿© ³¼ö¿À» ¾òÀ½.
¿¹) 267(seed)
-> 267^2=71829 -> 182(³¼ö¿ÀÇ Ã¹ ¹ø° ¼ö) -> 182^2 =33124 ->312(³¼ö¿ÀÇ
µÎ ¹ø° ¼ö) ->.....
ii) n¹ø° ³¼ö¸¦ , n+1¹ø° ³¼ö¸¦ À̶ó ÇßÀ» ¶§ (0, m)»çÀÌÀÇ ³¼ö¿À» ½Ä
À» ÀÌ¿ëÇØ ¾ò´Â ¹æ¹ý.
ÃÖÁ¾ÀûÀ¸·Î´Â i), ii), iii) µîÀÇ ¹æ¹ýÀ¸·Î ¾òÀº (0, m)»çÀÌÀÇ ³¼ö¿ À» ÀÌ¿ëÇØ º»ÀÎÀÌ ¿øÇÏ´Â ±¸°£ (a, b) »çÀÌÀÇ ³¼ö¿Àº ¼ö½Ä
À» ÀÌ¿ëÇØ ±¸ÇÒ ¼ö ÀÖ´Ù.
Pseudo
Random Number¿Í seed
¾Æ¹«¸® ÁÁÀº algorithmÀ»
»ç¿ëÇØ ³¼ö¿À» ¸¸µé´õ¶óµµ, ¾ðÁ¦ ÁֱⰡ »ý±â°Å³ª ¶Ç´Â ³¼ö ÀÚü°¡ ¹Ýº¹ÇÏ¿© ³ªÅ¸³ª°Å³ª,
ƯÁ¤ÇÑ ºÎºÐ ±¸°£¿¡ ³¼ö°¡ ¸¹ÀÌ ¸ðÀδٵçÁö ÇÏ´Â Çö»óÀÌ ¹ß»ýÇÒ Áö ¸ð¸¥´Ù. ÀÌ·¯ÇÑ
Àǹ̿¡¼ ¿ì¸®°¡ ¸¸µç ³¼ö¿À» ÀÇ»ç ³¼ö(pseudo random number)¿À̶ó ºÎ¸¥´Ù.
¶Ç °°Àº ³¼ö ¹ß»ý algorithmÀ» ¹Ýº¹Çؼ »ç¿ëÇÒ ¶§, ³ªÅ¸³ª´Â ³¼ö¿Àº seed(Áï
³¼ö¿À» ¸¸µé ¶§ µµÀÔÇϴ óÀ½ÀÇ ¼ö)°¡ °°À¸¸é Ç×»ó °°Àº ³¼ö¿ÀÌ ¸¸µé¾î Áø´Ù.
µû¶ó¼ ¾î¶² ³¼ö¿À» ÀÌ¿ëÇØ Àü»ê ½Ã´¿À» ÇÒ ¶§, ÀÌ Àü»ê ½Ã´¿À» ¹Ýº¹Çؼ Æò±ÕÇÏ¿©
°á°ú¸¦ ¾ò´Â´Ù¸é, ¹Ýº¹ÇÒ ¶§ ¸¶´Ù, Ç×»ó ´Ù¸¥ seed¿¡¼ Ãâ¹ßÇå ³¼ö¿À» »ç¿ëÇÏ´Â
°ÍÀÌ ÁÁ´Ù. ÀÌ·¯ÇÑ Àǹ̿¡¼ seed¸¦ ÈçÈ÷ Àü»ê½Ã´¿À» ½ÃÀÛÇÏ´Â ½Ã°¢À» ÃÊ´ÜÀ§·Î ȯ»êÇÏ¿©
»ç¿ëÇÏ°ï ÇÑ´Ù.
Visual
Basic¿¡¼ Pseudo
Random NumberÀÇ ¹ß»ý
VB¿¡¼´Â
library functionÀ¸·Î ³¼ö ¹ß»ý ÇÔ¼ö¸¦ Á¦°øÇÏ°í ÀÖ´Ù. ¸ÕÀú Seed¸¦ randomÇÏ°Ô
Á¦°øÇÏ´Â ¹æ¹ýÀº
"randomize"
¶ó´Â statement¸¦ ÁÖ¸é µÈ´Ù. ¸¸¾à ¾î¶² ƯÁ¤ÇÑ ¼ö¸¦ seed·Î Áֱ⸦ ¿øÇÒ ¶§¿¡´Â
"randomize(ƯÁ¤ÇÑ
¼ö)"
¸¦ ÁÖ¸é µÈ´Ù. ¸¸¾à randomize¸¸ ÁÖ¸é VB°¡ TimerÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿© ½Ã°¢À»
seed·Î ÅÃÇÏ´Â ÀÛ¾÷À» ÇÑ´Ù. Timer ÇÔ¼ö´Â ÀÚÁ¤¿¡¼ºÎÅÍ ÇöÀç ½Ã°¢±îÁöÀÇ ½Ã°£À»
ÃʷΠȯ»êÇÏ¿© ÁØ´Ù. Seed¸¦ randomize·Î randomÈ ½ÃŲ ÈÄ ³¼ö ¿À» ¾ò´Â ¹æ¹ýÀº
"Rnd" statement¸¦ ÀÌ¿ëÇÏ¸é µÈ´Ù. "Rnd"´Â ±¸°£ (0,1) »çÀÌÀÇ
³¼ö¸¦ ÁØ´Ù. µû¶ó¼ ƯÁ¤ÇÑ ±¸°£ (a,b)ÀÇ ³¼ö¿À» ¾ò´Â ¹æ¹ýÀº
a + (b-a)*Rnd
¸¦ ÀÌ¿ëÇÏ¸é µÈ´Ù.
2. Monte Carlo Integral
¸¦ ³¼ö¿À» »ç¿ëÇؼ °è»êÇÏ´Â ¹æ¹ý.
Hit
and Miiss Method
i) °¡·Î°¡ (b-a), ¼¼·Î°¡ hÀÎ
Á÷ »ç°¢ÇüÀ» ±×¸°´Ù.
ii) ±¸°£ (a,b)¾È¿¡ ÀÖ´Â ³¼ö Çϳª¿Í, (0,h) ±¸°£ ¾ÈÀÇ ³¼ö Çϳª¸¦ ¹ß»ý½ÃÄѼ À» ¸¸Á·½ÃÅ°¸é Hit ¼ö¸¦ Çϳª Áõ°¡½ÃÅ°°í, ¾Æ´Ï¸é Miss ¼ö¸¦ Çϳª Áõ°¡½ÃŲ´Ù.
iii)
ii)ÀÇ °úÁ¤À» ÃæºÐÇÑ È½¼ö N¹ø ¹Ýº¹ÇÑ´Ù.
±×·¯¸é ÀûºÐ °ªÀº
·Î ÃßÁ¤ÇÒ ¼ö ÀÖ´Ù.
Important
Sampling Method
±¸°£ (a,b)¾È¿¡ ÀÖ´Â ³¼ö¸¦ ÃæºÐÇÑ È½¼ö N ¹ø ¹ß»ý
½ÃÄÑ ±× ³¼ö ¿À» À̶ó Çϸé ÀûºÐ °ªÀº
·Î °è»êÇÒ ¼ö ÀÖ´Ù. ±× ÀÌÀ¯´Â ÀÌ ÁøÁ¤ÇÑ Àǹ̿¡¼ ³¼ö¿ À̶ó¸é N ÀÌ ¸Å¿ì Ŭ ¶§ µéÀÌ ±¸°£ (a,b)¿¡ °ñ°í·ç ºÐÆ÷ÇÒ °ÍÀ̸ç, µû¶ó¼ ÀÓÀÇÀÇ Á¡ÀÌ Â÷ÁöÇÏ´Â ºÎºÐ ±¸°£ÀÇ ¹üÀ§°¡ (b-a)/NÀÌ µÉ °ÍÀ̱⠶§¹®ÀÌ´Ù.
3. Muilti-Dimensional Integral
´ÙÁß ÀûºÐ
¿Í °°Àº ÀûºÐÀÇ ¼öÄ¡°ªÀº ´Ü¼øÈ÷ ÀÏÂ÷¿ø ÀûºÐÀÇ algorithmÀ» ÀÌ¿ëÇÏ¿© ÀûºÐÇϱ⿡´Â ¸Å¿ì ¾î·Á¿î Á¡ÀÌ ¸¹´Ù. ƯÈ÷ ÀûºÐÀÇ ÇÏÇÑ, »óÇѵéÀÌ ÀÏÁ¤ÇÑ °ªÀÌ ¾Æ´Ï¶ó, µî°ú °°ÀÌ ´ÙÀ½¿¡ ÀûºÐ µÉ º¯¼öÀÇ ÇÔ¼öÀÎ °æ¿ì¿¡´Â ƯÈ÷ ¾î·Æ´Ù. ÀÌ·² ¶§ ¸Å¿ì ¿ëÀÌÇÏ°Ô ÀûºÐÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀÌ ¹Ù·Î Monte Carlo IntegralÀÌ´Ù. ¿©±â¼µµ importance sampling method¸¦ ÀÌ¿ëÇÏ¿© ÀûºÐÇÏ´Â ¹æ¹ýÀº ´ÙÀ½°ú °°´Ù. ±¸°£ (a,b)¾È¿¡ ÀÖ´Â ³¼ö¸¦ ÃæºÐÇÑ È½¼ö N ¹ø ¹ß»ý ½ÃÄÑ ±× ³¼ö ¿À» À̶ó ÇÏ°í, ±¸°£ (c,d)¾È¿¡ ÀÖ´Â ³¼ö¸¦ ÃæºÐÇÑ È½¼ö M ¹ø ¹ß»ý ½ÃÄÑ ±× ³¼ö ¿À» À̶ó ÇÏ°í, ±¸°£ (e,f)¾È¿¡ ÀÖ´Â ³¼ö¸¦ ÃæºÐÇÑ È½¼ö L¹ø ¹ß»ý ½ÃÄÑ ±× ³¼ö ¿À» À̶ó Çϸé ÀûºÐ °ªÀº
À¸·ÎºÎÅÍ °è»êÇÒ ¼ö ÀÖ´Ù.
4.
¹Ýº¹¹ý(iteration method)°úÀÇ Á¶È
i)
Monte Carlo ÀûºÐ¹ý¿¡¼ÀÇ Á¤È®µµÀÇ ÃßÁ¤Àº ³¼ö ¹ß»ý Ƚ¼ö¿Í ÀûºÐ °á°ú °ªÀÇ »ó°ü
°ü°è¸¦ ±¸ÇÏ¸é µÈ´Ù. °¡·É ³¼ö¸¦ 100 ¹ø ¹ß»ý ½ÃÄ×À» ¶§ÀÇ ÀûºÐ °ªÀÌ 9.576ÀÌ°í
1000 ¹ø ¹ß»ý ½ÃÄ×À» ¶§ÀÇ ÀûºÐ °ªÀÌ 9.432ÀÌ°í, 10000 ¹ø ¹ß»ý ½ÃÄ×À» ¶§ÀÇ ÀûºÐ
°ªÀÌ 9.441ÀÌ°í, 100000 ¹ø ¹ß»ý ½ÃÄ×À»¶§ÀÇ ÀûºÐ °ªÀÌ 9.447À̶ó¸é ÀûºÐ °ªÀÌ ¼Ò¼öÁ¡
ÀÌÇÏ 2 °ÀÚ¸®±îÁö Á¤È®È÷ ±¸ÇÏ·Á¸é Àû¾îµµ ³¼ö¸¦ 10000 ¹øÀÌ»ó ¹ß»ý½ÃÄÑ¾ß ÀûºÐ
°ªÀÌ Á¦´ë·Î ³ª¿Â´Ù°í ÃßÁ¤ÇÒ ¼ö ÀÖ´Ù.
ii)Àΰ£À̳ª
computer°¡ ÁÖ´Â ÇÑ°è ¶§¹®¿¡ ³¼ö ¹ß»ýȽ¼öÀÇ ÃÖ´ëÄ¡°¡ N ¹øÀ¸·Î ÇÑÁ¤µÈ´Ù¸é, N
¹øÀ» ÀüºÎ¸¦ 1 ¹øÀÇ ÀûºÐ °ª ÃßÁ¤¿¡ ´Ù »ç¿ëÇÒ °ÍÀÌ ¾Æ´Ï¶ó, Ƚ¼ö¸¦ k·Î ³ª´©¾î ³¼ö
¹ß»ý Ƚ¼ö°¡ N'=N/kÀÎ Monte Carlo IntergralÀ» k ¹øÇÏ¿© ±× °á°ú ÀûºÐ °ªÀ» Æò±ÕÇÏ´Â
°ÍÀÌ ´õ Á¤È®ÇÏ´Ù. (Áï »ó´ë¿ÀÂ÷°¡ ·Î ÁÙ¾îµéÀ½.)
µû¶ó¼ i)°ú ii)ÀÇ ¹æ¹ýÀ»
Àû´çÈ÷ Á¶ÈÇÏ´Â °ÍÀÌ ¸Å¿ì Áß¿äÇÔ.
5. Monte Carlo IntegralÀÇ ±¸Çö
ÀÌÁ¦ VB ÇÁ·Î±×·¥À¸·Î ÀûºÐ °ª
Mpnte Carlo IntegralÇÏ´Â ÇÁ·Î±×·¥À» ÀÛ¼ºÇØ º¸ÀÚ. ¿©±â¼´Â Hit and Miss method¸¦ »ç¿ëÇØ º¸ÀÚ. ¸ÕÀú ÀÌ ÇÁ·Î±×·¥À» runÇÏ´Â °úÁ¤ÀÇ formÀÇ ¸ð¾çÀ» º¸¸é ´ÙÀ½°ú °°´Ù.
ÀÌ ±×¸²Àº BuffonÀÇ
¹Ù´Ã ¶³¾î ¶ß¸®±â ÇÁ·Î±×·¥À» ±¸ÇöÇÒ ¶§¿Í form°ú ºñ½ÁÇÑ ÇüŸ¦ °®°í ÀÖ´Ù. ÀÌ
ÇÁ·Î±×·¥ÀÇ
form file, project file˼
½ÇÇà fileÀº
°¢°¢ MonInt.frm,
MonInt.vbp, MonInt.exe¿Í
°°´Ù.
ÀÌÁ¦ ÀÌ ÇÁ·Î±×·¥À» ±¸Ã¼ÀûÀ¸·Î »ìÆ캸ÀÚ. formÀÇ controlÀÇ
¼Ó¼º Áß Picture BoxÀÎ picResult¾È¿¡ ÀÖ´Â ¸ðµç controlÀº BuffonÀÇ
¹Ù´Ã ¶³¾î ¶ß¸®±â ÇÁ·Î±×·¥¿¡¼ÀÇ picResult¾È¿¡ ÀÖ´ø controlÀÇ ¼Ó¼º°ú µ¿ÀÏÇϹǷÎ
»ý·«ÇÑ´Ù. ÀÌÁ¦ ³ª¸ÓÁö controlµéÀ» À§ÇÑ ¼Ó¼ºÇ¥¸¦ ÀÛ¼ºÇØ º¸ÀÚ.
°´Ã¼ |
¼Ó¼º |
¼³Á¤ |
form |
Name |
frmMonInt |
label |
Name |
lblResult |
line |
Name |
linXax(xÃà) |
line |
Name |
linYax(yÃà) |
command |
Name |
cmdHitMiss |
command |
Name |
cmdImpo |
command |
Name |
cmdExit |
´ÙÀ½À¸·Î ÇÁ·Î ±×·¥ code¸¦ ÀÛ¼ºÇØ º¸ÀÚ.
¸ÕÀú ÀÏ¹Ý ¼±¾ðºÎ¸¦
º¸¸é º¯¼ö¸¦ ¸ðµÎ ¼±¾ðÇÑ´Ù´Â
Option Explicit
°¡ ÀÖ°í, ´ÙÀ½À¸·Î
³¼ö ¦À» ¹ß»ýÇÏ´Â ÃÑ È½¼ö¸¦ ³ªÅ¸³»´Â Àü¿ª º¯¼ö, gTotal°ú ±× Áß hitÇÑ ¼ö¸¦ ³ªÅ¸³»´Â
gIn°ú °á°ú ÀûºÐ °ªÀÇ 4 ¹è¸¦ ³ªÅ¸³»´Â PiµîÀÌ Àü¿ª º¯¼ö·Î ¼±¾ðµÈ´Ù.
Dim gTotal
As Long
Dim gIn As Long
Dim Pi As Double
¶Ç lblResult¶ó´Â label
Box¿¡ °á°ú¸¦ Ç¥½ÃÇÒ ¹®ÀÚ¿ º¯¼ö·Î Info¸¦ Àü¿ªº¯¼ö·Î ¶Ç ¼±¾ðÇÑ´Ù.
Dim Info
As String
¶Ç End ButtonÀ» clickÇßÀ» ¶§´Â ÇÁ·Î±×·¥À» ³¡³»´Â procedure°¡ ÀÖ´Ù.
Private
Sub cmdExit_Click()
End
End Sub
´ÙÀ½À¸·Î ÇÁ·Î±×·¥ÀÌ ½ÃÀ۵Ǿî formÀÌ ¶ã ¶§ gTotal°ú, gInÀ» ÃʱâÈ ÇÏ´Â ÇÁ·Î±×·¥Àº
´ÙÀ½°ú °°´Ù.
Private Sub Form_Load()
gTotal = 0
gIn = 0
End Sub
´ÙÀ½À¸·Î Hit and Miss¸¦ ±¸ÇöÇÏ´Â ÇÁ·Î±×·¥Àº Hit, Miss¶ó´Â buttonÀ» clickÇßÀ» ¶§ ½ÃÇàµÇ´Âµ¥ ±× source code¸¦ ÀÌÁ¦ »ìÆ캸ÀÚ.
Private Sub cmdHitMiss_Click()
¸ÕÀú ÇÊ¿äÇÑ º¯¼öµéÀ» ¼±¾ðÇÏ°í
Dim Count As Long
Dim CX, CY As Long
Dim Th As Double
Dim DX, DY
As Double
ÁÂÇ¥ Áß½ÉÀ» ¿øÁ¡À¸·Î ÇÏ´Â ¹Ý°æ 2000 twibÀÎ 1/4 ¿øÀ» »¡°£»öÀÎ ¿øÀ» ±×¸°´Ù.
"circle
(x,y), R, color, ½ÃÀÛ angle, ³¡³ª´Â angle"À̶ó´Â ¸í·É¿¡¼ ½ÃÀÛ angle=0,
³¡³ª´Â angle=pi/2 = 1.5706À¸·Î ÁÖ¸é 1/4 ¿øÀ» ±×¸®°Ô µÈ´Ù.
frmMonInt.Circle
(linXax.X1, linXax.Y1), 2000, RGB(255, 0, 0), 0, 1.5706
´ÙÀ½À¸·Î ³¼ö ¹ß»ýÀÇ seed¸¦ ¹Ù²Ù°í
Randomize
ÀÌÁ¦ ³¼ö ¦ÀÇ ¹ß»ý Ƚ¼ö¸¦
monitorÇÏ´Â Count¶õ º¯¼ö¸¦ 0À¸·Î ÃʱâÈ ÇÏ°í
Count = 0
Do While ±¸¹®À»
ÀÌ¿ëÇÏ¿© ³¼ö ¦À» 10000 ¹ø ¹ß»ý½ÃÄÑ Monte Carlo IntegralÀ» ÇÑ´Ù.
Do While
Count < 10001
³¼ö ¹ß»ý Ƚ¼ö¸¦ Çϳª ¿Ã¸®°í
Count = Count + 1
ÀÌÁ¦ 0 °ú 1 »çÀÌÀÇ ³¼ö µÎ °³¸¦ ¹ß»ý ½ÃÄÑ °¢°¢ x(DX)¿Í y(DY)ÀÇ Â¦À¸·Î ÇÑ´Ù.
DX
= Rnd
DY = Rnd
´ÙÀ½À¸·Î ÀÌ µÎ¼ö¸¦ Á¦°öÇÏ¿© ´õÇÏ¿© Th¶ó µÐ´Ù.
Th = DX * DX + DY * DY
ÀÌÁ¦ ³¼ö ¹ß»ýȽ¼ö¸¦ Çϳª Áõ°¡ ½ÃÅ°°í
gTotal = gTotal + 1
ÀÌ µÎ¼ö°¡ ÇÔ¼öÀÇ À§¿¡ ÂïÈ÷´Â Áö ¾Æ·¡¿¡ Âï±â À§ÇØ ±×¸²¿¡¼ DX¿Í DY¿¡ ÇØ´çÇÏ´Â
À§Ä¡ CX, CY·Î ±¸ÇØ º¸ÀÚ. ±×¸²¿¡¼ ¹Ý°æ 2000 twibÀÌ ½ÇÁ¦ 1·Î ȯ»êµÇ°í, ¿øÁ¡ÀÇ
x ÁÂÇ¥´Â ±×¸²¿¡¼ linXax.X1À̹ǷΠCX´Â
CX = Int(DX * 2000 + linXax.X1)
ÀÌ
µÇ°í °°Àº ¹æ¹ýÀ¸·Î
CY = Int(linXax.Y1 - DY * 2000)
ÀÌ µÈ´Ù. ÀÌÁ¦ ±×¸²¿¡
³¼ö ¹ß»ýÀ¸·ÎºÎÅÍ ¾òÀº ÀÓÀÇÀÇ Á¡ÀÌ ÁÖ¾îÁø ÇÔ¼ö ¾Æ·¡¿¡ ÀÖ´ÂÁö ¾ø´ÂÁö¸¦ ÆÇ´ÜÇÏ¿©
If Th <= 1 Then
ÀÖÀ¸¸é Hit Ƚ¼ö¸¦ Çϳª Áõ°¡½ÃÅ°°í
gIn
= gIn + 1
HitÇÑ Ç¥½Ã·Î QBColor(1)À¸·Î Á¡À» Âï°í
frmMonInt.PSet
(CX, CY), QBColor(1)
MissÇßÀ¸¸é
Else
MissÇÑ Ç¥½Ã·Î QBColor(7)À¸·Î Á¡À»
Âï°í
frmMonInt.PSet (CX, CY), QBColor(7)
End If
Loop
ÀÌÁ¦ ÀÌ·± ÀÏÀ» 10000¹ø ÇßÀ» ¶§ ¸¶´Ù ÀûºÐ °ªÀ» ±¸Çϴµ¥ ¿ì¸®°¡ »ý°¢ÇÑ °¡»óÀÇ
4 °¢ÇüÀÇ ³ÐÀÌ°¡ 1À̹ǷΠ±¸ÇÏ´Â ÀûºÐ °ªÀº 1*gIn / gTotalÀε¥ ÀÌ °ªÀ» 4 ¹èÇϸé
Pi °ªÀÌ µÇ¾î¾ß ÇϹǷÎ
Pi = 4 * gIn / gTotal
¿Í °°ÀÌ Pi°ªÀ» °è»êÇÑ´Ù. ±×
°á°ú¸¦ needle program¿¡¼¿Í ºñ½ÁÇÑ ¹æ¹ýÀ¸·Î picResult¿¡ ±×¸²À» ±×¸®°í, lblResult¿¡
¹®ÀÚ¿·Î Ç¥½ÃÇÑ´Ù.
picResult.Circle (gTotal / 100 + cyLin.X1, cxLin.Y2 -
Int(720 * Pi / 3.141592)), 20, RGB(255, 255, 255)
Info = "´øÁø Ƚ¼ö
= " + Str(gTotal) + Chr(13) + Chr(10)
Info = Info + "HitÇÑ È½¼ö="
+ Str(gIn) + Chr(13) + Chr(10)
Info = Info + "Pi= " + Str(Pi)
lblResult.Caption
= Info
End Sub
¿¬½À¹®Á¦:1. À» ÀÌ¿ëÇÏ¿© pi°ªÀ» Monte Carlo IntergralÀÇ Important Sampling Method¸¦ ÀÌ¿ëÇÏ¿© ±¸ÇÏ´Â source code¸¦ À§ÀÇ VBÇÁ·Î±×·¥ Áß "Private Sub cmdImpo_Click()" procedure¿¡ »ðÀÔÇ϶ó.
2. ¹Ý°æÀÌ 1 ÀÎ ±ÕÀÏÇÑ ±¸ÇüÀÇ °Ã¼ ³»ºÎ¿¡ ±¸ÀÇ Á߽ɰú ÀÏÄ¡ÇÏ´Â Áß½ÉÀ» °®´Â ¸ð¼¸®ÀÇ ±æÀÌ°¡ 1/2ÀÎ Á¤À°¸éü¸¦ ÆÄ ³»¾ú´Ù. ÀÌ ¶§ Æij½ Á¤À°¸éüÀÇ ÇÑ ´ë°¢¼±À» Áß½ÉÃàÀ¸·Î ÇÏ¿© ÀÌ ¸ð¾çÀÇ °ü¼º ¸ð¿ì¸àÆ®¸¦ Monte Carlo IntegralÀ» ÀÌ¿ëÇØ ±¸Ç϶ó.