In [5]:
using Winston

# Simulating data
x = [-20 -17 -10 -3 -1 0 1 3 10 17 20]
y = [-0.9129 0.9614 0.5440 -0.1411 -0.8415 0.0000 0.8415 0.1411 -0.5440 -0.9614 0.9129]

function Qn(v,x,y)
    Q = 0
    for j=1:length(x)
        Q = Q + y[j]*L(v,x,j)
    end
    return Q
end

function L(v, x, j)
    l = 1
    for i=1:length(x)
        if i != j
           l = l * ((v-x[i])/(x[j]-x[i])) 
        end
    end
    return l
end


z = -20:0.1:20
res = zeros(length(z))
for i=1:length(z)
    res[i] = Qn(z[i], x, y)
end


plot(z, res, "b")
xlabel("x")
ylabel("estimated y")
title("Langrange interpolation")
Out[5]: