Vous êtes sur la page 1sur 9

Méthodes d’interpolation - Ajustement

Objectifs :

Approche et utilité des méthodes d’interpolation et des méthodes numériques de résolution d’un système
d’équations linéaires

Position du problème :

Afin d’aborder l’utilisation des méthodes d’interpolation dans le domaine scientifique, nous proposons de les
employer dans un cas concret d’application plasma. Très schématiquement, un plasma est un gaz ionisé
(contenant des électrons et des ions), fortement réactif, entretenu par le passage d’un courant électrique. Les
applications plasmas sont utilisées en micro-électronique, en médecine, dans l’industrie automobile et spa-
tiale, etc.

Afin d’avoir des paramètres optimaux de fonctionnement, il est nécessaire de bien connaître les caractéris-
tiques du plasma créé. Un moyen simple est d’introduire dans le gaz ionisé une sonde électrostatique de
faible dimension (quelques mm2). Cette sonde est alors portée à un potentiel flottant. Suivant sa valeur par
rapport à celui du plasma, la sonde va attirer des électrons (et repousser des ions) ou attirer des ions (et re-
pousser des électrons). Du fait que des particules chargées arrivent sur la sonde, un courant électrique est
collecté par cette dernière et l’on peut obtenir expérimentalement la caractéristique courant - tension de la
sonde. En théorie, l’analyse de cette caractéristique permet de déterminer de nombreux paramètres du plas-
ma. Ainsi, le point d’inflexion de la courbe (l’endroit ou la dérivée passe par un maximum) permet d’obtenir
le “potentiel du plasma” à l’endroit de la sonde. La connaissance de cette dérivée permet aussi, en utilisant
des modèles plus ou moins complexes pour décrire le plasma, d’obtenir la température et la densité des élec-
trons proches de la sonde.

Nous avons représenté sur la figure suivante un exemple de mesure par une sonde électrostatique dans un ré-
acteur plasma. Bien évidement les points expérimentaux sont entachés de bruit inhérent à toute mesure. Pour
obtenir une courbe plus “propre”, on peut interpoler la courbe expérimentale par une fonction passant au
plus près de ses points ou par certains des points astucieusement choisis que l'on appelle “pivots”. À partir de
la fonction trouvée, il suffit de calculer la dérivée pour obtenir les paramètres du plasma.

Caractéristique courant tension de la sonde électrostatique.


La seconde méthode est en fait une d'interpolation polynomiale. Nous utiliserons la forme de Lagrange du
polynôme d'interpolation. L'autre est une méthode d'ajustement (“fit”) dite "méthode des moindres carrés"

Rappels

A Méthode de Lagrange

L’interpolation par la méthode de Lagrange consiste à trouver l’expression d’un polynôme passant par un
nombre fini de points expérimentaux choisis astucieusement et que l'on nomme “pivots”. Si l’on choisi N+1
pivots, le polynôme sera de degré N. Ainsi sur la figure ci-après, nous avons choisi 8 pivots et le polynôme
d'interpolation obtenu est de degré 7.

Exemple d’interpolation par la méthode de Lagrange

La méthode de Lagrange permet de calculer le polynôme d'interpolation pasant par les pivots {Xi, Yi} en un
point !. L'expression de Lagrange du polynôme est :
n
PN (α) = ∑ Li (α)Yi
i=0
n
α − Xj
Les Li (α) sont des polynômes pouvant s’exprimer par : Li (α) = ∏ où les Xi /X j sont les pivots choisis.
j=0 Xi − X j
j�=i

Cette méthode, très simple à mettre en œuvre, présente plusieurs désavantages :

• D’une part, elle est liée aux choix des points d’interpolation et, bien entendu, au degré du polynôme. D’un
point de vue numérique (temps de calcul, variation des polynômes) il est déconseillé de prendre un poly-
nôme de degré trop important. Sur un polynôme de degré n, on aura donc seulement le choix sur n+1
points au maximum. Il faut de plus qu’entre ces n+1 points, les autres points expérimentaux ne varient pas
trop rapidement car ils ne rentrent pas en compte dans le calcul des coefficients.

