0
我一直在解決python中的一個小問題。 我有7個隨機點,我必須插入一個6度函數,通過它們。 所以,首先我需要找到正確的多項式,然後給定一個f(x)來計算。 嗯,我不是在數學親,但這裏是我到目前爲止有:如何計算6度函數f(x)
import numpy as np
from matplotlib import pyplot as plt
def langrange_polynomial(X, Y):
def L(i):
return lambda x: np.prod([(x-X[j])/(X[i]-X[j]) for j in range(len(X)) if i != j]) * Y[i]
Sx = [L(i) for i in range(len(X))] # summands
return lambda x: np.sum([s(x) for s in Sx])
# cut something
# Here i get the points with a function
(X, Y) = read_data()
F = langrange_polynomial(X, Y)
接着,就看到的結果,我創建了一個陰謀。
x_range = np.linspace(X[0], X[-1], 100)
plt.plot(X, Y, 'ro')
plt.plot(x_range, map(F, x_range))
plt.xlabel(r'$x$')
plt.ylabel(r'$F(x)$')
plt.title('Lagrange polynomial interpolation')
plt.grid(True)
plt.show()
現在,我發現這個代碼在網絡上,它看起來像它找到了正確的多項式。 從我所瞭解的大寫字母F是實際的多項式,我是對嗎? 如果是這樣,我怎麼能用用戶定義'x'來計算f(x)?
比方說,我有這樣的:
x y
1 -1
2 0
3 -23
4 -25
5 15
6 -7
7 23
,我想找到F(6.09)
我應該怎麼做?
任何幫助,將不勝感激,謝謝。