如何计算6度函数的f(x)

时间:2014-09-19 16:43:41

标签: python python-2.7 math polynomial-math polynomials

我坚持在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)

我该怎么办?

任何帮助都将不胜感激,谢谢。

1 个答案:

答案 0 :(得分:1)

lagrange_polynomial返回一个接受单个参数的函数。因此,如果您只想在特定时间点评估它user_defined_x我认为您只是想要

(X, Y) = read_data()
F = langrange_polynomial(X, Y)
print F(user_defined_x)