Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

반원에 내접하는 직사각형에 다시 내접하는 원의 넓이 구하기

문제 정의

반지름이 R인 반원이 하나 주어져 있다고 가정해 봅시다. 이 반원 안에는 가로 길이 l, 세로 높이 b인 직사각형이 내접하고, 그 직사각형 안에는 다시 반지름 r인 원이 내접합니다. 우리가 구해야 할 값은 바로 가장 안쪽에 있는 이 원의 넓이입니다.

수학적 접근

1단계: 반원에 내접하는 최대 직사각형

반원에 내접하는 가장 큰 직사각형은 밑변이 반원의 지름 위에 놓이고, 윗면의 두 꼭짓점이 반원의 곡선에 닿는 형태입니다. 반원의 중심에서 직사각형 윗면 꼭짓점까지의 거리가 곧 반지름 R이므로, 피타고라스 정리에 의해 다음 관계식이 성립합니다.

(l/2)² + b² = R²

직사각형의 넓이 A = l × b를 위 조건 아래에서 최대화하면, 미분이나 산술-기하 평균 부등식을 통해 l = √2·R, b = R/√2일 때 넓이가 최대가 됨을 알 수 있습니다.

2단계: 직사각형에 내접하는 최대 원

직사각형에 내접할 수 있는 가장 큰 원의 지름은 직사각형의 짧은 변(높이 b)과 같습니다. 따라서 내접원의 반지름은 다음과 같습니다.

r = b / 2 = R / (2√2)

3단계: 원의 넓이 공식 유도

원의 넓이 공식에 대입하면 최종적으로 다음과 같은 깔끔한 결과를 얻습니다.

넓이 = πr² = π(R / (2√2))² = πR² / 8

즉, 반원에 내접하는 직사각형에 다시 내접하는 원의 넓이는 반원 반지름 제곱의 8분의 1에 파이(π)를 곱한 값과 같습니다.

C++ 코드 예시

위 공식을 그대로 코드로 옮기면 다음과 같습니다.

#include <iostream>
#include <cmath>
using namespace std;

float innerCircleArea(float R) {
    return 3.1415 * pow(R / (2 * sqrt(2)), 2);
}

int main() {
    float rad = 12.0f;
    cout << "Area: " << innerCircleArea(rad);
}

실행 결과

Area: 56.547

R = 12일 때 이론값은 π × 12² / 8 = 18π ≈ 56.55로, 프로그램의 출력 결과와 일치함을 확인할 수 있습니다. 여기서 약간의 오차는 코드에서 π를 3.1415로 근사했기 때문입니다.