interpolationSoluce.py

# -------------------------------------------------------------------------
#
# PYTHON for DUMMIES 19-20
# Problème 2
#
# Solution détaillée
#
# Il aussi est possible d'avoir une solution nettement plus simple à comprendre
# en utilisant des boucles mais cela sera nettement moins efficace :-)
#
#  Vincent Legat
#
# -------------------------------------------------------------------------
# 


from numpy import *
from numpy.linalg import solve


def interpolation(X,U,x):

#
# -1- Construction de la matrice A_ij = exp_i(X_j)  
#     Noter l'utilisation du produit exterieur entre deux tableaux de dimension 1 :-)
# 

  n = (len(X)-1) // 2
  A = exp(1j*outer(X,arange(-n,n+1)))
  
#
# -2- Obtention des coefficients de l'interpolation
#

  a = solve(A,U)
  
#
# -3- Calcul de uh(x) = sum(a_i phi_(x))
#     On utilise le produit matriciel pour être plus efficace !
#

  phi = exp(1j*outer(x,arange(-n,n+1)))
  return(real(phi @ a))