• D’autre part, on peut remarquer qu’elle ne permet pas simplement le calcul des coefficients du polynôme
d’interpolation. On ne pourra donc pas obtenir, avec cette méthode, les dérivées successives du polynôme
d’interpolation et trouver les points d’inflexion de la courbe.

Avantages : Facilité de mise en œuvre, rapide, passe par certains points.


Inconvénients : Ne tient pas compte de tous les points, limité à un certain nombre de points, ne renvoie
pas les coefficients du polynôme d’interpolation.
B Méthode des Moindres carrés

Le principe de l'ajustement polynomial diffère complètement de l'interpolation. Lorsque l'on ajuste des don-
nées -on dit souvent “fiter des données”- on cherche l'expression du polynôme de degré R choisi arbitraire-
ment -en fait la physique guide le choix du polynôme- passant au plus près des données expérimentales. Ain-
si si l'on sait que la loi guidant le phénomène étudié est de degré 2 on choisira d'ajuster par un polynôme de
degré 2. La figure ci-après compare l'ajustement et l'interpolation d'un ensemble de données. Malgré le choix
judicieux des pivots on constate que l'ajustement décrit bien mieux la courbe.

Pour déterminer l'expression du polynôme d'ajustement il faut résoudre le système matriciel construit sur le
modèle suivant (pour un polynôme de degré 3)
    
∑ xi0 ∑ xi1 ∑ xi2 ∑ xi3 a0 ∑ yi
 ∑ xi1 ∑ xi2 ∑ xi3 ∑ xi4   a1   ∑ xi ∗ yi 
    
 ∑ xi2 ∑ xi3
∑ xi4
∑ xi5   a2  =  ∑ xi2 ∗ yi 
∑ xi3
∑ xi4
∑ xi5
∑ xi6 a3 ∑ xi3 ∗ yi

Le polynôme recherché s’écrit : P3 (x) = a0 + a1 x + a2 x2 + a3 x3


Il faut donc résoudre le système d'équation ci-dessus, puis si l'on veut calculer la valeur prise par le poly-
nôme d'interpolation sur les points expérimentaux utiliser une méthode de calcul polynomial.

Avantages : Prise en compte de tous les points de mesures.

Inconvénients : Le polynôme ne passe pas par tous les points – temps de calcul assez long.
C Résolution de systèmes linéaires

La méthode de Gauss-Jordan est une méthode directe de résolution de système linéaire du type AX=B où A
est une matrice carrée, B un vecteur colonne. Elles sont souvent appelées méthodes du pivot. Le principe de
ces méthodes est de transformer A en matrice diagonale ou identité.

Les méthodes sont en deux étapes. Pour fixer les idées, nous allons les appliquer à un système 3x3.
 0    
a0 a01 a02 x0 b0
 a10 a11 a12   x1  =  b1 
a20 a21 a22 x2 b2
pour plus de commodité on réécrit ce système sous la forme d'une seule matrice :
 0 
a0 a01 a02 b0
 a10 a11 a12 b1 
a20 a21 a22 b2

La méthode donne un rôle particulier aux éléments de la diagonale principale, que l'on appelle les pivots. Il y
a pour le système ci-dessus trois pivots :
a00 ; a11 ; a22
La méthode consiste à répéter autant de fois que de lignes dans la matrice les opérations suivantes, pivot par
pivot :

1. division de tous les éléments de la ligne du pivot en cours par le pivot

2. élimination dans la colonne du pivot : on annule chacun de termes de la colonne du pivot en faisant des
combinaisons de ligne avec celle du pivot.Le système est alors :

Par exemple, si l'on applique la méthode au premier pivot :

1/ division
 
a01 a02
1 a00 a00
b0
a00
 1 
 a0 a11 a12 b1 
a20 a21 a22 b2

2/ Elimination dans la colonne du pivot :


 a01 a02 b0

1 a00 a00 a00
 0
a0 
 0 a1 − a1 ∗ a01 a2 − a10 ∗ a20
1
b1 − a10 ∗ ba00 
 1 0 a0 0 0 
a0 a0
0 a21 − a20 ∗ a10 a22 − a20 ∗ a20 b2 − a20 ∗ ba00
0 0 0

On recommence le même processus, pour chaque pivot ce qui conduit au système :


 
1 0 0 b�0
 0 1 0 b�1 
