next up previous
Suite: Systèmes de Toeplitz Sommaire: Algèbre Retour: Calcul de vecteurs propres

Systèmes de Vandermonde


\fbox {PRESENTATION}


Les systèmes d'équations linéaires de Vandermonde (en l'honneur du mathématicien français Alexandre Vandermonde (1735-1796)) apparaissent naturellement lorsqu'on veut trouver un polynôme de degré N-1 qui prend des valeurs données qi en N points donnés distincts xi (polynôme d'interpolation de Lagrange). On est alors amené à résoudre le système d'équations linéaires

\begin{displaymath}
w_1+w_2x_i+w_3x_i^2+...+w_Nx_i^{N-1}=q_i \quad 1\leq i \leq N\end{displaymath}

par rapport aux inconnues wj

\begin{displaymath}
P(x)=\sum _{j=1}^{N}w_jx^{j-1}\end{displaymath}

est le polynôme cherché. Sous des habillages variés, des systèmes de ce type se présentent dans diverses questions d'algèbre linéaire.

Remarquons que souvent il n'est pas nécessaire de connaître la décomposition du polynôme de Lagrange dans la base naturelle, mais que sa décomposition dans une autre base suffit. C'est ainsi que si on se contente de la décomposition de P(x) dans la base contituée des polynômes $ P_j(x)= \prod_{n=1 \atop {n \neq j}}^N {{x-x_n} \over
{x_j-x_n}}$ qui valent 1 en xj et aux autres points xn il n'y a pas de calcul à faire car dans ce cas les coefficients de la décomposition sont les valeurs qi. De même si on choisit de décomposer P(x) dans la base de Newton 1,x-x1,(x-x1)(x-x2),...,(x-x1)(x-x2)...(x-xN-1) le calcul se ramène à l'algorithme simple des différences divisées. Cependant il existe des problèmes concrets dont la solution nécessite la résolution effective d'un système de Vandermonde, par exemple quand on veut connaître explicitement les coefficients du polynôme d'interpolation de Lagrange. Dans le sujet qui suit on travaille en fait avec la matrice transposée de la précédente.


\fbox {SUJET}


1.Algorithme

Soit N un entier $\geq 2$. Etant donné x=(x1,x2,...,xN) un N-uplet de réels deux à deux distincts on note B la matrice

\begin{displaymath}
B=\left(
 \begin{array}
{cccc}
 1 & 1 & \cdots & 1 \\  x_1 &...
 ..._1^{N-1} & x_2^{N-1} & \cdots & x_N^{N-1} 
 \end{array} \right)\end{displaymath}

On cherche à résoudre le système

BW=Q

Q est la matrice colonne constituée des seconds membres $q_1,q_2,\cdots,q_N$ du système et où W est la matrice colonne constituée des inconnues $w_1,w_2,\cdots,w_N$ du système.


Pour tout entier j vérifiant $1 \leq j \leq N$ on pose

\begin{displaymath}
P_j(x)= \prod_{n=1 \atop {n \neq j}}^N {{x-x_n} \over
{x_j-x_n}}\end{displaymath}

Pj est donc un polynôme en x de degré N-1 qui peut s'écrire

\begin{displaymath}
P_j(x)=\sum_{k=1}^N {A_{j,k}x^{k-1}}\end{displaymath}

Montrer que la matrice (Aj,k)j,k est l'inverse de la matrice B. En conclure que pour tout $1 \leq j \leq N$

\begin{displaymath}
w_j=\sum_{k=1}^N {A_{j,k}q_k}.\end{displaymath}

Nous allons dans la suite mettre en place une méthode de résolution qui calcule les coefficients des polynômes Pj, donc qui calcule l'inverse de la matrice B. Pour calculer les coefficients de Pj on sera amené à calculer les coefficients de

\begin{displaymath}
N_j(x)= \prod_{n=1 \atop {n \neq j}}^N {x-x_n}\end{displaymath}

et aussi le dénominateur intervenant dans la formule qui définit Pj, c'est à dire le nombre Nj(xj).


Posons

P(x)=(x-x1)(x-x2)...(x-xN)

P(x) est donc un polynôme de degré N qui s'écrit sous la forme:

P(x)=xN+cNxN-1+...+c2x+c1

Montrons tout d'abord comment, si on connaît les coefficients cj, on peut calculer les coefficients du polynôme

\begin{displaymath}
N_j(x)= \prod_{n=1 \atop {n \neq j}}^N {x-x_n}\end{displaymath}

Pour cela posons

Nj(x)=bNxN-1+...+b2x+b1

