方程式求有理数解-2

问题

给定一个整数系数的多项式,我们要得到所有的有理数解x,使得x代入多项式为0。有理数解就是能用分数表示的解。

解题思路

如果有理数解为p/q,则多项式可分解成若干个(x-p/q)相乘的形式,其中p是多项式常数项系数的因数,q是多项式最高次项系数的因数。这样分解之后x=p/q就是我们需要求的有理数解,所以只需要尝试所有p、q的组合,判断p/q是否满足多项式为0,即可。需要注意的是,(1)要考虑负根(2)不能去掉重根,应该把所有的重根都列出来。

 

代码如下:

#方程式求有理数根

import math
import fractions

def add_poly(L1,L2):#多项式加法
    R=[]
    if len(L1)>len(L2):
        L1,L2=L2,L1
    i=0
    while ilen(L2):
        L1,L2=L2,L1
    zero=[];R=[]
    for i in L1:
        T=zero[:]
        for j in L2:
            T.append(i*j)
        R=add_poly(R,T)
        zero=zero+[0]
    return R

def divide_poly(L1,L2):#多项式除法
    if len(L1)0:
            str1="(x-"+str(x)
        else :str1="(x+"+str(abs(x))
        str1=str1+")"
        print(str1,end="")
    print("\n")
    
while True:
    s=input("请输入一个方程式的系数(低次项系数在前,以空格分隔)")
    L1=s.split(" ")
    L=[int(e) for e in L1]
    print("L:",L)
    S=rational(L)
    if len(S)==0:
        print("No solution!\n")
    else:
        print("方程分解成有理数根的形式是:",end="")
        to_String(S)
        
            

 

你可能感兴趣的:(Homework-Python)