이 해법기가 하는 일
N차 다항식 방정식 해법기는 실수 계수를 가진 다항식 방정식 \(a_0 x^{n} + a_1 x^{n-1} + \cdots + a_{n-1} x + a_n = 0\) 의 모든 근(실근과 복소근)을 구합니다. 사용하는 알고리즘은 두랜드-커너(Durand-Kerner) 방법으로, 바이어슈트라스(Weierstrass) 방법이라고도 불리며 DKA(두랜드-커너-아베르트) 계열의 기초가 됩니다. 이 방법은 모든 근의 추정값을 동시에 다듬어 나가는 반복 기법입니다. 특정 국가나 단위에 얽매이지 않는 보편적인 수학 도구입니다.
계수 표기 규칙
이 도구는 계수를 최고차항부터 매깁니다. 즉 \(a_0\)가 \(x^{n}\)의 계수(최고차항 계수이며 반드시 0이 아니어야 함)이고 \(a_n\)이 상수항입니다. 이는 교과서에서 흔히 쓰는 "\(a_k\)가 \(x^k\)의 계수"라는 규칙과 반대 순서이므로, 이에 맞춰 계수를 입력하세요. \(n\)보다 큰 번호의 계수는 무시됩니다.
사용 방법
차수 \(n\)(1~16)을 선택하고 \(a_0\)부터 \(a_n\)까지 계수를 입력합니다(쓰지 않는 계수는 0으로 두면 됩니다). 표시할 유효숫자 자릿수를 고른 뒤 실행하세요. 실근은 허수부가 0인 값으로 나타나며, 실수 계수 다항식의 복소근은 켤레쌍(\(\text{re} + i\cdot\text{im}\) 과 \(\text{re} - i\cdot\text{im}\))으로 나타납니다.
계산 공식
먼저 모든 계수를 \(a_0\)로 나누어 최고차항 계수가 1인 모닉 다항식 \(p(x)=x^{n}+b_1 x^{n-1}+\cdots+b_n\) 으로 만듭니다. 그런 다음 각 추정값을 다음과 같이 갱신합니다.
$$z_i \leftarrow z_i - \frac{p(z_i)}{\displaystyle\prod_{j \ne i}(z_i - z_j)}$$원 둘레에 서로 다른 시작점을 흩뿌려 놓으면, 추정값들이 동시에 \(n\)개의 근으로 수렴합니다.
예제 풀이
$$x^3 - 6x^2 + 11x - 6 = 0$$ 을 풀려면 \(n=3\), \(a_0=1\), \(a_1=-6\), \(a_2=11\), \(a_3=-6\) 을 입력합니다. 이 다항식은 \((x-1)(x-2)(x-3)\)로 인수분해되며, 반복 계산은 근 1, 2, 3(모두 실근)으로 수렴합니다.
자주 묻는 질문
\(a_0\)가 0이면 안 되는 이유는? 최고차항 계수가 0이면 그 방정식은 사실상 \(n\)차가 아닙니다. 따라서 이 도구는 \(a_0=0\)을 잘못된 입력으로 처리합니다.
복소근이 쌍으로 나오는 이유는? 실수 계수를 가진 다항식의 복소근은 항상 켤레쌍을 이룹니다. 그래서 \(+i\cdot\text{im}\) 과 \(-i\cdot\text{im}\) 이 짝을 이루는 값을 보게 됩니다.
중근(중복되는 근)도 처리되나요? 네, 처리됩니다. 다만 중근은 수렴 속도가 더 느리기 때문에, 이 해법기는 충분히 많은 반복 횟수와 다소 느슨한 허용오차를 사용합니다. 아주 작은 허수부 잔차는 0으로 정리됩니다.