Algorithm 如何检查多项式方程的所有可能根?

Algorithm 如何检查多项式方程的所有可能根?,algorithm,maxima,Algorithm,Maxima,我正在写一个程序来检查多项式方程的所有可能根。首先我需要找到所有可能的根,然后根据理论检查哪个根满足给定的方程。到目前为止,我能够找到常数项的整数除数(即r)和最高幂系数的除数(即s),可能的根应该是r/s。我无法列出这个清单 这是我的程序(我是maxima的新手,可能有更好的代码可用) 最后一个disp语句应该以矩阵或列表的形式给出值r/s。一旦发生这种情况,我可以检查列表中的元素,得到方程f(x)=0的根。有人能帮我吗?您希望看到什么输出,以及您实际得到了什么输出?请将所有这些粘贴到你的问题

我正在写一个程序来检查多项式方程的所有可能根。首先我需要找到所有可能的根,然后根据理论检查哪个根满足给定的方程。到目前为止,我能够找到常数项的整数除数(即r)和最高幂系数的除数(即s),可能的根应该是r/s。我无法列出这个清单

这是我的程序(我是maxima的新手,可能有更好的代码可用)


最后一个
disp
语句应该以矩阵或列表的形式给出值r/s。一旦发生这种情况,我可以检查列表中的元素,得到方程f(x)=0的根。有人能帮我吗?

您希望看到什么输出,以及您实际得到了什么输出?请将所有这些粘贴到你的问题中,这将有助于其他人理解你的意图。此外,如果你明确说明你要解的方程是什么,这会有很大帮助。“可能的根应该是r/s”,这是错误的。kill(all)$A:makelist(k,k,-5,5)$a0:4$an:5$m:zeromatrix(1,length(A))$n:zeromatrix(1,length(A))$for i:1到length(A)do(如果mod(a0,A[i])=0那么m[1,i]:A[i],如果mod(an,A[i])=0那么n[1,i]:A[i]);disp(a0的除数为,m)$disp(a的除数为,n)$表示i:1到11 do(表示j:1到11 do(disp(m[1,i]/n[1,j]);谢谢你,伊内迪。对不起,我只是在检查所有可能的理性根源,谢谢你,罗伯特。实际上,我试图找到f[x]的所有可能的有理根:=5*x^3+8*x^2+6*x-4,并期望输出为[-1,1,-1/5.1/5.-2,2,-2/5,2/5,-4,4,-4/5,4/5,4/5]。但我得到的是所有这些值分别显示,每个值重复两次。输出太长,无法粘贴到此处。希望我能得到一些帮助
kill(all)$ 
A:makelist(k,k,-5,5)$
    a0:4$
    an:5$
    m:zeromatrix(1,length(A))$ 
    n:zeromatrix(1,length(A))$
    for i:1 thru length(A) do(
    if mod(a0,A[i])=0 then 
    m[1,i]:A[i],
    if mod(an,A[i])=0 then 
    n[1,i]:A[i]); 
    disp("The divisors of a0 are",m)$ 
    disp("The divisors of an are",n)$ 
    for i:1 thru 11 do(
    for j:1 thru 11 do(
    disp(m[1,i]/n[1,j])));