gnuplot·Î º¸´Â ¸óÅ×Ä«¸¦·Î¹ý
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.

Contents

1 Monte Carlo Method
2 ÇÁ·Î±×·¥ ÄÚµå
3 gnuplot·Î ½Ã°¢È­ Çϱâ
3.1 ³­¼ö ¹ß»ý Ƚ¼ö¸¦ 10À¸·Î ÇßÀ» ¶§
3.2 ³­¼ö ¹ß»ý Ƚ¼ö¸¦ 100À¸·Î ÇßÀ» ¶§
3.3 ³­¼ö ¹ß»ý Ƚ¼ö¸¦ 100000À¸·Î ÇßÀ» ¶§
4 ´Ù¸¥¾ð¾î·Î
4.1 C ÄÚµå

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" 
 
  • set terminal png : °á°ú´Â png À̹ÌÁö·Î Ãâ·ÂÇÏ°Ô Çß½À´Ï´Ù.
  • set output "output.png " : À̹ÌÁöÀÇ À̸§Àº output.png
  • set grid : µµÇ¥¿¡ grid¸¦ Ãâ·Â.
  • xrange, yrange : xÃà°ú xÃàÀÇ ¹üÀ§ ÀÔ´Ï´Ù.

Ãâ·Â °á°úÀÔ´Ï´Ù. 1000 X 1000 ¸éÀû¿¡¼­ ¿øÀÌ Â÷ÁöÇÏ´Â ¸éÀûÀÌ ´õ ³ÐÀ¸´Ï, Á¡ÀÌ ¿ø¾È¿¡ À§Ä¡ÇÒ È®·üÀÌ ´õ ³ô°ÚÁÒ.
º¸³½ »ç¶÷ Linux

ÀÌÁ¦ È®·üÀ» °è»êÇØ º¸ÁÒ. È®·ü °è»êÀ» À§Çؼ­ »ç¿ëÇÑ 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  
 

´ÙÀ½Àº Ãâ·Â °á°úÀÔ´Ï´Ù.
º¸³½ »ç¶÷ Linux
±×´Ú °á°ú°¡ ÁÁÁö ¾Ê±º¿ä. ÀÌ Á¤µµ·Î´Â °ªÀÌ ÀǹÌÇÏ´Â ¹Ù°¡ ¹ºÁö ¾Ë¼ö°¡ ¾ø½À´Ï´Ù. ÇÏÁö¸¸ ³­¼ö¸¦ ÃæºÐÈ÷ ¹ß»ý½ÃŲ´Ù¸é, °á°ú°¡ ´Þ¶óÁö°ÚÁÒ. µ¿ÀüÀ» 10¹ø¸¸ ´øÁ®¼­´Â È®·üÀ» °è»êÇϱâ ÈûµéÁö¸¸, 100¸¸¹øÀ» µ¹¸®¸é 1/2¿¡ ±ÙÁ¢ÇÏ´Â Á¤È®ÇÑ °ªÀ» ¾òÀ» ¼ö ÀÖ´Â °Í°ú ¸¶Âù°¡ÁöÁÒ.

3.2 ³­¼ö ¹ß»ý Ƚ¼ö¸¦ 100À¸·Î ÇßÀ» ¶§

³­¼ö ¹ß»ý Ƚ¼ö¸¦ ´Ã·È½À´Ï´Ù.
º¸³½ »ç¶÷ Linux

È®·ü°ª °ªÀÔ´Ï´Ù.
º¸³½ »ç¶÷ Linux
¿©ÀüÈ÷ ºÒ±ÔÄ¢Çϱâ´Â ÇÏÁö¸¸ ¹º°¡ pie°ª¿¡ ±ÙÁ¢ÇÏ´Â ÃßÀ̸¦ º¼ ¼ö ÀÖÁÒ ?

3.3 ³­¼ö ¹ß»ý Ƚ¼ö¸¦ 100000À¸·Î ÇßÀ» ¶§

10¸¸¹ø µ¹·È½À´Ï´Ù. µ¹·È´õ´Ï.
º¸³½ »ç¶÷ Linux
Å© ÁÂÇ¥¸¦ °ÅÀÇ ¸Þ¿ì´Â ±º¿ä.

º¸³½ »ç¶÷ Linux
°ÅÀÇ 3.14¿¡ ±ÙÁ¢ÇÕ´Ï´Ù. ½ÇÁ¦ °ªÀº 3.13896À¸·Î ³ª¿Ô½À´Ï´Ù. ¹é¸¸¹ø Çß´õ´Ï, 3.145984 ¿ª½Ã ³­¼ö°¡ ¸¹À» ¼ö·Ï °è»ê°ª¿¡ ±ÙÁ¢ÇÏ°Ô µÇ³×¿ä.

4 ´Ù¸¥¾ð¾î·Î

4.1 C ÄÚµå

[http]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; 
} 
 

ÅÂ±× :

category_Database
category__3
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.