我一直在解决python中的一个小问题。我有 7 个随机点,我必须插入一个通过它们的 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)
我应该如何进行?
任何帮助将不胜感激,谢谢。