Viết một chương trình độc lập mà khi đưa ra một đa thức và một ràng buộc sẽ tìm thấy tất cả các gốc thực sự của đa thức đó với một lỗi tuyệt đối không vượt quá giới hạn.
Những ràng buộc
Tôi biết rằng Mathicala và có lẽ một số ngôn ngữ khác có giải pháp một ký hiệu và điều đó thật nhàm chán, vì vậy bạn nên tuân thủ các thao tác nguyên thủy (cộng, trừ, nhân, chia).
Có sự linh hoạt nhất định trên các định dạng đầu vào và đầu ra. Bạn có thể nhận đầu vào thông qua stdin hoặc đối số dòng lệnh ở bất kỳ định dạng hợp lý nào. Bạn có thể cho phép dấu phẩy động hoặc yêu cầu sử dụng một số biểu diễn số hữu tỷ. Bạn có thể lấy ràng buộc hoặc đối ứng của ràng buộc và nếu bạn đang sử dụng dấu phẩy động, bạn có thể cho rằng giới hạn sẽ không nhỏ hơn 2 ulp. Đa thức nên được biểu thị dưới dạng một danh sách các hệ số đơn thức, nhưng nó có thể là lớn hoặc nhỏ về cuối.
Bạn phải có khả năng biện minh lý do tại sao chương trình của bạn sẽ luôn hoạt động (các vấn đề về số lượng modulo), mặc dù không cần thiết phải cung cấp đầy đủ bằng chứng nội tuyến.
Chương trình phải xử lý đa thức với các gốc lặp đi lặp lại.
Thí dụ
x^2 - 2 = 0 (error bound 0.01)
Đầu vào có thể là ví dụ
-2 0 1 0.01
100 1 0 -2
1/100 ; x^2-2
Đầu ra có thể là ví dụ
-1.41 1.42
nhưng không
-1.40 1.40
vì nó có sai số tuyệt đối khoảng 0,011 ...
Các trường hợp thử nghiệm
Đơn giản:
x^2 - 2 = 0 (error bound 0.01)
x^4 + 0.81 x^2 - 0.47 x + 0.06 (error bound 10^-6)
Nhiều gốc:
x^4 - 8 x^3 + 18 x^2 - 27 (error bound 10^-6)
Đa thức của Wilkinson:
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 Câu hỏi này đã có trong Sandbox trong khoảng 3 tháng. Nếu bạn nghĩ rằng nó cần cải thiện trước khi đăng, hãy truy cập Sandbox và nhận xét về các câu hỏi được đề xuất khác trước khi chúng được đăng trên Main.
fractions.Fraction
(một loại hợp lý) không? (c) Chúng ta có phải xử lý đa thức bậc <1 không? (d) Chúng ta có thể giả sử rằng hệ số dẫn đầu là 1 không?