0 0 1 b�2

La solution du système d'équations est la dernière colonne soit :


x0 = b�0 ; x1 = b�1 ; x2 = b�2
D Calcul polynomial

Afin d'exploiter le polynôme d'ajustement, il faut être capable calculer la valeur prise par ce polynôme en
différents points, et dans le cas présent, il faut aussi être capable de calculer la valeur de la dérivée de ce
polynôme.

Le “schéma de Horner” permet ces calculs. Le schéma de Horner peut se résumer avec le tableau suivant :

Considérons le polynôme de degré n suivant :


Pn (x) = a0 xn + a1 xn−1 + a2 xn−2 + · · · + an−1 x + an
Le tableau suivant résume le calcul du polynôme :
(n)
Coefs de Pn (x) Pn (α) Pn� (α) Pn�� (α) ... Pn (α)
(n)
Pn (α)
a0 b0 = a0 c0 = b0 d 0 = c0 ... a0 = n!
a1 b1 = a1 + αb0 c1 = b1 + αc0 d1 = c1 + αc0 ...
.. .. .. .. ..
. . . . .

..
ak bk = ak + αbk−1 ck = bk + αck−1 dk = ck + αdk−1 .
.. .. .. .. ..
. . . . .

Pn�� (α)
an−2 bn−2 = an−2 + αbn−3 cn−2 = bn−2 + αcn−3 dn−2 = cn−2 + αdn−3 = 2!
Pn� (α)
an−1 bn−1 = an−1 + αbn−2 cn−1 = bn−1 + αcn−2 = 1!
an bn = an + αbn−1 = Pn (α)

Pour calculer la valeur du polynôme il suffit d'appliquer une fois le schéma de Horner, le coefficient bn est la
valeur du polynôme en !. Si l'on veut de plus la valeur de la dérivée, il suffit d'appliquer le même schéma
aux coefficients bi, et ce jusqu'à calculer le coefficient cn-1, etc.

Avantages : Permet le calcul du polynôme en un point mais aussi de ses dérivées successives, rapide,
économie du nombre d’opérations par rapport à un calcul de polynôme classique.

Inconvénients : Aucun

Travail à effectuer

A Considérations générales

★ Vous définirez les types suivants :


typedef float vect [21];
typedef float points [128];
typedef float mat[11][12];
★ Et écrirez les fonctions suivantes :
void ecrire4 (points x , points y , points z , points t , int n );
/* Cette fonction non typée ne renvoie rien et reçoit en paramètres quatre
* vecteurs à une dimension x, y, z et t ainsi que n le numéro du dernier point.
* Elle doit permettre de sortir dans un fichier les n+1 valeurs contenues dans
* les 4 vecteurs séparées par un ;
*/

void ecrire3 (points x , points y , points z , int n );


/* Cette fonction a la même vocation que ecrire4 mais ne travaille
* qu’avec 3 vecteurs.
*/

void lire ( points x , points y , int *n );


/* Cette fonction doit permettre de lire un fichier contenant n+1 couples
* de points et de les stocker dans deux vecteurs x et y. Elle doit
* permettre aussi au travers du pointeur *n en paramètre d’obtenir
* le numéro du dernier point mesuré.
*/
★ Testez la fonction lire sur le fichier « sonde.txt » . Le nombre de points du fichiers est de 128 et les
premiers points sont :
-39.910 -0.120
-39.240 -0.140
-38.570 -0.150
B Méthode de lagrange
★ Pour le calcul de Lagrange, créez une fonction Lag ayant le prototype suivant :
float Lag ( points X , points Y , int n , float Al ) ;
/* On transmet à la fonction Lag l’abscisse des points concernés dans le
* vecteur X et leur ordonnées en Y. n correspond au dernier point et Al
* est le point où le coefficient de Lagrange doit être calculé. La fonction
* renvoie dans un float la valeur du polynôme en ce point.
*/
★ Afin de tester la fonction, calculez la valeur du polynôme d’interpolation en prenant comme points
ceux définis par le polynôme P2(x)=4x2+7 sur l’intervalle [0 ; 4] avec un pas égal à 1. Vous devez
trouver P2(1,5) = 16.
Application à la sonde plasma

