方程式求有理數解 2

2021-09-26 08:52:01 字數 1053 閱讀 9808

給定乙個整數係數的多項式,我們要得到所有的有理數解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=0while ilen(l2):

l1,l2=l2,l1

zero=;r=

for i in l1:

t=zero[:]

for j in l2:

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)

有理數均值

本題要求編寫程式,計算n個有理數的平均值。輸入第一行給出正整數n 100 第二行中按照a1 b1 a2 b2 的格式給出n個分數形式的有理數,其中分子和分母全是整形範圍內的整數 如果是負數,則負號一定出現在最前面。在一行中按照a b的格式輸出n個有理數的平均值。注意必須是該有理數的最簡分數形式,若分...

有理數比較大小及有理數相加

本題要求編寫程式,比較兩個有理數的大小,並且計算兩個有理數的和。輸入格式 在一行中按照a1 b1 a2 b2的格式給出兩個分數形式的有理數,其中分子和分母全是整形範圍內的正整數。輸出格式 在一行中按照a1 b1 a2 b2的格式輸出兩個有理數比較大小 在一行中按照a b的格式輸出兩個有理數的和。注意...

5 33 有理數加法

本題要求編寫程式,計算兩個有理數的和。輸入格式 輸入在一行中按照a1 b1 a2 b2的格式給出兩個分數形式的有理數,其中分子和分母全是整形範圍內的正整數。輸出格式 在一行中按照a b的格式輸出兩個有理數的和。注意必須是該有理數的最簡分數形式,若分母為1,則只輸出分子。輸入樣例1 1 3 1 6 輸...