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

C++ cmath 헤더의 오차 함수(erf)로 확률 계산하기

하나의 변수값이 주어졌을 때, C++ STL에서 제공하는 오차 함수(Error Function)를 사용하여 해당 변수의 확률을 구하는 방법을 알아보겠습니다. 이 함수는 C++의 cmath 헤더 파일에 포함되어 있어, 별도의 라이브러리 설치 없이 간단한 함수 호출만으로 정밀한 계산 결과를 얻을 수 있습니다.

오차 함수(Error Function)란?

수학에서 오차 함수는 가우스 오차 함수(Gauss Error Function)라고도 불리며, 기호로는 erf()로 표기합니다. 확률론, 통계학, 편미분방정식 등에서 발생 가능한 오차를 계산할 때 사용되는 특수 함수입니다. 수학적으로 다음과 같이 정의됩니다.

C++ cmath 헤더의 오차 함수(erf)로 확률 계산하기

오차 함수와 밀접하게 관련된 함수로는 다음 두 가지가 있습니다.

  • 상보 오차 함수(Complementary Error Function)erfc x = 1 − erf x로 정의됩니다. 전체 확률에서 오차 함수 값을 뺀 나머지 부분을 나타냅니다.
  • 허수 오차 함수(Imaginary Error Function)erfi x = −i · erf(ix)로 정의되며, 여기서 i는 허수 단위입니다.

참고로 실수 범위에서 erf(x)의 값은 항상 −1부터 1 사이이며, x가 커질수록 1에 수렴합니다. 따라서 위 예시처럼 2.25와 같은 큰 입력값에서는 1에 매우 가까운 확률 값이 나오게 됩니다.

입력 및 출력 예시

예시 1

입력:

i = 2.25

출력:

erf(i) = 0.998537

예시 2

입력:

i = 1.25

출력:

erf(i) = 0.9229

C++ 코드 예제

예제 1 — i = 2.25인 경우

#include <iostream>
#include <cmath>
using namespace std;
double probab(double i){
    double probab_1 = erf(i);
    return probab_1;
}
int main (){
    double i = 2.25;
    cout<<"Probability is :"<<probab(i)<< endl;
    return 0;
}

실행 결과:

Probability is : 0.998537

예제 2 — i = 1.25인 경우

#include <iostream>
#include <cmath>
using namespace std;
double probab(double i){
    double probab_1 = erf(i);
    return probab_1;
}
int main (){
    double i = 1.25;
    cout<<"Probability is :"<<probab(i)<< endl;
    return 0;
}

실행 결과:

Probability is : 0.9229

코드 동작 원리

위 코드의 동작 과정은 다음과 같습니다.

  1. probab()라는 사용자 정의 함수를 선언하고, 매개변수로 double 타입의 변수 i를 전달합니다.
  2. 함수 내부에서 cmath 헤더에 내장된 erf() 함수를 호출하여 주어진 값의 오차 함수 값을 계산합니다.
  3. 계산된 결과를 반환하며, main() 함수에서 이를 화면에 출력합니다.

이처럼 erf() 함수를 활용하면 복잡한 적분 계산을 직접 구현하지 않고도 한 줄의 코드로 오차 함수 기반의 확률 값을 손쉽게 구할 수 있습니다. 통계 분석, 신호 처리, 머신러닝 등 다양한 분야에서 유용하게 활용할 수 있으니 꼭 기억해 두시기 바랍니다.