방정식 수치해 계산기 (이분법·뉴턴법·할선법)
f(x)=0의 근을 이분법·뉴턴법·할선법으로 함께 구하고 반복 과정을 표로 보입니다. 이분법은 왜 반드시 수렴하는지, 뉴턴법은 어떤 초기값에서 발산하는지 같은 함수로 견주어 봅니다.
이 식이 0이 되는 x를 찾습니다. sin cos tan exp ln log sqrt cbrt abs와 pi·e를 쓸 수 있고, 2x·3(x+1)처럼 곱셈 기호를 생략해도 됩니다.
이분법과 할선법은 위의 a·b를 그대로 씁니다. 할선법은 두 점을 잇는 직선을 쓰므로 부호가 바뀌지 않아도 됩니다.
근 x ≈ (이분법으로 구함)
1.52137970179
f(x) = -2.97865461185e-8 · 27회 반복. 수치해이므로 정확한 값이 아니라 허용오차 안의 근삿값으로 보아야 합니다.
세 방법 견주기
| 방법 | 결과 | 근 | 회수 | |f(근)| |
|---|---|---|---|---|
| 이분법 | 수렴 | 1.52137970179 | 27 | 2.97865461185e-8 |
| 뉴턴법 | 수렴 | 1.5213797068 | 4 | 0 |
| 할선법 | 수렴 | 1.5213797068 | 7 | 1.84297022088e-14 |
이분법은 구간 안에 부호 변화만 있으면 반드시 수렴합니다. 지금 구간에서 허용오차 1e-8에 닿으려면 27회가 필요하며, 이 값은 함수와 무관하게 log₂((b−a)/허용오차)로 미리 셀 수 있습니다. 뉴턴법과 할선법은 몇 회가 들지 미리 알 수 없는 대신 잘 되면 훨씬 적게 듭니다.
| n | a | b | 중점 c | f(c) | 구간 반폭 |
|---|---|---|---|---|---|
| 1 | 1 | 2 | 1.5 | -0.125 | 0.5 |
| 2 | 1.5 | 2 | 1.75 | 1.609375 | 0.25 |
| 3 | 1.5 | 1.75 | 1.625 | 0.666015625 | 0.125 |
| 4 | 1.5 | 1.625 | 1.5625 | 0.252197265625 | 0.0625 |
| 5 | 1.5 | 1.5625 | 1.53125 | 0.0591125488281 | 0.03125 |
| 6 | 1.5 | 1.53125 | 1.515625 | -0.0340538024902 | 0.015625 |
| 7 | 1.515625 | 1.53125 | 1.5234375 | 0.0122504234314 | 0.0078125 |
| 8 | 1.515625 | 1.5234375 | 1.51953125 | -0.0109712481499 | 0.00390625 |
| 9 | 1.51953125 | 1.5234375 | 1.521484375 | 0.000622175633907 | 0.001953125 |
| 10 | 1.51953125 | 1.521484375 | 1.5205078125 | -0.00517888646573 | 0.0009765625 |
| 11 | 1.5205078125 | 1.521484375 | 1.52099609375 | -0.00227944331709 | 0.00048828125 |
| 12 | 1.52099609375 | 1.521484375 | 1.52124023438 | -0.000828905860544 | 0.000244140625 |
| 13 | 1.52124023438 | 1.521484375 | 1.52136230469 | -0.000103433123513 | 0.0001220703125 |
| 14 | 1.52136230469 | 1.521484375 | 1.52142333984 | 0.000259354251966 | 0.00006103515625 |
| 15 | 1.52136230469 | 1.52142333984 | 1.52139282227 | 0.000077956313504 | 0.000030517578125 |
| 16 | 1.52136230469 | 1.52139282227 | 1.52137756348 | -0.0000127394676745 | 0.0000152587890625 |
| 17 | 1.52137756348 | 1.52139282227 | 1.52138519287 | 0.0000326081572459 | 0.00000762939453125 |
| 18 | 1.52137756348 | 1.52138519287 | 1.52138137817 | 0.00000993427836882 | 0.00000381469726563 |
| 19 | 1.52137756348 | 1.52138137817 | 1.52137947083 | -0.00000140261125736 | 0.00000190734863281 |
| 20 | 1.52137947083 | 1.52138137817 | 1.5213804245 | 0.00000426582940483 | 9.53674316406e-7 |
| 21 | 1.52137947083 | 1.5213804245 | 1.52137994766 | 0.00000143160803612 | 4.76837158203e-7 |
| 22 | 1.52137947083 | 1.52137994766 | 1.52137970924 | 1.44981298078e-8 | 2.38418579102e-7 |
| 23 | 1.52137947083 | 1.52137970924 | 1.52137959003 | -6.94056628614e-7 | 1.19209289551e-7 |
| 24 | 1.52137959003 | 1.52137970924 | 1.52137964964 | -3.39779265612e-7 | 5.96046447754e-8 |
| 25 | 1.52137964964 | 1.52137970924 | 1.52137967944 | -1.62640571677e-7 | 2.98023223877e-8 |
| 26 | 1.52137967944 | 1.52137970924 | 1.52137969434 | -7.40712220448e-8 | 1.49011611938e-8 |
| 27 | 1.52137969434 | 1.52137970924 | 1.52137970179 | -2.97865461185e-8 | 7.45058059692e-9 |
부호가 바뀌는 쪽 반쪽만 남기며 구간을 계속 접습니다. 「구간 반폭」이 매 회 정확히 절반이 되는 것을 표에서 볼 수 있으며, 근이 그 구간 안에 있다는 것은 보장됩니다 — 느리지만 실패하지 않는 이유입니다.
빠른 것과 확실한 것은 다르다
이분법은 반드시 수렴하지만 자릿수 하나를 얻는 데 3.3회가 듭니다. 뉴턴법은 잘 되면 자릿수가 매 회 배로 늘지만 초기값이 나쁘면 발산하거나 두 값을 오가며 순환합니다. 실무에서는 이분법으로 근의 위치를 대충 좁힌 뒤 그 값을 뉴턴법의 초기값으로 넘기는 식으로 둘을 섞어 씁니다. 위 예제 가운데 「뉴턴법이 발산한다」와 「뉴턴법이 순환한다」를 눌러 보면 같은 함수에서 이분법만 답을 내는 것을 볼 수 있습니다.
반복 한도는 100회입니다. 한도까지 갔는데도 끝나지 않으면 발산이 아니라 순환일 수 있으니 표의 x가 같은 값을 되풀이하는지 보세요.
계산 방법
- 1f(x)에 근을 찾을 식을 적습니다. 「= 0」은 빼고 좌변만 적으면 됩니다.
- 2이분법과 할선법이 쓸 구간 a·b를 넣습니다. 이분법은 f(a)와 f(b)의 부호가 달라야 합니다.
- 3뉴턴법의 초기값 x₀를 넣습니다. 보통 구간의 가운데쯤을 씁니다.
- 4세 방법의 결과와 회수를 견주어 봅니다.
- 5아래에서 방법을 골라 반복 과정을 한 줄씩 확인합니다.
자주 묻는 질문
근의 위치를 모르면 이분법으로 좁힌 뒤 그 값을 뉴턴법의 초기값으로 넘기는 것이 실무의 방식입니다. 이분법은 구간 안에 부호 변화만 있으면 반드시 수렴하지만 자릿수 하나를 얻는 데 3.3회가 들 만큼 느리고, 뉴턴법은 단근 근처에서 자릿수가 매 회 배로 늘지만 초기값이 나쁘면 발산하거나 순환합니다. 확실한 쪽으로 자리를 잡고 빠른 쪽으로 마무리하는 셈입니다.
f′(x)가 0에 가까워 접선이 눕는 곳에 올라섰을 때입니다. 접선이 x축과 만나는 점이 근에서 한참 떨어진 곳으로 잡히기 때문입니다. f(x)=∛x에 뉴턴법을 쓰면 x가 매번 −2배가 되어 부호를 바꾸며 커지고, f(x)=x³−2x+2를 초기값 0에서 시작하면 0과 1을 끝없이 오갑니다. 이 계산기의 예제에 둘 다 들어 있습니다.
구간의 양 끝에서 f(x)의 부호가 같기 때문입니다. 근이 아예 없거나, 근이 짝수 개 들어 있거나, x축에 닿기만 하고 지나가지 않는 중근인 경우입니다. 이 계산기는 그럴 때 구간 안을 200등분해 부호가 바뀌는 곳을 찾아 알려 주므로 그 구간을 다시 넣으면 됩니다. 중근이라면 이분법으로는 잡히지 않으니 뉴턴법을 쓰세요.
중근에서는 f와 f′가 함께 0이 되어 2차 수렴의 전제가 깨지기 때문입니다. f(x)=(x−1)²에 뉴턴법을 쓰면 오차가 매번 정확히 절반으로 줄어들 뿐이라 이분법과 같은 속도가 됩니다. 자릿수가 배로 늘어나는 2차 수렴은 근이 겹치지 않은 단근일 때의 이야기입니다.
이 계산기는 도함수를 중앙차분 (f(x+h) − f(x−h)) / 2h로 직접 구합니다. h는 |x|에 비례해 잡아 x가 클 때도 자리가 남게 했습니다. 다만 근삿값이므로 해석적 도함수를 넣은 것과 완전히 같지는 않으며, f′가 0에 가까운 곳에서 특히 어긋납니다. 도함수를 아예 쓰지 않으려면 할선법을 보세요.
|f(x)|가 작다고 x가 근에 가까운 것은 아니기 때문입니다. f(x)=(x−1)²에서는 x가 1.00001만 되어도 |f|가 1e−10이라, |f|로 판정하면 자릿수 다섯에서 「수렴했다」고 말하게 됩니다. 그래서 뉴턴법·할선법은 한 걸음의 크기로, 이분법은 남은 구간의 반폭으로 판정하고 |f(근)|는 참고로 따로 보입니다.
전송되지 않습니다. 식을 읽는 것도 근을 찾는 것도 모두 브라우저 안에서 이뤄지고, 입력값은 이 기기에만 남습니다.
알아두면 좋은 점
- 검증은 x³−x−2의 실근을 카르다노 공식으로 구한 값, cos x = x의 근(도티 수 0.7390851332151607), √2와 대조해 했습니다. 여섯 가지 식에서 세 방법이 모두 같은 근으로 모이는지, 이분법의 구간이 매 회 정확히 절반이 되는지, 필요한 회수가 log₂((b−a)/허용오차)와 맞는지도 함께 확인했습니다.
- 뉴턴법의 도함수는 중앙차분으로 구한 근삿값입니다. 해석적 도함수를 넣은 결과와 미세하게 다를 수 있으며, f′가 0에 가까운 구간에서 차이가 커집니다.
- 수렴 판정은 뉴턴법·할선법이 걸음 크기 |Δx|, 이분법이 남은 구간의 반폭입니다. |f(근)|는 판정에 쓰지 않고 참고로만 보입니다.
- |x|가 1e12를 넘으면 발산으로 봅니다. 두 값을 오가는 순환은 발산하지 않으므로 반복 한도(100회)로만 걸리며, 그 둘을 나누어 알립니다.
- 중근이나 접하는 근은 이분법으로 잡히지 않습니다. 구간을 훑어 부호 변화를 찾는 기능도 훑는 간격보다 좁게 붙은 두 근은 놓칩니다.
- 복소근은 다루지 않습니다. 실수 구간에서 부호가 바뀌거나 접선이 닿는 실근만 찾습니다.
함께 보면 좋은 도구
마지막 검증: 2026년 9월 1일 · 결과는 참고용 추정치입니다.