다항식과 한계가 주어지면 한계를 초과하지 않는 절대 오차에 대한 다항식의 모든 근을 찾을 수있는 자체 포함 프로그램을 작성하십시오.
제약
Mathematica와 다른 언어에는 하나의 기호 솔루션이 있으며 지루하다는 것을 알고 있으므로 기본 연산 (더하기, 빼기, 곱하기, 나누기)을 고수해야합니다.
입력 및 출력 형식에는 특정 유연성이 있습니다. stdin 또는 명령 행 인수를 통해 적절한 형식으로 입력 할 수 있습니다. 부동 소수점을 허용하거나 합리적인 숫자를 사용해야 할 수도 있습니다. 경계의 경계 또는 역수를 취할 수 있으며 부동 소수점을 사용하는 경우 경계가 2ulp 이상이라고 가정 할 수 있습니다. 다항식은 단일 계수 목록으로 표현해야하지만 빅 엔디안 또는 리틀 엔디안 일 수 있습니다.
완전한 증거를 인라인으로 제공 할 필요는 없지만 프로그램이 항상 작동하는 이유 (모듈로 수치 문제)를 정당화 할 수 있어야합니다.
프로그램은 근이 반복되는 다항식을 처리해야합니다.
예
x^2 - 2 = 0 (error bound 0.01)
입력은 예를 들어
-2 0 1 0.01
100 1 0 -2
1/100 ; x^2-2
출력은 예를 들어
-1.41 1.42
하지만
-1.40 1.40
약 0.014의 절대 오차가 있기 때문에 ...
테스트 사례
단순한:
x^2 - 2 = 0 (error bound 0.01)
x^4 + 0.81 x^2 - 0.47 x + 0.06 (error bound 10^-6)
여러 루트 :
x^4 - 8 x^3 + 18 x^2 - 27 (error bound 10^-6)
윌킨슨의 다항식 :
x^20 - 210 x^19 + 20615 x^18 - 1256850 x^17 + 53327946 x^16 -1672280820 x^15 +
40171771630 x^14 - 756111184500 x^13 + 11310276995381 x^12 - 135585182899530 x^11 +
1307535010540395 x^10 - 10142299865511450 x^9 + 63030812099294896 x^8 -
311333643161390640 x^7 + 1206647803780373360 x^6 -3599979517947607200 x^5 +
8037811822645051776 x^4 - 12870931245150988800 x^3 + 13803759753640704000 x^2 -
8752948036761600000 x + 2432902008176640000 (error bound 2^-32)
NB이 질문은 약 3 개월 동안 샌드 박스 에있었습니다. 게시하기 전에 개선이 필요하다고 생각되면 Sandbox를 방문하여 Main에 게시 되기 전에 제안 된 다른 질문에 의견을 보내십시오 .
fractions.Fraction
(합리적 유형))을 사용한다고 가정 할 수 있습니까? (c) 1보다 작은 다항식을 처리해야합니까? (d) 선행 계수가 1이라고 가정 할 수 있습니까?