2014-09-19 60 views
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)

我應該怎麼做?

任何幫助,將不勝感激,謝謝。

回答

1

lagrange_polynomial返回一個接受單個參數的函數。所以,如果你只是想在特定的點評估它user_defined_x我想你只是想

(X, Y) = read_data() 
F = langrange_polynomial(X, Y) 
print F(user_defined_x) 
相關問題