此函数用于确定两个多项式的最大公约数。我的问题是:
在第9行中,如果数组中的所有条目相同,我想从多项式g
中排除一个因子,例如:
(4/9)*x**2 + (4/9)*x + (4/9)
--> (4/9)*(x**2 + x + 1).
我写了函数checkIfEntriesAreIdentical
。此函数返回False
,尽管数组条目明显相同。该函数在此数组上具体失败:
array([ 0.44444444, 0.44444444, 0.44444444])
为什么函数会返回False
?
以下是两个功能:
import numpy as np
def gcdPoly(f, g):
while remainderIsLeft(np.polydiv(f, g)):
temporary = f
f = g
g = np.polydiv(temporary, g)[1][:]
if entriesAreIdentical(g):
g = simplifyFunction(g)
return g
和
def entriesAreIdentical(f):
return all(np.abs(x) == np.abs(f[0]) for x in f)