我遇到了一个算法的麻烦,它将从因子形式的( (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))发布于 2016-12-28 23:35:29
好的。您需要按顺序编写一个包含两个列表的函数,这两个列表是多项式的系数。对于一般用途,我建议你从最低到最高。这会让你的根看起来像
-1,1 -9,1
这个例程简单地通过一个嵌套循环工作,每个列表都有一个索引。系数i(在一个列表中)和j(在另一个列表中)的乘积被添加到系数i+j中。
重复使用此方法构建正在运行的产品。用(- 1,1,5,1)调用它一次,得到结果-5,4,1。再用那个和最后一个根调用它,得到你的最终答案。
那能让你动起来吗?
https://stackoverflow.com/questions/41371122
复制相似问题