Pour l’interpolation des points expérimentaux de la sonde nous proposons d’utiliser un polynôme d’ordre 8.
Il nous faudra donc neufs points judicieusement choisis. Les points choisis sont présentés sur la figure ci des-
sous et sont les suivants :
1 : Point n°0 (-39.24 ;-0.14 ),
2 : Point n°26 (-22.63 ;-0.16 ),
3 : Point n°49 ( -7.28 ;-0.095 ),
4 : Point n°73 ( 8.65 ;-0.11 ),
5 : Point n°83 ( 15.21 ; 0.035 ),
6 : Point n°93 ( 21.35 ; 1.14 ),
7 : Point n°103 ( 27.06 ; 2.41 ),
8 : Point n°114 ( 33.49 ; 3.61 ),
9 : Point n°127 ( 38.78 ; 4.467 ).

Application de l’interpolation à la sonde électrostatique.

Créer un programme permettant

★ De stocker les neufs valeurs dans l9x et l9y des vecteurs de type point.

★ De calculer les valeurs du polynôme d’interpolation passant par les neufs points prédéfinis ci-dessus.

Pour stocker les neufs valeurs, on définira dans un premier temps un vecteur nommé Nlag9 de 9 entiers ini-
tialisé aux valeurs 0, 26, 49 etc. :
int Nlag9[9]={0 , 26 , 49 , 73 , 83 , 93 , 103 , 114 , 127} ;
Initialiser ensuite les vecteurs l9x et l9y en utilisant une boucle for et le vecteur Nlag9 défini ci - dessus (si x
est le vecteur ou sont stockés les tensions expérimentales : l9x[i]=x[Nlag9[i]]…)

★ Pour chacun des points de tension donnés par la sonde calculer les valeurs du polynôme et les stocker
dans une variable de type points. Utilisez alors la fonction ecrire3 pour sortir dans un fichier la ten-
sion, les valeurs expérimentales de l’intensité et les valeurs interpolées.

★ Analyser les courbes. Les neuf valeurs qui semblaient bien réparties sur la courbe vous semblent elles
appropriées ?

★ On peut penser qu’une solution pour remédier aux oscillations entre le point 0 et le point 73 est
d’augmenter le degré du polynôme et donc le nombre de points d’interpolation. Choisir quatre points
supplémentaires entre le point 0 et 73 (par ex 10, 20, 30, 60). Créez alors de nouveaux vecteurs
Nlag14, l14x et l14y. Retracez l’interpolation.

★ Quelle conclusion peut on faire ?

★ Est il judicieux de chercher une interpolation passant par des points sur toutes les parties de la
courbe ?

★ Séparez l’interpolation sur trois intervalles [0 ;73],[73 ;93] ;[93 ;127] et sur chacun de ces inter-
valles faites une interpolation par un polynôme d’ordre 3 (4 points) passant par les extrémités de
chaque intervalle. Conclusion ?
Calcul polynomial

★ Pour le calcul de Horner, créer une fonction Horn ayant le prototype suivant :
float Horn ( vect P , float X , int n , vect Q ) ;
/* On transmet à cette fonction le vecteur P de coefficients du polynôme P,
* le point X où l’on veut calculer le polynôme, le degré n de ce polynôme.
* La fonction doit nous retourner en résultat la valeur du polynôme en x et
* le vecteur Q contenant les coefficients de Horner (Pour une utilisation
* ultérieure comme le calcul de dérivée).
*/
★ Ecrivez et testez la fonction Horn.

À l’aide de cette fonction vous calculerez toutes les dérivées successives du polynôme d’ordre 3 :
P3 (x) = x3 + 3x2 + 2x + 1
En x = 2. Vous devez obtenir les valeurs suivantes :
P(2) : 25 P’(2) : 26
P”(2) : 18 P”’(2) : 6
Solution de systèmes linéaires

