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应该是英文的。杰库杰!