У меня проблемы с домашним заданием из моего университета, поэтому я решил отправить сюда помощь
Мне нужно создать список для многочленов. Это нормально:
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 = 4
И список обозначен как:
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), чтобы найти значения корней полинома. Когда я нахожу это значение, я хочу поместить их в новый список (называемый listIntegrerRoots). Для этого я попробовал:
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
и:
listPRoots[] = [-1, 1, -2, 2, -3, 3, -6, 6]
Я бы сделал:
listIntegrerRoots[] = [2, 3]
Потому что 2 и 3 - корни моего многочлена. Но я получаю:
listIntegrerRoots[] = []
Кто-нибудь может мне с этим помочь?
Спасибо.