오차 함수 계산기
계산 결과
erf(x)
- erfc(x)
- 0.157299
오차 함수 계산기는 같은 입력에 대해 erf(x)와 그 여함수 erfc(x)를 함께 돌려주고, 두 읽음값은 언제나 1로 더해집니다. 오차 함수는 종 모양 곡선을 0에서 x까지 적분한 값이라서, 가우스 분포를 재어야 하는 자리마다 나타납니다. erf(1)은 0.842701이고 erfc(1)은 0.157299이라서, 여함수는 첫 번째 읽음값을 1에서 뺀 것일 뿐입니다. 이 페이지는 값들을 급수 정의로 직접 계산합니다. 이 사이트를 쓰는 언어에 오차 함수가 내장되어 있지 않기 때문입니다. 음수 입력도 양수와 똑같이 받습니다. 입력은 양방향으로 6까지로 제한되는데, 그 위로는 곡선이 더 구별해 줄 것이 남지 않는 지점이기 때문입니다.
사람들이 찾아보는 값에서의 오차 함수와 그 여함수
| x | erf(x) | erfc(x) |
|---|---|---|
| 0 | 0 | 1 |
| 0.25 | 0.276326 | 0.7236736 |
| 0.5 | 0.5205 | 0.4795001 |
| 0.75 | 0.711156 | 0.2888444 |
| 1 | 0.842701 | 0.1572992 |
| 1.5 | 0.966105 | 0.03389485 |
| 2 | 0.995322 | 0.004677735 |
| 2.5 | 0.999593 | 0.000406952 |
| 3 | 0.999978 | 0.0000220905 |
모든 행의 마지막 두 열을 더하면 1이 되는데, 이것이 여함수의 정의이고 여기 있는 어떤 수든 가장 빠르게 검산하는 길입니다. 아래쪽 절반이 여함수가 얇아지는 자리입니다. x = 2에서는 0.004677735로 아직 유효숫자가 일곱 자리 남아 있지만, x = 3에서는 0.0000220905라서 소수점 뒤에 0이 네 개 이어지고 나서야 수가 나타납니다. 가운데 열을 세로로 읽으면 곡선이 평평해지는 것이 보입니다. 0에서 0.5까지가 범위의 절반을 덮고, 2 뒤의 모든 것이 나머지 0.5퍼센트입니다. 소수점은 처음부터 끝까지 평범한 마침표입니다. 표의 칸은 언어별로 나누어 쓰지 않기 때문입니다.
공식
erf x = (2 ÷ √π) ∫₀ˣ e^(−t²) dt erfc x = 1 − erf x
- x
- 재려는 값이고 단위가 없는 순수한 수입니다. 음수여도 되는데, 그때 오차 함수는 기함수라서 양수 답의 부호를 뒤집은 값을 돌려줍니다. erf(-1)은 -0.842701입니다. 실용 범위는 -6에서 6까지이고, 그 밖에서는 곡선이 너무 완전히 평평해져서 배정밀도가 그 값을 1과 구별하지 못합니다.
- e^(−t²)
- 적분 대상인 가우스 종 곡선입니다. 이 모양이 오차 함수를 중요하게 만듭니다. 두 값 사이에서 곡선 아래의 넓이가 확률이라서, 같은 적분이 모든 정규분포 문제에 나타나고 이 페이지의 자연스러운 짝이 정규분포 계산기인 것입니다.
- √π
- 적분 앞에 붙는 정규화 상수이고 약 1.772454입니다. 이것이 없으면 곡선 전체의 적분이 1이 아니라 √π가 되어서 오차 함수가 -1에서 1까지 가지 않습니다. 여기서는 변수가 아니라 상수인데, 변수처럼 보이기 때문에 짚어 둘 만합니다.
- erf x
- 오차 함수 자체이고 소수 여섯 자리로 인쇄됩니다. -1에서 1까지 가고 원점에서 0을 지나며 x = 1에서 0.842701에 닿습니다. 이 값은 확률이 아니라 진짜 넓이입니다. 확률로 바꾸려면 1을 더하고 반으로 나누는데, 표준정규분포 함수가 그렇게 만들어집니다.
- erfc x
- 여함수이고 1에서 오차 함수를 뺀 값이라서, 음의 큰 입력에서는 1에서 시작해 0을 향해 떨어집니다. 범위가 어마어마하게 넓어서 과학적 표기법으로 보고됩니다. 이것은 두 번째 측정값이라기보다 같은 값을 반대쪽 끝에서 읽은 것입니다. erfc는 꼬리 넓이이고, x가 0에서 멀 때 필요한 것이 바로 그 꼬리입니다.
필요한 답이 적힌 그대로의 오차 함수나 그 여함수일 때 이 페이지를 씁니다. 정규변수가 어떤 값 아래에 있을 확률이 실제로 원하는 것이라면, 정규분포 계산기가 평균과 표준편차를 받아 그 확률을 곧바로 돌려주는데 같은 수에 더 짧은 길로 닿는 셈입니다. 오차 함수는 그 아래에 깔린 원시 함수이고, 이 페이지는 그 원시 함수 자체를 읽는 자리입니다.
계산 예시
누구나 처음 만나는 값: x = 1
- x = 1에서 급수를 계산하고, 몇십 개 항이면 수렴함
- erf(1)이 0.842701로 나옴
- 여함수는 1에서 그것을 뺀 값: 1 - 0.842701 = 0.157299
- 두 읽음값을 더하면 1.000000이고, 이것이 이 페이지의 어느 행에서나 돌려 볼 만한 검산
두 읽음값이 1로 더해진다는 것은 반올림이 우연히 맞아떨어진 것이 아니라 여함수라는 말의 정의입니다. 넓이로 읽으면, 종 곡선 아래의 모든 것이 중심에서 한 단위 안에 있거나 그 밖에 있다는 뜻입니다. 이 행이 약 68퍼센트가 표준편차 하나 안에 있다는 익숙한 수치로 가장 곧장 옮겨 가는 행이기도 합니다.
꼬리가 얇아지기 시작하는 2
- erf(2)는 0.995322라서 곡선이 오르기를 거의 마쳤음
- 여함수는 1 - 0.995322 = 0.004678이고 이제 0.5퍼센트 아래
- 그래도 유효숫자는 일곱 자리 남아 있어서 이 값은 아직 과학적 표기법으로 넘어가지 않음
- 두 읽음값은 여전히 1로 더해짐: 0.995322 + 0.004678 = 1.000000
오차 함수가 아니라 여함수의 정밀도를 보십시오. 1에 아주 가까운 수를 1에서 빼면 앞자리가 버려지고, 이 행쯤에서 여함수는 그 앞자리를 이미 대부분 잃었습니다. 이 페이지가 여함수를 고정된 소수 자리가 아니라 유효숫자로 다루는 이유가 그것입니다. 자릿수를 고정하면 작은 꼬리가 통째로 0이 되어 버립니다.
여함수가 바닥나기 시작하는 4
- erf(4)의 참값은 1에서 약 1.54 × 10⁻⁸을 뺀 값
- 배정밀도에서는 1과 구별되지 않아서 오차 함수 칸이 정확히 1을 인쇄함
- 여함수는 1 - erf로 계산되어 1.541726 × 10⁻⁸을 돌려줌
- 정확도가 빠져나가는 곳이 바로 그 뺄셈이고, 남은 좋은 자리는 몇 개뿐
이것이 이 페이지의 정직한 한계이고 입력 범위가 6에서 멈추는 이유입니다. 여기서 여함수는 소수 여덟 자리까지 일치하는 두 수의 차라서 큰 상쇄가 남긴 작은 나머지입니다. 참값은 1.5417 × 10⁻⁸이고 그중 앞의 몇 자리만 믿을 수 있습니다. x = 6이 되면 두 배정밀도 수가 같아져서 뺄셈이 정확히 0을 돌려주는데, 참값은 약 2 × 10⁻¹⁷입니다.
한계
입력은 양방향으로 6까지로 제한됩니다. 이것은 성능의 한계가 아니라 정밀도의 한계입니다. 그 위로는 오차 함수가 1에 너무 가까워서 배정밀도가 그 차이를 나타내지 못하므로, 페이지가 잡음을 인쇄하게 됩니다. 범위 안에서도 알아 둘 만한 한계가 있습니다. 여함수는 뺄셈으로 계산되고, x가 약 4.5를 넘으면 그 뺄셈이 유효숫자 대부분을 상쇄해서 그 근처의 erfc 값은 좋은 자리가 몇 개 남지 않습니다. 이 문제는 여기서 고치지 않고, 고치려면 이 구현을 손보는 것이 아니라 여함수를 따로 구현해야 합니다. 오차 함수 자체는 범위 전체에서 마지막 자리 한두 단위 안으로 정확합니다. 주어지는 것은 두 값뿐이고, 표준정규분포 함수는 출력에 없습니다. 같은 정보를 다른 길로 얻는 것이라서 정규분포 계산기가 평균과 표준편차를 재료로 확률을 보고하기 때문입니다. 이 페이지에는 단위가 전혀 없고 입력은 순수한 수입니다. 값은 플랫폼 라이브러리가 아니라 이 페이지를 위해 쓴 급수에서 계산됩니다. 언어가 그런 함수를 제공하지 않기 때문입니다.
자주 묻는 질문
- 오차 함수는 어디에 쓰나요?
- 가우스 곡선에서 중심과 어떤 점 사이에 얼마나 들어 있는지를 재는 데 씁니다. 표준정규분포에서 그것이 곧 확률입니다. x = 1에서의 값은 0.842701이고, 1을 더해 반으로 나누면 0.921351이라서 표준정규변수가 평균에서 양쪽으로 표준편차 하나 안에 들어올 확률이 됩니다.
- erfc는 무엇이고 erf와 어떤 관계인가요?
- 여함수이고 1에서 오차 함수를 뺀 값으로 정의되므로, 이 페이지의 두 읽음값은 언제나 정확히 1로 더해집니다. 뒤에 덧붙인 것이 아니라 따로 있는 함수인 것은 큰 입력에서 필요한 쪽이 그것이기 때문입니다. x = 4에서 오차 함수는 1에 붙어 평평해졌고 여함수만 아직 정보를 담고 있습니다.
- 6보다 큰 값을 넣을 수 없는 이유는 무엇인가요?
- 6을 넘으면 잴 것이 남지 않기 때문입니다. x = 6에서 참값은 1에서 약 2 × 10⁻¹⁷을 뺀 값이고 배정밀도는 그것을 1과 구별하지 못하므로, 오차 함수 칸은 1을 인쇄하고 여함수는 정확히 0을 인쇄하게 됩니다. 이 한계는 계산이 얼마나 힘든지가 아니라 무엇을 나타낼 수 있는지에 대한 진술입니다. 급수는 거기서 200항쯤에 수렴합니다.
- 큰 입력에서 여함수의 정확도가 떨어지는 이유는 무엇인가요?
- 뺄셈으로 구하기 때문입니다. 오차 함수가 0.99999999999846256일 때 1에서 그것을 빼면 유효숫자가 몇 개만 남고 그 앞의 것은 모두 상쇄 잡음입니다. x = 5에서 참인 여함수는 1.5374598 × 10⁻¹²이고 이 페이지는 1.5364 × 10⁻¹²를 돌려줍니다. 오차 함수 자체는 이 문제를 겪지 않고, 그래서 그것이 주 결과입니다.
- 여기서 정규분포 확률을 대신 구할 수 있나요?
- 곧바로는 안 되고, 이 페이지는 일부러 그것을 제공하지 않습니다. 표준정규분포 함수는 오차 함수에 1을 더하고 반으로 나누어 만들지만, 정규분포 계산기는 값뿐 아니라 평균과 표준편차까지 받아 확률을 직접 보고합니다. 그 물음에는 표준화된 값보다 그쪽이 더 나은 답입니다.
참고 문헌
- Erf — 가우스의 적분으로서의 정의, 급수 전개, 작은 인수에서의 값 — Wolfram MathWorld (United States)
- DLMF §7.2: Error Functions — 정의와 대칭 관계, 그리고 값을 계산할 때 쓰는 급수 — National Institute of Standards and Technology (NIST), Digital Library of Mathematical Functions
- DLMF §7.12: Asymptotic Expansions for Error Functions — 여함수가 정확도를 잃는 이유와 되찾는 방법 — National Institute of Standards and Technology (NIST), Digital Library of Mathematical Functions