Tulislah program mandiri yang ketika diberi polinomial dan terikat akan menemukan semua akar nyata polinomial itu menjadi kesalahan absolut tidak melebihi batas.
Kendala
Saya tahu bahwa Mathematica dan mungkin beberapa bahasa lain memiliki solusi satu-simbol, dan itu membosankan, jadi Anda harus tetap berpegang pada operasi primitif (penambahan, pengurangan, perkalian, pembagian).
Ada fleksibilitas tertentu pada format input dan output. Anda dapat mengambil input melalui argumen stdin atau baris perintah dalam format apa pun yang masuk akal. Anda dapat mengizinkan titik apung atau mengharuskan beberapa representasi bilangan rasional digunakan. Anda dapat mengambil terikat atau kebalikan dari terikat, dan jika Anda menggunakan floating point Anda dapat mengasumsikan bahwa terikat tidak akan kurang dari 2 ulp. Polinomial harus dinyatakan sebagai daftar koefisien monomial, tetapi mungkin besar atau sedikit-endian.
Anda harus dapat membenarkan mengapa program Anda akan selalu bekerja (masalah numerik modulo), meskipun itu tidak perlu untuk menyediakan bukti lengkap sebaris.
Program harus menangani polinomial dengan akar berulang.
Contoh
x^2 - 2 = 0 (error bound 0.01)
Masukan bisa berupa misalnya
-2 0 1 0.01
100 1 0 -2
1/100 ; x^2-2
Keluaran bisa misalnya
-1.41 1.42
tapi tidak
-1.40 1.40
karena memiliki kesalahan absolut sekitar 0,014 ...
Uji kasus
Sederhana:
x^2 - 2 = 0 (error bound 0.01)
x^4 + 0.81 x^2 - 0.47 x + 0.06 (error bound 10^-6)
Banyak root:
x^4 - 8 x^3 + 18 x^2 - 27 (error bound 10^-6)
Polinomial 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 Pertanyaan ini ada di Sandbox selama kurang lebih 3 bulan. Jika Anda merasa perlu ditingkatkan sebelum memposting, kunjungi Sandbox dan komentari pertanyaan lain yang diajukan sebelum diposkan di Main.
fractions.Fraction
(tipe rasional)? (c) Apakah kita harus menangani polinomial derajat <1? (d) Bisakah kita mengasumsikan bahwa koefisien yang memimpin adalah 1?