Previous Up Next

6.27.33  Interpolation de Lagrange : lagrange interp

lagrange a comme argument deux listes de longueur n ou une matrice de deux lignes et n colonnes et eventuellement le nom de la variable var (par défaut x):
la première liste (ou ligne) correspond à des valeurs d’abscisses xk, et la deuxième liste (ou ligne) correspond à des valeurs d’ordonnées yk pour k allant de 1 à n.
lagrange renvoie une expression polynômiale P(var) de degré n-1 tel que P(xk)=yk.
On tape :

lagrange([[1,3],[0,1]])

Ou on tape :

lagrange([1,3],[0,1])

On obtient :

(x-1)/2

en effet pour x=1 on a x−1/2=0 et pour x=3 on a x−1/2=1.
On tape :

lagrange([1,3],[0,1],y)

On obtient :

(y-1)/2

Attention lagrange([1,2],[3,4],y) ne renvoie pas une fonction mais une expression. mais on peut définir une fonction en mettant :
f(x):=lagrange([1,2],[3,4],x) ou
f(y):=lagrange([1,2],[3,4],y) et alors
f(4) renvoie 6 car f(x)=x+2)
Bien voir la différence entre :
g(x):=lagrange([1,2],[3,4]) et
f(x):=lagrange([1,2],[3,4],x).
g(x):=lagrange([1,2],[3,4]) ne definit pas une fonction, par exemple, g(2)=x-1+3 alors que f(2)=4.
Ceci dit, la définition of f n’est pas efficace car le polynôme sera recalculé depuis le début à chaque appel de f (quand on définit une fonction le membre de droite n’est pas évalué, l’évaluation est faite seulement quand on appelle f).
Pour être efficace il faut utiliser unapply:
f:=unapply(lagrange([1,2],[3,4]),x) ou
f:=unapply(lagrange([1,2],[3,4],y),y) Exercice Soient f(x) = 1/x, x0=2 x1 = 2.5 et x2 =4. On demande de calculer le polynôme L d’interpolation de Lagrange et sa valeur en x=3 et x=4.5.
On tape :
f(x):=1/x
L:=unapply(normal(lagrange([2,2.5,4],[f(2),f(2.5),f(4)])),x)
On obtient :
x->0.05*x^2-0.425*x+1.15
On tape :
L(3),L(4.5)
On obtient :
0.325,0.25


Previous Up Next