수치 미분 비교(차분·복소단계·이중수) 계산기
같은 도함수를 전진차분·중심차분·5점 공식·복소단계·이중수 자동미분으로 구해 정확도를 나란히 냅니다. 간격 h를 줄인다고 좋아지지 않고 어느 지점부터 도리어 나빠진다는 것을 오차 곡선으로 직접 보여 줍니다.
도함수를 손으로 적을 수 있는 함수만 담았습니다. 그 값이 정답지가 됩니다.
h = 1.0e-5
f′(1) 의 참값 — e^x (sin x + cos x)
3.7560492271
f(1) = 2.28735529 · 아래 여섯 방법이 이 값에 얼마나 가까운지 견줍니다
여섯 방법을 나란히
| 방법 | 오차 차수 | 값 | 상대오차 | 맞은 자리 |
|---|---|---|---|---|
| 전진차분 | O(h^1) | 3.756063914 | 3.91e-6 | 5.4 |
| 후진차분 | O(h^1) | 3.7560345401 | 3.91e-6 | 5.4 |
| 중심차분 | O(h^2) | 3.7560492271 | 7.63e-12 | 11.1 |
| 5점 공식 | O(h^4) | 3.7560492271 | 4.19e-12 | 11.4 |
| 복소단계 | O(h^2) | 3.7560492271 | 7.27e-12 | 11.1 |
| 이중수 자동미분 | — | 3.7560492271 | 0 | 16 |
h를 줄이면 좋아질까
가장 좋은 h는 어디였나
| 방법 | 이론상 최적 h | 실제 최적 h | 그때 상대오차 |
|---|---|---|---|
| 전진차분 | √ε = 1.5e-8 | 1.0e-8 | 5.9e-9 |
| 중심차분 | ε^(1/3) = 6.1e-6 | 3.2e-6 | 1.0e-12 |
| 5점 공식 | ε^(1/5) = 7.4e-4 | 3.2e-4 | 6.3e-14 |
뺄셈을 하지 않는 두 방법
계산 방법
- 1함수를 고릅니다. 도함수를 손으로 적을 수 있는 것만 담아 두어 그 값이 정답지가 됩니다.
- 2미분할 지점 x와 간격 h를 넣으면 여섯 방법의 값과 오차가 한 표에 나옵니다.
- 3오차 곡선에서 차분 세 곡선이 V자로 꺾이는 지점을 보십시오.
- 4h를 10⁻¹⁴처럼 아주 작게 해 보시면 차분이 무너지는 것이 보입니다.
- 5«가장 좋은 h는 어디였나»에서 이론값과 실제로 잰 값을 견줘 보십시오.
자주 묻는 질문
전진차분은 (f(x+h) − f(x))/h로 한쪽만 보고, 중심차분은 (f(x+h) − f(x−h))/(2h)로 양쪽을 봅니다. 테일러 전개에서 중심차분은 h의 홀수 차 항이 서로 지워져 오차가 O(h²)가 되므로, 같은 h에서 전진차분보다 훨씬 정확합니다. 대신 함수를 한 번 더 계산해야 합니다.
반대로 나빠집니다. 오차가 두 가지로 갈리기 때문입니다. 테일러 전개에서 버린 절단오차는 h에 비례해 줄지만, 거의 같은 두 값을 빼면서 앞자리가 날아가는 상쇄오차는 h에 반비례해 커집니다. 둘을 더하면 U자 곡선이 되고, 그 바닥보다 h를 작게 하면 도리어 나빠집니다. h를 10⁻¹⁰⁰으로 하면 x + h가 x와 구별되지 않아 답이 아예 0이 됩니다.
전진차분은 √ε ≈ 1.5×10⁻⁸, 중심차분은 ε^(1/3) ≈ 6×10⁻⁶ 근처입니다(ε는 배정밀도의 기계입실론 2.2×10⁻¹⁶). 이 계산기는 h를 훑어 실제로 어디가 바닥인지 재서 이론값과 나란히 보여 줍니다. 5점 공식은 바닥이 평평해 함수마다 크게 흩어지므로 이론값 하나로 말하기 어렵습니다.
최적 h를 골라도 전진차분은 여덟 자리, 중심차분은 열한 자리쯤에서 멈춥니다. 이것이 차분 방식의 한계이며, 도함수를 여러 번 겹쳐 쓰거나(2차 미분) 최적화에 넣으면 이 오차가 그대로 따라 들어옵니다.
실수 방향이 아니라 허수 방향으로 한 걸음 가는 방법입니다. f(x + ih) = f(x) + ih·f′(x) − h²f″(x)/2 − ⋯이므로 허수부를 h로 나누면 f′(x)가 나옵니다. 실수부와 허수부가 따로 놀아 뺄셈이 아예 생기지 않으므로 상쇄오차가 없고, h를 10⁻¹⁰⁰으로 해도 배정밀도 한계까지 정확합니다. 다만 f가 해석적이어야 하고 구현 안에 절댓값이나 조건분기가 있으면 쓸 수 없습니다.
ε² = 0인 새 수 ε를 도입해 x 대신 x + ε를 넣는 방법입니다. 곱셈·나눗셈·초등함수마다 미분 규칙을 한 줄씩 심어 두면 f(a + ε) = f(a) + f′(a)ε가 되어 값과 도함수가 동시에 나옵니다. h라는 것 자체가 없으므로 근사가 아니라 정확하며, 딥러닝 프레임워크가 쓰는 자동미분의 전방향 판이 바로 이것입니다.
다릅니다. 기호미분은 도함수의 «식»을 만들어 내므로 식이 폭발적으로 길어질 수 있지만, 자동미분은 식을 만들지 않고 값만 함께 굴립니다. 그래서 계산량이 원래 함수의 몇 배 안쪽으로 묶이며, 변수가 수백만 개인 신경망에서도 쓸 수 있습니다.
정확도를 견주려면 참값이 있어야 하는데, 임의의 식에는 «손으로 적은 도함수»가 없기 때문입니다. 이 계산기의 목적은 도함수를 구하는 것이 아니라 방법들의 정확도를 견주는 것이므로, 도함수를 사람이 적어 둔 함수만 담았습니다.
전송되지 않습니다. 계산은 모두 브라우저 안에서 이루어지며 입력한 값은 이 기기에만 남습니다.
알아두면 좋은 점
- 실수·복소수·이중수 세 산술에 대해 함수를 한 번만 정의하고 구현을 갈아 끼웁니다. 세 방법이 같은 식을 쓰도록 하기 위해서입니다.
- 상대오차로 견줍니다. e^x를 20에서 미분하면 값이 4.8억이라 절대오차만 보면 오해하기 쉽습니다.
- 복소단계 미분은 f가 해석적일 때만 쓸 수 있습니다. 절댓값·최댓값·조건분기가 들어간 함수에는 쓸 수 없습니다.
- 여기서 다루는 자동미분은 전방향(forward mode)입니다. 입력이 많고 출력이 하나인 신경망 학습에는 역방향(backpropagation)을 씁니다.
함께 보면 좋은 도구
마지막 검증: 2026년 9월 2일 · 결과는 참고용 추정치입니다.