Skip to content

문제 15 · 정 n각형 넓이로 π 근사

문제 15 [4점]

아래 문제를 풀기 위한 몬테-카를로 시뮬레이션Monte-Carlo Simulation 기반 의사알고리즘pseudo-algorithm을 작성하세요. 임의의 정 n각형의 한 변의 길이가 s라고 할 때, 넓이(area)는 아래 식과 같습니다.

area=ns24tan(π/n)

임의의 정수 n을 입력받아 정 n각형의 넓이에 기반해 원주율 π를 근사하는 프로그램.

풀이 및 해설

아이디어. 반지름 1인 원에 내접한 정 n각형은 변의 수 n이 커질수록 원과 거의 같아집니다. 단위원의 넓이가 πr2=π 이므로, 정 n각형의 넓이가 곧 π의 근삿값이 됩니다. 이 넓이를 닫힌 공식 대신 몬테-카를로 시뮬레이션으로 추정합니다.

  • 정 n각형을 1x,y1인 정사각형(넓이 4) 안에 놓는다.
  • 그 정사각형에서 점을 무작위로 많이 던져, 정 n각형 안에 떨어진 비율을 센다.
  • 넓이 4×(안에 든 점 수/전체 점 수).
  • n이 크면 이 넓이가 π에 수렴한다.

내접 정 n각형은 "중심에서 각 변까지 거리(아포뎀)"가 cos(π/n)입니다. 어떤 점 (x,y)가 모든 변의 안쪽에 있으면 다각형 내부입니다.

의사알고리즘 (몬테-카를로)

1. 정수 n을 입력받는다.                        // 변의 수
2. 표본 개수 N을 정하고(예: 1,000,000), 난수 시드를 고정한다.
3. 아포뎀 apothem ← cos(π / n)
4. count ← 0
5. N번 반복:
     a. -1..1 범위의 임의의 실수 px, py를 뽑는다.
     b. i = 0..n-1 각 변에 대해:
            변의 바깥 방향 각도 β ← (2i+1) · π / n
            만약 px·cos(β) + py·sin(β) > apothem 이면
                점은 다각형 밖 → 다음 표본으로
     c. 모든 변을 통과하면(내부) count ← count + 1
6. area ← 4 · count / N                        // 정사각형 넓이 = 4
7. area를 π의 근삿값으로 출력한다.

n이 커질수록 정 n각형이 단위원에 가까워져 areaπ가 됩니다. 예를 들어 n = 180, N = 1,000,000, 시드 고정 시 약 3.14226을 얻습니다.

area=4×(내부 점 수)Nπ(n)

👉 실습(C++)에서 확인하기

PDF