ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
![]()
Tweet
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù. 1 Monte Carlo Method
¸óÅ×Ä«¸¦·Î¹ýÀº ¾î¶² ¹®Á¦¸¦ ¼öÄ¡ °è»êÀ¸·Î Ç®Áö ¾Ê°í È®·üÀ» ÀÌ¿ëÇØ¼ Ǫ´Â ¹æ¹ýÀÔ´Ï´Ù. ³¼ö¸¦ ¹ß»ýÇØ¼ Ǫ´Â °ÅÁÒ. À̹øÁÖ ÀÏ¿äÀÏ (2011³â 10¿ù 9ÀÏ) 10¿ùÈ£ ¿ù°£ ´ºÆ°À» »ç·¯°¬´Âµ¥, "È®·üÀÇ ¼¼°è"¶ó´Â Newton ÇÏÀ̶óÀÌÆ® ½Ã¸®Áî°¡ ´«¿¡ ¶ç´õ±º¿ä. ¼öÇÐÀ» ½È¾îÇϱ⠶§¹®¿¡ ±×µ¿¾È ´«±æÀ» ÁÖÁö ¾Ê°í ÀÖ¾ú´Âµ¥, ÃÖ±Ù Åë°èÂʵµ °ü½ÉÀ» Á» °¡Á®º¼±î¶ó´Â »ý°¢À» °¡Áö·Á´ø ÂüÀÌ¶ó ¾Æ¹« »ý°¢¾øÀÌ ±¸ÀÔÀ» Çß½À´Ï´Ù. ISBN : 9788955378191
¿ª½Ã Àú¿¡°Õ ³Ê¹« ¾î·Æ´õ±º¿ä.
±×³É »òÀ¸´Ï ÀÐÀÚ¶ó´Â ¸¶À½°¡ÁüÀ¸·Î ´ë·« ÈȾ´Âµ¥, ¸óÅ×Ä«¸¦·Î ±â¹ýÀ» ÀÌ¿ëÇÑ ¿øÁÖÀ² °è»êÆíÀÌ ´«¿¡ µé¾î¿À´õ±º¿ä. ½Å±âÇϴٰųª ±×·¨´Ù±â º¸´Ù´Â "À̰ŠÇÁ·Î±×·¥À¸·Î Å×½ºÆ® ÇØº¼ ¼ö Àְڴµ¥ !? gnuplotÀ¸·Î ½Ã°¢ÈÇØº¼ ¼ö ÀÖ°Ú´Ù. ÀëÀÖ°Ú´Ù!"¶ó´Â »ý°¢À̵é´õ±º¿ä.
¸óÅ×Ä«¸¦·Î ±â¹ýÀ» ÀÌ¿ëÇØ¼ ¿øÁÖÀ²À» °è»êÇÏ´Â ±âº» °³³äÀº °£´ÜÇÕ´Ï´Ù.
´ÙÀ½°ú °°ÀÌ ¹ÝÁö¸§ÀÌ 1ÀÎ ¿øÀÌ ÀÖ´Ù°í °¡Á¤À» ÇØº¸°Ú½À´Ï´Ù. ÁÂÇ¥°è»êÀ» ½±°Ô Çϱâ À§Çؼ ¸éÀûÀ» 1/4·Î ÀçÇÑÇß½À´Ï´Ù. ±×¸®°í ÀÌ ¿ø¿¡ Á¢¼±À» °¡Áö´Â Á¤»ç°¢ÇüÀ» ±×¸³´Ï´Ù. ÀÌ Á¤»ç°¢ÇüÀÇ ¸éÀûÀº 1ÀÌ µÇ°ÚÁÒ.
ÀÌÁ¦ 0~1 »çÀÌÀÇ ³¼ö¸¦ Çϳª ¹ß»ý½Ãŵ´Ï´Ù. ÀÌ Á¡Àº 2Â÷¿ø Æò¸é¾È¿¡ À§Ä¡ÇØ¾ß Çϴϱî {x,y} ÁÂÇ¥°ªÀ» °¡Áý´Ï´Ù. ÀÌ Á¡Àº ¿ø¾È¿¡ Ç¥½ÃµÉ È®·üÀ» °¡Áú °Ì´Ï´Ù. ÀÌ È®·üÀ» °è»êÇÏ´Â °ÅÁÒ. ³¼ö·Î ¹ß»ýÇÑ Á¡ÀÌ ¿ø¾È¿¡ ÀÖ´ÂÁö´Â ÇÇŸ°í¶ó½ºÀÇ À¯¸íÇÑ Á¤¸® "a^2+b^2=c^2"·Î ±¸ÇÏ¸é µË´Ï´Ù. ³¼ö¸¦ ÃæºÐÈ÷ ¹ß»ýÇÏ¸é ¿øÁÖÀ² °ª¿¡ ±ÙÁ¢ÇÏ´Â °ªÀ» ¾òÀ» ¼ö ÀÖÀ» °Ì´Ï´Ù.
¼öÇÐÀû ¹æ¹ýÀ¸·Î Ǫ´Â °Í°ú ºñ±³ÇÏÀÚ¸é ¸íÈ®ÇÑ ´äÀ» ¾òÀ» ¼ö´Â ¾ø°ÚÁö¸¸ ´ë½Å ºü¸£°Ô ¸Å¿ì ±ÙÁ¢ÇÑ ´äÀ» ¾òÀ» ¼ö ÀÖ´Ù´Â ÀåÁ¡ÀÌ ÀÖ½À´Ï´Ù. ¼Ò¼ýÁ¡ ¸îÀÚ¸®ÀÇ Á߿伺 º¸´Ù´Â ºü¸£°Ô ´ë·«ÀûÀÎ Á¤º¸¸¦ ¾ò¾î¾ß ÇÒ ¶§ »ç¿ëÇÒ¼ö Àְڳ׿ä.
gnuplot¿¡ ´ëÇÑ ³»¿ëÀº GNU manual¹®¼¸¦ Âü°íÇϽñ⠹ٶø´Ï´Ù. 2 ÇÁ·Î±×·¥ ÄÚµå
ÄÚµå´Â perl·Î ¸¸µé¾ú½À´Ï´Ù. #!/usr/bin/perl
use strict;
my $i = 0;
my $radius = 1000;
my $x;
my $y;
my $inner = 0;
my $outter = 0;
my $randnum = $ARGV[0];
print "#\tx\ty\tpie\n";
while ($i < $randnum)
{
$x = int(rand($radius));
$y = int(rand($radius));
if(($x**2) + ($y**2) <= $radius **2)
{
$inner++;
}
else
{
$outter++;
}
$i++;
my $pie = ($inner*4) / $i;
print "$i\t$x\t$y\t$pie\n";
}
¼Ò¼ýÁ¡ °è»êÀ» ÇÇÇϱâ À§Çؼ ¿øÀÇ ¹ÝÁö¸§À» 1000À¸·Î Çß½À´Ï´Ù. ¹ß»ýÇÒ ³¼öÀÇ °¹¼ö´Â ÇÁ·Î±×·¥ ½ÇÇàÀÎÀÚ·Î ¹Þ¾Æ¿À°Ô Çß½À´Ï´Ù. È®·ü°ª Áï pie´Â ($inner * 4) / $i·Î Çß±¸¿ä. Àüü Á¡ Áß¿¡¼ ¿ø ³»ºÎ¿¡ ÂïÈù Á¡ÀÇ ºñÀ²ÀÔ´Ï´Ù. 1/4 ¿øÀ̱⠶§¹®¿¡ *4¸¦ ÇØÁá½À´Ï´Ù. 3 gnuplot·Î ½Ã°¢È Çϱâ3.1 ³¼ö ¹ß»ý Ƚ¼ö¸¦ 10À¸·Î ÇßÀ» ¶§
ÇÁ·Î±×·¥ÀÇ ½ÇÇà °á°ú¸¦ º¸°Ú½À´Ï´Ù. ¿ì¼± 10°³ÀÇ Á¡À» ¹ß»ý½ÃÄ×½À´Ï´Ù. $ ./pie.pl 10 # x y pie 1 81 243 4 2 163 186 4 3 760 874 2.66666666666667 4 993 697 2 5 930 279 2.4 6 368 90 2.66666666666667 7 37 281 2.85714285714286 8 511 754 3 9 91 310 3.11111111111111 10 578 957 2.8À½.. pie°¡ 2.8ÀÌ ³ª¿Ô³×¿ä. 3.14¿¡¼ ÇÑÂüÀ̳ª ¸Ö¸® ¶³¾îÁ® ÀÖ±º¿ä. ¸óÅ×Ä«¸¦·Î¹ýÀº Å« ¼ö°¡ ÁغñµÇ¾î¾ß ¾µ ¼ö ÀÖ´Â ±â¹ýÀÔ´Ï´Ù.
ÀÌ °á°ú¸¦ ÆÄÀÏ·Î ÀúÀåÇϰí gnuplot·Î ½Ã°¢È Çß½À´Ï´Ù. pie.plÀÇ ½ÇÇà °á°ú¸¦ ÆÄÀÏ·Î ÀúÀåÇÑ´ÙÀ½ gnuplot¸¦ È£ÃâÇß½À´Ï´Ù. ÀúÀåÇÑ ÆÄÀÏÀÇ À̸§Àº plot.txt·Î, gnuplot µ¥ÀÌÅÍ ÆÄÀÏÀº m10.demÀ¸·Î Çß½À´Ï´Ù. ³»¿ëÀº ´ÙÀ½°ú °°½À´Ï´Ù. # cat m10.dem set parametric set terminal png set output "output.png" set grid set xrange[0:1000] set yrange[0:1000] plot "plot.txt" u 2:3 title "dot" lc rgb "blue",cos(t)*1000,sin(t)*1000 title "circle" lc rgb "red"
ÀÌÁ¦ È®·üÀ» °è»êÇØ º¸ÁÒ. È®·ü °è»êÀ» À§Çؼ »ç¿ëÇÑ gnuplot µ¥ÀÌÅÍ ÆÄÀÏÀÇ À̸§Àº y10.demÀÔ´Ï´Ù. # cat y10.dem set terminal png set output "output2.png" set grid plot "plot.txt" u 4 with l, 3.14 title "Pie=3.14" linetype 5
´ÙÀ½Àº Ãâ·Â °á°úÀÔ´Ï´Ù.
3.2 ³¼ö ¹ß»ý Ƚ¼ö¸¦ 100À¸·Î ÇßÀ» ¶§
³¼ö ¹ß»ý Ƚ¼ö¸¦ ´Ã·È½À´Ï´Ù.
È®·ü°ª °ªÀÔ´Ï´Ù.
3.3 ³¼ö ¹ß»ý Ƚ¼ö¸¦ 100000À¸·Î ÇßÀ» ¶§
10¸¸¹ø µ¹·È½À´Ï´Ù. µ¹·È´õ´Ï.
4 ´Ù¸¥¾ð¾î·Î4.1 C ÄÚµå joinc ÆäÀ̽ººÏ ±×·ìÀÇ °µÎ·ç´ÔÀÇ ÄÚµå.#include <stdio.h> #include <stdlib.h> #include <math.h> //10ÀÇ 6½Â ±îÁö 100,000¹ø ½Ãµµ ÇÑ´Ù. #define MAX_TRY (int) pow(10.0,8.0) int xyGenerator(double *x, double *y) { *(x) = (double)rand()/32767; *(y) = (double)rand()/32767; return 1; //Á¦´ë·Î } void acquisitionPI(int *Gn, int *Gi) { double x, y; //10ÀÇ 6½Â ±îÁö 100,000¹ø ½Ãµµ ÇÑ´Ù. //int MAX_TRY = (int)pow(10.0,8.0); for(*Gn = 1; (*Gn) <= MAX_TRY ;(*Gn)++) { xyGenerator(&x, &y); //Ä«¿îÆ® Á¶°Ç ½Ä : xÁ¦°ö + yÁ¦°ö =< 1 if((pow(x,2)+pow(y,2)) <= 1) (*Gi)++; } } int main() { //º¯¼ö initialize int Gi = 1, Gn = 1; Gi = 1; double result = 0.0; acquisitionPI(&Gn, &Gi); result = 4.0 * ((double) Gi / (double) Gn); printf("ÆÄÀÌ °á°ú °ª : %f" , result); return 0; } |
|
|||||||||||||
|
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|