如何将多项式转换为一般形式

时间:2016-12-28 23:26:42

标签: python

我遇到了一个算法问题,该算法会将多项式从因子形式( (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))

1 个答案:

答案 0 :(得分:0)

不确定。您需要编写一个函数,该函数按顺序采用两个列表,即多项式的系数。对于一般用途,我建议你从最低到最高。这将使您的已知根显示为

[ - 1,1] [5,1] [-9,1]

例程只需通过嵌套循环,每个列表一个索引。系数i(在一个列表中)和j(在另一个列表中)的乘积被加到结果中的系数i + j中。

反复使用此功能来构建正在运行的产品。用([-1,1],[5,1])调用一次得到结果[-5,4,1]。再次使用它和最后一个根来调用它以获得最终答案。

这会让你感动吗?