# TP 2 ANALYSE NUMERIQUE

## Entrées  
# t : le point où on veut évaluer le polynôme d'interpolation
# x : une liste qui contient les abscisses des points d'interpolation
# y : une liste qui contient les ordonnées des points d'interpolation
# dy :  une liste qui contient la valeur de la dérivée aux points d'interpolation.
## Sorties :
# p : l'évaluation du polynôme en t

from math import *
from sys import *

def lagrange(t,x,y):
      p = 0
      n = len(x)
      L = [1 for i in range(n)]
      for i in range(n):
            for j in range(n):
                  if j!=i:
                        L[i] *= (t-x[j])/(x[i]-x[j])
            p += y[i]*L[i]
      return p

def hermite(t,x,y,dy):
      p = 0
      n = len(x)
      L = [1 for i in range(n)]
      c = [0 for i in range(n)]
      for i in range(n):
            for j in range(len(x)):
                  if j!=i:
                        L[i] *= (t-x[j])/(x[i]-x[j])
                        c[i] += 1./(x[i]-x[j])
            p += (y[i]*(1.-2.*(t-x[i])*c[i])+dy[i]*(t-x[i]))*L[i]**2
      return p

