Как перебирать списки для размещения большего количества элементов, если в списке 'U' было больше элементов? В частности, строка ниже:
for i in range(u+1):
x_matrix[i] = [pow(x[i],U[0]),pow(x[i],U[1]),pow(x[i],U[2]),pow(x[i],U[3])]
Полный код:
import numpy as np
x = [-3, -2, -1, 0, 1, 2, 3]
y = [0, -4, 0, 6, 8, 0,-24]
ys = []
def check(lst):
result = False;
if len(lst) > 0 :
result = all(elem == lst[0] for elem in lst)
if result is True:
print("All Elements in List are Equal")
print(lst)
else:
print("All Elements in List are Not Equal")
print(lst)
a = []
a = [j-i for i, j in zip(lst[:-1], lst[1:])]
ys.append(a)
check(a)
check(y)
u = len(ys)
print('\nThe coordinates results in {}-th order polynomial.\n'.format(u))
U = list(range(u+1))
list.reverse(U)
x_matrix = [None]*(u+1)
for i in range(u+1):
x_matrix[i] = [pow(x[i],U[0]),pow(x[i],U[1]),pow(x[i],U[2]),pow(x[i],U[3])]
y_matrix = [v for k,v in enumerate(y[0:u+1])]
# AX = Y, Ainv dot Y = X
A = np.array(x_matrix)
Y = np.array(y_matrix)
Ainv = np.linalg.inv(A)
X = Ainv.dot(Y)
print(X)
Спасибо.