Que algoritmo podemos usar para encontrar todas as raízes inteiras de um polinômio com coeficientes inteiros?
Observo que Sage pode encontrar as raízes dentro de alguns segundos, mesmo quando todos os coeficientes de são muito grandes. Como é capaz de fazer isso?
ds.algorithms
na.numerical-analysis
user12290
fonte
fonte
Respostas:
Supondo que os coeficientes de sejam inteiros ou racionais e que você deseja raízes inteiras, a abordagem mais simples é usar o teorema da raiz inteira ou racional. Consulte http://en.wikipedia.org/wiki/Rational_root_theorem Conforme observado pelo DW, isso pode ser problemático se o coeficiente constante for difícil de ser fatorado (consulte também /math/123018/polynomial- e raízes inteiras )f
De qualquer forma, a documentação do Sage explica claramente como eles estão fazendo a pesquisa raiz: "O próximo método, que é usado se K é um domínio integral, é tentar fatorar o polinômio. Se isso der certo, para cada grau um fator a * x + b, adicionamos -b / a como raiz (desde que esse quociente esteja realmente no anel desejado) ". Consulte http://www.sagemath.org/doc/reference/polynomial_rings/sage/rings/polynomial/polynomial_element.html .
Portanto, sua pergunta se torna: como eles fatoram polinômios com coeficientes inteiros? Aparentemente, Sage está chamando a NTL para fazer isso (consulte http://www.shoup.net/ntl/doc/ZZXFactoring.txt para obter detalhes sobre NTL).
Se você quiser um método assintoticamente eficiente, consulte o método de Lenstra, Lenstra e Lovasz ( https://openaccess.leidenuniv.nl/handle/1887/3810 ).
fonte