Collège du Sud, Bulle
2-ème année OS PAM
3-ème année OC AM

Applications des mathématiques

Interpolation

Edition 2018-2019
d’après Marcel Délèze et Eugène Pasquier
http://applmaths.collegedusud.ch/

§ 0	Introduction

Soit n points 
	((Subscript[x, 0]), (Subscript[y, 0])), ((Subscript[x, 1]), (Subscript[y, 1])), ..., ((Subscript[x, n-1]), (Subscript[y, n-1]))  
d’abscisses distinctes avec (Subscript[x, 0])< (Subscript[x, 1])< ...<(Subscript[x, n-1]) . Le but de l’interpolation est de trouver une fonction g:[(Subscript[x, 0]), (Subscript[x, n])]⟶ℝ  dont le graphe passe par tous ces points, c’est-à-dire avec
	g((Subscript[x, 0]))=(Subscript[y, 0]),        g((Subscript[x, 1]))=(Subscript[y, 1]),      ...,        g((Subscript[x, n-1]))=(Subscript[y, n-1]).
Un tel problème est appelé un problème d’interpolation, les points sont appelés points d’interpolation et la fonction recherchée un interpolant (ou une fonction d’interpolation).
Le choix du type d’interpolant varie en fonction du contexte dans lequel se pose le problème d’interpolation. Nous allons voir quelques possibilités dans un cas concret. Nous considérons les 4 points d’interpolation donnés dans le tableau suivant :
	({{"x", "y"}, {0, 7}, {12, 5}, {24, 6}, {36, 4}, {48, 5}})
Nous voulons évaluer l’interpolant de ce problème d’interpolation en 42 : nous disons que nous voulons interpoler en 42.

La méthode la plus simple consiste à faire une interpolation linéaire. Le graphe de l’interpolant sera alors une ligne brisée :

L’évaluation de l’interpolant en 42 donne 4.5.

Une autre possibilité est de faire une interpolation quadratique. Le graphe de l’interpolant est alors constitué d’arcs de parabole (chaque parabole passerait par trois points consécutifs):

L’évaluation de l’interpolant en 42 donne 4.125. Cette façon de procéder n’est pas satisfaisante car bien que plus compliquée que la précédente, le résultat donne une courbe qui n’est pas lisse. Dans l’idéal, il faudrait “coller de façon lisse” un arc de parabole que passe les troisième et quatrième points ainsi qu’un dernier arc qui passe par les quatrième et le cinquième points (ceci est possible grâce aux calculs des dérivées).

Une dernière possibilité qui utilise des polynômes est de rechercher le polynôme qui passe par les cinq points d’interpolation. Nous obtenons alors le graphe suivant:

L’évaluation de l’interpolant en 42 donne approximativement 3.28. Cette méthode semble plus satisfaisante que les deux précédentes dans la mesure où le graphe de l’interpolant donne une courbe lisse. Cependant la faiblesse de cette méthode est sa sensibilité aux points d’interpolation : le changement d’un point modifie totalement l’interpolant (ce qui n’était pas le cas dans les autres exemples). Si dans la liste des points d’interpolation le point (24;6) est remplacé par le point (24;4) le résultat est très différent:

L’évaluation de l’interpolant en 42 avec cet autre point donne 4.375!

Il se peut que le phénomène étudié soit periodique. Dans ce cas, nous cherchons un interpolant qui est lui aussi périodique. Voici le graphe que nous pourrions avec un interpolant de période 60:

Finalement nous constatons que le choix de l’interpolant varie passablement en fonction des contraintes que nous nous imposons:

§ 1 	Calculs d’interpolant

Nous allons voir dans cette section la façon dont se calcule l’interpolant. Nous traiterons d’abord les cas où l’interpolant est construit à partir de polynômes, puis le cas où l’interpolant utilise des fonctions trigonométriques et finalement le cas général.

§ 1.1	Interpolation linéaire

Nous considérons les points d’interpolation donnés dans le tableau suivant:

Nous voulons interpoler en a=2.7.
Graphiquement, la situation se présente comme suit

