139
Université d’Orléans U.F.R. Faculté des Sciences Licence de Physique Analyse numérique pour les sciences physiques Jean-Philippe Grivet, 2005

21124286 Analyse Numerique French

Embed Size (px)

Citation preview

Page 1: 21124286 Analyse Numerique French

Université d’Orléans U.F.R. Faculté des Sciences

Licence de Physique

Analyse numérique pour les sciences physiques

Jean-Philippe Grivet, 2005

Page 2: 21124286 Analyse Numerique French

Chapitre 1

Représentation graphique defonctions

L’une des activités les plus fréquentes en informatique scientifique consiste à représenter l’allured’une fonction à l’aide d’un dessin, et de très nombreux logiciels peuvent répondre à cette attentelégitime. On peut distinguer deux cas un peu différents en pratique : la fonction est définie par uneou des formules, ou elle est représentée par un tableau de valeurs. Si le premier cas ne présenteaucune difficulté, le deuxième demande que l’on sache faire lire un fichier de données par le logicielconsidéré, à moins de devoir entrer toutes les valeurs au clavier. J’explique la marche à suivre, pourquelques logiciels pratiques et faciles d’accès, dans les paragraphes qui suivent.

1.1 ScilabScilab est un logiciel gratuit, très puissant et disponible sur le site de l’INRIA. On peut l’utiliser

de façon interactive (comme une calculette) ou préparer, à l’aide d’un éditeur de texte (par exemplecelui qui est incorporé dans Scilab depuis la version 2.7), un programme que l’on fera exécuterensuite.

Supposons que je souhaite tracer une sinusoïde amortie, répondant à l’équation

y = exp(−αx) cos(βx),

pour α = 0.3, β = 2 et 0 ≤ x ≤ 10. Les instructions suivantes conviennent.

deff("y = f(x)", "y = exp(-alfa*x)*cos(beta*x)")alfa = 0.4; beta = 0.4;x = 0:0.1:10;fplot2d(x,f)

Le résultat apparaît sur la figure. Ce n’est pas ici le lieu de détailler la syntaxe de Scilab, qui esttrès bien expliquée dans l’aide en ligne, dans les manuels et sur divers sites (voir les références enfin de chapitre) ; je me contenterais de quelques indications. La première ligne définit une fonctionf laquelle dépend d’un seul argument, x ; y est une variable interne à la définition et ne joueaucun rôle dans la suite. Une définition de ce genre, dite «en-ligne», ne doit pas occuper plusd’une ligne ! Les points-virgules indiquent à Scilab qu’il ne doit pas afficher à l’écran les valeursqui viennent d’être définies. La troisième ligne initialise un vecteur, x, dont les coordonnées sontx1 = 0, x2 = 0.1, x3 = 0.2, . . . , x101 = 1. Vous pouvez constater qu’il se passe pas mal de choses«en douce» lors de l’appel de la fonction fplot. Chaque composante du vecteur x est substituéeà l’argument formel x de la «fonction externe» f, la valeur de la fonction est calculée et constitue

1

Page 3: 21124286 Analyse Numerique French

An_Num 2

Fig. 1.1 – Une sinusoïde amortie représentée par Scilab

0 1 2 3 4 5 6 7 8 9 10−0.8

−0.6

−0.4

−0.2

0

0.2

0.4

0.6

0.8

1.0

une composante d’un vecteur. Le programme interpole ensuite entre composantes successives pourproduire un tracé lisse.

Vous pouvez définir vous-même complètement la suite de points à représenter, comme ceci

alfa = 0.4; beta = 0.4;x = 0:0.1:10;y = exp(-alfa*x).*cos(beta*x);plot2d(x,y)

Ici, y est un vecteur que Scilab calcule composante par composante à partir des coordonnéesdu vecteur x. Faites bien attention à l’écriture «.*» (point étoile) qui réalise cette multiplicationcomposante par composante. Sans le point, y n’est que le produit scalaire (une seule valeur) desvecteurs exp(-alfa*x) et cos(beta*x).

Les fonctions fplot2d ou plot2d admettent de nombreux paramètres qui permettent de mo-difier le domaine de variation des coordonnées, la couleur et l’épaisseur des traits, etc. . .

Comment procéder pour tracer la courbe correspondant à un fichier de valeurs numériques ?C’est une opération très semblable à la précédente. Je suppose que le fichier D:/an_poly/ex112.dtacontient les données qui m’intéressent, à raison de trois par ligne, ces nombres étant séparés pardes espaces ou une tabulation :

1.0 -2.2 .831-6 123.456 -33.1415 2.718281828 -0.3183098

Je procède alors comme suit

M = read("D:/an_poly/ex112.dta", -1,3);plot2d(M(:,1),M(:,3),-3)

Scilab admet aussi bien les obliques que les contre-obliques dans les noms de fichiers. À la premièreligne, je lis le contenu du fichier et je range les valeurs dans la matrice M. La valeur -1 oblige Scilabà lire toutes les lignes de D:/an_poly/ex112.dta quelque soit leur nombre et le point-virgule estlà pour l’empêcher d’afficher ces valeurs à l’écran. Je représente ensuite graphiquement tous lesnombres de la troisième colonne de M (ordonnées) en fonction des valeurs correspondantes de lapremière colonne (abscisses). Sauf indication contraire, Scilab relie les points par de segments. Pourempêcher cela, j’ai indiqué un «style» de trait négatif (-3 ici) ; Scilab représente alors des pointsisolés à l’aide d’un symbole.

Pour imprimer, on utilise l’option «imprimer» du menu déroulant «fichier» dans la fenêtre quicontient le graphe.

Page 4: 21124286 Analyse Numerique French

An_Num 3

Fig. 1.2 – Représentation d’une série de valeurs sous Scilab

−7 −5 −3 −1 1 3 5−4

−3

−2

−1

0

1

2

1.2 MapleLe logiciel Maple est orienté vers le calcul algébrique ; il possède cependant des possibilités

graphiques extrêmement puisssantes, dont voici un tout petit aperçu. Le dialogue suivant permetde tracer une sinusoïde amortie.

> y := exp(-alpha*x)*cos(beta*x);

y := e(−α x) cos(β x)> y1 := subs(alpha = 0.3, beta = 4,y);

y1 := e(−.3 x) cos(4 x)> plot(y1,x = 0..10);

Fig. 1.3 – Tracé d’une sinusoïde amortie par Maple

–3

–2.5

–2

–1.5

–1

–0.5

0

0.5–6 –4 –2 2

J’aurais pu me contenter de l’instruction unique> plot( exp(-0.3*x)*cos(4*x),x = 0..10) ;

mais la version précédente me permet de définir une quantité y dépendant de deux paramètres dontje peux modifier la valeur aisément. Le symbole % signifie pour Maple «expression précédente»(c’est ¨ qui joue ce rôle pour la version V4).

Page 5: 21124286 Analyse Numerique French

An_Num 4

La lecture d’un tableau de valeurs externe se fait par l’instruction «readdata» qui admet deuxparamètres obligatoires, le nom du fichier et le nombre de colonnes. On peut aussi préciser s’ils’agit d’entiers ou de nombres fractionnaires. La manoeuvre est simple dans le cas d’un tableau àdeux colonnes, comme le montre l’exemple ci-dessous. J’ai créé le fichier dont le nom complet est\"D:\an_poly\ex122.dta\" et dont le contenu est

-2 -3.1-1.1 -.99

0 12.222 3.14154 5

Je trace le graphe correspondant à l’aide des instructions> M := readdata("C:/an_poly/ex122.dta",2);

M := [[−2., −3.1], [−1.1, −.99], [0., 1.], [2.222, 3.1415], [4., 5.]]> plot(M);

Fig. 1.4 – Tracé d’une suite de points par Maple

–2

2

4

–2 –1 1 2 3 4

Les nombres entiers ont été transformés en nombres fractionnaires. Remarquez aussi que lescontre-obliques du nom de fichier sont remplacées par des obliques sous Maple. Il est un peuplus compliqué d’extraire d’un fichier une colonne d’abscisses et une colonne d’ordonnées. Il fautprocéder comme ceci. Le fichier dont le nom DOS complet est D:\an_poly\ex123.dta contient lesvaleurs :

1.0 -2.2 .831-6 123.456 -33.1415 2.718281828 -0.3183098

Page 6: 21124286 Analyse Numerique French

An_Num 5

L’instruction > M := readdata("D:/an_poly/ex123.dta",3); lira ces données et produira lerésultat

M := [[1.0, -2.2, .831],[-6., 123.456, -3.],[3.1415, 2.718281828,-.3183098]]

Maple considère M comme une liste de listes, chaque liste représentant une ligne. Le code ci-dessousextrait les nombres de la première colonne (abscisses) et ceux de la troisième colonne(ordonnées),par exemple, puis reporte les points sur un graphique.

> restart;> with(plots):> M := readdata("C:/an_poly/ex112.dta",3);

M := [[1.0, −2.2, .831], [−16., 123.456, −3.], [3.1415, 2.718281828, −.3183098]]> points := [seq([M[i,1],M[i,3]],i=1..3)];

points := [[1.0, .831], [−16., −3.], [3.1415, −.3183098]]> plot(points,style=POINT,symbol=BOX, thickness=2,symbolsize=20);

Fig. 1.5 – Tracé d’une suite de points par Maple

–3

–2.5

–2

–1.5

–1

–0.5

0

0.5–6 –4 –2 2

1.3 gnuplotgnuplot est un autre logiciel gratuit et puissant, disponible pour tous les systèmes d’exploita-

tion ; il a l’avantage d’être assez peu encombrant. Il possède un analyseur syntactique qui connaîtla plupart des fonctions élémentaires. Il est très facile d’accomplir avec gnuplot les deux tâches quime servent d’exemples depuis le début. Pour tracer une fonction définie par une formule :

> alfa = 0.3; beta = 4;> plot [0:10] exp(-alfa*x)*cos(beta*x);

La fonction «plot» admet comme premier paramètre l’intervalle de variation de la variable indé-pendante, laquelle doit s’appeler x, par convention.

Pour afficher un fonction définie comme une suite de valeurs (x, y) :> plot [-2.5:0] [-3.5:1.5] "D:/an_poly/ex142.dta"

Ici encore, les obliques remplacent les contre-obliques de MS-DOS ; j’ai indiqué l’intervalle devariation pour x et pour y.

Page 7: 21124286 Analyse Numerique French

An_Num 6

Comme gnuplot possède de très nombreuses options, qu’il serait malcommode de préciser àchaque tracé, il est recommandé d’utiliser un fichier de commande. On peut pour cela créer, à lamain, un tracé simple puis sauvegarder toutes les options en cours dans un fichier par la commandesave <nom_de_fichier>. Ce fichier texte est lisible et modifiable dans n’importe quel éditeur ; onpeut donc, à loisir, ajouter ou modifier des paramètres. On exécute ensuite le fichier modifié parla commande load <nom_de_fichier>.

La méthode la plus directe pour imprimer sous Windows consiste à cliquer sur l’icone située enhaut à gauche du graphe, puis à choisir options/print.

1.4 ExcelTous les tableurs comportent des outils graphiques puissants. Dans le cas d’une fonction ana-

lytique, ; s’agissant d’un fichier de données, le seul obstacle mineur est la lecture du fichier. Dansle cas d’une version assez récente d’Excel, par exemple, on clique sur fichier/ouvrir, on indique quel’on s’intéresse à tous les types de fichiers, on choisit le bon fichier dans la liste déroulante et onl’ouvre. Il faut alors répondre aux questions simples de «l’assistant d’importation de textes» quiconcernent la disposition des données. Le fichier est ensuite importé dans Excel, ligne par ligneet colonne par colonne ; il faut parfois retoucher certaines lignes ou colonnes si la disposition desnombres est très irrégulière. Les logiciels comme Pascal ou C créent des fichiers de résultats où lesnombres fractionnaires sont écrits avec des points, alors que la version francisée d’Excel attend desvirgules. Il est facile, après sélection des cellules concernées, d’utiliser édition/remplacer/remplacertout pour corriger ces données. Pour le tracé, on appele «l’assistant graphique» et on répond à sesquestions.

1.5 Logiciels sous LinuxLes utiisateurs du système Linux ont à leur disposition de nombreux autres outils graphiques

gratuits. Je citerais la collection de programmes «Plotutils» (qui se lancent depuis la ligne decommande), la bibliothèque «pgplot» concue pour s’interfacer facilement avec des programmes enFortran et enfin le somptueux «xmgrace» interactif.

1.6 Liens utiles– Scilab :http ://scilabsoft.inria.fr/http ://www.iecn.u-nancy.fr/ pincon/http ://www.dma.ens.fr/ ldumas/aide.htmlwww.math-info.univ-paris5.fr/Enseignements/demarre_scilab/demarre_scilab.html

– Maple :http ://www.maplesoft.com/lumimath.univ-mrs.fr/ jlm/cours/maple/maple.htmlhttp ://algo.inria.fr/dumas/Maple/http ://perso.wanadoo.fr/eddie.saudrais/http ://www-math.math.rwth-aachen.de/MapleAnswers/

– gnuplot :http ://www.gnuplot.info/ftp ://ftp.irisa.fr/pub/gnuplot/

– Grace :http ://plasma-gate.weizmann.ac.il/Grace/

Page 8: 21124286 Analyse Numerique French

An_Num 7

– plotutils :www.gnu.org/software/plotutils/

– pgplot :http ://www.astro.caltech.edu/ tjp/pgplot/

– visualisation 3D http ://www.cmap.polytechnique.fr/ jouve/xd3d/– un site généraliste http ://ufrmeca.univ-lyon1.fr/formation/ISTIL/OutilsInfo/– une entrée dans le monde de Linux http ://sal.linet.gr.jp/index.shtml

Page 9: 21124286 Analyse Numerique French

Chapitre 2

Calcul de Fonctions

Sachant qu’un ordinateur ne connaît que les 4 opérations de l’arithmétique (addition, sous-traction, multiplication et division), comment doit-on s’y prendre pour calculer les valeurs de

√x,

cosx ou J3(x) ? On doit faire appel à un algorithme et il existe des algorithmes de calcul pourchaque fonction. Certains datant de l’antiquité (pour le calcul des racines carrées), d’autres n’ontque quelques années d’existence. L’utilisateur devrait donc, en principe, écrire un sous-programmepour calculer la ou les fonctions qui l’intéresse. Une partie du travail est déjà fait ; depuis quelquesannées, les microprocesseurs incorporent un opérateur mathématique capable de calculer vite etbien les fonctions élémentaires. Les compilateurs comportent également des sous-programmes decalcul de fonctions, plus ou moins nombreux selon le compilateur. Cependant, on rencontre sou-vent des «fonctions spéciales» telles que les fonctions de Bessel, les polynômes de Legendre ou lesfonctions elliptiques pour lesquelles il n’existe pas de programme immédiatement disponible. Onpeut alors rechercher le programme convenable dans les livres ou dans les bibliothèques (voir le«GAMS», Guide to available mathematical software) ou écrire un programme soi-même.

J’estime qu’il est extrêmement instructif et utile d’apprendre à programmer le calcul d’unefonction : on doit découvrir le «bon» algorithme, on apprend à se défier des erreurs d’arrondi oude troncation, enfin on s’entraîne à rédiger un programme correct. Dans tous les cas simples, lavérification du programme est immédiate, par comparaison avec le résultat fourni par le compilateurou la calculette.

Une catégorie de fonctions se calcule exactement en utilisant uniquement des opérations arith-métiques, ce sont les polynômes et les fractions rationnelles. Ils font l’objet du prochain paragraphe.

2.1 Polynômes et fractions rationnellesUn polynôme sous forme générale s’écrit

p(x) = a0 + a1x + a2x2 + · · ·+ an−1x

n−1 + anxn.

Les coefficients ak et la variable x sont supposés réels. S’il n’y a aucune difficulté pour calculer lavaleur numérique de p(x0), pour la valeur x = x0 de la variable, je peux me demander quelle estla façon la plus rapide de parvenir au résultat.

La méthode «naïve» consiste à calculer séparément la valeur de chaque puissance de x0, puisà multiplier chaque quantité xk

0 par le coefficient ak correspondant, puis à faire la somme desrésultats intermédiaires. Pour obtenir akxk

0 , je dois faire k multiplications (n ≥ k ≥ 1) et doncn(n + 1)/2 multiplications en tout ; il s’y ajoute n additions. L’algorithme naïf demande donc unnombre d’opérations qui varie comme n2 ; on dit qu’il présente une complexité d’ordre n2.

Un méthode plus économique est fondée sur la remarque que le calcul de xk0 peut se faire

simplement à partir de la valeur de xk−10 : xk

0 = x0 ?xk−10 . On calcule l’ensemble des xk

0 , k = 2 . . . n

8

Page 10: 21124286 Analyse Numerique French

An_Num 9

en n−1 multiplications et on garde en mémoire tous les résultats. Il faut ensuite multiplier chaquepuissance de x par le bon coefficient (n−1 opérations) et faire la somme. Vous vérifierez sans peineque le nombre total d’opérations varie comme 3n.

L’algorithme de Horner perfectionne le méthode précédente. Il est fondé sur le fait que lepolynôme peut s’écrire

p(x) = ((an ? x + an−1) + an−2) ? x + · · ·+ a1) ? x + a0.

Sous cette forme, le calcul de la valeur numérique nécessite n multiplications et n additions, soitune «complexité» d’ordre 2n. Comment programmer pratiquement ce calcul ? Le polynôme estreprésenté en mémoire par le vecteur de ses coefficients, a = [a0, a1, . . . , an]. Si le degré est élevé,il est fastidieux d’écrire en entier la formule précédente, il vaut mieux utiliser la récurrence

z0 = an ; zk = xzk−1 + an−k, k = 1, 2, . . . , n.

On peut faire ce calcul à la main, en utilisant une disposition comme ci-dessous ; il s’agit de calculerla valeur de x5 + 2x3 − 3x2 + 4x− 1 pour x = 2.

1 0 2 -3 4 -11 2 6 9 22 43

Le premier élément de la deuxième ligne est z0, il est égal à an ; le deuxième élément (z1) vaut2z0 + an−1 = 2z0 = 2, le troisième est z2 = 2z1 + an−2 = 2 ? 2 + 2 = 6. La valeur de polynôme est43. Vous voyez qu’il faut tenir compte des coefficients nuls.

Une fraction rationnelle est le quotient de deux polynômes ; il suffit de calculer comme précé-demment le numérateur et le dénominateur avant d’effectuer la division.

2.2 Relations de récurrenceCertaines fonctions utiles obéissent à des relations de récurrence, le plus souvent à trois termes.

La fonction cosinus en fournit un exemple élémentaire :

cos(k + 1)x = 2 cos kx cosx− cos(k − 1)x.

On peut utiliser cette relation, avec x «assez petit» pour établir rapidement une table des valeursde cos kx.

Exemple. Les polynômes de Legendre obéissent à la relation de récurrence suivante

(n + 1)Pn+1(x) = (2n + 1)xPn(x)− nPn−1(x)

qui permet un calcul rapide et précis de Pn(x) pourvu que l’on connaisse P0 = 1 et P1(x) = x. Lesdeux petits fichiers qui suivent permettent le calcul puis l’affichage de Pn sous Scilab.

Remarquez l’instruction pp = ones(x) qui crée un vecteur de la même taille que x et donttoutes les composantes sont égales à 1. Rappel : la construction «.*» permet de faire le produitcomposante par composante de deux vecteurs : si a = {ai} et b = {bi}, alors a. ∗ b = {aibi}.On effectuerait de façon analogue une division ou une élévation à la puissance. Ce type de calculest beaucoup plus rapide qu’une boucle for. La figure montre le résultat dans le cas n = 9.

Page 11: 21124286 Analyse Numerique French

An_Num 10

Listing 2.1 – polynôme de Legendre1 function y = poleg (n , x )2 //polynome de Legendre3 select n4 case 0 then pp = ones ( x ) ;5 case 1 then pp = x6 else7 pavder = ones ( x ) , pder = x ; i = 1 ;8 while i < n9 pp = ( (2∗n+1)∗x .∗ pder − n∗pavder

)/ ( n+1);10 pavder = pder ; pder = pp ;11 i = i + 1 ;12 end13 end14 y = pp ;15 endfunction

1 getf ( "C: \ an_poly\ l egendre . s c e " ) ;2 n = input ( " degre du polynome : " ) ;3 x = linspace (−1 ,1 ,200) ;4 y = poleg (n , x ) ;5 xset ( "window" ,0 ) ,xbasc (0 )6 plot2d (x , y )

2.3 Développement limitéLa grande majorité des fonctions que l’on rencontre en sciences physiques admet un dévelop-

pement en série ; il est donc tentant d’utiliser un développement en série tronqué (un polynôme)pour le calcul numérique d’une telle fonction.

Dans les paragraphes précédents, il n’y avait aucune approximation ; si les résultats n’étaientpas tout à fait exacts, cela était du aux «erreurs d’arrondi», sur lesquelles je reviendrai à la fin de cechapitre. L’utilisation d’un développement en série tronqué au terme de rang n fait apparaître uneautre source d’erreur, liée à la méthode utilisée elle-même : au lieu d’une série infinie, je manipuleun polynôme à n termes, commettent ainsi ce que l’on appelle une «erreur de troncation» (ouerreur de méthode). Cette erreur est souvent assez facile à borner, à condition de savoir que lavariable indépendante est contenue dans un intervalle défini.

Pour montrer les avantages et inconvénients de cette approche, je choisis l’exemple simple dela fonction e−x, que je voudrais approcher par son développement en série tronqué, avec uneerreur absolue inférieure au millième, sur l’intervalle [0,10]. Le terme général du développement estuk = (−1)k xk

k! . La série est absolument convergente quelque soit x, ce qui, malheureusement, n’estpas synonyme de rapidement convergente. Je peux estimer le nombre de termes nécessaires à partirdu rapport |uk+1/uk| = x/(k + 1). Ce rapport est plus grand que un (les termes de la série sontcroissants en valeur absolue) tant que k + 1 < |x|. Cela implique qu’au bord de l’intervalle choisi,il faudra bien plus de 10 termes pour approcher la fonction exponentielle. En fait, pour x = 10,j’ai trouvé v9 ' −2755, 7 et v10 ' 2755, 7. Plus ennuyeux encore, sachant que e3 ' 20, j’estime quee−10 ' 5 10−5. Ceci signifie que pour atteindre une précision absolue du millième, le premier termenégligé devra être inférieur à 5 10−8. Le premier terme qui réponde à ce critère est le 39ième ; ontrouve alors e−10 ' 0, 0000454. Il faut remarquer que chacun des 39 termes doit être calculé avecune précision absolue de 510−8, soit 12 (douze) chiffres significatifs pour les plus grands d’entre

Page 12: 21124286 Analyse Numerique French

An_Num 11

Fig. 2.1 – Le polynôme de Legendre d’ordre 9.

−1.0 −0.8 −0.6 −0.4 −0.2 0 0.2 0.4 0.6 0.8 1.0−1.0

−0.8

−0.6

−0.4

−0.2

0

0.2

0.4

0.6

0.8

1.0

eux, sous peine de perdre toute précision à cause des erreurs d’arrondi pendant l’addition de termesde signes différents. Cet exemple est certes caricatural ; en pratique, on s’arrangerait pour réduirel’intervalle de définition de x. Il montre cependant que le calcul à l’aide de développements tronquésdoit faire l’objet d’une attention certaine.

Sans me laisser abattre par les remarques précédentes, j’ai rédigé un programme de calcul dee−x sous Scilab, que je reproduis ci-dessous. Je calcule chaque terme à partir du précédent (ligne

Listing 2.2 – Développement limité de l’exponentielle1 //mon_exp , d e c r o i s s an t e .2 eps = 1E−8; kmax = 40 ;3 terme = 1 ; somme = 1 ; k = 1 ;4 x = input ( " va l eur de x : " ) ;5 while (k<kmax) & (abs ( terme ) > eps )6 terme = −x∗ terme/k ;7 somme = somme + terme ;8 [ r e s ] = [ k , terme , somme ] ;9 write(%io ( 2 ) , r e s ) ;10 k = k+1;11 end12 somme , exp(−x )

6), en évitant soigneusement de former des factorielles ou des puissances de x : ce serait beaucoupplus long et surtout les résultats intermédiaires déborderaient de la capacité de l’ordinateur. Leslignes (8,9) affichent, de façon plutôt malcommode, des résultats intermédiaires (il y a bien d’autresfaçon de faire).

2.4 Fraction continueL’objet mathématique représenté ci-dessous est une «fraction continue» :

f = b0 +a1

b1 + a2

b2 +a3

b3 +a4

b4 + · · ·

Page 13: 21124286 Analyse Numerique French

An_Num 12

Pour simplifier le travail des imprimeurs, j’écrirais plutôt

f = b0 +a1

b1+a2

b2+a3

b3+a4

b4+· · ·

Une expression de ce genre n’a d’intérêt que si les ai et les bi sont des constantes ou des fonctionssimples de x, comme dans la représentation de la fonction tangente :

tg x =x

1−x2

3−x2

5−x2

7− .

Cette expression converge rapidement et nécessite moins d’opérations que le développement en sérietronqué de la même fonction. Elle souffre cependant d’un inconvénient pratique sérieux : il n’y apas moyen de déterminer a priori le nombre de termes à conserver pour obtenir une précision fixéeà l’avance. Il existe en fait un algorithme itératif qui permet le calcul de f «de gauche à droite»à partir des ai et des bi et que l’on peut interrompre lorsque deux approximations successivesont suffisamment proches (algorithme de Clenshaw). Sans faire appel à ce perfectionnement, onpeut apprécier ce type d’approximation sur l’exemple de tg x ; si je tronque la fraction continueprécédente après le terme x2/9, j’obtient, après réduction au même dénominateur

tg x =x

15943− 105x2 + x4

63− 28x2 + x3.

Les premiers zéros de numérateur sont ±1,57080 et ceux du dénominateur ±3,153, ce qui est prochedes valeurs exactes.

En fait, une fonction comme tg x, avec ses asymptotes verticales, a un comportement très éloignéde celui d’un polynôme ; il sera donc malaisé de trouver un développement limité convenable.Au contraire, une fraction rationnelle peut présenter des branches asymptotiques et pourra plusfacilement approcher tg x.

2.5 Approximant de PadéD’après la remarque faite à la fin du paragraphe précédent, j’aurais intérêt, pour approcher

une fonction qui n’a pas un comportement polynômial, à essayer une fraction rationnelle. Si lathéorie générale de telles approximations existe, je ne la décrirais pas, mais je présenterais uncas particulier, connu sous le nom d’approximant de Padé. On peut décrire un approximant dePadé comme une fraction rationnelle qui obéit à des contraintes très semblables à celles d’undéveloppement en série.

2.5.1 définitionDans la suite, je considère une fraction rationnelle Rm,k, quotient d’un polynôme Pm (le nu-

mérateur), de degré m et de coefficients aj , 0 ≤ j ≤ m par un polynôme Qm (le dénominateur),de degré n et de coefficients bj , 0 ≤ j ≤ k. Comme je peux, sans changer la valeur de la fraction,diviser haut et bas par une même constante, j’impose, sans restreindre la généralité, la conditionb0 = 1. La fraction Rm,k contient donc m + k + 1 coefficients à déterminer.

Rm,k sera, par définition, l’approximant de Padé d’ordre n+1 de la fonction f(x), au voisinagedu point x = x0, si Rm,k(x0) et ses n premières dérivées coïncident respectivement avec f(x0) etses n premières dérivées :

[Rm,k(x)](p) ≡ f (p)(x0), p = 0, 1, 2 . . . , n.

en posant f (0) = f . Je peux toujours, à l’aide d’une translation, me ramener au cas x0 = 0, ce queje supposerai dans la suite. Comme je dispose de m + n + 1 coefficients inconnus, il me faut, pourdéterminer entièrement la fraction rationnelle, autant de conditions ; il faut donc que m + k = n.

Page 14: 21124286 Analyse Numerique French

An_Num 13

2.5.2 constructionIl est hors de question de calculer les dérivées successives de R et de f pour les identifier, ce

qui serait en général impossible ; plus simplement, je vais identifier les développements limités deces deux expressions, au voisinage de l’origine, jusqu’aux termes de rang n + k + 1 (ce qui assurel’égalité des dérivées). On peut économiser encore des calculs en imposant, ce qui revient au même,que le développement limité de la quantité R − f commence par un terme en xx+k+1. Je supposeque la fonction f admet un développement de MacLaurin

f(x) =∞∑

j=0

cjxj .

R− f s’écritPm(x)−Qk(x)f(x)

Qk(x).

Le développement limité de ce rapport est le quotient des développements du numérateur et dudénominateur ; ce dernier ne va pas intervenir pour les premières puissances de x, puisqu’il vaut 1près de l’origine. Le développement du numérateur doit commencer par le terme en xn+1, ce quirevient à dire que les coefficients des termes en x0, x1 · · ·xn sont tous nuls. J’en déduis les relations

a0 = b0c0 (x0),a1 = b0c1 + b1c0 (x1),

aj =s=j∑s=0

csbj−s (xj , j ≤ m).

Lorsque tous les coefficients aj disponibles ont été utilisés, je continue sans eux

0 =s=j∑s=0

csbj−s (xj , j = m + 1,m + 2 . . . , n).

Il est commode d’utiliser d’abord la dernière série d’équations, plus simples, pour déterminercertains des coefficients bi, puis la première série pour les coefficients restants.

On a constaté empiriquement que le choix m = k ± 1 était souvent meilleur que d’autres. Leraisonnement précédent ne permet pas d’estimer l’erreur d’approximation, mais, là encore, l’expé-rience montre que l’approximation selon Padé est très bonne.

2.5.3 ExempleJe cherche l’approximant de Padé R2,2 de ex au voisinage de l’origine. Ici, m = k = 2, n = 4 ; je

dois donc connaître, pour commencer, les 5 premiers termes du développement de l’exponentielle.Les coefficients correspondants sont

c0 = 1; c1 = 1; c2 =12; c3 =

16; c4 =

124

.

D’autre part, R2,2 s’écrit

R2,2(x) =a0 + a1x + a2x

2

1 + b1x + b2x2.

Je forme maintenant le numérateur de R−ex et j’identifie à zéro les coefficients de x20, x1, x2, x3, x4,

ce qui donne

a0 = 1; a1 = b1 + 1; a2 = b1 + b2 + 1/2;0 = b2 + b1/2 + 1/6; 0 = b1/6 + b2/2 + 1/24.

Page 15: 21124286 Analyse Numerique French

An_Num 14

Fig. 2.2 – Erreur d’approximation de ex par son développement limité (en noir) et par l’approxi-mant de Padé R2,2 (en bleu)

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0−10e−3

−9e−3

−8e−3

−7e−3

−6e−3

−5e−3

−4e−3

−3e−3

−2e−3

−1e−3

0

Je trouve, en résolvant ce système :

b1 = −1/2; b2 = 1/12; a0 = 1; a1 = 1/2; a2 = 1/12

et donc

R2,2 =12 + 6x + x2

12− 6x + x2=

(x + 6)x + 12(x− 6)x + 12

.

Le petit programme Scilab a produit le tracé suivant

1 x = linspace ( 0 , 1 , 1 0 0 ) ;2 p = 1+x+x.^2/2+x.^3/6+x .^4/24 ;3 r = ( ( x+6).∗x+12) ./( ( x−6).∗x+12);4 xset ( "window" ,0 ) ,xbasc (0 )5 xt i t le ( " approximations de exp (x ) " )6 plot2d ( x ’ , [ ( p−exp (x ) ) ’ , ( r−exp( x ) ) ’ ] ) ;

Vous constatez que pour x ' 1 l’approximant de Padé est presque trois fois plus précis que ledéveloppement de Taylor.

2.6 Approximation de fonctionJ’ai présenté, dans les paragraphes précédents, un certain nombre de recettes ou de procé-

dés destinés à fournir des approximations de fonctions, sans aucunement me soucier de rigueurmathématique. En réalité,l’approximation des fonctions est un domaine bien établi des mathéma-tiques, qui a connu un grand développement à partir de la fin du 19ème siècle. Dans les lignes quisuivent, je donne quelques idées générales sur l’approximation, considérée d’un point de vue plusmathématique.

Le problème se pose en ces termes. Je m’intéresse à une fonction f(x) de la variable réelle x. Soitje désire connaître ses valeurs en certains points, soit, plus ambitieux, je voudrais pouvoir calculerles valeurs numériques de sa dérivée ou de son intégrale sur un certain intervalle. Seulement voila, fest compliquée et longue à calculer et je n’ai pas le temps d’accumuler toutes les valeurs nécessairesde f . Je décide alors de remplacer f par une approximation f∗ qui se calcule facilement. Pour savoir

Page 16: 21124286 Analyse Numerique French

An_Num 15

si cette substitution peut avoir un sens, je dois répondre à plusieurs questions : dans quelle catégoriede fonctions vais-je choisir f∗ ? Selon quel critère vais-je m’assurer que l’approximation est «bonne»ou «mauvaise» ? Sur quel intervalle les propriétés précédentes doivent-elles être vérifiées ?

Je me limiterai ici au cas de l’approximation polynômiale, c’est-à-dire que f∗ sera un polynômede degré au plus égal à n (une combinaison linéaire de xk, k = 0, 1, 2, . . . , n). Le théorème suivant,dû à Weierstrass, affirme l’existence de f∗ sous des conditions assez générales.

Théorème. Si f(x) est continue sur l’intervalle fini I = [a, b] et si ε est unnombre positif donné, alors il existe un polynôme f∗(x) tel que

supx∈I

|f(x)− f∗(x)| < ε.

Remarquez que le théorème ne donne aucune indication sur la construction de f∗. Ici, la «distance»entre f et f∗ est la «norme infinie» ; on pourrait imaginer d’autre types d’approximation où ladéfinition de la «distance» serait différente ; on pourrait penser par exemple à l’écart quadratiquemoyen, qui est défini comme ‖ f − f∗ ‖= ∫

I|f − f∗|2dx.

Tschebychef et de la Vallée-Poussin ont prolongé les travaux de Weierstrass. Grâce à eux, onsait qu’un «bon» polynôme f∗ est tel que l’erreur d’approximation, |f − f∗|, présente une série demaximums assez régulièrement répartis sur I, d’amplitudes identiques et alternativement positifset négatifs. Ces polynômes étaient déterminés à l’époque par essais et erreurs, mais on disposemaintenant d’un algorithme puissant d’approximations successives (second algorithme de Remes).

2.7 Développement asymptotiqueLorsque la variable indépendante devient très grande, il devient évidemment désespéré d’ap-

procher une fonction par un développement construit au voisinage de 0 ; on peut bien sûr faire unetranslation d’origine pour chaque valeur particulière, mais cela complique notablement les calculs.Dans certains cas, on peut avoir recours à une approximation valable lorsque 1/x est petit, ce quel’on appelle un développement asymptotique et dont voici la définition.

2.7.1 définitionSoit la série infinie

c0 +c1

x+

c1

x2+ · · ·

J’appelle Sn la somme partielle des n premiers termes

Sn = c0 +c1

x+

c1

x2+ · · ·+ cn−1

xn−1.

Habituellement, on s’intéresse à la convergence de la série ou à la limite de la quantité Sn quandn tend vers l’infini. Ici, je procède différemment ; gardant n fixe, je fait croître x au delà de toutelimite. Je suppose qu’il existe une fonction f(x) telle que la différence |f(x) − Sn(x)| tende verszéro plus vite que 1

xn−1 quand x −→∞. En d’autres termes

limx−→∞

xn−1 |f(x)− Sn(x)| = 0.

Si ces conditions sont remplies, je dis que la série est un développement asymptotique de la fonctionf .

Page 17: 21124286 Analyse Numerique French

An_Num 16

2.7.2 ExempleJe considère la fonction définie pour x > 0 par l’intégrale

f(x) =∫ ∞

x

1tex−tdt

Des intégrations par partie répétées me permettent de transformer cette expression en

f(x) =1x− 1

x2+

2x3

+ · · ·+ (−1)n−1(n− 1)!xn

+ (−1)nn!∫ ∞

x

ex−t

tn+1dt.

Ceci me laisse supposer que la série

1x− 1

x2+

2!x3− 4!

x4· · ·

pourrait représenter le développement asymptotique de f . Pour le prouver, je forme

f(x)− Sn+1(x) = (−1)nn!∫ ∞

x

ex−t

tn+1dt.

Dans l’intégrale, l’exponentielle est comprise entre 0 et 1, d’où la majoration

|f(x)− Sn+1(x)| < n!∫ ∞

x

1tn+1

dt = (n− 1)!1xn

,

une quantité qui tend évidemment vers zéro lorsque x croit, à n constant. On écrit souvent∫ ∞

x

1tex−tdt ∼= 1

x− 1

x2+

2!x3− 4!

x4· · · .

2.8 Représentation des nombres en machineL’arithmétique des ordinateurs présente des propriétés plus compliquées qu’il n’y parait à pre-

mière vue. Ces complications sont dues à ce qu’un ordinateur (tout comme un humain) ne manipulequ’un nombre limité de chiffres ; il s’en suit que beaucoup de nombres concevables ne sont pas ousont mal représentés en machine. Les choses se présentent différemment pour les entiers et pourles nombres fractionnaires. Je commence par examiner les entiers.

2.8.1 Les nombres entiersJ’ai choisi, pour fixer les idées, le compilateur TurboPascal de Borland, mais des considérations

presque identiques s’appliquent à tous les compilateurs. TurboPascal définit cinq types d’entiers,dont je reproduit ci-dessous les caractéristiques

types entiers représentation intervalle de définition(nombre d’octets)

byte 1 0 :255shortint 1 -128 :127integer 2 -32768 :32767word 2 0 :65535longint 4 -2147483648 :2147483647

Page 18: 21124286 Analyse Numerique French

An_Num 17

Dans tous les cas, le chiffre binaire le plus à gauche (le plus significatif, de poids le plus grand)indique le signe : 0 pour les nombres positifs, 1 pour les entiers négatifs.

Ainsi, dans le type shortint, le plus grand nombre positif s’écrit 01111111 ; il vaut 26 + 25 +24 + 23 + 22 + 21 + 20 = 127. Les nombres négatifs sont représentés selon la méthode dite «ducomplément à deux», qui prescrit que, si x est négatif (et plus petit en valeur absolue que 27, sareprésentation, que je note (x), est x+28. La recette suivante permet de construire facilement (−x)à partir de (x) : changer tous les «1» en «0» et réciproquement, sauf pour le chiffre le plus à droite.Si x = 23, (x) = 00010111 et (−23) = 11101001. Vous pouvez vérifier, en appliquant les règlesde l’arithmétique binaire, que (23)+(23) = 100000000 ; la dernière retenue est perdue, puisque lesnombres n’ont que 8 chiffres.

L’ordinateur ne prévient pas lorsque le résultat d’une addition entre entiers est trop grand.On a par exemple (127)+ (3) = 01111111 + 00000011 = 10000010 = (-124). Cette représentationfonctionne un peu comme un compteur kilométrique de voiture qui après avoir atteint 99999 repartde zéro.

La conséquence pratique est que l’amplitude des entiers est très limitée (sauf pour longint). Unpiège classique dans lequel chacun se fait prendre au moins une fois est le calcul de la factorielle.Avec le type int, 7 ! est calculé correctement, 8 ! est trouvé négatif. Le problème ne se pose pas avecScilab qui ne connaît que des nombres fractionnaires, ni avec Maple, qui peut manipuler autant dechiffres que la mémoire de l’ordinateur le permet.

2.8.2 Nombres fractionnairesLes nombres décimaux (on dit aussi fractionnaires, flottants, à virgule flottante) sont représen-

tés par une partie fractionnaire et un exposant, comme par exemple 23 −→ 0,23E2. Le nombreprécédent peut aussi bien s’écrire 23E0 ou 0,023E3. Pour éviter ces ambiguïtés, on invoque uneconvention de normalisation : la partie fractionnaire devra être comprise entre 0 et 1 par exemple.

Les nombres décimaux définis en Pascal peuvent appartenir à l’un des 4 types ci-dessous.

type nb équivalent intervalle de définition taille (octets)de chiffres décimaux

real 11-12 2,910−39 :1.71038 6single 7-8 1,510−45 :3.41038 4double 15-16 510−324 :1.710308 8

extended 19-20 1.910−4551 :1.1 104932 10

Il est clair que l’intervalle de définition (ou le nombre de chiffres significatifs) dépend du nombrede chiffres binaires affectés respectivement à la représentation de la partie fractionnaire et del’exposant. Les 32 chiffres du type single sont répartis ainsi : 1(signe)+ 8 (exposant) + 23(partiefractionnaire). Sous Scilab, les nombres sont uniformément du type double. C et C++ calculetoutes les fonctions élémentaires en double précision.

Les nombres compris entre 0 et la borne inférieure de l’intervalle de définition, de même queceux plus grands que la borne supérieure, ne pourront pas être représentés. Tout calcul produi-sant un nombre répondant à l’une de ces conditions provoquera en principe un message d’erreur ;en fait, les nombres trop petits sont pris égaux à zéro, ce qui peut être sans conséquence ; lesnombres trop grands interrompent l’exécution du programme et l’apparition du message d’erreurarithmetic overflow.

Même si un nombre a une taille correcte, son calcul est souvent souvent entaché d’une erreurd’arrondi. Je suppose que j’utilise un ordinateur fictif fonctionnant en numération décimale. Jeforme 27/13,1 = 2,06106870229..., un nombre fractionnaire dont la représentation décimale ne setermine jamais et que l’unité centrale calcule avec 20 chiffres significatifs. Si j’ai déclaré que lavariable correspondante était du type «single», lorsque l’ordinateur range cette valeur en mémoire,il le fait selon la norme du type, soit avec 7 chiffres. Sur certaines machines on conserve la valeur

Page 19: 21124286 Analyse Numerique French

An_Num 18

2,061068 (troncation), sur d’autres, on retient 2,061069 (arrondi). L’erreur est ici minime (inférieureà 10−7en valeur absolue), mais il faut être conscient qu’elle peut se répéter des milliards de fois aucours d’un calcul. Heureusement, le signe de chaque erreur est pratiquement aléatoire, si bien quecelles-ci ne s’ajoutent pas de façon cohérente.

L’erreur relative devient importante lorsque l’on forme la différence de deux nombres voisins. Onne remarque rien en général, sauf si, par hasard, ce premier résultat est immédiatement multipliépar un nombre très grand.

Je remarque enfin que l’utilisation, en Pascal, des types single et real, correspond à uneéconomie de mémoire, mais à une perte de temps. Il en est de même pour le type float en C. Eneffet, l’unité centrale calcule avec une très grande précision (80 chiffres binaires pour les Pentiums) ;les résultats sont ensuite mis aux normes avant d’être rangés en mémoire et cette transformationprend du temps (une fraction de microseconde). Du point de vue de la vitesse d’exécution, il vautmieux travailler avec le type double, qui est très proche du format utilisé par l’unité centrale.

2.9 pour en savoir plus– FAQ du forum sci.math.num-analysis :http ://www.mathcom.com/corpdir/techinfo.mdir/scifaq/index.html

– GAMS : http ://gams.nist.org– histoire des mathématiques, définitions :http ://www.sciences-en-ligne.com/momo/chronomath/accueil.htm

– histoire des approximations :http ://www.math.technion.ac.il/hat/papers.html

– : page d’un spécialiste pour des spécialistes : http ://perso.ens-lyon.fr/jean-michel.muller/french-index.html

– erreurs d’arrondi (ou autres) catastrophiques http ://www5.in.tum.de/ huckle/bugse.html

Page 20: 21124286 Analyse Numerique French

Chapitre 3

L’interpolation

3.1 IntroductionDans le chapitre 1, j’ai montré plusieurs méthodes d’approximation d’une fonction. L’interpo-

lation, qui fait l’objet de ce chapitre, poursuit le même but que l’approximation : remplacer unefonction difficile à calculer par une expression plus simple pour, par exemple, pouvoir la calculernumériquement vite et souvent, ou pour évaluer sa dérivée ou son intégrale. Le cadre mathéma-tique est aussi assez semblable. Je m’intéresse à une fonction réelle continue f(x) que je vais encoreremplacer par une fonction plus simple f∗(x). La différence réside dans la manière d’imposer la«proximité» de f(x) et de son «substitut» f∗(x). Je vais demander que f(x) ≡ f∗(x) pour un cer-tain nombre de valeurs de la variable indépendante x. On imposait que l’approximant reste dansune bande de largeur 2ε entourant la fonction ; on impose maintenant que l’interpolant coïncideavec la fonction pour certaines valeurs de la variable indépendante. On peut ainsi comprendre leterme «d’approximation exacte» autrefois employé pour désigner l’interpolation.

Dans un passé lointain, alors qu’il n’existait pas d’ordinateur, le calcul d’une fonction compli-quée était laborieux. On dressait une table de la fonction pour quelques valeurs de l’argument puison interpolait entre ces valeurs. De nos jours, cet usage de l’interpolation a beaucoup régressé, maisl’interpolation reste un outil théorique important. D’autre part, on a souvent besoin des valeursde grandeurs physiques comme la densité, la conductivité électrique ou des chaleurs de réaction,qui, à leur tour, dépendent de la pression, de la température ou des concentrations. Ces grandeursfigurent dans des tables, mais seulement pour quelques valeurs des paramètres. Là encore, on estamené à interpoler pour déterminer les valeurs intéressantes.

L’échelle internationale de température constitue un bon exemple physique d’interpolation. Latempérature légale est la température thermodynamique, associée à un unique point fixe, le pointtriple de l’eau à 273,15 K ; elle se mesure à l’aide d’un thermomètre à gaz à volume constant ou d’unthermomètre à rayonnement. Ces deux instruments sont malcommodes et impliquent des manipu-lations longues et compliquées. Aussi, on a choisi une série de «points fixes secondaires» (pointsd’ébullition de l’hydrogène, de l’eau, point de fusion du zinc par exemple) dont les températures ontété mesurées très précisément une fois pour toutes. On a choisi aussi quelques thermomètres «pra-tiques», comme le thermomètre à résistance de platine. Une fois mesurée la résistance de la sondepour chaque point fixe, la valeur d’une température intermédiaire est obtenue par interpolation.

3.2 DéfinitionJ’aborde maintenant le formalisme. Étant donnée une fonction y = f(x) et une fonction

f∗(x; a0, a1, . . . , an) dépendant de x et de n + 1 paramètres a0, a1, . . . , an, le problème d’inter-

19

Page 21: 21124286 Analyse Numerique French

An_Num 20

polation consiste à déterminer les ak de telle manière que les n + 1 équations

f(xk) = f∗(xk; a0, a1, . . . , an), k = 0, 1, 2, . . . , n (3.1)

soient vérifiées. Dans la suite, j’utiliserai indifféremment les notations f(xk) = fk = yk ; chaquecouple de valeurs xk, yk définit un point du plan que l’on appelle un pivot ou un noeud.

Il me faut ensuite décider à quelle classe de fonctions appartient f∗ ; le critère le plus importantest la façon dont interviennent les paramètres ak. On distingue les cas où f∗ dépend linéairementdes ak de tous les autres ; l’interpolation polynômiale

f∗ = a0 + a1x + a2x2 + · · ·+ anxn

et l’interpolation trigonométrique

f∗ = a0 + a1eix + a2e

2ix + · · ·+ aneinx

relèvent de ce cas. Par contre, l’interpolation rationnelle

f∗(x; a0, a1, . . . , am, b0, b1 . . . , bn) =a0 + a1x + a2x

2 + · · ·+ amxm

b0 + b1x + · · ·+ bnxn

(qui par ailleurs fait appel à m + n + 2 coefficients) dépend non-linéairement des bk. Bien quel’interpolation rationnelle soit parfois utilisée, je me limiterai ici à l’interpolation polynômiale quin’implique que des calculs simples. Les formes trigonométriques seront abordées plus tard.

Vous remarquez qu’à la différence de l’approximation, il ne parait pas urgent de définir unintervalle dans lequel l’interpolation est valable ; en réalité, cette définition est implicite. Si xmin

est les plus petit des xi et xmax le plus grand, je parle d’interpolation lorsque xmin ≤ x ≤xmax ; je montrerai comment estimer l’erreur correspondante. Si, au contraire, je m’intéresse àune valeur de x extérieure à l’intervalle [xmin, xmax], je pratique une «extrapolation» ; l’examende quelques exemples vous montrerait que l’erreur d’extrapolation peut devenir très grande dèsque l’on s’éloigne des pivots. En pratique donc, l’interpolation ne concerne que les valeurs de xcomprises entre la plus petite et la plus grande abscisse des pivots.

3.3 Méthode des coefficients indéterminésLa méthode la plus directe pour trouver les coefficients inconnus ak consiste à identifier, sur

chaque pivot, fonction et polynôme d’interpolation. Je montre le principe de la méthode surl’exemple de deux pivots. La fonction f est connue numériquement en deux points, ce qui définit lesdeux pivots x0, f0, x1, f1. La fonction d’interpolation, que je note maintenant p(x), puisqu’il s’agitd’un polynôme, dépend linéairement de deux paramètres inconnus et s’écrit p = a0 + a1x. Géomé-triquement, p(x) représente le droite qui passe par les deux pivots. Les conditions d’interpolationsont alors {

a0 + a1x0 = f0

a0 + a1x1 = f1

Je dois donc, pour déterminer les {ai}, résoudre un système de deux équations linéaires à deuxinconnues ; la solution est immédiate :

a1 =f0 − f1

x0 − x1; a0 =

x0f1 − x1f0

x0 − x1.

Ce procédé s’étend sans difficulté au cas d’une fonction du second degré, définie par trois paramètresinconnus ; la courbe représentative de p(x) est une parabole que l’on oblige à passer par trois pivots.En principe, je peux même considérer le cas d’une fonction d’interpolation polynômiale de degré

Page 22: 21124286 Analyse Numerique French

An_Num 21

n, dépendant de n + 1 constantes inconnues. Celles-ci seront déterminées en imposant que f et f∗

coïncident sur n + 1 noeuds :

a0 + a1x0 + a2x20 + · · ·+ anxn

0 = y0,a0 + a1x1 + a2x

21 + · · ·+ anxn

1 = y1,a0 + a1x2 + a2x

22 + · · ·+ anxn

2 = y2,· · · = · · ·a0 + a1xn + a2x

2n + · · ·+ anxn

n = yn.

(3.2)

Il apparaît ici encore un système d’équations linéaires dont les inconnues sont les n + 1 nombresai et dont le déterminant s’écrit

∆ =

∣∣∣∣∣∣∣∣∣∣

x00 x1

0 x20 · · · xn

0

x01 x1

1 x21 · · · xn

1

x02 x1

2 x22 · · · xn

2

· · · · · · · · · · · · · · ·x0

n x1n x2

n · · · xnn

∣∣∣∣∣∣∣∣∣∣

. (3.3)

∆, que l’on appelle un déterminant de van der Monde, s’annule chaque fois que la conditionxi = xj , i 6= j est remplie ; le développement de ce déterminant contient donc le facteur xi − xj .En répétant ce raisonnement pour tous les couples possibles de pivots, je montre facilement que

∆ =∏

i<j

(xi − xj).

Je déduis de ce résultat que ∆ est non nul, et donc que le système admet une solution unique, siet seulement si les pivots ont des abscisses strictement distinctes. Je ne fait pas d’autre hypothèsesur les pivots ; en particulier, ceux-ci peuvent être rangés dans un ordre arbitraire.

Je dispose maintenant d’une méthode pour construire le polynôme d’interpolation ; si j’ai prissoin de choisir des pivots différents, ce polynôme est unique. Dans la pratique, la méthode descoefficients indéterminés est, en fait, rarement utilisée, car on connaît des algorithmes plus stableset/ou plus rapides. Ces algorithmes, inventés par des mathématiciens célèbres des siècles passés,prennent des forment très différentes et produisent des résultats apparemment dissemblables. Enréalité, ils aboutissent tous à former l’unique polynôme d’interpolation à partir des pivots dispo-nibles. La première méthode que je présenterai est due à Lagrange.

3.4 Le polynôme d’interpolation de LagrangeDans cette méthode, je fait l’hypothèse (à vérifier) que le polynôme d’interpolation peut s’écrire,

pour n + 1 pivots xi, f(xi)

p(x) =n∑

i=0

Li(x)f(xi). (3.4)

Chaque polynôme élémentaire de Lagrange Li(x) est de degré n et, par conséquent, p est unpolynôme de degré au plus égal à n. Vous voyez que le problème d’interpolation sera résolu si jepeux former des Li répondant aux conditions

Li(xk) = δi,k, i, k = 0, 1, 2, . . . , n. (3.5)

δi,k est le symbole de Kronecker, qui vaut 1 lorsque ses deux indices sont égaux et qui vaut 0 danstous les autres cas. Si, par exemple, x = x2, alors L0(x2) = L1(x2) = L3(x2) = · · · = Ln(x2) = 0tandis que L2(x2) = 1. Des n+1 termes de p ne subsiste que f2. Ainsi, pour le pivot x2, le polynômed’interpolation coïncide avec la fonction et il en serait de même pour tout autre noeud.

Page 23: 21124286 Analyse Numerique French

An_Num 22

Fig. 3.1 – interpolation polynômiale de Lagrange

−2 −1 0 1 2 3−5

−3

−1

1

3

5

7

9

11

−2 −1 0 1 2 3−5

−3

−1

1

3

5

7

9

11

−2 −1 0 1 2 3−5

−3

−1

1

3

5

7

9

11

−2 −1 0 1 2 3−5

−3

−1

1

3

5

7

9

11

Le polynôme élémentaire Li s’annule pour tous les pivots sauf xi ; il est donc proportionnel aupolynôme q(x) = (x−x0)(x−x1) · · · (x−xi−1)(x−xi+1) · · · (x−xn). La constante de proportion-nalité s’obtient en formant q(xi) = (xi−x0)(xi−x1) · · · (xi−xi−1)(xi−xi+1) · · · (xi−xn) : Li estégal au polynôme normalisé q(x)/q(xi). Le polynôme d’interpolation de Lagrange est maintenantentièrement déterminé ; il s’écrit

p(x) =n∑

i=0

Li(x)fi =n∑

i=0

fi

k=0,k 6=i

x− xk

xi − xk. (3.6)

Le calcul numérique de p(x) se programme aisément à l’aide de deux boucles imbriquées ; il estbien plus rapide que la résolution du système linéaire du paragraphe précédent. Le fragment deprogramme ci-dessous réalise ce calcul. Les deux premières instructions créent deux vecteurs de

Listing 3.1 – construction du polynôme de Lagrange1 x = linspace ( xmin , xmax , npts ) ;2 p l = zeros (1 , npts ) ;3 for i = 1 :44 L( i , 1 : npts ) = ones (1 , npts ) ;5 for k = 1 :46 i f k <> i7 L( i , : ) = L( i , : ) . ∗ ( x−xp (k ) ) / ( xp ( i )−xp (k ) ) ;8 end9 end10 L( i , : ) = L( i , : ) ∗ fn ( xp ( i ) ) ;11 p l = pl + L( i , : ) ;12 end

zéros, qui vont recevoir respectivement les abscisses et les valeurs successives du polynôme d’in-terpolation. À partir de la ligne 3, je remplis la ligne i de la matrice L par des 1. Le gros ducalcul est fait ligne 7, où je calcule, à l’aide d’une itération, les valeurs du polynôme élémentaireLi, pour toutes les abscisses simultanément. La figure montre le résultat. J’ai représenté chacunedes quantités Li(x)f(xi), ainsi que leur somme p(x). Vous pouvez vérifier que les Li(x)f(xi) passepar un pivot et un seul, alors que p(x) passe par tous les noeuds. Cependant, il serait pénible dedévelopper le polynôme de Lagrange et de regrouper les termes pour le mettre sous la forme d’une

Page 24: 21124286 Analyse Numerique French

An_Num 23

somme ordonnée selon les puissances de x. Si l’on souhaite vraiment obtenir cette forme, il vautmieux utiliser un algorithme du à Newton, la méthode des différences divisées.

3.5 le polynôme de Newton

3.5.1 Interpolation linéaireIl est commode de revenir à l’interpolation linéaire. Lorsque je dis que la fonction f(x) est bien

représentée par une interpolation linéaire dans un certain intervalle, cela signifie que le rapport

f(x1)− f(x0)x1 − x0

(la pente moyenne de la courbe représentative) est à peu près indépendant de x0 et x1 dans cetintervalle. Ce rapport s’appelle la différence divisée du premier ordre, relative à x0 et x1, et se notegénéralement

f [x0, x1] ≡ f(x1)− f(x0)x1 − x0

. (3.7)

Remarquez que f [x0, x1] = f [x1, x0]. Je peux aussi écrire la relation approchée

f [x0, x] ∼= f [x0, x1] (3.8)

ou encoref(x) ∼= f(x0) + (x− x0)f [x0, x1]. (3.9)

Vous reconnaissez, au second membre, le polynôme du premier degré qui interpole f sur les pivots(x0, x1), une expression que je noterai p0,1 dans la suite. Il est commode d’introduire les notations

p0(x) ≡ f [x0] ≡ f(x0), (3.10)

si bien que f [x0] est la différence divisée d’ordre zéro et p0(x) est le polynôme d’interpolation dedegré zéro qui coïncide avec f en x0. La formule (3.9) prend alors une forme qu’il sera facile degénéraliser plus tard :

p0,1 = f [x0] + (x− x0)f [x0, x1]. (3.11)

À moins que la fonction f ne soit réellement linéaire en x, la pente de la sécante f [x0, x1] vadépendre des abscisses x0 et x1. Si f est du second degré en x, la pente de la sécante joignant lespoints d’abscisses x0 et x est elle-même une fonction linéaire de x, à x1 constant. Je m’attend doncà ce que la quantité

f [x1, x2]− f [x0, x1]x2 − x0

soit indépendante des trois arguments ; dans le cas général, on appelle ce rapport la différencedivisée d’ordre 2 relative aux abscisses x0, x1, x2 et on le note f [x0, x1, x2]. Cette expression estencore symétrique par rapport à tous ses arguments. Je peux alors écrire la relation (3.8)

f [x0, x]− f [x0, x1] = f [x0, x]− f [x1, x0] = (x− x1)f [x0, x1, x]

d’où je déduis la relation exacte qui remplace (3.11)

f(x) = f(x0) + (x− x0)f [x0, x1] + (x− x0)(x− x1)f [x0, x1, x].

Telle quelle, cette formule est peu utile, car connaître f [x0, x1, x] revient à connaître f(x), ce queje cherche justement à éviter. Mais l’erreur E(x) commise en remplaçant f(x) par p0,1 est donnéepar

f − p0,1 = (x− x0)(x− x1)f [x0, x1, x],

un résultat que je généraliserais plus tard.

Page 25: 21124286 Analyse Numerique French

An_Num 24

3.5.2 Les différences diviséesLes différences divisées d’ordres 0, 1, 2, . . . , k sont définies par les relations de récurrence

f [x0] = f(x0) f [x0, x1] =f [x1]− f [x0]

x1 − x0f [x0, . . . , xk] =

f [x1, . . . , xk]− f [x0, . . . , xk−1]xk − x0

(3.12)Dans chaque numérateur, les k−1 premiers arguments du premier terme sont identiques aux k−1derniers arguments du deuxième terme et le dénominateur est la différence entre les arguments quidiffèrent d’un terme à l’autre. Il est possible de démontrer par récurrence que f [x0, . . . , xk] est unefonction totalement symétrique de ses k+1 arguments ; l’ordre de ceux-ci est donc indifférent. J’endéduis que f [x0, x1, . . . , xk] peut s’exprimer comme le quotient de la différence de deux différencesdivisées d’ordre k − 1 (ayant k − 1 arguments en commun) par la différence entre argumentsdifférents :

f [x0, x1, x2, x3] =f [x0, x1, x2]− f [x1, x2, x3]

x0 − x3=

f [x0, x2, x3]− f [x1, x2, x3]x0 − x1

.

Jusqu’à présent, j’ai fait semblant d’ignorer la possibilité que deux abscisses puissent être égales ;si cela se produit, on peut donner un sens à la différence divisée par passage à la limite :

limx→0

f [x + h, x] = limf(x + h)− f(x)

h= f ′(x).

3.5.3 La formule de NewtonD’après la définition (3.12), je peux écrire, en remplaçant à chaque fois un des xi par x

f(x) = f [x0] + (x− x0)f [x0, x],f [x0, x] = f [x0, x1] + (x− x1)f [x0, x1, x],

· · · = · · ·f [x0, . . . , xn−1, x] = f [x0, . . . , xn] + (x− xn)f [x0, . . . , xn, x].

En substituant la première équation dans la seconde, j’obtiens l’expression déjà vue

f(x) = f [x0] + (x− x0)f [x0, x1] + (x− x0)(x− x1)f [x0, x1, x]

Par des substitutions successives, j’arrive finalement à

f(x) = f [x0] + (x− x0)f [x0, x1] + (x− x0)(x− x1)f [x0, x1, x2]+ (x− x0)(x− x1) · · · (x− xn−1)f [x0, x1, . . . , xn]+ (x− x0)(x− x1) · · · (x− xn)f [x0, x1, . . . , x].

(3.13)

Je passe de cette expression «formelle» (que je ne peux pas utiliser puisque j’ignore le dernierterme) à la formule d’interpolation de Newton en négligeant le terme inconnu :

p0,1,2...,n = f [x0] + (x− x0)f [x0, x1] + (x− x0)(x− x1)f [x0, x1, x2]+ (x− x0)(x− x1) · · · (x− xn−1)f [x0, x1, . . . , xn] (3.14)

L’erreur commise en remplaçant f par p vaut

E(x) = (x− x0)(x− x1) · · · (x− xn)f [x0, x1, . . . , x].

Je donnerai plus tard une forme plus pratique de cette erreur.

Page 26: 21124286 Analyse Numerique French

An_Num 25

3.5.4 exempleVoici un exemple de calcul de différences divisées. J’utilise les mêmes données qu’au paragraphe

précédent ; bien que cela ne soit pas nécessaire, j’ai rangé les abscisses par ordre croissant, ce quirend la suite de opérations plus facile à suivre. Les pivots sont numérotés implicitement de 0 à 3.

ordre : 0 1 2 3−1 0, 367879

1, 2808421, 5 0, 853895

0, 5 1, 648721 1, 9790732, 83297 2, 5 0, 791629

1 2, 83297 1, 1962151, 5 4, 481689 2, 981766 3 0, 398738

2, 907367 1, 5 1, 9878440, 5 5, 814734

2 7, 389056

La première colonne contient les valeurs de x, la deuxième celles de f , qui sont identiques auxdifférences divisées d’ordre zéro. Je donne dans la colonne suivante les valeurs des quantités xi−xj

et fi−fj , dont le quotient fournit la différence divisée d’ordre 1, reportée dans la colonne numérotée1. Le calcul se poursuit sans difficulté jusqu’à la différence divisée d’ordre 3, la dernière que je puissecalculer avec les données dont je dispose.

Le polynôme de Newton d’ordre 3 s’écrit alors

p0,1,2,3 = 0, 367879+(x−0, 5)0, 853895+(x−0, 5)(x−1, 5)0, 791629+(x−0, 5)(x−1, 5)(x−2)0, 398738.

Listing 3.2 – construction du polynôme de Newton1 // d i f f e r e n c e s d i v i s e e s de Newton2 // c r ea t i on d ’ une s e r i e de va l e u r s3 x = [ 0 . 5 , −1.0 , 2 . 0 , 1 . 5 ] ;4 y = exp( x ) ;5 n e f f = input ( " ordre de l i n t e r p o l a t i o n (<= 3 : " ) ;6 // c a l c u l des d i f f e r e n c e s7 for i = 1 : n e f f+18 t ( i ) = y ( i ) ;9 for j = i −1:−1:110 t ( j ) = ( t ( j +1) − t ( j ) ) / ( x ( i ) − x ( j ) ) ;11 end12 a ( i ) = t ( 1 ) ;13 end14 a15 z = input ( " va l eur de l argument : " ) ;16 // c a l c u l du polynome17 pol = a ( n e f f +1);18 z = linspace (−2 ,3) ;19 for i = n e f f :−1:120 pol = pol . ∗ ( z−x ( i ))+a ( i ) ;21 end22 r e c t = [ −3 ,4 , 0 , 10 ] ;23 plot2d ( z ’ , [ po l ’ ,exp( z ) ’ ] )

Sa forme, très semblable à celle de Horner, rend le calcul facile pour toute valeur de x. Lelisting ci-dessus montre un programme Scilab qui accomplit la même tâche. La figure illustre le

Page 27: 21124286 Analyse Numerique French

An_Num 26

Fig. 3.2 – interpolation par la méthode de Newton

−2 −1 0 1 2 3−5

−3

−1

1

3

5

7

9

11

−2 −1 0 1 2 3−5

−3

−1

1

3

5

7

9

11

−2 −1 0 1 2 3−5

−3

−1

1

3

5

7

9

11

résultat ; comme le polynôme d’interpolation est unique, le résultat final est indiscernable de celuidu paragraphe précédent.

3.6 Erreur d’interpolationJe cherche à majorer l’erreur commise en remplaçant la fonction f(x) par le polynôme de degré

n p(x), lequel satisfait aux n + 1 conditions d’interpolation

p(xi) = f(xi) ≡ fi, i = 0, 1, 2 . . . , n.

Je définis tout d’abord le polynôme pi(x) de degré n + 1 :

π(x) ≡ (x− x0)(x− x1) · · · (x− xn) =n∏0

(x− xi)

puis la fonction auxiliaireF (x) ≡ f(x)− p(x)−Kπ(x),

où K est une constante. Il est possible de choisir la constante K de telle manière que F (X) = 0, Xétant un point quelconque de l’axe réel. J’appelle I le plus petit intervalle contenant X et tous lesxi. Alors la fonction F admet n+2 zéros sur I. En effet, f−p = 0 lorsque x = xi et, simultanément,π(xi) = 0. De plus, F s’annulle en X.

Le théorème de Rolle appliqué à la fonction F me permet d’affirmer que la fonction F ′(x)présente au moins n + 1 zéros sur ce même intervalle ; en appliquant ce même théorème auxdérivées successives de F , je démontre que F ′′ admet au moins n zéros dans I, que F (3) en admetau moins n− 1 et finalement que F (n+1) s’annule au moins une fois dans I, à condition que cettedérivée existe ; j’appelle ξ ce point. La dérivée d’ordre n + 1 de F se calcule aisément ; p(n+1) = 0puisque p est de degré n. Le terme de degré le plus élevé de π est xn+1, si bien que la dérivéecherchée est π(n+1) = (n + 1)!. Je déduis que

F (n+1)(ξ) = f (n+1)(ξ)−K(n + 1)! = 0

ou encore que

K =f (n+1)(ξ)(n + 1)!

Page 28: 21124286 Analyse Numerique French

An_Num 27

Fig. 3.3 – interpolation de la fonction de Lorentz

−5 −4 −3 −2 −1 0 1 2 3 4 5−0.5

−0.3

−0.1

0.1

0.3

0.5

0.7

0.9

1.1

1.3

1.5

♦ ♦ ♦♦

♦ ♦

♦♦ ♦ ♦

−5 −4 −3 −2 −1 0 1 2 3 4 5−0.5

−0.3

−0.1

0.1

0.3

0.5

0.7

0.9

1.1

1.3

1.5

d’où je tire que

f(X)− p(X) = Kπ(X) =π(X)

(n + 1)!f (n+1)(ξ).

Je peut donc énoncer le théorème suivant.

Si une fonction f possède une dérivée d’ordre n+1, alors, pour toute valeur Xde l’argument, il existe un nombre ξ appartenant au plus petit intervalle quicontient X et tous les pivots xi et satisfaisant à

f(X)− p0,1,2,...,n(X) =π(X)f (n+1)(ξ)

(n + 1)!. (3.15)

En pratique, comme je ne connais pas le nombre ξ et que je cherche un résultat valable pourtout l’intervalle I, j’utiliserai un majorant de la valeur absolue du second membre :

|f − p| ≤ 1(n + 1)!

supx∈I

|πf (n+1)|.

Cette relation est souvent assez pessimiste. D’autre part, son utilité pratique est assez faibleparce que si f est compliquée (et c’est pour cela que je souhaite la remplacer par un polynôme),sa dérivée d’ordre n + 1 a toutes les chances d’être impossible à majorer facilement.

On pourrait penser que l’erreur diminue lorsque le nombre de pivots augmente, ou plutôt,lorsque ceux-ci deviennent de plus en plus serrés. Il n’en est rien ; le théorème de Faber établit aucontraire l’existence de fonctions pour lesquelles l’erreur augmente avec le nombre de noeuds. Lafigure ci-dessous vous présente un exemple de cette propriété paradoxale, connue sous le nom dephénomène de Runge. J’ai interpolé la fonction 1/(1 + x2) en utilisant des pivots régulièrementespacés ; vous voyez que l’erreur d’interpolation devient très grande aux bords de l’intervalle. Jepeux aussi réaliser une interpolation extrêmement précise en choisissant «bien» les pivots. Lespivots définis par l’instruction Scilab

for k = 1:npiv, xp(k) = 0.5*(xmax - xmin)*cos( (2*k-1)*%pi/(2*npiv) ); end;

sont particulièrement efficaces, comme le montre la figure ci-dessous. L’explication de ce bon com-portement est traitée en exercice. Elle tient à ce que ces abscisses sont proportionnelles aux zérosdu polynôme de Tschebychef d’ordre npiv.

Page 29: 21124286 Analyse Numerique French

An_Num 28

Fig. 3.4 – interpolation avec des pivots de Tschebychef

−5 −4 −3 −2 −1 0 1 2 3 4 5−0.5

−0.3

−0.1

0.1

0.3

0.5

0.7

0.9

1.1

1.3

1.5

♦♦♦♦♦

♦♦

♦♦♦♦♦

−5 −4 −3 −2 −1 0 1 2 3 4 5−0.5

−0.3

−0.1

0.1

0.3

0.5

0.7

0.9

1.1

1.3

1.5

3.7 Interpolation entre pivots équidistantsSupposons que je dispose d’une table des valeurs d’une fonction f(x) calculées pour des valeurs

entières de x et que j’ai besoin de connaître f(3, 4). Je peux utiliser les connaissances acquisesen lisant les paragraphes précédents et interpoler entre les valeurs f(3) et f(4) par exemple. Lesalgorithmes de Lagrange ou de Newton s’appliquent sans difficulté, mais ici les données présententune caractéristique intéressante : les pivots sont régulièrement espacés. Une telle situation se ren-contre fréquemment lorsque l’on calcule à la main et de nombreuses méthodes ont été développéespour tirer parti au mieux de ce cas particulier. D’autre part, le même formalisme est utilisé pourrésoudre numériquement les équations différentielles et les équations aux dérivées partielles. Cecijustifie que je consacre quelques pages à l’interpolation entre pivots équidistants.

3.7.1 Les différences finiesÉtant donné une fonction f(x) et une constante positive h, je défini la différence latérale as-

cendante∆hf(x) ≡ f(x + h)− f(x).

En général, la constante h est définie par le contexte, ce qui me dispense de la faire figurer en indice.Comme je ne travaillerai, dans la suite, qu’avec des abscisses équidistantes xi = x0 + ih, i =0, 1, 2, 3, . . ., j’utiliserai la notation plus concise

∆f(xi) ≡ ∆fi = f(xi+1)− f(xi) ≡ fi+1 − fi. (3.16)

h s’appelle le pas ou l’intervalle tabulaire et f(xi+1) = f(xi+h). Je défini maintenant par récurrenceles différences latérales d’ordre supérieur

∆p+1f ≡ ∆pf(x + h)−∆pf(x), p ≥ 0. (3.17)

Par convention, ∆0f(x) ≡ f(x). Ainsi, ∆2f = f(x+2h)− 2f(x+h)+ f(x). Le calcul pratique desdifférences finies se fait commodément à l’aide d’un tableau (semblable à celui utilisé pour former

Page 30: 21124286 Analyse Numerique French

An_Num 29

les différences divisées, mais sans divisions).

xi fi ∆fi ∆2fi ∆3fi

x0 f0

∆f0

x1 f1 ∆2f0

∆f1 ∆3f0

x2 f2 ∆2f1

∆f2 ∆3f1

x3 f3 ∆2f2

∆f3 ∆3f2

x4 f4 ∆2f3

∆f4

x5 f5

......

3.7.2 La formule d’interpolation de NewtonIl existe une relation simple entre le polynôme de Newton (formé à l’aide de différences divisées)

et les différences latérales : pour tout entier k positif,

f [x0, x1, x2, . . . , xk] =1

k!hk∆kf0. (3.18)

Cette formule se démontre par récurrence. Elle est manifestement vraie pour k = 0. J’ai, pourk = 1,

f [x0, x1] =f1 − f0

x1 − x0=

1h

∆f0,

ce qui est conforme au résultat proposé. Je suppose maintenant que la formule est vraie pour toutordre k ≤ r. Alors, pour k = r + 1, la propriété (3.12)montre que

f [x0, x1, . . . , xk+1] =f [x1, x1, . . . , xr+1]− f [x0, . . . , xr]

xr+1 − x0.

En remplaçant les différences divisées d’ordre r du second membre par leurs expressions, je trouve

1(r + 1)h

[1

r!hr∆rf1 − 1

r!hr∆rf0

]=

1(r + 1)!hr+1

∆r+1f0,

ce qui établit le résultat pour k = r + 1. Il reste à utiliser (3.18) pour transformer le polynômed’interpolation de Newton. Je défini une variable réduite

µ =x− x0

h.

Je trouve ensuite que x− xj = h(µ− j) et que

(x− x0)(x− x1) · · · (x− xk) = µ(µ− 1) · · · (µ− k)hk+1.

Insérant ces résultats dans (3.14), j’obtiens

p0,1,...,n(x) = f0 + µh∆f0

h+ µ(µ− 1)h2 ∆2f0

2!h2+ · · ·+ µ(µ− 1) · · · (µ− n + 1)

∆nf0

n!hn.

Je peux donner à cette formule une allure plus compacte en introduisant des analogues fraction-naires des coefficients du binôme

Ckµ ≡

µ(µ− 1) · · · (µ− k + 1)k!

. (3.19)

Page 31: 21124286 Analyse Numerique French

An_Num 30

Avec cette définition, le polynôme d’interpolation s’écrit

p0,1,...,n(x) =n∑

j=0

Cjµ∆jf0. (3.20)

Cette formule générale donne, pour n = 1

p0,1(x) = f0 + µ∆f0

et, pour n = 2,

p0,1,2 = f0 + µ∆f0 +12µ(µ− 1)∆2f0.

3.7.3 exempleVoici un exemple complet d’interpolation par les différences finies et la formule de Newton. J’ai

préparé un tableau de f et de ses différences latérales.

i xi fi ∆f ∆2f ∆3f ∆4f ∆5f0 1 1

0, 610511 1, 1 1, 61051 0, 26730

0, 87781 0, 07952 1, 2 2, 48832 0, 3468 0, 0144

1, 22461 0, 0939 0, 00123 1, 3 3, 71293 0, 4407 0, 0156

1, 66531 0, 10954 1, 4 5, 37824 0, 5502

2, 215515 1, 5 7, 59375

Pour cette fonction assez régulière, les différences diminuent lorsque l’ordre croît, mais le nombrede chiffres significatifs diminue aussi.

Je cherche la valeur de f(1, 25). Je décide d’utiliser toutes les valeurs disponibles, à commencerpar f0. J’ai donc µ = (1, 25 − 1)/0, 1 = 2, 5. Les termes successifs du polynôme d’interpolations’écrivent

f0 1

(2, 5)∆1f0 1, 526275

(2, 5)(1, 5)2

∆2f0 0, 501187

(2, 5)(1, 5)(0, 5)6

∆3f0 0, 024844

(2, 5)(1, 5)(0, 5)(−0, 5)24

∆4f0 −0, 000563

(2, 5)(1, 5)(0, 5)(−0, 5)(−1, 5)120

∆5f0 0, 000014

p(1, 25) 3, 051758

Il est facile, avec cette méthode, de suivre les «progrès» de l’interpolation : je m’arrête dès que jerencontre une contribution assez petite.

Page 32: 21124286 Analyse Numerique French

An_Num 31

Il existe bien d’autres formules d’interpolation, associées aux noms de Gauss, Bessel et autres ;certaines seront présentées en exercices.

3.8 Interpolation de HermiteDans le but de construire une fonction d’interpolation f∗ encore plus précise, je peux imposer

à celle-ci des conditions supplémentaires. Hermite a proposé que les dérivées de f∗ coïncident avecles dérivées correspondantes de f pour certains pivots. Je vais suivre cette idée, en me limitantà l’interpolation polynômiale et en ne considérant que la dérivée première. Pour tous les pivots,j’impose donc que

p(xi) ≡ fi ; p′(xi) ≡ f ′(xi) = f ′i , i = 0, 1, 2, . . . , n. (3.21)

En d’autre termes, p(x) interpole f et p′(x) interpole f ′, sur les mêmes pivots. Je suppose que lepolynôme d’interpolation de Hermite, ainsi défini, peut s’écrire sous une forme analogue à celle deLagrange

p(x) =n∑

i=0

Hi(x)fi +n∑

i=0

Hi(x)f ′i , (3.22)

où les Hi, Hi sont des polynômes réels distincts. Quel en est le degré ? Le polynôme p doit satisfaireaux 2n+2 conditions (3.21) : il comporte donc 2n+2 coefficients ajustables et est de degré 2n+1.Les polynômes élémentaires H et H ont donc un degré au plus égal à 2n + 1.

Les polynômes Hi sont tels que p interpole f ; ils obéissent donc à des conditions identiques àcelles que j’ai écrites pour les polynômes élémentaires de Lagrange. Il parait de même raisonnableque les polynômes dérivés H ′

i soient choisis de façon à ce que p′ interpole f ′, d’où une nouvelle sériede conditions. Mais cela ne suffit pas : il ne faut pas qe les H ′

i viennent perturber l’interpolationde f ′, ni que les Hi détruisent l’interpolation de f : ces polynômes doivent être nuls sur les pivots.J’obtiens ainsi quatre séries de conditions

Hi(xk) = δi,k i, k = 0, 1, 2, . . . , n, (a)H ′

i(xk) = 0 i, k = 0, 1, 2, . . . , n, (b)Hi(xk) = 0 i, k = 0, 1, 2, . . . , n, (c)

H ′i(xk) = δi,k i, k = 0, 1, 2, . . . , n. (d) (3.23)

Chaque polynôme élémentaire obéit à 2n + 2 conditions et peut donc être de degré 2n + 1 au plus.Je commence par construire le polynôme Hi. Il s’annulle ainsi que sa dérivée sur tous les pivots

k 6= i ; il admet donc des racines doubles en ces points et aussi une racine simple en xi. Il s’exprimefacilement à l’aide du polynôme élémentaire de Lagrange Li(x) construit sur les mêmes pivots etdu facteur x− xi :

Hi(x) = C[Li(x)]2(x− xi).

La dérivée H ′i(xi) vaut 1 (condition 3.23(d)), ce qui impose C ≡ 1.

Le polynôme Hi(x) admet tous les pivots sauf xi comme racines doubles. Il peut donc s’écrire

Hi(x) = [Li(x)]2ti(x),

en désignant par ti un polynôme du premier degré tel que Hi respecte les conditions (3.23a,b) enxi :

Hi(xi) = [Li(xi)]2ti(xi) = ti(xi) = 1 ; H ′i(xi) = 2Li(xi)L′i(xi) + L2

i (xi)t′i(xi) = 0.

Un calcul sans difficulté montre que

ti(x) = 1− 2(x− xi)L′i(xi).

Page 33: 21124286 Analyse Numerique French

An_Num 32

L’erreur d’interpolation s’obtient par un raisonnement calqué sur celui de $3 ; elle s’écrit

f(X)− p(X) =[π(X)]2

(2n + 2)!f (2n+2(ξ), (3.24)

l’abscisse ξ appartenant au plus petit intervalle qui contient X et tous les pivots xi.

3.9 Interpolation inverseLorsque je dispose d’une table de valeurs d’une fonction f , c’est à dire d’un ensemble de couples

xi, fi, et que je cherche la valeur de l’argument x correspondant à une valeur de f qui ne figurepas dans la table, je dois effectuer une interpolation inverse. Il s’agit en fait d’interpoler la fonctioninverse f−1 à partir de pivots qui ne sont généralement pas équidistants.

La recherche d’une racine de l’équation f(x) = 0 peut relever de ce formalisme. Si je connais lesvaleurs de f pour des abscisses encadrant la racine, j’obtiens une bonne approximation de celle-cipar interpolation.

Exemple. Je cherche la solution de cos x = x, sachant qu’elle est voisine de 0,7 radian. Jeforme la table suivante

x cos x− x0, 5 0, 3775830, 6 0, 2253360, 7 0, 0648420, 8 −0, 1032930, 9 −0, 278390

La racine est telle que 0, 7 > f−1(0) > 0, 8 ; j’en trouve une approximation par interpolation linéaireselon Lagrange :

x∗ = 0, 70− (−0, 103293)

0, 064842− (−0, 103293)+ 0, 8

0− 00, 64842−0, 103293− 0, 064842

soit x∗ = 0, 738565 et f(x∗) = 0, 00087.

3.10 Interpolation par intervalleCherchant à améliorer la qualité de l’interpolation d’une fonction donnée, je suis tenté d’aug-

menter le nombre n de pivots (ou de noeuds). Comme vous le savez, cette solution est souventvouée à l’échec, parce que le terme d’erreur contient deux facteurs, le polynôme π(x) et la dérivéed’ordre n (ou 2n) de la fonction qui sont vraisemblablement rapidement croissants avec n. Je peuxcependant augmenter à volonté le nombre de pivots, sans faire croître l’ordre d’interpolation. Lafigure montre le principe de ce tout petit miracle. Pour interpoler la fonction représentée par lacourbe en noir, j’ai défini 5 pivots (d’abscisses -1,8, -0,5, 0, 0,5, 1,4) et, ce faisant, 4 intervalles. Jepratique une interpolation du premier degré dans chaque intervalle ; la fonction linéaire correspon-dante est définie pour tout x : elle est représentée par une ligne pointillée. Cependant, je n’utiliseque la restriction de cette fonction à l’intervalle considéré, c’est-à-dire que j’assimile l’arc de courbepar le segment représenté en trait épais.

La fonction d’interpolation f∗ est maintenant plus compliquée : elle admet une définition diffé-rente dans chaque intervalle. De plus, sa dérivée n’est plus continue. Ce type d’interpolation peutêtre rendu aussi précis que l’on veut en multipliant le nombre d’intervalles. On peut aussi le perfec-tionner en choisissant une méthode plus précise dans chaque intervalle, interpolation paraboliqueou interpolation de Hermite.

Page 34: 21124286 Analyse Numerique French

An_Num 33

Fig. 3.5 – principe de l’interpolation par intervalle

−2 −1 0 1 2 3−2

−1

0

1

2

3

4

−2 −1 0 1 2 3−2

−1

0

1

2

3

4

∆∆

−2 −1 0 1 2 3−2

−1

0

1

2

3

4

×

×

×

×

×

×

×

×

×

×

×

×

×

×

×

×

×

×

×

×

−2 −1 0 1 2 3−2

−1

0

1

2

3

4

× × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × ×

−2 −1 0 1 2 3−2

−1

0

1

2

3

4 × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × ×

−2 −1 0 1 2 3−2

−1

0

1

2

3

××

××

××

××

××

××

××

××

××

××

××

××

××

××

××

××

××

×

−2 −1 0 1 2 3−2

−1

0

1

2

3

4

−2 −1 0 1 2 3−2

−1

0

1

2

3

4

−2 −1 0 1 2 3−2

−1

0

1

2

3

4

−2 −1 0 1 2 3−2

−1

0

1

2

3

4

Cependant, dans certaines applications, la disparition de la continuité de la dérivée pose pro-blème : imagine-t-on un bureau d’étude qui calcule une coque de bateau formée d’une série defacettes raccordées par des angles vifs ? Il existe un formalisme qui combine l’avantage d’une in-terpolation «par morceaux» et la continuité des dérivées de la fonction d’interpolation : c’est laméthode des splines, que j’explique dans le paragraphe suivant.

3.11 Interpolation «spline»Le mot «spline» désigne en anglais une règle souple et élastique (une baguette de bois ou une

latte) dont les dessinateurs se servaient pour tracer des courbes lisses (ou régulières) passant pardes points imposés. Le calcul du profil d’un pont ou d’une aile d’avion fournit les coordonnéesd’un ensemble de points ; il appartient ensuite au dessinateur de produire une courbe esthétiqueou aérodynamique mais passant par les points calculés. La forme de la règle souple était ajustée eny suspendant des poids ou en y attachant des ressorts en des points bien choisis. L’interpolationspline est la traduction algébriques de ce savoir-faire.

3.11.1 définition d’une spline cubiqueJe vais détailler un type particulier de fonctions spline, les splines cubiques, qui sont fréquem-

ment utilisées et sont représentatives de cette catégorie de fonctions. Je me propose d’interpoler lafonction f(x) sur l’intervalle I = [a, b]. Pour cela, je choisis une partition de I

a ≡ x0 < x1 < x2 < · · · < xn−1 < xn ≡ b. (3.25)

Ces n+1 abscisses définissent n sous-intervalles [xi−1, xi]. La fonction spline s(x) répond alors auxcontraintes suivantes

– Dans chaque intervalle [xi−1, xi], la fonction d’interpolation est un polynôme de degré trois.– La fonction s, sa dérivée première s′ et sa dérivée seconde s′′ sont continues dans I.– s(x) interpole la fonction f sur [a, b], s(xi) = fi, i = 0, 1, . . . , n.Pour que le problème de la détermination de la fonction s soit soluble, il faut au moins que le

nombre d’équations soit égal au nombre d’inconnues. Cela est-il le cas ? Je peux poser

s(x) = ai + bix + cix2 + dix

3 xi−1 ≤ x ≤ xi i = 1, 2, . . . , n. (3.26)

Les inconnues sont les 4n coefficients ai, bi, ci, di. Les conditions d’interpolation fournissent n + 1contraintes. Les conditions de continuité s’appliquent à chaque frontière entre sous-intervalles ; il

Page 35: 21124286 Analyse Numerique French

An_Num 34

y a n − 1 points communs à deux intervalles et 3 séries de conditions, ce qui engendre 3n − 3contraintes. Je dispose donc en tout de 4n − 2 relations pour déterminer 4n inconnues. Ce légerdéficit n’est pas gênant et j’introduirai bientôt deux conditions supplémentaires qui me permettrontde résoudre entièrement le problème.

3.11.2 construction d’une spline cubiquePlutôt que de faire intervenir directement les coefficients du polynôme s, il est commode d’uti-

liser, pour la mise en équations, les quantités mi ≡ s′′(xi), i = 0, 1, 2, . . . , n. Comme s doit être dutroisième degré sur [xi, xi+1], sa dérivée seconde est une fonction linéaire de x que j’écris sous uneforme qui minimise les calculs à venir et assure la continuité de s′′ :

s′′(x) ≡ 1hi

[(xi+1 − x)mi + (x− xi)mi+1],

hi ≡ xi+1 − xi,

i = 0, 1, 2, . . . , n− 1. (3.27)

J’intègre maintenant deux fois par rapport à x, ce qui fait apparaître deux constantes arbitrairesCi et Di

s(x) =(xi+1 − x)3mi + (x− xi)3mi+1

6hi+ Ci(xi+1 − x) + Di(x− xi).

J’impose maintenant les conditions d’interpolation pour obtenir les expressions suivantes desconstantes d’intégration

Ci =fi

hi− himi

6Di =

fi+1

hi− himi+1

6.

Le polynôme s prend alors une forme assez symétrique

s(x) = (xi+1 − x)3mi + (x− xi)3mi+1

6hi+ (xi+1 − x)fi + (x− xi)fi+1

hi

−hi

6 [(xi+1 − x)mi + (x− xi)mi+1],xi ≤ x ≤ xi+1, i = 0, 1, 2, . . . , n− 1.

(3.28)

Vous pouvez vérifier que s est bien continue sur [a, b]. Il me reste à prendre en compte la continuitéde s′ ; pour cela, j’exprime cette dérivée dans deux intervalles successifs. Dans [xi, xi+1]

s′ =−(xi+1 − x)2mi + (x− xi)2mi+1

2hi+

fi+1 − fi

hi− (mi+1 −mi)hi

6

alors que dans l’intervalle précédent [xi−1, xi] : :

s′ =−(xi − x)2mi−1 + (x− xi−1)2mi

2hi−1+

fi − fi−1

hi−1− (mi −mi−1)hi−1

6.

Ces deux expressions doivent vérifier

limx→x+

i

= limx→x−

i

i = 1, 2, . . . , n− 1.

Après un peu d’algèbre, je trouve l’équation assez simple suivante

hi−1

6mi−1 +

hi−1 + hi

3mi +

hi+1

6mi+1 =

yi+1 − fi

hi− fi − fi−1

hi−1, i = 1, 2, . . . , n− 1. (3.29)

Je viens d’obtenir n− 1 équations linéaires pour les n+1 inconnues mi. De plus, ces équations ontune structure simple : chacune ne fait intervenir que trois inconnues.

Page 36: 21124286 Analyse Numerique French

An_Num 35

3.11.3 conditions aux limitesJe dois maintenant imaginer deux équations supplémentaires. Il est d’usage d’imposer une

condition raisonnable à chaque extrémité (a, b) de l’intervalle. Je peux, par exemple, supposerconnues les pentes du polynôme d’interpolation en ces points :

s′(x0) = f ′0 s′(xn) = f ′n, (3.30)

où f ′0, f′n sont des constantes. En utilisant les expressions de s′ vues précédemment, pour i = 0 et

pour i = n− 1, j’obtiens les deux équations manquantes

h0

3m0 +

h0

6m1 =

f1 − f0

h0− f ′0,

hn−1

6mn−1 +

hn−1

3mn = f ′n −

fn − fn−1

hn−1.

3.11.4 système linéaire équivalentL’ensemble des équations définissant les mi peut être mis sous forme matricielle

AM = B

en définissant

BT ≡[f1 − f0

h0− f ′0,

f2 − f1

h1− f1 − f0

h0, . . . ,

fn − fn−1

hn−1− fn−1 − fn−2

hn−2, f ′n −

fn − fn−1

hn−1

],

MT ≡ [m0,m1, . . . , mn],

A =

h03

h06 0 · · · 0

h06

h0+h13

h16

0 h16

h1+h23

h26

0. . .

... hn−26

hn−2+hn−13

hn−16

0 · · · hn−16

hn−13

Ces équations définissent ce que l’on appelle parfois l’interpolant spline «complet». Je suis parvenuà concilier nombre de pivots arbitraire et continuité des deux premières dérivées, mais il y a un prixà payer : je dois maintenant résoudre un problème global (représenté par un système d’équations)et toute modification locale d’une donnée (par exemple de f2) se répercutera sur toutes les valeursde la fonction spline. Je n’aborderai pas ici l’étude de l’erreur d’interpolation, qui nécessite de troplongs développements et que l’on trouvera dans les ouvrages spécialisés.

3.11.5 exempleLe formalisme assez touffu qui précède est entièrement masqué à l’intérieur des deux fonctions de

Scilab splin et interp. Je remarque tout d’abord que Scilab utilise, pour déterminer complètementles mi, deux conditions qui ne font intervenir aucune donnée supplémentaire. Dans ce logiciel, onimpose en effet la continuité de la dérivée troisième de s pour le deuxième et l’avant-dernier pivot.Cela revient à dire que s est un interpolant spline pour les noeuds x0, x2, x3, . . . , xn−2, xn, maisinterpole cependant sur tous les pivots x0, x1, x2, . . . , xn−1, xn.

Je reprend l’exemple du §3, l’interpolation de la fonction 1/(1+x2). Voici le programme Scilab,suivi du graphe correspondant.Le phénomène de Runge a disparu et l’interpolation est parfaitement régulière.

Page 37: 21124286 Analyse Numerique French

An_Num 36

Listing 3.3 – construction d’un interpolant spline1 deff ( "y = fn (x ) " , "y = (1 . 0 ) . / ( 1+ x .∗ x ) " ) ;2 npts = 200 ;3 npiv = input ( "nombre de p ivo t s : " ) ;4 xmin = −5; xmax = 5 ;5 x = linspace ( xmin , xmax , npts ) ;6 xp = linspace ( xmin , xmax , npiv ) ;7 xset ( "window" ,0 ) , xbasc ( 0 ) , xset ( "mark s i z e " , 3)8 plot2d (xp , fn ( xp) ,−4 , r e c t = [ xmin , −0.5 ,xmax , 1 . 5 ] )9 sp l 1 = splin (xp , fn ( xp ) ) ;10 sp l 2 = interp (x , xp , fn ( xp ) , sp l 1 ) ;11 plot2d (x , spl2 , 2 , "000" )

Fig. 3.6 – interpolation spline

−5 −4 −3 −2 −1 0 1 2 3 4 5−0.5

−0.3

−0.1

0.1

0.3

0.5

0.7

0.9

1.1

1.3

1.5

♦ ♦ ♦ ♦ ♦ ♦♦

♦ ♦

♦♦

♦ ♦ ♦ ♦ ♦ ♦

3.12 Interpolation à deux ou plusieurs dimensionsLes algorithmes exposés ci-dessus se généralisent de façon plus ou moins laborieuse à deux

ou plusieurs dimensions. La méthode des éléments finis, utilisée pour résoudre les équations auxdérivées partielles, fait un usage intensif de l’interpolation à plusieurs variables ; vous trouverezles meilleures introductions à l’interpolation à plusieurs dimensions dans les livres traitant deséléments finis. Le graphisme sur ordinateur (CAO, DAO) est un autre «consommateur» importantd’algorithmes d’interpolation.

Je mentionne pour terminer une application classique de l’interpolation à deux variables : letracé de courbes de niveau. Soit f(x, y) une fonction définie dans une région du plan. Je peuxreprésenter cette fonction comme une surface z = f(x, y) (en fait comme une projection sur lepapier ou l’écran de cette surface). Je peux aussi dessiner la courbe du plan xOy définie parl’équation f(x, y) = C. Les bulletins météo comportent souvent des cartes avec des isobares, lieuxdes points où la pression atmosphérique prend une valeur donnée. Pour dessiner automatiquementune courbe de niveau, je dois d’abord construire un tableau de valeurs de f correspondant à tous lescouples possibles d’abscisses [xi] et d’ordonnées [yj ], donc en tous points d’un quadrillage couvrantla région qui m’intéresse. Je repère ensuite, sur les droites horizontales x = xi et sur les verticalesy = yj les points pour lesquels f = C. Enfin, je relie ces points entre eux par une interpolationbidimensionnelle.

Page 38: 21124286 Analyse Numerique French

Chapitre 4

Résolution d’équations non linéaires

4.1 IntroductionJ’expose, dans ce chapitre, quelques méthodes de recherche des racines d’une équation non-

linéaire. Cette équation sera toujours écrite sous la forme conventionnelle

f(x) = 0.

Résoudre l’équation f = 0, chercher les zéros de f ou les pôles de 1/f sont des expressions équi-valentes. Ce genre de problème se rencontre souvent, qu’il s’agisse de déterminer le point de fonc-tionnement d’une diode d’après sa caractéristique, la concentration d’une espèce chimique dansun mélange réactionnel ou la fréquence de coupure d’un filtre électrique. Je n’envisagerai ici quedes fonctions réelles. On peut être amené à chercher toutes les solutions de f = 0, ou seulementquelques unes ou une seule, la plus petite par exemple. Un cas particulier important est celui où fest un polynôme ; on sait alors que les racines sont réelles ou deux à deux complexes conjuguées,en nombre égal au degré du polynôme.

Il est rare que je puisse écrire une solution analytique de l’équation f = 0 ; en fait, cela ne seproduira que pour les polynômes de degré inférieur ou égal à 4 ou pour quelques fonctions simples.En conséquence, toutes les méthodes générales de recherche de racine sont des méthodes itératives ;partant d’une solution approchée, j’obtiendrai une suite d’approximations de plus en plus précises.Je devrai donc me préoccuper de la convergence de la méthode et de la vitesse de convergence, jedevrai définir un critère d’arrêt des itérations et prévoir le rôle des erreurs d’arrondi inévitablesdans tout calcul numérique. J’insiste sur le fait qu’aucune méthode connue ne fonctionne «enaveugle» : on doit toujours avoir une connaissance au moins approximative de l’emplacement dela racine. Je vous recommande vivement de tracer le graphe de la fonction pour avoir une idée dunombre et de la position des zéros.

4.2 Méthode de bissection ou de dichotomieJe m’intéresse à une fonction f(x) continue sur l’intervalle I = [a, b] et telle que f(a)f(b) < 0.

Il découle de ces hypothèses que f s’annule au moins une fois dans I et c’est ce zéro que je souhaitelocaliser précisément. Le pseudo-code correspondant à l’algorithme de bissection s’écrit

37

Page 39: 21124286 Analyse Numerique French

An_Num 38

poser xg := a, xd := b, nit := 0 ;tant que |xg − xd| > TOL et que nit < NITMAXfaire

poser xm := (xg + xd)/2si f(xg)f(xm) < 0 alors xd := xm

sinon xg := xm

incrémenter nitafficher nit, x∗ = (xg + xm)/2, f(x∗)

Le principe de la méthode est facile à comprendre. Je calcule la valeur de la fonction au milieu del’intervalle [xg, xd] et j’observe le changement de signe : s’il se produit entre xg et xm, c’est quela racine se trouve dans cet intervalle ; dans ce cas, je redéfinis la borne droite de l’intervalle et jerecommence ; le raisonnement est semblable si le changement de signe se produit entre xm et xd.A chaque itération, l’intervalle qui contient la racine voit sa longueur divisée par 2.

Comme dans toute méthode itérative, j’ai du définir un critère d’arrêt, ici le fait que la longueurdu segment [xg, xd] devienne inférieur à la constante TOL. Il se pourrait que cette condition nesoit jamais remplie : c’est pourquoi je surveille aussi le nombre d’itérations et j’arrête le calcul sinit dépasse NITMAX. J’aurais pu aussi bien choisir la condition f(xm) < SEUIL comme critèred’arrêt.

Cette ébauche est incomplète : outre le fait que les constantes TOL et NITMAX ne sont pasdéfinies, je n’ai rien prévu pour le cas où f(xm) = 0. De plus, il est nécessaire que a < b et quel’intervalle I ne contienne qu’une racine.

Cependant, une fois amélioré, l’algorithme de dichotomie présente de nombreux avantages. Laconvergence est certaine dès lors que les conditions précédentes sont remplies ; la programmationest très simple ; le calcul de f n’a pas besoin d’être très précis, parce que j’utilise en fait le signe de lafonction et non sa valeur. Le désavantage est que la convergence est assez lente ; comme l’intervalleoù peut se trouver la solution est divisé par deux à chaque itération, je dis que la convergence estapproximativement linéaire.

La figure montre un exemple de recherche de racine de l’équation x2 = cos x réalisé sous Scilab.

4.3 Méthode «Regula falsi»Ces mots latins (règle des fausses positions, une expression qui date du 17ième siècle) désignent

une variante de la méthode de dichotomie qui utilise une meilleure estimation de la nouvelle abscisse(xm pour la bissection).

À chaque itération de l’algorithme précédent, je connais deux abscisses, xg et xd, qui encadrentla racine inconnue x∗. Les nombres yg = f(xg) et yd = f(xd) sont donc de signes contraires si bienque les deux points G(xg, yg) et D(xd, yd)sont situés de part et d’autre de l’axe des x. La cordeGD coupe donc cet axe en un point M, lequel sera «assez proche» de x∗ ; je choisirai xm commenouvelle borne de l’intervalle contenant la racine, borne gauche si le changement de signe de f seproduit entre xm et xd, borne droite dans le cas contraire. Il me reste à déterminer l’abscisse xm :

xm = xg − ygxg − xd

yg − yd= xd − yd

xg − xd

yg − yd.

La convergence est souvent plus rapide qu’avec la méthode de bissection. J’ai choisi comme exemplela même équation qu’au paragraphe précédent, qui fait intervenir une fonction à variation régulièrepour laquelle la convergence est très rapide. J’en ai profité pour modifier le critère d’arrêt : le calculs’arrête dès que deux estimations successives de la racine sont «assez voisines» : |x(n) − x(n−1)| <TOL.

Page 40: 21124286 Analyse Numerique French

An_Num 39

Fig. 4.1 – résolution de x2 = cos x par bissection

0.5 0.6 0.7 0.8 0.9 1.0 1.1−1.0

−0.8

−0.6

−0.4

−0.2

0

0.2

0.4

0.6

0.8

⊕⊕

⊕⊕ ⊕⊕⊕⊕⊕⊕⊕⊕⊕⊕⊕⊕⊕

Fig. 4.2 – solution de x2 = cos x par regula falsi

0.5 0.6 0.7 0.8 0.9 1.0 1.1−1.0

−0.8

−0.6

−0.4

−0.2

0

0.2

0.4

0.6

0.8

⊕ ⊕⊕⊕⊕⊕⊕

Page 41: 21124286 Analyse Numerique French

An_Num 40

Fig. 4.3 – itération convergente

0 0.2 0.4 0.6 0.8 1.0 1.2 1.40

0.2

0.4

0.6

0.8

1.0

1.2

1.4

x0 x1 x2 x3

Fig. 4.4 – itération divergente

0 0.2 0.4 0.6 0.8 1.0 1.2 1.40

0.2

0.4

0.6

0.8

1.0

1.2

1.4

x0x1x2x3

4.4 Méthode du point fixe ou d’itérationJe me propose de résoudre l’équation

x = f(x). (4.1)

Toute solution de cette équation s’appelle un point fixe de l’application f (l’image de x est xlui-même). Je vais procéder par itérations successives à partir d’une estimation x(0) de la solution :

x(n+1) = f(x(n)). (4.2)

L’équation (4.2) admet une interprétation géométrique simple. La solution x∗ de (4.1) est le pointd’intersection de la première bissectrice (droite d’équation y = x) et de la courbe d’équationy = f(x). L’ordonnée f(x(0)) est la nouvelle abscisse x(1) ; le point (0,x(1)) se déduit du point(x(0), f(x(0))) par une symétrie orthogonale par rapport à la droite y = x. Cette constructionse répète pour x(2), x(3), · · · En essayant de résoudre (4.1) pour diverses fonctions f , vous verrezque l’on peut rencontrer deux dispositions de la suite x(0)x(1), · · ·, correspondant soit à un pointfixe attractif, soit à un point fixe répulsif, comme le montre les figures. D’où la question : àquelle(s) condition(s) la suite des x(n) converge-t-elle, et vers quelle valeur ? Le raisonnement est

Page 42: 21124286 Analyse Numerique French

An_Num 41

simple et il est représentatif de nombreuses études de convergence. Je suppose que la fonction fet sa dérivée f ′ sont continues dans un intervalle I = [a, b] entourant la racine x∗. De plus, f esttelle que a ≤ f(x) ≤ b si x ∈ I. Cette condition implique que tous les x(k) appartiennent à I sil’approximation initiale x(0) appartient à cet intervalle.

La racine vérifie (4.1) :x∗ = f(x∗).

Je défini l’erreur à l’itération kek ≡ x(k) − x∗.

Je commence par exprimer l’erreur à l’étape k + 1 en fonction de ek

ek+1 = x(k+1) − x∗ = f(x(k))− f(x∗).

D’après le théorème des accroissements finis, le second membre s’écrit

f(x(k))− f(x∗) = (x(k) − x∗)f ′(ξk)

où ξk est compris entre x∗ et x(k). La relation cherchée s’écrit

ek+1 = f ′(ξk)ek. (4.3)

Pour que l’itération converge, il faut que l’erreur diminue en valeur absolue à chaque tour, ce quisera assuré si |f ′(ξk)| < 1 quelque soit k. D’où le théorème

Théorème. Soit une fonction f continûment dérivable sur [a, b]et telle que f(x) ∈ [a, b] si x ∈ [a, b]. Soit encore M telle que

M = supa≤x≤b

|f ′(x)| < 1.

Pour tout x(0) ∈ [a, b], la suite des itérés x(0), x(1), . . . , x(n), . . .converge vers la solution de l’équation x = f(x). On a de plus

limn→∞

x∗ − x(n+1)

x∗ − x(n)= f ′(x∗).

Vous voyez que l’erreur est multipliée par un facteur inférieur à un à chaque itération : on ditque la convergence est linéaire.

La méthode du point fixe est d’application assez générale car beaucoup d’équations peuvent semettre sous la forme x = f(x). L’exemple suivant remonte à l’Antiquité. L’équation x2 = a peut semettre sous l’une des formes x = a/x ou x = 1

2 (x + a/x) qui ont été utilisées pour approcher√

a.La figure montre l’application de la méthode du point fixe à l’équation x =

√cosx ; les conditions

de convergence sont remplies dans [0,1] et, effectivement, la méthode converge vers x∗ = 0, 824132.

4.5 Méthode de NewtonLa méthode de Newton s’applique à la résolution d’une équation de la forme f(x) = 0. Son

interprétation géométrique est donnée sur la figure suivante.

Page 43: 21124286 Analyse Numerique French

An_Num 42

Fig. 4.5 – résolution de x2 = cos x par itération

0 0.2 0.4 0.6 0.8 1.0 1.2 1.40

0.2

0.4

0.6

0.8

1.0

1.2

1.4

0.5 0.7 0.9 1.1 1.3 1.5 1.7 1.9−1

0

1

2

3

4

x0x1x2x3

Je dispose d’une approximation x(0) de la racine ; je construit la tangente à la courbe d’équationy = f(x) au point d’abscisse x(0) ; cette droite coupe l’axe horizontal en x(1) ; je construit unenouvelle tangente en cette abscisse, dont l’intersection avec l’axe des x me donne x(2). Ce procédéest itéré jusqu”à convergence.

L’équation de la droite de pente f ′(x(k)) passant par le point x(k), f(x(k)) s’écrit y− f(x(k)) =f ′(x(k))(x− x(k)). Cette droite coupe l’axe des x au point d’abscisse

x(k+1) = x(k) − f(x(k))f ′(x(k))

. (4.4)

Cette équation définit l’algorithme de Newton pour la résolution des équations non-linéaires. Vousconstatez immédiatement que la méthode va diverger lorsque que f ′ sera nulle ou même petite. Eneffet, si la pente de la courbe est faible, le point d’intersection x(k+1) de la tangente avec l’axe seratrès éloigné du point d’abscisse x(k) et l’algorithme a toutes chances de se perdre.

Je vais maintenant établir la condition de convergence de façon précise ; la théorie devient trèssimple si l’on remarque qu’en posant

φ(x) ≡ x− f(x)f ′(x)

,

je mets l’équation (4.4) sous la forme d’une itération vers un point fixe

x(k+1) = φ(x(k)).

Page 44: 21124286 Analyse Numerique French

An_Num 43

Cette fonction s’appelle parfois la fonction d’itération de la méthode de Newton. D’après le para-graphe précédent, je sais que la convergence dépend de φ′(x) ; or

φ′(x) =f(x)f ′′(x)[f ′(x)]22 .

J’appelle encore x∗ la racine que je cherche ; elle vérifie f(x∗) = 0 et par conséquent

φ′(x∗) = 0.

Comme je suppose que f, f ′, f ′′ sont définies et continues dans la région qui m’intéresse, il existeun intervalle I = [x∗ − δ, x∗ + δ] tel que

|φ′(x)| ≤ C < 1.

Il me suffit donc de choisir x(0) ∈ I pour assurer la convergence de l’algorithme de Newton.Pour estimer la vitesse de convergence, je fait un développement de Taylor de φ autour de x∗ :

φ(x(k))− φ(x∗) =12(x(k) − x∗)2φ′′(ηk)

où ηk est compris entre x∗ et x(k). J’en déduis

e(k+1) =12[e(k)]2φ′′(ηk).

Lorsque k croit, x(k) et ηk se rapprochent de x∗, ce que je traduis par l’expression

limk→∞

e(k+1)

[e(k)]2=

12φ′′(x∗).

Je calcule φ′′(x∗) = f ′′(x∗)/f ′(x∗) d’où le résultat

limk→∞

e(k+1)

[e(k)]2=

f ′′(x∗)2f ′(x∗)

. (4.5)

Je peux donc énoncer le théorème suivant.

Théorème. Si f, f ′ et f ′′ sont continues dans un voisinage dex∗ et si f(x∗) = 0 et f ′(x∗) 6= 0, si x(0) est choisi assez prèsde x∗, alors la suite définie par (4.4) converge vers x∗, avec unevitesse de convergence donnée par (4.5) ; la convergence est ditequadratique.

4.6 Méthode de la sécanteLa méthode de la sécante est une méthode «à deux points» : connaissant les approximations

x(k−1) et x(k) de la racine, je vais calculer une meilleure approximation x(k+1). Le principe en estsimple. La corde qui joint les points de coordonnées [x(k−1), f(x(k−1))] et [x(k), f(x(k))] coupe l’axedes x en un point d’abscisse x(k+1). Je trouve facilement l’expression de cette abscisse

x(k+1) = x(k) − f(x(k))x(k) − x(k−1)

f(x(k))− f(x(k−1)).

Ce procédé n’est pas très différent de la méthode de Newton. En effet, la fraction au secondmembre peut être considérée comme une approximation de 1/f ′(x(k)). L’analyse de la convergenceest cependant un peu plus compliquée et pourra être abordée en exercice.

Page 45: 21124286 Analyse Numerique French

An_Num 44

4.7 Résolution de systèmes d’équationsJe ne ferais qu’effleurer le sujet vaste et compliqué des systèmes d’équations non linéaires à

plusieurs variables. Dans le cas de deux dimensions, je cherche les solutions du système :{

f(x, y) = 0,g(x, y) = 0.

(4.6)

Chaque équation définit une courbe du plan (x,y) ; résoudre le système équivaut donc à cher-cher les points d’intersection de ces deux courbes. Je recommande vivement une étude graphiquesommaire de ces deux équations avant toute recherche de racine par le calcul ; en effet, quelque soitl’algorithme utilisé, la convergence dépendra fortement de la qualité de l’approximation initiale.

Je vais présenter une généralisation de la méthode de Newton. Je suppose que f , g et leursdérivées sont continues dans la région du plan qui m’intéresse. Je suppose connue une approximationde la solution, soit (x0, y0). Je peux toujours poser :

x = x0 + u ; y = y0 + v.

Je substitue dans (9.1) et j’effectue un développement de Taylor du premier ordre à deuxvariables :

f(x0 + u, y0 + v) = f(x0, y0) + ufx + vfy + · · · = 0,

g(x0 + u, y0 + v) = g(x0, y0) + ugx + vgy + · · · = 0,

où les dérivées partielles fx, fy, gx et gy sont calculées au point (x0, y0). Je suppose que lesvariations de f et g soient assez lentes pour que je puisse négliger les termes d’ordre supérieur. Enisolant les termes en u et v, je trouve

{ufx + vfy = −f(x0, y0),ugx + vgy = −g(x0, y0).

(4.7)

Les équations (4.7) constituent un système de deux équations linéaires à deux inconnues, u et v,dont la solution est immédiate. Il est maintenant facile d’imaginer l’algorithme de Newton à deuxdimensions. J’obtiendrais une approximation encore meilleure de la solution en itérant ce procédé

x1 = x0 + u ; y1 = y0 + v.

À l’étape suivante de l’itération, je remplace (x0, y0) par (x1,y1) et ainsi de suite, jusqu’à satisfaireà un critère de convergence.

Ce formalisme se généralise facilement à un nombre quelconque d’équations ; il est alors com-mode d’utiliser une notation matricielle. Soit f ∈ <n un vecteur de coordonnées fi(r) ; je supposeaussi que r ∈ <n . Le système d’équations à résoudre s’écrit :

f = 0.

Si r0 est une approximation de la solution, je pose r = r0 + u. La correction u est alors définiepar l’équation

f(r0) +n∑1

ui∂ f∂ ui

= 0

ou encore, en définissant la "matrice jacobienne" J, d’éléments Jij = ∂fi/∂uj :

u = −J−1f(r0)

r1 = r0 + u

Page 46: 21124286 Analyse Numerique French

An_Num 45

rn+1= rn−J−1f(rn)

La convergence est rapide si le point de départ est proche de la solution ; dans le cas contraire,nous ne sommes pas assurés de voir l’algorithme converger.

Exemple. Soit le système de deux équations :

f(x, y) = x2 + y2 − 4 = 0,

g(x, y) = ex + y − 1 = 0.

Il est très simple de construire les deux courbes représentant les équations f = 0 et g = 0 ;elles se coupent en deux points voisins de (1,-2) et (-2,1) ; il n’y a pas d’autre solution. J’ai écritun programme de résolution par la méthode de Newton à deux dimensions, que vous trouverezci-dessous.

Listing 4.1 – Méthode de Newton1 // a l gor i thme de newton a deux v a r i a b l e s2 function u = f (x , y )3 u = x∗x + y∗y − 44 endfunction5 function u = dfdx (x , y )6 u = 2∗x ;7 endfunction8 function u = dfdy (x , y )9 u = 2∗y10 endfunction11 function u = g (x , y )12 u = exp( x ) + y − 1 ;13 endfunction14 function u = dgdx (x , y )15 u = exp( x )16 endfunction17 function u = dgdy (x , y )18 u = 1 ;19 endfunction2021 t o l = 1e−6; nitmax = 20 ;22 xmin = −4; xmax = 4 ; ymin = −3; ymax = 3 ;23 xset ( "window" ,0 ) ,xbasc (0 )24 xt = −3 : 0 . 1 : 3 ;25 yt1 = 1 − exp( xt ) ;26 plot2d ( xt , yt1 , r e c t =[xmin , ymin , xmax , ymax ] , s t y l e =2)27 xpoly ( [ xmin , xmax ] , [ 0 , 0 ] ) , xpoly ( [ 0 , 0 ] , [ ymin , ymax ] )28 xt = −2 : 0 . 02 : 2 ;29 yt2 = sqrt (4 − xt . ^ 2 ) ;30 plot2d ( xt , yt2 , 3 , "000" ) ;31 yt2 = −sqrt (4 − xt . ^ 2 ) ;32 plot2d ( xt , yt2 , 3 , "000" ) ;3334 for j = 1 :335 a = input ( " a b s c i s s e i n i t i a l e : " ) ; b = input ( " ordonnee i n i t i a l e : " ) ;36 n i t = 1 ; xx (1 ) = a ; x = a ; yy (1 ) = b ; y = b ;37 xset ( "mark s i z e " , 2 ) , plot2d ( a , b , −4)38 u = 1 ; v = 1 ;39 while ( ( ( abs (u) > t o l ) | (abs ( v ) > t o l ) ) & n i t < nitmax )40 de l t a = dfdx (x , y )∗dgdy (x , y)−dfdy (x , y )∗dgdx (x , y ) ;41 u = ( g (x , y )∗ dfdy (x , y)− f (x , y )∗dgdy (x , y ) )/ de l t a ;

Page 47: 21124286 Analyse Numerique French

An_Num 46

42 v = ( f (x , y )∗dgdx (x , y)−g (x , y )∗ dfdx (x , y ) )/ de l t a ;43 n i t = n i t + 144 x = x + u , y = y + v ,45 xx ( n i t ) = x ; yy ( n i t ) = y ;46 xarrows ( [ xx ( nit −1) ,xx ( n i t ) ] , [ yy ( n it −1) ,yy ( n i t ) ] , 0 . 0 5 , j )47 end48 end

La figure montre les itérations successives. La convergence est rapide, bien que le point decoordonnées(xi, yi) ait tendance à «explorer» une assez grande région du plan. Comme toujoursavec la méthode de Newton, le comportement dépend très fortement du point de départ. Pourcertains systèmes, on peut montrer que les valeurs initiales qui conduisent à la convergence sontcontenues dans une région du plan dont la frontière est une belle courbe fractale.

Fig. 4.6 – recherche des solutions d’un système non-linéaire

−4 −3 −2 −1 0 1 2 3 4−3

−2

−1

0

1

2

3

−4 −3 −2 −1 0 1 2 3 4−3

−2

−1

0

1

2

3

−4 −3 −2 −1 0 1 2 3 4−3

−2

−1

0

1

2

3

♦−4 −3 −2 −1 0 1 2 3 4

−3

−2

−1

0

1

2

3

4.8 Racines des polynômesSoit p(x) un polynôme de degré n à coefficients réels. On désigne parfois une équation comme

p(x) = 0 sous le nom d’équation algébrique. Le théorème fondamental de l’algèbre énonce que p(x)a n racines, réelles ou complexes conjuguées deux à deux. Pour de nombreuses applications, il estnécessaire de déterminer toutes les racines de p(x).

4.8.1 Séparation des racinesAvant de chercher les valeurs numériques des zéros d’un polynôme, il est commode d’avoir une

idée de leur localisation. Si [a0, a1, . . . , an] est la suite des coefficients de p(x) supposés réels (cer-tains pouvant être nuls), j’appelle ν le nombre de changements de signe dans la suite des {ai} (enignorant les coefficients nuls). Je désigne par k le nombre de zéros réels positifs de p(x), comptésselon leur multiplicité (une racine double compte pour 2, etc.). Je peux alors énoncer la règle deDescartes :

k ≤ ν et de plus ν − k doit être pair.

Exemple. Les coefficients de x6 − x − 1 présentent un changement de signe (ν = 1) ; k vautdonc 0 ou 1, mais la valeur 0 est à rejeter puisqu’alors ν − k = 1. Ce polynôme a donc une racineréelle positive.

Page 48: 21124286 Analyse Numerique French

An_Num 47

Je peux aussi trouver le nombre de racines réelles négatives : il suffit d’appliquer la règle deDescartes au polynôme q(x) = p(−x). Le polynôme de l’exemple précédent admet un zéro réelnégatif.

4.8.2 Suites de SturmUne localisation plus précise des racines d’un polynôme p(x) de degré n peut être obtenue en

construisant une «suite de Sturm» basée sur p. Je commence donc par définir ce qu’est une suitede Sturm.

Soit p0(x), p1(x), . . . , pm(x) une séquence de polynômes ; elle constitue une suite de Sturm si

– Les zéros réels de p0(x) sont simples.– p1(α)p′0(α) < 0 si α est un zéro réel de p0.– Pour k = 1, 2 . . . , m− 1, pk−1(α)pk+1(α) < 0 si α est un zéro réel de pk(x).– Le dernier polynôme, pm(x) n’a pas de zéros réels.

Comment construire cette suite ? À l’aide de la relation de récurrence assez simple que j’exposemaintenant. Je pose

p0(x) ≡ p(x) ; p1(x) ≡ −p′0(x)

etpk−1(x) = qk(x)pk(x)− pk+1(x) avec deg pk > deg pk+1. (4.8)

Si les pk étaient des nombres, vous auriez sûrement reconnu l’algorithme d’Euclide pour la construc-tion du PGCD. Le concept de PGCD se transpose facilement aux polynômes. Comme le degré despolynômes décroît, l’algorithme s’arrête au bout de m ≤ n étapes :

pm−1(x) = qm(x)pm(x), pm(x) 6= 0.

Le dernier polynôme, pm est un plus grand commun diviseur de p0 et p1. Comme p = p0 n’aque des zéros simples, p0 et p1 = −p′0 n’ont pas de diviseurs communs (ne sont jamais nulssimultanément) et, par conséquent, pm n’a pas de zéros réels. Si pk(α) = 0, la relation (4.8)implique que pk−1(α) = −pk+1(α). Il pourrait se faire que pk+1(α) soit nul ; mais alors, toujoursd’après la relation de récurrence, tous les pk(α) seraient nuls, y compris pm, ce qui est contraireau résultat précédent. En tenant compte des définitions de p0 et p1, vous vous apercevez que les{pk} satisfont à toutes les propriétés qui définissent une suite de Sturm.

J’énonce maintenant le théorème de Sturm :Théorème. Le nombre de racines réelles de p(x) ≡ p0(x) dansl’intervalle a ≤ x < b est égal à w(b)−w(a) où w(x) est le nombrede changements de signe dans la suite p0(x), p1(x), . . . , pm(x) aupoint x.

Je ne donnerai pas ici la démonstration, simple mais assez longue : il faut examiner en détailles changements de signe de chaque polynôme au voisinage d’un zéro de l’un d’eux.

Exemple. Soit p(x) = x5 − x3 − x− 1. La suite de Sturm de p est

p0(x) = x5 − x3 − x− 1,

p1(x) = −5x4 − 3x2 + 1,

p2(x) =25x3 +

45x + 1,

p3(x) = −13x2 − 252

x− 1,

p4(x) = −385338

x− 174169

,

p5(x) =47827148225

.

Page 49: 21124286 Analyse Numerique French

An_Num 48

Ici, m = 5. Je ne considère que les cas x = −∞, 0,∞ ; je construis un tableau de signes

x −∞ 0 ∞p0 - - +p1 - + -p2 - + +p3 - - -p4 + - -p5 + + +

w(x) 1 3 4

La suite présente un seul changement de signe lorsque x est très grand négatif, trois changementspour x = 0 et 4 pour x grand positif. Il y a donc deux zéros dans l’intervalle [−∞, 0[ et un dans[0,∞[.

4.8.3 Division des polynômesJe reviens plus en détail, dans ce paragraphe, sur la division des polynômes, qui a été considé-

rée comme bien connue au paragraphe précédent. Étant donné un polynôme p(x) de degré n (ledividende) et un polynôme b(x) de degré m < n (le diviseur), on sait trouver deux polynômes, lequotient q(x) et le reste r(x) tels que

p(x) = b(x)q(x) + r(x), avec deg r < deg b. (4.9)

Remarquez que le degré de q(x) est imposé (n −m) mais ne joue aucun rôle dans la suite. Aveccette définition, la division des polynômes est très semblable à celle des nombres, pour laquelle lereste doit être inférieur au diviseur. Je considère maintenant un cas particulier, celui où le diviseurest de la forme b(x) = x − α. Le reste est alors une constante (polynôme de degré < 1). Je peuxécrire

p(x) = (x− α)q(x) + r

d’où je tire, en faisant x = α,p(α) = r. (4.10)

en d’autres termes, la valeur numérique de p en x = α est le reste de la division de p par x−α. Cerésultat a une conséquence importante. Si a est un zéro de p, donc si p(α) = 0, alors r = 0, ce quisignifie qu’un polynôme qui s’annule en x = α est divisible par x− α. J’ai déjà expliqué (chapitre1) comment calculer r ou p(a), mais je reprendrai ce calcul plus bas. Je peux aussi obtenir uneexpression simple de la valeur numérique de la dérivée de p. Je sais que

p′(x) = q(x) + (x− α)q′(x)

et, en faisant à nouveau x = α,p′(α) = q(α). (4.11)

Comme vous le verrez, il est facile de calculer q(α). Des équations analogues existent pour lesdérivées d’ordre supérieur.

Je vais maintenant construire le polynôme q(x) par identification. Je note c0, c1, . . . , cn−1 lescoefficients des puissances croissantes de x dans q. Ces nombres doivent satisfaire, quelque soit x,à la relation

anxn + an−1xn−1 + · · ·+ a1x + a0 = (x− α)(cn−1x

n−1 + cn−2xn−2 + · · ·+ c1x + c0).

En identifiant les coefficients des puissances successives de x, j’obtiens

an = cn−1 ; an−1 = cn−2 − αcn−1; . . .

Page 50: 21124286 Analyse Numerique French

An_Num 49

a1 = c0 − αc1 ; a0 = r − αc0

soit encore :

cn−1 = an

cn−2 = an−1 + αcn−1,

· · · · · ·c0 = a1 + αc1,

r = a0 + αc0. (4.12)

Vous voyez que r, qui est aussi la valeur numérique de p(α), s’obtient au moyen de n− 1 multipli-cations. En fait la relation de récurrence précédente est équivalente à la règle suivante. J’écris lepolynôme p(x) sous la forme :

p = (((...(anx + an−1)x + an−2)x + .... + a1)x + a0, (4.13)

puis je fais x = α avant d’effectuer les calculs. La parenthèse intérieure contient alors cn−2, lasuivante cn−3, jusqu’à r. Vous avez reconnu la méthode de Horner. Je donne un exemple, qui faitun peu double emploi avec celui du chapitre 1.

Exemple. Je vais calculer la valeur de p = 2x5−71x3−8x2 +12x+3 pour x = 6, ce qui revientà diviser p par x − 6.Il est commode de disposer le calcul comme ci-dessous. Seuls les coefficientsdes puissances décroissantes de x sont nécessaires, mais il faut les faire figurer tous, mêmes ceuxqui sont nuls.

p 2 0 −71 −8 12 3q 2 6× 2 + 0 = 12 6× 12− 71 = 1 6× 1− 8 = −2 6×−2 + 12 = 0 6× 0 + 3 = 3

Le reste est r = 3, le quotient est q = 2x4 + 12x3 + x2 − 2x. La valeur numérique de p′(6) est q(6)qui s’obtient par le même procédé.

q 2 12 1 −2 02 6× 2 + 12 = 24 6× 24 + 1 = 145 870− 2 = 868 6× 868 = 5208

ce que vous pouvez vérifier par un calcul direct.Lorsque l’on traite à la main un seul polynôme, les formes (4.12) et (4.13) sont équivalentes

mais, lorsque l’on doit faire de nombreux calculs, il devient intéressant d’écrire un programmegénéral. Je donne ci-dessous le squelette d’un programme qui calcule p et p′ à partir du tableau ades coefficients de p et de la valeur de x.

p = a[n], dp = 0.0;for i de n-1 à 0

dp = dp*x + p;p = p*x+a[i];

Lorsque la boucle se termine, p contient la valeur numérique du polynôme (accumulée selon laméthode de Horner) et dp celle de la dérivée.

4.8.4 La méthode de Newton pour les polynômesJe dispose maintenant d’un algorithme pratique de calcul des valeurs numériques d’un poly-

nôme et de sa dérivée : c’est tout ce qu’il faut pour mettre en oeuvre la méthode de Newton. Envoici un exemple : la recherche du zéro de p = x3 − x2 + 2x + 5 voisin de -1. Les coefficients ontété rangés en colonne pour gagner de la place.

Page 51: 21124286 Analyse Numerique French

An_Num 50

x p q p′ p/p′

-1 1 1 1-1 -2 -32 4 75 1

0,142857-1,142857 1 1 1

-1 -2,142857 -3,2857142 4.448979 8,2040815 -0,084546

-0,010305-1,132552 1 1 1

-1 -2,132552 -3,2651042 4,415226 8,1131265 -0.000473

-0.000058-1,132494

Les nombres soulignés sont les valeurs de p, alors que les valeurs de p′ figurent en caractères gras.On voit que la convergence (caractérisée par le terme correctif (p/p′) est très rapide. Il est possibled’étendre cet algorithme aux racines complexes ou aux polynômes à coefficients complexes.

p est de degré 3 et admet donc 3 zéros ; comment pourrais-je les trouver ? Très simplement :il suffit de diviser le polynôme de départ par x + 1, 132494. La division doit se faire exactement,puisque -1,132494 est racine de p(x) ; le polynôme quotient est ici du second degré et ses zéross’obtiennent sans problème. Ce procédé s’appelle la déflation. Dans le cas général d’un polynômep(x) de degré n, dès que j’ai déterminé une racine x∗ (par la méthode de Newton par exemple),je divise p(x) par x− x∗ pour obtenir un polynôme de degré n− 1. Je répète ce procédé jusqu’audegré 2 ou 1. Si n est un tant soit peu grand, les erreurs d’arrondi risquent, en s’accumulant, degâcher ce programme : le calcul doit être mené avec toute la précision possible.

Page 52: 21124286 Analyse Numerique French

Chapitre 5

Polynômes orthogonaux

5.1 IntroductionLes suites de polynômes orthogonaux apparaissent fréquemment en physique mathématique en

particulier au cours de la résolution d’équations aux dérivées partielles (Laplace, Schrödinger) parla méthode de séparation des variables. Elles sont aussi très utilisées en analyse numérique. Onconnaît de nombreuses familles de polynômes orthogonaux, qui ont en commun un certain nombrede propriétés simples, que je vais décrire succinctement.

5.2 Définition, ExistenceSoit [a, b] un intervalle (qui peut être fini ou infini) et w(x) une fonction strictement positive

et intégrable sur cet intervalle. On appelle polynômes orthogonaux sur [a, b], par rapport à la"fonction de poids" w(x), une suite de polynômes G0(x), G1(x),. . ., Gn(x),. . .(où Gk est de degrék) tels que :

(Gk, Gn) =∫ b

a

w(x)Gk(x)Gn(x)dx = 0 si k 6= n. (5.1)

Le nombre(f, g) =

∫f(x)g(x)w(x)dx (5.2)

est souvent appelé «produit scalaire» de f par g ; lorsqu’il est nul, on dit que les fonctions f et gsont «orthogonales». En faisant f = g dans la relation précédente, on obtient le carré de la normede f :

‖ f ‖2= (f, f) =∫

[f(x)]2w(x)dx. (5.3)

On montre facilement que ce produit scalaire est linéaire en f et g, symétrique et qu’il vérifiel’inégalité de Cauchy-Schwartz :

(f, g) ≤‖ f ‖‖ g ‖ .

Les formules (5.1,5.2) ne définissent pas entièrement les Gn ; il est commode d’imposer les conditionssupplémentaires :

(Gn, Gn) =∫ b

a

w[Gn]2dx = 1;∫ b

a

xwGnGn+1dx > 1

On a alors :

(Gk, Gn) =∫ b

a

w(x)Gk(x)Gn(x)dx = δk,n

51

Page 53: 21124286 Analyse Numerique French

An_Num 52

Les polynômes sont ainsi orthonormés.Pour prouver l’existence de ces polynômes, je vais les construire par le procédé de Gram-

Schmidt, appliqué à l’ensemble des puissances successives de x. G0 est une constante positive, telleque (G0, G0) = 1. g1 est une fonction linéaire que je définis comme :

g1 = x− (x,G0)G0.

g1 est manifestement orthogonal à G0. G1 est défini comme g1 normé :

G1 = g1/ ‖ g1 ‖ .

Je procède ensuite par itération de ces relations ; g2 est une fonction quadratique définie par :

g2 = x2 − (x2, G0)G0 − (x2, G1)G1,

G2 = g2/ ‖ g2 ‖ .

En faisant le produit scalaire de g2 successivement par G0 et G1, je vérifie que cette fonction estbien orthogonale à G0 et G1. Je construis ainsi la suite des polynômes Gk, à partir des nombres(x,G0), (x2, G0), . . . , (xk, Gl). . .

5.3 Relation avec les polynômes habituelsThéorème Tout polynôme de degré n est représentable comme combinaison linéaire de poly-

nômes Gk, avec k ≤ n.J’ai construit les Gk comme combinaisons linéaires des xp ; un polynôme quelconque Φ(x),

lui-même combinaison linéaire des xp, peut donc s’exprimer comme :

Φ(x) = a0G0 + a1G1 + · · ·+ anGn.

La détermination des ai est facile : j’effectue en effet le produit scalaire de l’égalité précédentepar Gp (p ≤ n). Il vient :

ap = (Φ, Gp).

J’ai au contraire (Φ, Gn+1) = 0, quelque soit Φ(x) de degré n, puisque Gn+1 est orthogonalà tous les Gk d’indice inférieur. Par ailleurs, Φ(x) sera identiquement nul si et seulement si :(Φ, Gp) = ap ≡ 0; p = 0, 1, . . . , n. J’en déduis le :

Théorème. Le polynôme Gk est orthogonal à tout polynôme de degré inférieur.Remarque. Le produit scalaire (xGn−1, Gn) est encore le produit d’un polynôme de degré n,

xGn−1, par Gn ; si bn dénote le coefficient de Gn dans le développement de xGn−1, le produitscalaire considéré se réduit à :

(xGn−1, Gn) = bn(Gn, Gn) 6= 0.

5.4 Zéros de Gn

Les zéros de Gn appartiennent à I et sont tous simples. Pour le prouver, je suppose que Gn

n’admette dans I que p < n racines, toutes simples et je montre que j’aboutis à une contradiction.Je forme le polynôme Φ de degré p < n qui admet ces mêmes racines. Le produit scalaire (Gn, Φ)doit être nul puisque deg(Φ) < n ; or ce produit scalaire est en fait l’intégrale :

(Gn, Φ) =∫

w(x)Φ(x)Gn(x)dx

Page 54: 21124286 Analyse Numerique French

An_Num 53

qui ne peut être nulle, puisque l’intégrant garde un signe constant dans I. En effet, le produit ΦGn

admet les racines de Gn (ou de Φ) comme racines doubles et ne peut changer de signe lorsque xtraverse l’une de ces racines ; de plus w(x) > 0 sur I. Il faut donc que p = n.

Je montre maintenant que Gn ne peut avoir de racines multiples. Dans un raisonnement parl’absurde calqué sur le précédent, je suppose, au contraire, que Gn admet, dans I, n − 2 racinessimples et une racine double. Je prends alors pour Φ le polynôme de degré n−2 qui admet les mêmesracines simples que Gn. L’intégrale qui exprime le produit scalaire (Φ, Gn) ≡ 0 ne peut s’annuler,parce que l’intégrant garde un signe constant dans I. Je pourrais généraliser ce raisonnement endéfinissant Φ comme le polynôme de degré < n, qui admet comme racines tous les zéros d’ordreimpair de Gn.

5.5 Relation de récurrenceJe vais montrer l’existence d’une relation de récurrence, de la forme :

αnGn+1(x) = (βnx + γn)Gn(x)− δnGn−1(x).

où les αn, βn, γn, δn sont des constantes. Soit ck le coefficient de xk dans Gk (terme de plus hautdegré) ; on pose an = cn+1/cn. Je considère le polynôme F = Gn+1 − anxGn : il est de degré n auplus et peut donc s’exprimer comme une combinaison linéaire des Gi, i < n + 1 :

F =n∑0

bjGj .

Formons le produit scalaire (F,Gp) = (Gn+1, Gp) − an(xGn, Gp) = −an(xGn, Gp), à conditionque p < n + 1. De plus, l’examen de l’intégrale qui définit (xGn, Gp) montre que : (xGn, Gp) =(Gn, xGp). Comme xGp est de degré au plus p + 1, il est orthogonal à Gn tant que p < n− 1. J’aiainsi montré que F était orthogonal à Gp, 0 ≤ p ≤ n− 2. Le développement de F s’écrit alors :

F = Gn+1 − anxGn = bnGn + bn−1Gn−1

etGn+1 = (anx + bn)Gn + bn−1Gn−1.

Cette relation est bien de la forme annoncée, à condition de choisir αn = 1 et δn = −bn. Enmanipulant cette relation à l’aide des propriétés d’orthogonalité, on montre que an > 0 et bn > 0.En posant G−1 = 0, je définis complètement les Gn.

5.6 Disposition des zéros de Gn

Théorème. Les zéros de Gk séparent ceux de Gk+1.

Ce résultat est vrai pour G0 et G1 ; il se démontre par récurrence dans le cas général. On peutdire aussi que la suite de Gn forme une suite de Sturm.

5.7 Équation différentielle pour Gn

On peut montrer que chaque Gk obéit à une équation différentielle du second ordre. Il est plusfacile de démontrer une réciproque partielle. Soit l’équation différentielle :

A(x)y′′ + B(x)y′ + Cny = 0,

Page 55: 21124286 Analyse Numerique French

An_Num 54

où Cn est une constante (avec Cn 6= Cp si n 6= p), A(x) et B(x) deux fonctions régulières de x.Supposons que l’équation admette une solution polynômiale y = Gn(x) de degré n pour chaquevaleur de n.

On peut alors trouver un intervalle [a, b] et une fonction de poids w(x) tels que la suite des Gn

soit orthogonale par rapport à ces éléments. En effet, Gn et Gp satisfont séparément à l’équationproposée :

AG′′n + BG′n + CnGn = 0,

AG′′p + BG′p + CpGp = 0.

Je multiplie la première relation par wGp, la seconde par wGn et je retranche membre à membre ;il vient

Aw(GnG′′p −GpG′′n) + Bw(GnG′p −GpG

′n) + w(Cp − Cn)GnGp = 0

équation qui s’écrit encore :

[Aw(GnG′p −GpG′n)]′ + [wB − (wA)′](GnG′p −GpG

′n) + w(Cp − Cn)GnGp = 0.

Je considère l’équation différentielle u(x)B(x)− (u(x)A(x))′ = 0 ; j’appelle encore w(x) la solutionqui obéit aux conditions aux limites Aw|a = Aw|b = 0, ce qui définit la fonction inconnue w(x).En intégrant terme à terme l’équation (1), avec cette définition de w, j’obtiens :

(Cp − Cn)∫ b

a

wGnGpdx = 0,

ce qui signifie que les polynômes Gn sont orthogonaux sur l’intervalle I par rapport à la fonctionde poids w.

5.8 Fonction génératriceOn peut en général trouver une fonction g(u, x) telle que l’on puisse écrire :

g(u, x) =∞∑

k=0

CkGk(x)uk

les Ck étant des constantes et u une variable réelle auxiliaire. Si la fonction g a une forme analytique«simple» par rapport à u et à x, on l’appelle la fonction génératrice de la suite des Gk.

5.9 Formule d’Olinde RodriguesLes Gk sont proportionnels à la dérivée d’ordre k d’une fonction Uk(x) (formule d’Olinde

Rodrigues) :

Gn(x) =1w

dn

dxnUn(x)

laquelle est solution d’un problème différentiel :

dn+1

dxn+1[

1W

dnUn

dxn] = 0

avec les conditions aux limites U = U ′ = U ′′ = ..... = U (n−1) = 0 en x = a et x = b.

Page 56: 21124286 Analyse Numerique French

An_Num 55

5.10 Identité de Darboux-ChristofelUne démonstration plutôt laborieuse permet d’établir l’identité de Darboux-Christofel :

n∑

k=0

Gk(x)Gk(y) =1

(x− y)an[Gn+1(x)Gn(y)−Gn(x)Gn+1(y)]

souvent utilisée pour simplifier des expressions impliquant les Gn (la constante an a été définie au5).

5.11 Polynômes de LegendreLes polynômes de Legendre (déjà rencontrés dans le premier chapitre) sont orthogonaux sur

[-1,1] par rapport à la fonction de poids w = 1. A partir de P0 = 1, on peut orthogonaliser lespuissances successives de x pour obtenir

P0 = 1 ; P1 = x ; P2 = (3x2 − 1)/2 ; P3 = (5x3 − 3x)/2,

P4 = (35x4 − 30x2 + 3)/8 ; P5 = (63x5 − 70x3 + 15x)/8.

Le polynôme Pk a le degré et la parité de k. En intégrant par partie dans la relation d’ortho-gonalité (Pk, Pl) = 0, on démontre une relation d’Olinde Rodrigues :

Pn(x) =1

2nn!dn

dxn(x2 − 1)n

avec Pn(1) = 1. Avec ces définitions, les Pn ne sont pas normalisés à 1 mais à (Pn, Pn) = 2/(2n+1).Ils admettent la fonction génératrice :

g(ux) =1√

1− 2ux + u2=

∞∑

k=0

Pk(x)uk

d’où l’on tire la relation de récurrence :

(n + 1)Pn+1 − (2n + 1)xPn + nPn−1 = 0.

Les polynômes de Legendre obéissent à l’équation différentielle :

(x2 − 1)P ′′n + 2xP ′n − n(n + 1)Pn = 0.

Page 57: 21124286 Analyse Numerique French

An_Num 56

5.12 Polynômes de Hermite

−2.0 −1.6 −1.2 −0.8 −0.4 0 0.4 0.8 1.2 1.6 2.0−150

−110

−70

−30

10

50

90

130

170

polynomes de Hermite, n = 1,2,3,4

Les polynômes de Hermite sont orthogonaux sur l’intervalle : [−∞,+∞], par rapport à lafonction de poids : w(x) = exp(−x2). Ils satisfont à la relation de récurrence :

Hn+1 − 2xHn + 2nHn−1 = 0

et à l’équation différentielle :H ′′

n − 2xH ′n + 2nHn = 0.

Ils peuvent se déduire de la fonction génératrice :

g(u, x) = exp(2ux− u2) =∑

k

Hk(x)uk/k!

On connaît aussi une formule de Rodrigues :

Hn = (−1)n exp(x2)dn

dxnexp(−x2).

Les polynômes d’Hermite admette une représentation générale assez simple :

Hn =n/2∑0

(−12)p 1

p!1

(n− 2p)!(2x)n−2p

et les premiers représentants de l’espèce s’écrivent

H0 = 1 ; H1 = 2x ; H2 = 4x2 − 2 ; H3 = 8x3 − 12x;

H4 = 16x4 − 48x2 + 12 ; H5 = 32x5 − 160x3 + 120x.

Vous pouvez constater que Hk a la parité de k.

Page 58: 21124286 Analyse Numerique French

An_Num 57

5.13 Polynômes de LaguerreOn peut les définir à partir d’une formule d’Olinde Rodrigues :

Ln(x) =1n!

e−x dn

dxn

(e−xxn

),

qui me permet d’écrire les premiers membres de la suite :

L0 = 1 ; L1 = −x + 1 ; L2 =12(x2 − 4x + 2) ; L3 =

16(−x3 + 9x2 − 18x + 6).

Ces polynômes admettent la fonction génératrice :

11− t

exp(− xt

1− t

)=

∞∑

k=0

Lk(x)tk.

et la relation de récurrence :

(n + 1)Ln+1 + (x− 2n− 1)Ln + nLn−1 = 0.

Ils satisfont à l’équation différentielle :

xL′′n + (1− x)L′n + nLn = 0.

Ces polynômes sont orthogonaux sur [0,∞] par rapport à la fonction de poids w = e−x ; ils sontnormalisés à un : (Ln, Ln) = 1. Grâce au programme ci-dessous, j’ai calculé et tracé les premierspolynômes de Laguerre.

1 //polynomes de Laguerre2 // (n+1)L_{n+1} + ( x −2n −1)L_n + nL_{n−1} = 03 function fn = L(n , x )4 i f n == 0 , fn = 1 , end5 i f n == 1 , fn = 1 − x , end6 i f n > 17 k = 1 ; Lavder = 1 ; Lder = 1 − x ;8 while k < n9 L = ((2∗ k + 1 − x ) . ∗ Lder − k∗Lavder )/ ( k+1);10 Lavder = Lder ;11 Lder = L ;12 k = k+1;13 end14 fn = L ;15 end16 endfunction17 x = 0 : 0 . 1 : 6 ;18 xset ( "window" ,0 ) , xbasc (0 )19 plot2d (x , [ L(2 , x ) ’ ,L(3 , x ) ’ ,L(4 , x ) ’ ,L(5 , x ) ’ ] )20 xsegs ( [ 0 , 6 ] , [ 0 , 0 ] )21 xset ( " font s i z e " , 3)22 xstring ( 2 , 6 , "polynomes de Laguerre , n = 1 ,2 ,3 ,4 " )

Page 59: 21124286 Analyse Numerique French

An_Num 58

0 1 2 3 4 5 6−5

−3

−1

1

3

5

7

polynomes de Laguerre, n = 1,2,3,4

5.14 Polynômes de TschebychefCes polynômes admettent la définition simple :

Tn(x) = cos[narccos(x)].

On obtient une relation de récurrence entre Tn−1, Tn et Tn+1 en calculant cos[(n± 1)x] :

Tn+1(x) + Tn−1(x) = 2xTn(x).

J’en déduis les expressions des premiers polynômes

T0 = 1 ; T1 = x ; T2 = 2x2 − 1 ; T3 = 4x3 − 3x;

T4 = 8x4 − 8x2 + 1.

Les Tn obéissent à l’équation différentielle

(1− x2)T ′′n − xT ′n + n2Tn = 0.

Ils sont orthogonaux sur l’intervalle [-1,1] par rapport à la fonction de poids

w =1√

1− x2.

Leur fonction génératrice s’écrit

g(x, u) =1− ux

1− 2ux + u2=

∞∑

k=0

ukTk(x)

5.15 Autres polynômes classiquesVoici les définitions de certaines suites moins fréquemment rencontrées.

Page 60: 21124286 Analyse Numerique French

An_Num 59

5.15.1 JacobiI = [−1, 1] ; w = (1− x)α(1− x)β ; α, β > -1Les polynômes de Jacobi recouvrent plusieurs cas particuliers intéressants : polynômes de Le-

gendre, pour α = β = 0, polynômes de Tschebychef de première espèce (α = β = - 1/2), dedeuxième espèce ( α = β = 1/2), de troisième espèce (α = - β = -1/2), de quatrième espèce (α =- β = 1/2) et polynômes de Gegenbauer (α = β = λ - 1/2).

5.15.2 Laguerre généraliséI = [0,∞] ; w = xαe−t ; α > −1.Les polynômes de Laguerre habituels sont obtenus en faisant α = 0 dans la définition des

polynômes généralisés.

5.15.3 Fonctions de Legendre associéesElles sont régies par l’équation différentielle suivante, où m est un entier inférieur ou égal à n

(1− x2)u′′ − 2xu′ +[n(n + 1)− m2

1− x2

]u = 0

qui se réduit à l’équation différentielle définissant les polynômes de Legendre habituels quandm = 0. La solution régulière est u(x) = Pm

n (x) et on peut montrer que

Pmn (x) = (1− x2)m/2 dm

dxmPn(x).

P pn est un polynôme en x lorsque m est pair. En posant x = cos θ, je met l’équation différentielle

sous une forme qui apparaît souvent dans les problèmes à symétrie sphérique

1sin θ

d

(sin θ

dv

)+

[n(n + 1)− m2

sin2 θ

]v = 0.

Les premières fonctions de Legendre associés s’écrivent

P 11 =

√1− x2 = sin θ ; P 1

2 = 3x√

1− x2 ; P 22 = 3(1− x2) = 3 sin2 θ

P 13 =

32(5x2 − 1)

√1− x2 ; P 2

3 = 15x(1− x2) ; P 33 = 15x(1− x2)3/2.

Page 61: 21124286 Analyse Numerique French

Chapitre 6

Dérivation et Intégration numériques

6.1 IntroductionDans ce chapitre, je m’intéresse au calcul numérique de la dérivée en un point d’une fonction et

au calcul (numérique) de l’intégrale d’une fonction sur un intervalle donné. Pour l’une ou l’autretâche, il est bon de traiter séparément le cas d’une fonction définie analytiquement (par une formule)et le cas d’une fonction définie numériquement (par une table de valeurs).

6.2 Dérivée d’une fonction analytique

6.2.1 Théorème de TaylorJe considère une fonction f définie par une formule ou un algorithme, dérivable dans un inter-

valle. Cette fonction est trop compliquée pour que le calcul analytique de sa dérivée soit pratique,mais je souhaite pourtant connaître la valeur numérique de f ′(x). Le procédé le plus simple s’inspirede la définition même de la dérivée. Soit f(x) la fonction à dériver, je sais que :

f ′ ∼= f(x + h)− f(x)h

.

Comment faut-il choisir h ? Ce paramètre doit être plus grand que le plus petit réel représentable(environ 10−38 en simple précision), sinon le calcul s’arrête et la machine affiche «Division parZéro !». h doit aussi être assez grand pour que f(x) et f(x + h) soit reconnus comme différents(10−7 en simple précision). Je suppose que h est assez grand pour être à l’abri des erreurs d’arrondi.Il faut maintenant éviter de tomber de Charybde en Scylla, et garder h assez petit pour que leserreurs de troncation soient négligeables. Ces dernières sont faciles à estimer. Je peux écrire uneversion exacte de la formule précédente, d’après le théorème de Taylor :

f ′ =f(x + h)− f(x)

h+

h

2f”(x + θh); 0 ≤ θ ≤ 1.

Vous voyez que l’erreur est O(h), ou encore que la formule est du premier ordre : elle est exactepour une fonction linéaire.

En faisant un petit effort d’imagination, je peux construire une formule plus précise, maisqui ne me coûtera aucun travail supplémentaire (même nombre d’évaluations de la fonction f).Appliquons deux fois le théorème de Taylor, pour les points x− h et x + h :

f(x + h) = f(x) + hf ′(x) + h2

2 f ′′(x) + O(h3)f(x− h) = f(x)− hf ′(x) + h2

2 f ′′(x) + O(h3)

60

Page 62: 21124286 Analyse Numerique French

An_Num 61

Grâce à la parité des termes en h2, ceux-ci disparaissent de la différence terme à terme des deuxlignes précédentes :

f ′(x) =f(x + h)− f(x− h)

2h+ O(h2).

Les erreurs d’arrondi sont les mêmes que précédemment, mais l’erreur de troncation est maintenanten h2, la formule est exacte pour les fonctions quadratiques.

Exemple. On a extrait d’une table les valeurs suivantes :

x ln x0.159 -1.838850.160 -1.832580.161 -1.82635

et on demande de calculer la dérivée de ln x en 0.160. J’ai trouvé

f(0.161)− f(0.160)0.001

= 6.23 ;f(0.161)− f(0.159)

0.002= 6.25.

Quelle est la valeur exacte ?

6.2.2 Méthode des coefficients indéterminésLa méthode des coefficients indéterminés permet de retrouver très facilement les formules d’ap-

proximation des dérivées, sans toutefois donner d’indications sur le terme d’erreur. Je cherche troisnombres a−, a0 et a+ tels que l’expression suivante soit «aussi exacte que possible» :

f ′(x) = a+f(x + h) + a0f(x) + a−f(x− h).

Je vais imposer trois conditions : la relation devra être vérifiée pour f = x0, x1, et x2 (les troispremières puissances de x). Ceci s’écrit :

0 = a+ + a0 + a−, 1 = a+(x + h) + a0x + a−(x− h), 2x = a+(x + h)2 + a0x2 + a−(x− h)2.

Ce système de trois équations linéaires à trois inconnues se résout facilement. Compte tenu de lapremière équation, la deuxième s’écrit :

1/h = a+ + a0 − a−.

Tenant compte de deux premières, la dernière équation devient :

0 = a+ + a−.

D’où je tire facilementa0 = 0, a+ = −a− = 1/2h.

L’heureuse disparition de certains termes dans les équations précédentes ne doit rien au hasard.Ces relations doivent être vérifiées quel que soit x : il faut donc que x ne figure pas dans le systèmequi détermine les coefficients a. J’aurais donc pu partir d’une valeur particulièrement commode dex, comme x = 0. Avec l’habitude, on peut gagner encore un peu de temps en posant h = 1 et enrestaurant h à la fin : f ′ a les dimensions de f/h.

Vous pourrez établir d’autres formules, en nombre limité uniquement par votre patience. Cer-taines impliqueront un grand nombre de valeurs de f , pour une erreur de troncation moindre,d’autres pourront être dissymétriques, pour s’approcher sans danger d’une discontinuité : on peut,par exemple, calculer f ′0 en fonction de f0, f1 et f2. Elles s’obtiennent par la méthode des co-efficients indéterminés, par le théorème de Taylor ou à partir des différences latérales (voir plusloin).

Page 63: 21124286 Analyse Numerique French

An_Num 62

De façon analogue, j’obtiens une approximation de la dérivée seconde en appliquant deux foisles règles précédentes. Ainsi :

hf ′′(x) ∼= f ′(x)− f ′(x− h) =f(x + h)− 2f(x) + f(x− h)

h.

Le terme d’erreur s’obtient aisément à l’aide du théorème de McLaurin : il dépend de h2f ′′′.

Exemple. La dérivée seconde de ln x, au point 0.160, vaut, d’après les données précédentes, -40.

6.2.3 Polynôme d’interpolationIl existe une autre méthode systématique pour construire des formules d’approximation de f ′ :

il suffit de dériver un polynôme d’interpolation de f . Je vous rappelle la formule de Newton im-pliquant les différences latérales :

P (x0 + hm) = f0 + m∆f0 +m(m− 1)

2∆2f0 + · · ·

dont la dérivée (par rapport à x = x0 + hm) est :

P ′(x0 + hm) =1h

[∆f0 +

12(2m− 1)∆2f0 + · · ·

].

Au point x0 (m = 0), je trouve :

P ′0 =1h

[∆f0 − 1

2∆2f0 + (1/3)∆3f0 − · · ·

].

On peut obtenir les dérivées d’ordre supérieur par cette méthode et pas mal d’algèbre.

6.2.4 Accélération de la convergenceL’extrapolation de Richardson permet d’améliorer la précision d’une approximation en n’utili-

sant qu’une connaissance qualitative du terme d’erreur. Je commence par estimer la dérivée de favec un pas h :

f ′(x) ∼= f(x + h)− f(x− h)2h

+h2

3f ′′′(ξ1) ≡ f ′1 + C1h

2,

puis avec un pas 2h :

f ′(x) ∼= f(x + 2h)− f(x− 2h)4h

+ 4h2

3f ′′′(ξ2) ≡ f ′2 + 4C2h

2.

À une certaine approximation, je peux considérer que C1 = C2, si bien qu’en ajoutant 4 fois lapremière équation à l’opposée de la seconde, j’obtiens :

f ′ ∼= (4f ′1 − f ′2)/3 = f ′1 + (f ′1 − f ′2)/3

apparemment sans terme d’erreur. En réalité, l’erreur de troncation n’ôa pas disparue, mais elle estmaintenant d’un ordre plus élevé (lequel ?). L’extrapolation de Richardson peut s’appliquer chaquefois que l’on utilise une approximation dépendant d’un paramètre lequel tend de façon continuevers zéro et à condition de connaître l’expression du terme principal de l’erreur.

Page 64: 21124286 Analyse Numerique French

An_Num 63

6.3 Dérivée d’une fonction empiriqueJe peux avoir à calculer la dérivée d’une fonction définie par une table de valeurs, soit qu’elle

ait été calculée par quelqu’un d’autre, soit qu’elle résulte de mesures expérimentales. Les méthodesprécédentes se révèlent être malcommodes dans ce cas. D’une part, le pas h est maintenant imposéet n’est pas forcément adapté au but que je poursuis. De plus, les entrées dans la table ne sont pasforcément équidistantes. D’autre part (et là, je pense surtout à des résultats expérimentaux), lesinévitables erreurs de mesures vont être amplifiées par la division par h (qui est «petit»). Consi-dérez en effet deux entrées successives prises dans une table de résultats expérimentaux :

variable indépendante variable dépendantexk yk + bk

xk+1 yk+1 + bk+1

J’ai supposé que les valeurs de x étaient connues sans erreur, alors que les valeurs de y étaiententachées d’une erreur aléatoire (un bruit) b. Une valeur approchée de la dérivée est alors :

y′ ∼= yk+1 − yk

xk+1 − xk+

bk+1 − bk

xk+1 − xk.

La première fraction est la dérivée cherchée ; sa valeur dépend peu de la différence xk+1−xk (tantque l’on respecte les contraintes exposées au début de ce chapitre). La deuxième fraction est unefluctuation aléatoire d’autant plus grande que l’intervalle tabulaire est petit, tant que les valeurssuccesives de b ne sont pas corrélées.

Une première manière d’éviter ces difficultés consiste à construire un polynôme d’interpolations’appuyant sur les points x−m, x−m+1, . . . , x0, . . . , xm. En supposant que c’est f ′0 qui m’intéresse, jen’ai plus qu’à dériver ce polynôme. Le polynôme de Lagrange ou la fonction spline, avec 2 à 4 pivots,donnent de bons résultats. Une autre méthode consiste à construire un polynôme d’approximationau sens des moindres carrés, puis à dériver cette expression. Pour des abscisses équidistantes, lepolynôme et ses dérivées ont des expressions simples (on parle souvent de polynômes de Golay).C’est la méthode que je recommande.

6.4 Intégration numérique : généralitésJe regarde maintenant vers le calcul numérique d’intégrales (on dit aussi quadrature numérique).

Il importe de distinguer le cas de l’intégrale définie :

I =∫ b

a

f(x)dx

où je cherche un nombre I connaissant un intervalle [a, b] et la fonction f , de celui de l’intégraleindéfinie :

J(x) =∫ x

a

f(x)dx

où je calcule en fait une suite de nombres, représentant la fonction J(x). Ce dernier cas est géné-ralement abordé comme un problème différentiel :

J ′ = f(x); J(a) = 0.

et ceux-ci seront traités au chapitre suivant.Je vais donc chercher à approcher numériquement une intégrale définie. Toutes les méthodes

que j’envisagerai peuvent s’écrire sous la forme la forme :

I =∫ b

a

f(x)dx =n∑1

Hjf(xj) + E

Page 65: 21124286 Analyse Numerique French

An_Num 64

où E est l’erreur de troncation, les xj des abscisses (pivots ou noeuds) et les Hj des «poids». Jedécrirai deux sortes d’algorithmes. Pour une première classe (Newton-Cotes), les pivots sont équi-distants et les poids sont les seuls paramètres ajustables ; comme il y en a n, je pourrai satisfaire ncontraintes et rendre la méthode exacte pour un polynôme de degré n−1. Dans une deuxième classe(Gauss), les pivots et les poids seront considérés comme ajustables ; le choix de ces 2n paramètresnous permettra de rendre la méthode exacte pour un polynôme de degré 2n− 1. Évidemment, lesméthodes de Gauss sont plus performantes que celles de Newton-Cotes, puisqu’elles permettentune précision plus grande pour un même temps de calcul, au pris d’une théorie plus compliquée etd’une programmation un peu plus lourde.

6.5 Méthodes de Newton-CotesComme je ne sais pas intégrer analytiquement la fonction f , je la remplace par un polynôme

d’interpolation dont l’intégration est banale. J’appelle h l’intervalle entre pivots. Les diverses mé-thodes de ce groupe se distinguent par le choix des pivots dans l’intervalle d’intégration, supposéfini.

6.5.1 Intervalle ferméJe vais calculer l’intégrale de f(x) sur le segment [a, b], divisé en n intervalles de taille h ; je

pose donc

h = (b− a)/n, x0 = a, xn = b, xj = a + jh.

Le polynôme d’interpolation de Lagrange construit sur les pivots xj , 0 ≤ j ≤ n, s’écrit :

p(x) =n∑0

Lj(x)f(xj)

où Lj(x) représente un polynôme élémentaire de Lagrange. L’intégrale de p(x) est une approxima-tion de I :

I =∫ b

a

f(x)dx ∼=n∑0

Hjfj + E

où j’ai posé fj = f(xj), Hj =∫ b

aLj(x)dx. Une démonstration trop longue pour être exposée

ici permet d’aboutir aux formules ci-dessous pour l’erreur de troncation. Elles proviennent del’intégrale du terme d’erreur de la formule de Lagrange. Celle-ci contient un facteur f(n+1)(ξ) ouf(n+2)(ξ), où ξ est une fonction inconnue de x.

E =f (n+1)(ξ)(n + 1)!

∫ n

0

u(u− 1)(u− 2) · · · (u− n)du,n impair,

E =f (n+2)(ξ)(n + 2)!

∫ n

0

u2(u− 1)(u− 2) · · · (u− n)du,n pair.

Les «nombres de Cotes» Hj ont été calculés une fois pour toutes pour n ≤ 10. Les formules deNewton-Cotes les plus courantes sont résumées ci-dessous, avec la notation : Hj = hAWj . C est lecoefficient de hk+1f (k) dans le terme d’erreur, où k = n+1 si n est impair et k = n+2 si n est pair.

n A W0 W1 W2 W3 W4 C1 1/2 1 1 -1/12 trapèzes2 1/3 1 4 1 -1/90 Simpson3 3/8 1 3 3 1 -3/80 Simpson4 2/45 7 32 12 32 7 -8/945 Villarceau

Page 66: 21124286 Analyse Numerique French

An_Num 65

Ces formules se démontrent très facilement par la méthode des coefficients indéterminés, àcondition de ne pas demander l’expression de l’erreur. Je prends l’exemple de la première formulede Simpson. Je cherche trois nombres W0,W1 et W2 tels que :

∫ b

a

f(x)dx = W0f(a) + W1f(a + h) + W2f(a + 2h)

où b = a + 2h. Cette relation doit être exacte pour f = x0, x1 et x2, ce qui conduit au système :

2h = W0 + W1 + W2,2ah + 2h2 = aW0 + (a + h)W1 + (a + 2h)W2,(1/3)[6a2h + 12ah2 + 8h3] = W0a

2 + W1(a + h)2 + W2(a + 2h)2.

En substituant la première équation dans la seconde, puis les deux premières dans la troisième, jetrouve :

2h = W0 + W1 + W2,2h = W1 + 2W2,(8/3)h = W1 + 4W2.

système dont la solution est : W0 = W2 = h/3,W1 = 4h/3. Ici encore, j’aurais pu poser a = 0 dèsle début, puisque les coefficients doivent être indépendants de l’abscisse initiale.

6.5.2 Intervalles ouvertsIl peut arriver que la fonction à intégrer ne soit pas définie pour l’une des bornes de l’intervalle

d’intégration (ou pour les deux) ou qu’elle y présente une singularité quelconque. Il est alorssouhaitable de ne pas s’approcher «trop» de cette limite, ce qui est impossible avec le découpagede l’intervalle d’intégration que j’ai choisi (x0 = a, xn = b). Il existe des formules de quadraturedites «ouvertes» (parce qu’elles impliquent des intervalles ouverts) qui n’utilisent pas les valeursde la fonction aux bornes. Elles s’écrivent en général :

I =∫ b

a

f(x)dx =n−1∑

1

Hjf(xj) + E

où les bornes x0 et xn ne figurent pas. La formule «ouvertes» la plus courante, que j’appelle-rai «formule du point milieu», par analogie avec le terme anglais, est définie (avec les notationsprécédentes) par n = 2, A = 2 et W1 = 1, soit encore :

I =∫ a+2h

a

f(x)dx = 2hf [(a + b)/2] + (h3/24)f ′′(ξ).

6.5.3 Formules composéesQue faire si la précision d’une intégrale numérique me paraît insuffisante ? Une première possibi-

lité consiste à choisir une formule d’intégration d’ordre plus élevé. Comme dans le cas de l’interpo-lation polynômiale, cette solution est à rejeter, et pour les mêmes raisons : lorsque l’ordre n devientgrand (quand le degré du polynôme que l’on intègre en lieu et place de la fonction devient grand),le terme d’erreur peut avoir un comportement anarchique en fonction de ξ. La bonne méthode estsemblable à celle utilisée pour l’interpolation spline : découper l’intervalle d’intégration en plusieurs«sous-intervalles» et utiliser une méthode d’ordre peu élevé dans chaque sous-intervalle. Comme laborne droite du sous-intervalle de rang p coïncide avec la limite gauche du sous-intervalle de rangp + 1, je vais économiser un certain nombre d’évaluations de la fonction.

Page 67: 21124286 Analyse Numerique French

An_Num 66

Je divise par exemple l’intervalle global [a, b] en m sous intervalles et j’applique la méthode deNewton «fermée» d’ordre un dans chaque sous-intervalle. Il vient :

I =∫ b

a

f(x)dx = (h/2)[f0 + f1 + f1 + f2 + · · ·+ fm−2 + fm−1 + fm−1 + fm].

J’aboutis ainsi à la formule composée (ou composite ou encore étendue) de Newton-Cotes d’ordre1 (souvent appelée encore méthode des trapèzes) :

I =∫ b

a

f(x) = h[f0/2 + f1 + f2 + · · ·+ fm−2 + fm−1 + fm/2] + E

où tous les termes «intérieurs» ont doublé. L’application du théorème de la moyenne montreraitque

E = −(h2/12)(b− a)f ′′(ξ), x0 ≤ ξ ≤ xm.

Dans la pratique, on programme ce calcul de façon itérative. Supposez que je connaisse I(m),calculée avec m sous-intervalles, mais que la précision me paraisse encore insuffisante. Je calculealors I(2m) à partir de I(m) et des seules nouvelles valeurs de f , aux points intermédiaires,d’abscisses (i + 1/2)h. Je recommence tant que le critère de convergence n’est pas atteint. Quelcritère d’arrêt vais-je choisir ? Ce peut être la condition que la variation relative de l’intégrale d’uneétape à l’autre est inférieure à un seuil choisi à l’avance : |[I(m + 1)− I(m)]/I(m)| ≤ ε.

On opère de la même manière avec les formules de Newton-Cotes «ouvertes». Cependant,doubler le nombre d’intervalles n’apporte aucune économie, puisque ceux-ci ne comportent aucunpivot commun. Je vous suggère de vérifier qu’il faut tripler le nombre d’intervalles à chaque itérationpour économiser des calculs. Il est possible de combiner une formule de Newton-Cotes ouverte avecm− 1 formules fermées : ceci pourrait servir à éviter une région «dangereuse» autour de x = a.

Comme les termes d’erreur de toutes les méthode de Newton-Cotes sont connus, il est tentantd’améliorer la précision d’une quadrature, sans trop d’effort, par l’extrapolation de Richardson.En réalité, cela se fait rarement, car on connaît une généralisation puissante de l’extrapolation deRichardson : c’est la méthode de Romberg que je vais décrire dans le paragraphe suivant.

Exemple. On demande de calculer l’intégrale de 1/x de 1 à 3 avec deux puis quatre sous-intervalles, par la méthode des trapèzes. Je trouve :

m = 2 : I2∼= (1)

[12(1) + 1/2 +

12(1/3)

]= 7/6 = 1, 166666...;

m = 4 : I4∼= (1/2)

[12(1) + 2/3 + 1/2 + 2/5 +

12(1/3)

]= 67/60 = 1, 116666...

La formule de Richardson donne : I ∼= I4+(1/3)(I4−I2) = 11/10 = 1, 1, soit une erreur relativeun peu supérieure à 1/1000.

6.6 Méthode de RombergJ’utilise la notation Ik,0 = valeur approchée de I, calculée par la méthode des trapèzes en

utilisant m = 2k sous-intervalles. En utilisant une expression du terme d’erreur plus précise quecelle mentionnée (et non démontrée) au paragraphe précédent, je pourrais écrire

Ik,0 = I −∞∑

j=1

αj

[b− a

2k

]2j

.

Page 68: 21124286 Analyse Numerique French

An_Num 67

Si je répète le même calcul avec des intervalles deux fois plus nombreux et deux fois plus petits,j’ai

Ik+1,0 = I −∞∑

j=1

αj

[b− a

2k+1

]2j

.

Comme pour une extrapolation de Richardson, je forme :

Ik,1 = 4Ik+1,0 − Ik,0 = 3I −∞∑

j=2

αj

[b− a

2k

]2j [−1 + 4/22j].

Je viens de gagner un ordre dans le développement de l’erreur en fonction des puissances de (b−a).Le procédé se généralise aisément. Je construis un tableau triangulaire dont la première colonneest formée des Ik,0, la deuxième des Ik,1 et dont le terme général s’écrit :

Ik,m+1 =4mIk+1,m − Ik,m

4m − 1.

Le gros du travail est effectué lors du calcul des Ik,0, puisque c’est à ce moment-là que je calculela fonction compliquée f ; la suite n’est qu’une série de combinaison linéaires. Si k ≤ K, alorsle dernier élément de la diagonale principale, IK,K , est la meilleure approximation de I que l’onpuisse obtenir en évaluant 2K fois f .

J’ai écrit le programme présenté ci-dessous pour mettre en oeuvre l’algorithme de Romberg. Jecommence par remplir la première colonne d’un tableau J(l,c) par des valeurs calculées selon laméthode des trapèzes. Vous pouvez constater qu’à chaque étape je ne calcule que les valeurs stric-tement nécessaires de la fonction. Je garnis ensuite les autres colonnes selon la formule de Romberg.

1 // romberg2 function y = fn (x )3 y = exp( x ) . ∗ cos ( x )4 endfunction5 lmax = 5 ;6 a = 0 ; b = %pi ;7 h = b − a ;8 J (1 , 1 ) = 0 .5∗h∗( fn ( a ) + fn (b ) ) ;9 for l = 2 : lmax10 h = h/2 ;11 x = a+h :2∗h : b−h ;12 d i = h∗sum( fn (x ) )13 J ( l , 1 ) = 0 .5∗ J ( l −1) + di ;14 end15 for c = 2 : lmax16 for l = c : lmax17 J ( l , c ) = ((4^( c−1))∗J ( l , c−1)−J ( l −1,c−1))/(4^( c−1)−1);18 end19 end20 J21 Jex = −(exp(%pi )+1)/2

La valeur exacte est −(eπ + 1)/2 = −12.070346 ; voici les résultats obtenus :

- 34.778519 0. 0. 0. 0.- 17.389259 - 11.59284 0. 0. 0.- 13.336023 - 11.984944 - 12.011084 0. 0.- 12.382162 - 12.064209 - 12.069493 - 12.07042 0.- 12.148004 - 12.069951 - 12.070334 - 12.070347 - 12.070347

Page 69: 21124286 Analyse Numerique French

An_Num 68

Au prix de quelques opérations arithmétiques, l’erreur finale est passée de 7 10−2 à 10−6.

6.7 Intégration de GaussJ’abandonne maintenant l’hypothèse que les pivots sont régulièrement répartis sur l’axe ; je

cherche au contraire à les répartir «au mieux» pour avoir un algorithme aussi exact que possible.J’aurais toujours

I =∫ b

a

f(x)dx =n∑1

pjf(aj) + E.

Ici, la méthode des coefficients indéterminés est assez malcommode ; lorsque j’impose que la formuleci-dessus soit exacte pour x0, x1, . . . , xk, . . ., j’obtiens un système d’équations non-linéaires ( en aj)dès que k > 1, système dont la solution est en général inaccessible.

Je vais plutôt utiliser un raisonnement indirect, à partir du polynôme d’interpolation de Her-mite. La formule d’interpolation de Hermite s’écrit :

f(x) =n∑1

hj(x)f(aj) +n∑1

h∗j (x)f ′(aj) + [π(x)]2f2n(ξ)(2n)!

.

Le terme d’erreur disparaît si f est un polynôme de degré 2n− 1 au plus. J’intègre terme à termecette relation entre les abscisses a et b :

I =∫ b

a

f(x)dx =n∑1

Hjf(aj) +n∑1

H∗j f ′(aj) + E

où Hj et H∗j sont respectivement les intégrales de hj(x) et de h∗j (x) entre les mêmes bornes. Cette

formule d’intégration est exacte pour tout polynôme de degré inférieur à 2n : c’est le mieux que jepuisse faire avec les 2n paramètres Hj , aj .

Pour obtenir la forme annoncée, il faut que les H∗j soient tous nuls. Comment parvenir à ce

résultat ? Les seuls paramètres dont je dispose sont les aj . Je dois donc choisir ces nombres de tellemanière que l’intégrale de h∗j soit nulle. Je vous rappelle la forme de ce polynôme (établie dans lechapitre 2) : h∗j (x) = (x− aj)[Lj(x)]2, si Lj est le polynôme élémentaire de Lagrange construit surles {aj}. En utilisant une fois la relation Lj = π(x)/((x− aj)π′(aj)), j’obtiens

H∗j =

∫ b

a

(x− aj)[Lj(x)]2 =∫ b

a

π(x)Lj(x)π′(aj)

dx.

Je veux que cette intégrale soit nulle ; autrement dit, je veux que les polynômes π(x) et Lj(x)soient orthogonaux sur le segment [a, b] par rapport à la fonction de poids w ≡ 1.

Vous savez que π(x) (défini en 2.5) est le produit de tous les termes de la forme x− aj : π(x)est défini (implicitement) par l’ensemble de ses zéros. Il doit être orthogonal aux Lj , polynômesélémentaires de Lagrange pour n pivots, donc de degré n− 1. Plutôt que d’imposer cette conditionparticulière, je vais imposer une condition plus générale : π devra être orthogonal à tout polynômede degré n−1 ou inférieur. Je vous laisse le soin de démontrer la proposition réciproque et j’admetsque la condition nécessaire et suffisante pour que la formule de Gauss soit valable est que π(x) soitorthogonal à tout polynôme de degré inférieur, pour une fonction de poids égale à l’unité, sur [a, b].

A quelques détails près, vous connaissez des polynômes répondant à cette définition : ce sontles polynômes de Legendre. Pour que l’identification soit parfaite, il faut ramener l’intervalle d’in-tégration à [-1, 1] et, si l’on veut être très soigneux, normaliser correctement π(x). Le changementde variable x = 1

2 (a + b)− 12 (a− b)t permet d’intégrer sur [-1,1] :

I =∫ b

a

f(x)dx =12(b− a)

∫ 1

−1

f(t)dt.

Page 70: 21124286 Analyse Numerique French

An_Num 69

Si maintenant je choisis comme pivots aj les zéros du polynôme de Legendre de degré n,π(x) coïncidera, à un facteur constant près, avec ce polynôme ; sur le segment [-1, 1] il sera doncorthogonal à tout polynôme de degré inférieur, et en particulier aux Lj(x).

Il reste à calculer les poids, à partir de l’expression des hj(x). On montre assez facilement que

Hk =∫ 1

−1

[Lk(x)]2.

d’où l’on déduit que

Hk =∫ 1

−1

Lk(x)dx.

Il existe des tables des arguments et des poids pour l’intégration de Gauss, pour n jusqu’à 128.Pour éviter les erreurs de transcription, il vaut mieux écrire un sous-programme pour les recalculer.

Exemple. Je calcule la même intégrale qu’au paragraphe précédent, avec trois pivots. Les tablesdonnent :

aj 0 ±0.774597Hj 8/9 5/9

Le changement de variable y = x−2 transforme l’intervalle [1,3] en [-1,1] et l’intégrant en 1/(y+2).Un calcul élémentaire donne alors I ∼= 1.098039, pour une erreur relative un peu supérieure à5.10−4.

6.8 GénéralisationsEn choisissant un autre intervalle d’intégration et une autre fonction de poids, on peut construire

de nouvelles formules d’intégration de type gaussien. Je sais par exemple que les polynômes deLaguerre sont orthogonaux sur [0,∞ ] par rapport à la fonction de poids e−x. Je peux donc écrire :

∫ ∞

0

e−xf(x)dx =n∑1

Wjf(aj) + E,

où les aj sont les zéros du polynôme de Laguerre d’ordre n et les Wj des poids calculables facilement.Chaque famille de polynômes orthogonaux donne ainsi naissance à une formule d’intégration.

Il ne faut pas s’empresser de conclure que l’on peut intégrer n’importe quelle fonction entrezéro et l’infini, au prix du calcul des valeurs de f en quelques points. Par ailleurs, aucun algorithmenumérique ne pourra transformer une intégrale divergente en intégrale convergente. J’écris quelquesformules pour préciser la question.

∫ ∞

0

g(x)dx =∫ ∞

0

e−x[exg(x)]dx =∫ ∞

0

e−xf(x)dx

où f = exg ; ces relations n’ont rien d’anormal, mais c’est lorsque je tenterai d’appliquer la formulede Gauss-Laguerre à f que les problèmes apparaîtront. Si g ne décroît pas assez vite à l’infini, leterme d’erreur, en f (2n), deviendra rapidement intolérable.

Que faire si la précision sur l’intégrale obtenue par la méthode de Gauss est insuffisante ?Il existe ici encore deux possibilités : utiliser une formule d’ordre supérieure ou employer uneméthode composée. Comme d’habitude, la première solution est à rejeter. La seconde est assezsimple à mettre en oeuvre. Je divise l’intervalle [a, b] en m sous-intervalles, [xm, xm+1]. Pour chaquesous-intervalle, je fait un changement de variable qui ramène les bornes à -1,1 et j’emploie uneformule de Gauss d’ordre peu élevé. Comme aucun pivot ne coïncide avec les bords des intervalles,on n’économise aucun calcul, à la différence des méthodes de Newton fermées. Cependant, laprécision est largement supérieure à ce que l’on obtient avec Newton-Cotes ; de plus, l’existence dediscontinuités en a ou b est peu gênante, puisque ces points ne sont pas des pivots.

Page 71: 21124286 Analyse Numerique French

An_Num 70

6.9 Intégrales généraliséesUne intégrale généralisée est mathématiquement bien définie ; l’ennui, c’est que l’ordinateur ne

le sait pas. Par exemple, le calcul analytique de

J =∫ ∞

0

xne−xdx

est facile, mais, par définition, un algorithme comporte un nombre fini d’opérations. Commentalors intégrer numériquement jusqu’à +∞ ? Vous connaissez une réponse dans ce cas particulier :on peut employer la méthode de Gauss-Laguerre.

Pour un intégrant quelconque, je peux calculer certaines intégrales généralisées en faisant unchangement de variable astucieux. Si a > 0, je peux écrire :

∫ ∞

a

f(x)dx =∫ 1/a

0

1t2

f(1t)dt.

Un changement de variable analogue est valable pour a < 0.Il peut aussi arriver qu’un même changement de variable soit malcommode sur l’ensemble de

l’intervalle d’intégration : il faut alors couper celui-ci en deux ou plusieurs morceaux.Je suppose maintenant que f(x) est équivalente à (x− a)−1/2 pour x proche de a (a < b). Un

nouveau changement de variable fera disparaître cette singularité intégrable :

∫ b

a

f(x)dx =∫ √

b−a

0

2tf(a + t2)dt.

6.10 Intégrales multiplesJ’examine, pour fixer les idées, le cas d’une intégrale double ; je cherche l’intégrale de f(x, y)

dans un domaine D. Les valeurs extrêmes de x dans D sont x1 et x2 ; pour une valeur donnée de x,les valeurs extrêmes de y sont y1(x) et y2(x). J’intègre d’abord par rapport à y, puis par rapportà x :

J =∫ ∫

f(x, y)dxdy =∫ x2

x1

dx

∫ y2(x)

y1(x)

f(x, y)dy

Ayant fait le choix d’une méthode numérique pour calculer l’intégrale en y, je peux programmerune fonction dont la valeur sera :

I(x) =∫ y2

y1

f(x, y)dy

où les bornes y1 et y2 dépendent de x. Je suis maintenant capable de calculer l’intégrale de I(x) :

J =∫ x2

x1

I(x)dx

On remarque que la suite logique des opérations dans l’ordinateur est l’inverse de celle qui vientd’être décrite. Le programme d’intégration en x «choisit» les pivots dont il a besoin ; pour chaquepivot, il appelle I(x), qui «décide» pour son propre compte des valeurs de y à utiliser. L’ensembleest en général plus précis que le calcul a priori de f(x, y) sur un quadrillage régulier de points, suivid’intégrations. Dernière remarque : si l’on utilise un sous-programme d’intégration («trapèze» parexemple), qui sera appelé aussi bien pour calculer I(x) que J , il faut prendre garde à ne pas laissercroire au programme que l’on utilise une procédure récursive, s’appelant elle-même.

Page 72: 21124286 Analyse Numerique French

Chapitre 7

Problèmes différentiels à conditionsinitiales

7.1 IntroductionBeaucoup de phénomènes physiques ou chimiques se traduisent mathématiquement par une ou

plusieurs équations différentielles. D’autre part, les cours de mathématiques sont riches de méthodesanalytiques de résolution des équations différentielles : on pourrait croire que l’analyse numériqueest inutile dans cette partie des mathématiques. La réalité est tout autre : seule une infime minoritédes équations différentielles est analytiquement soluble, particulièrement les équations linéaires. Amesure que l’on s’écarte des problèmes scolaires pour s’approcher des questions réelles, les équationsdifférentielles deviennent «de moins en moins» linéaires et de moins en moins solubles. Exemple :le pendule simple dont le mouvement est décrit, en l’absence de frottement par l’équation exacte :

y′′ + k2 sin y = 0.

Dans le domaine des équations différentielles, on distingue deux types de problèmes bien différents.Les problèmes à condition(s) initiale(s) (ou « de Cauchy »), dont un exemple s’écrit :

y′ = f(x, y) ; y(a) = Ya ; x ≥ a, (7.1)

et les problèmes aux limites, comme par exemple :

y” = g(x, y, y′) ; y(a) = A ; y(b) = B ; a ≤ x ≤ b.

Dans ce chapitre, je ne considère que la première catégorie, les problèmes à condition(s) initiale(s),que l’on rencontre aussi bien en mécanique qu’en cinétique chimique.

Il est aussi important de bien faire la différence entre équation différentielle et problème dif-férentiel. La première admet diverses solutions, dépendant de paramètres qui sont les conditionsinitiales ; on peut parfois la déterminer analytiquement, mais jamais numériquement. Le seconda une seule solution et c’est l’objet de ce chapitre que d’expliquer comment on peut la calculernumériquement.

Toutes les méthodes de résolution numérique des problèmes différentiels utilisent une discréti-sation. Ayant fait choix d’un pas h, on va calculer la solution y pour les valeurs kh de la variableindépendante, yk = y(kh) et y0 = y(a). Les divers algorithmes se distinguent par les informationsqu’ils utilisent pour calculer yk : certains emploient yk−1 uniquement (on parle de méthode à passéparés), d’autres utilisent un certain nombre de valeurs précédentes de y, dont yk−1 (ce sont lesméthodes à pas liés ou à pas multiples).

71

Page 73: 21124286 Analyse Numerique French

An_Num 72

Je supposerai presque toujours que l’équation différentielle à résoudre est du premier ordre etqu’elle est résolue en y′ ; en général, j’appelle x la variable indépendante. Il arrive que l’équationdifférentielle ne soit pas résoluble en y′ : on parle alors de problème algébrodifférentiel, dont l’étudesort du cadre de ce cours. L’hypothèse d’un problème du premier ordre peut paraître fort éloignéede la réalité ; c’est tout à fait vrai, mais ce n’est pas trop grave, comme vous allez le voir. Touteéquation différentielle d’ordre supérieur à un peut s’écrire comme un système différentiel d’ordreun. Soit par exemple l’équation du second ordre :

y” = g(x, y, y′). (7.2)

J’introduis la variable auxiliaire z = y′ ; je peux maintenant écrire l’équation précédente sous laforme équivalente {

z′ = g(x, y, z),y′ = z.

(7.3)

Je suis maintenant confronté à un système d’équations différentielles (ou système différentiel)du premier ordre. Plus généralement, un système différentiel du premier ordre à deux fonctionsinconnues s’écrit : {

z′ = g(x, y, z),y′ = h(x, y, z). (7.4)

Dans le cas précédent, la fonction h se réduisait à la variable z. Si j’introduis deux vecteurs :r = {y, z} et s = {h, g}, le système ci-dessus prend la forme :

r′ = s(x, r). (7.5)

Cette écriture est commode car elle permet d’obtenir sans peine un algorithme de résolution d’unsystème différentiel : il suffit de transposer en notation vectorielle l’algorithme valable pour uneéquation différentielle (du premier ordre). Les ouvrages classiques d’analyse numérique développentlargement les théories relatives à la résolution des problèmes différentiels à une fonction inconnue,mais sont discrets quant aux systèmes différentiels ; je suivrai cet exemple et j’admettrai que lesalgorithmes développés pour une fonction inconnue sont encore valables pour plusieurs fonctions.

Avant d’aborder les algorithmes purement numériques, je passe en revue quelques méthodesanalytiques qui peuvent servir à des calculs numériques.

7.2 Méthodes analytiques

7.2.1 Développement de TaylorJe cherche la solution du problème différentiel classique y′ = f(x, y), y(a) = ya. Le théorème

de Taylor offre, au moins en principe, une solution

y(x) = y(a) + (x− a)y′(a) +12(x− a)2y”(a) +

16(x− a)3y′′′(a) + ....

Je connais y(a) (condition initiale), y′(a) (par substitution dans l’équation différentielle), y”(a) ettoutes les dérivées d’ordre supérieur (par dérivation et substitution dans l’équation différentielle !).Ainsi :

y′′ = [f(x, y)]′ = fx + ffy, (7.6)où fx, fy représentent les dérivées partielles de f par rapport aux variables indiquées. Ensuite :

y′′′ = fxx + 2ffxy + f2fyy + fxfy + ff2y .

La méthode est simple mais devient rapidement laborieuse. De plus, j’ai montré (chapitre 1, Cal-cul et tracé de fonctions) que le développement de Taylor pouvait converger très lentement. Enconséquence, cette méthode ne s’emploie que «localement» : pour calculer yn+1 à partir de yn oupour calculer, à l’aide des conditions initiales, les premières valeurs de y dont certains algorithmesont besoin pour démarrer et calculer la suite des yk.

Page 74: 21124286 Analyse Numerique French

An_Num 73

7.2.2 Méthode des coefficients indéterminés (Frobenius)Je fais l’hypothèse que y peut s’écrire :

y = c0 + c1x + c2x2 + c3x

3 + · · ·et donc que :

y′ = c1 + 2c2x + 3c3x2 + · · ·

En substituant ces développements dans l’équation différentielle, j’obtiens des relations entre co-efficients ci, que je résous de proche en proche, à partir de c0 = ya. Ayant un certain nombrede coefficients, il est simple de calculer y, à une certaine précision. Cette méthode est aussi assezlaborieuse.

7.2.3 Méthode de Picard, ou d’approximations successivesJe me propose toujours de résoudre le problème de Cauchy (7.1). J’intègre les deux membres

de l’équation différentielle, entre a et x (en renommant u la variable indépendante) :∫ x

a

y′du = y(x)− y(a) =∫ x

a

f(u, y)du

Je ne sais bien sûr pas calculer l’intégrale du second membre (ce qui reviendrait à savoir résoudrel’équation différentielle), aussi vais-je procéder à une approximation brutale : je remplace y parune «approximation d’ordre zéro», y[0], que je prends égale à ya ; l’intégrale est alors calculable enprincipe ; le résultat me donne l’approximation suivante de y, soit y[1] :

y[1] = y(a) +∫ x

a

f(u, y[0])du

J’itère ce procédé, jusqu’à ce qu’un critère de convergence convenable soit atteint :

y[n] = y(a) +∫ x

a

f(u, y[n−1])du.

Cette méthode est peut-être encore plus lente que les précédentes !Depuis quelques années, on trouve dans le commerce des programmes de manipulation al-

gébrique (DERIVE, MAPLE, MATHEMATICA, MACSYMA, MUPAD, etc.) fonctionnant surmicroordinateurs et capables de faire seuls les calculs algébriques des trois méthodes précédentes.Il est à prévoir que ces algorithmes vont connaître de ce fait une nouvelle jeunesse.

J’aborde maintenant les méthodes véritablement orientées vers l’analyse numérique, en com-mençant par un cas d’école.

7.3 Méthode d’Euler et méthodes de Taylor

7.3.1 Algorithme d’EulerLa méthode d’Euler n’est jamais employée en pratique (sauf peut-être comme constituant d’une

méthode de résolution d’équations aux dérivées partielles), mais c’est un excellent exemple intro-ductif, généralisable dans plusieurs directions intéressantes. L’algorithme proposé par Euler pourrésoudre (7.1) s’écrit :

yn+1 = yn + hf(xn, yn) = yn + hfn. (7.7)

Je peux donner trois interprétations de cette formule.* Approximation de la dérivée. La dérivée de y au point xn est à peu près y′n ' (yn+1− yn)/h ;

en écrivant qu’elle vaut fn, je retrouve la méthode d’Euler.

Page 75: 21124286 Analyse Numerique French

An_Num 74

* Approximation d’une intégrale. J’intègre les deux membres de l’équation (7.1) :

y(xn+1)− y(xn) = yn+1 − yn =∫ xn+1

xn

f [t, , y(t)]dt

Je remplace l’intégrale du second membre par son approximation la plus simple, l’aire d’un rectanglede base h et de hauteur fn, ce qui donne :

yn+1 − yn = hfn.

* Développement de Taylor. Supposant connu yn, je peux déterminer yn+1 à l’aide du théorèmede Taylor :

y(xn + h) = y(xn) + hy′n + O(h2).

En négligeant le terme d’erreur et en identifiant y′ et f , je retrouve la formule d’Euler.Je termine par un résumé des caractéristiques de la méthode d’Euler. Pour calculer yn+1,

j’utilise la valeur de yn et pas celles de yn−1, yn−2, ... Il s’agit donc d’une méthode à pas séparés.Pour passer de yn à yn+1, je ne calcule f qu’une fois (Les méthodes de Runge-Kutta qui serontexposées plus loin utilisent plusieurs valeurs de f pour améliorer la précision sur y′). L’algorithmene fait appel qu’à f = y′ et pas à ses dérivées d’ordre supérieur (Certains algorithmes s’appuientsur un développement de Taylor, et donc sur y[n], qui dépend des dérivées de f).

La programmation de l’algorithme d’Euler est des plus simples. Voici une ébauche de pro-gramme.

Lire h, x0, y0, xmax

Initialiser x à x0, y à y0

Tant que x < xmax faire :calculer f = f(x,y)

y := y + hfx := x + himprimer x, y

La généralisation à un système différentiel est immédiate, en principe. La fonction inconnue, savaleur initiale et le second membre sont maintenant remplacés par des vecteurs de <n :

Lire h, x0, xmax,y0

Initialiser x à x0, y à y0

Tant que x < xmax faire :calculer :

f = f(x, ,y)y := y + hfx := x + h

imprimer x,y

Il faut traiter sur un pied d’égalité toutes les coordonnées de chaque vecteur.

Exemple

Le programme ci-dessous résout, par la méthode d’Euler, l’équation différentielle du pendulesimple : y” + sin y = 0. Comme j’ai posé y′ = z, je résous en fait le système du premier ordreéquivalent

y′ = z,z′ = − sin y.

Page 76: 21124286 Analyse Numerique French

An_Num 75

1 //mouvement du pendule par Euler2 function F = smy( t , y , z )3 F = z ;4 endfunction5 function F = smz( t , y , z )6 F = −sin ( y ) ;7 endfunction8 function [ yf , z f , t f ] = eu l e r (h , t i , yi , z i )9 y f = y i + h∗smy( t i , yi , z i ) ; z f = z i + h∗smz( t i , yi , z i ) ;10 t f = t i + h ;11 endfunction12 np = 600 ;13 t = zeros (np , 1 ) ;14 y = zeros ( t ) ; z = zeros ( t ) ;15 y0 = input ( ’ p o s i t i o n i n i t i a l e : ’ ) ;16 z0 = input ( ’ v i t e s s e i n i t i a l e : ’ ) ;17 pas = input ( ’ longueur du pas : ’ ) ;18 t (1 ) = 0 ; y (1 ) = y0 ; z (1 ) = z0 ;19 for i = 2 : np do20 [ y ( i ) , z ( i ) , t ( i ) ] = eu l e r ( pas , t ( i −1) ,y ( i −1) , z ( i −1)) ;21 end22 plot2d ( t , y )

Les deux seconds membres apparaissent dans le programme sous forme de function smy, function smz ;la function euler calcule la solution en tf=ti+pas. Ces trois sous-programmes sont inutilementcompliqués : ils contiennent par exemple la variable indépendante (t), sans objet ici, mais ilspeuvent s’adapter facilement au cas d’un pendule soumis à un couple dépendant du temps. Vouspouvez vérifier que yf,zf sont calculés indépendamment l’un de l’autre, avant incrémentation dutemps.Le programme principal ne fait que lire les paramètres et appeler euler à chaque tour dansla boucle.

-0.5

-0.4

-0.3

-0.2

-0.1

0

0.1

0.2

0.3

0.4

0 5 10 15 20 25 30

"D:/an/an_poly-6/pdl_eul.dta"

Fig. 7.1 – : Mouvement du pendule simple obtenu par l’algorithme d’Euler. Le pas était de 0,05.

Page 77: 21124286 Analyse Numerique French

An_Num 76

La figure montre le résultat de l’exécution. Comme vous pouvez le constater, la qualité de laméthode laisse à désirer : l’amplitude augmente nettement avec le temps.

Remarque sur la programmation sous Scilab

Scilab n’est pas un langage de programmation très structuré ; en particulier, il n’est pas né-cessaire de déclarer les variables avant de les utiliser. Cependant, on gagne un peu de temps àl’exécution si l’on déclare à l’avance les tableaux, avec leurs dimensions. Si on ne le fait pas, Scilabagrandit les tableaux chaque fois que nécessaire.

7.3.2 Méthodes de TaylorComme je l’ai indiqué au §2.1, la méthode d’Euler peut être considérée comme une applica-

tion, à l’ordre 1, du développement de Taylor. J’ai aussi montré comment l’on pouvait utiliser undéveloppement d’ordre supérieur ((7.6). Je rappelle qu’il faut calculer, jusqu’à l’ordre souhaité, lesdérivées de y, par les relations de récurrence :

y′ = f(x, y) ; y” = fx(x, y) + fy(x, y)f ≡ f (1),

f (k) = f (k−1)x + f (k−1)

y f,

puis déduire yi+1 par :

yi+1 = yi + h

[f(xi, yi) + . . . +

hp−1

p!f (p−1)(xi, yi)

]

Cet algorithme n’est intéressant que si les f (k) se calculent facilement.

7.3.3 Erreurs, précision, stabilitéJe n’ai pas la prétention de construire la solution exacte du problème différentiel grâce à l’algo-

rithme d’Euler ; le résultat du calcul pratique, soit yn, est en réalité entaché d’erreurs dont il fautbien comprendre la nature.

Je suppose d’abord que je peux calculer avec un très grand nombre de chiffres significatifs. Lerésultat yn ne serait pas pour autant exact : il a en effet été obtenu à l’aide d’une approximation.A l’aide de l’une des interprétations données ci-dessus de l’algorithme d’Euler, je pourrais bornerl’erreur commise en passant de yk à yk+1 (erreur locale de troncation), puis estimer l’erreur detroncation globale qui sépare yn de la solution exacte évaluée en xn :

tn = yn − y(xn).

J’imagine maintenant que je dispose d’un algorithme exact capable de calculer yn sans erreur detroncation. Le résultat a cependant été obtenu par une succession d’opérations arithmétiques, surune machine comportant un nombre limité de chiffres significatifs : il présente donc une certaineerreur d’arrondi :

en = yn − y(xn).

En pratique, les deux sources d’erreur coexistent. Nous ne développerons pas ici l’étude des erreurs.Le problème traité fournit parfois lui-même le moyen de contrôler la qualité de l’algorithme.

C’est le cas en particulier pour les problèmes de mécanique sans frottement, pour lesquels l’énergieest conservée. Il suffit alors de calculer périodiquement l’énergie du système : si la variation d’énergiedépasse le seuil prévu, on rejette les dernières itérations et on reprend le calcul avec un pas pluspetit.

Page 78: 21124286 Analyse Numerique French

An_Num 77

Une autre propriété importante d’un algorithme de résolution d’équations différentielles est lastabilité. Dans le cas de l’algorithme d’Euler, il est facile d’apprécier la stabilité en étudiant un«problème modèle». Je considère le problème différentiel :

y′ = y; y(0) = 1.

Ici, f ≡ y et l’algorithme d’Euler s’énonce :

yn+1 = yn + hyn = (1 + h)yn.

Il s’agit d’une relation de récurrence (on dit aussi une équation aux différences) pour yn+1. Commey0 = 1, je trouve :

yn = (1 + h)n.

Vous voyez que yn croit indéfiniment pour tout h > 0 : on dit qu’il n’y a pas stabilité «absolue».Par contre, l’algorithme est «relativement stable», c’est à dire que yn/y → 1 pour h → 0. Pour lemontrer, il suffit de remarquer que x = nh et donc que :

yn = [(1 + h)1/h]x → ex.

Si c < 0, on a encore yn → e−|c|x. Il y a toujours stabilité relative. Mais yn ne sera uniformémentdécroissant (comme la solution exacte) que si |1+hc| < 1. Comme c = −|c|, cela implique h < 2/|c|.

7.4 Méthodes de Runge-KuttaLes méthodes que nous allons décrire dans ce paragraphe peuvent être considérées comme des

généralisations de celle d’Euler, où l’on calcule f (le second membre) plusieurs fois par pas, pourréduire l’erreur de troncation. Ce sont aussi probablement les méthodes les plus employées dans lapratique. Nous exposerons la théorie pour une méthode d’ordre 2, bien que les applications fassentgénéralement appel à des méthodes d’ordre 4 ou plus.

7.4.1 Méthodes d’ordre 2Je cherche toujours la solution du problème représenté par (7.1) en supposant connue la solution

numérique approchée yn au point xn = x0 + nh. Pour cela, je vais construire une « fonctionincrément » Φ(xn, yn, h) telle que :

yn+1 − yn = hΦ(xn, yn, h).

Cette fonction dépend aussi du second membre f . Soit d’autre part la solution exacte z(t) duproblème différentiel :

z′(t) = f [t, z(t)] ; z(x) = y.

En termes imagés, z(t) est la solution de l’équation différentielle «qui passe par le point de coor-données x et y» ; x et y sont ici considérés comme arbitraires mais constants. L’incrément exactest défini par :

z(x + h)− z(x) = h∆(x, y, h).

La quantité τ(x, y, h) = ∆(x, y, h)−Φ(x, y, h) est une indication de la qualité de l’approximation,c’est l’erreur locale de troncation de la méthode. Je souhaite bien sûr que τ tende vers 0 avec h,ce qui est équivalent à la condition :

limh→0

Φ(x, y, h) = f(x, y)

On dit que la méthode est cohérente si cette condition est vérifiée dans tout le domaine de variationde x. De plus, on dit que la méthode est d’ordre p si τ(x, y, h) = O(hp).

Page 79: 21124286 Analyse Numerique French

An_Num 78

Je vais chercher, dans le cas d’une méthode d’ordre 2, une expression de Φ qui coïncide avec∆ jusqu’aux termes en h2 compris. Je suppose (comme l’on fait Runge et Kutta il y a presque unsiècle) que Φ est de la forme :

Φ(x, y, h) = a1f(x, y) + a2f [x + p1h, y + p2hf(x, y)]

où les quantités a1, a2, p1 et p2 sont des constantes à déterminer. Il me suffit d’imposer que ledéveloppement de Taylor de Φ, à l’ordre 2 en h, coïncide avec celui de ∆ au même ordre. Ilss’écrivent

∆ = f(x, y) +12h(fx + ffy) + O(h2),

Φ = (a1 + a2)f + ha2p1fx + ha2p2ffy + O(h2).

D’où trois conditions à remplir :

a1 + a2 = 1,a2p1 = 1/2,a2p2 = 1/2.

Je dispose de quatre paramètres inconnus ; il est d’usage de conserver un paramètre libre et dedéterminer les trois autres à l’aide des relations ci-dessus ; la dernière quantité sera ajustée aprèspour obtenir une propriété désirable de l’algorithme (bonne stabilité, erreur d’arrondi faible....).Je choisis de conserver a2, rebaptisé α pour la circonstance :

a1 = 1− α,a2 = α,p1 = p2 = α

2 .

J’obtiens ainsi une méthode de Runge-Kutta d’ordre 2 caractérisée par la fonction incrément :

Φ(x, y, h) = (1− α)f(x, y) + αf [x +h

2α, y +

h

2αf(x, y)].

Parmi toutes les valeurs possibles de α, deux cas sont restés dans l’histoire : α = 1/2 (on parlealors de méthode de Heun ou d’Euler améliorée) et α = 1 (méthode d’Euler modifiée). Vous vérifiezfacilement que ces algorithmes s’écrivent :

α = 1/2 ; yn+1 = yn +12hf(xn, yn) + f [xn + h, yn + hf(xn, yn)] (7.8)

etα = 1 ; yn+1 = yn + hf [xn + h/2, yn +

12hf(xn, yn)]. (7.9)

7.4.2 Exemple.Je reprends le problème du pendule simple. Il me suffit de remplacer, dans le programme

précédent, la «function euler» par une «function rk2».

1 //mouvement du pendule par RK−22 function F = smy( t , y , z )3 F = z ;4 endfunction5 function F = smz( t , y , z )6 F = −sin ( y ) ;7 endfunction8 function [ yf , z f , t f ] = rk2 (h , t i , yi , z i )9 y f = y i + 0 .5∗h∗(smy( t i , yi , z i )+smy( t i+h , y i+h∗smy( t i , yi , z i ) , z i+h∗smz( t i , yi , z i ) ) ) ;10 z f = z i + 0 .5∗h∗( smz( t i , yi , z i )+smz( t i+h , y i+h∗smy( t i , yi , z i ) , z i+h∗smz( t i , yi , z i ) ) ) ;

Page 80: 21124286 Analyse Numerique French

An_Num 79

11 t f = t i + h ;12 endfunction13 np = 600 ;14 t = zeros (np , 1 ) ;15 y = zeros ( t ) ; z = zeros ( t ) ;16 y0 = input ( ’ p o s i t i o n i n i t i a l e : ’ ) ;17 z0 = input ( ’ v i t e s s e i n i t i a l e : ’ ) ;18 pas = input ( ’ longueur du pas : ’ ) ;19 t (1 ) = 0 ; y (1 ) = y0 ; z (1 ) = z0 ;20 for i = 2 : np do21 [ y ( i ) , z ( i ) , t ( i ) ] = rk2 ( pas , t ( i −1) ,y ( i −1) , z ( i −1)) ;22 end23 xset ( "window" ,0 )24 plot2d ( t , y )25 xset ( "window" ,1 )26 plot2d (y , z )27 ep = 1−cos ( y ) ;28 ec = 0.5∗ z .∗ z ;29 xset ( "window" ,2 )30 plot2d ( t , [ ep , ec , ( ep+ec−ep(1)− ec ( 1 ) )∗1000 ] )

Il est clair que ce sous-programme est encore inutilement compliqué. Sachant que smy ≡ y, jepourrais écrire

smy(ti + h, yi + h ∗ smy(ti, yi, zi), zi + h ∗ smz(ti, yi, zi)) = yi + hyi = yi(1 + h)

On évite pourtant des erreurs en partant de la forme générale que l’on simplifie ensuite. La figure2 montre la loi du mouvement produite par cet algorithme. Vous pouvez constater que, cettefois, l’amplitude reste constante, malgré une valeur initiale très grande (presqu’égale à π). Dansces conditions, le pendule est un système mécanique non-linéaire, dont le mouvement n’est plussinusoïdal ni isochrone. J’ai ajouté à la fin du programme une représentation du mouvement dansle plan de phase (y, z, fenêtre 1) et un graphique des énergies (fenêtre 2).

-4

-3

-2

-1

0

1

2

3

4

0 10 20 30 40 50 60 70 80

’c:/an_poly-6/pdl_rk2.dta’

Fig. 7.2 – : Mouvement du pendule calculé par la méthode RK2. Le pas était de 0,05.

Page 81: 21124286 Analyse Numerique French

An_Num 80

7.5 Méthode d’ordre 4Je ne vais pas établir ici les formules de Runge-Kutta d’ordre 3 ou 4 ou plus : en effet, la

longueur des calculs croît très rapidement avec n. La méthode d’ordre 4 est la plus connue ; elles’écrit

yn+1 = yn +h

6(k1 + 2k2 + 2k3 + k4), (7.10)

avec :

k1 = f(xn, yn),

k2 = f(xn +h

2, yn +

hk1

2), k3 = f(xn +

h

2, yn +

hk2

2),

k4 = f(xn + h, yn + hk3).

Remarque : Certains auteurs incorporent le facteur h dans la définition des ki, ce qui le faitdisparaître des arguments de la fonction f .

7.5.1 ExempleJe traite à nouveau le pendule, en remplaçant function rk2 par function rk4, selon le listing

ci-dessous

1 //mouvement du pendule par RK−42 function F = smy( t , y , z )3 F = z ;4 endfunction5 function F = smz( t , y , z )6 F = −sin ( y ) ;7 endfunction8 function [ yf , z f , t f ] = rk4 (h , t i , yi , z i )9 k1y = smy( t i , yi , z i ) ;10 k1z = smz( t i , yi , z i ) ;11 k2y = smy( t i+h/2 , y i+h∗k1y /2 , z i+h∗k1z /2 ) ;12 k2z = smz( t i+h/2 , y i+h∗k1y /2 , z i+h∗k1z /2 ) ;13 k3y = smy( t i+h/2 , y i+h∗k2y /2 , z i+h∗k2z /2 ) ;14 k3z = smz( t i+h/2 , y i+h∗k2y /2 , z i+h∗k2z /2 ) ;15 k4y = smy( t i+h , y i+h∗k3y , z i+h∗k3z ) ;16 k4z = smz( t i+h , y i+h∗k3y , z i+h∗k3z ) ;17 y f = y i + (h/6)∗ ( k1y + 2∗k2y + 2∗k3y + k4y ) ;18 z f = z i + (h/6)∗ ( k1z + 2∗k2z + 2∗k3z + k4z ) ;19 t f = t i+h ;20 endfunction21 np = 600 ;22 t = zeros (np , 1 ) ;23 y = zeros ( t ) ; z = zeros ( t ) ;24 y0 = input ( ’ p o s i t i o n i n i t i a l e : ’ ) ;25 z0 = input ( ’ v i t e s s e i n i t i a l e : ’ ) ;26 pas = input ( ’ longueur du pas : ’ ) ;27 t (1 ) = 0 ; y (1 ) = y0 ; z (1 ) = z0 ;28 for i = 2 : np do29 [ y ( i ) , z ( i ) , t ( i ) ] = rk4 ( pas , t ( i −1) ,y ( i −1) , z ( i −1)) ;30 end31 plot2d ( t , y )

Page 82: 21124286 Analyse Numerique French

An_Num 81

On peut fait les mêmes remarques qu’au paragraphe 7.4 à propos des simplifications possibles dela fonction smy.

L’espace mémoire disponible avec Scilab est en général confortable, nettement plus grand quel’espace utilisable sous Pascal. On peut aussi l’augmenter, si la valeur par défaut est trop faible(fonction stacksize). Si je programmais en Pascal ou en C, j’éviterais de définir des tableauxt,y,z. J’écrirais au contraire tous les résultats intermédiaires dans un fichier sur disque.

7.5.2 Avantages et inconvénients de méthodes de Runge-KuttaLa méthode RK4 se distingue par sa simplicité de mise en oeuvre ; je la recommande d’ailleurs

pour tous les problèmes courants. Elle ne requiert que quatre évaluations de f par pas. On peutaméliorer aisément la précision des calculs (si le langage et le compilateur le permettent) en calcu-lant Φ =

∑ajkj en double précision, car c’est là que se produisent la plupart des erreurs d’arrondi.

L’algorithme de Runge-Kutta souffre de deux inconvénients liés. On ne dispose d’aucune indi-cation sur l’erreur de troncation en cours de calcul. D’autre part, il y a des problèmes de stabilitédès que le second membre est grand ou rapidement variable. Une méthode simple (mais coûteuse)de surveillance de la précision consiste à conduire deux calculs simultanément, l’un avec le pas h,l’autre avec le pas h/2. Tant que la distance entre les deux résultats reste inférieure à un certainseuil, on admet que le résultat est valable. Si le seuil est franchi, il faut rejeter la (ou les) dernière(s)valeur(s) calculée(s) et repartir avec un pas plus petit.

Il existe des algorithmes plus raffinés (qui portent les noms de Runge-Kutta-Fehlberg ou mé-thodes de Runge-Kutta emboîtées). Dans ce type de méthode, on calcule, par exemple, six fois fpar pas ; on combinant «bien» les résultats, on obtient une estimation précise de yn+1 ; une autrecombinaison des mêmes valeurs fournit une estimation de l’erreur. La seule difficulté réside dansla forme compliquée des coefficients qui remplacent les aj et bj , mais l’ordinateur n’en a cure.

7.5.3 Organisation d’un programmeIl est commode de construire le programme de résolution sous une forme bien hiérarchisée, qui

permette de changer commodément d’algorithme et d’équation. Le sous-programme de niveau leplus bas fait avancer la solution de xn à xn+1 ; c’est lui qui renferme les détails de l’algorithme. Ce«noyau» de niveau zéro est englobé dans un sous-programme qui gère la surveillance de l’erreur(quand elle existe). Avec un pas h, on calcule yn+1 et une estimation τn+1 de l’erreur locale detroncation ; si celle-ci est inférieure au seuil, le pas est accepté ; sinon, on rejette le dernier résultat,on diminue le pas et on recommence. Cet ensemble est à son tour inclus dans un sous-programmequi conduit l’intégration de xmin à xmax et prend en charge le stockage des résultats intermédiaires.Celui-ci est un peu délicat si l’on a affaire à des pas de longueur variable : comment concilier cettedémarche avec l’enregistrement des résultats pour des abscisses à peu près régulièrement réparties ?Il est fréquent, quelque soit l’algorithme d’intégration, que l’on doive utiliser un pas assez petit, cequi conduit à calculer de nombreuses valeurs de xn, alors qu’on ne peut ou ne veut conserver qu’unpetit nombre de valeurs (pour les tracés par exemple). On peut concilier ces deux exigences en neconservant qu’une valeur de x toutes les p. La couche extérieure du programme est spécifique del’application ; elle est destinée à la lecture des paramètres et des valeurs initiales, à l’affichage desrésultats. Les seconds membres sont en général définis dans un sous-programme spécial.

7.6 Algorithme de prédiction-correctionLes méthodes de Runge-Kutta posent parfois des problèmes de stabilité ou de précision. Je vais

maintenant décrire des méthodes plus stables et généralement plus précises ; le prix à payer pources améliorations sera une structure plus compliquée de l’algorithme.

Page 83: 21124286 Analyse Numerique French

An_Num 82

7.6.1 PrédictionJe vais détailler un algorithme élémentaire de prédiction-correction, en commençant par la partie

la plus simple, l’algorithme de prédiction. Je cherche la solution du problème différentiel (7.1). Lavariable indépendante x sera discrétisée avec un pas h. En reprenant l’une des interprétations dela méthode d’Euler, je remplace y′ par une forme approchée, mais plus précise que celle utilisée au§1 :

y′ =f(x + h)− f(x− h)

2h− h2

6f ′′′(ξ)

soit, en reportant dans l’équation différentielle :

yn+1 = yn−1 + 2hfn +h3

3f ′′′(ξ).

À partir de cette relation exacte, j’obtiens une méthode d’intégration en négligeant le terme d’erreur(qui me fournira l’erreur locale de troncation) :

yn+1 = yn−1 + 2hfn. (7.11)

Par ailleurs, vous pourrez montrer sans peine que si l’on intègre terme à terme l’équation diffé-rentielle et que l’on remplace l’intégrale de f(x, y) par son approximation dite du point milieu, onretrouve le même algorithme. L’amorçage du calcul suppose connus y0 et y1, que l’on obtient parTaylor ou Runge-Kutta d’ordre 2 ou encore par Euler. La figure 3 illustre cet algorithme.

−1.0 −0.6 −0.2 0.2 0.6 1.0 1.4 1.8 2.2 2.6 3.0−1

0

1

2

3

−1.0 −0.6 −0.2 0.2 0.6 1.0 1.4 1.8 2.2 2.6 3.0−1

0

1

2

3

x[n−1] x[n] x[n+1]

f[x,y(x)]

−1.0 −0.6 −0.2 0.2 0.6 1.0 1.4 1.8 2.2 2.6 3.00

1

2

3

4

5

6

Y^[P]

Fig. 7.3 – : Étape de prédiction. L’aire du rectangle vert est une approximation de l’aire hachurée ;on l’ajoute à yn−1 pour obtenir y

[P ]n+1

7.6.2 CorrectionLa partie « correction » est plus subtile. Cette fois, j’intègre (de façon approchée) l’équation

différentielle entre xn et xn+1 (remarquez les nouvelles limites) par la méthode des trapèzes et jetrouve

yn+1 = yn +12h(fn + fn+1)− h3

12y′′′(ξ).

Page 84: 21124286 Analyse Numerique French

An_Num 83

Comme précédemment, je néglige le terme d’erreur pour obtenir une méthode d’intégration duproblème différentiel :

yn+1 = yn +12h(fn+1 + fn). (7.12)

Cette méthode est stable et précise. Elle souffre cependant d’un petit défaut : elle est inap-plicable en l’état. En effet, la relation ci-dessus est une équation implicite en yn+1, puisque cettequantité figure dans fn+1. Il serait dommage d’échouer si près du but ; en réalité, je peux très bienrésoudre l’équation en yn+1 par approximations successives, à condition de connaître une valeurinitiale y[0]. Il suffit d’appliquer la méthode du point fixe

y[k+1]n+1 = yn +

12h[f(xn, yn) + f(xn+1, y

[k]n+1)]

jusqu’à ce qu’un critère de convergence convenable soit atteint. La dernière valeur calculée estretenue comme valeur de yn+1.

Comment vais-je me procurer la valeur y[0]n+1 ? Vous l’avez deviné : par la méthode de prédiction.

Celle-ci est explicite : elle fournit une valeur approchée de la solution, que j’appelle maintenant lavaleur «prédite», y(P )

n+1 et cette valeur prédite servira à amorcer l’itération du correcteur. L’algo-rithme complet peut donc s’écrire :

y[P ]n+1 = yn−1 + 2hfn , y

[C]n+1 = yn + (h/2)[fn + f(xn+1, y

[P ]n+1)]. (7.13)

L’itération du correcteur peut, en principe, être répétée plusieurs fois. Cela s’avère inutile engénéral : en cas de difficultés, il vaut mieux diminuer le pas. Dans tous les cas, y

[C]n+1 devient la

valeur définitive yn+1. La figure 4 est une représentation graphique de ce calcul.

−1.0 −0.6 −0.2 0.2 0.6 1.0 1.4 1.8 2.2 2.6 3.0−1

0

1

2

3

−1.0 −0.6 −0.2 0.2 0.6 1.0 1.4 1.8 2.2 2.6 3.0−1

0

1

2

3

x[n] x[n+1]

f[x,y^P]

−1.0 −0.6 −0.2 0.2 0.6 1.0 1.4 1.8 2.2 2.6 3.00

1

2

3

4

5

6

Y^[C]

Fig. 7.4 – : Étape de correction. L’aire du trapèze bleu est une approximation de l’aire hachurée ;on l’ajoute à yn pour obtenir y

[C]n+1

7.6.3 Convergence du correcteurOn montre que si l’équation différentielle obéit à la condition de Lipschitz et si h est assez

petit, l’itération du correcteur converge. Plus précisément, la condition de Lipschitz s’énonce ainsi.

Page 85: 21124286 Analyse Numerique French

An_Num 84

Il existe une constante positive K telle que, pour toutes valeurs de x, y1, y2, on ait

|f(x, y1)− f(x, y2)| ≤ K|y1 − y2|.Le pas h devra satisfaire à

Kh/2 < 1.

La qualité de l’itération dépend de la valeur initiale y[0] ; il est recommandé de choisir une formulede prédiction et une formule de correction présentant des erreurs du même ordre. On montre que,dans ce cas, une seule itération suffit. Si la valeur initiale provient de la méthode d’Euler (erreuren h2), il faudra au moins deux itérations.

Exemple. Je résous une fois de plus le problème du pendule simple, à l’aide de l’algorithme deprédiction-correction. La fonction rk2 est remplacé les trois sous-programmes pred, correc, pc.Il faut aussi modifier le programme principal, pour utiliser les deux valeurs successives yi−1, yi pourcalculer yi+1.

7.6.4 Surveillance de l’erreurUne qualité importante des méthode de prédiction-correction est qu’elles permettent, sans cal-

culs supplémentaires, une surveillance de l’erreur de troncation. La solution exacte Yn+1 de l’équa-tion différentielle en xn+1 est reliée à la valeur prédite par la relation :

Yn+1 = y[P ]n+1 +

h3

3y′′′(ξp).

Si le correcteur converge, il diffère de la solution exacte par son erreur de troncation :

Yn+1 = y[C]n+1 −

h3

12y′′′(ξc).

Je dispose ainsi d’un encadrement de Y et d’une majoration de l’erreur. Si je suppose en effet queξp∼= ξc, je peux écrire y′′′ ∼= (12/5h3)(y[C]−y[P ])n+1, d’où une estimation de l’erreur de troncation

au point n (pour le calcul de yn+1) :

en =15(y[P ] − y[C])n+1

L’utilisation de ce résultat est évidente. A chaque pas, je calcule |en| ; si cette quantité est supérieureà un seuil fixé à l’avance, je rejette ce pas, je diminue h et je repars. Je peux augmenter h si |en|est « très petit ».

Je pourrais aussi utiliser ma connaissance (approchée) de l’erreur pour améliorer y[C]n+1. Il suffit

de calculer :ymodif

n+1 = y[c]n+1 + (1/5)(y[P ] − y[C])n+1.

Ce perfectionnement est peu employé, car il nuit à la stabilité.

7.6.5 Formules d’ordre 4En pratique, on utilise des méthodes du quatrième ordre. Elles peuvent être obtenues de plu-

sieurs façons : par la recette des coefficients indéterminés ou par intégration approchée de l’équationdifférentielle, comme je l’ai expliqué à propos de la méthode d’Euler. Si je remplace la fonction com-pliquée f par un polynôme d’interpolation du second degré (parabole), j’obtiendrai une méthoded’ordre 4.

Je vais présenter une catégorie particulière de méthodes, celles d’Adams. L’algorithme d’Adams-Bashforth est une méthode explicite d’ordre 4 qui s’écrit :

yn+1 = yn + (h/24)(55fn − 59fn−1 + 37fn−2 − 9fn−3), (7.14)

Page 86: 21124286 Analyse Numerique French

An_Num 85

où, comme d’habitude, fn = f(xn, yn) est la valeur du second membre au point xn. Cette équationva servir à calculer la valeur prédite y

[n+1P ]. Le terme d’erreur correspondant est :

+251720

h5y(5) (7.15)

À cette équation de prédiction, j’associe le correcteur d’Adams-Moulton :

yn+1 = yn + (h/24)(9fn+1 + 19fn − 5fn−1 + fn−2). (7.16)

Il s’agit encore une fois d’une équation implicite pour yn+1 (qui figure dans fn+1). L’erreur detroncation s’écrit :

− 19720

h5y(5). (7.17)

Il est encore possible d’estimer l’erreur de troncation, et donc de la surveiller, à partir de la différencey[P ] − y[C], qui vaut, d’après (7.15) et (7.17) :

y[P ]n+1 − y

[C]n+1 =

38h5y(5)

L’algorithme d’Adams admet la représentation graphique présentée page suivante.

7.6.6 Démarrage des méthodes de prédiction-correctionTous les algorithmes de prédiction-correction utilisent plusieurs valeurs déjà connues de la

fonction pour calculer yn+1 (méthodes à pas multiples ou liés). Ceci complique l’amorçage ducalcul. Considérons le cas particulier de la méthode d’Adams, qui nécessite quatre valeurs de y.La première sera fournie par la condition initiale, mais les trois suivantes devront être calculée parun algorithme indépendant : Taylor ou Runge-Kutta. Il est recommandé d’utiliser des formules dumême ordre que pour l’algorithme principal.

7.6.7 Avantages et inconvénients des méthodes à pas multiplesLes méthodes de prédiction-correction sont très appréciées des spécialistes, qui en ont poussé

très loin l’analyse théorique. Leur principal avantage est qu’elles permettent une estimation aiséede l’erreur de troncation. Leur stabilité est aussi renommée. Nous n’avons pas examiné ce point,mais l’étude du système modèle y′ = −ky, montrerait que l’algorithme de correction est stablequelque soit h, alors l’équation de prédiction peut être instable (mais sans danger puisque elle nesert qu’à fournir une valeur intermédiaire et locale).

Les inconvénients des méthodes «p-c» sont dus à la complexité de l’algorithme. Une méthoded’ordre 4 requiert, pour démarrer, les 3 premières valeurs de y, lesquelles doivent être obtenues sans"trop" d’erreur, par exemple par Runge-Kutta d’ordre 4. La modification du pas h n’est pas aussisimple qu’on pourrait le croire. Si je m’aperçois que l’erreur de troncation lors du calcul de yn+1 esttrop grande, je rejette cette valeur et et je divise h par 2. Le calcul peut-il repartir pour autant ?Pas tout de suite, car l’évaluation de yn+1 demande la connaissance des 4 valeurs précédentes dey ; or, je ne les connais que pour le pas h et non pour h/2. Il faut donc interpoler entre valeurs dey pour trouver les précurseurs de yn+1 avec le pas h/2.

7.7 Méthodes pour les équations du second ordreLa physique fournit souvent des équations différentielles du second ordre où y′ ne figure pas.

C’est le cas en mécanique classique (au moins pour les systèmes à un seul degré de liberté) en l’ab-sence de frottement ; c’est aussi le cas en mécanique quantique pour les problèmes à une dimension.Il existe plusieurs algorithmes spécialisés et bien adaptés à ce type de problème. J’en décrirai deux.

Page 87: 21124286 Analyse Numerique French

An_Num 86

7.7.1 Algorithme de Verlet ou de saute-moutonJe note y(t) la fonction inconnue, solution de l’équation différentielle particulière :

y′′ = f(t, y) (7.18)

où la variable indépendante peut être le temps. La méthode résulte du remplacement de la dérivéeseconde par une approximation bien connue

y′′|n ∼= 1h2

[yn+1 − 2yn + yn−1],

où l’erreur de troncation est O(h2). L’algorithme de Stoermer-Verlet s’écrit donc

yn+1 = 2yn − yn−1 + h2f(t, x). (7.19)

Par suite de la symétrie de cette formule, les vitesses (et tous les termes impairs en h) ont disparu.En cas de besoin, je pourrai estimer les vitesses au moyen de la relation

y′n = vn =12h

[yn+1 − yn−1].

Cet algorithme jouit de plusieurs avantages. Il est rapide, la seule étape coûteuse en temps étantle calcul du second membre, qui intervient une fois par pas. Le terme d’erreur est petit et uneanalyse plus détaillée montrerait que l’énergie totale est conservée à chaque pas, jusqu’aux termesen h2. Il est de ce fait presque universellement employé pour les calculs de dynamique moléculaireoù l’on doit suivre les trajectoires de milliers d’atomes simultanément.

Les bonnes performances de la méthode de Verlet en mécanique classique tiennent à la formeparticulière des équations de la dynamique. Celles-ci s’écrivent, sous la forme donnée par Hamilton

p = −∂H

∂q; q =

∂H

∂p.

(q est une coordonnée généralisée et p une quantité de mouvement généralisée). Ce système diffé-rentiel est particulier : c’est la même fonction (l’énergie totale ou le hamiltonien H) qui figure ausecond membre. L’algorithme de Verlet respecte bien cette structure et on le qualifie de «symplec-tique» (entrelacé en grec).

7.7.2 Algorithme de NumerovC’est à un astronome russe (publiant vers 1935) que l’on doit une méthode d’intégration spécia-

lement adaptée aux équations de la mécanique céleste et qui porte son nom. Je cherche à résoudrel’équation (7.18), mais avec une précision bien supérieure à celle permise par la méthode de Verlet.

L’algorithme de Numerov est une méthode de prédiction-correction. Je m’intéresse tous d’abordà la partie «correction», que je vais traiter par la méthode des coefficients indéterminés. Je faisl’hypothèse que yn+1 peut s’exprimer comme

yn+1 = a0yn + a1yn−1 + a2yn−2 + h2b−1fn+1 + b0fn + b1fn−1 + b2fn−2).

Le coefficient h2 est là pour que les bi soient des nombres sans dimensions. La présence d’uncoefficient b−1 non nul indique qu’il s’agit d’une méthode implicite (yn+1 est donné en fonctionde fn+1 qui dépend elle-même de yn+1). Je dispose de sept paramètres inconnus {ai, bi} entrelesquels je vais imposer six relations ; j’utiliserai à la fin les résultats de Numerov pour leverl’indétermination. J’impose donc que la formule précédente soit exacte pour y = 1, x, x2, x3, x4 et

Page 88: 21124286 Analyse Numerique French

An_Num 87

x5. Comme d’habitude, je peux choisir x = 0, puisque les relations obtenues doivent être vérifiéesquel que soit x. Il vient :

1 = a0 + a1 + a2,h = −h(a1 + 2a2),h2 = h2(a1 + 4a2) + 2h2(b−1 + b0 + b1 + b2),h3 = −h3(a1 + 8a2) + 6h3(b−1 − b1 − 2b2),h4 = h4(a1 + 16a2) + 12h4(b−1 + b1 + 4b2),h5 = −h5(a1 + 32a2) + 20h5(b−1 − b1 − 8b2).

J’exprime les coefficients en fonction de a2

a0 = 2 + a2 , a1 = −1− 2a2,b−1 = −1/12 , b0 = (10− a2)/12,b1 = (1− 10a2)/12 , b2 = −a2/12.

Selon Numerov, le choix a2 = 0 jouit de qualités intéressantes : c’est celui que je retiendrai. Laformule définitive (avec le terme d’erreur que je pourrais obtenir à partir d’un développement deTaylor des yi) s’écrit :

yn+1 = 2yn − yn−1 +h2

12(fn+1 + 10fn + fn−1)− h6y(6)(ξc)

240. (7.20)

Pour être complet, je cite la formule de prédiction établie par Numerov, que vous pouvez démontrerpar la même méthode des coefficients indéterminés :

yn+1 = 2yn−1 − yn−3 +4h2

3(fn + fn−1 + fn−2) +

16h6y(6)(ξp)240

Vous pourrez aussi trouver l’erreur de troncation en fonction de y[P ] et de y[C]. Je vais particulariserla formule de correction (la plus précise et la plus stable) pour le cas d’un problème linéaire, oùl’équation différentielle devient :

y′′ = A(x)y + B(x).

Cette hypothèse entraîne une simplification considérable, car le second membre est résoluble eny et l’équation de correction n’est plus implicite. Je peux donc abandonner l’étape de prédictionpour écrire :

yn+1 =1

1− h2

12An+1

[2yn − yn−1 +h2

12[Bn+1 + 10(Anyn + Bn) + An−1yn−1 + Bn−1)]. (7.21)

Cet algorithme est facile à programmer et donne de très bon résultats.

7.8 Équations «raides»Avant de terminer ce chapitre, je mentionne une difficulté que l’on rencontre aussi bien en

cinétique chimique qu’en dynamique des structures, sans offrir de solution concrète.Certains problèmes de cinétique chimique ont pour expression mathématique un système diffé-

rentiel de la forme :y′ = Ay + f(t)

où y est un vecteur dont les n coordonnées représentent des concentrations, A une matrice carréeconstante d’ordre n et f le vecteur de seconds membres. Je suppose que les valeurs propres λk deA soient réelles et distinctes. Je connais alors la forme de la solution :

y =∑

ck exp(λkt)zk + ϕ(t).

Page 89: 21124286 Analyse Numerique French

An_Num 88

Du point de vue numérique, il se posera un problème de stabilité chaque fois qu’une valeur propresera négative et le problème sera d’autant plus aigu que les λk seront plus différents les uns desautres. En termes qualitatifs, il me faudra choisir un pas très petit pour traiter correctement lesdécroissances les plus rapides (grand λ) mais, avec ce même pas, il faudra un nombre immensed’itérations pour voir évoluer les décroissances les plus lentes. On dit que le système d’équationsdifférentielles est "raide".

Un problème analogue se rencontre pour des systèmes du second ordre

y′′ = Ay + f(t)

comme on en trouve en mécanique des vibrations. Ici, l’échelle de temps est en principe définie parla période du mouvement, mais il y a plusieurs périodes, puisque la matrice A a plusieurs valeurspropres, lesquelles peuvent être très différentes. Je serai encore une fois obligé de choisir un pastrès petit pour suivre le mouvement le plus rapide et, simultanément, de prolonger le calcul pourdécrire le mouvement le plus lent.

Dans la pratique, la difficulté est souvent accrue par la non-linéarité des seconds membres. Seulesdes méthodes implicites sont assez stables pour traiter ce type de problèmes. La convergence dela méthode d’itération décrite au §6 n’est pas assurée dans ce cas et il faut résoudre l’équationimplicite du «correcteur» par une méthode de Newton.

Page 90: 21124286 Analyse Numerique French

Chapitre 8

Problèmes différentiels à conditionsaux limites et problèmes aux valeurspropres

8.1 IntroductionLa physique fournit de nombreux exemples de problèmes différentiels qui prennent un aspect

assez différent du problème de Cauchy (ou «à conditions initiales») examiné dans le chapitreprécédent. Il s’agit soit de problèmes à conditions aux limites, soit de problèmes aux valeurspropres, les méthodes employées pour résoudre ces deux types de question étant assez proches.

Voici un exemple du premier type. Une poutre de longueur L, soumise à une charge uniformeq(N/m) et à une tension S à chaque extrémité, se déforme verticalement ; j’appelle w(x) le dépla-cement d’un point de la poutre à partir de l’horizontale. w obéit à l’équation différentielle :

w′′ − S

EIw =

12EI

qx(x− L),

où I est le moment d’inertie de la section droite de la poutre et E le module d’élasticité. Si lapoutre repose sur des supports fixes à chaque extrémité, w doit aussi satisfaire aux conditions auxlimites :

w(0) = w(L) = 0.

La résolution est facile si les paramètres sont constants, mais une méthode numérique devientindispensable dès lors que la charge q ou les propriétés (E, I) de la poutre varient avec x.

L’étude des mouvements périodiques d’une corde vibrante de masse linéïque µ(x), soumise àune tension T (x) fait apparaître un problème de valeurs propres. La déformation de la corde, y(x),obéit à l’équation différentielle :

[T (x)y′]′ + (2πν)2µ(x)y = 0,

où ν est la fréquence. y doit aussi respecter des conditions aux limites en x = 0 et x = L, commepar exemple y(0) = 0 (extrémité fixe) ou ∂y/∂x|L = 0 (extrémité libre). Le problème ainsi posé n’ade solution que pour certaines valeurs de ν (les fréquences propres) ; les fonctions y correspondantessont les fonctions propres.

Il est facile de généraliser les considérations précédentes. Je suppose avoir affaire à une équationrésolue en y′′, avec des conditions aux limites séparées sur y (le cas de conditions sur y′ est trèssemblable) :

y′′ = f(x, y, y′) ; y(a) = A ; y(b) = B ; a ≤ x ≤ b.

89

Page 91: 21124286 Analyse Numerique French

An_Num 90

On rencontre rarement des conditions aux limites portant sur y et y′ :

c0y(a) + c1y′(a) = A ; d0y(b) + d1y

′(b) = B.

(Il peut en principe arriver qu’une condition concerne les deux extrémités simultanément : uy(a)+vy(b) = g, mais je n’examinerai pas ce cas).

Les problèmes à conditions aux limites n’ont pas toujours de solution ; ils peuvent aussi en avoirplusieurs, un comportement que l’équation différentielle très simple

w′′ + w = 0

illustre bien. La solution générale s’écrit w = c1 cos(x) + c2 sin(x). Selon les conditions aux limiteschoisies, le problème différentiel a une, une infinité ou zéro solution :

w(0) = 0 w(π/2) = 1 w = sinx une solutionw(0) = 0 w(π) = 0 w = c1 sin x infinité de solutionsw(0) = 0 w(π) = 1 aucune solution

Il est néanmoins possible, moyennant diverses hypothèses restrictives sur f et sur les conditionsaux limites, de démontrer l’existence et l’unicité de la solution du problème différentiel à conditionsaux limites.

8.2 La méthode du tir

8.2.1 Problème aux limitesSoit à résoudre le problème différentiel à conditions aux limites :

y′′ = f(x, y, y′) ; y(a) = A ; y(b) = B. (8.1)

J’associe à ce premier problème un problème à valeurs initiales :

w′′ = f(x,w, w′) ; w(a) = A ; w′(a) = s (8.2)

qui admet en général une solution unique, dépendante du paramètre s, w(x, s). Par hypothèse,ce problème n’est pas soluble analytiquement et je doit donc en déterminer numériquement lasolution pour une valeur donnée de s, par l’une des méthodes exposées au chapitre précédent.Comme il s’agit d’une équation différentielle du second ordre, il faudra sans doute la remplacer parun système différentiel du premier ordre équivalent. Pour résoudre ensuite le problème aux limites,connaissant w(x, s), il me suffit de trouver s tel que :

w(b, s) = B

ce qui revient à résoudre une équation non linéaire en s. Pour les personnes qui n’auraient eu lebonheur de recevoir une formation militaire, je vais développer l’analogie avec le comportementd’un artilleur. A l’aide d’un canon situé en x = a, celui-ci veut atteindre une cible en x = b ; il nedispose pour cela que d’un seul réglage, la hausse (angle que fait l’axe du canon avec l’horizontale).Il procède par approximations successives : un coup court, un coup long (il encadre l’objectif)et, idéalement ( ?), un coup au but. Pour la résolution pratique de problèmes aux limites, il estrecommandé de s’inspirer de l’artilleur, en traçant diverses fonctions w(x, s) pour différentes valeursde s et en observant leur comportement. Ce n’est qu’une fois acquise une certaine expérience duproblème que l’on se tournera vers des méthodes plus systématiques.

J’ai présenté de nombreuses méthodes de résolution d’une équation non-linéaire ; la plus simpleest la méthode de bissection (ou dichotomie). Sa mise en oeuvre suppose que je dispose de deuxvaleurs de s telles que w(b, s1) et w(b, s2) encadrent B.

Page 92: 21124286 Analyse Numerique French

An_Num 91

D’après un théorème connu sur les équations différentielles, la solution w(x, s) est une fonctioncontinûment dérivable de s. Je peux donc aussi utiliser la méthode de Newton. Je rappelle que, àpartir d’une valeur initiale s(0), je calcule de façon itérative des valeurs s(i) à l’aide de la formule :

s(i+1) = s(i) − F [s(i)]F ′[s(i)]

; F (s) ≡ w(b, s)−B.

J’obtiens F [s(i)] en résolvant le problème différentiel :

w′′ = f(x, w,w′) ; w(a) = A ; w′(a) = s(i).

La méthode la plus simple pour calculer F’ consiste à l’approcher par le quotient :

F ′[s(i)] ∼= {F [s(i) + h]− F [s(i) − h]}/(2h)

J’ai implicitement admis que l’algorithme qui détermine w partait de a et progressait vers les xcroissants. Ce n’est pas obligatoire et c’est même suicidaire si w a une discontinuité en x = a ;dans ce cas, on peut partir de b, avec le même algorithme et un pas négatif. On peut être amenéà construire une morceau de solution à partir de a, un autre à partir de b : il faut alors imposer lacontinuité de w ou de w′ au point de rencontre entre a et b. Il est souvent commode d’imposer quela quantité w′/w (la «dérivée logarithmique») soit continue ; cette condition a l’avantage d’êtreinsensible à la normalisation de w.

Le cas d’une équation différentielle linéaire, fréquent en physique, est nettement plus simple. Ilsuffit en effet de déterminer deux solutions w(x, s1) et w(x, s2) du problème à conditions initialesassocié. La bonne valeur de s, soit s0, pour laquelle w(b, s0) = B, s’obtient par interpolation li-néaire. En effet, la solution du problème différentiel est une fonction linéaire des conditions initiales.

Exemple

Soit le problème différentiel :

y′′ + y = x ; y(0) = y(1) = 0.

L’équation différentielle du second ordre est équivalente au système :

y′ = z ; z′ = y − x,

que j’ai résolu par la méthode RK2, avec les conditions initiales y(0) = 0, y′(0) = s. Les deuxpremières exécutions ont donné, pour s1 = −0, 3, y(1) = −0, 093915 et pour s2 = 0, 1, y(1) =0, 242674. Une interpolation inverse linéaire me donne alors s0 = −0, 188392, qui conduit, commele montre la figure ci-dessous, à y(1) = 0. La solution analytique est y = x − sin(x)/sin(1) ; ladérivée à l’origine est y′(0) = −0, 188395, très proche de la solution numérique.

8.2.2 Problèmes de valeurs propresUn problème aux valeurs propres comme

y′′ = f(x, y, y′, λ) ; y(a) = y(b) = 0 (8.3)

peut se ramener à un problème à conditions aux limites en introduisant une fonction inconnueauxiliaire w ≡ λ et l’équation auxiliaire w′ = 0 ou en considérant la valeur propre comme unparamètre ajustable, ce qui est d’une mise en oeuvre plus simple. Je me limite à une équationdifférentielle linéaire, écrite sous la forme

y′′ + p(x)y′ + λq(x)y = 0 ; y(a) = y(b) = 0 ; a ≤ x ≤ b. (8.4)

Page 93: 21124286 Analyse Numerique French

An_Num 92

-0.15

-0.1

-0.05

0

0.05

0.1

0.15

0.2

0.25

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

’c:/an_poly-7/tir1.dta’’c:/an_poly-7/tir2.dta’’c:/an_poly-7/tir3.dta’

Fig. 8.1 – . La méthode du tir.

Comme l’équation (8.4) et ses conditions aux limites sont homogènes, ky est solution si y l’est.J’associe à ce problème de valeurs propres un problème auxiliaire à conditions initiales :

v′′ + p(x)v′ + λq(x) = 0; v(a) = 0; v′(a) = p,

où p est une constante arbitraire, la pente initiale. La solution est de la forme v = v(x, λ, p) et je saisla trouver numériquement à l’aide de l’une des méthodes du chapitre précédent. Pour déterminerla solution du problème aux valeurs propres, il me faudra déterminer λ tel que :

v(b, λ, p) = 0

Il s’agit encore d’une équation algébrique, mais ici l’inconnue est λ. Le paramètre p ne sert qu’àfixer la normalisation de y. Il peut être choisi empiriquement avant le début du calcul pour obtenirdes valeurs commodes de y. La méthode de dichotomie se révèle très pratique pour trouver λ.

Exemple

La masse linéïque d’une corde de longueur L varie selon la loi µ = µ0(1 + αx). Lorsque cettecorde effectue des oscillations sinusoïdales, sa forme est définie par l’équation :

y′′ + (k0L)2(1 + αr)y = 0 ; y(0) = y(1) = 0

où r = x/L, k0 = 2πν/c0 et c0 =√

(T/µ0), T étant la tension. Les fréquences de vibration sontles valeurs de ν telles que le problème différentiel admette une solution. Je les ai cherchées parla méthode du tir et l’algorithme de Runge-Kutta d’ordre 2. La figure montre le résultat de troisexécutions du programme, pour des fréquences proches du second mode ((k0L)2 = 10, 11, 532 et13).

8.3 Méthodes aux différences finiesDans ce type d’algorithme, je remplace,dans l’équation différentielle, les dérivées y′, y′′, . . . par

des approximations formées à partir de différences latérales. Je me limite aux problèmes linéaires,comme le problème du second ordre à conditions aux limites

y′′ + q(x)y = g(x); y(a) = A; y(b) = B

Page 94: 21124286 Analyse Numerique French

An_Num 93

-0.2

-0.15

-0.1

-0.05

0

0.05

0.1

0.15

0.2

0.25

0 0.2 0.4 0.6 0.8 1

’c:/an_poly-7/valp1.dta’’c:/an_poly-7/valp2.dta’’c:/an_poly-7/valp3.dta’

Fig. 8.2 – : Recherche du 2ième mode d’une corde de densité variable. Le paramètre α vaut 5. Lavaleur propre est k0L = 3, 396.

Pour «discrétiser» ce problème, je subdivise [a, b] en n + 1 sous-intervalles égaux, de longueurh = (b − a)/(n + 1), séparés par des pivots d’abscisses xi = a + ih, x0 = a, xn+1 = b et jeremplace y′′(xi) par [ui+1 − 2ui + ui−1]/h2, en posant ui ' y(xi). Ce faisant, je commets uneerreur de troncation que le théorème de Taylor appliqué à y(i+1) et y(i−1) permet d’évaluer à -(h2/12)y(4)(xi + θh),−1 < θ < 1. Il y a n + 2 valeurs de ui, dont deux nous sont déjà connues :u0 = A, un+1 = B ; les autres sont solutions d’un système linéaire qui s’écrit, sous forme matricielle :

MU = K

avec les définitions U = [u1, u2, . . . , un]T ,k = [g1 + A/h2, g2, ....gn−1, gn + B/h2]T et

M =

−2 + q1h2 1 0 . . . 0

1 −2 + q2h2 1 0 . . .

. . . . . . . . . . . . . . .0 . . . . . . 1 −2 + qnh2

On a le théorème suivant. Si qi ≥ 0 pour i = 1, 2, ..., n, alors A est définie positive : la solutiondu système linéaire précédent est alors facile, les méthodes de Gauss ou de Cholesky s’appliquentsans permutation de lignes. On montre aussi que l’erreur de troncation est partout d’ordre h2. Cetalgorithme s’étend facilement aux problèmes contenant la dérivée première de y. Il est importantde représenter y′ par une expression qui respecte la symétrie de la matrice M.

8.3.1 ExempleJe reprend le problème déjà résolu par la méthode du tir

y′′ + y = x ; y(0) = y(1) = 0.

Je vais utiliser 20 points, donc 18 valeurs inconnues {uk}. Les éléments de la matrice M sontMi,i = h2 − 2, Mi,i+1 = Mi+1,i = 1 tandis que les coordonnées de k sont ki = h2xi. Voici leprogramme pour Scilab. Vous remarquez l’extrême simplicité de la résolution d’un système linéairede la forme Ax = b : il suffit d’écrire x = A\b.

Page 95: 21124286 Analyse Numerique French

An_Num 94

1 //y ’ ’+y = x par d i s c r e t i s a t i o n2 xmin = 0 ; xmax = 1 ;3 np = input ( "nombre t o t a l de po in t s : " ) ;4 n i = np−1;5 nx = np−2;6 M = zeros (nx , nx ) ;7 h = (xmax−xmin )/ n i ;8 for i =2:nx−19 M( i , i ) = h∗h−2;10 M( i , i +1) = 1 ;11 M( i , i −1) = 1 ;12 end13 M(1 , 2 ) = 1 ; M(nx , nx−1) = 1 ; M(nx , nx ) = h∗h−2; M(1 , 1 ) = h∗h−2;14 x = linspace ( xmin+h , xmax−h , nx ) ’ ;15 b = h∗h∗x16 y = M\b17 yy = [ 0 ; y ; 0 ] ; xx = [ xmin ; x ; xmax ] ;18 xse t ("window " ,0 ) , xbasc (0 )19 xsegs ( [ xmin , xmax ] , [ 0 , 0 ] )20 plot2d (xx , yy , r e c t =[xmin ,−0.1 ,xmax , 0 . 1 ] )

qui produit le trace de la figure 3.

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0−0.10

−0.08

−0.06

−0.04

−0.02

0

0.02

0.04

0.06

0.08

0.10

Fig. 8.3 – :Solution d’un problème avec conditions aux limites. La fonction inconnue est «discré-tisée» sur 20 points

La méthode de discrétisation s’applique aussi en principe aux problèmes de valeurs propres(linéaires). La différence est que l’on n’aboutit à un problème simple d’algèbre linéaire seulementdans quelques cas particuliers. C’est le cas pour

y′′ + q(x)y = λy ; y(a) = y((b) = 0.

On obtient une équation matricielle aux valeurs propres de la forme :

MU = λU

Page 96: 21124286 Analyse Numerique French

An_Num 95

avec la même matrice M que précédemment. Si A est d’ordre n, alors l’équation précédente admetn solutions comprenant chacune une valeur propre λk et un vecteur propre U(k) (voir le chapitre«éléments propres»).

Les deux approches que je vient de décrire (tir et discrétisation) sont en gros équivalentes,du point de vue de la commodité comme du point de vue de la qualité des résultats, pour toutles problèmes simples. Si les fonctions (comme q(x)) présentent des discontinuités, il vaut mieuxutiliser la discrétisation, plus stable.

8.4 Méthodes variationnelles, Rayleigh-Ritz-GalerkinLes méthodes variationnelles utilisent le fait que la solution d’un problème différentiel à condi-

tions aux limites possède souvent la propriété de rendre minimale ou plus généralement stationnaireune certaine intégrale. La recherche de ce minimum peut être plus facile que la résolution directe,surtout en présence de discontinuités des fonctions intervenant dans le problème différentiel. Lebut de ce paragraphe est de présenter une brève introduction à ces méthodes pour le cas simplisted’une seule variable. Je considère le problème (que l’on appelle un problème de Sturm-Liouville)

−(py′)′ + qy = f ; y(a) = 0 ; y(b) = 0

où p, q et f sont des fonctions de x continûment dérivables sur I = [a, b]. J’introduis un «opérateurdifférentiel» L par la relation

L(v) ≡ −(pv)′ + qv,

si bien que (1) peut aussi s’écrire :L(y) = f

Je vais me servir du produit scalaire de fonctions définies sur I déjà introduit au chapitre 5, celapour une fonction de poids égale à 1 :

(u, v) =∫ b

a

u(x)v(x)dx ; ‖ u ‖2= (u, u).

On démontre alors facilement les propriétés suivantes :*L est «symétrique» : (u, L(v)) = (L(u), v).*L est défini positif : (L(u), u) = (u, L(u)) > 0 pour tout u > 0.Je définis un nombre dépendant de u (une «fonctionnelle» de u) :

F (u) = (u, u)− 2(u, f),

où f est la fonction qui figure au second membre de l’équation différentielle. Si y vérifie L(y) = f ,on a le théorème :

F (u) > F (y)

pour tout u 6= y. Ce résultat m’amène à chercher une approximation à y en rendant minimaleF (u). Cela sera d’autant plus facile que u est proche de la «vraie» solution, tout en gardant uneforme telle que les calculs soient simples. Il est courant de prendre pour u une combinaison linéairede fonctions de base :

u = a1u1 + a2u2 + ..... + anun.

La fonction F (u) devient alors F (a1, ...an) = F (a). Soit v le vecteur de coordonnées (ui, f) et Sla matrice d’éléments si,j = (ui, uj). Un calcul élémentaire montre que :

F (a) = aT Sa− 2vT a.

Page 97: 21124286 Analyse Numerique French

An_Num 96

Résoudre le problème différentiel est donc approximativement équivalent à trouver le vecteur a quirend F minimale. On montre encore que ce vecteur, a0, est solution du système :

Sa = v.

Cette solution existe et est même facile à trouver parce que S est définie positive.Les méthodes d’éléments finis (à deux et trois dimensions) utilisent un formalisme variationnel

analogue au précédent pour réduire les équations aux dérivées partielles, rencontrées en mécaniquedes fluides ou en élasticité, à un système d’équations linéaires.

Page 98: 21124286 Analyse Numerique French

Chapitre 9

Résolution de systèmes d’équationslinéaires

9.1 IntroductionLa résolution de systèmes d’équations linéaires est peut-être le problème le plus connu et le

mieux étudié de l’analyse numérique. Ces études s’appuient sur l’ensemble des connaissances enalgèbre linéaire. Malgré ces atouts, la résolution pratique d’un système linéaire peut poser desdifficultés, soit pour certains choix des coefficients (systèmes «mal conditionnés»), soit lorsquele nombre d’inconnues devient grand (plus de quelques milliers), comme c’est le cas lors de larésolution d’équations aux dérivées partielles ou dans certains domaines de l’économétrie. Il peutaussi arriver que le système soit «surdéterminé» (plus d’équations que d’inconnues).

Quelles sont les méthodes que propose l’arsenal mathématique ? Tout d’abord une méthode queje qualifierai de formelle : la solution du problème

Ax = b (9.1)

(où A est une matrice n × n, b et x des vecteurs à n coordonnées) s’écrit x = A−1b, puis laméthode de Cramer, qui se révèle inutilisable en pratique dès qu’il y a plus de trois inconnues, (lecalcul d’un déterminant n× n nécessite n! opérations, ce qui est prohibitif).

Je rencontre ensuite un groupe de méthodes qui procèdent par éliminations successives desinconnues : elles sont associées aux noms de Gauss et de Gauss-Jordan et sont d’application aisée.D’autres algorithmes «factorisent» la matrice des coefficients (A =⇒ FG) avant de pratiquer deséliminations successives qui sont alors très rapides à cause de la forme particulière des facteursmathbfF, G : ce sont les méthodes de Crout, Doolittle ou Cholesky. En dépit des apparences,ces deux ensembles sont mathématiquement équivalents et sont fréquemment employés en analysenumérique.

Dans un esprit bien différent, je pourrai faire appel à des procédés itératifs de résolution, dontla convergence n’est pas toujours assurée : ce sont les méthodes associées aux noms de Jacobi etGauss-Seidel.

Comme vous le verrez, le calcul de l’inverse A−1d’une matrice A est plus long que le calculdirect de la solution du système linéaire (9.1). L’analogie avec l’algèbre peut faire comprendrecette remarque. Pour résoudre 10x = 3, je peux faire 10−1 = 0, 1; 0, 1 × 3 = 0, 3 ou directementx = 3/10 = 0, 3. On évite donc de calculer l’inverse de la matrice des coefficients, à moins quele problème posé ne le demande explicitement. Si tel est le cas, je calculerai A−1 en résolvant nsystèmes linéaires particuliers, dont les seconds membres sont respectivement égaux à chacun desvecteurs de base.

97

Page 99: 21124286 Analyse Numerique French

An_Num 98

Dans la mise en oeuvre des méthodes d’élimination ou de factorisation, l’ordinateur ne commetque des erreurs d’arrondi. Dans le cas d’une méthode itérative, je devrais tenir compte aussi d’uneerreur de troncation, puisque l’algorithme s’arrête au bout d’un nombre fini d’opérations.

Pour l’analyse numérique, la difficulté de résolution d’un système linéaire tient aux effets conju-gués de sa taille et de son «conditionnement». Voici une interprétation graphique de cet anglicisme.Soit le système linéaire :

ax + by = m,cx + dy = n.

Je divise la première équation par un√

a2 + b2 et la seconde par√

c2 + d2, pour obtenir

n1xx + n1yy = d1, n2xx + n2yy = d2.

Les coefficients satisfaisant maintenant aux relations n2ix + n2

iy = 1, i = 1, 2, les vecteurs ni decoordonnées {nix, niy} sont unitaires.

Le système linéaire ainsi écrit admet l’interprétation géométrique suivante. Chaque équationest celle d’une droite Di du plan (x, y). La droite Di est perpendiculaire au vecteur ni ; la distancede la droite à l’origine est di. La solution cherchée est représentée par le point d’intersection desdeux droites. Dans les cours élémentaires, on distingue trois cas : D1 confondue avec D2 (systèmeindéterminé ou infinité de solutions), D1 parallèle à D2 (système impossible), et le cas normal oùD1 coupe D2.

Numériquement, il faut distinguer ici deux possibilités. Si D1 et D2 font entre elles un anglenotable, le point d’intersection est bien défini et la solution du système sera facile à trouver. SiD1 et D2 se coupent sous un angle très faible, le système est dit «mal conditionné». Dans ce cas,la moindre variation de l’un des di (les seconds membres) ou de l’un des nα,i (les coefficients,α = x, y) entraînera un déplacement très important du point d’intersection. Autrement dit, lasolution est extrêmement sensible aux perturbations des coefficients ou des seconds membres. Undéterminant très petit est une indication qu’un système est mal conditionné ; ce n’est pas unecondition nécessaire surtout lorsque le nombre de variables devient grand.

Je peux donner un aspect plus quantitatif aux considérations précédentes. J’admets qu’il existeune norme vectorielle ‖ x ‖ et une norme matricielle ‖ A ‖, cohérente avec la précédente (c’est-à-dire que, pour tout x, ‖ A ‖ · ‖ x ‖≥‖ Ax ‖). En plus du système (9.1), je considère un système«perturbé» ; le second membre a subi une petite modification ∆b, ce qui a entraîné une petitevariation ∆x de la solution

A(x + ∆x) = b + ∆b

d’où ∆x = A−1∆b et :‖ ∆x ‖≤‖ A−1 ‖‖ ∆b ‖ .

J’en tire une majoration de la variation relative :

‖ ∆x ‖‖ x ‖ =‖ A ‖‖ A−1 ‖ ‖ ∆b ‖

‖ b ‖ = cond(A)‖ ∆b ‖‖ b ‖ .

Le nombre cond(A) = ‖ A ‖‖ A−1 ‖ est une mesure de la sensibilité de l’erreur relative (sur lasolution) aux variations du second membre.

Je montre maintenant que cond(A) représente aussi la sensibilité aux variations des coefficientsdes premiers membres. Je considère un nouveau système perturbé

(A + δA)(x + δx) = b.

En retranchant membre à membre (9.1), je trouve

δx = −A−1δA(x + δx),

Page 100: 21124286 Analyse Numerique French

An_Num 99

ce qui implique l’inégalité‖ δx ‖≤‖ A−1 ‖‖ δA ‖ (x + δx) ‖,

soit encore‖ δx ‖

‖ x + δx ‖ = cond(A)‖ δA ‖‖ A ‖ .

Il est souvent commode de considérer aussi (9.1) comme une application deRn dans lui-même. Sila matrice A est régulière, son «image» (l’ensemble des vecteurs Ax) estRn lui-même ; quelque soitle vecteur b, on pourra toujours trouver un x satisfaisant (9.1). Si, au contraire, A est singulière,son image est un sous-ensemble de Rn. Deux possibilités se présentent alors. Si b n’appartientpas à l’image de A, le système est impossible, puisqu’on ne pourra jamais trouver un vecteur xconvenable. Si b appartient à l’image de A, il y aura une infinité de solutions, car on pourratoujours ajouter à une solution un vecteur y appartenant au noyau de A (l’ensemble des vecteursy tels que Ay = 0.

9.2 Méthode de Gauss

9.2.1 ExempleJe vais traiter un exemple qui, mieux qu’un long discours, fera saisir l’esprit de la méthode

d’élimination de Gauss et son équivalence avec une factorisation de la matrice des coefficients. Ils’agit du système

Ax =

2 1 0 4−4 −2 3 −74 1 −2 80 −3 −12 −1

x1

x2

x3

x4

=

2−922

= x. (9.2)

Je vais procéder par éliminations successives en utilisant trois théorèmes bien connus d’algèbrelinéaire. La solution du système linéaire reste inchangée si :

* on multiplie une équation (une ligne de A et la coordonnéecorrespondante de b) par une constante ;

* on ajoute une équation à une autre (une ligne de A à une autreet la coordonnée correspondante de b à une autre) ;

* on permute deux équations (deux lignes de A et les coordonnéescorrespondantes de b).

Je peux traiter A et b en parallèle ou construire une matrice A′ "augmentée" dont la n+1-ièmecolonne est identique à b. J’indique entre parenthèses les instructions Scilab correspondantes.

Je commence par éliminer x1. Pour cela :je multiplie la ligne (1) par 2 et je l’ajoute à la ligne (2) (A(2,:) = A(2,:) + 2A(1,:);),je multiplie la ligne (1) par -2 et je l’ajoute à la ligne (3) (A(3,:) = A(3,:) - 2A(1,:);).Il vient :

A(1) =

2 1 0 40 0 3 10 −1 −2 00 −3 −12 −1

; b(1) =

2−5−22

On remarque que le multiplicateur relatif à la ligne i est −ai,1/a11 ; a11 est appelé le "pivot" ; ila intérêt à n’être pas nul ! Beaucoup d’auteurs emploient la convention opposée : ils multiplient

Page 101: 21124286 Analyse Numerique French

An_Num 100

la ligne (1) par +ai,1/a11 et la retranchent de la ligne (i) Le résultat est donné par la matriceA(1) et le vecteur b(1). Je dois maintenant éliminer x2 ; problème : le pivot correspondant (a(1)

22 )est nul ! Mon élan parait devoir être brisé près du départ. Mais, heureusement, je peux permuterles lignes (2) et (3)(temp = A(3,:); A(3,:) = A(2,:), A(2,:) = temp;) ; le nouveau pivot estmaintenant -1 ; j’ajoute -3 fois (2) à (4) pour trouver :

A(3) =

2 1 0 40 −1 −2 00 0 3 10 0 −6 −1

; b(3) =

2−258

Finalement, en utilisant le pivot 3, j’ajoute 2 fois (3) à (4) :

A(4) =

2 1 0 40 −1 −2 00 0 3 10 0 0 1

;b(4) =

2−2−5−2

La matrice A(4), équivalente à A, a la forme «triangulaire supérieure». Elle rassemble les coefficientsd’un système triangulaire facile à résoudre par substitution à partir de la dernière ligne :

(4) ⇒ x4 = −2,(3) ⇒ 3x3 − 2 = −5 ⇒ x3 = −1,(2) ⇒ −x2 − 2(−1) = −2 ⇒ x2 = 4,(1) ⇒ 2x1 + 4 + 4(−2) = 2 ⇒ x1 = 3.

Je gagne en prime la valeur de detA = (−1)p∏

i a(4)ii , où p est le nombre de permutations de

lignes, ici 1, d’où detA = 6. Si l’un des éléments diagonaux de A(4) (l’un des pivots de l’éliminationde Gauss) est nul, le déterminant est nul ; réciproquement, si det A 6= 0, je suis assuré de trouverdes pivots non nuls (quitte à permuter des lignes).

9.2.2 Gauss-JordanPour ceux qui auraient pris goût à l’élimination, je propose une variante. Plutôt que de substi-

tuer dans le système triangulaire, je poursuis l’élimination au-dessus de la diagonale principale :c’est la méthode de Gauss-Jordan. Pour changer, je travaille sur la matrice augmentée A′, réunionde A et de b. J’ajoute (2) à (1) :

A′(5) =

2 0 −2 4 00 −1 −2 0 −20 0 3 1 −50 0 0 1 −2

puis 2/3 de (3) à (1) et à (2) :

A′(6) =

2 0 0 14/3 −20/30 −1 0 2/3 −16/30 0 3 1 −50 0 0 1 −2

Pour finir, j’ajoute -14/3 (4) à (1), -2/3 (4) à (2) et -(4) à (3) ; il vient :

A′(8) =

2 0 0 0 60 −1 0 0 −20 0 3 0 −30 0 0 1 −2

écriture matricielle d’un système dont la résolution est immédiate.

Page 102: 21124286 Analyse Numerique French

An_Num 101

9.2.3 Représentation matricielle de l’éliminationMultiplier la coordonnée 1 d’un vecteur par le coefficient m, puis ajouter le résultat à la coor-

donnée 2 revient à multiplier ce même vecteur par une matrice particulière :

1 0 0 0m 1 0 00 0 1 00 0 0 1

b1

b2

b3

b4

=

b1

mb1 + b2

b3

b4

Plus généralement, pour ajouter m fois la ligne i à la ligne j, il suffit de disposer le nombre m àla place de l’élément j, i de la matrice unité (i < j). Ce qui est vrai pour un vecteur l’est égalementpour une matrice. La prémultiplication de A carrée quelconque par la matrice précédente revientà multiplier successivement chaque colonne de A, donc à ajouter la première ligne de A à ladeuxième. Encore un exemple ; je veux ajouter -3 fois la 3-ième ligne à la 4-ième de la matricegénérale : -3 est en ligne 4, colonne 3 :

1 0 0 00 1 0 00 0 1 00 0 −3 1

a11 a12 a13 a14

a21 a22 a23 a24

a31 a32 a33 a34

a41 a42 a43 a44

=

a11 a12 a13 a14

a21 a22 a23 a24

a31 a32 a33 a34

−3a31 + a41 −3a32 + a42 −3a33 + a43 −3a34 + a44

Les matrices qui viennent d’être définies (dites matrices de Frobenius) jouissent de propriétésintéressantes. Si f(i, j,m) désigne la matrice de Frobenius contenant m en ligne i et colonne j, alorsf−1 = f(i, j,−m) : soustraire m fois la ligne i de la ligne j est bien l’opération inverse d’ajouter mfois (i) à (j). f(i, j, m)f(i′, j, m′) = f(i′, j, m′)f(i, j,m) contient m et m′ en colonne j, aux lignes iet i’, ce qui représente bien le fait qu’ajouter un multiple de la ligne j aux lignes i et i′ sont desactions indépendantes.

Dans l’exemple précédent, j’ai obtenu la matrice A(2) à partir de la matrice A(1) = A, enutilisant deux multiplicateurs (2 et -2), ce qui peut s’écrire

A(2) = M1A(1);b(2) = M1b(1),

avec

M1 =

1 0 0 02 1 0 0−2 0 1 00 0 0 1

Je pose, en vue d’une utilisation future, L1 ≡ M−11 . Revenant à l’exemple, j’ai ensuite permuté les

lignes (2) et (3) pour faire apparaître un pivot non nul, ce que je représente par une prémultipli-cation par la matrice de permutation P :

P =

1 0 0 00 0 1 00 1 0 00 0 0 1

Cette matrice est symétrique et orthogonale : P−1 = PT = P et, par conséquent, P2 = I, ce quitraduit le fait qu’échanger deux fois les mêmes lignes revient à ne rien faire. J’ai ensuite éliminé

Page 103: 21124286 Analyse Numerique French

An_Num 102

x2 avec l’aide implicite de la matrice M2.

M2 =

1 0 0 00 1 0 00 0 1 00 −3 0 1

Je définis au passage son inverse, noté L2 ≡ M−12 .

Le système linéaire s’écrit maintenant : A(3)x = b(3), avec A(3) = M2PA(2) et b(3) = M2Pb(1).Pour éliminer x3, j’ai utilisé M3 :

M3 =

1 0 0 00 1 0 00 0 1 00 0 2 1

La dernière forme du système s’écrit : A(4)x = b(4). Je pose encore A(3) = L3A(4) et b(3) = L3b(4).En résumé, en ce qui concerne le tableau des coefficients, j’ai

A(4) = M3A(3) = M3M2PA(2) = M3M2PM1A(1)

Le vecteur b a subi les mêmes transformations, résumées par :

b(4) = M3M2PM1b(1).

Ces formules résument bien la «triangularisation» du système, mais c’est la relation inverse quiest vraiment intéressante. Pour le voir, j’introduis les notations U = A(4) et c = b(4) (le systèmelinéaire est donc équivalent à : Ux = c). Je calcule ensuite

A = A(1) = L1PL2L3A(4) = L1PL2L3U.

Si je pose L ≡ L1PL2L3, je mets la matrice de départ sous la forme A = LU : c’est un produitde facteurs, dont l’un est triangulaire supérieur (U) ; malheureusement, à cause du facteur P, lamatrice L n’a pas de forme simple. Pour obtenir un résultat plus élégant, je commence par définirL′1 ≡ PL1PT ; cette nouvelle matrice s’obtient en permutant les lignes (2) et (3) de L1 (prémulti-plication par P) et en permutant les colonnes (2) et (3) de la matrice obtenue (postmultiplicationpar PT ; le résultat s’écrit :

L′1 =

1 0 0 02 1 0 0−2 0 1 00 0 0 1

Comme vous le constatez, L′1 est à nouveau triangulaire inférieure : la perturbation apportée parP a été «absorbée» dans L′1. Je définis ensuite L = L′1L2L3 :

L =

1 0 0 02 1 0 0−2 0 1 00 0 0 1

1 0 0 00 1 0 00 0 1 00 3 0 1

1 0 0 00 1 0 00 0 1 00 0 −2 1

Le calcul explicite donne

L =

1 0 0 02 1 0 0−2 0 1 00 3 −2 1

Page 104: 21124286 Analyse Numerique French

An_Num 103

Il suffit de recopier à leurs places dans L les éléments sous la diagonale des facteurs L′1,L2 et L3,comme pour les matrices élémentaires de Frobenius. Je forme ensuite le produit LU :

LU = L′1L2L3A(4) = L′1L2A(3) = L′1PA(2) = PL1A(2) = PA(1) = PA.

La matrice PA a été décomposée en un produit de deux facteurs, l’un (L, lower) triangulaireinférieur, avec des éléments diagonaux égaux à un, l’autre (U, upper) triangulaire supérieur. Vouspouvez aussi effectuer numériquement le produit LU pour vous convaincre du résultat (matrice dedépart sauf permutation des lignes (2) et (3)).

Pour trouver la solution de (9.1), il suffit maintenant de résoudre successivement deux systèmestriangulaires. D’abord

L′y = Pb,

dont la solution est le vecteur y, puisUx = y

dont la solution est le vecteur x cherché. Vous pourrez vérifier que y = b(4).D’autre part, j’ai toujours sous la main le déterminant de A :

(−1)p det(A) = det(PA) = det(LU) = det(L) det(U) =∏

i

uii.

9.2.4 GénéralisationL’exemple précédent se généralise sans difficulté au cas où A est une matrice carrée, régulière,

n×n. On peut démontrer l’existence et l’unicité de la factorisation. Je me contente de démontrer,par l’absurde, cette dernière propriété. Supposons qu’il existe deux décompositions d’une mêmematrice régulière :

A = L1U1 = L2U2,

d’où :X = L−1

2 L1 = U2U−11

Or, l’inverse d’une matrice triangulaire inférieure (supérieure) est elle-même triangulaire inférieure(supérieure). Le produit de deux matrices triangulaires inférieures est une matrice de même forme ;de même, le produit de deux matrices triangulaires supérieures est encore triangulaire supérieur.X, qui doit réunir ces deux propriétés, ne peut être que la matrice unité, ce qui entraîne L1 = L2

et U1 = U2.

9.2.5 Mise en oeuvre pratiqueSi la matrice A est régulière, je suis assuré de toujours pouvoir trouver un pivot non nul :

l’élimination de Gauss est toujours possible en théorie. On montre qu’elle est encore utile pour desmatrices de rang < n ou pour des matrices rectangulaires. Je n’aborderais pas ces points ici.

Les calculs réels sont en fait entachés d’erreurs d’arrondi. Ceci a pour conséquence que lerésultat final dépendra fortement du choix des pivots (ou encore de l’ordre des variables éliminées).On peut voir en gros ce qui se passe. Je suppose que les variables x1, x2, . . . , xk−1 ont été éliminées.Pour éliminer l’inconnue xk, je multiplie la ligne k par aik/akk. Si le pivot akk est petit, toutes leserreurs qui affectent les coefficients aik seront amplifiées. En conséquence, on adopte toujours lastratégie de «recherche du pivot partiel» ; pour éliminer la variable xk et quelque soit la valeur de|akk|, on recherche l’élément de plus grand module dans la colonne k et c’est lui que l’on prendracomme pivot effectif, après avoir fait la permutation de lignes nécessaire.

Certains auteurs recommandent la stratégie de la recherche complète du pivot maximal («pivottotal»). Pour éliminer xk, on cherche pour i ≥ k et pour j ≥ k l’élément aij de plus grandmodule. On l’amène en position de pivot par des permutations de lignes et de colonnes. Permuter

Page 105: 21124286 Analyse Numerique French

An_Num 104

les colonnes n’est pas neutre, c’est équivalent à permuter les inconnues. Il faut donc garder tracedes ces permutations pour restaurer l’ordre initial à la fin. La programmation est un peu pluscompliquée. Il semble par ailleurs que l’analyse précise des erreurs d’arrondi ne démontre pas unesupériorité nette de la recherche globale sur la recherche partielle.

Les erreurs d’arrondi sont plus faibles si les éléments des matrices successives restent à peu prèsdu même ordre de grandeur. Pour cela, on peut, avant de résoudre le système, multiplier certaineslignes par des facteurs tels que le plus grand coefficient de chaque ligne soit compris entre 0,5 et 1(équilibrage).

Le décompte détaillé des opérations arithmétiques nécessaires fait apparaître le résultat suivant :

factorisation n(n− 1/2)(n− 1)/3 additions et multiplicationsn(n− 1)/2 divisions

substitution n(n− 1)/2 additions et multiplicationsn divisions

Vous retiendrez les valeurs asymptotiques : pour l’élimination : O(n3/3) opérations et pour larésolution du système linéaire : O(n2) opérations.

L’algorithme de Gauss est assez économe en mémoire, si l’on accepte de détruire A. En effet,à chaque étape, je range les éléments de L à la place que devraient occuper les zéros de A aprèsélimination (dans le triangle inférieur). Les 1 de la diagonale de L sont sous-entendus. Le trianglesupérieur de A est progressivement occupé par les éléments de U.

9.2.6 Calcul de l’inverse de APour certaines applications, il faut calculer A−1 = X explicitement, soit encore trouver X telle

que AX = I. La colonne j de X est solution du système linéaire :

Axj = ej .

Je vais avoir à résoudre n systèmes linéaires dont les premiers membres sont identiques, maisles seconds membres différents. Il est commode d’utiliser la décomposition PA = LU effectuée uneseule fois, puis de résoudre les systèmes triangulaires Lyj = Pej puis Uxj = yj . On sait que lescoordonnées de yj sont nulles jusqu’à un certain rang, ce qui permet de gagner un peu de temps.Le nombre d’opérations nécessaires est O(n3), pas plus que pour calculer A2 mais trois fois plusque pour résoudre un système linéaire de même n.

9.3 Factorisation directeJe sais que la matrice régulière A admet une représentation sous forme d’un produit de matrices

triangulaires LU. Je peux alors me poser la question suivante : est-il possible de trouver les élémentsde L et U sans utiliser l’algorithme de Gauss ? La réponse est affirmative et c’est même assezsimple. Cependant, comme la décomposition LU est unique, ce nouvel algorithme est certainementéquivalent à celui de Gauss.

Soient `i,j les éléments de L, avec `i,j = 0 si i < j ; de même, les éléments de U sont tels queui,j = 0 si i > j ; enfin `i,i = 1. Je procéderai par identification.

a11 =∑

`1kuk1 = `11u11 = u11,

a12 =∑

`1kuk2 = u12,

......................

a1n =∑

`1kukn = u1n.

Page 106: 21124286 Analyse Numerique French

An_Num 105

En utilisant la première ligne de A, j’ai trouvé la première ligne de U. L’astuce pour continuer(due à Crout, d’où le nom de l’algorithme), consiste à identifier maintenant la première colonne deA.

a21 =∑

`2kuk1 = `21u11 + `22u21 ⇒ `21 = a21/u11

a31 =∑

`3kuk1 = `31u11 + `32u21 + `33u31 ⇒ `31 = a31/u11

................

Je détermine ainsi la première colonne de L. Vous pouvez imaginer que la deuxième ligne de Us’obtient à partir de la deuxième ligne de A, puis que la deuxième colonne de L découle de ladeuxième colonne de A, etc... Les formules générales s’écrivent :

uij = aij −i−1∑

k=1

`ikukj ; j = i, i + 1, ...n;

`i,j =1

ujj

[aij −

j−1∑

k=1

`ikukj

]; i = j + 1, j + 2, ...n (9.3)

(9.4)

avec toujours `ii = 1. Il y a une petite difficulté : cet algorithme est très sensible aux erreursd’arrondis, et ne fonctionnera pas sans recherche du pivot maximal dans chaque colonne. D’autrepart, en général, je forme la décomposition LU pour résoudre un système linéaire ; ici, je n’aipermuté que les lignes de A et non celles de b (qui n’apparaît pas) ; il faut donc garder trace despermutations pour pouvoir retrouver les inconnues par la suite.

On rencontre fréquemment deux cas particuliers. La premier est celui d’une matrice définiepositive, le second celui d’une matrice tridiagonale. Je vais les examiner brièvement.

9.3.1 Matrice tridiagonaleSoit A une matrice tridiagonale ; Je pose ai,i−1 = xi, ai,i = yi et ai,i+1 = zi. J’admets en plus

que A possède une décomposition LU sans permutation de lignes. Par identification, on vérifie queL et U sont bidiagonales :

y1 z1 0 . . . . . . 0x2 y2 z2 0 . . . 00 . . . . . . . . . . . . 00 . . . 0 xn−1 yn−1 zn−1

0 . . . . . . 0 xn yn

=

1 0 0 . . . 0l2 1 0 . . . 00 . . . 1 . . . 00 . . . ln−1 1 00 . . . 0 ln 1

d1 u1 0 . . . 00 d2 u2 . . . 00 . . . . . . . . . 00 . . . 0 dn−1 un−1

0 . . . 0 0 dn

Vous prouverez sans peine les relations suivantes :

y1 = d1 ; ; z1 = u1 ; xi = lidi−1;

yi = liui−1 + di ; ; zi = ui.

Vous pourrez finalement établir les formules très simples de résolution d’un système linéaire dontles coefficients seraient les xi, yi, zi. Dans le cas où l’on doit pratiquer une recherche du pivot

Page 107: 21124286 Analyse Numerique French

An_Num 106

partiel, le pivot de l’étape k se trouve nécessairement dans l’une des lignes k ou k + 1 (matricetridiagonale). Il en résulte une décomposition PA = LU, où L est toujours bidiagonale inférieure,alors que U est tridiagonale supérieure.

Une matrice n× n tridiagonale possède au plus 3n− 2 éléments non nuls, qui représentent, sin est grand, une petite fraction des n2 éléments théoriques. Il est recommendé d’économiser dela mémoire en rangeant ces éléments dans trois tableaux à une dimension. La discrétisation deséquations aux dérivées partielles fait souvent apparaître des matrices dites «creuses» comportanttrès peu d’éléments différents de zéro. Il existe des programmes spécialisés pour les manipuler sansencombrer la mémoire.

9.3.2 Matrice symétrique définie positiveSi A est symétrique, sa décomposition s’écrit : A = LLT . Je suppose en plus que A est

définie positive. Je rappelle deux définitions équivalentes : xT Ax > 0 quelque soit le vecteurx ; toutes les sous-matrices principales ont des déterminants positifs). On montre alors que lespivots de l’élimination de Gauss sont strictement positifs et donc que la factorisation LLT sefait sans permutation (décomposition régulière de Cholesky). On détermine les éléments de L(`ij = 0sij > i) par identification :

`211 = a11 > 0,

`11`21 = a21,

`221 + `222 = a22

.......................

`i,j =1

`jj

[aij −

j−1∑

k=1

`ik`jk

],

`i,j =1

`jj

[aij −

j−1∑

k=1

`ik`jk

]

9.3.3 VariantesJ’ai montré que la matrice régulière A admet la factorisation LU en un produit de matrices

triangulaires, inférieure pour L à diagonale unitaire, supérieure pour U. Cette répartition des rôlesn’est pas la seule possible. On peut concevoir la décomposition A = L′U′ où U′ est maintenanttriangulaire à diagonale unitaire, L′ étant simplement triangulaire ; un algorithme du à Doolittleet très voisin des précédents permet d’obtenir L′ et U′.

Plutôt que de favoriser l’un des facteurs grâce à la possession d’une diagonale unitaire, on peutimposer que chaque facteur triangulaire présente des éléments diagonaux égaux à 1. On a alors :

A = LDU , `ii = uii = 1

où D est une matrice diagonale. Dans le cas particulier où A est symétrique, il vient :

A = LDLT

9.4 Méthodes itératives de résolution des systèmes linéairesLes très grands systèmes linéaires posent un problème pratique : il peut être impossible de

caser en mémoire centrale l’ensemble des coefficients. D’autre part, on rencontre, surtout lorsque lesystème linéaire provient de la discrétisation d’une équation aux dérivées partielles, une structureparticulière des coefficients : les éléments diagonaux sont plus grands que tous les autres. Dansces cas là, on peut utiliser avec profit des méthodes itératives de résolution, beaucoup moinsgourmandes en mémoire et plus rapides.

Page 108: 21124286 Analyse Numerique French

An_Num 107

9.4.1 Méthode de JacobiJe cherche la solution de (9.1), avec aii 6= 0, 1 ≤ i ≤ n, en connaissant une approximation de

la solution : x[0]. Je vais utiliser une méthode d’approximations successives en traitant de façonéquivalente chaque coordonnée de x :

x[k]i =

1aii

(bi −∑

j 6=i

aijx[k−1]j ) ; 1 ≤ i ≤ n. (9.5)

Le calcul de x[k]i n’utilise que la ligne i de A : cette matrice peut donc être rangée sur disque et

lue à la demande.Comme pour toute méthode d’itération, je dois me préoccuper d’un critère d’arrêt. On rencontre

couramment l’une des deux définitions classiques suivantes. Je définis le «résiduel» à l’itération k :

r[k] = b−Ax[k].

Je peux choisir la condition de convergence

‖ r[k] ‖≤ ε ‖ b ‖, ε étant un seuil fixé à l’avance ou la condition :

‖ x[k] − x[k−1] ‖≤ ε ‖ x[k−1] ‖ .

L’algorithme (9.5) admet une représentation matricielle commode pour les analyses théoriques.Je décompose A en une somme de trois matrices (rien à voir avec les L et U des paragraphesprécédents) :

A = D− L−U

où D est diagonale, E strictement triangulaire inférieure et F strictement triangulaire supérieure(j’ai donc aii = dii), `ii = uii = 0). J’introduis le vecteur δx[k] ≡ x[k+1] − x[k]. En utilisant lesrelations de récurrence et la définition du vecteur résiduel, vous montrerez facilement que :

δx[k] = D−1r[k]

d’où :x[k+1] = D−1(L + U)x[k] + D−1b.

Exemple

Étant donné le système linéaire ci-dessous et le vecteur initial [0, 0]T :

3x + y = 2−x + 2y = −2

ou

x = (1/3)(2− y)

y =12(x− 2)

je trouve la suite de solutions approchées suivante :

x 2/3 1 8/9 5/6 23/27 31/36 139/162y −1 −2/3 −1/2 −5/9 −7/12 −31/54 −41/72

qui converge effectivement mais lentement vers la solution exacte [6/7,−4/7]T .

Page 109: 21124286 Analyse Numerique French

An_Num 108

un programme Scilab

Le code suivant résoud un système linéaire par la méthode itérative de Jacobi. La matrice descoefficients est presque aléatoire, mais j’ai ajouté 2 à chaque élément diagonal pour être sûr de laconvergence ; le vecteur des seconds membres est arbiraire.

1 //méthode de Jacob i pour l e s systemes l i n e a i r e s2 s e u i l = 1e−6; nitmax = 100 ;3 n = 36 ;4 // cons t ruc t i on d ’ une matrice A a d iagona l e dominante5 A = rand (n , n)−0.5∗ones (n , n) + 2∗eye (n , n ) ;6 d = diag (A) ;7 // cons t ruc t i on des second membres ;8 b = sin ( ( 1 : n)∗%pi /n) ’ ;9 // i n i t i a l i s a t i o n10 x = ones (n , 1 ) ;11 // r e s o l u t i o n12 f o r i t = 1 : nitmax13 s = b − A∗x ;14 y = x + s . / d ;15 i f max( abs (y−x ) ) < s eu i l , break , end16 x = y ;17 end18 // a f f i c h a g e19 x ’20 (A∗x − b) ’

À chaque tour dans la boucle, x contient l’ancienne valeur x[n] et y contient la nouvelle valeur x[n+1]

du vecteur inconnu. Plutôt que d’utiliser directement (9.5), il est commode de calculer∑n

1 ai,jx[n]j

(une composante du produit Ax), qui contient un terme de trop et de compenser après (lignes 13et 14).

La méthode de Jacobi converge lentement, mais je peux facilement modifier cet algorithme pourle rendre plus rapide.

9.4.2 Méthode de Gauss-SeidelL’algorithme de Jacobi me prescrit de calculer x

[k+1]i en utilisant les valeurs x

[k]1 , x

[k]2 , . . .,

x[k]i−1, x

[k]i+1, ...x

[k]n ; il semble que je pourrais gagner du temps ou de la précision, puisque je connais

déjà x[k+1]1 , x

[k+1]2 , . . . , x

[k+1]i−1 , qui sont plus précises que les valeurs des mêmes variables à l’itération

précédente (k). C’est ce que fait l’algorithme de Gauss-Seidel. Les relations de récurrence s’écrivent :

xk+1i =

1aii

bi −

i−1∑

j=1

aijx[k+1]j −

n∑

j=i+1

aijx[k]j

(9.6)

Ces équations sont peut-être plus faciles à programmer que celles qui découlent de la méthode deJacobi. En effet, il n’est pas nécessaire de conserver l’ensemble des valeurs x

[k]i pendant le calcul

des x[k+1]i : chaque nouvelle valeur remplace la précédente.

Je vous laisse le soin de montrer que l’équivalent matriciel de ces formules est :

x[k+1] = (D− L)−1Ux[k] + (D− L)−1b.

Exemple

Appliquant l’algorithme de Gauss-Seidel à l’exemple du paragraphe précédent, je trouve la suitede valeurs :

Page 110: 21124286 Analyse Numerique French

An_Num 109

x 2/3 8/9 23/27 139/162y -2/3 -5/9 -31/54 -185/324

Certains de ces nombres sont apparus lors du calcul précédent ; on observe toutefois que la conver-gence est beaucoup plus rapide.

une version en Scilab

1 //méthode de Gauss−Se i d e l pour l e s systemes l i n e a i r e s2 s e u i l = 1e−6; nitmax = 30 ;3 n = 16 ;4 // con s t ru c t i on d ’ une matr ice A a d iagona l e dominante5 A = rand (n , n)−0.5∗ ones (n , n) + 2∗ eye (n , n ) ;6 d = diag (A) ;7 // con s t ru c t i on des second membres ;8 b = s i n ( ( 1 : n)∗%pi /n ) ’ ;9 // i n i t i a l i s a t i o n10 x = ones (n , 1 ) ;11 // r e s o l u t i o n12 f o r i t = 1 : nitmax13 f o r i = 1 : n14 s = A( i , : ) ∗ x ;15 x ( i ) = x( i ) + (b( i ) − s )/A( i , i ) ;16 end17 i f max( abs (y−x ) ) < s eu i l , break , end18 y = x ; i t19 end20 x21 A∗x − b

9.4.3 Méthode de surrelaxationCette variante de l’algorithme de Gauss-Seidel (elle peut utiliser Jacobi aussi, mais sans avan-

tage) procède comme suit. Connaissant un vecteur x[k], je calcule un vecteur provisoire x[k+1] àl’aide de l’algorithme (9.6), puis je définis le vecteur x[k+1] définitif comme :

x[k+1] = ωx[k+1] + (1− ω)x[k]. (9.7)

ω est un paramètre réel dont il faut optimiser la valeur pour chaque classe de problème. Le choixω = 1 me ramène à (9.6). On a toujours ω < 2, et l’expérience montre que la meilleure valeur deω est voisine de 1,7.

En Scilab

1 //méthode de s u r r e l a x a t i o n pour l e s systemes l i n e a i r e s2 s e u i l = 1e−6; nitmax = 30 ;3 n = 16 ; omg = 1 . 0 5 ;4 // cons t ruc t i on d ’ une matrice A a d iagona l e dominante5 A = rand (n , n)−0.5∗ones (n , n) + 2∗eye (n , n ) ;6 d = diag (A) ;7 // cons t ruc t i on des second membres ;8 b = sin ( ( 1 : n)∗%pi /n) ’ ;9 // i n i t i a l i s a t i o n10 x = ones (n , 1 ) ;11 y = x ;

Page 111: 21124286 Analyse Numerique French

An_Num 110

12 // r e s o l u t i o n13 f o r i t = 1 : nitmax14 f o r i = 1 : n15 s = A( i , : ) ∗ x ;16 x ( i ) = x( i ) + omg∗(b( i ) − s )/A( i , i ) ;17 end18 i f max( abs (y−x ) ) < s eu i l , break , end19 y = x ; i t20 end21 x22 A∗x − b

Page 112: 21124286 Analyse Numerique French

Chapitre 10

Éléments propres

10.1 IntroductionDu point de vue théorique, le problème de la détermination des vecteurs propres et valeurs

propres d’une matrice est presque aussi bien connu que la résolution des systèmes linéaires. Laphysique fournit un grand nombre de problèmes équivalents à la diagonalisation d’une matricesymétrique ou hermitique. Je me limiterai essentiellement au cas des matrices réelles symétriques.Je rappelle quelques propriétés des éléments propres d’une telle matrice.

J’appelle valeurs propres de la matrice carrée symétrique A les solutions de l’équation en λ :

det(A − λI) = 0

si I est la matrice identité. Si A et I sont de taille n× n, les valeurs propres sont donc solutionsde l’équation polynômiale de degré n :

(−1)n(λn − Cn−1λn−1 + · · · − C1λ− C0) = 0

appelée équation (ou polynôme) caractéristique. Dans le cas d’une matrice symétrique n × n,l’équation (2) admet n racines réelles, distinctes ou non. Un certain nombre de méthodes anciennes(Leverrier, Krylov) forment le polynôme caractéristique et déterminent ses zéros. Ces méthodessont abandonnées, car, en l’absence d’hypothèses supplémentaires sur A, elles sont lentes (calculdes Ci) et instables (recherche des racines). Par contre, ces deux opérations sont rapides pourune matrice tridiagonale. Vous verrez que l’une des méthodes les plus performantes consiste à«tridiagonaliser» A en conservant ses éléments propres, puis à calculer les racines de son polynômecaractéristique.

Étant donné une matrice M orthogonale, je dis que la matrice A′ est semblable à A si A′ =MT AM . On a le théorème : A′ et A ont mêmes valeurs propres.

Le vecteur propre u associé à la valeur propre λ est défini par la relation :

Au = λu

Dans le cas particulier d’une matrice symétrique, les vecteurs propres (au nombre de n) peuventêtre choisis comme orthonormés : ils forment une base complète. Soit U la matrice dont les colonnessont les vecteurs propres. Les lectrices vérifieront sans peine que l’ensemble des n équations du type(3) peut s’écrire :

AU = UΛ

si Λ désigne une matrice diagonale dont les seuls éléments non nuls sont les valeurs propres. Depar sa définition, U est orthogonale, UT = U−1. En effet, l’élément i, j du produit UT U est leproduit scalaire de la ligne i de UT , soit le vecteur ligne uT

i , par la colonne j de U , soit uj . Comme

111

Page 113: 21124286 Analyse Numerique French

An_Num 112

les vecteurs propres sont orthonormés, j’ai (UT U)i,j = δi,j ; autrement dit, ce produit de matricesse réduit à la matrice unité. Finalement :

Λ = UT AU

ce qui traduit le théorème suivant. Une matrice symétrique peut toujours être diagonalisée aumoyen d’une similitude ; la matrice de transformation est orthogonale et ses colonnes forment unjeu complet de vecteurs propres.

10.2 Méthode de la puissance n-ième et méthodes dérivées

10.2.1 Puissance n-ièmeIl arrive parfois que l’on recherche uniquement la plus grande des valeurs propres. La méthode

de la puissance n-ième répond bien à ce besoin. L’algorithme est très simple. Ayant fait choix d’unvecteur initial x(0), je forme par récurrence :

x(n) = Axn−1 = Anx(0).

Le vecteur x(n) tend vers le vecteur propre associé à la plus grande valeur propre (en module) ;appelons-la λ1. Le rapport de deux composantes homologues de x(n) et x(n−1), soit x

(n)k /x

(n−1)k ,

tend vers λ1. La démonstration est facile dans le cas d’une matrice symétrique, bien que la méthodequi vient d’être exposée soit plus générale. Soient u(i), λi les éléments propres de A. Je peuxdévelopper x(0) sur la base des u(i) :

x(0) =∑

i

ciu(i)

Appliquons A :x(1) = Ax(0) =

i

ciAu(i) =∑

i

ciλiu(i)

puis A2 :x(2) = Ax(1) =

i

ciλ2i u

(i).

Il est facile d’écrire le cas général si l’on se souvient de ce que Ak admet les mêmes vecteurs propresque A et les λk

i comme valeurs propres :

x(k) =∑

i

ciλki u(i) = λk

1c1u(1) + λ

(k)1

i=2

ci(λi/λ1)ku(i).

Comme λi/λ1 < 1, la propriété est démontrée.

Exemple.

Cherchons la plus grande valeur propre de

A =[

2 11 2

]

à partir du vecteur [1, 0]T . La suite des vecteurs itérés et les valeurs approchées de la valeur propre,calculées à partir de la deuxième composante, sont :

k 1 2 3 4 5 6x(k) 2 5 14 41 122 365

1 4 13 40 121 364λ(k) 2,5 2,8 2,93 2,98 2,99

Page 114: 21124286 Analyse Numerique French

An_Num 113

Le programme ci-desous

1 // pu i s sance n−ième2 A = [ 1 , 2 ; 3 , 1 ] ;3 u = [ − 1 ; 0 . 1 ] ;4 xset ( "window" ,0 ) , xbasc (0 )5 xsetech ( [ 0 , 0 , 1 , 1 ] , [ −1 . 1 , −1 . 1 , 0 . 1 5 , 0 . 1 5 ] )6 plot2d (0 , 0 , s t y l e = −1, f r ame f l ag=0)7 xarrows ( [ 0 , u ( 1 ) ] , [ 0 , u ( 2 ) ] , 0 . 0 5 )8 xstring (u ( 1 ) , u (2)−0.1 , string ( 0 ) )9 for i = 1 :810 u = A∗u ;11 co e f = max(abs (u ) )12 u = u/ coe f13 xarrows ( [ 0 , u ( 1 ) ] , [ 0 , u ( 2 ) ] , 0 . 0 5 , i +1)14 xstring (u ( 1 ) , u (2)−0.1 , string ( i ) )15 end

a produit une représentation graphique de ces calculs Comme le montre l’exemple, il arrive que

Fig. 10.1 – Recherche d’un vecteur propre par la méthode de la puissance n-ième

0

1

2

345

−0.2 0.0 0.2 0.4 0.6 0.8 1.0 1.2−0.2

0.0

0.2

0.4

0.6

0.8

1.0

1.2

certaines composantes de u(i) deviennent très grandes (ou très petites) au cours du calcul. Pouréviter tout problème de dépassement de capacité, on normalise x(i) de telle façon que supm |x(i)

m | =1, avant de calculer x(i+1) (normalisation au sens de la norme infinie). Le facteur de normalisationest alors l’approximation de la valeur propre. Le

10.2.2 Puissance n-ième avec décalageLa rapidité de convergence de l’algorithme précédent dépend des rapports λi/λ1. La convergence

sera lente s’il existe une autre valeur propre proche de λ1. Il est possible d’accélérer la convergence,en augmentant les différences entre valeurs propres. Il suffit de remarquer que A et A′ = A− sIont mêmes vecteurs propres (ces matrices commutent) et que leurs valeurs propres diffèrent parune translation. Si u et λ sont éléments propres de A, alors :

(A− sI)u = Au− sIu = (λ− s)u

Ce procédé est utile dans le cas λ1∼= −λ2 ; après changement d’origine, λ′1 pourra être très différent

de λ′2.

Page 115: 21124286 Analyse Numerique French

An_Num 114

10.2.3 Puissance n-ième de l’inverseJe peux, en principe, obtenir une estimation de la plus petite valeur propre de A, en module,

en multipliant n fois le vecteur x(0) par la matrice A−1. Je vous laisse les lecteurs démontrer cerésultat. Dans la pratique, on ne calcule pas x(n) = A−1x(n−1), mais on résout le système linéaireAx(n) = x(n−1), ce que l’on peut faire rapidement en formant une fois pour toute la décompositionLU de A. Cette méthode a pour mérite principal de servir d’introduction à l’algorithme suivant,plus utile.

10.2.4 Puissance n-ième de l’inverse avec décalageConsidérons la matrice B = (A − sI)−1 ; quels sont ses éléments propres ? Si s ne coïncide

pas avec l’une des valeurs propres de A, B est régulière et commute avec A. Elle admet donc lesmêmes vecteurs propres. Soit u l’un de ces vecteurs ; il obéit à la relation Au = λu, ou encoreu = λA−1u, ce qui montre que 1/λ est valeur propre de A−1 ; en combinant ce résultat avec lespropriétés de A− sI, je vois que 1/(λ− s) est valeur propre de B. Étant donné un vecteur initialx(0), je forme par récurrence :

x(k) = Bx(k−1) = Bkx(0) = (A− sI)−kx(0).

Développons x(0) selon les vecteurs propres de A, en appelant λm la valeur propre la plus prochede s :

x(k) =∑

i

ci

(λi − s)kui =

cm

(λm − s)k

um +

i 6=m

ci

(λm − s

λi − s

)k

ui

Comme |λm − s| < |λi − s|, le vecteur x(k) converge vers un vecteur proportionnel à u(m). Iciencore, il ne faut pas calculer les inverses des matrices, mais résoudre des systèmes linéaires,comme (A− sI)x(k) = x(k−1).

Cet algorithme peut me permettre de calculer toutes les valeurs propres de A. Il suffit debalayer, à l’aide du paramètre s, l’intervalle où doivent se trouver les valeurs propres. Pour chaquevaleur de s, l’itération sur x converge vers le vecteur propre appartenant à la valeur propre la plusproche de s ; par ailleurs, le rapport de deux coordonnées permet le calcul de cette valeur propre :x

(k)j /x

(k−1)j = 1/(λj − s).

En fait, la méthode s’avère peu pratique pour la recherche systématique des valeurs propres ;elle est au contraire très commode pour déterminer les vecteurs propres, connaissant des valeursapprochées des λi. Supposons en effet qu’une autre méthode, différente, m’ait fourni un nombreλ′, valeur approchée au millième de λm. Si je choisis s = λ′, l’algorithme précédent va convergeren quelques itérations vers le vecteur propre associé à λm, à condition que toutes les autres valeurspropres diffèrent de λm par plus de quelques millièmes.

Exemple. Au §2.1, j’ai trouvé une valeur approchée de la plus grande valeur propre d’une matriceA, soit s = 2, 99. Cherchons le vecteur propre correspondant à partir de x(0) = (1, 0)T . Il me fautrésoudre le système :

−1, 01u + v = 1,u− 1, 01v = 0,

dont la solution est [−50, 2487;−49, 7512]T ou [1; 0, 990099]T après normalisation. Une autre ité-ration donnerait le vecteur [1; 0, 99995]T exact à 5 10−5 près.

10.3 Méthode de JacobiContrairement aux algorithmes précédents, la méthode de Jacobi permet le calcul de tous les

éléments propres simultanément. Il s’agit d’effectuer une série de similitudes qui vont amener lamatrice carrée symétrique A progressivement à la forme diagonale, tout en préservant ses valeurspropres.

Page 116: 21124286 Analyse Numerique French

An_Num 115

10.3.1 PrincipeLe principe de la méthode est facile à comprendre sur le cas à deux dimensions, et c’est par là

que je commence. Soit la matrice :

A =[

a11 a12

a12 a22

]

que je souhaite diagonaliser par une similitude A′ = RT AR, où R est une matrice orthogonalequi s’écrit :

R =[

cosα sin α− sin α cosα

]=

[c s−s c

].

Un calcul élémentaire montre que :

A′ =[

a11c2 − 2a12sc + a22s

2 a12(c2 − s2) + (a22 − a11)csa12(c2 − s2) + (a22 − a11)cs a11s

2 + 2a12cs + a22c2

].

Je peux alors diagonaliser A en choisissant α selon la relation :

tg2α = 2a12/(a22 − a11).

Ces petits calculs admettent une interprétation géométrique simple. Soit x = (x1, x2) un vecteurde <2 ; à la matrice A, j’associe la forme quadratique xT Ax et l’équation :

xT Ax = 1 = a11x21 + (a12 + a21)x1x2 + a22x

22

qui représente une conique ; je suppose, pour fixer les idées, que cette courbe est une ellipse.J’effectue maintenant le changement de repère défini par :

x = Ry.

Il s’agit d’une rotation des axes d’angle α. Je fais le changement de variables dans l’équation del’ellipse :

(Ry)T ARy = yRT ARy = yA′y = 1

La nouvelle équation de la conique est définie par la nouvelle matrice. Si A′ est diagonale parceque j’ai fait un bon choix pour α, l’équation s’écrit :

a′11y21 + a′22y

22 = 1.

Une rotation de −π/3 amène les axes rouges sur les axes bleus. On dit que la conique «a étéramenée à ses axes principaux» ; les axes principaux sont aussi les axes de symétrie de l’ellipse.Les termes «croisés» ou «rectangles» ont disparu de l’équation. La généralisation de ce procédé àn dimensions constitue l’algorithme de Jacobi.

10.3.2 Méthode de JacobiJe vais appliquer à la matrice A une suite de similitudes A → A(1)1 → A(2)2 → · · · →

A(n), avec A(i) = R−1i A(i−1)Ri de telle manière que A(n) tende vers une matrice diagonale D

d’éléments diagonaux λi. Il est facile de comprendre pourquoi la diagonalisation n’est qu’appro-chée. A l’aide d’une rotation des axes du plan (x1, x2), je peux annuler l’élément a12 comme auparagraphe précédent. Mais, lorsque que j’applique une nouvelle similitude pour faire disparaîtrea13, tous les éléments de la ligne 1, en particulier le zéro que je viens de créer en a12, sont modifiés.Ce n’est que progressivement que la "substance" de la matrice va se concentrer sur la diagonale. A

Page 117: 21124286 Analyse Numerique French

An_Num 116

Fig. 10.2 – Une ellipse, avec un repère quelconque en rouge et les axes principaux en bleu

x1x2 y2

y1est symétrique, réelle. Le passage de A(i) (éléments ars) à A(i+1) (d’éléments a′rs) fait intervenirla matrice orthogonale Rjk qui vaut (en posant c = cos θjk et s = sin θjk) :

Rj,k =

1 0 · · · · · · · · · · · · · · · 0

0. . . · · · 0

0 1...

... c s...

... 1...

... −s c...

0. . . 0

0 · · · · · · · · · · · · · · · · · · 1

Rjk représente une rotation des axes dans le sous-espace (j, k). Seules les colonnes j et k et leslignes j et k de A(i+1) diffèrent de celles de A(i). En calculant d’abord AR, puis RT AR, vousmontrerez que les équations de transformation s’écrivent :

a′rs = ars, r, s 6= j, k,

a′rj = a′jr = carj − sark, r 6= j, k,

a′rk = a′kr = sarj + cark, r 6= j, k,

a′jj = c2ajj + s2akk − 2csajk,

a′jk = a′kj = cs(ajj − akk) + (c2 − s2)ajk,

a′kk = s2ajj + c2akk + 2csajk.

L’angle de rotation est défini par la condition a′jk = 0

tg 2θjk = (akk − ajj)/(2ajk).

En pratique, on effectue les calculs sur une moitié de la matrice, puisque la similitude respecte lasymétrie. On ne calcule pas non plus a′jk, dont on sait qu’il est nul.

Je peux donner une indication sur la convergence de la méthode. Nous définissons les normes

Page 118: 21124286 Analyse Numerique French

An_Num 117

extradiagonales de A et de A′ par les relations :

S2 =∑

j 6=k

|ajk|2; S′2 =∑

j 6=k

|a′jk|2.

En remplaçant les a′jk par leurs expressions, on montre que S′ < S, si bien que la suite desS(A(j)), positive décroissante, converge. Il est un peu plus difficile de montrer que les S(A(j))tendent vers zéro, à condition que les éléments à éliminer soient choisis dans l’ordre "lexicogra-phique" a12, a13, . . . , a1n, a23, . . . , a2n, . . . On arrête le calcul quand sup |aij | < seuil.

Lorsque la convergence est atteinte, la matrice est réputée diagonale et QT AQ = D, avecR1R2 · · ·Rn = Q. Les colonnes de Q sont les vecteurs propres et nous intéressent. Il serait ruineuxde conserver les matrices Ri pour les multiplier à la fin. Je procède en fait par récurrence, en posant

Qk = R1R2 · · ·Rk, k < n

etQk+1 = QkRk+1

. Chaque fois que je définis les éléments d’une matrice R, j’en profite pour former la matrice Qk+1

(éléments q′rs) à partir de Qk (éléments qrs) :

q′rs = qrs, r, s 6= j, k,

q′rj = cqrj + sqrk, r 6= j, k,

q′rk = −sqrj + cqrk, r 6= j, k;

Dès que l’ordre de la matrice dépasse une dizaine, la méthode de Jacobi est moins rapide quela réduction de la matrice à la forme tridiagonale, suivie d’un calcul de valeurs propres. Cetteremarque est d’autant plus pertinente que A a la forme d’une matrice bande plus ramassée : laméthode de Jacobi détruit cette structure.

Exemple.Je me propose de diagonaliser la matrice symétrique

A = A0 =

1.0 1. 0.51.0 1. 0.250.5 0.25 2.0

Je calcule d’abord le carré de la norme diagonale -->sum(A.*A) = 8.625 et le carré de la normecomplète de A : -->trace(A.*A) = 6.0 Pour annuler l’élément a12, il faut effectuer une premièrerotation dans le sous-espace (1,2). Comme a22 = a11, j’ai 2θ = π/2, θ = π/4, si bien que

R1 =

.7071068 .7071068 0.−.7071068 .7071068 0.

0. 0. 1.

et

A1 = RT1 AR1 =

0. 0. .17677670. 2. .5303301

.1767767 .5303301 2.

La norme au carré reste constante, sum(A1.*A1) = 8.625, alors que la somme des carrés deséléments diagonaux augmente : trace(A1.*A1) = 8. La deuxième rotation, destinée à annulerle plus grand élément extradiagonal, soit a1

23, est encore particulière, θ = π/4 et

R2 =

1. 0. 0.0. .7071068 .70710680. −.7071068 .7071068

Page 119: 21124286 Analyse Numerique French

An_Num 118

A2 = RT2 ∗A1 ∗R2 =

0. −.125 .125−.125 1.4696699 2.220E − 16.125 2.220E − 16 2.5303301

Les tous petits nombres a223 = a2

32 sont dûs à des erreurs d’arrondi ; je fait le ménage pour les fairedisparaître

A2 = clean(A2) = ! 0. - .125 .125 !! - .125 1.4696699 0. !! .125 0. 2.5303301 !

Je surveille le carré de la norme complète, sum(A2.*A2) = 8.625 et le carré de la norme diagonale,trace(A2.*A2) = 8.5625. Vous remarquez que les éléments précédemment annulés ont tendance

à «repousser», bien que moins vigoureusement.La troisième rotation, dans le sous-espace (1,2), vise à éliminer a2

12. Je trouve tg 2θ = 2a212/(a2

22−a211) = −0.1701062, d’où la matrice de rotation

R3 =

.9964533 −.0841471 0.

.0841471 .9964533 0.0. 0. 1.

et la matrice A3, débarrassée d’éléments inférieurs à 10−16 :

A3 =

−.0105558 0. .1245567

0. 1.4802257 −.0105184.1245567 −.0105184 2.5303301

Les éléments diagonaux se renforcent : trace(A3.*A3) = 8.59375.La quatrième rotation aura lieu dans le sous-espace (1,3), avec tg 2θ = 0.0980419 ou θ =

0.0488648 rd. La matrice de rotation s’écrit

R4 =

.9988064 0. .04884530. 1. 0.

−.0488453 0. .9988064

et permet d’obtenir

A4 =

−.0166471 .0005138 0..0005138 1.4802257 −.0105058

0. −.0105058 2.5364214

Mon critère de convergence est atteint : j’arrête l’itération. Le carré de la norme diagonale vautmaintenant 8.6247788 (à 3 10−4 du total). Les vecteurs propres sont les colonnes de la matrice desimilitude globale ; comme je n’ai à manipuler que 4 petites matrices, je forme R directement

R = R1 ∗R2 ∗R3 ∗R4 =

.7213585 .4387257 .5358747−.6861572 .5577276 .4670419−.0939688 −.7045989 .7033564

Cette matrice est orthogonale aux erreurs d’arrondi près, comme vous le vérifierez en formantRT ∗R. Je vous recommande aussi d’effectuer le produit de A par une colonne de R, pour vérifierque l’on obtient bien un vecteur proportionnel à cette colonne et à la valeur propre correspondante.

Enfin, je peux demander à Scilab de faire les calculs directement, avec une tolérance de l’ordrede 10−16 :

-->[D,X] = bdiag(A)X =! .7212071 - .5314834 - .4442811 !

Page 120: 21124286 Analyse Numerique French

An_Num 119

! - .6863493 - .4614734 - .5621094 !! - .0937280 - .7103293 .6976011 !D =! - .0166473 0. 0. !! 0. 2.5365259 0. !! 0. 0. 1.4801214 !

L’erreur encourue sur les valeurs propres après 4 itérations de l’algorithme de Jacobi n’excède pas10−4. Les vecteurs propres sont nettement moins précis. C’est toujours le cas pour l’algorithme deJacobi. Une dernière remarque : l’ordre dans lequel apparaissent les valeurs propres et les vecteurspropres associés est arbitraire, de même que le signe des vecteurs propres.

10.4 Réduction à la forme tridiagonaleIl est avantageux d’abandonner l’objectif de l’algorithme de Jacobi (diagonaliser une matrice

symétrique par une suite convergente de similitudes) pour un objectif plus restreint : amenerla matrice réelle symétrique A à la forme tridiagonale. En effet, la détermination des élémentspropres d’une matrice tridiagonale est très rapide. D’autre part, la transformation de A en matricetridiagonale nécessite, grâce à l’algorithme de Householder, un nombre fini d’opérations.

10.4.1 Matrice de HouseholderL’algorithme de Householder se comprend facilement à partir de sa représentation géométrique

dans l’espace à trois dimensions. Soient un point M et un plan (P), contenant l’origine (mais pasM) et normal au vecteur unitaire n. Je cherche à construire le point M’ qui se déduit de M par unesymétrie orthogonale par rapport à (P). La droite passant par M et perpendiculaire à (P) perce ceplan en K ; elle passe aussi par M’. Le vecteur −−→KM est parallèle à n ; sa longueur est celle de laprojection orthogonale de OM sur n ; autrement dit, −−→KM = (n · −−→OM)n. Par symétrie,

−−−→KM ′ est

l’opposé de−−→KM . Je peux relier M’ à M par−−−→OM ′ = −−→

OM+−−−→MM ′ = −−→

OM−2−−→KM = −−→OM−2(n·−−→OM)n.

Il est clair que OM ′ = OM , la symétrie préservant les longueurs.Lorsque je représente les vecteurs par des matrices colonne, les relations précédentes deviennent−−→

OM = x,−−−→OM ′ = x′ et x′ = x − 2(nT x)n = x − 2nnT x = (I − 2nnT )x, les dernières formes

étant rendues possibles par l’associativité des produits.Ce raisonnement se généralise sans peine à l’espace à n dimensions, même si la représentation

géométrique devient plus difficile. Soit w un vecteur unitaire de <n : wT w = 1. Je définis unematrice :

P = 1− 2wwT .

Cette matrice est symétrique : P T = P parce que le transposé d’un produit est égal au produitdes transposées dans l’ordre inverse. Elle est aussi orthogonale :

P T P = PP = (I − 2wwT )(I − 2wwT )= I − 2wwT − 2wwT + 4wwT wwT = I.

et donc idempotente P 2 = I. Si deux vecteurs x, y satisfont à la relation :

y = Px = x− 2(wwT x),

alors :yT y = xT P T Px = xT x.

Je m’intéresse maintenant à la réciproque du cas précédent :je voudrais déterminer un vecteur w(et donc une matrice P ) tel qu’un x donné soit transformé par P en un vecteur donné à l’avance

Page 121: 21124286 Analyse Numerique French

An_Num 120

et même, plus précisément, en un multiple du premier vecteur de la base canonique

Px = ke1.

D’après les relations précédentes, il apparaît que |k|2 =‖ x ‖2= xT x ≡ L2 et k = ±L. De plus,d’après la définition de Px, x− ke1 = 2wwT x = 2(wT x)w : le vecteur w doit être proportionnelà x− ke1. Comme il doit être en plus normalisé, je peux écrire

w =x− ke1

‖ x− ke1 ‖De plus

‖ x− ke1 ‖=‖ x± Le1 ‖= [(x1 ± L)2 + x22 + .... + x2

n]1/2.

On montre qu’il vaut mieux choisir le signe moins (pour éviter des erreurs d’arrondi), si bien que :

|x1 − k|2 = |x1 + L|2 = L2 + 2L|x1|+ x21.

Il s’en suit que : ‖ x− ke1 ‖2= 2L2 + 2L|x1|. On peut écrire, sans normaliser le vecteur w :

P = 1− βuuT

avec : L =‖ x ‖, k = −L, u = x− ke1 = [x1 + L, x2, . . . , xn]T , β = 1/L(L + x1).Exemple. Soit le vecteur x = [1,−2, 3, 1,−1]T dont la norme est L = 4. Le vecteur u vaut

[5,−2, 3, 1,−1]T et β = 1/20. On trouve alors :

P =120

−5 10 −15 −5 510 16 6 2 −2−15 6 11 −3 3−5 2 −3 19 15 −2 3 1 19

et on vérifie que Px = [−4, 0, 0, 0, 0]T .

10.4.2 TridiagonalisationJe vais utiliser des matrices de Householder comme P pour amener la matrice réelle symétrique

A à la forme tridiagonale, à l’aide d’une série de similitudes :

A(i) = Q(i)TA(i−1)Qi.

Le premier produit (prémultiplication qui agit sur les colonnes), QT A, doit laisser invariant a11 etdoit transformer le vecteur [a21, a31, . . . , an1]T en [k, 0, 0, . . .]T , un multiple du premier vecteur dela base canonique de <n−1. Il faut donc faire agir une matrice de Householder Pn−1 de dimensionn− 1 ; celle-ci sera insérée dans une matrice d’ordre n ayant la structure

Q =[

1 0 . . . 00 Pn−1

]

Le deuxième produit (QT A)Q (postmultiplication agissant sur les lignes) fera de même pour lapremière ligne de A : a11 invariant et [a12, a13, . . . , a1n] transformé en [k, 0, . . . , 0].

Vous imaginez sans peine la suite de l’itération : à l’aide d’une matrice de Householder n− 2×n− 2, je forme une nouvelle matrice Q, d’ordre n− 1, dont la mission sera d’annuler les élémentsa42, . . . , an2 et a24, . . . , a2n (ce sont les mêmes). Au bout de n − 2 similitudes, la matrice seraexactement sous forme tridiagonale : cet algorithme est plus compliqué que celui de Jacobi, maisil aboutit au résultat cherché en un nombre fini d’opérations.

Il faudra, en principe, garder les matrices Qi pour le calcul des vecteurs propres. Si y est unvecteur propre de An−2, x = Q1Q2 · · ·Qn−2y est vecteur propre de A. En pratique, le produitdes Q est accumulé au fur et à mesure.

Page 122: 21124286 Analyse Numerique French

An_Num 121

Exemple

Je vais tridiagonaliser la matrice qui m’a déjà servi à illustrer la méthode de Jacobi :

A =

1. 1. .51. 1. .25.5 .25 2.

Le bas de la première colonne constitue le vecteur à traiter

xx = A(2 : 3, 1) =[

1..5

].

Je calcule successivement k = sqrt(x’*x) = 1.118034,

w = x− k ∗ [10]′ =[ −.1180340

.5

],

que je normalise

w = w/sqrt(w′ ∗ w) =[ −.2297529

.9732490

].

J’en déduitP = eye(2, 2)− 2 ∗ w ∗ w′ =

[.8944272 .4472136.4472136 −.8944272

].

Je vérifie ce premier résultat

P ∗A(2 : 3, 1) = Px =[

1.1180342.776E − 16

].

Je construit la matrice Q avant de tridiagonaliser :

Q = [1 0 0; 0 P (1, 1) P (1, 2); 0 P (2, 1) P (2, 2)] =

1. 0. 0.0. .8944272 .44721360. .4472136 −.8944272

.

Pour une matrice 3× 3, il n’y a qu’une étape de tridiagonalisation :

A1 = clean(A1) =

1. 1.118034 0.1.118034 1.4 −.55

0. −.55 1.6

.

Quelques vérifications élémentaires : trace(A1) = 4. = trace(A) et det(A1) = -.0625 = det(A).

10.4.3 Calcul des valeurs propresSoit J une matrice tridiagonale symétrique réelle d’ordre n :

J =

δ1 γ2 0 · · · 0γ2 δ2 γ3 · · · 00 γ3 δ4 γ4 · · ·...

. . . . . .γn δn

.

Page 123: 21124286 Analyse Numerique French

An_Num 122

Nous supposons les γi tous différents de zéro. Nous pouvons former facilement le polynômecaractéristique de J , en procédant par récurrence. Définissons en effet la matrice partielle :

Ji =

δ1 γ2 0 · · ·γ2 δ1 γ3 · · ·· · · · · ·

γi

γi δi

etpi(x) = det[Ji − λI].

En développant ce déterminant en fonction des éléments de la dernière colonne, je trouve lesrelations :

p0(x) = 1; p1(x) = δ1 − x;

pi(x) = (δi − x)pi−1(x)− γ2i pi−2(x).

Toute méthode efficace de recherche des zéros d’un polynôme est maintenant applicable aucalcul des valeurs propres (les racines de pn) ; la méthode de bissection est stable et commode. Onpeut aussi utiliser l’algorithme de Newton, en calculant la dérivée de pn à l’aide de la récurrence :

p′0(x) = 0; p′1(x) = −1,

p′i(x) = −pi−1(x) + (δi − x)p′i−1(x)− δ2i p′i−2(x).

10.5 Matrices hermitiquesOn rencontre souvent , en physique, des matrices hermitiques : comment chercher leurs éléments

propres ? La méthode de Householder peut s’étendre à des matrices complexes, mais la program-mation en Pascal est pénible, puisque ce langage ignore le TYPE complexe et que l’on est obligéde réécrire toutes les opérations arithmétiques (ce ne serait pas le cas en FORTRAN ou en C). Uneautre méthode consiste à séparer partie réelle et partie imaginaire du problème de valeurs propres.Je cherche des solutions de :

Ax = λx,

où A est hermitique et λ est réel. Je pose A = A′ + i′′, x = x′ + ix′′. L’hermiticité de A imposela symétrie de A′ et l’antisymétrie de A′′ ( A′′T = −A′′). En séparant partie réelle et partieimaginaire :

A′x′ −A′′x′′ = λx′,

A′′x′ + A′x′′ = λx′′.

Ces relations peuvent être considérées comme le développement par blocs de l’équation :[

A′ −A′′

A′′ A′

] [x′

x′′

]= λ

[x′

x′′

].

J’ai ainsi remplacé un problème n×n complexe en un problème 2n×2n réel. Le nombre de valeurspropres a-t-il doublé pour autant ?

Page 124: 21124286 Analyse Numerique French

Chapitre 11

Traitement de donnéesexpérimentales

11.1 IntroductionChaque fois que je cherche à mesurer pratiquement une grandeur, j’obtiens un résultat plus

ou moins éloigné de la "vraie" valeur. En répétant l’expérience, en améliorant la technique, laméthode et les instruments de mesure, j’ai l’espoir (souvent vérifié) que la part d’erreur va diminueret que les résultats vont s’approcher asymptotiquement d’une estimation raisonnable et sûre. Desconsidérations de ce genre s’appliquent à toute activité et en particulier aux mesures physiques,qui sont toujours entachées d’erreurs et d’incertitudes, lesquelles doivent être réduites par desperfectionnements de la technique et aussi estimées pour établir la validité des résultats.

Il est commode d’établir une classification des erreurs qui guettent la personne qui effectue desmesures. On distingue ainsi les erreurs systématiques, qui découlent par exemple d’un mauvaisétalonnage d’un instrument ou d’un biais de l’observateur. Si, pour prévoir l’issue d’un prochainscrutin présidentiel, je n’interrogeais que des personnes de sexe masculin, d’âge supérieur à 50ans et dont les revenus sont supérieurs à 300 000 F/an, j’aboutirais à une prédiction « biaisée»,entachée d’une erreur de méthode. De même la mesure des dimensions d’une pièce avec une règletordue, la mesure précise d’une masse sans tenir compte de la poussée d’Archimède de l’air...

D’autre part, malgré la bonne volonté de la personne chargée des mesures, il peut s’introduiredes erreurs non reproductibles, aléatoires. C’est par exemple le cas lorsque la sensibilité de l’appareilest insuffisante et que le signal cherché est accompagné de « bruit ». Les erreurs aléatoires affectentla précision de la mesure : plus elles sont importantes, plus les mesures sont dispersées. Les erreurssystématiques affectent la justesse du résultat.

Si la dispersion se détecte aisément, le biais est moins visible ; en toute rigueur, il faudrait, pourle mettre en évidence, disposer d’une mesure juste et indépendante de la quantité en question. Onaugmente la précision d’une expérience en répétant celle-ci plusieurs fois et en retenant la moyennedes résultats individuels. On améliore la justesse en analysant avec soin la mesure et en cherchanttoutes les causes d’erreurs possibles.

Dans les paragraphes qui suivent, je considérerais a priori que je dispose de mesures parfaitementjustes, seulement affectées d’erreurs aléatoires. Cette situation permet de faire des prédictions assezsimplement. Le résultat d’une mesure est considéré comme le résultat du tirage d’une variablealéatoire, superposition de la valeur "vraie" (non fluctuante ou certaine) et de l’erreur ; je supposeraique les erreurs sont additives, c’est-à-dire qu’un résultat Y est la somme de la valeur vraie inconnues et d’une erreur ε : Y = s + ε.

Comme ε est réputée aléatoire, je suis conduit à considérer les lois de probabilités les plusfréquentes qui peuvent caractériser une grandeur aléatoire. Une mesure physique est rarement

123

Page 125: 21124286 Analyse Numerique French

An_Num 124

utilisée seule ; je chercherai souvent à tirer parti d’une série de résultats, pour déterminer lesparamètres qui définissent un modèle théorique. Quelle est l’influence des erreurs de mesures surla précision de mes connaissances des paramètres ? Je donnerai quelques éléments de réponse à lafin du chapitre.

11.2 Probabilités

11.2.1 Variables discrètesJe suppose que les lecteurs ont des connaissances élémentaires en théorie des probabilités et je

ne ferai que rappeler quelques définitions. Je commence par le cas de grandeurs aléatoires discrètes,qui ne prennent que des valeurs entières ou équivalentes à des entiers (pile ou face, lancement d’undé, tirage du loto). Les différents résultats possibles d’un tirage ou d’une épreuve, Xi, sont repéréspar l’indice i, 1 ≤ i ≤ n. Soit pi la probabilité du résultat i. Ces grandeurs sont normalisées, en cesens que

n∑1

pi = 1.

La valeur moyenne d’une grandeur aléatoire X est notée < X > ou µ ; on a :

< X >≡n∑1

piXi. (11.1)

Un autre paramètre important est l’écart type σ tel que :

σ2 ≡< (X− < X >)2 >; (11.2)

σ2 est appelée la variance de X.Il arrive souvent que l’on sache que tous les résultats d’une épreuve sont également probables

(lancement d’un dé équilibré par exemple). La probabilité d’un événement complexe est alorsproportionnelle au nombre d’événements élémentaires qui le compose (exemple : faire apparaîtreun nombre pair en lançant un dé a une probabilité de 3/6). On traduit souvent ce fait en disant quela probabilité d’un événement composé est le rapport du nombre de cas «favorables» au nombrede cas total.

11.2.2 Variables continuesCes définitions prennent une forme un peu différente lorsque la quantité X est une grandeur

réelle, continue, définie dans un intervalle fini ou non. Il est commode d’introduire la fonction derépartition de X, qui est la probabilité d’observer une valeur de X inférieure ou égale à x :

F (x) = Proba(X ≤ x)

et la densité de probabilité de X qui est la dérivée de la fonction précédente :

f(x) = F ′(x).

On l’interprète comme la probabilité de trouver X dans un petit intervalle :

f(x)dx = Proba(x ≤ X ≤ x + dx).

Page 126: 21124286 Analyse Numerique French

An_Num 125

0 1 2 3 4 5 6 7 8 9 100

0.2

0.4

0.6

0.8

1.0

1.2

P

P

La figure montre les deux fonctions F et F ′ = f et la représentation géométrique de la proba-bilité de trouver X dans l’intervalle [5,3..6,4]. La densité de probabilité est normalisée :

∫f(x)dx = 1,

ce qui implique que la fonction de répartition F varie de 0 à 1 d’une extrémité à l’autre de l’intervallede définition. La valeur moyenne et l’écart type sont alors définis comme :

< x >≡∫

xf(x)dx, (11.3)

σ2 ≡∫

(x− < x >)2f(x)dx, (11.4)

les intégrales étant étendues à tout le domaine permis de x.

11.3 Lois de probabilité

11.3.1 Loi BinomialeSoit une épreuve aléatoire n’ayant que deux résultats possibles : A et B ; si A ne se réalise

pas, il y aura réalisation de l’événement complémentaire B (événements mutuellement exclusifs).Soit p la probabilité de A, et donc q = 1 − p celle de B. Procédons à n épreuves consécutiveset indépendantes. Je peux définir une variable aléatoire à valeurs entières X égale au nombred’apparitions du résultat A sur l’ensemble des n épreuves. La probabilité pour que A se réaliseexactement k fois (et donc B n− k fois), sans tenir compte de l’ordre des événements, s’écrit :

P (X = k) ≡ b(k;n, p) = Cknpkqn−k. (11.5)

Cette loi de probabilité est appelée loi binomiale, ou de Bernouilli. Le maximum de b(k; n, p)est atteint approximativement pour k = np ≡ km. On montre aussi que pour la loi binomiale :

< k >= np ; σ =√

npq. (11.6)

Page 127: 21124286 Analyse Numerique French

An_Num 126

11.3.2 Loi de PoissonLorsque la probabilité p de A est faible et que n est assez grand, de telle sorte que λ ≡ np reste

moyen, la loi binomiale tend vers une forme limite, connue sous le nom de loi de Poisson. J’essaiede rendre plausible le passage d’une loi à l’autre, par le raisonnement suivant. Pour k = 0, j’ai

b(0; n, p) = (1− p)n = (1− λ

n)n ' e−λ.

De plus, je déduis de la définition de b(k; n, p) la relation

b(k;n, p)b(k − 1; n, p)

=λ− (k − 1)p

k(1− p)' λ

k.

Cette relation de récurrence me permet de calculer successivement

b(1; n, p) = λe−λ, b(2; n, p) =λ2

2e−λ

et ainsi de suite. Je note p(k;λ) cette valeur approchée de b(k; n, p) : c’est la loi de Poisson, laquelles’écrit en général

p(k;λ) = e−λ λk

k!. (11.7)

On montre que < k >= λ et que l’écart-type obéit à σ2 =< k >. Cette loi de probabilité intervientdans tous les problèmes de comptage en radioactivité comme en microbiologie.

11.3.3 Loi normale ou de GaussLorsque le nombre d’épreuves n et le nombre de «succès» k deviennent grands (en pratique

supérieurs à 10), la loi binomiale tend vers la loi de Gauss. Pour le voir, il est commode de faire,dans b(k;n, p), un changement de repère tel que le maximum de b(k) soit à l’origine ; j’ai dit quece maximum avait lieu pour k ' np =< k >. Il faut donc choisir comme nouvelle variable l’écart àla moyenne x = k− < k >. De plus, lorsque n et k sont grands, je peux approcher les factoriellespar la formule de Stirling : n! = nne−n

√2πn. Il vient alors

b(x;n, p) ' 1√2πnpq

exp(− x2

2npq

)=

1σ√

2πexp

(− x2

2σ2

),

en introduisant l’écart-type σ =√

npq ; J’ai supposé que n et k étaient grands ; la quantité x2

2σ2

varie donc très peu lorsque k augmente d’une unité et je vais pouvoir la considérer comme unevariable continue.

Je cherche la probabilité pour que la variable aléatoire X soit inférieure ou égale à x. Cetévénement se produit si X = x− 1 ou si X = x− 2,. . . si bien que la fonction de répartition de Xs’écrit

F (x) =x∑ 1

σ√

2πexp

(− x′2

2σ2

).

Comme les valeurs de x′ sont très serrées, je peux remplacer cette somme par une intégrale

F (x) =∫ x 1

σ√

2πexp

(− x′2

2σ2

)dx′.

La fonction exponentielle décroît très rapidement lorsque x′ devient supérieur à quelque fois σ ; je necommet pratiquement pas d’erreur en calculant l’intégrale depuis −∞. La fonction correspondante

Page 128: 21124286 Analyse Numerique French

An_Num 127

est considérée comme la fonction de répartition de la loi de Gauss-Laplace. Plus généralement,celle-ci est définie par

N(x; µ, σ) ≡ 1σ√

∫ x

−∞exp

[− (x′ − µ)2

2σ2

]. (11.8)

La probabilité pour que X soit compris entre x et x + dx est proportionnelle à la densité deprobabilité n(x) = N ′(x) :

n(x)dx =1

σ√

2πexp

[− (x− µ)2

2σ2

]dx. (11.9)

Il est commode d’introduire la loi normale réduite (ou standard) pour laquelle σ = 1 et < x >= 0,représentée ci-dessous.

−4 −3 −2 −1 0 1 2 3 40

0.2

0.4

0.6

0.8

1.0

1.2

Vous pouvez maintenant oublier l’origine discontinue de la variable x et la considérer commeune variable continue définie sur tout l’axe réel. Vous pourrez montrer directement (à l’aide desformules 11.3) que, comme on pouvait s’y attendre, la moyenne de X est µ et que son écart typeest σ.

11.3.4 Loi du chi-deux ou de PearsonSi X1, X2, . . . , Xn sont n variables aléatoires indépendantes, chacune distribuée selon la même

loi normale de moyenne µ et d’écart type σ, alors la quantité∑

(Xi − µ)2/σ2 est distribuée selonune loi dite « du χ2 (prononcez qui-deux) à n degrés de liberté ». Si < X >=

∑Xi/n, la variable∑

(Xi− < X >)2/σ2 est distribuée comme le χ2 à n− 1 degrés de liberté.Une variable aléatoire X est distribuée comme le chi-carré (ou comme le chi-deux) à n degrés

de liberté si sa densité de probabilité est :

f(x, n) =xn/2−1e−x/2

2n/2Γ(n/2). (11.10)

La « fonction gamma », Γ(x), est l’intégrale :

Γ(x) =∫ ∞

0

tx−1e−tdt.

Page 129: 21124286 Analyse Numerique French

An_Num 128

Elle obéit à la relation de récurrence Γ(x + 1) = xΓ(x) et, de plus, Γ(1/2) =√

π.

0 2 4 6 8 10 12 14 16 18 200

0.02

0.04

0.06

0.08

0.10

0.12

0.14

0.16

0.18

0.20

La figure montre trois versions de la loi du χ2, respectivement pour n = 4, 8, 16. On utilisesouvent la fonction de répartition P (X ≤ χ2) ou la fonction complémentaire Q(X ≥ χ2), que l’ontrouve tabulées dans les ouvrages de statistique mais que l’on peut aussi calculer facilement parintégration numérique.

11.3.5 Paramètres de la loi de probabilité et paramètres de l’échantillonDans la pratique, je dispose d’un certain nombre n d’observations d’une grandeur Y , réparties

au hasard. L’ensemble des yi constitue un échantillon extrait de la «population» de toutes lesvaleurs possibles de Y . . La variable aléatoire Y obéit à une certaine loi de probabilité p(y),laquelle est caractérisée par une moyenne µ et un écart-type σ. Je n’aurai jamais connaissance deces paramètres, mais je pourrai essayer de les estimer à partir de propriétés de l’échantillon. Ilimporte de ne pas confondre paramètres de la population et paramètres de l’échantillon. En fait,on a les résultats suivants :

* La meilleure estimation de la moyenne µ de la population parente est la moyenne m del’échantillon (m = (1/n)

∑yi ).

* La meilleure estimation de l’écart-type σ de la population parente est égale à l’écart-type sde l’échantillon, défini par :

s2 =1

n− 1

n∑1

(yi −m)2. (11.11)

Le facteur n − 1 (au lieu de n que l’on pourrait attendre) tient compte de ce qu’une partie del’information contenue dans l’échantillon a été «consommée» pour calculer m. On dit que lesnombres m et s sont respectivement des estimateurs de µ et σ. Ce sont des variables aléatoires (unautre échantillon donnerait d’autres valeurs de m et s). On montre que ces estimateurs sont sansbiais, c’est-à-dire que < m >= µ et que < s2 >= σ2.

11.3.6 Vérification d’une loi de probabilitéJe dispose d’un échantillon d’une variable aléatoire Y : suis-je capable de déterminer la loi

de probabilité à laquelle obéit Y ? Non, pas plus que je ne pourrais trouver rigoureusement lamoyenne ou l’écart-type de Y . La seule approche possible est la suivante. Je fais le choix d’une loi de

Page 130: 21124286 Analyse Numerique French

An_Num 129

probabilité f(y) et j’essaye de vérifier l’hypothèse : « les résultats expérimentaux sont compatiblesavec la loi f , avec une probabilité de α%. » Je ne considère ici qu’un exemple élémentaire. Soitune épreuve conduisant à l’un ou l’autre de r résultats mutuellement exclusifs dont les probabilités(inconnues) sont p1, p2, ...pr. Par ailleurs, je note qi mon estimation de la probabilité du résultati. Je vais essayer de vérifier l’hypothèse qi = pi, 1 ≤ i ≤ r. Je répète n fois l’épreuve et je désignepar Yi le nombre d’apparitions du résultat i. La quantité Yi/n est proche de pi (loi des grandsnombres) et, si l’hypothèse est valable, elle est aussi voisine de qi. Je dispose alors du théorèmesuivant. La variable S, définie comme

S =r∑1

(Yi − npi)2

npi

obéit à la loi de Pearson à r − 1 degrés de liberté, à condition que les nombres npi soient assezgrands (npi ≥ 10 en pratique). Comme j’ignore les pi, je considère, à la place de S, l’estimateur

T =r∑1

(Yi − nqi)2

nqi, (11.12)

qui obéit à peu près à la même loi de répartition. Il est clair que T sera petit si mon hypothèseest vérifiée. Je choisis une probabilité ε ; T ′ étant une variable distribuée selon le chi-deux à r − 1degrés de liberté, je détermine un nombre χ2 vérifiant

Proba(T ′ ≥ χ2) ≤ ε.

Je rejette l’hypothèse si T ≥ χ2. En d’autres termes, si l’écart entre fréquences observées et fré-quences calculées me parait trop grand pour être dû au hasard, je dois conclure que mon hypothèseest fausse.

Exemple. J’ai lancé 120 fois un dé, pour obtenir les résultats consignés ci-dessous. Je faisl’hypothèse que le dé est équilibré, ou encore que la probabilité de chaque face est 1/6.

Rang i nombres observés nombres calculés (yi − nqi)2/nqi

1 25 20 1,252 21 20 0,053 16 20 0,84 28 20 3,25 14 20 1,86 16 20 0,8

total : 120 total : 120 T = 7,9

Je constate, à la lecture d’une table du χ2, que la probabilité pour que T (avec 5 degrésde liberté) soit au moins égal à 7,9 est comprise entre 0,1 et 0,2. L’hypothèse est considéréecomme plausible et elle est acceptée. Le tableur « EXCEL » (entre autres) permet d’obtenir cerésultat en quelques pressions de touches. La fonction « loi.khi-deux(a2 ;n) » renvoie la probabilitéd’apparition d’une valeur de T ′ au moins égale au contenu de la cellule «a2» pour un nombrede degrés de liberté égal à n ; le résultat est ici 0,1618. La fonction « test.khi-deux » effectueautomatiquement l’ensemble des calculs, à condition de fournir en arguments la plage de cellulescontenant les résultats observés et la plage destinée à contenir les résultats attendus.

11.4 Propagation des erreursJe m’intéresse maintenant à une grandeur physique G qui est déterminée indirectement à partir

des mesures de deux grandeurs U et V . Sachant que les valeurs de U et de V sont entachées d’erreursaléatoires, je me demande quelle peut être la dispersion de G = g(U, V ). La probabilité d’obtenir,

Page 131: 21124286 Analyse Numerique French

An_Num 130

lors d’une mesure particulière, le résultat (u, v) dépend de la «densité de probabilité conjointe»f(u, v). Plus précisément, la probabilité pour que U soit dans l’intervalle [u, u + du] et V dans[v, v + dv] est :

Proba(u ≤ U ≤ u + du; v ≤ V ≤ v + dv) = f(u, v)dudv.

Il faut encore généraliser la notion de valeur moyenne :

< g(u, v) >=∫ ∫

g(u, v)f(u, v)dudv.

La probabilité pour que U soit dans l’intervalle [u, u + du], cela quelque soit V , s’écrit :

Proba(u ≤ U ≤ u + du;∀V ) = f1(u) =∫

f(u, v)dv.

À partir de la densité f1, je peux calculer la valeur moyenne < u > et l’écart-type σu de U , quelquesoit V ; des formules symétriques existent pour la variable V . J’introduis ensuite les «moments»de la distribution f :

mp,q ≡< upvq >=∫ ∫

f(u, v)upvqdudv,

puis les "moments centrés" µp,q =< (u− < u >)p(v− < v >)q >. Je trouve en particulier :

µ2,0 = σ2u ; µ0,2 = σ2

v .

Le moment centré µ1,1 ≡< (u− < u >)(v− < v >) > est souvent appelé la covariance de U et V .Les variables aléatoires U et V sont dites corrélées si µ1,1 6= 0. Bien entendu, je ne dispose pas des« vraies » valeurs de U et V ; je ne connais que des estimateurs U∗ et V ∗ (qui pourraient être lesmoyennes de quelques mesures de U et V ). Ces estimateurs sont supposés sans biais :< U∗ >= Uet < V ∗ >= V . Il est raisonnable de choisir G∗ = g(U∗, V ∗) comme estimateur de G. Je vaiscalculer la moyenne et la variance de G∗. Je fais un développement limité de g autour du pointU, V :

g(U∗, V ∗) = g(U, V ) + (U∗ − U)gu + (V ∗ − V )gv + . . .

Dans cette expression, les dérivées (gU = ∂g/∂U, gV = ∂g/∂V ) sont calculées en U, V et sontcertaines (non aléatoires). La valeur moyenne de cette expression vaut, sachant que U∗, et V ∗ sontsans biais,

< g∗ >≡< g(U∗, V ∗) >= g(U, V )

en négligeant les termes d’ordre supérieur. g∗ est donc lui-même, à cette approximation, un esti-mateur non biaisé. Je calcule maintenant la variance de g

σ2g =< [G(U∗, V ∗)−G(U, V )]2 >=< [(U∗ − U)gU + (V ∗ − V )gV ]2 >

et, en développant la valeur moyenne du carré :

σ2g = µ2,0g

2U + 2µ1,1gUgV + µ0,2g

2V .

Cette formule donne l’écart type sur g connaissant les moments centrés de U et V ; on l’écrit engénéral en fonction des écarts types :

σ2g = σ2

ug2U + 2σu,vgUgV + σ2

vg2V , (11.13)

où j’ai introduit la notation habituelle σuv = µ1,1 pour la covariance. En pratique, on ne connaîtpas les µi,j mais seulement des estimateurs construits à partir de résultats expérimentaux. Si lesobservations de U et V ne sont pas corrélées, alors σuv = 0 et la formule précédente se simplifie :

σ2g = σ2

u

(∂g

∂U

)2

+ σ2v

(∂g

∂V

)2

. (11.14)

Page 132: 21124286 Analyse Numerique French

An_Num 131

Exemple. Je considère les fonctions x = uv et y = u/v ; les variances correspondantes sont :

σ2x = σ2

uv2 + σ2vu2 + 2σ2

uvuv ; σ2y = σ2

u/v2 + σ2vu2/v4 − 2σ2

uvu/v3

ce que l’on écrit en général de façon plus symétrique (z = uv ou z = u/v) :(σz

z

)2

=(σu

u

)2

+(σv

v

)2

± 2(σuv

uv

)2

(11.15)

Dans le cas de variables non corrélées, on retrouve un résultat qui évoque l’addition des erreursrelatives que l’on enseigne dans les cours élémentaires.

11.5 Méthode du maximum de vraisemblanceUn noyau radioactif a une certaine probabilité de désintégration par unité de temps, notée

1/τ ; en conséquence, pour un grand nombre de noyaux, le nombre de désintégrations par unité detemps, dN/dt, (la fréquence de l’événement) est proportionnel au nombre de noyaux :

dN/dt = −N(t)/τ,

équation différentielle dont la solution s’écrit N(t) = N0e−t/τ . La probabilité de désintégration par

seconde d’un noyau est p(t) = (1/τ)e−t/τ . Comment déterminer la « durée de vie » ? Je peux (enprincipe au moins) mesurer les dates t1, t2, . . . , tN auxquelles chacun de ces N noyaux disparaît.Si je recommençais l’expérience avec une nouvelle famille de N noyaux, j’obtiendrais des valeursdes ti différentes des précédentes : ces fluctuations sont dues à la nature aléatoire du processusradioactif et existent même si les erreurs de mesure sont négligeables. La probabilité V (τ) d’observereffectivement les désintégrations aux époques t1, t2, . . . s’écrit (événements indépendants) :

V (τ) =N∏

i

p(ti) = exp

{−1

τ

N∑1

ti −N ln τ

}.

Le meilleur choix de τ est celui qui maximise V , c’est à dire celui qui rend le plus vraisemblablepossible le résultat effectivement observé. Le maximum de V est atteint lorsque − ln V est minimal,soit pour la valeur :

τ∗ =1N

N∑1

ti.

Autrement dit, la valeur de τ égale à la moyenne des ti calculée sur l’échantillon rend maximale laprobabilité d’apparition de cet ensemble de valeurs. On dit que V est une fonction de vraisemblanceet que τ a été choisi selon un critère de maximum de vraisemblance.

L’exemple qui précède est particulier : si les mesures ne sont pas reproductibles, c’est à causede la nature aléatoire du phénomène. De plus, le nombre de désintégrations par seconde est donnépar une loi exponentielle (c’est en fait un cas particulier de loi de Poisson). Dans beaucoup d’autrescas, les mesures vont être entachées d’erreurs expérimentales. Je donne encore un exemple simpled’application du principe de maximum de vraisemblance dans ce cas.

Je suppose que j’ai réalisé n déterminations de la grandeur X, que les conditions sont un peudifférentes d’une mesure à l’autre, si bien qu’à chaque mesure est associée une incertitude (écart-type) σi particulière. La probabilité d’apparition de la valeur xi est, comme très souvent pour deserreurs expérimentales, donnée par une loi de Gauss, de valeur moyenne µ et de variance σ2

i :

p(xi) =1

σ√

2πexp

(− (xi − µ)2

2σ2i

)

Je me demande quelle est la « meilleure » valeur de µ, en supposant, pour simplifier le raison-nement, que les σi sont connues. Pour répondre, je construis une fonction de vraisemblance V (µ),

Page 133: 21124286 Analyse Numerique French

An_Num 132

égale au produit des p(xi), et qui représente la probabilité d’observer l’ensemble des résultats xi.Comme au paragraphe précédent, je vais chercher la valeur de µ qui rend maximale la probabilitéV , ce qui revient à chercher le minimum de ln V ou de l’argument de l’exponentielle. Il vient :

V (µ) =

[n∏1

1σi

√2π

]exp

[−1

2

n∑1

(xi − µ

σi

)2]

.

En annulant la dérivée par rapport à µ de l’exposant, je trouve :

µ∗ =n∑1

xi

σ2i

/n∑1

1σ2

i

La valeur la plus vraisemblable de µ est la moyenne pondérée des valeurs observées xi, les poidsétant les inverses des variances relatives à chaque mesure. Je peux même déterminer l’incertitudesur µ : cette quantité dépend en effet des observations xi et obéit à la loi de propagation des erreurs(nous supposons les mesures indépendantes, donc les corrélations nulles) :

σ2µ =

n∑1

(∂µ

∂xi

)2

σ2i .

Un calcul simple montre que

σ2µ =

1∑n1 (1/σ2

i ). (11.16)

Lorsque toutes les incertitudes sont égales à σ, cette relation se réduit à

σµ =σ√n

. (11.17)

L’incertitude sur la valeur moyenne d’une série demesures équivalentes décroît comme l’inverse de laracine carrée du nombre de mesures indépendantes.

11.6 Méthode des moindres carrésJe vais maintenant appliquer la méthode du maximum de vraisemblance à un problème plus

général. Il me faut, cependant, faire une remarque préliminaire. Bien des gens considère la méthode(on dit souvent le principe) du maximum de vraisemblance comme peu convaincante. Ils préfèrentse référer plus directement à un «principe des moindres carrés». Sauf cas particuliers, les deuxdémarches sont équivalentes.

J’imagine que j’ai mesuré la variation d’une grandeur physique y en fonction d’une autre gran-deur indépendante x : par exemple la susceptibilité magnétique d’un matériau en fonction de latempérature. Je dispose donc d’une série de résultats expérimentaux {xi, yi}, i = 1, 2, . . . , n. Lesvaleurs {xi} de la variable indépendante sont supposées parfaitement exactes, alors que les mesuresde y sont entachées d’erreurs aléatoires. D’autre part, j’ai des raisons de penser que y est lié à xpar une loi physique de la forme :

y = f(x, a1, a2, ...am)

où les ai sont des paramètres constants. Je suppose que les erreurs qui affectent chaque mesure yi

sont additives, indépendantes et réparties selon une loi normale. Je vais donc utiliser le modèle

Y = f(x, a1, a2, . . . , am) + ε.

Je supposons encore que ce modèle est "juste" ou non biaisé, c’est-à-dire que < ε >= 0 ou encoreque la moyenne de la distribution p(yi) est f(xi, a1, ...) = fi =< Yi >. Je souhaite trouver les valeurs

Page 134: 21124286 Analyse Numerique French

An_Num 133

des ai telles que la loi précédente représente "au mieux" l’ensemble des résultats expérimentaux{xk, yk}, k = 1...n.

Avec les hypothèses faites, je peux écrire la probabilité d’apparition conjointe des événementsy1, y2, . . . , yn :

V (a1, a2, . . . , am) =m∏1

1σi

√2π

exp[− (yi − fi)2

2σi2

]

ou encore

V =m∏1

1σi

√2π

exp(−S

2

); S ≡

m∑1

(yi − fi)2

σ2i

La quantité S joue un grand rôle dans ce formalisme : c’est la somme des carrés des écarts entrevaleurs observées (yi) et valeurs calculées (fi), chaque terme étant pondéré par l’inverse du carré del’écart-type. Le maximum de V (la vraisemblance) est atteint lorsque l’exposant est minimal. Onrejoint ici le «principe des moindres carrés» qui stipule que les meilleures valeurs des paramètressont celles qui minimisent la somme (pondérée) des carrés des écarts entre valeurs expérimentaleset valeurs théoriques.

Le maximum de V et le minimum de S sont atteints quand

∂S∂ak

= −2m∑

i=1

yi − fi

σ2i

∂fi

∂ak= 0.

11.6.1 Ajustement sur une fonction affinePour commencer, je considère un modèle dépendant linéairement de deux paramètres (et li-

néairement de x, bien que cette hypothèse ne soit pas nécessaire). Je dit que je vais ajuster lesparamètres d’un modèle linéaire ou encore lisser les données à l’aide d’une droite. Le modèle s’écrit

Y = f(x, a, b) + ε = ax + b + ε

Comme ∂f/∂a = x et que ∂f/∂b = 1, les conditions du maximum de vraisemblance sont alors

n∑

i=1

yi − fi

σ2i

= 0 ;n∑

i=1

xiyi − fi

σ2i

= 0.

Ces relations constituent en fait un système de deux équations linéaires à deux inconnues (a et b).Il est commode de poser

S =n∑

i=1

1σ2

i

; Sx =n∑

i=1

xi

σ2i

; Sxx =n∑

i=1

x2i

σ2i

; Sy =n∑

i=1

yi

σ2i

; Sxy =n∑

i=1

xiyi

σ2i

.

Le système mentionné ci-dessus s’écrit explicitement :{

aSxx + bSx = Sxy,aSx + bS = Sy.

(11.18)

Ces équations sont appelées «équations normales» ou «équations de Gauss». Le tableau des coef-ficients est symétrique et les valeurs expérimentales (yi) n’apparaissent qu’au second membre. Lasolution est élémentaire ; je pose ∆ = SSxx − S2

x et je trouve

a∗ =1∆

(SSxy − SxSy) ; b∗ =1∆

(SxxSy − SxSxy). (11.19)

Les coefficients a∗ et b∗ sont des fonctions des variables aléatoires yi : ce sont donc elles-mêmesdes variables aléatoires qui nous servent à estimer les « vraies » a et b. Pour apprécier la précision

Page 135: 21124286 Analyse Numerique French

An_Num 134

(ou l’incertitude) de a∗ et de b∗, il faut calculer l’écart-type de ces paramètres, au moyen de laformule de propagation des erreurs (11.14). Pour u = a∗ ou b∗, je sais que

σ2u =

n∑1

(∂u

∂yi

)2

σ2i .

Je calcule les dérivées partielles à l’aide des formules (11.19) :

∂a

∂yi=

xiS − Sx

σ2i ∆

;∂b

∂yi==

Sxx − xiSx

σ2i ∆

.

Je trouve ensuiteσ2

a∗ =S

∆; σb∗ =

Sxx

∆. (11.20)

Cette méthode élémentaire ne permet pas de trouver la covariance de a∗ et b∗ ; je citerai simplementle résultat : σa∗b∗ = −Sx/∆.

Les formules (11.19) et (11.20) se trouvent assez couramment programmées sur les calculettes.D’autre part, le système linéaire des équations normales définissant a∗ et b∗ fait intervenir lamatrice :

M =[

Sxx Sx

Sx S

],

Je sais déjà que detM = ∆ et je calcule M−1 :

M−1 =1∆

[S −Sx

−Sx Sxx

]=

[σa∗2 σa∗b∗σa∗b∗ σb∗2

].

Vous voyez que l’inverse de la matrice des équations normales est la matrice dite des « variances-covariances ». C’est un cas où le calcul de l’inverse d’une matrice s’avère fructueux.

11.6.2 LinéarisationBien des fonctions peuvent, par un changement de variable approprié, se ramener au modèle

linéaire du paragraphe précédent. Je vais encore traiter un cas particulier. L’étude théorique de lacinétique d’une réaction chimique montre que la concentration d’un réactif dépend du temps selonle modèle :

y = y0e−αt.

L’expérience m’a fourni des valeurs yi relevées aux instants ti . Pour déterminer y0 et α, je linéarisece modèle en posant z = ln y :

z = ln y0 − αt ≡ β − αt.

Dans un calcul de moindres carrés habituel, chaque terme yi − fi est pondéré par l’inverse del’écart-type, σi. Quel est l’écart-type sur ln yi ? Il se déduit de la loi de propagation des erreurs :

σz =∂z

∂yσy =

σy

y

en supposant que chaque mesure souffre de la même incertitude. L’algorithme des moindres carrésva fournir la meilleure valeur de β, avec son écart-type, σβ , mais c’est y0 qui a un sens physique ;j’utilise encore la relation (11.14) pour trouver cette fois : σy0 = y0σβ .

Page 136: 21124286 Analyse Numerique French

An_Num 135

11.7 Qualité de l’ajustementAprès avoir déterminé les meilleures valeurs des paramètres a et b caractérisant un modèle

linéaire, je dois me demander si l’expérience vérifie ce modèle. On dispose pour cela de diverstests statistiques. Je vais décrire le plus courant, le test dit du chi-deux. J’ai montré comment laméthode du maximum de vraisemblance conduisait aux valeurs les plus probables de a et b enrendant minimale la quantité

S2 =∑ (

yi − fi

σi

)2

où yi est un résultat de mesure et fi la valeur de y calculée par le modèle pour la même valeurde la variable indépendante xi. Si le modèle était exact et les fluctuations absentes, S2 serait nul.Ce ne sera pas le cas en pratique, à cause des erreurs de mesure d’une part, et des défauts dumodèle d’autre part. J’espère néanmoins que S2 est «petit». Comme il s’agit d’une somme surtoutes les mesures (n en tout), S2 augmente avec n. On peut raisonnablement s’attendre à ce queyi − fi soit de l’ordre de σi et S2 soit de l’ordre de n. Pour m’affranchir de l’effet du nombre demesures, je pourrais être tenté de considérer la quantité S2/n. Ce n’est pas tout à fait le bon choix,comme le montre l’exemple de n = 2. Je peux toujours faire passer une droite exactement par deuxpoints, mais la perfection de cette ajustement n’est pas très convaincante. Il faut en fait rapporterS2 au « nombre de degrés de liberté » de l’expérience (ν), défini comme le nombre de résultatsindépendants (n) diminué du nombre de contraintes ou du nombre de paramètres ajustables (p engénéral, deux pour l’exemple d’une fonction affine), ν = n− p. Une meilleure mesure de la qualitéde l’ajustement est donc fournie par le « chi-deux réduit »

χ2ν ≡

S2

ν=

1N − p

n∑

i

(yi − fi

σi

)2

.

D’après les considérations précédentes,χ2ν est une fonction aléatoire dont la valeur moyenne est

proche de 1. Aussi, une valeur de χ2/ν voisine de 1 signale-t-elle un bon modèle. De façon un peuplus précise, je remarque que l’une ou l’autre des quantités χ2 ou S2 est une somme de carrés devariables aléatoires gaussiennes ; elles obéissent donc à la loi du chi-deux. Je vais devoir décidersi, et avec quelle probabilité, la valeur de χ2

ν déduite de mes mesures peut être le fait du hasard.Je fais donc l’hypothèse que mon modèle est juste, je fais le choix d’un seuil ε et, muni d’unetable de la fonction de répartition de la loi de Pearson, je cherche un nombre u tel que pour unevariable T ′ (distribuée selon la loi du chi-carré) , Proba(T ′ > u) = ε. Si χ2/ν > u, c’est que l’écartthéorie-expérience est très improbable, ou que mon hypothèse est fausse.

Il est malheureusement assez fréquent que je ne connaisse pas de l’incertitude affectant lesyi : c’est le cas lorsque je n’ai pas les moyens de répéter les expériences nécessaires. Je suis alorscontraint de faire le raisonnement simplifié suivant. Je suppose que chaque mesure a la mêmedispersion : σi = σ pour l’instant inconnue, je détermine les meilleures valeurs de a et b, puis jerecalcule σ comme

σ2 =1

n− 2

∑(yi − a∗xi − b∗)2

Les écarts-types sur a∗ et b∗ peuvent alors être calculés par les formules (11.20) multipliées par lefacteur

√S/(n− 2).

Exemple. J’ai relevé les couples de valeurs suivantes :

x 1 2 4 5 8 9 10 12 15y -0,1 1,7 3,3 4,9 7,6 8,4 9,1 10,7 12,3

et je veux lisser les valeurs de y à l’aide du modèle y = ax + b, autrement dit, ajuster au sensdes moindres carrés les paramètres a et b pour que l’équation proposée représente au mieux lesrésultats expérimentaux. Vous pouvez vous prêter au jeu suivant : reporter ces données sur papier

Page 137: 21124286 Analyse Numerique French

An_Num 136

millimétré et déterminer « à l’oeil » la meilleure droite et les valeurs correspondantes de a et b,avant de faire les calculs.

*1er cas (fréquent) : j’ignore les valeurs des erreurs commises sur les y, mais je pense qu’ellessont toutes aléatoires et distribuées de façon identique. Je pose alors σi = σ = 1. Comme toutesles formules qui donnent a∗ et b∗ sont homogènes en σ, la valeur exacte importe peu. Le calcul sefait facilement avec une calculette ou avec Scilab. Dans ce logiciel, je défini deux vecteurs x et ycontenant les données. J’ai alors les instructions

S = length(x); Sx = sum(x); Sxx = sum(x.*x); Sy = sum(y); Sxy = sum(x.*y);Delta = S*Sxx-Sx*Sx;a = (S*Sxy - Sx*Sy)/Delta, b = (Sxx*Sy - Sx*Sxy)/Delta;siga = sqrt(S/Delta); sigb = sqrt(Sxx/Delta)

Les résultats sont a∗ = 0.8903, σa = 0.0754, b∗ = −0.0958, σb = 0.645 ; les points expérimentauxet la droite sont représentés sur la figure. Si la pente est bien déterminée, l’ordonnée à l’origine estimprécise.

−1 1 3 5 7 9 11 13 15 17−1

1

3

5

7

9

11

13

15

17

∆∆

Avec ces valeurs de a∗ et b∗, je recalcule σ : j’admet que tout écart entre valeur expérimentale etvaleur calculée est due à une erreur aléatoire ; je retiens la moyenne du carré de ces écarts commevaleur de σ2 (comme indiqué plus haut, je considère qu’il n’y a que n− 2 = 7 mesures). Je trouveque σ = 0.62, d’où je déduis les «bonnes» valeurs σa = 0.047, σb = 0.401. Les amateurs d’EXCELverront que ce logiciel, grâce à la fonction « DROITEREG », peut faire automatiquement les calculsprécédents.

*2ème cas (idéal) : Je sais que les valeurs de y sont entachées d’erreurs telles que l’écart-typesur les 4 premières valeurs de y est de 0,4 et qu’il est de 0,6 sur les 5 dernières. J’obtiens alors :

S = 38, 89 Sx = 225, 0 Sy = 194, 86 Sxx = 1993, 06 Sxy = 1757, 08

d’où je tire a = 0, 911, σa = 0, 038, b = −0, 259, σb = 0, 272. La quantité S2 vaut 11,04 soit un χ2ν

réduit (7 degrés de liberté) de 1,577. Les tables donnent une probabilité d’environ 0,14 d’obtenirpar hasard une valeur au moins aussi élevée. Le modèle est donc accepté.

11.8 Coefficient de corrélationUne suite d’observations m’a fourni des couples de valeurs (xi, yi), comme par exemple le

nombre de taches solaires observées pendant l’année i et le cours moyen du bourgogne à la vente

Page 138: 21124286 Analyse Numerique French

An_Num 137

des Hospices de Beaune la même année. Je me pose la question de savoir s’il existe une relationcausale entre ces deux variables, en d’autres termes, je cherche à savoir si x est corrélé à y. Je vaisexaminer le cas le plus simple, celui d’une corrélation linéaire. Si y dépend de x selon la loi linéairey = ax + b, les résultats du paragraphe précédent me permette d’estimer le coefficient a. Si x et ysont indépendants, y ne doit, en moyenne, ni croître ni décroître quand x augmente, donc a = 0.Il est aussi permis d’estimer les paramètres de la loi x = a′y + b′. Ils sont différents des précédents,mais a et a′ sont liés si x et y sont corrélées. Si la corrélation entre x et y est parfaite, les deuxlois sont décrites par des fonctions inverses l’une de l’autre et a = 1/a′ ou aa′ = 1. Je définis lecoefficient empirique de corrélation par la relation r =

√aa′. En supposant tous les écarts types

égaux (une hypothèse qu’il est facile de lever), on trouve la formule ci-dessous.

r ≡∑n

1 (xi− < x >)(yi− < y >)√∑n1 (xi− < x >)2

∑n1 (yi− < y >)2

. (11.21)

|r| est compris entre 0 (pas de corrélation) et 1 (corrélation complète) : on considère que x et ysont fortement corrélés lorsque que |r| est voisin de 1, pratiquement indépendants si r est prochede 0, mais il est difficile de donner un critère vraiment quantitatif en l’absence d’hypothèses plusprécises sur la nature des erreurs entachant x et y.

11.9 Ajustement sur une fonction linéaire de m paramètresJe généralise hardiment le raisonnement des paragraphes précédents, pour obtenir l’expression :

y(x) =m∑1

akϕk(x) (11.22)

qui dépend linéairement des m paramètres ak, alors que les fonctions ϕk qui définissent la loi en xsont quelconques. Je souhaite de nouveau rendre minimale la somme des carrés des écarts :

S2 =n∑1

[yobsi − ycalc

i ]2

σ2i

avec, pour chacune des n mesures, ycalci = y(xi), la valeur prédite par le modèle. Il est commode

d’introduire les notations suivantes. A est la matrice à n lignes et m colonnes d’éléments Aij =ϕj(xi)/σi et b est le vecteur à n coordonnées bi = yobs

i /σi. De plus, les paramètres ak sontconsidérés comme les coordonnées d’un vecteur a. Les conditions pour que S2 soit minimale sont :

n∑

i=1

1σ2

i

[ycalc

i − yobsi

]ϕk(xi) = 0 ; k = 1, 2, . . . , m.

ce qui s’écrit :

Ma = β ; Mik =n∑

i=1

1σ2

i

ϕk(xi)ϕj(xi),

βj =n∑

i=1

1σ2

i

yiϕk(xi).

Vous pourrez vérifier les relations

M = AT A ; β = AT b

où AT désigne la matrice transposée de A. La matrice M est symétrique définie positive et lesystème linéaire se résout facilement par la méthode de Cholesky. La solution formelle est

a = M−1β = (AT A)−1AT b.

Page 139: 21124286 Analyse Numerique French

An_Num 138

Cependant, comme dans le cas à 2 inconnues, l’inverse de M présente un intérêt : l’élément dia-gonal [M−1]ii est la variance (carré de l’incertitude) du paramètre ai, alors que les éléments nondiagonaux [M−1]ik sont les covariances entre ai et ak.