Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将多项式形式转换为一般形式_Python - Fatal编程技术网

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

Python 如何将多项式形式转换为一般形式,python,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_pomocni

我遇到了一个将多项式从因子形式
((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,1] [5, 1] [-9,1]

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

重复使用此选项可构建运行中的产品。用([-1,1],[5,1])调用它一次,得到结果[-5,4,1]。用这个和最后一个根再次调用它,以获得最终答案


这会让你行动起来吗?

Stackoverflow是为了在你认真尝试编写程序时遇到问题后帮助你。但是我不知道如何开始。我需要一些建议。从手工做几个例子开始。你是做什么的?尝试将手动算法转换为软件算法。我处理这个问题的方法是观察每个系数是如何来自根列表的。(每个都可以独立计算)查找多项式乘法。例如,是关于一个一般多项式乘以一个二项式,这就是这个问题所需要的。很高兴听到这个!你能将你的解决方案添加到我的帖子中吗?这真的有助于完成答案。我如何才能在你的帖子中添加解决方案?变量的名字都是波兰语的,对你来说没问题吧。你没有足够的声誉来编辑我的答案。也许发布一个你自己的答案,我会把你的代码添加到我的代码中。波尔斯卡对我有好处。我可以一边翻译变量名,因为SO应该是英文的。杰库杰!