Etablir que

\begin{displaymath}
\left\{
 \begin{array}
{c}
 b_N=1\\  b_{k-1}=c_k+x_jb_k 
 \end{array} \right. \end{displaymath}

Connaissant les coefficients de Nj il est alors facile de calculer le dénominateur Nj(xj) intervenant dans la définition de Pj.

En effet posons tN=bN=1 et définissons pour tout $k \leq N$

tk-1=xjtk+bk-1

Montrer que t1=Nj(xj).

Il reste maintenant à calculer les coefficients cj de P.

Pour tout entier k vérifiant $1 \leq k \leq N$ on définit

Qk(x)=(x-x1)(x-x2)...(x-xk)

et on écrit Qk sous la forme

\begin{displaymath}
Q_k(x)=x^k+\alpha _{k,k}x^{k-1}+\alpha _{k,k-1}x^{k-2}+...+\alpha
_{k,1}\end{displaymath}

Etablir que

\begin{displaymath}
\alpha _{1,1}=-x_1\end{displaymath}

et pour k=2,3,...,N

\begin{displaymath}
\alpha _{k,k}=\alpha _{k-1,k-1}-x_k\end{displaymath}

\begin{displaymath}
\alpha _{k,j}=\alpha _{k-1,j-1}-x_k\alpha _{k-1,j}~~~j=k-1,...,2\end{displaymath}

2.Programmation

On dispose d'un programme qui résout les systèmes du type que l'on vient d'étudier. Une procédure a été laissée en blanc, celle qui correspond au calcul des coefficients de P(x).

Le programme déclare une constante VraiDim qui est la dimension du système (le N des paragraphes précédents). Pour connaître la matrice B, il suffit de connaître (x1,x2,...,xVraidim) si bien qu'on définit un type

VDM_Mat=ARRAY[1..VraiDim] OF REAL;

De même le polynôme P devra être stocké en rangeant les coefficients c1,c2,...,cN dans un tableau. On définit donc un type

VDM_Poly=ARRAY[1..VraiDim] OF REAL;

Ecrire la procédure

PROCEDURE PolyNoyau(X:VDM_Mat;VAR Noyau:VDM_Poly);

qui étant donné une matrice de Vandermonde définie par les nombres

(x1,x2,...,xVraiDim)

rangés dans le tableau X (xj est rangé dans X[j]) fait ressortir dans la variable Noyau les coefficients c1,c2,...,cVraiDim (cj dans Noyau[j]) du polynôme P(x)=(x-x1)...(x-xVraiDim) écrit sous la forme

P(x)=xVraiDim+cVraiDimxVraiDim-1+...+c1.


\fbox {CORRIGE}



$\bullet$ Partie théorique

En effectuant le produit de la matrice A=(Aj,k)j,k par la matrice B on constate que

AB=(Pj(xk))j,k

ce qui prouve que A est l'inverse de B.

On peut alors écrire que W=AQ. On obtient ainsi les formules

\begin{displaymath}
w_j=\sum_{k=1}^N {A_{j,k}q_k}.\end{displaymath}


On vérifie immédiatement sur l'expression de Nj(x) que le coefficient du terme de plus haut degré est 1. En remarquant que P(x)=Nj(x)(x-xj) on établit la formule

bk-1=ck+xjbk.

Le calcul proposé alors pour Nj(xj) n'est autre que l'algorithme de Horner.


Il est facile de voir sur l'expression de Q1(x)=x-x1 que $\alpha_{1,1}=1$.

Les autres formules découlent de

Qk(x)=Qk-1(x)(x-xk).


$\bullet$ Programmation

PROCEDURE PolyNoyau(X:VDM_Mat;VAR Noyau:VDM_Poly);

VAR
  I,J    : INTEGER;
  Auxil  : REAL;

BEGIN
  Noyau[1]:=-X[1];
  FOR I:=2 TO VraiDim
    DO BEGIN
         Auxil:=-X[I];
         Noyau[I]:=Noyau[I-1]+Auxil;
         FOR J:=I-1 DOWNTO 2
           DO Noyau[J]:=Auxil*Noyau[J]+Noyau[J-1];
         Noyau[1]:=Auxil*Noyau[1];
       END;
END;


\fbox {COMMENTAIRES}


On peut voir que le nombre d'opérations à faire dans cet algorithme est en O(N2), la partie la plus coûteuse étant le calcul des coefficients ck.


next up previous
Suite: Systèmes de Toeplitz Sommaire: Algèbre Retour: Calcul de vecteurs propres
Jean-Louis Maltret
5/18/1998