KTUG 한국 텍 사용자 그룹

Menu

KTUG :: 마당정보글 › 파이 구하기: 시각화 버전

karnes | 2011.06.18 15:11:53 | 메뉴 건너뛰기 쓰기

아래 김도현 교수님의 정수 연산 버전을 이용하였고 tikz로 그림을 그렸다. pdflatex으로는 될 수도. xelatex으로는 전혀 안 됨.


% !TEX TS-program = lualatex

\documentclass{oblivoir}


\usepackage{tikz}


\newcount\N   \N=1000                      % 총시행횟수. 10^n

\newcount\n   \n=0                            % 현재시행횟수

\newcount\hit \hit=0                          % Hit

\newcount\outhit

\newcount\rr  \rr\numexpr10000*10000\relax    % 상수 r^2

\newcount\p   \newcount\q                     % 난수 담을 변수

\def\rand#1{#1=\pdfuniformdeviate10001\relax} % 난수 발생기

\def\dmark#1{#1.}                


\begin{document}


\null\vfil


\begin{tikzpicture}[overlay,remember picture,scale=10]

\filldraw [fill=green!20,draw=red!60] (1,0) arc (0cm:90:1cm);

\filldraw [fill=green!20,draw=green!20] (0,0) -- (1,0) -- (0,1);

\draw [->] (-.2,0) -- (1.2,0);

\draw [->] (0,-.2) -- (0,1.2);

\draw [draw=blue!20] (1,0) -- (1,1);

\draw [draw=blue!20] (0,1) -- (1,1);

\loop

\rand\p \rand\q 

\ifnum\numexpr\p*\p+\q*\q\relax>\rr\else\advance\hit by1\fi

  \ifnum\n<\N\advance\n by1

\draw (\p/10000,\q/10000) circle (.05pt);

\repeat

\global\outhit=\hit

\end{tikzpicture}


\[

\pi \approx \expandafter\dmark\the\numexpr4*\outhit\relax

\]


\end{document}


screen-capture.png 


첨부 [1]

댓글 쓰기

목록

KTUG 한국 텍 사용자 그룹