Учитывая массив целых чисел, я пытаюсь извлечь коэффициент перед каждым "x^i"
, ...., "x^3"
, "x^2"
, "x"
.
Учитывая уравнение v(x) = (x-x0)(x-x1)...(x-x(i-1)) / (xi-x0)(xi-x1)...(xi-x(i-1))
Например, если заданный массив [30, 20, 10, 0], то ожидаемый результат будет:
x^3 - 60x^2 + 1100x - 6000 / -6000
Я почти на месте Мне просто нужно найти способ получить 1, -60, 1100, -6000
из числителя.
Я пробовал различные методы разделения, но, похоже, это не сработало.
Мой текущий код:
from sympy import *
def extract_coeff(array):
coeff = []
x=Symbol('x')
count = 0
for item in array:
if item != 0:
count = count + 1
total = len(array)
list = []
numerator_list = []
numerator = 1
denom_list = []
denom = 1
for i in range(total):
list.append(array[i])
for item in list:
denom_list.append((list[-1] - item))
denom_list.pop()
for item in denom_list:
denom = denom * item
# numerator
for item in array:
if item != 0:
numerator = numerator * (x-item)
numerator = expand(numerator)
print(numerator)
numerator = str(numerator)
# store coefficient
if numerator[0] == 'x':
coeff.append(1)
# trying to split (PLEASE HELP)
numerator = numerator.replace('+ ', ', ')
print(numerator.split(', '))
extract_coeff([30,20,10,0])