次のコードは、単一の値xと点のリストXをとり、指定された点のリストを介してラグランジュ多項式の値を決定しますx値。例えばラグランジュ補間のためのPythonコード - 多項式の方程式を決定する
def chunkIt(seq, num):
avg = len(seq)/float(num)
out = []
last = 0.0
while last < len(seq):
out.append(seq[int(last):int(last + avg)])
last += avg
return out
def product(list):
p = 1
for i in list:
p *= i
return p
def Lagrange(x,X):
T = np.zeros((2,len(X)))
list = []
for i in range(len(X)):
for j in range(len(X)):
if i != j:
list.append((x-X[j][0])/(X[i][0]-X[j][0]))
p = []
for i in chunkIt(list,len(X)):
p.append(product(i))
for i in range(len(X)):
T[0][i] = p[i]
T[1][i] = X[i][1]
list2 = []
for i in range(len(X)):
list2.append(T[0][i]*T[1][i])
return sum(list2)
:
x, X = 3, [[0,0],[1,1],[2,0.5]]
は-1.5の値を与えます。
ポイントのリストから多項式の方程式を決定するには、このコードを変更するにはどうすればよいですか?すなわち、Iは、入力としてx = 'x'
を置けば、それはこれが得られたラグランジュ多項式の次数である
多分これが開始する場所のとおりです。http://www.sympy .org / –