我遇到了一个算法问题,该算法会将多项式从因子形式( (x-1)(x+5)(x-9) )
转换为通用形式( x^3 -5x^2 -41x +45)
。一开始我只有一个根列表
例如:[1, -5, 9]
输出应为系数列表:[1, -5, -41, 45]
我有什么想法可以解决这个问题吗?
def przeksztalc(wielomian):
pierwiastki = []
for i in wielomian:
lista_pomocniacza = []
lista_pomocniacza.append(i * (-1))
lista_pomocniacza.append(1)
pierwiastki.append(lista_pomocniacza)
rezultat = dzielenie_na_pary(pierwiastki)
return rezultat
def dzielenie_na_pary(lista_z_pierwiastkami):
dlugosc = len(lista_z_pierwiastkami)
wynik = []
for i in range(dlugosc-1):
wynik = mnozenie_nawiasow(lista_z_pierwiastkami[i], lista_z_pierwiastkami[i+1])
lista_z_pierwiastkami[i+1] = wynik
return wynik[::-1]
def mnozenie_nawiasow(nawias1, nawias2):
wynik_mnozenia = [0] * (len(nawias1 + nawias2) - 1)
for i in range(len(nawias1)):
for j in range(len(nawias2)):
wynik_mnozenia[i+j] += nawias1[i] * nawias2[j]
return wynik_mnozenia
wielomian = [1, -5, 9]
print(przeksztalc(wielomian))
答案 0 :(得分:0)
不确定。您需要编写一个函数,该函数按顺序采用两个列表,即多项式的系数。对于一般用途,我建议你从最低到最高。这将使您的已知根显示为
[ - 1,1] [5,1] [-9,1]
例程只需通过嵌套循环,每个列表一个索引。系数i(在一个列表中)和j(在另一个列表中)的乘积被加到结果中的系数i + j中。
反复使用此功能来构建正在运行的产品。用([-1,1],[5,1])调用一次得到结果[-5,4,1]。再次使用它和最后一个根来调用它以获得最终答案。
这会让你感动吗?