네스빗의 부등식이란?
네스빗의 부등식(Nesbitt's Inequality)은 다음과 같이 표현되는 잘 알려진 수학적 부등식입니다.
a/(b + c) + b/(c + a) + c/(a + b) ≥ 1.5 (단, a > 0, b > 0, c > 0)
양수 세 개가 주어졌을 때, 이 세 수가 네스빗의 부등식을 만족하는지 확인해야 하는 상황을 생각해 볼 수 있습니다. 로직 자체는 매우 단순하기 때문에 비교적 쉽게 프로그램으로 구현할 수 있습니다.
참고로 네스빗의 부등식은 모든 양수 조합에 대해 수학적으로 항상 성립하는 정리이지만, 이 글에서는 주어진 값에 대해 실제로 계산하여 조건을 만족하는지 검증하는 절차를 코드로 살펴보겠습니다.
알고리즘
- 세 양수 a, b, c를 초기화합니다.
- 식의 각 항인 a/(b+c), b/(c+a), c/(a+b)의 값을 각각 계산합니다.
- 계산된 세 값을 모두 더합니다.
- 총합이 1.5보다 크거나 같으면 네스빗의 부등식을 만족하는 것이고, 그렇지 않으면 만족하지 않는 것으로 판정합니다.
C++ 구현
다음은 위에서 설명한 알고리즘을 C++로 구현한 예제 코드입니다.
#include <bits/stdc++.h>
using namespace std;
bool isValidNesbitt(double a, double b, double c) {
double A = a / (b + c);
double B = b / (a + c);
double C = c / (a + b);
double result = A + B + C;
return result >= 1.5;
}
int main() {
double a = 3.0, b = 4.0, c = 5.0;
if (isValidNesbitt(a, b, c)) {
cout << "Nesbitt's inequality is satisfied" << endl;
} else {
cout << "Nesbitt's inequality is not satisfied" << endl;
}
return 0;
}
위 코드에서 isValidNesbitt 함수는 세 양수를 입력받아 각 항의 값을 계산한 뒤, 그 합이 1.5 이상인지 여부를 불리언 값으로 반환합니다. main 함수에서는 예시 값 a = 3.0, b = 4.0, c = 5.0을 사용해 함수를 호출하고 그 결과를 출력합니다.
실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Nesbitt's inequality is satisfied
a = 3.0, b = 4.0, c = 5.0일 때 각 항의 값은 약 0.3333, 0.5556, 0.4167이며, 이들의 합은 약 1.3056…이 아니라 3/(9) + 4/(8) + 5/(7) = 0.3333 + 0.5 + 0.7143 ≈ 1.5476으로 1.5 이상이므로 네스빗의 부등식을 만족한다는 메시지가 출력됩니다.