Tamsayı katsayıları olan bir polinom in tüm tam sayı köklerini bulmak için hangi algoritmayı kullanabiliriz ?
Sage'nin katsayıları çok büyük olsa bile birkaç saniye içinde kökleri bulabileceğini gözlemliyorum . Bunu nasıl yapabilir?
Tamsayı katsayıları olan bir polinom in tüm tam sayı köklerini bulmak için hangi algoritmayı kullanabiliriz ?
Sage'nin katsayıları çok büyük olsa bile birkaç saniye içinde kökleri bulabileceğini gözlemliyorum . Bunu nasıl yapabilir?
Yanıtlar:
katsayılarının tamsayı veya rasyonel olduğunu ve tamsayı kökleri istediğinizi varsayarsak , en basit yaklaşım tamsayı veya rasyonel kök teoremini kullanmaktır. Bkz. Http://en.wikipedia.org/wiki/Rational_root_theorem DW tarafından belirtildiği gibi, sabit katsayıyı çarpanlarına ayırmak zorsa bu sorun yaratabilir (ayrıca bkz. Https://math.stackexchange.com/questions/123018/polynomial- ve tamsayı kökleri )
Her durumda, Sage dokümantasyonu kök aramayı nasıl yaptıklarını açık bir şekilde açıklıyor: "K, integral bir alansa kullanılan bir sonraki yöntem, polinomu hesaba katmaya çalışmaktır. Bu başarılı olursa, o zaman her derece için faktör a * x + b ise, kök olarak -b / a ekleriz (bu bölüm aslında istenen halkada olduğu sürece). " Bkz. Http://www.sagemath.org/doc/reference/polynomial_rings/sage/rings/polynomial/polynomial_element.html .
Böylece sorunuz tamsayı katsayıları olan polinomları nasıl etkili bir şekilde etkiliyor? Görünüşe göre Sage bunu yapmak için NTL'yi çağırıyor ( NTL ayrıntıları için http://www.shoup.net/ntl/doc/ZZXFactoring.txt adresine bakın).
Asimptotik olarak etkili bir yöntem istiyorsanız, Lenstra, Lenstra ve Lovasz yöntemine başvurabilirsiniz ( https://openaccess.leidenuniv.nl/handle/1887/3810 ).