Python 如何计算列表中多项式的根?
我的大学作业有点麻烦,所以我决定发到这里寻求帮助 我必须为多项式创建一个列表。这部分没问题:Python 如何计算列表中多项式的根?,python,list,Python,List,我的大学作业有点麻烦,所以我决定发到这里寻求帮助 我必须为多项式创建一个列表。这部分没问题: n = int(input("Degree of polynomial: ")) p = [] for i in range(n+1): p.append(float(input("p["+str(i)+"]: "))) i += 1 例如,多项式: 5x^4+3x^3-2x^2+x-2 有:
n = int(input("Degree of polynomial: "))
p = []
for i in range(n+1):
p.append(float(input("p["+str(i)+"]: ")))
i += 1
例如,多项式:
5x^4+3x^3-2x^2+x-2
有:
以及以下所示的列表:
p[] = [5, 3, -2, 1, -2]
此外,我还创建了一个列表,其中的值假装是多项式的根(listPRoots,可能的根)。这部分也可以:
listPRoots= []
for i in range(int(p[0])):
if p[0]%(i+1) == 0:
listPRoots.append(-(i+1))
listPRoots.append(i+1)
正如代码所示,我有一个列表,其中的值可以是多项式的根。我用有理根定理列出了这个列表
现在,我想取一个多项式,它的系数在一个列表(p)中。使用这个多项式,我想验证列表中的每个值(称为listPRoots),以找到多项式根的值。当我找到这个值时,我想把它们放在一个新的列表中(称为ListIntegerRoots)。为此,我尝试:
listIntegrerRoots = []
listTestRoots = []
for i in range(len(listPRoots) - 1):
flag = len (p) - 1
while flag > 0:
root = (listPRoots[i]**(flag)) * p[flag]
listTestRoots.append(root)
flag = flag- 1
if sum(listTestRoots) + p[0] == 0:
listIntegrerRoots.append(listPRoots[i])
但是,我无法得到我想要的清单。例如:
n = 2
p[0] = 6, p[1] = -5, p[2] = 1
结果:
x^2 - 5x + 6
以及:
我想:
listIntegrerRoots[] = [2, 3]
因为2和3是多项式的根。但我得到:
listIntegrerRoots[] = []
有人能帮我吗
谢谢。每次测试一个新的可能的根值时,请不要忘记清除总和缓冲区
listTestRoots
应该是这样的:
for i in range(len(listPRoots) - 1):
listTestRoots = []
....
在我看来,累积和变量可能是更好的选择
--*编辑*--
请将其降低并提高到预期值。显示中间结果与预期结果的偏差。您发布的代码在的第一个
处失败,因为p
未定义。您稍后发布的值未包含在代码中,在语法上不合法,描述的是一个集合而不是一个列表,并且与上面的多项式系数不一致。您将英语帖子与葡萄牙语(?)变量名混合在一起,这已经够令人困惑的了,但如果你在课文中拼错了它们,情况会更糟——请同时使用英语示例。我是一名工程师的学生,我真的不知道“Accumative sum variable”的意思。你能给我举个例子吗?非常感谢您的回答,您可以试一试。非常感谢您的耐心和帮助!
listIntegrerRoots[] = []
for i in range(len(listPRoots) - 1):
listTestRoots = []
....
In [23]: for i in range(len(listPRoots)):
...: s = 0
...: for j in range(len(p)):
...: s += (listPRoots[i] ** j) * p[j]
...: if s == 0:
...: listIntegerRoots.append(listPRoots[i])
...:
...:
...:
In [24]: listIntegerRoots
Out[24]: [2, 3]