도구스학업·수학

수치 미분 비교(차분·복소단계·이중수) 계산기

같은 도함수를 전진차분·중심차분·5점 공식·복소단계·이중수 자동미분으로 구해 정확도를 나란히 냅니다. 간격 h를 줄인다고 좋아지지 않고 어느 지점부터 도리어 나빠진다는 것을 오차 곡선으로 직접 보여 줍니다.

도함수를 손으로 적을 수 있는 함수만 담았습니다. 그 값이 정답지가 됩니다.

h = 1.0e-5

f′(1) 의 참값 — e^x (sin x + cos x)

3.7560492271

f(1) = 2.28735529 · 아래 여섯 방법이 이 값에 얼마나 가까운지 견줍니다

여섯 방법을 나란히

방법오차 차수상대오차맞은 자리
전진차분O(h^1)3.7560639143.91e-65.4
후진차분O(h^1)3.75603454013.91e-65.4
중심차분O(h^2)3.75604922717.63e-1211.1
5점 공식O(h^4)3.75604922714.19e-1211.4
복소단계O(h^2)3.75604922717.27e-1211.1
이중수 자동미분3.7560492271016
이중수에는 «오차 차수»가 없습니다. 근사가 아니라 정확한 값이기 때문입니다. 복소단계는 O(h²)로 차분과 같은 차수지만, 뺄셈이 없어 h를 아무리 줄여도 무너지지 않습니다.

h를 줄이면 좋아질까

10^010^-410^-810^-1210^-16h=10^-2h=10^-6h=10^-10h=10^-14h=10^-18전진차분중심차분5점 공식복소단계
가로축이 간격 h(오른쪽으로 갈수록 작아집니다), 세로축이 상대오차입니다. 차분 세 곡선이 V자로 꺾이는 것이 이 도구의 요점입니다. 오른쪽으로 가면 절단오차는 줄지만, 거의 같은 두 값을 빼면서 앞자리가 날아가는 상쇄오차가 커져 도리어 나빠집니다. 세로선이 지금 쓰고 있는 h입니다.
복소단계 곡선만 꺾이지 않고 바닥에 붙어 그대로 머뭅니다. f(x + ih)의 허수부를 읽는 것이라 뺄셈이 아예 없기 때문입니다.

가장 좋은 h는 어디였나

방법이론상 최적 h실제 최적 h그때 상대오차
전진차분√ε = 1.5e-81.0e-85.9e-9
중심차분ε^(1/3) = 6.1e-63.2e-61.0e-12
5점 공식ε^(1/5) = 7.4e-43.2e-46.3e-14
절단오차는 h에 비례해 줄고 상쇄오차는 h에 반비례해 커지므로, 둘이 균형을 이루는 곳이 최적입니다. 전진차분은 √ε ≈ 1.5×10⁻⁸, 중심차분은 ε^(1/3) ≈ 6×10⁻⁶ 근처이고 실제로 재 봐도 그 언저리입니다. 아무리 잘 골라도 전진차분은 여덟 자리, 중심차분은 열한 자리쯤에서 멈춥니다.
5점 공식은 바닥이 평평해 최적 h가 함수마다 크게 흩어집니다. 함수를 바꿔 가며 이 칸을 보시면 10⁻⁵부터 10⁻²까지 옮겨 다니는 것이 보입니다 — 이론값 하나로 말할 수 없는 부분입니다.

뺄셈을 하지 않는 두 방법

복소단계 f′ ≈ Im f(x + ih) / h3.756049227122
이중수 f(a + ε) = f(a) + f′(a)ε3.756049227095
참값3.756049227095
복소단계는 허수 방향으로 한 걸음 갑니다. f(x + ih) = f(x) + ih·f′(x) − h²f″(x)/2 − ⋯이므로 허수부를 h로 나누면 f′(x)가 나오고, 실수부와 허수부가 따로 놀아 뺄셈이 생기지 않습니다. 다만 f가 해석적이어야 하고 구현 안에 절댓값이나 조건분기가 있으면 쓸 수 없습니다.
이중수는 ε² = 0인 ε를 도입해 x + ε를 넣습니다. 곱셈·나눗셈·초등함수마다 미분 규칙을 한 줄씩 심어 두면 f(a + ε) = f(a) + f′(a)ε가 되어 값과 도함수가 동시에 나옵니다. h라는 것이 아예 없으므로 근사가 아니라 정확합니다. 이것이 딥러닝 프레임워크가 쓰는 자동미분의 전방향 판입니다.

계산 방법

  1. 1함수를 고릅니다. 도함수를 손으로 적을 수 있는 것만 담아 두어 그 값이 정답지가 됩니다.
  2. 2미분할 지점 x와 간격 h를 넣으면 여섯 방법의 값과 오차가 한 표에 나옵니다.
  3. 3오차 곡선에서 차분 세 곡선이 V자로 꺾이는 지점을 보십시오.
  4. 4h를 10⁻¹⁴처럼 아주 작게 해 보시면 차분이 무너지는 것이 보입니다.
  5. 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일 · 결과는 참고용 추정치입니다.