Algoritma apa yang dapat kita gunakan untuk menemukan semua akar bilangan bulat dari polinomial dengan koefisien bilangan bulat?
Saya mengamati bahwa Sage dapat menemukan akar dalam beberapa detik bahkan ketika semua koefisien sangat besar. Bagaimana itu bisa dilakukan?
ds.algorithms
na.numerical-analysis
pengguna12290
sumber
sumber
Jawaban:
Dengan asumsi bahwa koefisien adalah bilangan bulat atau rasional dan Anda ingin akar bilangan bulat, pendekatan paling sederhana adalah dengan menggunakan bilangan bulat atau teorema akar rasional. Lihat http://en.wikipedia.org/wiki/Rational_root_theorem Seperti dicatat oleh DW, ini mungkin bermasalah jika koefisien konstan sulit untuk faktor (lihat juga /math/123018/polynomial- dan-integer-root )f
Bagaimanapun, dokumentasi Sage dengan jelas menjelaskan bagaimana mereka melakukan pencarian root: "Metode selanjutnya, yang digunakan jika K adalah domain integral, adalah mencoba memfaktorkan polinomial. Jika ini berhasil, maka untuk setiap gelar-satu faktor a * x + b, kita tambahkan -b / a sebagai root (selama hasil bagi ini sebenarnya di ring yang diinginkan). " Lihat http://www.sagemath.org/doc/reference/polynomial_rings/sage/rings/polynomial/polynomial_element.html .
Jadi pertanyaan Anda menjadi Bagaimana mereka faktor faktor polinomial dengan koefisien integer? Rupanya, Sage memanggil NTL untuk melakukan itu (lihat http://www.shoup.net/ntl/doc/ZZXFactoring.txt untuk detail NTL).
Jika Anda menginginkan metode efisien asimptotik, Anda bisa merujuk ke metode Lenstra, Lenstra, dan Lovasz ( https://openaccess.leidenuniv.nl/handle/1887/3810 ).
sumber