pts={{1,1.9},{2,2.3},{3,3.1},{4,2.8}};
abs=Transpose[pts][[1]]; (* abscisses d'interpolation *)
ord=Transpose[pts][[2]]; (* ordonnées d'interpolation *)
a=2.7; (* abscisse à interpoler *)
ListPlot[pts,PlotRange->{{0,5},{0,4}},PlotStyle->PointSize[0.02],AxesLabel->{"x","y"}]

Nous avons vu que la méthode la plus simple consiste à effectuer une interpolation linéaire, c'est-à-dire à joindre les points par des segments de droite. Comme nous voulons interpoler en a=2.7, il faut trouver l’équation du segment de droite g passant par les points suivants (2;2.3) et (3;3.1).  La fonction g est affine donc

g[t_]:=(Subscript[c, 0])+(Subscript[c, 1])t

Comme g doit passer par les deuxième et troisième points d’interpolation nous avons les équations suivantes :

eqns=Table[g[ abs[[i]] ] == ord[[i]],{i,2,3}]

Mathematica nous donne alors les solutions suivantes :

sol=Solve[eqns,{(Subscript[c, 0]),(Subscript[c, 1])}]

Nous pouvons alors interpoler en a :

g[a]/.sol[[1]]

Mathematica permet cependant d’avoir directement l’interpolant linéaire grâce à la fonction Interpolation en précisant l’ordre de l’interpolant:

?Interpolation

Options[Interpolation]

Nous constatons que par défaut Mathematica fait une interpolation avec des polynômes de degré 3 or nous désirons une interpolation linéaire, c’est-à-dire des polynômes de degré 1 :

Clear[g]
g[x_]:=Interpolation[pts,x,InterpolationOrder->1]
Plot[
g[x],{x,Min[abs],Max[abs]},
Epilog->{PointSize[0.02],Point[pts]},
AxesLabel->{"x","y"}
]

Il possible d’interpoler directement en a sans passer par la définition de l’interpolant:

Interpolation[pts,a,InterpolationOrder->1]

§ 1.2	Interpolation polynomiale

Nous considérons le même problème d’interpolation qu’au point précédent, cependant, nous voulons cette fois faire une interpolation polynomiale, c'est-à-dire à faire passer par les 4 points donnés un  polynôme. Nous allons, à nouveau, dans un premier temps, ne pas utiliser les méthodes d’interpolation proposées par Mathematica. Pour trouver le polynôme g, nous aurons 4 équations et par conséquent le polynôme recherché sera de degré 3 et sera de la forme 
	g(t)=(Subscript[c, o])+(Subscript[c, 1])t+(Subscript[c, 2])(t^2)+(Subscript[c, 3])(t^3). 
En fait, g est une combinaison linéaire des fonctions suivantes appelées  fonctions de base : (Subscript[b, 0])(t)=1, (Subscript[b, 1])(t)=t, (Subscript[b, 2])(t)=(t^2), (Subscript[b, 3])(t)=(t^3). La fonction f a alors la forme suivante (forme que nous utiliserons dans la prochaine section pour généraliser le problème) :
	g(t)=(Subscript[c, o])(Subscript[b, 0])(t)+(Subscript[c, 1])(Subscript[b, 1])(t)+(Subscript[c, 2])(Subscript[b, 2])(t)+(Subscript[c, 3])(Subscript[b, 3])(t). 
Il faut déterminer la valeur des nombre (Subscript[c, 0]), (Subscript[c, 1]), (Subscript[c, 2]), (Subscript[c, 3]) tel que l’interpolant g  passe par les quatre points donnés donc
	g(1)=1.9,       g(2)=2.3,        g(3)=3.1   ,       g(4)=2.8.
Ceci nous donne les quatre équations suivantes:
	(Subscript[c, o])+(Subscript[c, 1])1+(Subscript[c, 2])(1^2)+(Subscript[c, 3])(1^3)=1.9 ,      (Subscript[c, o])+(Subscript[c, 1])2+(Subscript[c, 2])(2^2)+(Subscript[c, 3])(2^3)=2.3,
(Subscript[c, o])+(Subscript[c, 1])3+(Subscript[c, 2])(3^2)+(Subscript[c, 3])(3^3)=3.1   ,    (Subscript[c, o])+(Subscript[c, 1])4+(Subscript[c, 2])(4^2)+(Subscript[c, 3])(4^3)=2.8.
Ces conditions constituent un système d’équations linéaires. Pour que Mathematica puisse résoudre le plus efficacement possible ce système, nous le mettons sous forme matricielle :
	(({{1, 1, (1^2), (1^3)}, {1, 2, (2^2), (2^3)}, {1, 3, (3^2), (3^3)}, {1, 4, (4^2), (4^3)}}))(({{(Subscript[c, 0])}, {(Subscript[c, 1])}, {(Subscript[c, 2])}, {(Subscript[c, 3])}}))=(({{1.9}, {2.3}, {3.1}, {2.8}}))  
Nous constatons que chaque colonne de la matrice constitue l’évaluation de chacune des fonction de base aux abscisses d’interpolation. Cette constatation permet de facilement générer la matrice du système linéaire :

Clear["Global`*"]
b[t_]={1,t,(t^2),(t^3)}; (* liste des fonctions de base *)
m=Map[b,abs];
MatrixForm[m]

Nous pouvons alors utiliser  LinearSolve qui est la fonction de Mathematica spécialisée dans la résolution de systèmes linéaires :

c=LinearSolve[m,ord]

Nous obtenons alors l’interpolant g en faisant le produit scalaire de c et b[t] :

g[t_]:= c.b[t]
g[t]

Plot[
g[x],{x,Min[abs],Max[abs]},
Epilog->{PointSize[0.02],Point[pts]},
AxesLabel->{"x","y"}
]

Nous pouvons maintenant interpoler en a :

g[a]

Mathematica peut nous donner directement l'interpolant polynomial grâce à la fonction Interpolatingpolynomial:

?InterpolatingPolynomial

g[t_]:=InterpolatingPolynomial[pts,t];
Expand[g[t]]

Il possible d’interpoler directement en a sans passer par la définition de l’interpolant:

InterpolatingPolynomial[pts,a]

§ 1.3 	Interpolation polynomiale : cas général

Nous allons maintenant traiter l’interpolation polynomial de façon générale.

Énoncé du problème d'interpolation polynomiale

Sont donnés n points

((Subscript[x, 0]), (Subscript[y, 0])), ((Subscript[x, 1]), (Subscript[y, 1])), ..., ((Subscript[x, n-1]), (Subscript[y, n-1]))           d'abscisses distinctes           (Subscript[x, 0])<(Subscript[x, 1])<...<(Subscript[x, n-1]).

Déterminez le polynôme g de degré ≤ (n-1) passant par ces points, c'est-à-dire

g((Subscript[x, 0]))=(Subscript[y, 0]),        g((Subscript[x, 1]))=(Subscript[y, 1]),      ...,        g((Subscript[x, n-1]))=(Subscript[y, n-1]).

Proposition

Le problème d'interpolation polynomiale possède une et une seule solution g.

Démonstration de l'existence du polynôme d'interpolation g

Voir l'exercice 1-4.

Démonstration de l'unicité du polynôme d'interpolation g

Supposons qu’il existe deux polynômes d’interpolation (Subscript[g, 1]) et (Subscript[g, 2]) qui sont de degré inférieur ou égal à n-1. Nous avons donc (Subscript[g, 1])((Subscript[x, i])) =(Subscript[g, 2])((Subscript[x, i]))=(Subscript[y, i]),i=0,1,...,n-1. 
Définissons  d(x)=(Subscript[g, 2])(x)-(Subscript[g, 1])(x). d est un polynôme de degré inférieur ou égal à n-1 qui s’annule en n abscisses distinctes :
	d((Subscript[x, 0]))= (Subscript[g, 2])((Subscript[x, 0]))-(Subscript[g, 1])((Subscript[x, 0]))= (Subscript[y, 0])-(Subscript[y, 0]) = 0,
d((Subscript[x, 1]))= (Subscript[g, 2])((Subscript[x, 1]))-(Subscript[g, 1])((Subscript[x, 1]))= (Subscript[y, 1])-(Subscript[y, 1]) = 0,
...
d((Subscript[x, n-1]))= (Subscript[g, 2])((Subscript[x, n-1]))-(Subscript[g, 1])((Subscript[x, n-1]))= (Subscript[y, n-1])-(Subscript[y, n-1]) = 0

Par conséquent, d est divisible par (x-(Subscript[x, 0]))·(x-(Subscript[x, 1]))·...·(x-(Subscript[x, n-1])) donc d(x) = (x-(Subscript[x, 0]))(x-(Subscript[x, 1])) ...(x-(Subscript[x, n-1]))q(x), où q  est un polynôme. Si q n’est pas identiquement nulle, alors d est de degré supérieur à n-1 ce qui n’est pas possible par hypothèse. d est donc identiquement nul ce qui signifie que les polynômes (Subscript[g, 1]) et (Subscript[g, 2]) sont égaux.

■

§ 1.4 	Interpolation trigonométrique

Nous considérons une tabelle de valeurs numériques qui représente la température moyenne journalière en un lieu imaginaire

A partir de cette tabelle, nous voulons estimer la température moyenne journalière au début du mois d'août.

Numérotons les 365 jours de l'année de 0 à 364:

Ainsi, le temps sera exprimé en jours (unité d=day).

Montrons d'abord qu'il n'est pas judicieux d'interpoler par un polynôme car le climat est un phénomène cyclique.

Clear["Global`*"]
pts={{0,-3.},{89,5.},{166,15.},{258,8.}};
g[t_]=InterpolatingPolynomial[pts,t];Expand[g[t]]

Plot[g[t],{t,0,365},AxesLabel->{"t [d]","température [°C]"}]

Le climat étant un phénomène cyclique, la température au 31 décembre doit être proche de celle du premier janvier. Le premier jour de l'année suivante, la température devrait être de -3 °C, ce qui est loin d'être le cas

g[365]

Il faut interpoler par des fonctions périodiques dont la période est un sous-multiple de 365 jours, c'est-à-dire  365,  (365/2), (365/3), ...
Choisissons comme  fonctions de base

(Subscript[b, 0])(t)=1;       (Subscript[b, 1])(t)=cos(((2 π)/365)t);   (Subscript[b, 2])(t)=sin(((2 π)/365)t);         (Subscript[b, 3])(t)=cos(((4 π)/365)t).

La fonction d'interpolation est

g(t)=(Subscript[c, 0])(Subscript[b, 0])(t)+(Subscript[c, 1]) (Subscript[b, 1])(t)+(Subscript[c, 2])(Subscript[b, 2])(t)+(Subscript[c, 3]) (Subscript[b, 3])(t)=
(Subscript[c, 0])+(Subscript[c, 1]) cos(((2 π)/365)t)+(Subscript[c, 2])sin(((2 π)/365)t)+(Subscript[c, 3]) cos(((4 π)/365)t).

Les conditions à remplir sont

g(0)=-3 ,       g(89)=5,        g(166)=15   ,       g(258)=8

(Subscript[c, 0])+(Subscript[c, 1]) cos(((2 π)/365)0)+(Subscript[c, 2])sin(((2 π)/365)0)+(Subscript[c, 3]) cos(((4 π)/365)0)=-3 ,       
(Subscript[c, 0])+(Subscript[c, 1])cos(((2 π)/365)89)+(Subscript[c, 2])sin(((2 π)/365)89)+(Subscript[c, 3]) cos(((4 π)/365)89)=5,      
 (Subscript[c, 0])+(Subscript[c, 1]) cos(((2 π)/365)166)+(Subscript[c, 2])sin(((2 π)/365)166)+(Subscript[c, 3]) cos(((4 π)/365)166)=15   ,      
(Subscript[c, 0])+(Subscript[c, 1]) cos(((2 π)/365)258)+(Subscript[c, 2])sin(((2 π)/365)258)+(Subscript[c, 3]) cos(((4 π)/365)258)=8.

Le système d'équations est linéaire. Écrivons-le sous la forme matricielle :

(({{1, 1, 0, 1}, {1, cos(((178 π)/365)), sin(((178 π)/365)), cos(((356 π)/365))}, {1, cos(((332 π)/365)), sin(((332 π)/365)), cos(((664 π)/365))}, {1, cos(((516 π)/365)), sin(((516 π)/365)), cos(((1032 π)/365))}}))(({{(Subscript[c, 0])}, {(Subscript[c, 1])}, {(Subscript[c, 2])}, {(Subscript[c, 3])}}))=(({{-3}, {5}, {15}, {8}}))  .

Résolvons le système avec Mathematica :

Clear[b,t];x=Transpose[pts][[1]];
b[t_]={1,Cos[((2 π)/365)t],Sin[((2 π)/365)t],Cos[((4 π)/365)t]};

m=Map[b,x];MatrixForm[m]

Les coefficients de la matrice sont des valeurs numériques; aussi, la résolution du système ne présente pas de difficulté particulière.

y=Transpose[pts][[2]];
c=LinearSolve[m,y]//N;
MatrixForm[c]

Clear[g,t];
g[t_]=c.b[t];
g[t]

Plot[g[t],{t,0,365*2},AxesLabel->{"t [d]","température [°C]"}]

La fonction est périodique

g[0]

g[365]

La température au début du mois d'août sera donc, en degrés Celsius,

g[212]

§ 1.5 	Interpolation : cas général

Énoncé du problème

Soit

(Subscript[x, 0]), (Subscript[x, 1]), ..., (Subscript[x, n-1])     des abscisses distinctes     p≤(Subscript[x, j])≤q

(Subscript[y, 0]), (Subscript[y, 1]), ..., (Subscript[y, n-1])     des  ordonnées quelconques;

(Subscript[b, 0]), (Subscript[b, 1]), ..., (Subscript[b, n-1])     des fonctions de base
                [p, q] (Overscript[→, (Subscript[b, j])])  ℝ  , j=0, 1, ..., n-1

Nous cherchons une fonction d'interpolation

g=(Subscript[c, 0])(Subscript[b, 0])+(Subscript[c, 1])(Subscript[b, 1])+...+(Subscript[c, n-1])(Subscript[b, n-1])

telle que

g((Subscript[x, 0]))=(Subscript[y, 0]),g((Subscript[x, 1]))=(Subscript[y, 1]),   ...,g((Subscript[x, n-1]))=(Subscript[y, n-1])

Calcul

g((Subscript[x, 0]))=(Subscript[y, 0]), g((Subscript[x, 1]))=(Subscript[y, 1]),   ...,g((Subscript[x, n-1]))=(Subscript[y, n-1])

(Subscript[c, 0])(Subscript[b, 0])((Subscript[x, 0]))+(Subscript[c, 1])(Subscript[b, 1])((Subscript[x, 0]))+...+(Subscript[c, n-1])(Subscript[b, n-1]) ((Subscript[x, 0]))=(Subscript[y, 0])
(Subscript[c, 0])(Subscript[b, 0])((Subscript[x, 1]))+(Subscript[c, 1])(Subscript[b, 1])((Subscript[x, 1]))+...+(Subscript[c, n-1])(Subscript[b, n-1]) ((Subscript[x, 1]))=(Subscript[y, 1])
...
(Subscript[c, 0])(Subscript[b, 0])((Subscript[x, n-1]))+(Subscript[c, 1])(Subscript[b, 1])((Subscript[x, n-1]))+...+(Subscript[c, n-1])(Subscript[b, n-1]) ((Subscript[x, n-1]))=(Subscript[y, n-1])

Le système d'équations peut s'écrire sous forme vectorielle

(Subscript[c, 0])(({{(Subscript[b, 0])((Subscript[x, 0]))}, {(Subscript[b, 0])((Subscript[x, 1]))}, {...}, {(Subscript[b, 0])((Subscript[x, n-1]))}}))+(Subscript[c, 1])(({{(Subscript[b, 1])((Subscript[x, 0]))}, {(Subscript[b, 1])((Subscript[x, 1]))}, {...}, {(Subscript[b, 1])((Subscript[x, n-1]))}}))+...+(Subscript[c, n-1])(({{(Subscript[b, n-1])((Subscript[x, 0]))}, {(Subscript[b, n-1])((Subscript[x, 1]))}, {...}, {(Subscript[b, n-1])((Subscript[x, n-1]))}}))=(({{(Subscript[y, 0])}, {(Subscript[y, 1])}, {...}, {(Subscript[y, n-1])}}))

Il s'agit de résoudre un système de n équations à n inconnues :

(({{(Subscript[b, 0])((Subscript[x, 0])), (Subscript[b, 1])((Subscript[x, 0])), ..., (Subscript[b, n-1])((Subscript[x, 0]))}, {(Subscript[b, 0])((Subscript[x, 1])), (Subscript[b, 1])((Subscript[x, 1])), ..., (Subscript[b, n-1])((Subscript[x, 1]))}, {..., ..., ..., ...}, {(Subscript[b, 0])((Subscript[x, n-1])), (Subscript[b, 1])((Subscript[x, n-1])), ..., (Subscript[b, n-1])((Subscript[x, n-1]))}}))(({{(Subscript[c, 0])}, {(Subscript[c, 1])}, {...}, {(Subscript[c, n-1])}}))=(({{(Subscript[y, 0])}, {(Subscript[y, 1])}, {...}, {(Subscript[y, n-1])}}))

Hypothèse

La matrice est régulière. En particulier, ses vecteurs-colonnes sont linéairement indépendants et constituent une base de (ℝ^n), cela signifie qu’il est possible de construire tous les vecteurs de (ℝ^n) à partir de ceux-ci. Nous posons

(OverVector[(Subscript[e, 0])])=(({{(Subscript[b, 0])((Subscript[x, 0]))}, {(Subscript[b, 0])((Subscript[x, 1]))}, {...}, {(Subscript[b, 0])((Subscript[x, n-1]))}})),(OverVector[(Subscript[e, 1])])=(({{(Subscript[b, 1])((Subscript[x, 0]))}, {(Subscript[b, 1])((Subscript[x, 1]))}, {...}, {(Subscript[b, 1])((Subscript[x, n-1]))}})),...,(OverVector[(Subscript[e, n-1])])=(({{(Subscript[b, n-1])((Subscript[x, 0]))}, {(Subscript[b, n-1])((Subscript[x, 1]))}, {...}, {(Subscript[b, n-1])((Subscript[x, n-1]))}})).

Ces vecteur sont appelé discrétisation (ou digitalisation) des fonctions de base. De façon générale, pour n’importe quelle fonction (dont on ne connaît pas forcément l’expression analytique)

f : [p,q]-> ℝ

nous définissons l'opération d'échantillonnage ou de discrétisation comme suit

(OverVector[discr(f)]):=(({{f((Subscript[x, 0]))}, {f((Subscript[x, 1]))}, {...}, {f((Subscript[x, n-1]))}}))

où { (Subscript[x, 0]), (Subscript[x, 1]), ... , (Subscript[x, n-1])} sont les abscisses de l'échantillonnage.

Avec la notation précédente, les vecteurs-colonnes de la matrice prennent la forme

(OverVector[(Subscript[e, k])])=(OverVector[discr((Subscript[b, k]))])   pour    k=0,1, ..., n-1

Notre problème consiste donc à exprimer le vecteur (OverVector[y]) dans la base { (OverVector[(Subscript[e, 0])]), (OverVector[(Subscript[e, 1])]), ...,(OverVector[ (Subscript[e, n-1])])}, c'est-à-dire à déterminer les coefficients { (Subscript[c, 0]), (Subscript[c, 1]), ...,(Subscript[c, n-1])} tels que

(Subscript[c, 0])(OverVector[(Subscript[e, 0])])+(Subscript[c, 1])(OverVector[(Subscript[e, 1])])+...+(Subscript[c, n-1])(OverVector[(Subscript[e, n-1]) ])=(OverVector[y])        où           (OverVector[y])=(({{(Subscript[y, 0])}, {(Subscript[y, 1])}, {...}, {(Subscript[y, n-1])}}))

Exemple

Interpolation polynomiale

(Subscript[b, 0])(t)=1, (Subscript[b, 1])(t)= t,    (Subscript[b, 2])(t)= (t^2),...,(Subscript[b, n-1])(t)=(t^(n-1))

(({{1, (Subscript[x, 0]), (Subscript[x, 0]^2), ..., (Subscript[x, 0]^(n-1))}, {1, (Subscript[x, 1]), (Subscript[x, 1]^2), ..., (Subscript[x, 1]^(n-1))}, {..., ..., ..., ..., ...}, {1, (Subscript[x, n-1]), (Subscript[x, n-1]^2), ..., (Subscript[x, n-1]^(n-1))}}))(({{(Subscript[c, 0])}, {(Subscript[c, 1])}, {...}, {(Subscript[c, n-1])}}))=(({{(Subscript[y, 0])}, {(Subscript[y, 1])}, {...}, {(Subscript[y, n-1])}}))

§ 1.6	Exercices

Exercice 1-1	[sans/avec Mathematica]

Les points suivants étant donnés

(Subscript[M, 0])(-1,2), (Subscript[M, 1])(1,-1), (Subscript[M, 2])(2,3), (Subscript[M, 3])(5,-7),

calculez sans Mathematica, par interpolation linéaire les ordonnées qui correspondent à t=1.3 et t=3.2.
Vérifiez vos solutions en utilisant la fonction Interpolation.

Exercice 1-2	[avec Mathematica]

Déterminez le polynôme de degré minimal qui passe par les points suivants:

(Subscript[M, 0])(-1,2), (Subscript[M, 1])(1,-1), (Subscript[M, 2])(2,3), (Subscript[M, 3])(5,-7), (Subscript[M, 4])(6,-3).

Travaillez dans un premier temps avec Solve, puis avec LinearSolve et finalement en utilisant InterpolatingPolynomial.

Exercice 1-3	[sans Mathematica]

Déterminez le polynôme de degré minimal qui passe par les quatre points suivants

(Subscript[M, 0])(-1,2), (Subscript[M, 1])(1,-1), (Subscript[M, 2])(2,3), (Subscript[M, 3])(5,-7)

Prescription d'exercice : écrivez le polynôme cherché comme combinaison linéaire des fonctions de base

{1,   t-(Subscript[x, 0]),   (t-(Subscript[x, 0]))(t-(Subscript[x, 1])),   (t-(Subscript[x, 0]))(t-(Subscript[x, 1]))(t-(Subscript[x, 2]))},

où les (Subscript[x, i]) sont les abscisses des points d’interpolation.
Quel est l’avantage de ces fonctions de base ?
Résolvez le système d'équations et écrivez explicitement la solution g.

Exercice 1-4	[sans Mathematica]

En généralisant la méthode de l'exercice 1-3, démontrez l'existence d’un polynôme d’interpolation de degré n-1 pour un problème d’interpolation à n points.

Exercice 1-5     [sans Mathematica]

Soit les points d’interpolation

(Subscript[P, 0])(-1;3), (Subscript[P, 1])(2;5), (Subscript[P, 2])(3;-1),

(Subscript[x, 0]), (Subscript[x, 1]), (Subscript[x, 2]) les abscisses de chacun de ces points et (Subscript[y, 0]), (Subscript[y, 1]), (Subscript[y, 2]) leurs ordonnées. Le but de cet exercice est de déterminer le polynôme d’interpolation p en évitant d’avoir à résoudre un système d’équations. Pour ce faire, procéder de la façon suivante:

Déterminer un polynôme qui s’annule en (Subscript[x, 1]) et (Subscript[x, 2]).

Déterminer tous les polynômes de degré 2 qui s’annulent en (Subscript[x, 1]) et (Subscript[x, 2]).

Déterminer le polynôme (Subscript[p, 0]) de degré 2 qui s’annule en (Subscript[x, 1]) et (Subscript[x, 2]) et qui vaut 1 en (Subscript[x, 0]).

Déterminer le polynôme (Subscript[p, 1]) de degré 2 qui s’annule en (Subscript[x, 0]) et (Subscript[x, 2]) et qui vaut 1 en (Subscript[x, 1]).

Déterminer le polynôme (Subscript[p, 2]) de degré 2 qui s’annule en (Subscript[x, 0]) et (Subscript[x, 1]) et qui vaut 1 en (Subscript[x, 2]).

Écrire le polynôme p recherché à l'aide des fonctions de base {(Subscript[p, 0]),(Subscript[p, 1]).(Subscript[p, 2])}.

{(Subscript[p, 0]),(Subscript[p, 1]),(Subscript[p, 2])} est la base de Lagrange correspondant aux abscisses d’interpolation et p est le polynôme de Lagrange correspondant aux points d’interpolation.

Déterminez le polynôme d’interpolation passant par les points (Subscript[P, 0])(-1;3), (Subscript[P, 1])(2;5), (Subscript[P, 2])(3;-1) et (Subscript[P, 3])(5;4) à l’aide de la base de Lagrange.

Déterminez le polynôme d’interpolation passant par trois points (Subscript[P, 0])((Subscript[x, 0]);(Subscript[y, 0])), (Subscript[P, 1])((Subscript[x, 1]);(Subscript[y, 1])) et (Subscript[P, 2])((Subscript[x, 2]);(Subscript[y, 2])) à l’aide de la base de Lagrange.

Exercice 1-6	[avec Mathematica]

Soit (-1;2), (3;7), (4;1), (5,-2) des points d’interpolation. Le but de cet exercice est de générer automatiquement la base de Lagrange ainsi que le polynôme d’interpolation correspondant à ces points. Pour cela, procédez en suivant les instruction suivantes :

Définissez une liste pts contenant les points d’interpolation puis générer automatiquement les listes abs et ord contenant les liste des abscisses et des ordonnées d’interpolation.

Générez une liste contenant les fonctions t-(Subscript[x, 0]), t-(Subscript[x, 1]),...,t-(Subscript[x, n-1]).

Construisez la fonction n[i,t] correspondant au numérateur de (Subscript[L, i-1])(t), le (((i-1))^(ème)) polynôme de Lagrange : il s’agit de la multiplication de toutes les fonctions de la liste précédente sauf  la (i^(ème)). Pour cela, utiliser les fonctions Apply, Delete et Times.

Construisez la fonction d[i] correspondant au dénominateur de (Subscript[L, i-1])(t), le (((i-1))^(ème)) polynôme de Lagrange, en procédant comme au point précédent.

En utilisant les fonctions n et d construisez la liste b[t] contenant les n polynômes de Lagrange.

Construisez p[t] le polynôme de Lagrange. Vérifiez votre résultat en traçant le graphe de p et en faisant figurer sur celui-ci les points d’interpolation.

Définissez un module lagrange[pts_,t_] qui détermine le polynôme d’interpolation p[t] passant par les points pts en utilisant la base de Lagrange. Vérifiez que votre module fonctionne correctement à l’aide de l’exemple utilisé dans cet exercice.

Définissez un module lagrange2[pts_,t_] qui fonctionne comme le module lagrange, mais dont l’output contient en plus le graphe du polynôme p avec les points pts. Pour cela, utilisez la fonction Print.

Exercice 1-7     [avec Mathematica]

Déterminez une fonction périodique de période 7 qui passe par les points suivants:

(Subscript[M, 0])(-1,2), (Subscript[M, 1])(1,-1), (Subscript[M, 2])(3,-3), (Subscript[M, 3])(5,0).

Comparez les résultat obtenus

en prenant dans les fonctions de bases deux sinus,

en prenant dans les fonctions de bases deux cosinus,

en paramétrant la fonction Interpolation afin qu’elle génère un interpolant périodique.

Pour cela, tracez dans un même repère les points d’interpolation ainsi que le graphe des trois interpolants.