#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-
# interp - Programa para interpolar datos usando
# el polinomio de Lagrange cuadratico para tres puntos dados.
# Importa un modulo que permite graficar.

from pylab import *

# Definicion de la funcion que evalua el polinomio.

def intrpf(x,x_i,y_i):
    t0=y_i[0]*(x-x_i[1])*(x-x_i[2])/((x_i[0]-x_i[1])*(x_i[0]-x_i[2]))
    t1=y_i[1]*(x-x_i[0])*(x-x_i[2])/((x_i[1]-x_i[0])*(x_i[1]-x_i[2]))
    t2=y_i[2]*(x-x_i[0])*(x-x_i[1])/((x_i[2]-x_i[0])*(x_i[2]-x_i[1]))
    return t0+t1+t2

def main():

# Se ingresan los tres puntos y se almacenan en dos listas x_i e y_i
    x_i=[]
    y_i=[]
    print "Ingrese tres puntos (x,y)"
    x0=input("Coordenada x, primer punto : ")
    y0=input("Coordenada y, primer punto : ")
    x1=input("Coordenada x, segundo punto : ")
    y1=input("Coordenada y, segundo punto : ")
    x2=input("Coordenada x, tercer punto : ")
    y2=input("Coordenada y, tercer punto : ")
    x_i.append(x0)
    x_i.append(x1)
    x_i.append(x2)
    y_i.append(y0)
    y_i.append(y1)
    y_i.append(y2)

# Se ingresa el intervalo donde se evaluara el polinomio
    print "Ingrese intervalo para hacer la interpolacion"
    x_min=input("Coordenada x minimo : ")
    x_max=input("Coordenada x maximo : ")

# Grafica
    t=arange(x_min,x_max,(x_max-x_min)/100.0)

    print t
    
    plot(x_i, y_i,'ro',t, intrpf(t,x_i,y_i))
    title("Polinomio de interpolacion de Lagrange")
    grid(True)
    show()

if __name__=='__main__':
    main()
