I am trying to use Lagrange interpolation for multiple points. As a result, I need a mathematical formula, for example:
Lx=[1,2,3],
Ly=[1,4,9],
result = x^2
Instead i get "-4.0*X*(-0.5*X - 1.0)*(-0.2*X + 0.2)*(-0.142857142857143*X +..."
When I put, for example, 5 instead of X (line 12), I get "25", the correct answer. Can anybody help me?
import sympy
def Lagrange (Lx, Ly):
X=sympy.symbols('X')
if len(Lx)!= len(Ly):
print "ERROR"
return 1
y=float(0.0)
for k in range ( len(Lx) ):
t=float(1.0)
for j in range ( len(Lx) ):
if j != k:
t=t* ( (X-Lx[j]) / float(Lx[k]-Lx[j]) ) # when I put number, OK
y+= t*Ly[k]
return y
Lx=[-4,-2,0,1,3]
Ly=[16,4,0,1,9]
print Lagrange(Lx,Ly)
source
share