★ Vous écrirez une fonction qui utilisera la méthode de Gaus-Jordan pour résoudre un système quel-
conque, pour ce faire, créez une fonction gausj ayant le prototype suivant :
void gausj ( mat T , int dim , vect sol);
/* Cette fonction permet la résolution du système [M][a]=[b]. La solution
* du système est renvoyée par la fonction dans le vect sol. On transmet à la
* fonction la variable T de type Mat et de dimensions [n ;n+1]. T n’est pas
* carrée car on a choisi de mettre le vecteur [b] (à droite du système) dans
* la dernière colonne de T. Les n premières colonnes de T contiennent
* les coefficients de la matrice M. dim correspond à la dimension de la
* matrice carrée du système.
*/
Testez la fonction sur le système suivant :
    
3 2 1 a1 0
 0 1 0   a2  =  -1 
0 0 2 a3 1
Moindres carrés

★ Créez une fonction moinscar ayant le prototype suivant :


void moinscar (points X , points Y , int n , int r , vect sol , int choix);
/* Cette fonction doit permettre l’obtention des coefficients du polynôme
* d’interpolation des moindres carrés en notation correcte pour le schéma
* de Horner. Ces coefficients sont renvoyés dans la variable de sol de type vect.
* Les paramètres transmis à la fonction sont les données expérimentales
* sur lesquelles on calcule les valeurs prises par le polynôme d’interpolation
* (variables points X et Y).
* Le nombre de ces valeur expérimentales (int n) et le degré du polynôme des
* moindres carrés que l’on veut obtenir (int r). La variable choix vous permet de
* choisir de résoudre le système linéaire des moindres carrés par Gauss jordan
* ou Gauss Seidel. Dans le cas de Gauss Seidel, vous choisirez cette fois - ci
* une résolution avec une précision de 1%.
*/
Remarque :

Pour remplir la matrice des moindre carrés de l’équation :


    
∑ xi0 ∑ xi1 ∑ xi2 ∑ xi3 a0 ∑ yi
 ∑ xi1 ∑ xi2 ∑ xi3 ∑ xi4   a1   ∑ xi ∗ yi 
  = 
 ∑ xi 2
∑ xi3
∑ xi4 5
∑ xi   a2   ∑ xi2 ∗ yi 
∑ xi3
∑ xi4
∑ xi5
∑ xi6 a3 ∑ xi3 ∗ yi
utilisez un vecteur U ayant (2r+1) éléments dans lequel on calculera :
n
U(i) = ∑ xki
k=0

Si M est la matrice des moindres carrés, alors on a :


M[i][j] = U[i+j]
Testez la fonction sur les valeurs que prend le polynôme P2(x) = 4x2+7 sur l’intervalle [-5 ; 5]. Vous
échantillonnerez cet intervalle sur 100 points. Vous devez trouver : sol[0] = 4, sol[1] ! 0, sol[2] = 7.
Application à la sonde plasma

Vous avez à présent tous les outils nécessaires à l’interpolation par les moindres carrés de la courbe expéri-
mentale de la sonde.

★ A l’aide de la fonction moinscar calculez les coefficients du polynôme d’interpolation pour un degré
que vous choisirez. (Ne dépassez pas le degré 10 car au delà on a un problème dû aux limitations du
type float.). Faites le calcul pour quatre degrés différents de polynôme (par exemple 4, 6, 8 et 10).

★ En utilisant la fonction Horn, calculez les valeurs de ces quatre polynômes pour chacune des tensions
expérimentales, puis en utilisant la fonction ecrire4 sauvegardez dans un fichier les valeurs des points
expérimentaux et les valeurs interpolées par les quatre polynômes (en deux fois).

★ Tracez avec Octave les courbes obtenues. Quelle conclusion pouvez-vous en tirer ?

★ Quelle est la différence profonde entre la méthode des moindres carrés et celle de Lagrange ?
La méthode de Horner permet de calculer la dérivée et la dérivée seconde de la fonction d’interpolation.
Avec l’endroit où s’annule la dérivée seconde il est possible d’obtenir les extremums de la dérivée première
et donc Vp la tension du plasma.

★ Sauvegardez dans un fichier les valeurs prises par le polynôme d’interpolation d’ordre 8 et ses deux
dérivées successives sur toutes les tensions relevées expérimentalement. Analysez graphiquement les
courbes et déduisez en les valeurs possibles pour Vp.

★ Proposez une fonction permettant d’obtenir automatiquement les valeurs de Vp et de les afficher. Tes-
tez différents degrés de polynôme.

Vous aimerez peut-être aussi