Vous êtes sur la page 1sur 139

Universit dOrlans

U.F.R. Facult des Sciences

Licence de Physique

Analyse numrique pour les sciences physiques

Jean-Philippe Grivet, 2005

Chapitre 1

Reprsentation graphique de fonctions


Lune des activits les plus frquentes en informatique scientique consiste reprsenter lallure dune fonction laide dun dessin, et de trs nombreux logiciels peuvent rpondre cette attente lgitime. On peut distinguer deux cas un peu dirents en pratique : la fonction est dnie par une ou des formules, ou elle est reprsente par un tableau de valeurs. Si le premier cas ne prsente aucune dicult, le deuxime demande que lon sache faire lire un chier de donnes par le logiciel considr, moins de devoir entrer toutes les valeurs au clavier. Jexplique la marche suivre, pour quelques logiciels pratiques et faciles daccs, dans les paragraphes qui suivent.

1.1

Scilab

Scilab est un logiciel gratuit, trs puissant et disponible sur le site de lINRIA. On peut lutiliser de faon interactive (comme une calculette) ou prparer, laide dun diteur de texte (par exemple celui qui est incorpor dans Scilab depuis la version 2.7), un programme que lon fera excuter ensuite. Supposons que je souhaite tracer une sinusode amortie, rpondant lquation 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 rsultat apparat sur la gure. Ce nest pas ici le lieu de dtailler la syntaxe de Scilab, qui est trs bien explique dans laide en ligne, dans les manuels et sur divers sites (voir les rfrences en n de chapitre) ; je me contenterais de quelques indications. La premire ligne dnit une fonction f laquelle dpend dun seul argument, x ; y est une variable interne la dnition et ne joue aucun rle dans la suite. Une dnition de ce genre, dite en-ligne, ne doit pas occuper plus dune ligne ! Les points-virgules indiquent Scilab quil ne doit pas acher lcran les valeurs qui viennent dtre dnies. La troisime ligne initialise un vecteur, x, dont les coordonnes sont x1 = 0, x2 = 0.1, x3 = 0.2, . . . , x101 = 1. Vous pouvez constater quil se passe pas mal de choses en douce lors de lappel de la fonction fplot. Chaque composante du vecteur x est substitue largument formel x de la fonction externe f, la valeur de la fonction est calcule et constitue

An_Num

Fig. 1.1 Une sinusode amortie reprsente par Scilab


1.0

0.8

0.6

0.4

0.2

0.2

0.4

0.6

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

une composante dun vecteur. Le programme interpole ensuite entre composantes successives pour produire un trac lisse. Vous pouvez dnir vous-mme compltement la suite de points reprsenter, 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 coordonnes du vecteur x. Faites bien attention lcriture .* (point toile) qui ralise cette multiplication composante par composante. Sans le point, y nest que le produit scalaire (une seule valeur) des vecteurs exp(-alfa*x) et cos(beta*x). Les fonctions fplot2d ou plot2d admettent de nombreux paramtres qui permettent de modier le domaine de variation des coordonnes, la couleur et lpaisseur des traits, etc. . . Comment procder pour tracer la courbe correspondant un chier de valeurs numriques ? Cest une opration trs semblable la prcdente. Je suppose que le chier D:/an_poly/ex112.dta contient les donnes qui mintressent, raison de trois par ligne, ces nombres tant spars par des espaces ou une tabulation : 1.0 -2.2 .831 -6 123.456 -3 3.1415 2.718281828 Je procde 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 chiers. la premire ligne, je lis le contenu du chier 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 est l pour lempcher dacher ces valeurs lcran. Je reprsente ensuite graphiquement tous les nombres de la troisime colonne de M (ordonnes) en fonction des valeurs correspondantes de la premire colonne (abscisses). Sauf indication contraire, Scilab relie les points par de segments. Pour empcher cela, jai indiqu un style de trait ngatif (-3 ici) ; Scilab reprsente alors des points isols laide dun symbole. Pour imprimer, on utilise loption imprimer du menu droulant chier dans la fentre qui contient le graphe.

-0.3183098

An_Num

Fig. 1.2 Reprsentation dune srie de valeurs sous Scilab


2

4 7 5 3 1 1 3 5

1.2

Maple

Le logiciel Maple est orient vers le calcul algbrique ; il possde cependant des possibilits graphiques extrmement puisssantes, dont voici un tout petit aperu. Le dialogue suivant permet de tracer une sinusode 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 dune sinusode amortie par Maple

0.5 6 4 2 0 0.5 1 1.5 2 2.5 3 2

Jaurais pu me contenter de linstruction unique > plot( exp(-0.3*x)*cos(4*x),x = 0..10) ; mais la version prcdente me permet de dnir une quantit y dpendant de deux paramtres dont je peux modier la valeur aisment. Le symbole % signie pour Maple expression prcdente (cest qui joue ce rle pour la version V4).

An_Num

La lecture dun tableau de valeurs externe se fait par linstruction readdata qui admet deux paramtres obligatoires, le nom du chier et le nombre de colonnes. On peut aussi prciser sil sagit dentiers ou de nombres fractionnaires. La manoeuvre est simple dans le cas dun tableau deux colonnes, comme le montre lexemple ci-dessous. Jai cr le chier dont le nom complet est \"D:\an_poly\ex122.dta\" et dont le contenu est -2 -3.1 -1.1 -.99 0 1 2.222 3.1415 4 5 Je trace le graphe correspondant laide 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 dune suite de points par Maple

1 2

Les nombres entiers ont t transforms en nombres fractionnaires. Remarquez aussi que les contre-obliques du nom de chier sont remplaces par des obliques sous Maple. Il est un peu plus compliqu dextraire dun chier une colonne dabscisses et une colonne dordonnes. Il faut procder comme ceci. Le chier dont le nom DOS complet est D:\an_poly\ex123.dta contient les valeurs : 1.0 -2.2 .831 -6 123.456 -3 3.1415 2.718281828

-0.3183098

An_Num

Linstruction > M := readdata("D:/an_poly/ex123.dta",3); lira ces donnes et produira le rsultat M := [[1.0, -2.2, .831],[-6., 123.456, -3.],[3.1415, 2.718281828, -.3183098]] Maple considre M comme une liste de listes, chaque liste reprsentant une ligne. Le code ci-dessous extrait les nombres de la premire colonne (abscisses) et ceux de la troisime colonne(ordonnes), 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 dune suite de points par Maple

0.5 6 4 2 0 0.5 1 1.5 2 2.5 3 2

1.3

gnuplot

gnuplot est un autre logiciel gratuit et puissant, disponible pour tous les systmes dexploitation ; il a lavantage dtre assez peu encombrant. Il possde un analyseur syntactique qui connat la plupart des fonctions lmentaires. Il est trs facile daccomplir avec gnuplot les deux tches qui me servent dexemples depuis le dbut. Pour tracer une fonction dnie par une formule : > > alfa = 0.3; beta = 4; plot [0:10] exp(-alfa*x)*cos(beta*x);

La fonction plot admet comme premier paramtre lintervalle de variation de la variable indpendante, laquelle doit sappeler x, par convention. Pour acher un fonction dnie 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 ; jai indiqu lintervalle de variation pour x et pour y .

An_Num

Comme gnuplot possde de trs nombreuses options, quil serait malcommode de prciser chaque trac, il est recommand dutiliser un chier de commande. On peut pour cela crer, la main, un trac simple puis sauvegarder toutes les options en cours dans un chier par la commande save <nom_de_fichier>. Ce chier texte est lisible et modiable dans nimporte quel diteur ; on peut donc, loisir, ajouter ou modier des paramtres. On excute ensuite le chier modi par la commande load <nom_de_fichier>. La mthode la plus directe pour imprimer sous Windows consiste cliquer sur licone situe en haut gauche du graphe, puis choisir options/print.

1.4

Excel

Tous les tableurs comportent des outils graphiques puissants. Dans le cas dune fonction analytique, ; sagissant dun chier de donnes, le seul obstacle mineur est la lecture du chier. Dans le cas dune version assez rcente dExcel, par exemple, on clique sur chier/ouvrir, on indique que lon sintresse tous les types de chiers, on choisit le bon chier dans la liste droulante et on louvre. Il faut alors rpondre aux questions simples de lassistant dimportation de textes qui concernent la disposition des donnes. Le chier est ensuite import dans Excel, ligne par ligne et colonne par colonne ; il faut parfois retoucher certaines lignes ou colonnes si la disposition des nombres est trs irrgulire. Les logiciels comme Pascal ou C crent des chiers de rsultats o les nombres fractionnaires sont crits avec des points, alors que la version francise dExcel attend des virgules. Il est facile, aprs slection des cellules concernes, dutiliser dition/remplacer/remplacer tout pour corriger ces donnes. Pour le trac, on appele lassistant graphique et on rpond ses questions.

1.5

Logiciels sous Linux

Les utiisateurs du systme Linux ont leur disposition de nombreux autres outils graphiques gratuits. Je citerais la collection de programmes Plotutils (qui se lancent depuis la ligne de commande), la bibliothque pgplot concue pour sinterfacer facilement avec des programmes en Fortran et enn 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.html www.math-info.univ-paris5.fr/Enseignements/demarre_scilab/demarre_scilab.html Maple : http ://www.maplesoft.com/ lumimath.univ-mrs.fr/ jlm/cours/maple/maple.html http ://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/

An_Num 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 gnraliste http ://ufrmeca.univ-lyon1.fr/formation/ISTIL/OutilsInfo/ une entre dans le monde de Linux http ://sal.linet.gr.jp/index.shtml

Chapitre 2

Calcul de Fonctions
Sachant quun ordinateur ne connat que les 4 oprations de larithmtique (addition, sous traction, multiplication et division), comment doit-on sy prendre pour calculer les valeurs de x, cos x ou J3 (x) ? On doit faire appel un algorithme et il existe des algorithmes de calcul pour chaque fonction. Certains datant de lantiquit (pour le calcul des racines carres), dautres nont que quelques annes dexistence. Lutilisateur devrait donc, en principe, crire un sous-programme pour calculer la ou les fonctions qui lintresse. Une partie du travail est dj fait ; depuis quelques annes, les microprocesseurs incorporent un oprateur mathmatique capable de calculer vite et bien les fonctions lmentaires. Les compilateurs comportent galement des sous-programmes de calcul de fonctions, plus ou moins nombreux selon le compilateur. Cependant, on rencontre souvent des fonctions spciales telles que les fonctions de Bessel, les polynmes de Legendre ou les fonctions elliptiques pour lesquelles il nexiste pas de programme immdiatement disponible. On peut alors rechercher le programme convenable dans les livres ou dans les bibliothques (voir le GAMS, Guide to available mathematical software) ou crire un programme soi-mme. Jestime quil est extrmement instructif et utile dapprendre programmer le calcul dune fonction : on doit dcouvrir le bon algorithme, on apprend se der des erreurs darrondi ou de troncation, enn on sentrane rdiger un programme correct. Dans tous les cas simples, la vrication du programme est immdiate, par comparaison avec le rsultat fourni par le compilateur ou la calculette. Une catgorie de fonctions se calcule exactement en utilisant uniquement des oprations arithmtiques, ce sont les polynmes et les fractions rationnelles. Ils font lobjet du prochain paragraphe.

2.1

Polynmes et fractions rationnelles


p(x) = a0 + a1 x + a2 x2 + + an1 xn1 + an xn .

Un polynme sous forme gnrale scrit

Les coecients ak et la variable x sont supposs rels. Sil ny a aucune dicult pour calculer la valeur numrique de p(x0 ), pour la valeur x = x0 de la variable, je peux me demander quelle est la faon la plus rapide de parvenir au rsultat. La mthode nave consiste calculer sparment la valeur de chaque puissance de x0 , puis multiplier chaque quantit xk 0 par le coecient ak correspondant, puis faire la somme des rsultats intermdiaires. Pour obtenir ak xk 0 , je dois faire k multiplications (n k 1) et donc n(n + 1)/2 multiplications en tout ; il sy ajoute n additions. Lalgorithme naf demande donc un nombre doprations qui varie comme n2 ; on dit quil prsente une complexit dordre n2 . Un mthode plus conomique est fonde sur la remarque que le calcul de xk 0 peut se faire 1 k1 k simplement partir de la valeur de xk : x = x x . On calcule lensemble des xk 0 0 0, k = 2 . . . n 0 0 8

An_Num

en n 1 multiplications et on garde en mmoire tous les rsultats. Il faut ensuite multiplier chaque puissance de x par le bon coecient (n 1 oprations) et faire la somme. Vous vrierez sans peine que le nombre total doprations varie comme 3n. Lalgorithme de Horner perfectionne le mthode prcdente. Il est fond sur le fait que le polynme peut scrire p(x) = ((an x + an1 ) + an2 ) x + + a1 ) x + a0 . Sous cette forme, le calcul de la valeur numrique ncessite n multiplications et n additions, soit une complexit dordre 2n. Comment programmer pratiquement ce calcul ? Le polynme est reprsent en mmoire par le vecteur de ses coecients, a = [a0 , a1 , . . . , an ]. Si le degr est lev, il est fastidieux dcrire en entier la formule prcdente, il vaut mieux utiliser la rcurrence z0 = an ; zk = xzk1 + ank , k = 1, 2, . . . , n.

On peut faire ce calcul la main, en utilisant une disposition comme ci-dessous ; il sagit de calculer la valeur de x5 + 2x3 3x2 + 4x 1 pour x = 2. 1 1 0 2 2 6 -3 9 4 22 -1 43

Le premier lment de la deuxime ligne est z0 , il est gal an ; le deuxime lment (z1 ) vaut 2z0 + an1 = 2z0 = 2, le troisime est z2 = 2z1 + an2 = 2 2 + 2 = 6. La valeur de polynme est 43. Vous voyez quil faut tenir compte des coecients nuls. Une fraction rationnelle est le quotient de deux polynmes ; il sut de calculer comme prcdemment le numrateur et le dnominateur avant deectuer la division.

2.2

Relations de rcurrence

Certaines fonctions utiles obissent des relations de rcurrence, le plus souvent trois termes. La fonction cosinus en fournit un exemple lmentaire : cos(k + 1)x = 2 cos kx cos x cos(k 1)x. On peut utiliser cette relation, avec x assez petit pour tablir rapidement une table des valeurs de cos kx. Exemple. Les polynmes de Legendre obissent la relation de rcurrence suivante (n + 1)Pn+1 (x) = (2n + 1)xPn (x) nPn1 (x) qui permet un calcul rapide et prcis de Pn (x) pourvu que lon connaisse P0 = 1 et P1 (x) = x. Les deux petits chiers qui suivent permettent le calcul puis lachage de Pn sous Scilab. Remarquez linstruction pp = ones(x) qui cre un vecteur de la mme taille que x et dont toutes les composantes sont gales 1. Rappel : la construction .* permet de faire le produit composante par composante de deux vecteurs : si a = {ai } et b = {bi }, alors a. b = {ai bi }. On eectuerait de faon analogue une division ou une lvation la puissance. Ce type de calcul est beaucoup plus rapide quune boucle for. La gure montre le rsultat dans le cas n = 9.

An_Num

10

Listing 2.1 polynme de Legendre


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 function y = p o l e g ( n , x ) // polynome de Legendre select n case 0 then pp = ones ( x ) ; case 1 then pp = x else pavder = ones ( x ) , pder = x ; i = 1 ; while i < n pp = ( ( 2 n+1) x . pder n pavder ) / ( n +1); pavder = pder ; pder = pp ; i = i + 1; end end y = pp ; endfunction

1 2 3 4 5 6

g e t f ( "C: \ an_poly \ l e g e n d r e . s c e " ) ; n = input ( " d e g r e du polynome : " ) ; x = linspace ( 1 , 1 , 2 0 0 ) ; y = poleg (n , x ) ; xset ( "window" , 0 ) , xbasc ( 0 ) plot2d ( x , y )

2.3

Dveloppement limit

La grande majorit des fonctions que lon rencontre en sciences physiques admet un dveloppement en srie ; il est donc tentant dutiliser un dveloppement en srie tronqu (un polynme) pour le calcul numrique dune telle fonction. Dans les paragraphes prcdents, il ny avait aucune approximation ; si les rsultats ntaient pas tout fait exacts, cela tait du aux erreurs darrondi, sur lesquelles je reviendrai la n de ce chapitre. Lutilisation dun dveloppement en srie tronqu au terme de rang n fait apparatre une autre source derreur, lie la mthode utilise elle-mme : au lieu dune srie innie, je manipule un polynme n termes, commettent ainsi ce que lon appelle une erreur de troncation (ou erreur de mthode). Cette erreur est souvent assez facile borner, condition de savoir que la variable indpendante est contenue dans un intervalle dni. Pour montrer les avantages et inconvnients de cette approche, je choisis lexemple simple de la fonction ex , que je voudrais approcher par son dveloppement en srie tronqu, avec une erreur absolue infrieure au millime, sur lintervalle [0,10]. Le terme gnral du dveloppement est k uk = (1)k x k! . La srie est absolument convergente quelque soit x, ce qui, malheureusement, nest pas synonyme de rapidement convergente. Je peux estimer le nombre de termes ncessaires partir du rapport |uk+1 /uk | = x/(k + 1). Ce rapport est plus grand que un (les termes de la srie sont croissants en valeur absolue) tant que k + 1 < |x|. Cela implique quau bord de lintervalle choisi, il faudra bien plus de 10 termes pour approcher la fonction exponentielle. En fait, pour x = 10, jai trouv v9 2755, 7 et v10 2755, 7. Plus ennuyeux encore, sachant que e3 20, jestime que e10 5 105 . Ceci signie que pour atteindre une prcision absolue du millime, le premier terme nglig devra tre infrieur 5 108 . Le premier terme qui rponde ce critre est le 39ime ; on trouve alors e10 0, 0000454. Il faut remarquer que chacun des 39 termes doit tre calcul avec une prcision absolue de 5108 , soit 12 (douze) chires signicatifs pour les plus grands dentre

An_Num

11

Fig. 2.1 Le polynme de Legendre dordre 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.2

0.4

0.6

0.8

1.0

eux, sous peine de perdre toute prcision cause des erreurs darrondi pendant laddition de termes de signes dirents. Cet exemple est certes caricatural ; en pratique, on sarrangerait pour rduire lintervalle de dnition de x. Il montre cependant que le calcul laide de dveloppements tronqus doit faire lobjet dune attention certaine. Sans me laisser abattre par les remarques prcdentes, jai rdig un programme de calcul de ex sous Scilab, que je reproduis ci-dessous. Je calcule chaque terme partir du prcdent (ligne Listing 2.2 Dveloppement limit de lexponentielle
1 2 3 4 5 6 7 8 9 10 11 12 //mon_exp , d e c r o i s s a n t e . e p s = 1E 8; kmax = 4 0 ; terme = 1 ; somme = 1 ; k = 1 ; x = input ( " v a l e u r de x : " ) ; while ( k<kmax ) & ( abs ( terme ) > e p s ) terme = x terme /k ; somme = somme + terme ; [ r e s ] = [ k , terme , somme ] ; write (% i o ( 2 ) , r e s ) ; k = k+1; end somme , exp( x )

6), en vitant soigneusement de former des factorielles ou des puissances de x : ce serait beaucoup plus long et surtout les rsultats intermdiaires dborderaient de la capacit de lordinateur. Les lignes (8,9) achent, de faon plutt malcommode, des rsultats intermdiaires (il y a bien dautres faon de faire).

2.4

Fraction continue
f = b0 + a1 b1 + b2 +

Lobjet mathmatique reprsent ci-dessous est une fraction continue : a2 a3

b3 +

a4 b4 +

An_Num Pour simplier le travail des imprimeurs, jcrirais plutt f = b0 + a1 a2 a3 a4 b1 + b2 + b3 + b4 +

12

Une expression de ce genre na dintrt que si les ai et les bi sont des constantes ou des fonctions simples de x, comme dans la reprsentation de la fonction tangente : tg x = x x2 x2 x2 . 1 3 5 7

Cette expression converge rapidement et ncessite moins doprations que le dveloppement en srie tronqu de la mme fonction. Elle soure cependant dun inconvnient pratique srieux : il ny a pas moyen de dterminer a priori le nombre de termes conserver pour obtenir une prcision xe lavance. Il existe en fait un algorithme itratif qui permet le calcul de f de gauche droite partir des ai et des bi et que lon peut interrompre lorsque deux approximations successives ont susamment proches (algorithme de Clenshaw). Sans faire appel ce perfectionnement, on peut apprcier ce type dapproximation sur lexemple de tg x ; si je tronque la fraction continue prcdente aprs le terme x2 /9, jobtient, aprs rduction au mme dnominateur tg x = x 943 105x2 + x4 . 15 63 28x2 + x3

Les premiers zros de numrateur sont 1,57080 et ceux du dnominateur 3,153, ce qui est proche des valeurs exactes. En fait, une fonction comme tg x, avec ses asymptotes verticales, a un comportement trs loign de celui dun polynme ; il sera donc malais de trouver un dveloppement limit convenable. Au contraire, une fraction rationnelle peut prsenter des branches asymptotiques et pourra plus facilement approcher tg x.

2.5

Approximant de Pad

Daprs la remarque faite la n du paragraphe prcdent, jaurais intrt, pour approcher une fonction qui na pas un comportement polynmial, essayer une fraction rationnelle. Si la thorie gnrale de telles approximations existe, je ne la dcrirais pas, mais je prsenterais un cas particulier, connu sous le nom dapproximant de Pad. On peut dcrire un approximant de Pad comme une fraction rationnelle qui obit des contraintes trs semblables celles dun dveloppement en srie.

2.5.1

dnition

Dans la suite, je considre une fraction rationnelle Rm,k , quotient dun polynme Pm (le numrateur), de degr m et de coecients aj , 0 j m par un polynme Qm (le dnominateur), de degr n et de coecients bj , 0 j k . Comme je peux, sans changer la valeur de la fraction, diviser haut et bas par une mme constante, jimpose, sans restreindre la gnralit, la condition b0 = 1. La fraction Rm,k contient donc m + k + 1 coecients dterminer. Rm,k sera, par dnition, lapproximant de Pad dordre n + 1 de la fonction f (x), au voisinage du point x = x0 , si Rm,k (x0 ) et ses n premires drives concident respectivement avec f (x0 ) et ses n premires drives : [Rm,k (x)]
(p)

f (p) (x0 ), p = 0, 1, 2 . . . , n.

en posant f (0) = f . Je peux toujours, laide dune translation, me ramener au cas x0 = 0, ce que je supposerai dans la suite. Comme je dispose de m + n + 1 coecients inconnus, il me faut, pour dterminer entirement la fraction rationnelle, autant de conditions ; il faut donc que m + k = n.

An_Num

13

2.5.2

construction

Il est hors de question de calculer les drives successives de R et de f pour les identier, ce qui serait en gnral impossible ; plus simplement, je vais identier les dveloppements limits de ces deux expressions, au voisinage de lorigine, jusquaux termes de rang n + k + 1 (ce qui assure lgalit des drives). On peut conomiser encore des calculs en imposant, ce qui revient au mme, que le dveloppement limit de la quantit R f commence par un terme en xx+k+1 . Je suppose que la fonction f admet un dveloppement de MacLaurin

f (x) =
j =0

cj xj .

Pm (x) Qk (x)f (x) . Qk (x) Le dveloppement limit de ce rapport est le quotient des dveloppements du numrateur et du dnominateur ; ce dernier ne va pas intervenir pour les premires puissances de x, puisquil vaut 1 prs de lorigine. Le dveloppement du numrateur doit commencer par le terme en xn+1 , ce qui revient dire que les coecients des termes en x0 , x1 xn sont tous nuls. Jen dduis les relations a0 = b0 c0 a1 = b0 c1 + b1 c0
s=j

R f scrit

(x0 ), (x1 ),

aj =
s=0

cs bj s

(xj , j m).

Lorsque tous les coecients aj disponibles ont t utiliss, je continue sans eux
s=j

0=
s=0

cs bj s

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

Il est commode dutiliser dabord la dernire srie dquations, plus simples, pour dterminer certains des coecients bi , puis la premire srie pour les coecients restants. On a constat empiriquement que le choix m = k 1 tait souvent meilleur que dautres. Le raisonnement prcdent ne permet pas destimer lerreur dapproximation, mais, l encore, lexprience montre que lapproximation selon Pad est trs bonne.

2.5.3

Exemple

Je cherche lapproximant de Pad R2,2 de ex au voisinage de lorigine. Ici, m = k = 2, n = 4 ; je dois donc connatre, pour commencer, les 5 premiers termes du dveloppement de lexponentielle. Les coecients correspondants sont c0 = 1; Dautre part, R2,2 scrit R2,2 (x) = c1 = 1; c2 = 1 ; 2 c3 = 1 ; 6 c4 = 1 . 24

a0 + a1 x + a2 x2 . 1 + b1 x + b2 x2
0

Je forme maintenant le numrateur de R ex et jidentie zro les coecients de x2 , x1 , x2 , x3 , x4 , ce qui donne a0 = 1; a1 = b1 + 1; a2 = b1 + b2 + 1/2; 0 = b1 /6 + b2 /2 + 1/24. 0 = b2 + b1 /2 + 1/6;

An_Num

14

Fig. 2.2 Erreur dapproximation de ex par son dveloppement limit (en noir) et par lapproximant de Pad R2,2 (en bleu)
0 1e3 2e3 3e3 4e3 5e3 6e3 7e3 8e3 9e3 10e3 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0

Je trouve, en rsolvant ce systme : b1 = 1/2; et donc R2,2 = b2 = 1/12; a0 = 1; a1 = 1/2; a2 = 1/12

12 + 6x + x2 (x + 6)x + 12 = . 12 6x + x2 (x 6)x + 12

Le petit programme Scilab a produit le trac suivant


1 2 3 4 5 6 x = linspace ( 0 , 1 , 1 0 0 ) ; p = 1+x+x.^2/2+ x .^3/6+ x . ^ 4 / 2 4 ; r = ( ( x +6). x + 1 2 ) . / ( ( x 6). x +12); xset ( "window" , 0 ) , xbasc ( 0 ) x t i t l e ( " a p p r o x i m a t i o n s de exp ( x ) " ) plot2d ( x , [ ( pexp ( x ) ) , ( r exp ( x ) ) ] ) ;

Vous constatez que pour x dveloppement de Taylor.

1 lapproximant de Pad est presque trois fois plus prcis que le

2.6

Approximation de fonction

Jai prsent, dans les paragraphes prcdents, un certain nombre de recettes ou de procds destins fournir des approximations de fonctions, sans aucunement me soucier de rigueur mathmatique. En ralit,lapproximation des fonctions est un domaine bien tabli des mathmatiques, qui a connu un grand dveloppement partir de la n du 19me sicle. Dans les lignes qui suivent, je donne quelques ides gnrales sur lapproximation, considre dun point de vue plus mathmatique. Le problme se pose en ces termes. Je mintresse une fonction f (x) de la variable relle x. Soit je dsire connatre ses valeurs en certains points, soit, plus ambitieux, je voudrais pouvoir calculer les valeurs numriques de sa drive ou de son intgrale sur un certain intervalle. Seulement voila, f est complique et longue calculer et je nai pas le temps daccumuler toutes les valeurs ncessaires de f . Je dcide alors de remplacer f par une approximation f qui se calcule facilement. Pour savoir

An_Num

15

si cette substitution peut avoir un sens, je dois rpondre plusieurs questions : dans quelle catgorie de fonctions vais-je choisir f ? Selon quel critre vais-je massurer que lapproximation est bonne ou mauvaise ? Sur quel intervalle les proprits prcdentes doivent-elles tre vries ? Je me limiterai ici au cas de lapproximation polynmiale, cest--dire que f sera un polynme de degr au plus gal n (une combinaison linaire de xk , k = 0, 1, 2, . . . , n). Le thorme suivant, d Weierstrass, arme lexistence de f sous des conditions assez gnrales. Thorme. Si f (x) est continue sur lintervalle ni I = [a, b] et si nombre positif donn, alors il existe un polynme f (x) tel que sup |f (x) f (x)| < .
xI

est un

Remarquez que le thorme ne donne aucune indication sur la construction de f . Ici, la distance entre f et f est la norme innie ; on pourrait imaginer dautre types dapproximation o la dnition de la distance serait dirente ; on pourrait penser par exemple lcart quadratique moyen, qui est dni comme f f = I |f f |2 dx. Tschebychef et de la Valle-Poussin ont prolong les travaux de Weierstrass. Grce eux, on sait quun bon polynme f est tel que lerreur dapproximation, |f f |, prsente une srie de maximums assez rgulirement rpartis sur I , damplitudes identiques et alternativement positifs et ngatifs. Ces polynmes taient dtermins lpoque par essais et erreurs, mais on dispose maintenant dun algorithme puissant dapproximations successives (second algorithme de Remes).

2.7

Dveloppement asymptotique

Lorsque la variable indpendante devient trs grande, il devient videmment dsespr dapprocher une fonction par un dveloppement construit au voisinage de 0 ; on peut bien sr faire une translation dorigine pour chaque valeur particulire, mais cela complique notablement les calculs. Dans certains cas, on peut avoir recours une approximation valable lorsque 1/x est petit, ce que lon appelle un dveloppement asymptotique et dont voici la dnition.

2.7.1

dnition
c0 +

c1 c1 + 2 + x x Jappelle Sn la somme partielle des n premiers termes Sn = c0 + c1 cn1 c1 + 2 + + n1 . x x x

Soit la srie innie

Habituellement, on sintresse la convergence de la srie ou la limite de la quantit Sn quand n tend vers linni. Ici, je procde diremment ; gardant n xe, je fait crotre x au del de toute limite. Je suppose quil existe une fonction f (x) telle que la dirence |f (x) Sn (x)| tende vers zro plus vite que xn1 1 quand x . En dautres termes
x

lim xn1 |f (x) Sn (x)| = 0.

Si ces conditions sont remplies, je dis que la srie est un dveloppement asymptotique de la fonction f.

An_Num

16

2.7.2

Exemple

Je considre la fonction dnie pour x > 0 par lintgrale f (x) =


x

1 xt e dt t

Des intgrations par partie rptes me permettent de transformer cette expression en f (x) = 1 1 2 (1)n1 (n 1)! 2 + 3 + + + (1)n n! x x x xn
x

ext dt. tn+1

Ceci me laisse supposer que la srie 1 2! 4! 1 2 + 3 4 x x x x pourrait reprsenter le dveloppement asymptotique de f . Pour le prouver, je forme f (x) Sn+1 (x) = (1)n n!
x

ext dt. tn+1

Dans lintgrale, lexponentielle est comprise entre 0 et 1, do la majoration

|f (x) Sn+1 (x)| < n!


x

1 1 dt = (n 1)! n , tn+1 x

une quantit qui tend videmment vers zro lorsque x croit, n constant. On crit souvent
x

1 x t 1 1 2! 4! e dt = 2 + 3 4 . t x x x x

2.8

Reprsentation des nombres en machine

Larithmtique des ordinateurs prsente des proprits plus compliques quil ny parait premire vue. Ces complications sont dues ce quun ordinateur (tout comme un humain) ne manipule quun nombre limit de chires ; il sen suit que beaucoup de nombres concevables ne sont pas ou sont mal reprsents en machine. Les choses se prsentent diremment pour les entiers et pour les nombres fractionnaires. Je commence par examiner les entiers.

2.8.1

Les nombres entiers

Jai choisi, pour xer les ides, le compilateur TurboPascal de Borland, mais des considrations presque identiques sappliquent tous les compilateurs. TurboPascal dnit cinq types dentiers, dont je reproduit ci-dessous les caractristiques types entiers byte shortint integer word longint reprsentation (nombre doctets) 1 1 2 2 4 intervalle de dnition 0 :255 -128 :127 -32768 :32767 0 :65535 -2147483648 :2147483647

An_Num

17

Dans tous les cas, le chire binaire le plus gauche (le plus signicatif, de poids le plus grand) indique le signe : 0 pour les nombres positifs, 1 pour les entiers ngatifs. Ainsi, dans le type shortint, le plus grand nombre positif scrit 01111111 ; il vaut 26 + 25 + 24 + 23 + 22 + 21 + 20 = 127. Les nombres ngatifs sont reprsents selon la mthode dite du complment deux, qui prescrit que, si x est ngatif (et plus petit en valeur absolue que 27 , sa reprsentation, 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 rciproquement, sauf pour le chire le plus droite. Si x = 23, (x) = 00010111 et (23) = 11101001. Vous pouvez vrier, en appliquant les rgles de larithmtique binaire, que (23)+(23) = 100000000 ; la dernire retenue est perdue, puisque les nombres nont que 8 chires. Lordinateur ne prvient pas lorsque le rsultat dune addition entre entiers est trop grand. On a par exemple (127)+ (3) = 01111111 + 00000011 = 10000010 = (-124). Cette reprsentation fonctionne un peu comme un compteur kilomtrique de voiture qui aprs avoir atteint 99999 repart de zro. La consquence pratique est que lamplitude des entiers est trs limite (sauf pour longint). Un pige 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 ngatif. Le problme ne se pose pas avec Scilab qui ne connat que des nombres fractionnaires, ni avec Maple, qui peut manipuler autant de chires que la mmoire de lordinateur le permet.

2.8.2

Nombres fractionnaires

Les nombres dcimaux (on dit aussi fractionnaires, ottants, virgule ottante) sont reprsents par une partie fractionnaire et un exposant, comme par exemple 23 0,23E2. Le nombre prcdent peut aussi bien scrire 23E0 ou 0,023E3. Pour viter ces ambiguts, on invoque une convention de normalisation : la partie fractionnaire devra tre comprise entre 0 et 1 par exemple. Les nombres dcimaux dnis en Pascal peuvent appartenir lun des 4 types ci-dessous. type real single double extended nb quivalent de chires dcimaux 11-12 7-8 15-16 19-20 intervalle de dnition 2,91039 :1.71038 1,51045 :3.41038 510324 :1.710308 1.9104551 :1.1 104932 taille (octets) 6 4 8 10

Il est clair que lintervalle de dnition (ou le nombre de chires signicatifs) dpend du nombre de chires binaires aects respectivement la reprsentation de la partie fractionnaire et de lexposant. Les 32 chires du type single sont rpartis ainsi : 1(signe)+ 8 (exposant) + 23(partie fractionnaire). Sous Scilab, les nombres sont uniformment du type double. C et C++ calcule toutes les fonctions lmentaires en double prcision. Les nombres compris entre 0 et la borne infrieure de lintervalle de dnition, de mme que ceux plus grands que la borne suprieure, ne pourront pas tre reprsents. Tout calcul produisant un nombre rpondant lune de ces conditions provoquera en principe un message derreur ; en fait, les nombres trop petits sont pris gaux zro, ce qui peut tre sans consquence ; les nombres trop grands interrompent lexcution du programme et lapparition du message derreur arithmetic overflow. Mme si un nombre a une taille correcte, son calcul est souvent souvent entach dune erreur darrondi. Je suppose que jutilise un ordinateur ctif fonctionnant en numration dcimale. Je forme 27/13,1 = 2,06106870229..., un nombre fractionnaire dont la reprsentation dcimale ne se termine jamais et que lunit centrale calcule avec 20 chires signicatifs. Si jai dclar que la variable correspondante tait du type single, lorsque lordinateur range cette valeur en mmoire, il le fait selon la norme du type, soit avec 7 chires. Sur certaines machines on conserve la valeur

An_Num

18

2,061068 (troncation), sur dautres, on retient 2,061069 (arrondi). Lerreur est ici minime (infrieure 107 en valeur absolue), mais il faut tre conscient quelle peut se rpter des milliards de fois au cours dun calcul. Heureusement, le signe de chaque erreur est pratiquement alatoire, si bien que celles-ci ne sajoutent pas de faon cohrente. Lerreur relative devient importante lorsque lon forme la dirence de deux nombres voisins. On ne remarque rien en gnral, sauf si, par hasard, ce premier rsultat est immdiatement multipli par un nombre trs grand. Je remarque enn que lutilisation, en Pascal, des types single et real, correspond une conomie de mmoire, mais une perte de temps. Il en est de mme pour le type float en C. En eet, lunit centrale calcule avec une trs grande prcision (80 chires binaires pour les Pentiums) ; les rsultats sont ensuite mis aux normes avant dtre rangs en mmoire et cette transformation prend du temps (une fraction de microseconde). Du point de vue de la vitesse dexcution, il vaut mieux travailler avec le type double, qui est trs proche du format utilis par lunit 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 mathmatiques, dnitions : http ://www.sciences-en-ligne.com/momo/chronomath/accueil.htm histoire des approximations : http ://www.math.technion.ac.il/hat/papers.html : page dun spcialiste pour des spcialistes : http ://perso.ens-lyon.fr/jean-michel.muller/frenchindex.html erreurs darrondi (ou autres) catastrophiques http ://www5.in.tum.de/ huckle/bugse.html

Chapitre 3

Linterpolation
3.1 Introduction

Dans le chapitre 1, jai montr plusieurs mthodes dapproximation dune fonction. Linterpolation, qui fait lobjet de ce chapitre, poursuit le mme but que lapproximation : remplacer une fonction dicile calculer par une expression plus simple pour, par exemple, pouvoir la calculer numriquement vite et souvent, ou pour valuer sa drive ou son intgrale. Le cadre mathmatique est aussi assez semblable. Je mintresse une fonction relle continue f (x) que je vais encore remplacer par une fonction plus simple f (x). La dirence rside dans la manire dimposer la proximit de f (x) et de son substitut f (x). Je vais demander que f (x) f (x) pour un certain nombre de valeurs de la variable indpendante x. On imposait que lapproximant reste dans une bande de largeur 2 entourant la fonction ; on impose maintenant que linterpolant concide avec la fonction pour certaines valeurs de la variable indpendante. On peut ainsi comprendre le terme dapproximation exacte autrefois employ pour dsigner linterpolation. Dans un pass lointain, alors quil nexistait pas dordinateur, le calcul dune fonction complique tait laborieux. On dressait une table de la fonction pour quelques valeurs de largument puis on interpolait entre ces valeurs. De nos jours, cet usage de linterpolation a beaucoup rgress, mais linterpolation reste un outil thorique important. Dautre part, on a souvent besoin des valeurs de grandeurs physiques comme la densit, la conductivit lectrique ou des chaleurs de raction, qui, leur tour, dpendent de la pression, de la temprature ou des concentrations. Ces grandeurs gurent dans des tables, mais seulement pour quelques valeurs des paramtres. L encore, on est amen interpoler pour dterminer les valeurs intressantes. Lchelle internationale de temprature constitue un bon exemple physique dinterpolation. La temprature lgale est la temprature thermodynamique, associe un unique point xe, le point triple de leau 273,15 K ; elle se mesure laide dun thermomtre gaz volume constant ou dun thermomtre rayonnement. Ces deux instruments sont malcommodes et impliquent des manipulations longues et compliques. Aussi, on a choisi une srie de points xes secondaires (points dbullition de lhydrogne, de leau, point de fusion du zinc par exemple) dont les tempratures ont t mesures trs prcisment une fois pour toutes. On a choisi aussi quelques thermomtres pratiques, comme le thermomtre rsistance de platine. Une fois mesure la rsistance de la sonde pour chaque point xe, la valeur dune temprature intermdiaire est obtenue par interpolation.

3.2

Dnition

Jaborde maintenant le formalisme. tant donne une fonction y = f (x) et une fonction f (x; a0 , a1 , . . . , an ) dpendant de x et de n + 1 paramtres a0 , a1 , . . . , an , le problme dinter-

19

An_Num polation consiste dterminer les ak de telle manire que les n + 1 quations f (xk ) = f (xk ; a0 , a1 , . . . , an ), k = 0, 1, 2, . . . , n

20

(3.1)

soient vries. Dans la suite, jutiliserai indiremment les notations f (xk ) = fk = yk ; chaque couple de valeurs xk , yk dnit un point du plan que lon appelle un pivot ou un noeud. Il me faut ensuite dcider quelle classe de fonctions appartient f ; le critre le plus important est la faon dont interviennent les paramtres ak . On distingue les cas o f dpend linairement des ak de tous les autres ; linterpolation polynmiale f = a0 + a1 x + a2 x2 + + an xn et linterpolation trigonomtrique f = a0 + a1 eix + a2 e2ix + + an einx relvent de ce cas. Par contre, linterpolation rationnelle f (x; a0 , a1 , . . . , am , b0 , b1 . . . , bn ) = a0 + a1 x + a2 x2 + + am xm b0 + b1 x + + bn xn

(qui par ailleurs fait appel m + n + 2 coecients) dpend non-linairement des bk . Bien que linterpolation rationnelle soit parfois utilise, je me limiterai ici linterpolation polynmiale qui nimplique que des calculs simples. Les formes trigonomtriques seront abordes plus tard. Vous remarquez qu la dirence de lapproximation, il ne parait pas urgent de dnir un intervalle dans lequel linterpolation est valable ; en ralit, cette dnition est implicite. Si xmin est les plus petit des xi et xmax le plus grand, je parle dinterpolation lorsque xmin x xmax ; je montrerai comment estimer lerreur correspondante. Si, au contraire, je mintresse une valeur de x extrieure lintervalle [xmin , xmax ], je pratique une extrapolation ; lexamen de quelques exemples vous montrerait que lerreur dextrapolation peut devenir trs grande ds que lon sloigne des pivots. En pratique donc, linterpolation ne concerne que les valeurs de x comprises entre la plus petite et la plus grande abscisse des pivots.

3.3

Mthode des coecients indtermins

La mthode la plus directe pour trouver les coecients inconnus ak consiste identier, sur chaque pivot, fonction et polynme dinterpolation. Je montre le principe de la mthode sur lexemple de deux pivots. La fonction f est connue numriquement en deux points, ce qui dnit les deux pivots x0 , f0 , x1 , f1 . La fonction dinterpolation, que je note maintenant p(x), puisquil sagit dun polynme, dpend linairement de deux paramtres inconnus et scrit p = a0 + a1 x. Gomtriquement, p(x) reprsente le droite qui passe par les deux pivots. Les conditions dinterpolation sont alors a0 + a1 x0 = f0 a0 + a1 x1 = f1 Je dois donc, pour dterminer les {ai }, rsoudre un systme de deux quations linaires deux inconnues ; la solution est immdiate : a1 = f0 f1 x0 x1 ; a0 = x0 f1 x1 f0 . x0 x1

Ce procd stend sans dicult au cas dune fonction du second degr, dnie par trois paramtres inconnus ; la courbe reprsentative de p(x) est une parabole que lon oblige passer par trois pivots. En principe, je peux mme considrer le cas dune fonction dinterpolation polynmiale de degr

An_Num

21

n, dpendant de n + 1 constantes inconnues. Celles-ci seront dtermines en imposant que f et f concident sur n + 1 noeuds : n a0 + a1 x0 + a2 x2 = y0 , 0 + + an x0 2 = y1 , a0 + a1 x1 + a2 x1 + + an xn 1 n a0 + a1 x2 + a2 x2 = y2 , (3.2) 2 + + an x2 = n a0 + a1 xn + a2 x2 = yn . n + + an xn Il apparat ici encore un systme dquations linaires dont les inconnues sont les n + 1 nombres ai et dont le dterminant scrit x0 x1 0 0 0 x1 x1 1 x0 x1 2 2 x0 x1 n n x2 0 x2 1 x2 2 x2 n xn 0 xn 1 xn 2 xn n

(3.3)

, que lon appelle un dterminant de van der Monde, sannule chaque fois que la condition xi = xj , i = j est remplie ; le dveloppement de ce dterminant contient donc le facteur xi xj . En rptant ce raisonnement pour tous les couples possibles de pivots, je montre facilement que =
i<j

(xi xj ).

Je dduis de ce rsultat que est non nul, et donc que le systme admet une solution unique, si et seulement si les pivots ont des abscisses strictement distinctes. Je ne fait pas dautre hypothse sur les pivots ; en particulier, ceux-ci peuvent tre rangs dans un ordre arbitraire. Je dispose maintenant dune mthode pour construire le polynme dinterpolation ; si jai pris soin de choisir des pivots dirents, ce polynme est unique. Dans la pratique, la mthode des coecients indtermins est, en fait, rarement utilise, car on connat des algorithmes plus stables et/ou plus rapides. Ces algorithmes, invents par des mathmaticiens clbres des sicles passs, prennent des forment trs direntes et produisent des rsultats apparemment dissemblables. En ralit, ils aboutissent tous former lunique polynme dinterpolation partir des pivots disponibles. La premire mthode que je prsenterai est due Lagrange.

3.4

Le polynme dinterpolation de Lagrange


n

Dans cette mthode, je fait lhypothse ( vrier) que le polynme dinterpolation peut scrire, pour n + 1 pivots xi , f (xi ) p(x) =
i=0

Li (x)f (xi ).

(3.4)

Chaque polynme lmentaire de Lagrange Li (x) est de degr n et, par consquent, p est un polynme de degr au plus gal n. Vous voyez que le problme dinterpolation sera rsolu si je peux former des Li rpondant 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 dans tous les autres cas. Si, par exemple, x = x2 , alors L0 (x2 ) = L1 (x2 ) = L3 (x2 ) = = Ln (x2 ) = 0 tandis que L2 (x2 ) = 1. Des n +1 termes de p ne subsiste que f2 . Ainsi, pour le pivot x2 , le polynme dinterpolation concide avec la fonction et il en serait de mme pour tout autre noeud.

An_Num

22

Fig. 3.1 interpolation polynmiale de Lagrange


11

5 2 1 0 1 2 3

Le polynme lmentaire Li sannule pour tous les pivots sauf xi ; il est donc proportionnel au polynme q (x) = (x x0 )(x x1 ) (x xi1 )(x xi+1 ) (x xn ). La constante de proportionnalit sobtient en formant q (xi ) = (xi x0 )(xi x1 ) (xi xi1 )(xi xi+1 ) (xi xn ) : Li est gal au polynme normalis q (x)/q (xi ). Le polynme dinterpolation de Lagrange est maintenant entirement dtermin ; il scrit
n n

p(x) =
i=0

Li (x)fi =
i=0

fi
k=0,k=i

x xk . xi xk

(3.6)

Le calcul numrique de p(x) se programme aisment laide de deux boucles imbriques ; il est bien plus rapide que la rsolution du systme linaire du paragraphe prcdent. Le fragment de programme ci-dessous ralise ce calcul. Les deux premires instructions crent deux vecteurs de Listing 3.1 construction du polynme de Lagrange
1 2 3 4 5 6 7 8 9 10 11 12 x = linspace ( xmin , xmax , n p t s ) ; p l = zeros ( 1 , n p t s ) ; for i = 1 : 4 L( i , 1 : n p t s ) = ones ( 1 , n p t s ) ; for k = 1 : 4 i f k <> i L( i , : ) = L( i , : ) . ( xxp ( k ) ) / ( xp ( i ) xp ( k ) ) ; end end L( i , : ) = L( i , : ) f n ( xp ( i ) ) ; p l = p l + L( i , : ) ; end

zros, qui vont recevoir respectivement les abscisses et les valeurs successives du polynme dinterpolation. partir de la ligne 3, je remplis la ligne i de la matrice L par des 1. Le gros du calcul est fait ligne 7, o je calcule, laide dune itration, les valeurs du polynme lmentaire Li , pour toutes les abscisses simultanment. La gure montre le rsultat. Jai reprsent chacune des quantits Li (x)f (xi ), ainsi que leur somme p(x). Vous pouvez vrier que les Li (x)f (xi ) passe par un pivot et un seul, alors que p(x) passe par tous les noeuds. Cependant, il serait pnible de dvelopper le polynme de Lagrange et de regrouper les termes pour le mettre sous la forme dune

An_Num

23

somme ordonne selon les puissances de x. Si lon souhaite vraiment obtenir cette forme, il vaut mieux utiliser un algorithme du Newton, la mthode des dirences divises.

3.5
3.5.1

le polynme de Newton
Interpolation linaire

Il est commode de revenir linterpolation linaire. Lorsque je dis que la fonction f (x) est bien reprsente par une interpolation linaire dans un certain intervalle, cela signie que le rapport f (x1 ) f (x0 ) x1 x0 (la pente moyenne de la courbe reprsentative) est peu prs indpendant de x0 et x1 dans cet intervalle. Ce rapport sappelle la dirence divise du premier ordre, relative x0 et x1 , et se note gnralement f (x1 ) f (x0 ) f [x0 , x1 ] . (3.7) x1 x0 Remarquez que f [x0 , x1 ] = f [x1 , x0 ]. Je peux aussi crire la relation approche f [x0 , x] = f [x0 , x1 ] ou encore f (x) = f (x0 ) + (x x0 )f [x0 , x1 ]. (3.8) (3.9)

Vous reconnaissez, au second membre, le polynme du premier degr qui interpole f sur les pivots (x0 , x1 ), une expression que je noterai p0,1 dans la suite. Il est commode dintroduire les notations p0 (x) f [x0 ] f (x0 ), (3.10)

si bien que f [x0 ] est la dirence divise dordre zro et p0 (x) est le polynme dinterpolation de degr zro qui concide avec f en x0 . La formule (3.9) prend alors une forme quil sera facile de gnraliser plus tard : p0,1 = f [x0 ] + (x x0 )f [x0 , x1 ]. (3.11) moins que la fonction f ne soit rellement linaire en x, la pente de la scante f [x0 , x1 ] va dpendre des abscisses x0 et x1 . Si f est du second degr en x, la pente de la scante joignant les points dabscisses x0 et x est elle-mme une fonction linaire de x, x1 constant. Je mattend donc ce que la quantit f [x1 , x2 ] f [x0 , x1 ] x2 x0 soit indpendante des trois arguments ; dans le cas gnral, on appelle ce rapport la dirence divise dordre 2 relative aux abscisses x0 , x1 , x2 et on le note f [x0 , x1 , x2 ]. Cette expression est encore symtrique 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] do je dduis 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 connatre f [x0 , x1 , x] revient connatre f (x), ce que je cherche justement viter. Mais lerreur E (x) commise en remplaant f (x) par p0,1 est donne par f p0,1 = (x x0 )(x x1 )f [x0 , x1 , x], un rsultat que je gnraliserais plus tard.

An_Num

24

3.5.2

Les dirences divises


f [x1 ] f [x0 ] x1 x0

Les dirences divises dordres 0, 1, 2, . . . , k sont dnies par les relations de rcurrence f [x1 , . . . , xk ] f [x0 , . . . , xk1 ] xk x0 (3.12) Dans chaque numrateur, les k 1 premiers arguments du premier terme sont identiques aux k 1 derniers arguments du deuxime terme et le dnominateur est la dirence entre les arguments qui dirent dun terme lautre. Il est possible de dmontrer par rcurrence que f [x0 , . . . , xk ] est une fonction totalement symtrique de ses k + 1 arguments ; lordre de ceux-ci est donc indirent. Jen dduis que f [x0 , x1 , . . . , xk ] peut sexprimer comme le quotient de la dirence de deux dirences divises dordre k 1 (ayant k 1 arguments en commun) par la dirence entre arguments dirents : f [x0 ] = f (x0 ) f [x0 , x1 ] = f [x0 , . . . , xk ] = f [x0 , x1 , x2 , x3 ] = f [x0 , x1 , x2 ] f [x1 , x2 , x3 ] f [x0 , x2 , x3 ] f [x1 , x2 , x3 ] = . x0 x3 x0 x1

Jusqu prsent, jai fait semblant dignorer la possibilit que deux abscisses puissent tre gales ; si cela se produit, on peut donner un sens la dirence divise par passage la limite : lim f [x + h, x] = lim f (x + h) f (x) = f (x). h

x 0

3.5.3

La formule de Newton
f (x) f [x0 , x] f [x0 , . . . , xn1 , x] = = = = f [x0 ] + (x x0 )f [x0 , x], f [x0 , x1 ] + (x x1 )f [x0 , x1 , x], f [x0 , . . . , xn ] + (x xn )f [x0 , . . . , xn , x].

Daprs la dnition (3.12), je peux crire, en remplaant chaque fois un des xi par x

En substituant la premire quation dans la seconde, jobtiens lexpression dj vue f (x) = f [x0 ] + (x x0 )f [x0 , x1 ] + (x x0 )(x x1 )f [x0 , x1 , x] Par des substitutions successives, jarrive nalement f (x) = f [x0 ] + (x x0 )f [x0 , x1 ] + (x x0 )(x x1 )f [x0 , x1 , x2 ] + (x x0 )(x x1 ) (x xn1 )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 jignore le dernier terme) la formule dinterpolation de Newton en ngligeant 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 xn1 )f [x0 , x1 , . . . , xn ] Lerreur commise en remplaant 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. (3.14)

An_Num

25

3.5.4

exemple

Voici un exemple de calcul de dirences divises. Jutilise les mmes donnes quau paragraphe prcdent ; bien que cela ne soit pas ncessaire, jai rang les abscisses par ordre croissant, ce qui rend la suite de oprations plus facile suivre. Les pivots sont numrots implicitement de 0 3. ordre : 1 0 0, 367879 1 1, 280842 1, 5 0, 853895 0, 5 1, 648721 2, 83297 1 1, 5 4, 481689 2, 907367 0, 5 5, 814734 2 7, 389056 2, 83297 2, 981766 1, 5 1, 987844 1, 979073 2, 5 0, 791629 1, 196215 3 0, 398738 2 3

La premire colonne contient les valeurs de x, la deuxime celles de f , qui sont identiques aux dirences divises dordre zro. Je donne dans la colonne suivante les valeurs des quantits xi xj et fi fj , dont le quotient fournit la dirence divise dordre 1, reporte dans la colonne numrote 1. Le calcul se poursuit sans dicult jusqu la dirence divise dordre 3, la dernire que je puisse calculer avec les donnes dont je dispose. Le polynme de Newton dordre 3 scrit alors p0,1,2,3 = 0, 367879+(x0, 5)0, 853895+(x0, 5)(x1, 5)0, 791629+(x0, 5)(x1, 5)(x2)0, 398738. Listing 3.2 construction du polynme de Newton
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 // d i f f e r e n c e s d i v i s e e s de Newton // c r e a t i o n d une s e r i e de v a l e u r s x = [ 0 . 5 , 1.0 , 2 . 0 , 1 . 5 ] ; y = exp ( x ) ; n e f f = input ( " o r d r e de l i n t e r p o l a t i o n (<= 3 : " ) ; // c a l c u l d e s d i f f e r e n c e s f o r i = 1 : n e f f +1 t ( i ) = y( i ); f o r j = i 1: 1:1 t ( j ) = ( t ( j +1) t ( j ) ) / ( x ( i ) x ( j ) ) ; end a( i ) = t (1); end a z = input ( " v a l e u r de l argument : " ) ; // c a l c u l du polynome p o l = a ( n e f f +1); z = linspace ( 2 , 3 ) ; f o r i = n e f f : 1:1 p o l = p o l . ( zx ( i ))+ a ( i ) ; end rect = [ 3 ,4 ,0 ,10]; plot2d ( z , [ p o l , exp ( z ) ] )

Sa forme, trs semblable celle de Horner, rend le calcul facile pour toute valeur de x. Le listing ci-dessus montre un programme Scilab qui accomplit la mme tche. La gure illustre le

An_Num

26

Fig. 3.2 interpolation par la mthode de Newton


11

5 2 1 0 1 2 3

rsultat ; comme le polynme dinterpolation est unique, le rsultat nal est indiscernable de celui du paragraphe prcdent.

3.6

Erreur dinterpolation

Je cherche majorer lerreur commise en remplaant la fonction f (x) par le polynme de degr n p(x), lequel satisfait aux n + 1 conditions dinterpolation p(xi ) = f (xi ) fi , i = 0, 1, 2 . . . , n.

Je dnis tout dabord le polynme pi(x) de degr n + 1 :


n

(x) (x x0 )(x x1 ) (x xn ) =
0

(x xi )

puis la fonction auxiliaire F (x) f (x) p(x) K (x), o K est une constante. Il est possible de choisir la constante K de telle manire que F (X ) = 0, X tant un point quelconque de laxe rel. Jappelle I le plus petit intervalle contenant X et tous les xi . Alors la fonction F admet n +2 zros sur I . En eet, f p = 0 lorsque x = xi et, simultanment, (xi ) = 0. De plus, F sannulle en X . Le thorme de Rolle appliqu la fonction F me permet darmer que la fonction F (x) prsente au moins n + 1 zros sur ce mme intervalle ; en appliquant ce mme thorme aux drives successives de F , je dmontre que F admet au moins n zros dans I , que F (3) en admet au moins n 1 et nalement que F (n+1) sannule au moins une fois dans I , condition que cette drive existe ; jappelle ce point. La drive dordre n + 1 de F se calcule aisment ; p(n+1) = 0 puisque p est de degr n. Le terme de degr le plus lev de est xn+1 , si bien que la drive cherche est (n+1) = (n + 1)!. Je dduis que F (n+1) ( ) = f (n+1) ( ) K (n + 1)! = 0 ou encore que K= f (n+1) ( ) (n + 1)!

An_Num

27

Fig. 3.3 interpolation de la fonction de Lorentz


1.5 1.3 1.1 0.9 0.7 0.5

0.3 0.1 0.1 0.3 0.5 5 4 3 2 1 0 1

do je tire que f (X ) p(X ) = K (X ) = Je peut donc noncer le thorme suivant.

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

Si une fonction f possde une drive dordre n + 1, alors, pour toute valeur X de largument, il existe un nombre appartenant au plus petit intervalle qui contient X et tous les pivots xi et satisfaisant (X )f (n+1) ( ) . (3.15) (n + 1)! En pratique, comme je ne connais pas le nombre et que je cherche un rsultat valable pour tout lintervalle I , jutiliserai un majorant de la valeur absolue du second membre : f (X ) p0,1,2,...,n (X ) = |f p| 1 sup |f (n+1) |. (n + 1)! xI

Cette relation est souvent assez pessimiste. Dautre part, son utilit pratique est assez faible parce que si f est complique (et cest pour cela que je souhaite la remplacer par un polynme), sa drive dordre n + 1 a toutes les chances dtre impossible majorer facilement. On pourrait penser que lerreur diminue lorsque le nombre de pivots augmente, ou plutt, lorsque ceux-ci deviennent de plus en plus serrs. Il nen est rien ; le thorme de Faber tablit au contraire lexistence de fonctions pour lesquelles lerreur augmente avec le nombre de noeuds. La gure ci-dessous vous prsente un exemple de cette proprit paradoxale, connue sous le nom de phnomne de Runge. Jai interpol la fonction 1/(1 + x2 ) en utilisant des pivots rgulirement espacs ; vous voyez que lerreur dinterpolation devient trs grande aux bords de lintervalle. Je peux aussi raliser une interpolation extrmement prcise en choisissant bien les pivots. Les pivots dnis par linstruction Scilab for k = 1:npiv, xp(k) = 0.5*(xmax - xmin)*cos( (2*k-1)*%pi/(2*npiv) ); end; sont particulirement ecaces, comme le montre la gure ci-dessous. Lexplication de ce bon comportement est traite en exercice. Elle tient ce que ces abscisses sont proportionnelles aux zros du polynme de Tschebychef dordre npiv.

An_Num

28

Fig. 3.4 interpolation avec des pivots de Tschebychef


1.5 1.3 1.1 0.9 0.7 0.5 0.3 0.1 0.1 0.3 0.5 5 4 3 2 1 0 1 2 3 4 5

3.7

Interpolation entre pivots quidistants

Supposons que je dispose dune table des valeurs dune fonction f (x) calcules pour des valeurs entires de x et que jai besoin de connatre f (3, 4). Je peux utiliser les connaissances acquises en lisant les paragraphes prcdents et interpoler entre les valeurs f (3) et f (4) par exemple. Les algorithmes de Lagrange ou de Newton sappliquent sans dicult, mais ici les donnes prsentent une caractristique intressante : les pivots sont rgulirement espacs. Une telle situation se rencontre frquemment lorsque lon calcule la main et de nombreuses mthodes ont t dveloppes pour tirer parti au mieux de ce cas particulier. Dautre part, le mme formalisme est utilis pour rsoudre numriquement les quations direntielles et les quations aux drives partielles. Ceci justie que je consacre quelques pages linterpolation entre pivots quidistants.

3.7.1

Les dirences nies

tant donn une fonction f (x) et une constante positive h, je dni la dirence latrale ascendante h f (x) f (x + h) f (x). En gnral, la constante h est dnie par le contexte, ce qui me dispense de la faire gurer en indice. Comme je ne travaillerai, dans la suite, quavec des abscisses quidistantes xi = x0 + ih, i = 0, 1, 2, 3, . . ., jutiliserai la notation plus concise f (xi ) fi = f (xi+1 ) f (xi ) fi+1 fi . (3.16)

h sappelle le pas ou lintervalle tabulaire et f (xi+1 ) = f (xi +h). Je dni maintenant par rcurrence les dirences latrales dordre suprieur p+1 f p f (x + h) p f (x), p 0. (3.17)

Par convention, 0 f (x) f (x). Ainsi, 2 f = f (x + 2h) 2f (x + h) + f (x). Le calcul pratique des dirences nies se fait commodment laide dun tableau (semblable celui utilis pour former

An_Num les dirences divises, mais sans divisions). xi x0 x1 x2 x3 x4 x5 fi f0 f1 f 1 f2 f 2 f3 f 3 f4 f5 f 4 . . . f i f 0 2 f i 2 f0 f1 f2 f3 . . .


2 2 2

29

3 f i

3 f0 3 f1 3 f2

3.7.2

La formule dinterpolation de Newton

Il existe une relation simple entre le polynme de Newton (form laide de dirences divises) et les dirences latrales : pour tout entier k positif, f [x0 , x1 , x2 , . . . , xk ] = 1 k f0 . k !hk (3.18)

Cette formule se dmontre par rcurrence. Elle est manifestement vraie pour k = 0. Jai, pour k = 1, f1 f0 1 f [x0 , x1 ] = = f 0 , x1 x0 h ce qui est conforme au rsultat propos. Je suppose maintenant que la formule est vraie pour tout ordre k r. Alors, pour k = r + 1, la proprit (3.12)montre que f [x0 , x1 , . . . , xk+1 ] = f [x1 , x1 , . . . , xr+1 ] f [x0 , . . . , xr ] . xr+1 x0

En remplaant les dirences divises dordre r du second membre par leurs expressions, je trouve 1 1 1 1 r f 1 r f 0 = r+1 f0 , r r (r + 1)h r!h r !h (r + 1)!hr+1 ce qui tablit le rsultat pour k = r + 1. Il reste utiliser (3.18) pour transformer le polynme dinterpolation de Newton. Je dni une variable rduite = Je trouve ensuite que x xj = h( j ) et que (x x0 )(x x1 ) (x xk ) = ( 1) ( k )hk+1 . Insrant ces rsultats dans (3.14), jobtiens p0,1,...,n (x) = f0 + h f 0 2 f 0 n f 0 + ( 1)h2 + + ( 1) ( n + 1) . h 2!h2 n!hn x x0 . h

Je peux donner cette formule une allure plus compacte en introduisant des analogues fractionnaires des coecients du binme
k C

( 1) ( k + 1) . k!

(3.19)

An_Num Avec cette dnition, le polynme dinterpolation scrit


n

30

p0,1,...,n (x) =
j =0

j j C f0 .

(3.20)

Cette formule gnrale donne, pour n = 1 p0,1 (x) = f0 + f0 et, pour n = 2, 1 p0,1,2 = f0 + f0 + ( 1)2 f0 . 2

3.7.3

exemple

Voici un exemple complet dinterpolation par les dirences nies et la formule de Newton. Jai prpar un tableau de f et de ses dirences latrales. i 0 1 2 3 4 5 xi 1 fi 1 f 0, 61051 1, 1 1, 61051 0, 87781 1, 2 2, 48832 1, 22461 1, 3 3, 71293 1, 66531 1, 4 5, 37824 2, 21551 1, 5 7, 59375 Pour cette fonction assez rgulire, les dirences diminuent lorsque lordre crot, mais le nombre de chires signicatifs diminue aussi. Je cherche la valeur de f (1, 25). Je dcide dutiliser toutes les valeurs disponibles, commencer par f0 . Jai donc = (1, 25 1)/0, 1 = 2, 5. Les termes successifs du polynme dinterpolation scrivent f0 (2, 5)1 f0 (2, 5)(1, 5) 2 f0 2 (2, 5)(1, 5)(0, 5) 3 f0 6 (2, 5)(1, 5)(0, 5)(0, 5) 4 f0 24 (2, 5)(1, 5)(0, 5)(0, 5)(1, 5) 5 f0 120 p(1, 25) 1 1, 526275 0, 501187 0, 024844 0, 000563 0, 000014 3, 051758 0, 5502 0, 4407 0, 1095 0, 3468 0, 0939 0, 0156 0, 26730 0, 0795 0, 0144 0, 0012 2 f 3 f 4 f 5 f

Il est facile, avec cette mthode, de suivre les progrs de linterpolation : je marrte ds que je rencontre une contribution assez petite.

An_Num

31

Il existe bien dautres formules dinterpolation, associes aux noms de Gauss, Bessel et autres ; certaines seront prsentes en exercices.

3.8

Interpolation de Hermite

Dans le but de construire une fonction dinterpolation f encore plus prcise, je peux imposer celle-ci des conditions supplmentaires. Hermite a propos que les drives de f concident avec les drives correspondantes de f pour certains pivots. Je vais suivre cette ide, en me limitant linterpolation polynmiale et en ne considrant que la drive premire. Pour tous les pivots, jimpose donc que p(xi ) fi ; p (xi ) f (xi ) = fi , i = 0, 1, 2, . . . , n. (3.21)

En dautre termes, p(x) interpole f et p (x) interpole f , sur les mmes pivots. Je suppose que le polynme dinterpolation de Hermite, ainsi dni, peut scrire sous une forme analogue celle de Lagrange
n n

p(x) =
i=0

Hi (x)fi +
i=0

i (x)fi , H

(3.22)

i sont des polynmes rels distincts. Quel en est le degr ? Le polynme p doit satisfaire o les Hi , H aux 2n + 2 conditions (3.21) : il comporte donc 2n + 2 coecients ajustables et est de degr 2n + 1. ont donc un degr au plus gal 2n + 1. Les polynmes lmentaires H et H Les polynmes Hi sont tels que p interpole f ; ils obissent donc des conditions identiques celles que jai crites pour les polynmes lmentaires de Lagrange. Il parait de mme raisonnable soient choisis de faon ce que p interpole f , do une nouvelle srie que les polynmes drivs H i de conditions. Mais cela ne sut pas : il ne faut pas qe les Hi viennent perturber linterpolation i dtruisent linterpolation de f : ces polynmes doivent tre nuls sur les pivots. de f , ni que les H Jobtiens ainsi quatre sries de conditions Hi (xk ) = i,k Hi (xk ) = 0 i (xk ) = 0 H i (xk ) = i,k H i, k = 0, 1, 2, . . . , n, i, k = 0, 1, 2, . . . , n, i, k = 0, 1, 2, . . . , n, i, k = 0, 1, 2, . . . , n. (a) (b) (c) (d)

(3.23)

Chaque polynme lmentaire obit 2n + 2 conditions et peut donc tre de degr 2n + 1 au plus. i . Il sannulle ainsi que sa drive sur tous les pivots Je commence par construire le polynme H k = i ; il admet donc des racines doubles en ces points et aussi une racine simple en xi . Il sexprime facilement laide du polynme lmentaire de Lagrange Li (x) construit sur les mmes pivots et du facteur x xi : i (x) = C [Li (x)]2 (x xi ). H (xi ) vaut 1 (condition 3.23(d)), ce qui impose C 1. La drive H i Le polynme Hi (x) admet tous les pivots sauf xi comme racines doubles. Il peut donc scrire Hi (x) = [Li (x)]2 ti (x), en dsignant par ti un polynme du premier degr tel que Hi respecte les conditions (3.23a,b) en xi : Hi (xi ) = [Li (xi )]2 ti (xi ) = ti (xi ) = 1 Un calcul sans dicult montre que ti (x) = 1 2(x xi )Li (xi ). ; Hi (xi ) = 2Li (xi )Li (xi ) + L2 i (xi )ti (xi ) = 0.

An_Num Lerreur dinterpolation sobtient par un raisonnement calqu sur celui de $3 ; elle scrit f (X ) p(X ) = [ (X )]2 (2n+2 f ( ), (2n + 2)!

32

(3.24)

labscisse appartenant au plus petit intervalle qui contient X et tous les pivots xi .

3.9

Interpolation inverse

Lorsque je dispose dune table de valeurs dune fonction f , cest dire dun ensemble de couples xi , fi , et que je cherche la valeur de largument x correspondant une valeur de f qui ne gure pas dans la table, je dois eectuer une interpolation inverse. Il sagit en fait dinterpoler la fonction inverse f 1 partir de pivots qui ne sont gnralement pas quidistants. La recherche dune racine de lquation f (x) = 0 peut relever de ce formalisme. Si je connais les valeurs de f pour des abscisses encadrant la racine, jobtiens une bonne approximation de celle-ci par interpolation. Exemple. Je cherche la solution de cos x = x, sachant quelle est voisine de 0,7 radian. Je forme la table suivante x cos x x 0, 5 0, 377583 0, 6 0, 225336 0, 7 0, 064842 0, 8 0, 103293 0, 9 0, 278390 La racine est telle que 0, 7 > f 1 (0) > 0, 8 ; jen trouve une approximation par interpolation linaire selon Lagrange : x = 0, 7 0 (0, 103293) 0 00, 64842 + 0, 8 0, 064842 (0, 103293) 0, 103293 0, 064842

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

3.10

Interpolation par intervalle

Cherchant amliorer la qualit de linterpolation dune fonction donne, je suis tent daugmenter le nombre n de pivots (ou de noeuds). Comme vous le savez, cette solution est souvent voue lchec, parce que le terme derreur contient deux facteurs, le polynme (x) et la drive dordre n (ou 2n) de la fonction qui sont vraisemblablement rapidement croissants avec n. Je peux cependant augmenter volont le nombre de pivots, sans faire crotre lordre dinterpolation. La gure montre le principe de ce tout petit miracle. Pour interpoler la fonction reprsente par la courbe en noir, jai dni 5 pivots (dabscisses -1,8, -0,5, 0, 0,5, 1,4) et, ce faisant, 4 intervalles. Je pratique une interpolation du premier degr dans chaque intervalle ; la fonction linaire correspondante est dnie pour tout x : elle est reprsente par une ligne pointille. Cependant, je nutilise que la restriction de cette fonction lintervalle considr, cest--dire que jassimile larc de courbe par le segment reprsent en trait pais. La fonction dinterpolation f est maintenant plus complique : elle admet une dnition dirente dans chaque intervalle. De plus, sa drive nest plus continue. Ce type dinterpolation peut tre rendu aussi prcis que lon veut en multipliant le nombre dintervalles. On peut aussi le perfectionner en choisissant une mthode plus prcise dans chaque intervalle, interpolation parabolique ou interpolation de Hermite.

An_Num

33

Fig. 3.5 principe de linterpolation par intervalle


4

Cependant, dans certaines applications, la disparition de la continuit de la drive pose problme : imagine-t-on un bureau dtude qui calcule une coque de bateau forme dune srie de facettes raccordes par des angles vifs ? Il existe un formalisme qui combine lavantage dune interpolation par morceaux et la continuit des drives de la fonction dinterpolation : cest la mthode des splines, que jexplique dans le paragraphe suivant.

3.11

Interpolation spline

Le mot spline dsigne en anglais une rgle souple et lastique (une baguette de bois ou une latte) dont les dessinateurs se servaient pour tracer des courbes lisses (ou rgulires) passant par des points imposs. Le calcul du prol dun pont ou dune aile davion fournit les coordonnes dun ensemble de points ; il appartient ensuite au dessinateur de produire une courbe esthtique ou arodynamique mais passant par les points calculs. La forme de la rgle souple tait ajuste en y suspendant des poids ou en y attachant des ressorts en des points bien choisis. Linterpolation spline est la traduction algbriques de ce savoir-faire.

3.11.1

dnition dune spline cubique

Je vais dtailler un type particulier de fonctions spline, les splines cubiques, qui sont frquemment utilises et sont reprsentatives de cette catgorie de fonctions. Je me propose dinterpoler la fonction f (x) sur lintervalle I = [a, b]. Pour cela, je choisis une partition de I a x0 < x1 < x2 < < xn1 < xn b. (3.25)

Ces n + 1 abscisses dnissent n sous-intervalles [xi1 , xi ]. La fonction spline s(x) rpond alors aux contraintes suivantes Dans chaque intervalle [xi1 , xi ], la fonction dinterpolation est un polynme de degr trois. La fonction s, sa drive premire s et sa drive 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 problme de la dtermination de la fonction s soit soluble, il faut au moins que le nombre dquations soit gal au nombre dinconnues. Cela est-il le cas ? Je peux poser s(x) = ai + bi x + ci x2 + di x3 xi1 x xi i = 1, 2, . . . , n. (3.26)

Les inconnues sont les 4n coecients ai , bi , ci , di . Les conditions dinterpolation fournissent n + 1 contraintes. Les conditions de continuit sappliquent chaque frontire entre sous-intervalles ; il

An_Num

34

y a n 1 points communs deux intervalles et 3 sries de conditions, ce qui engendre 3n 3 contraintes. Je dispose donc en tout de 4n 2 relations pour dterminer 4n inconnues. Ce lger dcit nest pas gnant et jintroduirai bientt deux conditions supplmentaires qui me permettront de rsoudre entirement le problme.

3.11.2

construction dune spline cubique

Plutt que de faire intervenir directement les coecients du polynme s, il est commode dutiliser, pour la mise en quations, les quantits mi s (xi ), i = 0, 1, 2, . . . , n. Comme s doit tre du troisime degr sur [xi , xi+1 ], sa drive seconde est une fonction linaire de x que jcris sous une forme qui minimise les calculs venir et assure la continuit de s : s (x) 1 [(xi+1 x)mi + (x xi )mi+1 ], hi hi xi+1 xi , i = 0, 1, 2, . . . , n 1.

(3.27)

Jintgre maintenant deux fois par rapport x, ce qui fait apparatre deux constantes arbitraires Ci et Di (xi+1 x)3 mi + (x xi )3 mi+1 s(x) = + Ci (xi+1 x) + Di (x xi ). 6hi Jimpose maintenant les conditions dinterpolation pour obtenir les expressions suivantes des constantes dintgration Ci = hi m i fi hi 6 Di = fi+1 hi mi+1 . hi 6

Le polynme s prend alors une forme assez symtrique s(x) = (xi+1 x)3 mi + (x xi )3 mi+1 (x x)fi + (x xi )fi+1 + i+1 6hi hi i h 6 [(xi+1 x)mi + (x xi )mi+1 ], xi x xi+1 , i = 0, 1, 2, . . . , n 1.

(3.28)

Vous pouvez vrier que s est bien continue sur [a, b]. Il me reste prendre en compte la continuit de s ; pour cela, jexprime cette drive dans deux intervalles successifs. Dans [xi , xi+1 ] s = (xi+1 x)2 mi + (x xi )2 mi+1 fi+1 fi (mi+1 mi )hi + 2hi hi 6

alors que dans lintervalle prcdent [xi1 , xi ] : : s = (xi x)2 mi1 + (x xi1 )2 mi fi fi1 (mi mi1 )hi1 + . 2hi1 hi1 6

Ces deux expressions doivent vrier


xx+ i

lim = lim
xxi

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

Aprs un peu dalgbre, je trouve lquation assez simple suivante hi1 hi1 + hi hi+1 yi+1 fi fi fi1 mi1 + mi + mi+1 = , 6 3 6 hi hi1 i = 1, 2, . . . , n 1. (3.29)

Je viens dobtenir n 1 quations linaires pour les n + 1 inconnues mi . De plus, ces quations ont une structure simple : chacune ne fait intervenir que trois inconnues.

An_Num

35

3.11.3

conditions aux limites

Je dois maintenant imaginer deux quations supplmentaires. Il est dusage dimposer une condition raisonnable chaque extrmit (a, b) de lintervalle. Je peux, par exemple, supposer connues les pentes du polynme dinterpolation en ces points : s (x0 ) = f0 s (xn ) = fn , (3.30)

o f0 , fn sont des constantes. En utilisant les expressions de s vues prcdemment, pour i = 0 et pour i = n 1, jobtiens les deux quations manquantes h0 h0 f1 f0 m0 + m1 = f0 , 3 6 h0 hn1 hn1 fn fn1 mn1 + mn = fn . 6 3 hn1

3.11.4

systme linaire quivalent


AM = B

Lensemble des quations dnissant les mi peut tre mis sous forme matricielle

en dnissant BT f2 f1 fn fn1 f1 f0 f1 f0 fn fn1 fn1 fn2 f0 , ,..., , fn , h0 h1 h0 hn1 hn2 hn1 M T [m0 , m1 , . . . , mn ], A=
h0 3 h0 6 h0 6 h0 +h1 3 h1 6

0
h1 6 h1 +h2 3 h2 6

0 0 . . . 0

..

.
hn2 6 hn2 +hn1 3 hn1 6 hn1 6 hn1 3

Ces quations dnissent ce que lon appelle parfois linterpolant spline complet. Je suis parvenu concilier nombre de pivots arbitraire et continuit des deux premires drives, mais il y a un prix payer : je dois maintenant rsoudre un problme global (reprsent par un systme dquations) et toute modication locale dune donne (par exemple de f2 ) se rpercutera sur toutes les valeurs de la fonction spline. Je naborderai pas ici ltude de lerreur dinterpolation, qui ncessite de trop longs dveloppements et que lon trouvera dans les ouvrages spcialiss.

3.11.5

exemple

Le formalisme assez touu qui prcde est entirement masqu lintrieur des deux fonctions de Scilab splin et interp. Je remarque tout dabord que Scilab utilise, pour dterminer compltement les mi , deux conditions qui ne font intervenir aucune donne supplmentaire. Dans ce logiciel, on impose en eet la continuit de la drive troisime de s pour le deuxime et lavant-dernier pivot. Cela revient dire que s est un interpolant spline pour les noeuds x0 , x2 , x3 , . . . , xn2 , xn , mais interpole cependant sur tous les pivots x0 , x1 , x2 , . . . , xn1 , xn . Je reprend lexemple du 3, linterpolation de la fonction 1/(1 + x2 ). Voici le programme Scilab, suivi du graphe correspondant. Le phnomne de Runge a disparu et linterpolation est parfaitement rgulire.

An_Num

36

Listing 3.3 construction dun interpolant spline


1 2 3 4 5 6 7 8 9 10 11 d e f f ( "y = f n ( x ) " , "y = ( 1 . 0 ) . / ( 1 + x . x ) " ) ; npts = 200; np iv = input ( "nombre de p i v o t s : " ) ; xmin = 5; xmax = 5 ; x = linspace ( xmin , xmax , n p t s ) ; xp = linspace ( xmin , xmax , npiv ) ; xset ( "window" , 0 ) , xbasc ( 0 ) , xset ( "mark s i z e " , 3 ) plot2d ( xp , f n ( xp ) , 4 , r e c t = [ xmin , 0.5 ,xmax , 1 . 5 ] ) s p l 1 = s p l i n ( xp , f n ( xp ) ) ; s p l 2 = interp ( x , xp , f n ( xp ) , s p l 1 ) ; plot2d ( x , s p l 2 , 2 , " 000 " )

Fig. 3.6 interpolation spline


1.5 1.3 1.1

0.9 0.7 0.5 0.3 0.1 0.1 0.3 0.5 5 4 3 2 1 0

3.12

Interpolation deux ou plusieurs dimensions

Les algorithmes exposs ci-dessus se gnralisent de faon plus ou moins laborieuse deux ou plusieurs dimensions. La mthode des lments nis, utilise pour rsoudre les quations aux drives partielles, fait un usage intensif de linterpolation plusieurs variables ; vous trouverez les meilleures introductions linterpolation plusieurs dimensions dans les livres traitant des lments nis. Le graphisme sur ordinateur (CAO, DAO) est un autre consommateur important dalgorithmes dinterpolation. Je mentionne pour terminer une application classique de linterpolation deux variables : le trac de courbes de niveau. Soit f (x, y ) une fonction dnie dans une rgion du plan. Je peux reprsenter cette fonction comme une surface z = f (x, y ) (en fait comme une projection sur le papier ou lcran de cette surface). Je peux aussi dessiner la courbe du plan xOy dnie par lquation f (x, y ) = C . Les bulletins mto comportent souvent des cartes avec des isobares, lieux des points o la pression atmosphrique prend une valeur donne. Pour dessiner automatiquement une courbe de niveau, je dois dabord construire un tableau de valeurs de f correspondant tous les couples possibles dabscisses [xi ] et dordonnes [yj ], donc en tous points dun quadrillage couvrant la rgion qui mintresse. Je repre ensuite, sur les droites horizontales x = xi et sur les verticales y = yj les points pour lesquels f = C . Enn, je relie ces points entre eux par une interpolation bidimensionnelle.

Chapitre 4

Rsolution dquations non linaires


4.1 Introduction

Jexpose, dans ce chapitre, quelques mthodes de recherche des racines dune quation nonlinaire. Cette quation sera toujours crite sous la forme conventionnelle f (x) = 0. Rsoudre lquation f = 0, chercher les zros de f ou les ples de 1/f sont des expressions quivalentes. Ce genre de problme se rencontre souvent, quil sagisse de dterminer le point de fonctionnement dune diode daprs sa caractristique, la concentration dune espce chimique dans un mlange ractionnel ou la frquence de coupure dun ltre lectrique. Je nenvisagerai ici que des fonctions relles. On peut tre amen chercher toutes les solutions de f = 0, ou seulement quelques unes ou une seule, la plus petite par exemple. Un cas particulier important est celui o f est un polynme ; on sait alors que les racines sont relles ou deux deux complexes conjugues, en nombre gal au degr du polynme. Il est rare que je puisse crire une solution analytique de lquation f = 0 ; en fait, cela ne se produira que pour les polynmes de degr infrieur ou gal 4 ou pour quelques fonctions simples. En consquence, toutes les mthodes gnrales de recherche de racine sont des mthodes itratives ; partant dune solution approche, jobtiendrai une suite dapproximations de plus en plus prcises. Je devrai donc me proccuper de la convergence de la mthode et de la vitesse de convergence, je devrai dnir un critre darrt des itrations et prvoir le rle des erreurs darrondi invitables dans tout calcul numrique. Jinsiste sur le fait quaucune mthode connue ne fonctionne en aveugle : on doit toujours avoir une connaissance au moins approximative de lemplacement de la racine. Je vous recommande vivement de tracer le graphe de la fonction pour avoir une ide du nombre et de la position des zros.

4.2

Mthode de bissection ou de dichotomie

Je mintresse une fonction f (x) continue sur lintervalle I = [a, b] et telle que f (a)f (b) < 0. Il dcoule de ces hypothses que f sannule au moins une fois dans I et cest ce zro que je souhaite localiser prcisment. Le pseudo-code correspondant lalgorithme de bissection scrit

37

An_Num poser xg := a, xd := b, nit := 0 ; tant que |xg xd | > T OL et que nit < N IT M AX faire poser xm := (xg + xd )/2 si f (xg )f (xm ) < 0 alors xd := xm sinon xg := xm incrmenter nit acher nit, x = (xg + xm )/2, f (x )

38

Le principe de la mthode est facile comprendre. Je calcule la valeur de la fonction au milieu de lintervalle [xg , xd ] et jobserve le changement de signe : sil se produit entre xg et xm , cest que la racine se trouve dans cet intervalle ; dans ce cas, je rednis la borne droite de lintervalle et je recommence ; le raisonnement est semblable si le changement de signe se produit entre xm et xd . A chaque itration, lintervalle qui contient la racine voit sa longueur divise par 2. Comme dans toute mthode itrative, jai du dnir un critre darrt, ici le fait que la longueur du segment [xg , xd ] devienne infrieur la constante T OL. Il se pourrait que cette condition ne soit jamais remplie : cest pourquoi je surveille aussi le nombre ditrations et jarrte le calcul si nit dpasse N IT M AX . Jaurais pu aussi bien choisir la condition f (xm ) < SEU IL comme critre darrt. Cette bauche est incomplte : outre le fait que les constantes T OL et N IT M AX ne sont pas dnies, je nai rien prvu pour le cas o f (xm ) = 0. De plus, il est ncessaire que a < b et que lintervalle I ne contienne quune racine. Cependant, une fois amlior, lalgorithme de dichotomie prsente de nombreux avantages. La convergence est certaine ds lors que les conditions prcdentes sont remplies ; la programmation est trs simple ; le calcul de f na pas besoin dtre trs prcis, parce que jutilise en fait le signe de la fonction et non sa valeur. Le dsavantage est que la convergence est assez lente ; comme lintervalle o peut se trouver la solution est divis par deux chaque itration, je dis que la convergence est approximativement linaire. La gure montre un exemple de recherche de racine de lquation x2 = cos x ralis sous Scilab.

4.3

Mthode Regula falsi

Ces mots latins (rgle des fausses positions, une expression qui date du 17ime sicle) dsignent une variante de la mthode de dichotomie qui utilise une meilleure estimation de la nouvelle abscisse (xm pour la bissection). chaque itration de lalgorithme prcdent, je connais deux abscisses, xg et xd , qui encadrent la racine inconnue x . Les nombres yg = f (xg ) et yd = f (xd ) sont donc de signes contraires si bien que les deux points G(xg , yg ) et D(xd , yd )sont situs de part et dautre de laxe des x. La corde GD coupe donc cet axe en un point M, lequel sera assez proche de x ; je choisirai xm comme nouvelle borne de lintervalle contenant la racine, borne gauche si le changement de signe de f se produit entre xm et xd , borne droite dans le cas contraire. Il me reste dterminer labscisse xm : xm = xg yg xg xd xg xd = xd yd . yg yd yg yd

La convergence est souvent plus rapide quavec la mthode de bissection. Jai choisi comme exemple la mme quation quau paragraphe prcdent, qui fait intervenir une fonction variation rgulire pour laquelle la convergence est trs rapide. Jen ai prot pour modier le critre darrt : le calcul sarrte ds que deux estimations successives de la racine sont assez voisines : |x(n) x(n1) | < T OL.

An_Num

39

Fig. 4.1 rsolution de x2 = cos x par bissection

0.8

0.6

0.4

0.2

0.2

0.4

0.6

0.8

1.0 0.5

0.6

0.7

0.8

0.9

1.0

1.1

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

0.8

0.6

0.4

0.2

0.2

0.4

0.6

0.8

1.0 0.5

0.6

0.7

0.8

0.9

1.0

1.1

An_Num

40

Fig. 4.3 itration convergente


1.4

1.2

1.0

0.8

0.6

0.4

0.2

0 0 x0 0.2 0.4 x1 0.6 x2 0.8 x3 1.0 1.2 1.4

Fig. 4.4 itration divergente


1.4

1.2

1.0

0.8

0.6

0.4

0.2

0 0 0.2 0.4 x3 0.6 0.8 x2 1.0 x1 1.2 x0 1.4

4.4

Mthode du point xe ou ditration


x = f (x). (4.1)

Je me propose de rsoudre lquation

Toute solution de cette quation sappelle un point xe de lapplication f (limage de x est x lui-mme). Je vais procder par itrations successives partir dune estimation x(0) de la solution : x(n+1) = f (x(n) ). (4.2)

Lquation (4.2) admet une interprtation gomtrique simple. La solution x de (4.1) est le point dintersection de la premire bissectrice (droite dquation y = x) et de la courbe dquation y = f (x). Lordonne f (x(0) ) est la nouvelle abscisse x(1) ; le point (0,x(1) ) se dduit du point (x(0) , f (x(0) )) par une symtrie orthogonale par rapport la droite y = x. Cette construction se rpte pour x(2) , x(3) , En essayant de rsoudre (4.1) pour diverses fonctions f , vous verrez que lon peut rencontrer deux dispositions de la suite x(0) x(1) , , correspondant soit un point xe attractif, soit un point xe rpulsif, comme le montre les gures. Do la question : quelle(s) condition(s) la suite des x(n) converge-t-elle, et vers quelle valeur ? Le raisonnement est

An_Num

41

simple et il est reprsentatif de nombreuses tudes de convergence. Je suppose que la fonction f et sa drive f sont continues dans un intervalle I = [a, b] entourant la racine x . De plus, f est telle que a f (x) b si x I . Cette condition implique que tous les x(k) appartiennent I si lapproximation initiale x(0) appartient cet intervalle. La racine vrie (4.1) : x = f (x ). Je dni lerreur litration k ek x(k) x .

Je commence par exprimer lerreur ltape k + 1 en fonction de ek ek+1 = x(k+1) x = f (x(k) ) f (x ). Daprs le thorme des accroissements nis, le second membre scrit f (x(k) ) f (x ) = (x(k) x )f (k ) o k est compris entre x et x(k) . La relation cherche scrit ek+1 = f (k )ek . (4.3)

Pour que litration converge, il faut que lerreur diminue en valeur absolue chaque tour, ce qui sera assur si |f (k )| < 1 quelque soit k . Do le thorme Thorme. Soit une fonction f continment drivable sur [a, b] et telle que f (x) [a, b] si x [a, b]. Soit encore M telle que M = sup |f (x)| < 1.
axb

Pour tout x(0) [a, b], la suite des itrs x(0) , x(1) , . . . , x(n) , . . . converge vers la solution de lquation x = f (x). On a de plus x x(n+1) = f (x ). n x x(n) lim Vous voyez que lerreur est multiplie par un facteur infrieur un chaque itration : on dit que la convergence est linaire. La mthode du point xe est dapplication assez gnrale car beaucoup dquations peuvent se mettre sous la forme x = f (x). Lexemple suivant remonte lAntiquit. Lquation x2 = a peut se pour approcher a. mettre sous lune des formes x = a/x ou x = 1 2 (x + a/x) qui ont t utilises La gure montre lapplication de la mthode du point xe lquation x = cos x ; les conditions de convergence sont remplies dans [0,1] et, eectivement, la mthode converge vers x = 0, 824132.

4.5

Mthode de Newton

La mthode de Newton sapplique la rsolution dune quation de la forme f (x) = 0. Son interprtation gomtrique est donne sur la gure suivante.

An_Num

42

Fig. 4.5 rsolution de x2 = cos x par itration


1.4

1.2

1.0

0.8

0.6

0.4

0.2

0 0 0.2 0.4 0.6 0.8 1.0 1.2 1.4

0 x3 x2 x1 x0

1 0.5

0.7

0.9

1.1

1.3

1.5

1.7

1.9

Je dispose dune approximation x(0) de la racine ; je construit la tangente la courbe dquation y = f (x) au point dabscisse x(0) ; cette droite coupe laxe horizontal en x(1) ; je construit une nouvelle tangente en cette abscisse, dont lintersection avec laxe des x me donne x(2) . Ce procd est itr jusqu convergence. Lquation de la droite de pente f (x(k) ) passant par le point x(k) , f (x(k) ) scrit y f (x(k) ) = f (x(k) )(x x(k) ). Cette droite coupe laxe des x au point dabscisse x(k+1) = x(k) f (x(k) ) . f (x(k) ) (4.4)

Cette quation dnit lalgorithme de Newton pour la rsolution des quations non-linaires. Vous constatez immdiatement que la mthode va diverger lorsque que f sera nulle ou mme petite. En eet, si la pente de la courbe est faible, le point dintersection x(k+1) de la tangente avec laxe sera trs loign du point dabscisse x(k) et lalgorithme a toutes chances de se perdre. Je vais maintenant tablir la condition de convergence de faon prcise ; la thorie devient trs simple si lon remarque quen posant (x) x f (x) , f (x)

je mets lquation (4.4) sous la forme dune itration vers un point xe x(k+1) = (x(k) ).

An_Num

43

Cette fonction sappelle parfois la fonction ditration de la mthode de Newton. Daprs le paragraphe prcdent, je sais que la convergence dpend de (x) ; or (x) = f (x)f (x) [f (x)]2 2 .

Jappelle encore x la racine que je cherche ; elle vrie f (x ) = 0 et par consquent (x) = 0. Comme je suppose que f, f , f sont dnies et continues dans la rgion qui mintresse, il existe un intervalle I = [x , x + ] tel que | (x)| C < 1. Il me sut donc de choisir x(0) I pour assurer la convergence de lalgorithme de Newton. Pour estimer la vitesse de convergence, je fait un dveloppement de Taylor de autour de x : (x(k) ) (x ) = o k est compris entre x et x(k) . Jen dduis e(k+1) = 1 (k ) 2 [e ] (k ). 2 1 (k) (x x )2 (k ) 2

Lorsque k croit, x(k) et k se rapprochent de x , ce que je traduis par lexpression e(k+1) 1 = (x ). k [e(k) ]2 2 lim Je calcule (x ) = f (x )/f (x ) do le rsultat e(k+1) f (x ) = . ( k ) 2 k [e 2f (x ) ] lim Je peux donc noncer le thorme suivant. Thorme. Si f, f et f sont continues dans un voisinage de x et si f (x ) = 0 et f (x ) = 0, si x(0) est choisi assez prs de x , alors la suite dnie par (4.4) converge vers x , avec une vitesse de convergence donne par (4.5) ; la convergence est dite quadratique. (4.5)

4.6

Mthode de la scante

La mthode de la scante est une mthode deux points : connaissant les approximations x(k1) et x(k) de la racine, je vais calculer une meilleure approximation x(k+1) . Le principe en est simple. La corde qui joint les points de coordonnes [x(k1) , f (x(k1) )] et [x(k) , f (x(k) )] coupe laxe des x en un point dabscisse x(k+1) . Je trouve facilement lexpression de cette abscisse x(k+1) = x(k) f (x(k) ) x(k) x(k1) . f (x(k) ) f (x(k1) )

Ce procd nest pas trs dirent de la mthode de Newton. En eet, la fraction au second membre peut tre considre comme une approximation de 1/f (x(k) ). Lanalyse de la convergence est cependant un peu plus complique et pourra tre aborde en exercice.

An_Num

44

4.7

Rsolution de systmes dquations

Je ne ferais queeurer le sujet vaste et compliqu des systmes dquations non linaires plusieurs variables. Dans le cas de deux dimensions, je cherche les solutions du systme : f (x, y ) = 0, g (x, y ) = 0. (4.6)

Chaque quation dnit une courbe du plan (x,y) ; rsoudre le systme quivaut donc chercher les points dintersection de ces deux courbes. Je recommande vivement une tude graphique sommaire de ces deux quations avant toute recherche de racine par le calcul ; en eet, quelque soit lalgorithme utilis, la convergence dpendra fortement de la qualit de lapproximation initiale. Je vais prsenter une gnralisation de la mthode de Newton. Je suppose que f , g et leurs drives sont continues dans la rgion du plan qui mintresse. Je suppose connue une approximation de la solution, soit (x0 , y0 ). Je peux toujours poser : x = x0 + u ; y = y0 + v.

Je substitue dans (9.1) et jeectue un dveloppement de Taylor du premier ordre deux variables : f (x0 + u, y0 + v ) = f (x0 , y0 ) + ufx + vfy + = 0, g (x0 + u, y0 + v ) = g (x0 , y0 ) + ugx + vgy + = 0, o les drives partielles fx , fy , gx et gy sont calcules au point (x0 , y0 ). Je suppose que les variations de f et g soient assez lentes pour que je puisse ngliger les termes dordre suprieur. En isolant les termes en u et v , je trouve ufx + vfy ugx + vgy = = f (x0 , y0 ), g (x0 , y0 ). (4.7)

Les quations (4.7) constituent un systme de deux quations linaires deux inconnues, u et v , dont la solution est immdiate. Il est maintenant facile dimaginer lalgorithme de Newton deux dimensions. Jobtiendrais une approximation encore meilleure de la solution en itrant ce procd x1 = x0 + u ; y1 = y0 + v.

ltape suivante de litration, je remplace (x0 , y0 ) par (x1 ,y1 ) et ainsi de suite, jusqu satisfaire un critre de convergence. Ce formalisme se gnralise facilement un nombre quelconque dquations ; il est alors commode dutiliser une notation matricielle. Soit f n un vecteur de coordonnes fi (r) ; je suppose aussi que r n . Le systme dquations rsoudre scrit : f = 0. Si r0 est une approximation de la solution, je pose r = r0 + u. La correction u est alors dnie par lquation n f =0 f (r0 ) + ui ui 1 ou encore, en dnissant la "matrice jacobienne" J, dlments Jij = fi /uj : u = J1 f (r0 ) r1 = r0 + u

An_Num rn+1 = rn J1 f (rn )

45

La convergence est rapide si le point de dpart est proche de la solution ; dans le cas contraire, nous ne sommes pas assurs de voir lalgorithme converger. Exemple. Soit le systme de deux quations : f (x, y ) = x2 + y 2 4 = 0, g (x, y ) = ex + y 1 = 0. Il est trs simple de construire les deux courbes reprsentant les quations f = 0 et g = 0 ; elles se coupent en deux points voisins de (1,-2) et (-2,1) ; il ny a pas dautre solution. Jai crit un programme de rsolution par la mthode de Newton deux dimensions, que vous trouverez ci-dessous. Listing 4.1 Mthode de Newton
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 // a l g o r i t h m e de newton a deux v a r i a b l e s function u = f ( x , y ) u = xx + yy 4 endfunction function u = dfdx ( x , y ) u = 2 x ; endfunction function u = dfdy ( x , y ) u = 2 y endfunction function u = g ( x , y ) u = exp ( x ) + y 1 ; endfunction function u = dgdx ( x , y ) u = exp ( x ) endfunction function u = dgdy ( x , y ) u = 1; endfunction t o l = 1 e 6; nitmax = 2 0 ; xmin = 4; xmax = 4 ; ymin = 3; ymax = 3 ; xset ( "window" , 0 ) , xbasc ( 0 ) xt = 3 : 0 . 1 : 3 ; yt1 = 1 exp ( xt ) ; plot2d ( xt , yt1 , r e c t =[xmin , ymin , xmax , ymax ] , s t y l e =2) xpoly ( [ xmin , xmax ] , [ 0 , 0 ] ) , xpoly ( [ 0 , 0 ] , [ ymin , ymax ] ) xt = 2 : 0 . 0 2 : 2 ; yt2 = sqrt ( 4 xt . ^ 2 ) ; plot2d ( xt , yt2 , 3 , " 000 " ) ; yt2 = sqrt ( 4 xt . ^ 2 ) ; plot2d ( xt , yt2 , 3 , " 000 " ) ; for j = 1 : 3 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 : " ) ; n i t = 1 ; xx ( 1 ) = a ; x = a ; yy ( 1 ) = b ; y = b ; xset ( "mark s i z e " , 2 ) , plot2d ( a , b , 4) u = 1; v = 1; while ( ( ( abs ( u ) > t o l ) | ( abs ( v ) > t o l ) ) & n i t < nitmax ) d e l t a = dfdx ( x , y ) dgdy ( x , y) dfdy ( x , y ) dgdx ( x , y ) ; u = ( g ( x , y ) dfdy ( x , y) f ( x , y ) dgdy ( x , y ) ) / d e l t a ;

An_Num

46

42 43 44 45 46 47 48

v = ( f ( x , y ) dgdx ( x , y) g ( x , y ) dfdx ( x , y ) ) / d e l t a ; nit = nit + 1 x = x + u, y = y + v, xx ( n i t ) = x ; yy ( n i t ) = y ; xarrows ( [ xx ( n i t 1) , xx ( n i t ) ] , [ yy ( n i t 1) , yy ( n i t ) ] , 0 . 0 5 , j ) end end

La gure montre les itrations successives. La convergence est rapide, bien que le point de coordonnes(xi , yi ) ait tendance explorer une assez grande rgion du plan. Comme toujours avec la mthode de Newton, le comportement dpend trs fortement du point de dpart. Pour certains systmes, on peut montrer que les valeurs initiales qui conduisent la convergence sont contenues dans une rgion du plan dont la frontire est une belle courbe fractale. Fig. 4.6 recherche des solutions dun systme non-linaire
3

3 4 3 2 1 0 1 2

3 4

4.8

Racines des polynmes

Soit p(x) un polynme de degr n coecients rels. On dsigne parfois une quation comme p(x) = 0 sous le nom dquation algbrique. Le thorme fondamental de lalgbre nonce que p(x) a n racines, relles ou complexes conjugues deux deux. Pour de nombreuses applications, il est ncessaire de dterminer toutes les racines de p(x).

4.8.1

Sparation des racines

Avant de chercher les valeurs numriques des zros dun polynme, il est commode davoir une ide de leur localisation. Si [a0 , a1 , . . . , an ] est la suite des coecients de p(x) supposs rels (certains pouvant tre nuls), jappelle le nombre de changements de signe dans la suite des {ai } (en ignorant les coecients nuls). Je dsigne par k le nombre de zros rels positifs de p(x), compts selon leur multiplicit (une racine double compte pour 2, etc.). Je peux alors noncer la rgle de Descartes : k et de plus k doit tre pair. Exemple. Les coecients de x6 x 1 prsentent un changement de signe ( = 1) ; k vaut donc 0 ou 1, mais la valeur 0 est rejeter puisqualors k = 1. Ce polynme a donc une racine relle positive.

An_Num

47

Je peux aussi trouver le nombre de racines relles ngatives : il sut dappliquer la rgle de Descartes au polynme q (x) = p(x). Le polynme de lexemple prcdent admet un zro rel ngatif.

4.8.2

Suites de Sturm

Une localisation plus prcise des racines dun polynme p(x) de degr n peut tre obtenue en construisant une suite de Sturm base sur p. Je commence donc par dnir ce quest une suite de Sturm. Soit p0 (x), p1 (x), . . . , pm (x) une squence de polynmes ; elle constitue une suite de Sturm si Les zros rels de p0 (x) sont simples. p1 ()p0 () < 0 si est un zro rel de p0 . Pour k = 1, 2 . . . , m 1, pk1 ()pk+1 () < 0 si est un zro rel de pk (x). Le dernier polynme, pm (x) na pas de zros rels.

Comment construire cette suite ? laide de la relation de rcurrence assez simple que jexpose maintenant. Je pose p0 (x) p(x) ; p1 (x) p0 (x) et pk1 (x) = qk (x)pk (x) pk+1 (x) avec deg pk > deg pk+1 . (4.8) Si les pk taient des nombres, vous auriez srement reconnu lalgorithme dEuclide pour la construction du PGCD. Le concept de PGCD se transpose facilement aux polynmes. Comme le degr des polynmes dcrot, lalgorithme sarrte au bout de m n tapes : pm1 (x) = qm (x)pm (x), pm (x) = 0.

Le dernier polynme, pm est un plus grand commun diviseur de p0 et p1 . Comme p = p0 na que des zros simples, p0 et p1 = p0 nont pas de diviseurs communs (ne sont jamais nuls simultanment) et, par consquent, pm na pas de zros rels. Si pk () = 0, la relation (4.8) implique que pk1 () = pk+1 (). Il pourrait se faire que pk+1 () soit nul ; mais alors, toujours daprs la relation de rcurrence, tous les pk () seraient nuls, y compris pm , ce qui est contraire au rsultat prcdent. En tenant compte des dnitions de p0 et p1 , vous vous apercevez que les {pk } satisfont toutes les proprits qui dnissent une suite de Sturm. Jnonce maintenant le thorme de Sturm : Thorme. Le nombre de racines relles de p(x) p0 (x) dans lintervalle a x < b est gal w(b) w(a) o w(x) est le nombre de changements de signe dans la suite p0 (x), p1 (x), . . . , pm (x) au point x. Je ne donnerai pas ici la dmonstration, simple mais assez longue : il faut examiner en dtail les changements de signe de chaque polynme au voisinage dun zro de lun deux. Exemple. Soit p(x) = x5 x3 x 1. La suite de Sturm de p est p0 (x) = p1 (x) = p2 (x) = p3 (x) = p4 (x) = p5 (x) = x5 x3 x 1, 5x4 3x2 + 1, 2 3 4 x + x + 1, 5 5 25 2 13x x 1, 2 174 385 x , 338 169 47827 . 148225

An_Num Ici, m = 5. Je ne considre que les cas x = , 0, ; je construis un tableau de signes x p0 p1 p2 p3 p4 p5 w(x) + + 1 0 + + + 3 + + + 4

48

La suite prsente un seul changement de signe lorsque x est trs grand ngatif, trois changements pour x = 0 et 4 pour x grand positif. Il y a donc deux zros dans lintervalle [, 0[ et un dans [0, [.

4.8.3

Division des polynmes

Je reviens plus en dtail, dans ce paragraphe, sur la division des polynmes, qui a t considre comme bien connue au paragraphe prcdent. tant donn un polynme p(x) de degr n (le dividende) et un polynme b(x) de degr m < n (le diviseur), on sait trouver deux polynmes, le quotient 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 rle dans la suite. Avec cette dnition, la division des polynmes est trs semblable celle des nombres, pour laquelle le reste doit tre infrieur au diviseur. Je considre maintenant un cas particulier, celui o le diviseur est de la forme b(x) = x . Le reste est alors une constante (polynme de degr < 1). Je peux crire p(x) = (x )q (x) + r do je tire, en faisant x = , p() = r. (4.10) en dautres termes, la valeur numrique de p en x = est le reste de la division de p par x . Ce rsultat a une consquence importante. Si a est un zro de p, donc si p() = 0, alors r = 0, ce qui signie quun polynme qui sannule en x = est divisible par x . Jai dj expliqu (chapitre 1) comment calculer r ou p(a), mais je reprendrai ce calcul plus bas. Je peux aussi obtenir une expression simple de la valeur numrique de la drive 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 les drives dordre suprieur. Je vais maintenant construire le polynme q (x) par identication. Je note c0 , c1 , . . . , cn1 les coecients des puissances croissantes de x dans q . Ces nombres doivent satisfaire, quelque soit x, la relation an xn + an1 xn1 + + a1 x + a0 = (x )(cn1 xn1 + cn2 xn2 + + c1 x + c0 ). En identiant les coecients des puissances successives de x, jobtiens an = cn1 ; an1 = cn2 cn1 ; . . .

An_Num a1 = c0 c1 soit encore : cn1 cn2 c0 r = an = an1 + cn1 , = a1 + c1 , = a0 + c0 . ; a0 = r c0

49

(4.12)

Vous voyez que r, qui est aussi la valeur numrique de p(), sobtient au moyen de n 1 multiplications. En fait la relation de rcurrence prcdente est quivalente la rgle suivante. Jcris le polynme p(x) sous la forme : p = (((...(an x + an1 )x + an2 )x + .... + a1 )x + a0 , (4.13)

puis je fais x = avant deectuer les calculs. La parenthse intrieure contient alors cn2 , la suivante cn3 , jusqu r. Vous avez reconnu la mthode de Horner. Je donne un exemple, qui fait un 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 coecients des puissances dcroissantes de x sont ncessaires, mais il faut les faire gurer tous, mmes ceux qui sont nuls. p 2 q 2 0 6 2 + 0 = 12 71 6 12 71 = 1 8 6 1 8 = 2 12 6 2 + 12 = 0 3 60+3=3

Le reste est r = 3, le quotient est q = 2x4 + 12x3 + x2 2x. La valeur numrique de p (6) est q (6) qui sobtient par le mme procd. q 2 12 2 6 2 + 12 = 24 1 6 24 + 1 = 145 2 870 2 = 868 0 6 868 = 5208

ce que vous pouvez vrier par un calcul direct. Lorsque lon traite la main un seul polynme, les formes (4.12) et (4.13) sont quivalentes mais, lorsque lon doit faire de nombreux calculs, il devient intressant dcrire un programme gnral. Je donne ci-dessous le squelette dun programme qui calcule p et p partir du tableau a des coecients 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 numrique du polynme (accumule selon la mthode de Horner) et dp celle de la drive.

4.8.4

La mthode de Newton pour les polynmes

Je dispose maintenant dun algorithme pratique de calcul des valeurs numriques dun polynme et de sa drive : cest tout ce quil faut pour mettre en oeuvre la mthode de Newton. En voici un exemple : la recherche du zro de p = x3 x2 + 2x + 5 voisin de -1. Les coecients ont t rangs en colonne pour gagner de la place.

An_Num x -1 p 1 -1 2 5 1 -1 2 5 1 -1 2 5 q 1 -2 4 1 1 -2,142857 4.448979 -0,084546 1 -2,132552 4,415226 -0.000473 p 1 -3 7 p/p

50

0,142857 -1,142857 1 -3,285714 8,204081 -0,010305 -1,132552 1 -3,265104 8,113126 -0.000058 -1,132494 Les nombres souligns sont les valeurs de p, alors que les valeurs de p gurent en caractres gras. On voit que la convergence (caractrise par le terme correctif (p/p ) est trs rapide. Il est possible dtendre cet algorithme aux racines complexes ou aux polynmes coecients complexes. p est de degr 3 et admet donc 3 zros ; comment pourrais-je les trouver ? Trs simplement : il sut de diviser le polynme de dpart par x + 1, 132494. La division doit se faire exactement, puisque -1,132494 est racine de p(x) ; le polynme quotient est ici du second degr et ses zros sobtiennent sans problme. Ce procd sappelle la dation. Dans le cas gnral dun polynme p(x) de degr n, ds que jai dtermin une racine x (par la mthode de Newton par exemple), je divise p(x) par x x pour obtenir un polynme de degr n 1. Je rpte ce procd jusquau degr 2 ou 1. Si n est un tant soit peu grand, les erreurs darrondi risquent, en saccumulant, de gcher ce programme : le calcul doit tre men avec toute la prcision possible.

Chapitre 5

Polynmes orthogonaux
5.1 Introduction

Les suites de polynmes orthogonaux apparaissent frquemment en physique mathmatique en particulier au cours de la rsolution dquations aux drives partielles (Laplace, Schrdinger) par la mthode de sparation des variables. Elles sont aussi trs utilises en analyse numrique. On connat de nombreuses familles de polynmes orthogonaux, qui ont en commun un certain nombre de proprits simples, que je vais dcrire succinctement.

5.2

Dnition, Existence

Soit [a, b] un intervalle (qui peut tre ni ou inni) et w(x) une fonction strictement positive et intgrable sur cet intervalle. On appelle polynmes orthogonaux sur [a, b], par rapport la "fonction de poids" w(x), une suite de polynmes G0 (x), G1 (x),. . ., Gn (x),. . .(o Gk est de degr k ) tels que :
b

(Gk , Gn ) =
a

w(x)Gk (x)Gn (x)dx = 0 si k = 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 ; lorsquil est nul, on dit que les fonctions f et g sont orthogonales. En faisant f = g dans la relation prcdente, on obtient le carr de la norme de f : f
2

= (f, f ) =

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

(5.3)

On montre facilement que ce produit scalaire est linaire en f et g , symtrique et quil vrie lingalit de Cauchy-Schwartz : (f, g ) f g . Les formules (5.1,5.2) ne dnissent pas entirement les Gn ; il est commode dimposer les conditions supplmentaires :
b

(Gn , Gn ) =
a

w[Gn ]2 dx = 1;
a b

xwGn Gn+1 dx > 1

On a alors : (Gk , Gn ) =
a

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

51

An_Num

52

Les polynmes sont ainsi orthonorms. Pour prouver lexistence de ces polynmes, je vais les construire par le procd de GramSchmidt, appliqu lensemble des puissances successives de x. G0 est une constante positive, telle que (G0 , G0 ) = 1. g1 est une fonction linaire que je dnis comme : g1 = x (x, G0 )G0 . g1 est manifestement orthogonal G0 . G1 est dni comme g1 norm : G1 = g1 / g1 .

Je procde ensuite par itration de ces relations ; g2 est une fonction quadratique dnie 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 vrie que cette fonction est bien orthogonale G0 et G1 . Je construis ainsi la suite des polynmes Gk , partir des nombres (x, G0 ), (x2 , G0 ), . . . , (xk , Gl ). . .

5.3

Relation avec les polynmes habituels

Thorme Tout polynme de degr n est reprsentable comme combinaison linaire de polynmes Gk , avec k n. Jai construit les Gk comme combinaisons linaires des xp ; un polynme quelconque (x), lui-mme combinaison linaire des xp , peut donc sexprimer comme : (x) = a0 G0 + a1 G1 + + an Gn . La dtermination des ai est facile : jeectue en eet le produit scalaire de lgalit prcdente par Gp (p n). Il vient : ap = (, Gp ). Jai au contraire (, Gn+1 ) = 0, quelque soit (x) de degr n, puisque Gn+1 est orthogonal tous les Gk dindice infrieur. Par ailleurs, (x) sera identiquement nul si et seulement si : (, Gp ) = ap 0; p = 0, 1, . . . , n. Jen dduis le : Thorme. Le polynme Gk est orthogonal tout polynme de degr infrieur. Remarque. Le produit scalaire (xGn1 , Gn ) est encore le produit dun polynme de degr n, xGn1 , par Gn ; si bn dnote le coecient de Gn dans le dveloppement de xGn1 , le produit scalaire considr se rduit : (xGn1 , Gn ) = bn (Gn , Gn ) = 0.

5.4

Zros de Gn

Les zros de Gn appartiennent I et sont tous simples. Pour le prouver, je suppose que Gn nadmette dans I que p < n racines, toutes simples et je montre que jaboutis une contradiction. Je forme le polynme de degr p < n qui admet ces mmes racines. Le produit scalaire (Gn , ) doit tre nul puisque deg() < n ; or ce produit scalaire est en fait lintgrale : (Gn , ) = w(x)(x)Gn (x)dx

An_Num

53

qui ne peut tre nulle, puisque lintgrant garde un signe constant dans I . En eet, le produit Gn admet les racines de Gn (ou de ) comme racines doubles et ne peut changer de signe lorsque x traverse lune 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 par labsurde calqu sur le prcdent, je suppose, au contraire, que Gn admet, dans I , n 2 racines simples et une racine double. Je prends alors pour le polynme de degr n 2 qui admet les mmes racines simples que Gn . Lintgrale qui exprime le produit scalaire (, Gn ) 0 ne peut sannuler, parce que lintgrant garde un signe constant dans I . Je pourrais gnraliser ce raisonnement en dnissant comme le polynme de degr < n, qui admet comme racines tous les zros dordre impair de Gn .

5.5

Relation de rcurrence
n Gn+1 (x) = (n x + n )Gn (x) n Gn1 (x).

Je vais montrer lexistence dune relation de rcurrence, de la forme :

o les n , n , n , n sont des constantes. Soit ck le coecient de xk dans Gk (terme de plus haut degr) ; on pose an = cn+1 /cn . Je considre le polynme F = Gn+1 an xGn : il est de degr n au plus et peut donc sexprimer comme une combinaison linaire des Gi , i < n + 1 :
n

F =
0

bj Gj .

Formons le produit scalaire (F, Gp ) = (Gn+1 , Gp ) an (xGn , Gp ) = an (xGn , Gp ), condition que p < n + 1. De plus, lexamen de lintgrale qui dnit (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. Jai ainsi montr que F tait orthogonal Gp , 0 p n 2. Le dveloppement de F scrit alors : F = Gn+1 an xGn = bn Gn + bn1 Gn1 et Gn+1 = (an x + bn )Gn + bn1 Gn1 . Cette relation est bien de la forme annonce, condition de choisir n = 1 et n = bn . En manipulant cette relation laide des proprits dorthogonalit, on montre que an > 0 et bn > 0. En posant G1 = 0, je dnis compltement les Gn .

5.6

Disposition des zros de Gn

Thorme. Les zros de Gk sparent ceux de Gk+1 . Ce rsultat est vrai pour G0 et G1 ; il se dmontre par rcurrence dans le cas gnral. On peut dire aussi que la suite de Gn forme une suite de Sturm.

5.7

quation direntielle pour Gn

On peut montrer que chaque Gk obit une quation direntielle du second ordre. Il est plus facile de dmontrer une rciproque partielle. Soit lquation direntielle : A(x)y + B (x)y + Cn y = 0,

An_Num

54

o Cn est une constante (avec Cn = Cp si n = p), A(x) et B (x) deux fonctions rgulires de x. Supposons que lquation admette une solution polynmiale y = Gn (x) de degr n pour chaque valeur 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 lments. En eet, Gn et Gp satisfont sparment lquation propose : AGn + BGn + Cn Gn = 0, AGp + BGp + Cp Gp = 0. Je multiplie la premire relation par wGp , la seconde par wGn et je retranche membre membre ; il vient Aw(Gn Gp Gp Gn ) + Bw(Gn Gp Gp Gn ) + w(Cp Cn )Gn Gp = 0 quation qui scrit encore : [Aw(Gn Gp Gp Gn )] + [wB (wA) ](Gn Gp Gp Gn ) + w(Cp Cn )Gn Gp = 0. Je considre lquation direntielle u(x)B (x) (u(x)A(x)) = 0 ; jappelle encore w(x) la solution qui obit aux conditions aux limites Aw|a = Aw|b = 0, ce qui dnit la fonction inconnue w(x). En intgrant terme terme lquation (1), avec cette dnition de w, jobtiens :
b

(Cp Cn )
a

wGn Gp dx = 0,

ce qui signie que les polynmes Gn sont orthogonaux sur lintervalle I par rapport la fonction de poids w.

5.8

Fonction gnratrice

On peut en gnral trouver une fonction g (u, x) telle que lon puisse crire : g (u, x) =
k=0

Ck Gk (x)uk

les Ck tant des constantes et u une variable relle auxiliaire. Si la fonction g a une forme analytique simple par rapport u et x, on lappelle la fonction gnratrice de la suite des Gk .

5.9

Formule dOlinde Rodrigues

Les Gk sont proportionnels la drive dordre k dune fonction Uk (x) (formule dOlinde Rodrigues) : 1 dn Gn (x) = Un (x) w dxn laquelle est solution dun problme direntiel : dn+1 1 dn Un [ ]=0 dxn+1 W dxn avec les conditions aux limites U = U = U = ..... = U (n1) = 0 en x = a et x = b.

An_Num

55

5.10

Identit de Darboux-Christofel
n

Une dmonstration plutt laborieuse permet dtablir lidentit de Darboux-Christofel : Gk (x)Gk (y ) =


k=0

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

souvent utilise pour simplier des expressions impliquant les Gn (la constante an a t dnie au 5).

5.11

Polynmes de Legendre

Les polynmes de Legendre (dj rencontrs 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 les puissances 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 polynme Pk a le degr et la parit de k . En intgrant par partie dans la relation dorthogonalit (Pk , Pl ) = 0, on dmontre une relation dOlinde Rodrigues : Pn (x) = 1 dn 2 (x 1)n 2n n! dxn

avec Pn (1) = 1. Avec ces dnitions, les Pn ne sont pas normaliss 1 mais (Pn , Pn ) = 2/(2n +1). Ils admettent la fonction gnratrice : g (ux) = do lon tire la relation de rcurrence : (n + 1)Pn+1 (2n + 1)xPn + nPn1 = 0. Les polynmes de Legendre obissent lquation direntielle : (x2 1)Pn + 2xPn n(n + 1)Pn = 0. 1 = Pk (x)uk 1 2ux + u2 k=0

An_Num

56

5.12

Polynmes de Hermite

170 130 90 50 10 30 70 110 150 2.0 polynomes de Hermite, n = 1,2,3,4

1.6

1.2

0.8

0.4

0.4

0.8

1.2

1.6

2.0

Les polynmes de Hermite sont orthogonaux sur lintervalle : [, +], par rapport la fonction de poids : w(x) = exp(x2 ). Ils satisfont la relation de rcurrence : Hn+1 2xHn + 2nHn1 = 0 et lquation direntielle : Hn 2xHn + 2nHn = 0. Ils peuvent se dduire de la fonction gnratrice : g (u, x) = exp(2ux u2 ) =
k

Hk (x)uk /k !

On connat aussi une formule de Rodrigues : Hn = (1)n exp(x2 ) dn exp(x2 ). dxn

Les polynmes dHermite admette une reprsentation gnrale assez simple :


n/2

Hn =
0

1 1 1 (2x)n2p ( )p 2 p! (n 2p)!

et les premiers reprsentants de lespce scrivent H0 = 1 ; H1 = 2 x ; H2 = 4x2 2 ; ; H3 = 8x3 12x;

H4 = 16x4 48x2 + 12

H5 = 32x5 160x3 + 120x.

Vous pouvez constater que Hk a la parit de k .

An_Num

57

5.13

Polynmes de Laguerre
1 x dn e ex xn , n! dxn

On peut les dnir partir dune formule dOlinde Rodrigues : Ln (x) =

qui me permet dcrire les premiers membres de la suite : L0 = 1 ; L1 = x + 1 ; L2 = 1 2 (x 4x + 2) 2 ; L3 = 1 (x3 + 9x2 18x + 6). 6

Ces polynmes admettent la fonction gnratrice : 1 xt exp 1t 1t et la relation de rcurrence : (n + 1)Ln+1 + (x 2n 1)Ln + nLn1 = 0. Ils satisfont lquation direntielle : xLn + (1 x)Ln + nLn = 0. Ces polynmes sont orthogonaux sur [0, ] par rapport la fonction de poids w = ex ; ils sont normaliss un : (Ln , Ln ) = 1. Grce au programme ci-dessous, jai calcul et trac les premiers polynmes de Laguerre.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 // polynomes de L a g u e r r e // ( n+1)L_{n+1} + ( x 2n 1)L_n + nL_{n 1} = 0 function f n = L( n , x ) i f n == 0 , f n = 1 , end i f n == 1 , f n = 1 x , end if n > 1 k = 1 ; Lavder = 1 ; Lder = 1 x ; while k < n L = ( ( 2 k + 1 x ) . Lder k Lavder ) / ( k +1); Lavder = Lder ; Lder = L ; k = k+1; end fn = L ; end endfunction x = 0:0.1:6; xset ( "window" , 0 ) , xbasc ( 0 ) plot2d ( x , [ L ( 2 , x ) ,L ( 3 , x ) ,L ( 4 , x ) ,L ( 5 , x ) ] ) xsegs ( [ 0 , 6 ] , [ 0 , 0 ] ) xset ( " f o n t s i z e " , 3 ) xstring ( 2 , 6 , " polynomes de Laguerre , n = 1 , 2 , 3 , 4 " )

=
k=0

Lk (x)tk .

An_Num

58

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

5 0 1 2 3 4 5 6

5.14

Polynmes de Tschebychef
Tn (x) = cos[narccos(x)].

Ces polynmes admettent la dnition simple :

On obtient une relation de rcurrence entre Tn1 , Tn et Tn+1 en calculant cos[(n 1)x] : Tn+1 (x) + Tn1 (x) = 2xTn (x). Jen dduis les expressions des premiers polynmes T0 = 1 ; T1 = x ; T2 = 2x2 1 ; T3 = 4x3 3x;

T4 = 8x4 8x2 + 1. Les Tn obissent lquation direntielle (1 x2 )Tn xTn + n2 Tn = 0. Ils sont orthogonaux sur lintervalle [-1,1] par rapport la fonction de poids w= Leur fonction gnratrice scrit g (x, u) = 1 ux = 1 2ux + u2

1 . 1 x2

uk Tk (x)
k=0

5.15

Autres polynmes classiques

Voici les dnitions de certaines suites moins frquemment rencontres.

An_Num

59

5.15.1

Jacobi

I = [1, 1] ; w = (1 x) (1 x) ; , > -1 Les polynmes de Jacobi recouvrent plusieurs cas particuliers intressants : polynmes de Legendre, pour = = 0, polynmes de Tschebychef de premire espce ( = = - 1/2), de deuxime espce ( = = 1/2), de troisime espce ( = - = -1/2), de quatrime espce ( = - = 1/2) et polynmes de Gegenbauer ( = = - 1/2).

5.15.2

Laguerre gnralis

I = [0, ] ; w = x et ; > 1. Les polynmes de Laguerre habituels sont obtenus en faisant = 0 dans la dnition des polynmes gnraliss.

5.15.3

Fonctions de Legendre associes


m2 u=0 1 x2

Elles sont rgies par lquation direntielle suivante, o m est un entier infrieur ou gal n (1 x2 )u 2xu + n(n + 1)

qui se rduit lquation direntielle dnissant les polynmes de Legendre habituels quand m m = 0. La solution rgulire est u(x) = Pn (x) et on peut montrer que
m Pn (x) = (1 x2 )m/2

dm Pn (x). dxm

p Pn est un polynme en x lorsque m est pair. En posant x = cos , je met lquation direntielle sous une forme qui apparat souvent dans les problmes symtrie sphrique

1 d sin d

sin

dv d

+ n(n + 1)

m2 v = 0. sin2

Les premires fonctions de Legendre associs scrivent


1 P1 = 1 P3 =

1 x2 = sin

1 P2 = 3x 1 x 2

2 P2 = 3(1 x2 ) = 3 sin2

3 (5x2 1) 1 x2 2

2 P3 = 15x(1 x2 )

3 P3 = 15x(1 x2 )3/2 .

Chapitre 6

Drivation et Intgration numriques


6.1 Introduction

Dans ce chapitre, je mintresse au calcul numrique de la drive en un point dune fonction et au calcul (numrique) de lintgrale dune fonction sur un intervalle donn. Pour lune ou lautre tche, il est bon de traiter sparment le cas dune fonction dnie analytiquement (par une formule) et le cas dune fonction dnie numriquement (par une table de valeurs).

6.2
6.2.1

Drive dune fonction analytique


Thorme de Taylor

Je considre une fonction f dnie par une formule ou un algorithme, drivable dans un intervalle. Cette fonction est trop complique pour que le calcul analytique de sa drive soit pratique, mais je souhaite pourtant connatre la valeur numrique de f (x). Le procd le plus simple sinspire de la dnition mme de la drive. Soit f(x) la fonction driver, je sais que : f (x + h) f (x) f . = h Comment faut-il choisir h ? Ce paramtre doit tre plus grand que le plus petit rel reprsentable (environ 1038 en simple prcision), sinon le calcul sarrte et la machine ache Division par Zro !. h doit aussi tre assez grand pour que f (x) et f (x + h) soit reconnus comme dirents (107 en simple prcision). Je suppose que h est assez grand pour tre labri des erreurs darrondi. Il faut maintenant viter de tomber de Charybde en Scylla, et garder h assez petit pour que les erreurs de troncation soient ngligeables. Ces dernires sont faciles estimer. Je peux crire une version exacte de la formule prcdente, daprs le thorme de Taylor : f = f (x + h) f (x) h + f (x + h); 0 1. h 2

Vous voyez que lerreur est O(h), ou encore que la formule est du premier ordre : elle est exacte pour une fonction linaire. En faisant un petit eort dimagination, je peux construire une formule plus prcise, mais qui ne me cotera aucun travail supplmentaire (mme nombre dvaluations de la fonction f ). Appliquons deux fois le thorme de Taylor, pour les points x h et x + h : f (x + h) = f (x) + hf (x) + f (x h) = f (x) hf (x) + 60
h2 2 f h2 2 f

(x) + O(h3 ) (x) + O(h3 )

An_Num

61

Grce la parit des termes en h2 , ceux-ci disparaissent de la dirence terme terme des deux lignes prcdentes : f (x + h) f (x h) f (x) = + O(h2 ). 2h Les erreurs darrondi sont les mmes que prcdemment, mais lerreur de troncation est maintenant en h2 , la formule est exacte pour les fonctions quadratiques. Exemple. On a extrait dune table les valeurs suivantes : x 0.159 0.160 0.161 ln x -1.83885 -1.83258 -1.82635 f (0.161) f (0.160) = 6.23 ; 0.001 Quelle est la valeur exacte ? f (0.161) f (0.159) = 6.25. 0.002

et on demande de calculer la drive de ln x en 0.160. Jai trouv

6.2.2

Mthode des coecients indtermins

La mthode des coecients indtermins permet de retrouver trs facilement les formules dapproximation des drives, sans toutefois donner dindications sur le terme derreur. Je cherche trois nombres a , a0 et a+ tels que lexpression suivante soit aussi exacte que possible : f (x) = a+ f (x + h) + a0 f (x) + a f (x h). Je vais imposer trois conditions : la relation devra tre vrie pour f = x0 , x1 , et x2 (les trois premires puissances de x). Ceci scrit : 0 = a+ + a0 + a , 1 = a+ (x + h) + a0 x + a (x h), 2x = a+ (x + h)2 + a0 x2 + a (x h)2 . Ce systme de trois quations linaires trois inconnues se rsout facilement. Compte tenu de la premire quation, la deuxime scrit : 1/h = a+ + a0 a . Tenant compte de deux premires, la dernire quation devient : 0 = a+ + a . Do je tire facilement a0 = 0, a+ = a = 1/2h. Lheureuse disparition de certains termes dans les quations prcdentes ne doit rien au hasard. Ces relations doivent tre vries quel que soit x : il faut donc que x ne gure pas dans le systme qui dtermine les coecients a. Jaurais donc pu partir dune valeur particulirement commode de x, comme x = 0. Avec lhabitude, on peut gagner encore un peu de temps en posant h = 1 et en restaurant h la n : f a les dimensions de f /h. Vous pourrez tablir dautres formules, en nombre limit uniquement par votre patience. Certaines impliqueront un grand nombre de valeurs de f , pour une erreur de troncation moindre, dautres pourront tre dissymtriques, pour sapprocher sans danger dune discontinuit : on peut, par exemple, calculer f0 en fonction de f0 , f1 et f2 . Elles sobtiennent par la mthode des coecients indtermins, par le thorme de Taylor ou partir des dirences latrales (voir plus loin).

An_Num

62

De faon analogue, jobtiens une approximation de la drive seconde en appliquant deux fois les rgles prcdentes. Ainsi : hf (x) = f (x) f (x h) = f (x + h) 2f (x) + f (x h) . h

Le terme derreur sobtient aisment laide du thorme de McLaurin : il dpend de h2 f . Exemple. La drive seconde de ln x, au point 0.160, vaut, daprs les donnes prcdentes, -40.

6.2.3

Polynme dinterpolation

Il existe une autre mthode systmatique pour construire des formules dapproximation de f : il sut de driver un polynme dinterpolation de f . Je vous rappelle la formule de Newton impliquant les dirences latrales : P (x0 + hm) = f0 + mf0 + dont la drive (par rapport x = x0 + hm) est : P (x0 + hm) = Au point x0 (m = 0), je trouve : P0 = 1 1 f0 2 f0 + (1/3)3 f0 . h 2 1 1 f0 + (2m 1)2 f0 + . h 2 m(m 1) 2 f0 + 2

On peut obtenir les drives dordre suprieur par cette mthode et pas mal dalgbre.

6.2.4

Acclration de la convergence

Lextrapolation de Richardson permet damliorer la prcision dune approximation en nutilisant quune connaissance qualitative du terme derreur. Je commence par estimer la drive de f avec un pas h : f (x + h) f (x h) h2 f (x) + f (1 ) f1 + C1 h2 , = 2h 3 puis avec un pas 2h : f (x) = h2 f (x + 2h) f (x 2h) + 4 f (2 ) f2 + 4C2 h2 . 4h 3

une certaine approximation, je peux considrer que C1 = C2 , si bien quen ajoutant 4 fois la premire quation loppose de la seconde, jobtiens : f = (4f1 f2 )/3 = f1 + (f1 f2 )/3 apparemment sans terme derreur. En ralit, lerreur de troncation na pas disparue, mais elle est maintenant dun ordre plus lev (lequel ?). Lextrapolation de Richardson peut sappliquer chaque fois que lon utilise une approximation dpendant dun paramtre lequel tend de faon continue vers zro et condition de connatre lexpression du terme principal de lerreur.

An_Num

63

6.3

Drive dune fonction empirique

Je peux avoir calculer la drive dune fonction dnie par une table de valeurs, soit quelle ait t calcule par quelquun dautre, soit quelle rsulte de mesures exprimentales. Les mthodes prcdentes se rvlent tre malcommodes dans ce cas. Dune part, le pas h est maintenant impos et nest pas forcment adapt au but que je poursuis. De plus, les entres dans la table ne sont pas forcment quidistantes. Dautre part (et l, je pense surtout des rsultats exprimentaux), les invitables erreurs de mesures vont tre amplies par la division par h (qui est petit). Considrez en eet deux entres successives prises dans une table de rsultats exprimentaux : variable indpendante xk xk+1 variable dpendante yk + bk yk+1 + bk+1

Jai suppos que les valeurs de x taient connues sans erreur, alors que les valeurs de y taient entaches dune erreur alatoire (un bruit) b. Une valeur approche de la drive est alors : yk+1 yk bk+1 bk y + . = xk+1 xk xk+1 xk La premire fraction est la drive cherche ; sa valeur dpend peu de la dirence xk+1 xk (tant que lon respecte les contraintes exposes au dbut de ce chapitre). La deuxime fraction est une uctuation alatoire dautant plus grande que lintervalle tabulaire est petit, tant que les valeurs succesives de b ne sont pas corrles. Une premire manire dviter ces dicults consiste construire un polynme dinterpolation sappuyant sur les points xm , xm+1 , . . . , x0 , . . . , xm . En supposant que cest f0 qui mintresse, je nai plus qu driver ce polynme. Le polynme de Lagrange ou la fonction spline, avec 2 4 pivots, donnent de bons rsultats. Une autre mthode consiste construire un polynme dapproximation au sens des moindres carrs, puis driver cette expression. Pour des abscisses quidistantes, le polynme et ses drives ont des expressions simples (on parle souvent de polynmes de Golay). Cest la mthode que je recommande.

6.4

Intgration numrique : gnralits

Je regarde maintenant vers le calcul numrique dintgrales (on dit aussi quadrature numrique). Il importe de distinguer le cas de lintgrale dnie :
b

I=
a

f (x)dx

o je cherche un nombre I connaissant un intervalle [a, b] et la fonction f , de celui de lintgrale indnie : x J (x) =
a

f (x)dx

o je calcule en fait une suite de nombres, reprsentant la fonction J (x). Ce dernier cas est gnralement abord comme un problme direntiel : J = f (x); J (a) = 0. et ceux-ci seront traits au chapitre suivant. Je vais donc chercher approcher numriquement une intgrale dnie. Toutes les mthodes que jenvisagerai peuvent scrire sous la forme la forme :
b n

I=
a

f (x)dx =
1

Hj f (xj ) + E

An_Num

64

o E est lerreur de troncation, les xj des abscisses (pivots ou noeuds) et les Hj des poids. Je dcrirai deux sortes dalgorithmes. Pour une premire classe (Newton-Cotes), les pivots sont quidistants et les poids sont les seuls paramtres ajustables ; comme il y en a n, je pourrai satisfaire n contraintes et rendre la mthode exacte pour un polynme de degr n 1. Dans une deuxime classe (Gauss), les pivots et les poids seront considrs comme ajustables ; le choix de ces 2n paramtres nous permettra de rendre la mthode exacte pour un polynme de degr 2n 1. videmment, les mthodes de Gauss sont plus performantes que celles de Newton-Cotes, puisquelles permettent une prcision plus grande pour un mme temps de calcul, au pris dune thorie plus complique et dune programmation un peu plus lourde.

6.5

Mthodes de Newton-Cotes

Comme je ne sais pas intgrer analytiquement la fonction f , je la remplace par un polynme dinterpolation dont lintgration est banale. Jappelle h lintervalle entre pivots. Les diverses mthodes de ce groupe se distinguent par le choix des pivots dans lintervalle dintgration, suppos ni.

6.5.1

Intervalle ferm

Je vais calculer lintgrale 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 polynme dinterpolation de Lagrange construit sur les pivots xj , 0 j n, scrit :


n

p(x) =
0

Lj (x)f (xj )

o Lj (x) reprsente un polynme lmentaire de Lagrange. Lintgrale de p(x) est une approximation de I : n b I= f (x)dx Hj f j + E =
a b a 0

o jai pos fj = f (xj ), Hj = Lj (x)dx. Une dmonstration trop longue pour tre expose ici permet daboutir aux formules ci-dessous pour lerreur de troncation. Elles proviennent de lintgrale du terme derreur de la formule de Lagrange. Celle-ci contient un facteur f(n+1) ( ) ou f(n+2) ( ), o est une fonction inconnue de x. E= f (n+1) ( ) (n + 1)! f (n+2) ( ) E= (n + 2)!
n

u(u 1)(u 2) (u n)du, n impair,


0 n

u2 (u 1)(u 2) (u n)du, n pair.

Les nombres de Cotes Hj ont t calculs une fois pour toutes pour n 10. Les formules de Newton-Cotes les plus courantes sont rsumes ci-dessous, avec la notation : Hj = hAWj . C est le coecient de hk+1 f (k) dans le terme derreur, o k = n + 1 si n est impair et k = n + 2 si n est pair. n 1 2 3 4 A 1/2 1/3 3/8 2/45 W0 1 1 1 7 W1 1 4 3 32 W2 1 3 12 W3 W4 C -1/12 -1/90 -3/80 -8/945 trapzes Simpson Simpson Villarceau

1 32

An_Num

65

Ces formules se dmontrent trs facilement par la mthode des coecients indtermins, condition de ne pas demander lexpression de lerreur. Je prends lexemple de la premire formule de Simpson. Je cherche trois nombres W0 , W1 et W2 tels que :
b

f (x)dx = W0 f (a) + W1 f (a + h) + W2 f (a + 2h)


a

o b = a + 2h. Cette relation doit tre exacte pour f = x0 , x1 et x2 , ce qui conduit au systme : 2h = W0 + W1 + W2 , 2ah + 2h2 = aW0 + (a + h)W1 + (a + 2h)W2 , (1/3)[6a2 h + 12ah2 + 8h3 ] = W0 a2 + W1 (a + h)2 + W2 (a + 2h)2 . En substituant la premire quation dans la seconde, puis les deux premires dans la troisime, je trouve : 2h = W0 + W1 + W2 , 2h = W1 + 2W2 , (8/3)h = W1 + 4W2 . systme dont la solution est : W0 = W2 = h/3, W1 = 4h/3. Ici encore, jaurais pu poser a = 0 ds le dbut, puisque les coecients doivent tre indpendants de labscisse initiale.

6.5.2

Intervalles ouverts

Il peut arriver que la fonction intgrer ne soit pas dnie pour lune des bornes de lintervalle dintgration (ou pour les deux) ou quelle y prsente une singularit quelconque. Il est alors souhaitable de ne pas sapprocher trop de cette limite, ce qui est impossible avec le dcoupage de lintervalle dintgration que jai choisi (x0 = a, xn = b). Il existe des formules de quadrature dites ouvertes (parce quelles impliquent des intervalles ouverts) qui nutilisent pas les valeurs de la fonction aux bornes. Elles scrivent en gnral :
b n1

I=
a

f (x)dx =
1

Hj f (xj ) + E

o les bornes x0 et xn ne gurent pas. La formule ouvertes la plus courante, que jappellerai formule du point milieu, par analogie avec le terme anglais, est dnie (avec les notations prcdentes) par n = 2, A = 2 et W1 = 1, soit encore :
a+2h

I=
a

f (x)dx = 2hf [(a + b)/2] + (h3 /24)f ( ).

6.5.3

Formules composes

Que faire si la prcision dune intgrale numrique me parat insusante ? Une premire possibilit consiste choisir une formule dintgration dordre plus lev. Comme dans le cas de linterpolation polynmiale, cette solution est rejeter, et pour les mmes raisons : lorsque lordre n devient grand (quand le degr du polynme que lon intgre en lieu et place de la fonction devient grand), le terme derreur peut avoir un comportement anarchique en fonction de . La bonne mthode est semblable celle utilise pour linterpolation spline : dcouper lintervalle dintgration en plusieurs sous-intervalles et utiliser une mthode dordre peu lev dans chaque sous-intervalle. Comme la borne droite du sous-intervalle de rang p concide avec la limite gauche du sous-intervalle de rang p + 1, je vais conomiser un certain nombre dvaluations de la fonction.

An_Num

66

Je divise par exemple lintervalle global [a, b] en m sous intervalles et japplique la mthode de Newton ferme dordre un dans chaque sous-intervalle. Il vient :
b

I=
a

f (x)dx = (h/2)[f0 + f1 + f1 + f2 + + fm2 + fm1 + fm1 + fm ].

Jaboutis ainsi la formule compose (ou composite ou encore tendue) de Newton-Cotes dordre 1 (souvent appele encore mthode des trapzes) :
b

I=
a

f (x) = h[f0 /2 + f1 + f2 + + fm2 + fm1 + fm /2] + E

o tous les termes intrieurs ont doubl. Lapplication du thorme de la moyenne montrerait que E = (h2 /12)(b a)f ( ), x0 xm . Dans la pratique, on programme ce calcul de faon itrative. Supposez que je connaisse I (m), calcule avec m sous-intervalles, mais que la prcision me paraisse encore insusante. Je calcule alors I (2m) partir de I (m) et des seules nouvelles valeurs de f , aux points intermdiaires, dabscisses (i + 1/2)h. Je recommence tant que le critre de convergence nest pas atteint. Quel critre darrt vais-je choisir ? Ce peut tre la condition que la variation relative de lintgrale dune tape lautre est infrieure un seuil choisi lavance : |[I (m + 1) I (m)]/I (m)| . On opre de la mme manire avec les formules de Newton-Cotes ouvertes. Cependant, doubler le nombre dintervalles napporte aucune conomie, puisque ceux-ci ne comportent aucun pivot commun. Je vous suggre de vrier quil faut tripler le nombre dintervalles chaque itration pour conomiser des calculs. Il est possible de combiner une formule de Newton-Cotes ouverte avec m 1 formules fermes : ceci pourrait servir viter une rgion dangereuse autour de x = a. Comme les termes derreur de toutes les mthode de Newton-Cotes sont connus, il est tentant damliorer la prcision dune quadrature, sans trop deort, par lextrapolation de Richardson. En ralit, cela se fait rarement, car on connat une gnralisation puissante de lextrapolation de Richardson : cest la mthode de Romberg que je vais dcrire dans le paragraphe suivant. Exemple. On demande de calculer lintgrale de 1/x de 1 3 avec deux puis quatre sousintervalles, par la mthode des trapzes. Je trouve : m=2: m=4: 1 1 I2 = (1) (1) + 1/2 + (1/3) = 7/6 = 1, 166666...; 2 2

1 1 I4 = (1/2) (1) + 2/3 + 1/2 + 2/5 + (1/3) = 67/60 = 1, 116666... 2 2 La formule de Richardson donne : I = I4 +(1/3)(I4 I2 ) = 11/10 = 1, 1, soit une erreur relative un peu suprieure 1/1000.

6.6

Mthode de Romberg

Jutilise la notation Ik,0 = valeur approche de I , calcule par la mthode des trapzes en utilisant m = 2k sous-intervalles. En utilisant une expression du terme derreur plus prcise que celle mentionne (et non dmontre) au paragraphe prcdent, je pourrais crire

Ik,0 = I
j =1

ba 2k

2j

An_Num

67

Si je rpte le mme calcul avec des intervalles deux fois plus nombreux et deux fois plus petits, jai 2j ba j k+1 Ik+1,0 = I . 2 j =1 Comme pour une extrapolation de Richardson, je forme :

Ik,1 = 4Ik+1,0 Ik,0 = 3I


j =2

ba 2k

2j

1 + 4/22j .

Je viens de gagner un ordre dans le dveloppement de lerreur en fonction des puissances de (b a). Le procd se gnralise aisment. Je construis un tableau triangulaire dont la premire colonne est forme des Ik,0 , la deuxime des Ik,1 et dont le terme gnral scrit : 4m Ik+1,m Ik,m . 4m 1 Le gros du travail est eectu lors du calcul des Ik,0 , puisque cest ce moment-l que je calcule la fonction complique f ; la suite nest quune srie de combinaison linaires. Si k K , alors le dernier lment de la diagonale principale, IK,K , est la meilleure approximation de I que lon puisse obtenir en valuant 2K fois f . Jai crit le programme prsent ci-dessous pour mettre en oeuvre lalgorithme de Romberg. Je commence par remplir la premire colonne dun tableau J(l,c) par des valeurs calcules selon la mthode des trapzes. Vous pouvez constater qu chaque tape je ne calcule que les valeurs strictement ncessaires de la fonction. Je garnis ensuite les autres colonnes selon la formule de Romberg. Ik,m+1 =
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 // romberg function y = f n ( x ) y = exp ( x ) . cos ( x ) endfunction lmax = 5 ; a = 0 ; b = %p i ; h = b a; J ( 1 ,1 ) = 0.5 h( fn ( a ) + fn (b ) ) ; f o r l = 2 : lmax h = h/2; x = a+h : 2 h : bh ; d i = h sum ( f n ( x ) ) J ( l , 1 ) = 0 . 5 J ( l 1) + d i ; end f o r c = 2 : lmax f o r l = c : lmax J ( l , c ) = ( ( 4 ^ ( c 1)) J ( l , c 1) J ( l 1 , c 1))/(4^( c 1) 1); end end J Jex = (exp(% p i )+1)/2

La valeur exacte est (e + 1)/2 = 12.070346 ; voici les rsultats obtenus : 34.778519 17.389259 13.336023 12.382162 12.148004 0. - 11.59284 - 11.984944 - 12.064209 - 12.069951 0. 0. - 12.011084 - 12.069493 - 12.070334 0. 0. 0. - 12.07042 - 12.070347 0. 0. 0. 0. - 12.070347

An_Num Au prix de quelques oprations arithmtiques, lerreur nale est passe de 7 102 106 .

68

6.7

Intgration de Gauss

Jabandonne maintenant lhypothse que les pivots sont rgulirement rpartis sur laxe ; je cherche au contraire les rpartir au mieux pour avoir un algorithme aussi exact que possible. Jaurais toujours
b n 1

I=
a

f (x)dx =

pj f (aj ) + E.

Ici, la mthode des coecients indtermins est assez malcommode ; lorsque jimpose que la formule ci-dessus soit exacte pour x0 , x1 , . . . , xk , . . ., jobtiens un systme dquations non-linaires ( en aj ) ds que k > 1, systme dont la solution est en gnral inaccessible. Je vais plutt utiliser un raisonnement indirect, partir du polynme dinterpolation de Hermite. La formule dinterpolation de Hermite scrit :
n n

f (x) =
1

hj (x)f (aj ) +
1

2 h j (x)f (aj ) + [ (x)]

f 2n ( ) . (2n)!

Le terme derreur disparat si f est un polynme de degr 2n 1 au plus. Jintgre terme terme cette relation entre les abscisses a et b :
b n n

I=
a

f (x)dx =
1

Hj f (aj ) +
1

Hj f (aj ) + E

o Hj et Hj sont respectivement les intgrales de hj (x) et de h j (x) entre les mmes bornes. Cette formule dintgration est exacte pour tout polynme de degr infrieur 2n : cest le mieux que je puisse faire avec les 2n paramtres Hj , aj . Pour obtenir la forme annonce, il faut que les Hj soient tous nuls. Comment parvenir ce rsultat ? Les seuls paramtres dont je dispose sont les aj . Je dois donc choisir ces nombres de telle manire que lintgrale de h j soit nulle. Je vous rappelle la forme de ce polynme (tablie dans le 2 chapitre 2) : h j (x) = (x aj )[Lj (x)] , si Lj est le polynme lmentaire de Lagrange construit sur les {aj }. En utilisant une fois la relation Lj = (x)/((x aj ) (aj )), jobtiens Hj = b a

(x aj )[Lj (x)]2 =
a

(x)

Lj (x) dx. (aj )

Je veux que cette intgrale soit nulle ; autrement dit, je veux que les polynmes (x) et Lj (x) soient orthogonaux sur le segment [a, b] par rapport la fonction de poids w 1. Vous savez que (x) (dni en 2.5) est le produit de tous les termes de la forme x aj : (x) est dni (implicitement) par lensemble de ses zros. Il doit tre orthogonal aux Lj , polynmes lmentaires de Lagrange pour n pivots, donc de degr n 1. Plutt que dimposer cette condition particulire, je vais imposer une condition plus gnrale : devra tre orthogonal tout polynme de degr n 1 ou infrieur. Je vous laisse le soin de dmontrer la proposition rciproque et jadmets que la condition ncessaire et susante pour que la formule de Gauss soit valable est que (x) soit orthogonal tout polynme de degr infrieur, pour une fonction de poids gale lunit, sur [a, b]. A quelques dtails prs, vous connaissez des polynmes rpondant cette dnition : ce sont les polynmes de Legendre. Pour que lidentication soit parfaite, il faut ramener lintervalle dintgration [-1, 1] et, si lon veut tre trs soigneux, normaliser correctement (x). Le changement 1 de variable x = 1 2 (a + b) 2 (a b)t permet dintgrer sur [-1,1] :
b

I=
a

f (x)dx =

1 (b a) 2

f (t)dt.
1

An_Num

69

Si maintenant je choisis comme pivots aj les zros du polynme de Legendre de degr n, (x) concidera, un facteur constant prs, avec ce polynme ; sur le segment [-1, 1] il sera donc orthogonal tout polynme de degr infrieur, et en particulier aux Lj (x). Il reste calculer les poids, partir de lexpression des hj (x). On montre assez facilement que
1

Hk =
1

[Lk (x)]2 .

do lon dduit que Hk =

Lk (x)dx.
1

Il existe des tables des arguments et des poids pour lintgration 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 mme intgrale quau paragraphe prcdent, avec trois pivots. Les tables donnent : aj 0 0.774597 Hj 8/9 5/9 Le changement de variable y = x 2 transforme lintervalle [1,3] en [-1,1] et lintgrant en 1/(y +2). Un calcul lmentaire donne alors I = 1.098039, pour une erreur relative un peu suprieure 5.104 .

6.8

Gnralisations

En choisissant un autre intervalle dintgration et une autre fonction de poids, on peut construire de nouvelles formules dintgration de type gaussien. Je sais par exemple que les polynmes de Laguerre sont orthogonaux sur [0, ] par rapport la fonction de poids ex . Je peux donc crire :
n

e
0

f (x)dx =
1

Wj f (aj ) + E,

o les aj sont les zros du polynme de Laguerre dordre n et les Wj des poids calculables facilement. Chaque famille de polynmes orthogonaux donne ainsi naissance une formule dintgration. Il ne faut pas sempresser de conclure que lon peut intgrer nimporte quelle fonction entre zro et linni, au prix du calcul des valeurs de f en quelques points. Par ailleurs, aucun algorithme numrique ne pourra transformer une intgrale divergente en intgrale convergente. Jcris quelques formules pour prciser la question.

g (x)dx =
0 x 0

ex [ex g (x)]dx =
0

ex f (x)dx

o f = e g ; ces relations nont rien danormal, mais cest lorsque je tenterai dappliquer la formule de Gauss-Laguerre f que les problmes apparatront. Si g ne dcrot pas assez vite linni, le terme derreur, en f (2n) , deviendra rapidement intolrable. Que faire si la prcision sur lintgrale obtenue par la mthode de Gauss est insusante ? Il existe ici encore deux possibilits : utiliser une formule dordre suprieure ou employer une mthode compose. Comme dhabitude, la premire solution est rejeter. La seconde est assez simple mettre en oeuvre. Je divise lintervalle [a, b] en m sous-intervalles, [xm , xm+1 ]. Pour chaque sous-intervalle, je fait un changement de variable qui ramne les bornes -1,1 et jemploie une formule de Gauss dordre peu lev. Comme aucun pivot ne concide avec les bords des intervalles, on nconomise aucun calcul, la dirence des mthodes de Newton fermes. Cependant, la prcision est largement suprieure ce que lon obtient avec Newton-Cotes ; de plus, lexistence de discontinuits en a ou b est peu gnante, puisque ces points ne sont pas des pivots.

An_Num

70

6.9

Intgrales gnralises

Une intgrale gnralise est mathmatiquement bien dnie ; lennui, cest que lordinateur ne le sait pas. Par exemple, le calcul analytique de

J=
0

xn ex dx

est facile, mais, par dnition, un algorithme comporte un nombre ni doprations. Comment alors intgrer numriquement jusqu + ? Vous connaissez une rponse dans ce cas particulier : on peut employer la mthode de Gauss-Laguerre. Pour un intgrant quelconque, je peux calculer certaines intgrales gnralises en faisant un changement de variable astucieux. Si a > 0, je peux crire :
1/a

f (x)dx =
a 0

1 1 f ( )dt. t2 t

Un changement de variable analogue est valable pour a < 0. Il peut aussi arriver quun mme changement de variable soit malcommode sur lensemble de lintervalle dintgration : 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 disparatre cette singularit intgrable :
b ba

f (x)dx =
a 0

2tf (a + t2 )dt.

6.10

Intgrales multiples

Jexamine, pour xer les ides, le cas dune intgrale double ; je cherche lintgrale de f (x, y ) dans un domaine D. Les valeurs extrmes de x dans D sont x1 et x2 ; pour une valeur donne de x, les valeurs extrmes de y sont y1 (x) et y2 (x). Jintgre dabord par rapport y , puis par rapport x:
x2 y2 (x)

J=

f (x, y )dxdy =
x1

dx
y1 (x)

f (x, y )dy

Ayant fait le choix dune mthode numrique pour calculer lintgrale en y , je peux programmer une fonction dont la valeur sera : y
2

I (x) =
y1

f (x, y )dy

o les bornes y1 et y2 dpendent de x. Je suis maintenant capable de calculer lintgrale de I (x) :


x2

J=
x1

I (x)dx

On remarque que la suite logique des oprations dans lordinateur est linverse de celle qui vient dtre dcrite. Le programme dintgration en x choisit les pivots dont il a besoin ; pour chaque pivot, il appelle I (x), qui dcide pour son propre compte des valeurs de y utiliser. Lensemble est en gnral plus prcis que le calcul a priori de f (x, y ) sur un quadrillage rgulier de points, suivi dintgrations. Dernire remarque : si lon utilise un sous-programme dintgration (trapze par exemple), qui sera appel aussi bien pour calculer I (x) que J , il faut prendre garde ne pas laisser croire au programme que lon utilise une procdure rcursive, sappelant elle-mme.

Chapitre 7

Problmes direntiels conditions initiales


7.1 Introduction

Beaucoup de phnomnes physiques ou chimiques se traduisent mathmatiquement par une ou plusieurs quations direntielles. Dautre part, les cours de mathmatiques sont riches de mthodes analytiques de rsolution des quations direntielles : on pourrait croire que lanalyse numrique est inutile dans cette partie des mathmatiques. La ralit est tout autre : seule une inme minorit des quations direntielles est analytiquement soluble, particulirement les quations linaires. A mesure que lon scarte des problmes scolaires pour sapprocher des questions relles, les quations direntielles deviennent de moins en moins linaires et de moins en moins solubles. Exemple : le pendule simple dont le mouvement est dcrit, en labsence de frottement par lquation exacte : y + k 2 sin y = 0. Dans le domaine des quations direntielles, on distingue deux types de problmes bien dirents. Les problmes condition(s) initiale(s) (ou de Cauchy ), dont un exemple scrit : y = f (x, y ) ; y (a) = Ya ; x a, (7.1)

et les problmes aux limites, comme par exemple : y = g (x, y, y ) ; y (a) = A ; y (b) = B ; a x b.

Dans ce chapitre, je ne considre que la premire catgorie, les problmes condition(s) initiale(s), que lon rencontre aussi bien en mcanique quen cintique chimique. Il est aussi important de bien faire la dirence entre quation direntielle et problme diffrentiel. La premire admet diverses solutions, dpendant de paramtres qui sont les conditions initiales ; on peut parfois la dterminer analytiquement, mais jamais numriquement. Le second a une seule solution et cest lobjet de ce chapitre que dexpliquer comment on peut la calculer numriquement. Toutes les mthodes de rsolution numrique des problmes direntiels utilisent une discrtisation. Ayant fait choix dun pas h, on va calculer la solution y pour les valeurs kh de la variable indpendante, yk = y (kh) et y0 = y (a). Les divers algorithmes se distinguent par les informations quils utilisent pour calculer yk : certains emploient yk1 uniquement (on parle de mthode pas spars), dautres utilisent un certain nombre de valeurs prcdentes de y , dont yk1 (ce sont les mthodes pas lis ou pas multiples).

71

An_Num

72

Je supposerai presque toujours que lquation direntielle rsoudre est du premier ordre et quelle est rsolue en y ; en gnral, jappelle x la variable indpendante. Il arrive que lquation direntielle ne soit pas rsoluble en y : on parle alors de problme algbrodirentiel, dont ltude sort du cadre de ce cours. Lhypothse dun problme du premier ordre peut paratre fort loigne de la ralit ; cest tout fait vrai, mais ce nest pas trop grave, comme vous allez le voir. Toute quation direntielle dordre suprieur un peut scrire comme un systme direntiel dordre un. Soit par exemple lquation du second ordre : y = g (x, y, y ). (7.2)

Jintroduis la variable auxiliaire z = y ; je peux maintenant crire lquation prcdente sous la forme quivalente z = g (x, y, z ), (7.3) y = z. Je suis maintenant confront un systme dquations direntielles (ou systme direntiel) du premier ordre. Plus gnralement, un systme direntiel du premier ordre deux fonctions inconnues scrit : z = g (x, y, z ), (7.4) y = h(x, y, z ). Dans le cas prcdent, la fonction h se rduisait la variable z . Si jintroduis deux vecteurs : r = {y, z } et s = {h, g }, le systme ci-dessus prend la forme : r = s(x, r). (7.5)

Cette criture est commode car elle permet dobtenir sans peine un algorithme de rsolution dun systme direntiel : il sut de transposer en notation vectorielle lalgorithme valable pour une quation direntielle (du premier ordre). Les ouvrages classiques danalyse numrique dveloppent largement les thories relatives la rsolution des problmes direntiels une fonction inconnue, mais sont discrets quant aux systmes direntiels ; je suivrai cet exemple et jadmettrai que les algorithmes dvelopps pour une fonction inconnue sont encore valables pour plusieurs fonctions. Avant daborder les algorithmes purement numriques, je passe en revue quelques mthodes analytiques qui peuvent servir des calculs numriques.

7.2
7.2.1

Mthodes analytiques
Dveloppement de Taylor

Je cherche la solution du problme direntiel classique y = f (x, y ), y (a) = ya . Le thorme de Taylor ore, au moins en principe, une solution 1 1 y (x) = y (a) + (x a)y (a) + (x a)2 y (a) + (x a)3 y (a) + .... 2 6 Je connais y (a) (condition initiale), y (a) (par substitution dans lquation direntielle), y (a) et toutes les drives dordre suprieur (par drivation et substitution dans lquation direntielle !). Ainsi : y = [f (x, y )] = fx + f fy , (7.6) o fx , fy reprsentent les drives partielles de f par rapport aux variables indiques. Ensuite : y
2 = fxx + 2f fxy + f 2 fyy + fx fy + f fy .

La mthode est simple mais devient rapidement laborieuse. De plus, jai montr (chapitre 1, Calcul et trac de fonctions) que le dveloppement de Taylor pouvait converger trs lentement. En consquence, cette mthode ne semploie que localement : pour calculer yn+1 partir de yn ou pour calculer, laide des conditions initiales, les premires valeurs de y dont certains algorithmes ont besoin pour dmarrer et calculer la suite des yk .

An_Num

73

7.2.2

Mthode des coecients indtermins (Frobenius)


y = c0 + c1 x + c2 x2 + c3 x3 +

Je fais lhypothse que y peut scrire :

et donc que :

y = c1 + 2c2 x + 3c3 x2 +

En substituant ces dveloppements dans lquation direntielle, jobtiens des relations entre coecients ci , que je rsous de proche en proche, partir de c0 = ya . Ayant un certain nombre de coecients, il est simple de calculer y , une certaine prcision. Cette mthode est aussi assez laborieuse.

7.2.3

Mthode de Picard, ou dapproximations successives

Je me propose toujours de rsoudre le problme de Cauchy (7.1). Jintgre les deux membres de lquation direntielle, entre a et x (en renommant u la variable indpendante) :
x x

y du = y (x) y (a) =
a a

f (u, y )du

Je ne sais bien sr pas calculer lintgrale du second membre (ce qui reviendrait savoir rsoudre lquation direntielle), aussi vais-je procder une approximation brutale : je remplace y par une approximation dordre zro, y [0] , que je prends gale ya ; lintgrale est alors calculable en principe ; le rsultat me donne lapproximation suivante de y , soit y [1] : y [1] = y (a) +
a x

f (u, y [0] )du

Jitre ce procd, jusqu ce quun critre de convergence convenable soit atteint : y [n] = y (a) +
a x

f (u, y [n1] )du.

Cette mthode est peut-tre encore plus lente que les prcdentes ! Depuis quelques annes, on trouve dans le commerce des programmes de manipulation algbrique (DERIVE, MAPLE, MATHEMATICA, MACSYMA, MUPAD, etc.) fonctionnant sur microordinateurs et capables de faire seuls les calculs algbriques des trois mthodes prcdentes. Il est prvoir que ces algorithmes vont connatre de ce fait une nouvelle jeunesse. Jaborde maintenant les mthodes vritablement orientes vers lanalyse numrique, en commenant par un cas dcole.

7.3
7.3.1

Mthode dEuler et mthodes de Taylor


Algorithme dEuler

La mthode dEuler nest jamais employe en pratique (sauf peut-tre comme constituant dune mthode de rsolution dquations aux drives partielles), mais cest un excellent exemple introductif, gnralisable dans plusieurs directions intressantes. Lalgorithme propos par Euler pour rsoudre (7.1) scrit : yn+1 = yn + hf (xn , yn ) = yn + hfn . (7.7) Je peux donner trois interprtations de cette formule. * Approximation de la drive. La drive de y au point xn est peu prs yn en crivant quelle vaut fn , je retrouve la mthode dEuler. (yn+1 yn )/h ;

An_Num * Approximation dune intgrale. Jintgre les deux membres de lquation (7.1) :
xn+1

74

y (xn+1 ) y (xn ) = yn+1 yn =


xn

f [t, , y (t)]dt

Je remplace lintgrale du second membre par son approximation la plus simple, laire dun rectangle de base h et de hauteur fn , ce qui donne : yn+1 yn = hfn . * Dveloppement de Taylor. Supposant connu yn , je peux dterminer yn+1 laide du thorme de Taylor : y (xn + h) = y (xn ) + hyn + O(h2 ). En ngligeant le terme derreur et en identiant y et f , je retrouve la formule dEuler. Je termine par un rsum des caractristiques de la mthode dEuler. Pour calculer yn+1 , jutilise la valeur de yn et pas celles de yn1 , yn2 , ... Il sagit donc dune mthode pas spars. Pour passer de yn yn+1 , je ne calcule f quune fois (Les mthodes de Runge-Kutta qui seront exposes plus loin utilisent plusieurs valeurs de f pour amliorer la prcision sur y ). Lalgorithme ne fait appel qu f = y et pas ses drives dordre suprieur (Certains algorithmes sappuient sur un dveloppement de Taylor, et donc sur y [n] , qui dpend des drives de f ). La programmation de lalgorithme dEuler est des plus simples. Voici une bauche de programme. Lire h, x0 , y0 , xmax Initialiser x x0 , y y0 Tant que x < xmax faire : calculer f = f(x,y) y := y + hf x := x + h imprimer x, y La gnralisation un systme direntiel est immdiate, en principe. La fonction inconnue, sa valeur initiale et le second membre sont maintenant remplacs 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 + hf x := x + h imprimer x, y Il faut traiter sur un pied dgalit toutes les coordonnes de chaque vecteur. Exemple Le programme ci-dessous rsout, par la mthode dEuler, lquation direntielle du pendule simple : y + sin y = 0. Comme jai pos y = z , je rsous en fait le systme du premier ordre quivalent y = z, z = sin y.

An_Num

75

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

// mouvement du p e n d u l e par E u l e r function F = smy ( t , y , z ) F = z; endfunction function F = smz ( t , y , z ) F = sin ( y ) ; endfunction function [ yf , z f , t f ] = e u l e r ( h , t i , y i , z i ) y f = y i + h smy ( t i , y i , z i ) ; z f = z i + h smz ( t i , y i , z i ) ; tf = ti + h; endfunction np = 6 0 0 ; t = zeros ( np , 1 ) ; y = zeros ( t ) ; z = zeros ( t ) ; y0 = input ( p o s i t i o n i n i t i a l e : ) ; z0 = input ( v i t e s s e i n i t i a l e : ) ; pas = input ( l o n g u e u r du pas : ) ; t ( 1 ) = 0 ; y ( 1 ) = y0 ; z ( 1 ) = z0 ; f o r i = 2 : np do [ y ( i ) , z ( i ) , t ( i ) ] = e u l e r ( pas , t ( i 1) , y ( i 1) , z ( i 1 ) ) ; end 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 inutilement compliqus : ils contiennent par exemple la variable indpendante (t), sans objet ici, mais ils peuvent sadapter facilement au cas dun pendule soumis un couple dpendant du temps. Vous pouvez vrier que yf,zf sont calculs indpendamment lun de lautre, avant incrmentation du temps.Le programme principal ne fait que lire les paramtres et appeler euler chaque tour dans la boucle.
0.4 "D:/an/an_poly-6/pdl_eul.dta"

0.3

0.2

0.1

-0.1

-0.2

-0.3

-0.4

-0.5 0 5 10 15 20 25 30

Fig. 7.1 : Mouvement du pendule simple obtenu par lalgorithme dEuler. Le pas tait de 0,05.

An_Num

76

La gure montre le rsultat de lexcution. Comme vous pouvez le constater, la qualit de la mthode laisse dsirer : lamplitude augmente nettement avec le temps. Remarque sur la programmation sous Scilab Scilab nest pas un langage de programmation trs structur ; en particulier, il nest pas ncessaire de dclarer les variables avant de les utiliser. Cependant, on gagne un peu de temps lexcution si lon dclare lavance les tableaux, avec leurs dimensions. Si on ne le fait pas, Scilab agrandit les tableaux chaque fois que ncessaire.

7.3.2

Mthodes de Taylor

Comme je lai indiqu au 2.1, la mthode dEuler peut tre considre comme une application, lordre 1, du dveloppement de Taylor. Jai aussi montr comment lon pouvait utiliser un dveloppement dordre suprieur ((7.6). Je rappelle quil faut calculer, jusqu lordre souhait, les drives de y, par les relations de rcurrence : y = f (x, y ) ; y = fx (x, y ) + fy (x, y )f f (1) ,

(k1) (k1) f (k) = fx + fy f,

puis dduire yi+1 par : yi+1 = yi + h f (xi , yi ) + . . . + hp1 (p1) f (xi , yi ) p!

Cet algorithme nest intressant que si les f (k) se calculent facilement.

7.3.3

Erreurs, prcision, stabilit

Je nai pas la prtention de construire la solution exacte du problme direntiel grce lalgorithme dEuler ; le rsultat du calcul pratique, soit yn , est en ralit entach derreurs dont il faut bien comprendre la nature. Je suppose dabord que je peux calculer avec un trs grand nombre de chires signicatifs. Le rsultat yn ne serait pas pour autant exact : il a en eet t obtenu laide dune approximation. A laide de lune des interprtations donnes ci-dessus de lalgorithme dEuler, je pourrais borner lerreur commise en passant de yk yk+1 (erreur locale de troncation), puis estimer lerreur de troncation globale qui spare yn de la solution exacte value en xn : tn = yn y (xn ). Jimagine maintenant que je dispose dun algorithme exact capable de calculer yn sans erreur de troncation. Le rsultat a cependant t obtenu par une succession doprations arithmtiques, sur une machine comportant un nombre limit de chires signicatifs : il prsente donc une certaine erreur darrondi : en = yn y (xn ). En pratique, les deux sources derreur coexistent. Nous ne dvelopperons pas ici ltude des erreurs. Le problme trait fournit parfois lui-mme le moyen de contrler la qualit de lalgorithme. Cest le cas en particulier pour les problmes de mcanique sans frottement, pour lesquels lnergie est conserve. Il sut alors de calculer priodiquement lnergie du systme : si la variation dnergie dpasse le seuil prvu, on rejette les dernires itrations et on reprend le calcul avec un pas plus petit.

An_Num

77

Une autre proprit importante dun algorithme de rsolution dquations direntielles est la stabilit. Dans le cas de lalgorithme dEuler, il est facile dapprcier la stabilit en tudiant un problme modle. Je considre le problme direntiel : y = y ; y (0) = 1. Ici, f y et lalgorithme dEuler snonce : yn+1 = yn + hyn = (1 + h)yn . Il sagit dune relation de rcurrence (on dit aussi une quation aux dirences) pour yn+1 . Comme y0 = 1, je trouve : yn = (1 + h)n . Vous voyez que yn croit indniment pour tout h > 0 : on dit quil ny a pas stabilit absolue. Par contre, lalgorithme est relativement stable, cest dire que yn /y 1 pour h 0. Pour le montrer, il sut 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 uniformment dcroissant (comme la solution exacte) que si |1+ hc| < 1. Comme c = |c|, cela implique h < 2/|c|.

7.4

Mthodes de Runge-Kutta

Les mthodes que nous allons dcrire dans ce paragraphe peuvent tre considres comme des gnralisations de celle dEuler, o lon calcule f (le second membre) plusieurs fois par pas, pour rduire lerreur de troncation. Ce sont aussi probablement les mthodes les plus employes dans la pratique. Nous exposerons la thorie pour une mthode dordre 2, bien que les applications fassent gnralement appel des mthodes dordre 4 ou plus.

7.4.1

Mthodes dordre 2

Je cherche toujours la solution du problme reprsent par (7.1) en supposant connue la solution numrique approche yn au point xn = x0 + nh. Pour cela, je vais construire une fonction incrment (xn , yn , h) telle que : yn+1 yn = h(xn , yn , h). Cette fonction dpend aussi du second membre f . Soit dautre part la solution exacte z (t) du problme direntiel : z (t) = f [t, z (t)] ; z (x) = y. En termes imags, z (t) est la solution de lquation direntielle qui passe par le point de coordonnes x et y ; x et y sont ici considrs comme arbitraires mais constants. Lincrment exact est dni 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 lapproximation, cest lerreur locale de troncation de la mthode. Je souhaite bien sr que tende vers 0 avec h, ce qui est quivalent la condition :
h0

lim (x, y, h) = f (x, y )

On dit que la mthode est cohrente si cette condition est vrie dans tout le domaine de variation de x. De plus, on dit que la mthode est dordre p si (x, y, h) = O(hp ).

An_Num

78

Je vais chercher, dans le cas dune mthode dordre 2, une expression de qui concide avec jusquaux termes en h2 compris. Je suppose (comme lon fait Runge et Kutta il y a presque un sicle) que est de la forme : (x, y, h) = a1 f (x, y ) + a2 f [x + p1 h, y + p2 hf (x, y )] o les quantits a1 , a2 , p1 et p2 sont des constantes dterminer. Il me sut dimposer que le dveloppement de Taylor de , lordre 2 en h, concide avec celui de au mme ordre. Ils scrivent 1 = f (x, y ) + h(fx + f fy ) + O(h2 ), 2 = (a1 + a2 )f + ha2 p1 fx + ha2 p2 f fy + O(h2 ). a1 + a2 = 1, a2 p1 = 1/2, a2 p2 = 1/2. Do trois conditions remplir :

Je dispose de quatre paramtres inconnus ; il est dusage de conserver un paramtre libre et de dterminer les trois autres laide des relations ci-dessus ; la dernire quantit sera ajuste aprs pour obtenir une proprit dsirable de lalgorithme (bonne stabilit, erreur darrondi faible....). Je choisis de conserver a2 , rebaptis pour la circonstance : a1 = 1 , a2 = , p1 = p2 = 2. Jobtiens ainsi une mthode de Runge-Kutta dordre 2 caractrise par la fonction incrment : (x, y, h) = (1 )f (x, y ) + f [x + h h ,y + f (x, y )]. 2 2

Parmi toutes les valeurs possibles de , deux cas sont rests dans lhistoire : = 1/2 (on parle alors de mthode de Heun ou dEuler amliore) et = 1 (mthode dEuler modie). Vous vriez facilement que ces algorithmes scrivent : = 1/2 ; et =1 ; 1 yn+1 = yn + hf (xn , yn ) + f [xn + h, yn + hf (xn , yn )] 2 1 yn+1 = yn + hf [xn + h/2, yn + hf (xn , yn )]. 2 (7.8)

(7.9)

7.4.2

Exemple.

Je reprends le problme du pendule simple. Il me sut de remplacer, dans le programme prcdent, la function euler par une function rk2.
1 2 3 4 5 6 7 8 9 10 // mouvement du p e n d u l e par RK2 function F = smy ( t , y , z ) F = z; endfunction function F = smz ( t , y , z ) F = sin ( y ) ; endfunction function [ yf , z f , t f ] = rk2 ( h , t i , y i , z i ) y f = y i + 0 . 5 h ( smy ( t i , y i , z i )+smy ( t i+h , y i+h smy ( t i , y i , z i ) , z i+h smz ( t i , y i , z i ) ) ) ; z f = z i + 0 . 5 h ( smz ( t i , y i , z i )+smz ( t i+h , y i+h smy ( t i , y i , z i ) , z i+h smz ( t i , y i , z i ) ) ) ;

An_Num

79

11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

tf = ti + h; endfunction np = 6 0 0 ; t = zeros ( np , 1 ) ; y = zeros ( t ) ; z = zeros ( t ) ; y0 = input ( p o s i t i o n i n i t i a l e : ) ; z0 = input ( v i t e s s e i n i t i a l e : ) ; pas = input ( l o n g u e u r du pas : ) ; t ( 1 ) = 0 ; y ( 1 ) = y0 ; z ( 1 ) = z0 ; f o r i = 2 : np do [ y ( i ) , z ( i ) , t ( i ) ] = rk2 ( pas , t ( i 1) , y ( i 1) , z ( i 1 ) ) ; end xset ( "window" , 0 ) plot2d ( t , y ) xset ( "window" , 1 ) plot2d ( y , z ) ep = 1 cos ( y ) ; ec = 0.5 z . z ; xset ( "window" , 2 ) plot2d ( t , [ ep , ec , ( ep+ec ep (1) e c ( 1 ) ) 1 0 0 0 ] )

Il est clair que ce sous-programme est encore inutilement compliqu. Sachant que smy y , je pourrais 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 gnrale que lon simplie ensuite. La gure 2 montre la loi du mouvement produite par cet algorithme. Vous pouvez constater que, cette fois, lamplitude reste constante, malgr une valeur initiale trs grande (presqugale ). Dans ces conditions, le pendule est un systme mcanique non-linaire, dont le mouvement nest plus sinusodal ni isochrone. Jai ajout la n du programme une reprsentation du mouvement dans le plan de phase (y , z , fentre 1) et un graphique des nergies (fentre 2).
4 c:/an_poly-6/pdl_rk2.dta

-1

-2

-3

-4 0 10 20 30 40 50 60 70 80

Fig. 7.2 : Mouvement du pendule calcul par la mthode RK2. Le pas tait de 0,05.

An_Num

80

7.5

Mthode dordre 4

Je ne vais pas tablir ici les formules de Runge-Kutta dordre 3 ou 4 ou plus : en eet, la longueur des calculs crot trs rapidement avec n. La mthode dordre 4 est la plus connue ; elle scrit yn+1 = yn + avec : k1 = f (xn , yn ), h hk2 k3 = f (xn + , yn + ), 2 2 k4 = f (xn + h, yn + hk3 ). h (k1 + 2k2 + 2k3 + k4 ), 6 (7.10)

h hk1 k2 = f (xn + , yn + ), 2 2

Remarque : Certains auteurs incorporent le facteur h dans la dnition des ki , ce qui le fait disparatre des arguments de la fonction f .

7.5.1

Exemple

Je traite nouveau le pendule, en remplaant function rk2 par function rk4, selon le listing ci-dessous
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 // mouvement du p e n d u l e par RK4 function F = smy ( t , y , z ) F = z; endfunction function F = smz ( t , y , z ) F = sin ( y ) ; endfunction function [ yf , z f , t f ] = rk4 ( h , t i , y i , z i ) k1y = smy ( t i , y i , z i ) ; k1z = smz ( t i , y i , z i ) ; k2y = smy ( t i+h / 2 , y i+h k1y / 2 , z i+h k1z / 2 ) ; k2z = smz ( t i+h / 2 , y i+h k1y / 2 , z i+h k1z / 2 ) ; k3y = smy ( t i+h / 2 , y i+h k2y / 2 , z i+h k2z / 2 ) ; k3z = smz ( t i+h / 2 , y i+h k2y / 2 , z i+h k2z / 2 ) ; k4y = smy ( t i+h , y i+h k3y , z i+h k3z ) ; k4z = smz ( t i+h , y i+h k3y , z i+h k3z ) ; y f = y i + ( h / 6 ) ( k1y + 2 k2y + 2 k3y + k4y ) ; z f = z i + ( h / 6 ) ( k1z + 2 k2z + 2 k3z + k4z ) ; t f = t i+h ; endfunction np = 6 0 0 ; t = zeros ( np , 1 ) ; y = zeros ( t ) ; z = zeros ( t ) ; y0 = input ( p o s i t i o n i n i t i a l e : ) ; z0 = input ( v i t e s s e i n i t i a l e : ) ; pas = input ( l o n g u e u r du pas : ) ; t ( 1 ) = 0 ; y ( 1 ) = y0 ; z ( 1 ) = z0 ; f o r i = 2 : np do [ y ( i ) , z ( i ) , t ( i ) ] = rk4 ( pas , t ( i 1) , y ( i 1) , z ( i 1 ) ) ; end plot2d ( t , y )

An_Num

81

On peut fait les mmes remarques quau paragraphe 7.4 propos des simplications possibles de la fonction smy. Lespace mmoire disponible avec Scilab est en gnral confortable, nettement plus grand que lespace utilisable sous Pascal. On peut aussi laugmenter, si la valeur par dfaut est trop faible (fonction stacksize). Si je programmais en Pascal ou en C, jviterais de dnir des tableaux t,y,z. Jcrirais au contraire tous les rsultats intermdiaires dans un chier sur disque.

7.5.2

Avantages et inconvnients de mthodes de Runge-Kutta

La mthode RK4 se distingue par sa simplicit de mise en oeuvre ; je la recommande dailleurs pour tous les problmes courants. Elle ne requiert que quatre valuations de f par pas. On peut amliorer aisment la prcision des calculs (si le langage et le compilateur le permettent) en calculant = aj kj en double prcision, car cest l que se produisent la plupart des erreurs darrondi. Lalgorithme de Runge-Kutta soure de deux inconvnients lis. On ne dispose daucune indication sur lerreur de troncation en cours de calcul. Dautre part, il y a des problmes de stabilit ds que le second membre est grand ou rapidement variable. Une mthode simple (mais coteuse) de surveillance de la prcision consiste conduire deux calculs simultanment, lun avec le pas h, lautre avec le pas h/2. Tant que la distance entre les deux rsultats reste infrieure un certain seuil, on admet que le rsultat est valable. Si le seuil est franchi, il faut rejeter la (ou les) dernire(s) valeur(s) calcule(s) et repartir avec un pas plus petit. Il existe des algorithmes plus rans (qui portent les noms de Runge-Kutta-Fehlberg ou mthodes de Runge-Kutta embotes). Dans ce type de mthode, on calcule, par exemple, six fois f par pas ; on combinant bien les rsultats, on obtient une estimation prcise de yn+1 ; une autre combinaison des mmes valeurs fournit une estimation de lerreur. La seule dicult rside dans la forme complique des coecients qui remplacent les aj et bj , mais lordinateur nen a cure.

7.5.3

Organisation dun programme

Il est commode de construire le programme de rsolution sous une forme bien hirarchise, qui permette de changer commodment dalgorithme et dquation. Le sous-programme de niveau le plus bas fait avancer la solution de xn xn+1 ; cest lui qui renferme les dtails de lalgorithme. Ce noyau de niveau zro est englob dans un sous-programme qui gre la surveillance de lerreur (quand elle existe). Avec un pas h, on calcule yn+1 et une estimation n+1 de lerreur locale de troncation ; si celle-ci est infrieure au seuil, le pas est accept ; sinon, on rejette le dernier rsultat, on diminue le pas et on recommence. Cet ensemble est son tour inclus dans un sous-programme qui conduit lintgration de xmin xmax et prend en charge le stockage des rsultats intermdiaires. Celui-ci est un peu dlicat si lon a aaire des pas de longueur variable : comment concilier cette dmarche avec lenregistrement des rsultats pour des abscisses peu prs rgulirement rparties ? Il est frquent, quelque soit lalgorithme dintgration, que lon doive utiliser un pas assez petit, ce qui conduit calculer de nombreuses valeurs de xn , alors quon ne peut ou ne veut conserver quun petit nombre de valeurs (pour les tracs par exemple). On peut concilier ces deux exigences en ne conservant quune valeur de x toutes les p. La couche extrieure du programme est spcique de lapplication ; elle est destine la lecture des paramtres et des valeurs initiales, lachage des rsultats. Les seconds membres sont en gnral dnis dans un sous-programme spcial.

7.6

Algorithme de prdiction-correction

Les mthodes de Runge-Kutta posent parfois des problmes de stabilit ou de prcision. Je vais maintenant dcrire des mthodes plus stables et gnralement plus prcises ; le prix payer pour ces amliorations sera une structure plus complique de lalgorithme.

An_Num

82

7.6.1

Prdiction

Je vais dtailler un algorithme lmentaire de prdiction-correction, en commenant par la partie la plus simple, lalgorithme de prdiction. Je cherche la solution du problme direntiel (7.1). La variable indpendante x sera discrtise avec un pas h. En reprenant lune des interprtations de la mthode dEuler, je remplace y par une forme approche, mais plus prcise que celle utilise au 1 : f (x + h) f (x h) h2 y = f ( ) 2h 6 soit, en reportant dans lquation direntielle : yn+1 = yn1 + 2hfn + h3 f ( ). 3

partir de cette relation exacte, jobtiens une mthode dintgration en ngligeant le terme derreur (qui me fournira lerreur locale de troncation) : yn+1 = yn1 + 2hfn . (7.11)

Par ailleurs, vous pourrez montrer sans peine que si lon intgre terme terme lquation direntielle et que lon remplace lintgrale de f (x, y ) par son approximation dite du point milieu, on retrouve le mme algorithme. Lamorage du calcul suppose connus y0 et y1 , que lon obtient par Taylor ou Runge-Kutta dordre 2 ou encore par Euler. La gure 3 illustre cet algorithme.
6 5 4 3 2 1 0 1.0
3

Y^[P]

0.6

0.2

0.2

0.6

1.0

1.4

1.8

2.2

2.6

3.0

f[x,y(x)]

x[n1]
1 1.0 0.6 0.2 0.2

x[n]
0.6 1.0

x[n+1]
1.4 1.8 2.2 2.6 3.0

Fig. 7.3 : tape de prdiction. Laire du rectangle vert est une approximation de laire hachure ; [P ] on lajoute yn1 pour obtenir yn+1

7.6.2

Correction

La partie correction est plus subtile. Cette fois, jintgre (de faon approche) lquation direntielle entre xn et xn+1 (remarquez les nouvelles limites) par la mthode des trapzes et je trouve h3 1 yn+1 = yn + h(fn + fn+1 ) y ( ). 2 12

An_Num

83

Comme prcdemment, je nglige le terme derreur pour obtenir une mthode dintgration du problme direntiel : 1 yn+1 = yn + h(fn+1 + fn ). (7.12) 2 Cette mthode est stable et prcise. Elle soure cependant dun petit dfaut : elle est inapplicable en ltat. En eet, la relation ci-dessus est une quation implicite en yn+1 , puisque cette quantit gure dans fn+1 . Il serait dommage dchouer si prs du but ; en ralit, je peux trs bien rsoudre lquation en yn+1 par approximations successives, condition de connatre une valeur initiale y [0] . Il sut dappliquer la mthode du point xe 1 [k+1] [k ] yn+1 = yn + h[f (xn , yn ) + f (xn+1 , yn+1 )] 2 jusqu ce quun critre de convergence convenable soit atteint. La dernire valeur calcule est retenue comme valeur de yn+1 . [0] Comment vais-je me procurer la valeur yn+1 ? Vous lavez devin : par la mthode de prdiction. Celle-ci est explicite : elle fournit une valeur approche de la solution, que jappelle maintenant la (P ) valeur prdite, yn+1 et cette valeur prdite servira amorcer litration du correcteur. Lalgorithme complet peut donc scrire : yn+1 = yn1 + 2hfn
[P ]

yn+1 = yn + (h/2)[fn + f (xn+1 , yn+1 )].

[C ]

[P ]

(7.13)

Litration du correcteur peut, en principe, tre rpte plusieurs fois. Cela savre inutile en [C ] gnral : en cas de dicults, il vaut mieux diminuer le pas. Dans tous les cas, yn+1 devient la valeur dnitive yn+1 . La gure 4 est une reprsentation graphique de ce calcul.
6 5 4 3 2 1 0 1.0 3 2 f[x,y^P] 1 0 x[n] 1 1.0 0.6 0.2 0.2 0.6 1.0 x[n+1] 1.4 1.8 2.2 2.6 3.0 0.6 0.2 0.2 0.6 1.0 1.4 1.8 2.2 2.6 3.0 Y^[C]

Fig. 7.4 : tape de correction. Laire du trapze bleu est une approximation de laire hachure ; [C ] on lajoute yn pour obtenir yn+1

7.6.3

Convergence du correcteur

On montre que si lquation direntielle obit la condition de Lipschitz et si h est assez petit, litration du correcteur converge. Plus prcisment, la condition de Lipschitz snonce ainsi.

An_Num 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.

84

La qualit de litration dpend de la valeur initiale y [0] ; il est recommand de choisir une formule de prdiction et une formule de correction prsentant des erreurs du mme ordre. On montre que, dans ce cas, une seule itration sut. Si la valeur initiale provient de la mthode dEuler (erreur en h2 ), il faudra au moins deux itrations. Exemple. Je rsous une fois de plus le problme du pendule simple, laide de lalgorithme de prdiction-correction. La fonction rk2 est remplac les trois sous-programmes pred, correc, pc. Il faut aussi modier le programme principal, pour utiliser les deux valeurs successives yi1 , yi pour calculer yi+1 .

7.6.4

Surveillance de lerreur

Une qualit importante des mthode de prdiction-correction est quelles permettent, sans calculs supplmentaires, une surveillance de lerreur de troncation. La solution exacte Yn+1 de lquation direntielle en xn+1 est relie la valeur prdite par la relation : Yn+1 = yn+1 +
[P ]

h3 y (p ). 3 h3 y (c ). 12

Si le correcteur converge, il dire de la solution exacte par son erreur de troncation : Yn+1 = yn+1
[C ]

Je dispose ainsi dun encadrement de Y et dune majoration de lerreur. Si je suppose en eet que p = c , je peux crire y = (12/5h3 )(y [C ] y [P ] )n+1 , do une estimation de lerreur de troncation au point n (pour le calcul de yn+1 ) : en = 1 [P ] (y y [C ] )n+1 5

Lutilisation de ce rsultat est vidente. A chaque pas, je calcule |en | ; si cette quantit est suprieure un seuil x lavance, je rejette ce pas, je diminue h et je repars. Je peux augmenter h si |en | est trs petit . [C ] Je pourrais aussi utiliser ma connaissance (approche) de lerreur pour amliorer yn+1 . Il sut de calculer : [c] modif yn = yn+1 + (1/5)(y [P ] y [C ] )n+1 . +1 Ce perfectionnement est peu employ, car il nuit la stabilit.

7.6.5

Formules dordre 4

En pratique, on utilise des mthodes du quatrime ordre. Elles peuvent tre obtenues de plusieurs faons : par la recette des coecients indtermins ou par intgration approche de lquation direntielle, comme je lai expliqu propos de la mthode dEuler. Si je remplace la fonction complique f par un polynme dinterpolation du second degr (parabole), jobtiendrai une mthode dordre 4. Je vais prsenter une catgorie particulire de mthodes, celles dAdams. Lalgorithme dAdamsBashforth est une mthode explicite dordre 4 qui scrit : yn+1 = yn + (h/24)(55fn 59fn1 + 37fn2 9fn3 ), (7.14)

An_Num

85

o, comme dhabitude, fn = f (xn , yn ) est la valeur du second membre au point xn . Cette quation [ va servir calculer la valeur prdite yn+1 P ]. Le terme derreur correspondant est : + 251 5 (5) h y 720 (7.15)

cette quation de prdiction, jassocie le correcteur dAdams-Moulton : yn+1 = yn + (h/24)(9fn+1 + 19fn 5fn1 + fn2 ). (7.16)

Il sagit encore une fois dune quation implicite pour yn+1 (qui gure dans fn+1 ). Lerreur de troncation scrit : 19 5 (5) h y . (7.17) 720 Il est encore possible destimer lerreur de troncation, et donc de la surveiller, partir de la dirence y [P ] y [C ] , qui vaut, daprs (7.15) et (7.17) : yn+1 yn+1 =
[P ] [C ]

3 5 (5) h y 8

Lalgorithme dAdams admet la reprsentation graphique prsente page suivante.

7.6.6

Dmarrage des mthodes de prdiction-correction

Tous les algorithmes de prdiction-correction utilisent plusieurs valeurs dj connues de la fonction pour calculer yn+1 (mthodes pas multiples ou lis). Ceci complique lamorage du calcul. Considrons le cas particulier de la mthode dAdams, qui ncessite quatre valeurs de y . La premire sera fournie par la condition initiale, mais les trois suivantes devront tre calcule par un algorithme indpendant : Taylor ou Runge-Kutta. Il est recommand dutiliser des formules du mme ordre que pour lalgorithme principal.

7.6.7

Avantages et inconvnients des mthodes pas multiples

Les mthodes de prdiction-correction sont trs apprcies des spcialistes, qui en ont pouss trs loin lanalyse thorique. Leur principal avantage est quelles permettent une estimation aise de lerreur de troncation. Leur stabilit est aussi renomme. Nous navons pas examin ce point, mais ltude du systme modle y = ky , montrerait que lalgorithme de correction est stable quelque soit h, alors lquation de prdiction peut tre instable (mais sans danger puisque elle ne sert qu fournir une valeur intermdiaire et locale). Les inconvnients des mthodes p-c sont dus la complexit de lalgorithme. Une mthode dordre 4 requiert, pour dmarrer, les 3 premires valeurs de y , lesquelles doivent tre obtenues sans "trop" derreur, par exemple par Runge-Kutta dordre 4. La modication du pas h nest pas aussi simple quon pourrait le croire. Si je maperois que lerreur de troncation lors du calcul de yn+1 est trop grande, je rejette cette valeur et et je divise h par 2. Le calcul peut-il repartir pour autant ? Pas tout de suite, car lvaluation de yn+1 demande la connaissance des 4 valeurs prcdentes de y ; or, je ne les connais que pour le pas h et non pour h/2. Il faut donc interpoler entre valeurs de y pour trouver les prcurseurs de yn+1 avec le pas h/2.

7.7

Mthodes pour les quations du second ordre

La physique fournit souvent des quations direntielles du second ordre o y ne gure pas. Cest le cas en mcanique classique (au moins pour les systmes un seul degr de libert) en labsence de frottement ; cest aussi le cas en mcanique quantique pour les problmes une dimension. Il existe plusieurs algorithmes spcialiss et bien adapts ce type de problme. Jen dcrirai deux.

An_Num

86

7.7.1

Algorithme de Verlet ou de saute-mouton


y = f (t, y ) (7.18)

Je note y (t) la fonction inconnue, solution de lquation direntielle particulire :

o la variable indpendante peut tre le temps. La mthode rsulte du remplacement de la drive seconde par une approximation bien connue 1 y |n = 2 [yn+1 2yn + yn1 ], h o lerreur de troncation est O(h2 ). Lalgorithme de Stoermer-Verlet scrit donc yn+1 = 2yn yn1 + h2 f (t, x). (7.19)

Par suite de la symtrie 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 = 1 [yn+1 yn1 ]. 2h

Cet algorithme jouit de plusieurs avantages. Il est rapide, la seule tape coteuse en temps tant le calcul du second membre, qui intervient une fois par pas. Le terme derreur est petit et une analyse plus dtaille montrerait que lnergie totale est conserve chaque pas, jusquaux termes en h2 . Il est de ce fait presque universellement employ pour les calculs de dynamique molculaire o lon doit suivre les trajectoires de milliers datomes simultanment. Les bonnes performances de la mthode de Verlet en mcanique classique tiennent la forme particulire des quations de la dynamique. Celles-ci scrivent, sous la forme donne par Hamilton p = H q ; q = H . p

(q est une coordonne gnralise et p une quantit de mouvement gnralise). Ce systme direntiel est particulier : cest la mme fonction (lnergie totale ou le hamiltonien H ) qui gure au second membre. Lalgorithme de Verlet respecte bien cette structure et on le qualie de symplectique (entrelac en grec).

7.7.2

Algorithme de Numerov

Cest un astronome russe (publiant vers 1935) que lon doit une mthode dintgration spcialement adapte aux quations de la mcanique cleste et qui porte son nom. Je cherche rsoudre lquation (7.18), mais avec une prcision bien suprieure celle permise par la mthode de Verlet. Lalgorithme de Numerov est une mthode de prdiction-correction. Je mintresse tous dabord la partie correction, que je vais traiter par la mthode des coecients indtermins. Je fais lhypothse que yn+1 peut sexprimer comme yn+1 = a0 yn + a1 yn1 + a2 yn2 + h2 b1 fn+1 + b0 fn + b1 fn1 + b2 fn2 ). Le coecient h2 est l pour que les bi soient des nombres sans dimensions. La prsence dun coecient b1 non nul indique quil sagit dune mthode implicite (yn+1 est donn en fonction de fn+1 qui dpend elle-mme de yn+1 ). Je dispose de sept paramtres inconnus {ai , bi } entre lesquels je vais imposer six relations ; jutiliserai la n les rsultats de Numerov pour lever lindtermination. Jimpose donc que la formule prcdente soit exacte pour y = 1, x, x2 , x3 , x4 et

An_Num

87

x5 . Comme dhabitude, je peux choisir x = 0, puisque les relations obtenues doivent tre vries quel que soit x. Il vient : 1 = a0 + a1 + a2 , h = h(a1 + 2a2 ), 2 h = h2 (a1 + 4a2 ) + 2h2 (b1 + b0 + b1 + b2 ), h 3 = h3 (a1 + 8a2 ) + 6h3 (b1 b1 2b2 ), h4 = h4 (a1 + 16a2 ) + 12h4 (b1 + b1 + 4b2 ), 5 h = h5 (a1 + 32a2 ) + 20h5 (b1 b1 8b2 ). Jexprime les coecients en fonction de a2 a0 = 2 + a2 , a1 = 1 2a2 , b1 = 1/12 , b0 = (10 a2 )/12, b1 = (1 10a2 )/12 , b2 = a2 /12. Selon Numerov, le choix a2 = 0 jouit de qualits intressantes : cest celui que je retiendrai. La formule dnitive (avec le terme derreur que je pourrais obtenir partir dun dveloppement de Taylor des yi ) scrit : yn+1 = 2yn yn1 + h2 h6 y (6) (c ) (fn+1 + 10fn + fn1 ) . 12 240 (7.20)

Pour tre complet, je cite la formule de prdiction tablie par Numerov, que vous pouvez dmontrer par la mme mthode des coecients indtermins : yn+1 = 2yn1 yn3 + 4h2 16h6 y (6) (p ) (fn + fn1 + fn2 ) + 3 240

Vous pourrez aussi trouver lerreur de troncation en fonction de y [P ] et de y [C ] . Je vais particulariser la formule de correction (la plus prcise et la plus stable) pour le cas dun problme linaire, o lquation direntielle devient : y = A(x)y + B (x). Cette hypothse entrane une simplication considrable, car le second membre est rsoluble en y et lquation de correction nest plus implicite. Je peux donc abandonner ltape de prdiction pour crire : yn+1 = 1 h2 [2 y y + [Bn+1 + 10(An yn + Bn ) + An1 yn1 + Bn1 )]. n n 1 2 12 1 h A n +1 12 (7.21)

Cet algorithme est facile programmer et donne de trs bon rsultats.

7.8

quations raides

Avant de terminer ce chapitre, je mentionne une dicult que lon rencontre aussi bien en cintique chimique quen dynamique des structures, sans orir de solution concrte. Certains problmes de cintique chimique ont pour expression mathmatique un systme direntiel de la forme : y = Ay + f (t) o y est un vecteur dont les n coordonnes reprsentent des concentrations, A une matrice carre constante dordre n et f le vecteur de seconds membres. Je suppose que les valeurs propres k de A soient relles et distinctes. Je connais alors la forme de la solution : y= ck exp(k t)zk + (t).

An_Num

88

Du point de vue numrique, il se posera un problme de stabilit chaque fois quune valeur propre sera ngative et le problme sera dautant plus aigu que les k seront plus dirents les uns des autres. En termes qualitatifs, il me faudra choisir un pas trs petit pour traiter correctement les dcroissances les plus rapides (grand ) mais, avec ce mme pas, il faudra un nombre immense ditrations pour voir voluer les dcroissances les plus lentes. On dit que le systme dquations direntielles est "raide". Un problme analogue se rencontre pour des systmes du second ordre y = Ay + f (t) comme on en trouve en mcanique des vibrations. Ici, lchelle de temps est en principe dnie par la priode du mouvement, mais il y a plusieurs priodes, puisque la matrice A a plusieurs valeurs propres, lesquelles peuvent tre trs direntes. Je serai encore une fois oblig de choisir un pas trs petit pour suivre le mouvement le plus rapide et, simultanment, de prolonger le calcul pour dcrire le mouvement le plus lent. Dans la pratique, la dicult est souvent accrue par la non-linarit des seconds membres. Seules des mthodes implicites sont assez stables pour traiter ce type de problmes. La convergence de la mthode ditration dcrite au 6 nest pas assure dans ce cas et il faut rsoudre lquation implicite du correcteur par une mthode de Newton.

Chapitre 8

Problmes direntiels conditions aux limites et problmes aux valeurs propres


8.1 Introduction

La physique fournit de nombreux exemples de problmes direntiels qui prennent un aspect assez dirent du problme de Cauchy (ou conditions initiales) examin dans le chapitre prcdent. Il sagit soit de problmes conditions aux limites, soit de problmes aux valeurs propres, les mthodes employes pour rsoudre ces deux types de question tant assez proches. Voici un exemple du premier type. Une poutre de longueur L, soumise une charge uniforme q (N/m) et une tension S chaque extrmit, se dforme verticalement ; jappelle w(x) le dplacement dun point de la poutre partir de lhorizontale. w obit lquation direntielle : w S 1 w= qx(x L), EI 2EI

o I est le moment dinertie de la section droite de la poutre et E le module dlasticit. Si la poutre repose sur des supports xes chaque extrmit, w doit aussi satisfaire aux conditions aux limites : w(0) = w(L) = 0. La rsolution est facile si les paramtres sont constants, mais une mthode numrique devient indispensable ds lors que la charge q ou les proprits (E, I ) de la poutre varient avec x. Ltude des mouvements priodiques dune corde vibrante de masse linque (x), soumise une tension T (x) fait apparatre un problme de valeurs propres. La dformation de la corde, y (x), obit lquation direntielle : [T (x)y ] + (2 )2 (x)y = 0, o est la frquence. y doit aussi respecter des conditions aux limites en x = 0 et x = L, comme par exemple y (0) = 0 (extrmit xe) ou y/x|L = 0 (extrmit libre). Le problme ainsi pos na de solution que pour certaines valeurs de (les frquences propres) ; les fonctions y correspondantes sont les fonctions propres. Il est facile de gnraliser les considrations prcdentes. Je suppose avoir aaire une quation rsolue en y , avec des conditions aux limites spares sur y (le cas de conditions sur y est trs semblable) : y = f (x, y, y ) ; y (a) = A ; y (b) = B ; a x b. 89

An_Num On rencontre rarement des conditions aux limites portant sur y et y : c0 y (a) + c1 y (a) = A ; d0 y (b) + d1 y (b) = B.

90

(Il peut en principe arriver quune condition concerne les deux extrmits simultanment : uy (a) + vy (b) = g , mais je nexaminerai pas ce cas). Les problmes conditions aux limites nont pas toujours de solution ; ils peuvent aussi en avoir plusieurs, un comportement que lquation direntielle trs simple w +w =0 illustre bien. La solution gnrale scrit w = c1 cos(x) + c2 sin(x). Selon les conditions aux limites choisies, le problme direntiel a une, une innit ou zro solution : w(0) = 0 w(0) = 0 w(0) = 0 w(/2) = 1 w( ) = 0 w( ) = 1 w = sin x une solution w = c1 sin x innit de solutions aucune solution

Il est nanmoins possible, moyennant diverses hypothses restrictives sur f et sur les conditions aux limites, de dmontrer lexistence et lunicit de la solution du problme direntiel conditions aux limites.

8.2
8.2.1

La mthode du tir
Problme aux limites
y = f (x, y, y ) ; y (a) = A ; y (b) = B. (8.1)

Soit rsoudre le problme direntiel conditions aux limites :

Jassocie ce premier problme un problme valeurs initiales : w = f (x, w, w ) ; w(a) = A ; w (a) = s (8.2)

qui admet en gnral une solution unique, dpendante du paramtre s, w(x, s). Par hypothse, ce problme nest pas soluble analytiquement et je doit donc en dterminer numriquement la solution pour une valeur donne de s, par lune des mthodes exposes au chapitre prcdent. Comme il sagit dune quation direntielle du second ordre, il faudra sans doute la remplacer par un systme direntiel du premier ordre quivalent. Pour rsoudre ensuite le problme aux limites, connaissant w(x, s), il me sut de trouver s tel que : w(b, s) = B ce qui revient rsoudre une quation non linaire en s. Pour les personnes qui nauraient eu le bonheur de recevoir une formation militaire, je vais dvelopper lanalogie avec le comportement dun artilleur. A laide dun canon situ en x = a, celui-ci veut atteindre une cible en x = b ; il ne dispose pour cela que dun seul rglage, la hausse (angle que fait laxe du canon avec lhorizontale). Il procde par approximations successives : un coup court, un coup long (il encadre lobjectif) et, idalement ( ?), un coup au but. Pour la rsolution pratique de problmes aux limites, il est recommand de sinspirer de lartilleur, en traant diverses fonctions w(x, s) pour direntes valeurs de s et en observant leur comportement. Ce nest quune fois acquise une certaine exprience du problme que lon se tournera vers des mthodes plus systmatiques. Jai prsent de nombreuses mthodes de rsolution dune quation non-linaire ; la plus simple est la mthode de bissection (ou dichotomie). Sa mise en oeuvre suppose que je dispose de deux valeurs de s telles que w(b, s1 ) et w(b, s2 ) encadrent B .

An_Num

91

Daprs un thorme connu sur les quations direntielles, la solution w(x, s) est une fonction continment drivable de s. Je peux donc aussi utiliser la mthode de Newton. Je rappelle que, partir dune valeur initiale s(0) , je calcule de faon itrative des valeurs s(i) laide de la formule : s(i+1) = s(i) F [s(i) ] F [s(i) ] ; F (s) w(b, s) B.

Jobtiens F [s(i) ] en rsolvant le problme direntiel : w = f (x, w, w ) ; w(a) = A ; w (a) = s(i) .

La mthode la plus simple pour calculer F consiste lapprocher par le quotient : F [s(i) ] = {F [s(i) + h] F [s(i) h]}/(2h) Jai implicitement admis que lalgorithme qui dtermine w partait de a et progressait vers les x croissants. Ce nest pas obligatoire et cest mme suicidaire si w a une discontinuit en x = a ; dans ce cas, on peut partir de b, avec le mme algorithme et un pas ngatif. On peut tre amen construire une morceau de solution partir de a, un autre partir de b : il faut alors imposer la continuit de w ou de w au point de rencontre entre a et b. Il est souvent commode dimposer que la quantit w /w (la drive logarithmique) soit continue ; cette condition a lavantage dtre insensible la normalisation de w. Le cas dune quation direntielle linaire, frquent en physique, est nettement plus simple. Il sut en eet de dterminer deux solutions w(x, s1 ) et w(x, s2 ) du problme conditions initiales associ. La bonne valeur de s, soit s0 , pour laquelle w(b, s0 ) = B , sobtient par interpolation linaire. En eet, la solution du problme direntiel est une fonction linaire des conditions initiales.

Exemple Soit le problme direntiel : y + y = x ; y (0) = y (1) = 0. Lquation direntielle du second ordre est quivalente au systme : y = z ; z = y x, que jai rsolu par la mthode RK2, avec les conditions initiales y (0) = 0, y (0) = s. Les deux premires excutions ont donn, pour s1 = 0, 3, y (1) = 0, 093915 et pour s2 = 0, 1, y (1) = 0, 242674. Une interpolation inverse linaire me donne alors s0 = 0, 188392, qui conduit, comme le montre la gure ci-dessous, y (1) = 0. La solution analytique est y = x sin(x)/sin(1) ; la drive lorigine est y (0) = 0, 188395, trs proche de la solution numrique.

8.2.2

Problmes de valeurs propres


y = f (x, y, y , ) ; y (a) = y (b) = 0 (8.3)

Un problme aux valeurs propres comme

peut se ramener un problme conditions aux limites en introduisant une fonction inconnue auxiliaire w et lquation auxiliaire w = 0 ou en considrant la valeur propre comme un paramtre ajustable, ce qui est dune mise en oeuvre plus simple. Je me limite une quation direntielle linaire, crite sous la forme y + p(x)y + q (x)y = 0 ; y (a) = y (b) = 0 ; a x b. (8.4)

An_Num

92

0.25 c:/an_poly-7/tir1.dta c:/an_poly-7/tir2.dta c:/an_poly-7/tir3.dta 0.2

0.15

0.1

0.05

-0.05

-0.1

-0.15 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

Fig. 8.1 . La mthode du tir. Comme lquation (8.4) et ses conditions aux limites sont homognes, ky est solution si y lest. Jassocie ce problme de valeurs propres un problme 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 sais la trouver numriquement laide de lune des mthodes du chapitre prcdent. Pour dterminer la solution du problme aux valeurs propres, il me faudra dterminer tel que : v (b, , p) = 0 Il sagit encore dune quation algbrique, mais ici linconnue est . Le paramtre p ne sert qu xer la normalisation de y . Il peut tre choisi empiriquement avant le dbut du calcul pour obtenir des valeurs commodes de y . La mthode de dichotomie se rvle trs pratique pour trouver . Exemple La masse linque dune corde de longueur L varie selon la loi = 0 (1 + x). Lorsque cette corde eectue des oscillations sinusodales, sa forme est dnie par lquation : y + (k0 L)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 frquences de vibration sont les valeurs de telles que le problme direntiel admette une solution. Je les ai cherches par la mthode du tir et lalgorithme de Runge-Kutta dordre 2. La gure montre le rsultat de trois excutions du programme, pour des frquences proches du second mode ((k0 L)2 = 10, 11, 532 et 13).

8.3

Mthodes aux dirences nies

Dans ce type dalgorithme, je remplace,dans lquation direntielle, les drives y , y , . . . par des approximations formes partir de dirences latrales. Je me limite aux problmes linaires, comme le problme du second ordre conditions aux limites y + q (x)y = g (x); y (a) = A; y (b) = B

An_Num

93

0.25 c:/an_poly-7/valp1.dta c:/an_poly-7/valp2.dta c:/an_poly-7/valp3.dta

0.2

0.15

0.1

0.05

-0.05

-0.1

-0.15

-0.2 0 0.2 0.4 0.6 0.8 1

Fig. 8.2 : Recherche du 2ime mode dune corde de densit variable. Le paramtre vaut 5. La valeur propre est k0 L = 3, 396. Pour discrtiser ce problme, je subdivise [a, b] en n + 1 sous-intervalles gaux, de longueur h = (b a)/(n + 1), spars par des pivots dabscisses xi = a + ih, x0 = a, xn+1 = b et je remplace y (xi ) par [ui+1 2ui + ui1 ]/h2 , en posant ui y (xi ). Ce faisant, je commets une erreur de troncation que le thorme de Taylor appliqu y (i+1 ) et y (i1 ) permet dvaluer (h2 /12)y (4) (xi + h), 1 < < 1. Il y a n + 2 valeurs de ui , dont deux nous sont dj connues : u0 = A, un+1 = B ; les autres sont solutions dun systme linaire qui scrit, sous forme matricielle : MU = K avec les dnitions U = [u1 , u2 , . . . , un ] ,k = [g1 + A/h2 , g2 , ....gn1 , gn + B/h2 ]T et 2 + q 1 h2 1 0 ... 0 1 2 + q 2 h2 1 0 ... M= ... ... ... ... ... 2 0 ... . . . 1 2 + qn h On a le thorme suivant. Si qi 0 pour i = 1, 2, ..., n, alors A est dnie positive : la solution du systme linaire prcdent est alors facile, les mthodes de Gauss ou de Cholesky sappliquent sans permutation de lignes. On montre aussi que lerreur de troncation est partout dordre h2 . Cet algorithme stend facilement aux problmes contenant la drive premire de y . Il est important de reprsenter y par une expression qui respecte la symtrie de la matrice M.
T

8.3.1

Exemple
y + y = x ; y (0) = y (1) = 0.

Je reprend le problme dj rsolu par la mthode du tir

Je vais utiliser 20 points, donc 18 valeurs inconnues {uk }. Les lments de la matrice M sont Mi,i = h2 2, Mi,i+1 = Mi+1,i = 1 tandis que les coordonnes de k sont ki = h2 xi . Voici le programme pour Scilab. Vous remarquez lextrme simplicit de la rsolution dun systme linaire de la forme Ax = b : il sut dcrire x = A\b.

An_Num

94

1 // y + y = x par d i s c r e t i s a t i o n 2 xmin = 0 ; xmax = 1 ; 3 np = input ( "nombre t o t a l de p o i n t s : " ) ; 4 n i = np 1; 5 nx = np 2; 6 M = zeros ( nx , nx ) ; 7 h = ( xmaxxmin ) / n i ; 8 f o r i =2:nx 1 9 M( i , i ) = h h 2; 10 M( i , i +1) = 1 ; 11 M( i , i 1) = 1 ; 12 end 13 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 , xmaxh , nx ) ; 15 b = h h x 16 y = M\b 17 yy = [ 0 ; y ; 0 ] ; xx = [ xmin ; x ; xmax ] ; 18 x s e t ( " window " , 0 ) , xbasc ( 0 ) 19 x s e g s ( [ xmin , xmax ] , [ 0 , 0 ] ) 20 p l o t 2 d ( xx , yy , r e c t =[xmin , 0 . 1 , xmax , 0 . 1 ] )

qui produit le trace de la gure 3.

0.10 0.08 0.06 0.04 0.02 0 0.02 0.04 0.06 0.08 0.10 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0

Fig. 8.3 :Solution dun problme avec conditions aux limites. La fonction inconnue est discrtise sur 20 points La mthode de discrtisation sapplique aussi en principe aux problmes de valeurs propres (linaires). La dirence est que lon naboutit un problme simple dalgbre linaire seulement dans quelques cas particuliers. Cest 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

An_Num

95

avec la mme matrice M que prcdemment. Si A est dordre n, alors lquation prcdente admet n solutions comprenant chacune une valeur propre k et un vecteur propre U(k) (voir le chapitre lments propres). Les deux approches que je vient de dcrire (tir et discrtisation) sont en gros quivalentes, du point de vue de la commodit comme du point de vue de la qualit des rsultats, pour tout les problmes simples. Si les fonctions (comme q (x)) prsentent des discontinuits, il vaut mieux utiliser la discrtisation, plus stable.

8.4

Mthodes variationnelles, Rayleigh-Ritz-Galerkin

Les mthodes variationnelles utilisent le fait que la solution dun problme direntiel conditions aux limites possde souvent la proprit de rendre minimale ou plus gnralement stationnaire une certaine intgrale. La recherche de ce minimum peut tre plus facile que la rsolution directe, surtout en prsence de discontinuits des fonctions intervenant dans le problme direntiel. Le but de ce paragraphe est de prsenter une brve introduction ces mthodes pour le cas simpliste dune seule variable. Je considre le problme (que lon appelle un problme de Sturm-Liouville) (py ) + qy = f ; y (a) = 0 ; y (b) = 0

o p, q et f sont des fonctions de x continment drivables sur I = [a, b]. Jintroduis un oprateur par la relation direntiel L (v ) (pv ) + qv, L si bien que (1) peut aussi scrire : (y ) = f L

Je vais me servir du produit scalaire de fonctions dnies sur I dj introduit au chapitre 5, cela pour une fonction de poids gale 1 :
b

(u, v ) =
a

u(x)v (x)dx ;

= (u, u).

On dmontre alors facilement les proprits suivantes : *L est symtrique : (u, L(v )) = (L(u), v ). *L est dni positif : (L(u), u) = (u, L(u)) > 0 pour tout u > 0. Je dnis un nombre dpendant de u (une fonctionnelle de u) : F (u) = (u, u) 2(u, f ), o f est la fonction qui gure au second membre de lquation direntielle. Si y vrie L(y ) = f , on a le thorme : F (u) > F (y ) pour tout u = y . Ce rsultat mamne chercher une approximation y en rendant minimale F (u). Cela sera dautant plus facile que u est proche de la vraie solution, tout en gardant une forme telle que les calculs soient simples. Il est courant de prendre pour u une combinaison linaire de fonctions de base : u = a1 u1 + a2 u2 + ..... + an un . La fonction F (u) devient alors F (a1 , ...an ) = F (a). Soit v le vecteur de coordonnes (ui , f ) et S la matrice dlments si,j = (ui , uj ). Un calcul lmentaire montre que : F (a) = aT Sa 2vT a.

An_Num

96

Rsoudre le problme direntiel est donc approximativement quivalent trouver le vecteur a qui rend F minimale. On montre encore que ce vecteur, a0 , est solution du systme : Sa = v. Cette solution existe et est mme facile trouver parce que S est dnie positive. Les mthodes dlments nis ( deux et trois dimensions) utilisent un formalisme variationnel analogue au prcdent pour rduire les quations aux drives partielles, rencontres en mcanique des uides ou en lasticit, un systme dquations linaires.

Chapitre 9

Rsolution de systmes dquations linaires


9.1 Introduction

La rsolution de systmes dquations linaires est peut-tre le problme le plus connu et le mieux tudi de lanalyse numrique. Ces tudes sappuient sur lensemble des connaissances en algbre linaire. Malgr ces atouts, la rsolution pratique dun systme linaire peut poser des dicults, soit pour certains choix des coecients (systmes mal conditionns), soit lorsque le nombre dinconnues devient grand (plus de quelques milliers), comme cest le cas lors de la rsolution dquations aux drives partielles ou dans certains domaines de lconomtrie. Il peut aussi arriver que le systme soit surdtermin (plus dquations que dinconnues). Quelles sont les mthodes que propose larsenal mathmatique ? Tout dabord une mthode que je qualierai de formelle : la solution du problme Ax = b (9.1)

(o A est une matrice n n, b et x des vecteurs n coordonnes) scrit x = A1 b, puis la mthode de Cramer, qui se rvle inutilisable en pratique ds quil y a plus de trois inconnues, (le calcul dun dterminant n n ncessite n! oprations, ce qui est prohibitif). Je rencontre ensuite un groupe de mthodes qui procdent par liminations successives des inconnues : elles sont associes aux noms de Gauss et de Gauss-Jordan et sont dapplication aise. Dautres algorithmes factorisent la matrice des coecients (A = FG) avant de pratiquer des liminations successives qui sont alors trs rapides cause de la forme particulire des facteurs mathbf F, G : ce sont les mthodes de Crout, Doolittle ou Cholesky. En dpit des apparences, ces deux ensembles sont mathmatiquement quivalents et sont frquemment employs en analyse numrique. Dans un esprit bien dirent, je pourrai faire appel des procds itratifs de rsolution, dont la convergence nest pas toujours assure : ce sont les mthodes associes aux noms de Jacobi et Gauss-Seidel. Comme vous le verrez, le calcul de linverse A1 dune matrice A est plus long que le calcul direct de la solution du systme linaire (9.1). Lanalogie avec lalgbre peut faire comprendre cette remarque. Pour rsoudre 10x = 3, je peux faire 101 = 0, 1; 0, 1 3 = 0, 3 ou directement x = 3/10 = 0, 3. On vite donc de calculer linverse de la matrice des coecients, moins que le problme pos ne le demande explicitement. Si tel est le cas, je calculerai A1 en rsolvant n systmes linaires particuliers, dont les seconds membres sont respectivement gaux chacun des vecteurs de base.

97

An_Num

98

Dans la mise en oeuvre des mthodes dlimination ou de factorisation, lordinateur ne commet que des erreurs darrondi. Dans le cas dune mthode itrative, je devrais tenir compte aussi dune erreur de troncation, puisque lalgorithme sarrte au bout dun nombre ni doprations. Pour lanalyse numrique, la dicult de rsolution dun systme linaire tient aux eets conjugus de sa taille et de son conditionnement. Voici une interprtation graphique de cet anglicisme. Soit le systme linaire : ax + by = m, cx + dy = n. Je divise la premire quation par un a2 + b2 et la seconde par c2 + d2 , pour obtenir n1x x + n1y y = d1 , n2x x + n2y y = d2 .
2 Les coecients satisfaisant maintenant aux relations n2 ix + niy = 1, i = 1, 2, les vecteurs ni de coordonnes {nix , niy } sont unitaires. Le systme linaire ainsi crit admet linterprtation gomtrique suivante. Chaque quation est celle dune droite Di du plan (x, y ). La droite Di est perpendiculaire au vecteur ni ; la distance de la droite lorigine est di . La solution cherche est reprsente par le point dintersection des deux droites. Dans les cours lmentaires, on distingue trois cas : D1 confondue avec D2 (systme indtermin ou innit de solutions), D1 parallle D2 (systme impossible), et le cas normal o D1 coupe D2 . Numriquement, il faut distinguer ici deux possibilits. Si D1 et D2 font entre elles un angle notable, le point dintersection est bien dni et la solution du systme sera facile trouver. Si D1 et D2 se coupent sous un angle trs faible, le systme est dit mal conditionn. Dans ce cas, la moindre variation de lun des di (les seconds membres) ou de lun des n,i (les coecients, = x, y ) entranera un dplacement trs important du point dintersection. Autrement dit, la solution est extrmement sensible aux perturbations des coecients ou des seconds membres. Un dterminant trs petit est une indication quun systme est mal conditionn ; ce nest pas une condition ncessaire surtout lorsque le nombre de variables devient grand. Je peux donner un aspect plus quantitatif aux considrations prcdentes. Jadmets quil existe une norme vectorielle x et une norme matricielle A , cohrente avec la prcdente (cest-dire que, pour tout x, A x Ax ). En plus du systme (9.1), je considre un systme perturb ; le second membre a subi une petite modication b, ce qui a entran une petite variation x de la solution A(x + x) = b + b

do x = A1 b et :

x A1

Jen tire une majoration de la variation relative : x x = A A1 b b = cond(A) b . b

Le nombre cond(A) = A A1 est une mesure de la sensibilit de lerreur relative (sur la solution) aux variations du second membre. Je montre maintenant que cond(A) reprsente aussi la sensibilit aux variations des coecients des premiers membres. Je considre un nouveau systme perturb (A + A)(x + x) = b. En retranchant membre membre (9.1), je trouve x = A1 A(x + x),

An_Num ce qui implique lingalit soit encore

99

x A1 x x + x

(x + x) , A . A

= cond(A)

Il est souvent commode de considrer aussi (9.1) comme une application de Rn dans lui-mme. Si la matrice A est rgulire, son image (lensemble des vecteurs Ax) est Rn lui-mme ; quelque soit le vecteur b, on pourra toujours trouver un x satisfaisant (9.1). Si, au contraire, A est singulire, son image est un sous-ensemble de Rn . Deux possibilits se prsentent alors. Si b nappartient pas limage de A, le systme est impossible, puisquon ne pourra jamais trouver un vecteur x convenable. Si b appartient limage de A, il y aura une innit de solutions, car on pourra toujours ajouter une solution un vecteur y appartenant au noyau de A (lensemble des vecteurs y tels que Ay = 0.

9.2
9.2.1

Mthode de Gauss
Exemple

Je vais traiter un exemple qui, mieux quun long discours, fera saisir lesprit de la mthode dlimination de Gauss et son quivalence avec une factorisation de la matrice des coecients. Il sagit du systme 2 1 0 4 x1 2 4 2 3 7 x2 = 9 = x. Ax = (9.2) 4 1 2 8 x3 2 0 3 12 1 x4 2 Je vais procder par liminations successives en utilisant trois thormes bien connus dalgbre linaire. La solution du systme linaire reste inchange si : * on multiplie une quation (une ligne de A et la coordonne correspondante de b) par une constante ; * on ajoute une quation une autre (une ligne de A une autre et la coordonne correspondante de b une autre) ; * on permute deux quations (deux lignes de A et les coordonnes correspondantes de b). Je peux traiter A et b en parallle ou construire une matrice A "augmente" dont la n +1-ime colonne est identique b. Jindique entre parenthses les instructions Scilab correspondantes. Je commence par liminer x1 . Pour cela : je multiplie la ligne (1) par 2 et je lajoute la ligne (2) (A(2,:) = A(2,:) + 2A(1,:);), je multiplie la ligne (1) par -2 et je lajoute la ligne (3) (A(3,:) = A(3,:) - 2A(1,:);). Il vient : 2 1 0 4 2 0 0 3 1 ; b(1) = 5 A(1) = 0 1 2 0 2 0 3 12 1 2 On remarque que le multiplicateur relatif la ligne i est ai,1 /a11 ; a11 est appel le "pivot" ; il a intrt ntre pas nul ! Beaucoup dauteurs emploient la convention oppose : ils multiplient

An_Num

100

la ligne (1) par +ai,1 /a11 et la retranchent de la ligne (i) Le rsultat est donn par la matrice (1) A(1) et le vecteur b(1) . Je dois maintenant liminer x2 ; problme : le pivot correspondant (a22 ) est nul ! Mon lan parait devoir tre bris prs du dpart. Mais, heureusement, je peux permuter les lignes (2) et (3)(temp = A(3,:); A(3,:) = A(2,:), A(2,:) = temp;) ; le nouveau pivot est maintenant -1 ; jajoute -3 fois (2) (4) pour trouver : 2 1 0 4 2 0 1 2 0 ; b(3) = 2 A(3) = 0 0 5 3 1 0 0 6 1 8 Finalement, en utilisant le pivot 3, jajoute 2 fois 2 1 0 0 1 2 (4) A = 0 0 3 0 0 0 (3) (4) : 4 0 ; b(4) = 1 1 2 2 5 2

La matrice A(4) , quivalente A, a la forme triangulaire suprieure. Elle rassemble les coecients dun systme triangulaire facile rsoudre par substitution partir de la dernire ligne : (4) (3) (2) (1) x4 = 2, 3x3 2 = 5 x2 2(1) = 2 2x1 + 4 + 4(2) = 2
(4)

x3 = 1, x 2 = 4, x 1 = 3.

Je gagne en prime la valeur de det A = (1)p i aii , o p est le nombre de permutations de lignes, ici 1, do det A = 6. Si lun des lments diagonaux de A(4) (lun des pivots de llimination de Gauss) est nul, le dterminant est nul ; rciproquement, si det A = 0, je suis assur de trouver des pivots non nuls (quitte permuter des lignes).

9.2.2

Gauss-Jordan

Pour ceux qui auraient pris got llimination, je propose une variante. Plutt que de substituer dans le systme triangulaire, je poursuis llimination au-dessus de la diagonale principale : cest la mthode de Gauss-Jordan. Pour changer, je travaille sur la matrice augmente A , runion de A et de b. Jajoute (2) (1) : 2 0 2 4 0 0 1 2 0 2 (5) = A 0 0 3 1 5 0 0 0 1 2 puis 2/3 de (3) (1) et (2) :
(6)

2 0 0 1 = 0 0 0 0

0 0 3 0

14/3 2/3 1 1

20/3 16/3 5 2

Pour nir, jajoute -14/3 (4) (1), -2/3 (4) (2) et 2 0 0 1 (8) A = 0 0 0 0

-(4) (3) ; il vient : 0 0 6 0 0 2 3 0 3 0 1 2

criture matricielle dun systme dont la rsolution est immdiate.

An_Num

101

9.2.3

Reprsentation matricielle de llimination

Multiplier la coordonne 1 dun vecteur par le coecient m, puis ajouter le rsultat la coordonne 2 revient multiplier ce mme vecteur par une matrice particulire : 1 0 0 0 b1 b1 m 1 0 0 b2 mb1 + b2 0 0 1 0 b3 = b3 0 0 0 1 b4 b4 Plus gnralement, pour ajouter m fois la ligne i la ligne j , il sut de disposer le nombre m la place de llment j, i de la matrice unit (i < j ). Ce qui est vrai pour un vecteur lest galement pour une matrice. La prmultiplication de A carre quelconque par la matrice prcdente revient multiplier successivement chaque colonne de A, donc ajouter la premire ligne de A la deuxime. Encore un exemple ; je veux ajouter -3 fois la 3-ime ligne la 4-ime de la matrice gnrale : -3 est en ligne 4, colonne 3 : 1 0 0 0 a11 a12 a13 a14 0 1 0 0 a21 a22 a23 a24 0 0 1 0 a31 a32 a33 a34 = 0 0 3 1 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 dtre dnies (dites matrices de Frobenius) jouissent de proprits intressantes. Si f (i, j, m) dsigne la matrice de Frobenius contenant m en ligne i et colonne j , alors f 1 = f (i, j, m) : soustraire m fois la ligne i de la ligne j est bien lopration inverse dajouter m fois (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 i et i, ce qui reprsente bien le fait quajouter un multiple de la ligne j aux lignes i et i sont des actions indpendantes. Dans lexemple prcdent, jai obtenu la matrice A(2) partir de la matrice A(1) = A, en utilisant deux multiplicateurs (2 et -2), ce qui peut scrire A(2) = M1 A(1) ; b(2) = M1 b(1) , avec 1 2 M1 = 2 0 0 0 0 1 0 0 0 1 0 0 0 1

1 Je pose, en vue dune utilisation future, L1 M 1 . Revenant lexemple, jai ensuite permut les lignes (2) et (3) pour faire apparatre un pivot non nul, ce que je reprsente par une prmultiplication par la matrice de permutation P : 1 0 0 0 0 0 1 0 P= 0 1 0 0 0 0 0 1

Cette matrice est symtrique et orthogonale : P1 = PT = P et, par consquent, P2 = I, ce qui traduit le fait quchanger deux fois les mmes lignes revient ne rien faire. Jai ensuite limin

An_Num x2 avec laide implicite de la matrice M2 . 1 0 M2 = 0 0 0 1 0 3 0 0 1 0 0 0 0 1

102

1 Je dnis au passage son inverse, not L2 M 2 . (3) Le systme linaire scrit maintenant : A x = b(3) , avec A(3) = M2 PA(2) et b(3) = M2 Pb(1) . Pour liminer x3 , jai utilis M3 : 1 0 0 0 0 1 0 0 M3 = 0 0 1 0 0 0 2 1

La dernire forme du systme scrit : A(4) x = b(4) . Je pose encore A(3) = L3 A(4) et b(3) = L3 b(4) . En rsum, en ce qui concerne le tableau des coecients, jai A(4) = M3 A(3) = M3 M2 PA(2) = M3 M2 PM1 A(1) Le vecteur b a subi les mmes transformations, rsumes par : b(4) = M3 M2 PM1 b(1) . Ces formules rsument bien la triangularisation du systme, mais cest la relation inverse qui est vraiment intressante. Pour le voir, jintroduis les notations U = A(4) et c = b(4) (le systme linaire est donc quivalent : Ux = c). Je calcule ensuite A = A(1) = L1 PL2 L3 A(4) = L1 PL2 L3 U. L1 PL2 L3 , je mets la matrice de dpart sous la forme A = LU : cest un produit Si je pose L de facteurs, dont lun est triangulaire suprieur (U) ; malheureusement, cause du facteur P, la na pas de forme simple. Pour obtenir un rsultat plus lgant, je commence par dnir matrice L L1 PL1 PT ; cette nouvelle matrice sobtient en permutant les lignes (2) et (3) de L1 (prmultiplication par P) et en permutant les colonnes (2) et (3) de la matrice obtenue (postmultiplication par PT ; le rsultat scrit : 1 0 0 0 2 1 0 0 L1 = 2 0 1 0 0 0 0 1 Comme vous le constatez, L1 est nouveau triangulaire infrieure : la perturbation apporte par P a t absorbe dans L1 . Je dnis ensuite L = L1 L2 L3 : 1 0 0 0 1 0 0 0 1 0 0 0 2 1 0 0 0 1 0 0 0 1 0 0 L= 2 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 3 0 1 0 0 2 1 Le calcul explicite donne 1 2 L= 2 0 0 1 0 3 0 0 1 2 0 0 0 1

An_Num

103

Il sut de recopier leurs places dans L les lments sous la diagonale des facteurs L1 , L2 et L3 , comme pour les matrices lmentaires de Frobenius. Je forme ensuite le produit LU : LU = L1 L2 L3 A(4) = L1 L2 A(3) = L1 PA(2) = PL1 A(2) = PA(1) = PA. La matrice PA a t dcompose en un produit de deux facteurs, lun (L, lower) triangulaire infrieur, avec des lments diagonaux gaux un, lautre (U, upper) triangulaire suprieur. Vous pouvez aussi eectuer numriquement le produit LU pour vous convaincre du rsultat (matrice de dpart sauf permutation des lignes (2) et (3)). Pour trouver la solution de (9.1), il sut maintenant de rsoudre successivement deux systmes triangulaires. Dabord L y = Pb, dont la solution est le vecteur y, puis Ux = y dont la solution est le vecteur x cherch. Vous pourrez vrier que y = b(4) . Dautre part, jai toujours sous la main le dterminant de A : (1)p det(A) = det(PA) = det(LU) = det(L) det(U) =
i

uii .

9.2.4

Gnralisation

Lexemple prcdent se gnralise sans dicult au cas o A est une matrice carre, rgulire, n n. On peut dmontrer lexistence et lunicit de la factorisation. Je me contente de dmontrer, par labsurde, cette dernire proprit. Supposons quil existe deux dcompositions dune mme matrice rgulire : A = L1 U1 = L2 U2 , do :
1 1 X = L 2 L1 = U2 U1

Or, linverse dune matrice triangulaire infrieure (suprieure) est elle-mme triangulaire infrieure (suprieure). Le produit de deux matrices triangulaires infrieures est une matrice de mme forme ; de mme, le produit de deux matrices triangulaires suprieures est encore triangulaire suprieur. X, qui doit runir ces deux proprits, ne peut tre que la matrice unit, ce qui entrane L1 = L2 et U1 = U2 .

9.2.5

Mise en oeuvre pratique

Si la matrice A est rgulire, je suis assur de toujours pouvoir trouver un pivot non nul : llimination de Gauss est toujours possible en thorie. On montre quelle est encore utile pour des matrices de rang < n ou pour des matrices rectangulaires. Je naborderais pas ces points ici. Les calculs rels sont en fait entachs derreurs darrondi. Ceci a pour consquence que le rsultat nal dpendra fortement du choix des pivots (ou encore de lordre des variables limines). On peut voir en gros ce qui se passe. Je suppose que les variables x1 , x2 , . . . , xk1 ont t limines. Pour liminer linconnue xk , je multiplie la ligne k par aik /akk . Si le pivot akk est petit, toutes les erreurs qui aectent les coecients aik seront amplies. En consquence, on adopte toujours la stratgie de recherche du pivot partiel ; pour liminer la variable xk et quelque soit la valeur de |akk |, on recherche llment de plus grand module dans la colonne k et cest lui que lon prendra comme pivot eectif, aprs avoir fait la permutation de lignes ncessaire. Certains auteurs recommandent la stratgie de la recherche complte du pivot maximal (pivot total). Pour liminer xk , on cherche pour i k et pour j k llment aij de plus grand module. On lamne en position de pivot par des permutations de lignes et de colonnes. Permuter

An_Num

104

les colonnes nest pas neutre, cest quivalent permuter les inconnues. Il faut donc garder trace des ces permutations pour restaurer lordre initial la n. La programmation est un peu plus complique. Il semble par ailleurs que lanalyse prcise des erreurs darrondi ne dmontre pas une supriorit nette de la recherche globale sur la recherche partielle. Les erreurs darrondi sont plus faibles si les lments des matrices successives restent peu prs du mme ordre de grandeur. Pour cela, on peut, avant de rsoudre le systme, multiplier certaines lignes par des facteurs tels que le plus grand coecient de chaque ligne soit compris entre 0,5 et 1 (quilibrage). Le dcompte dtaill des oprations arithmtiques ncessaires fait apparatre le rsultat suivant : factorisation substitution n(n 1/2)(n 1)/3 n(n 1)/2 n(n 1)/2 n additions et multiplications divisions additions et multiplications divisions

Vous retiendrez les valeurs asymptotiques : pour llimination : O(n3 /3) oprations et pour la rsolution du systme linaire : O(n2 ) oprations. Lalgorithme de Gauss est assez conome en mmoire, si lon accepte de dtruire A. En eet, chaque tape, je range les lments de L la place que devraient occuper les zros de A aprs limination (dans le triangle infrieur). Les 1 de la diagonale de L sont sous-entendus. Le triangle suprieur de A est progressivement occup par les lments de U.

9.2.6

Calcul de linverse de A

Pour certaines applications, il faut calculer A1 = X explicitement, soit encore trouver X telle que AX = I. La colonne j de X est solution du systme linaire : Axj = ej . Je vais avoir rsoudre n systmes linaires dont les premiers membres sont identiques, mais les seconds membres dirents. Il est commode dutiliser la dcomposition PA = LU eectue une seule fois, puis de rsoudre les systmes triangulaires Lyj = Pej puis Uxj = yj . On sait que les coordonnes de yj sont nulles jusqu un certain rang, ce qui permet de gagner un peu de temps. Le nombre doprations ncessaires est O(n3 ), pas plus que pour calculer A2 mais trois fois plus que pour rsoudre un systme linaire de mme n.

9.3

Factorisation directe

Je sais que la matrice rgulire A admet une reprsentation sous forme dun produit de matrices triangulaires LU. Je peux alors me poser la question suivante : est-il possible de trouver les lments de L et U sans utiliser lalgorithme de Gauss ? La rponse est armative et cest mme assez simple. Cependant, comme la dcomposition LU est unique, ce nouvel algorithme est certainement quivalent celui de Gauss. Soient i,j les lments de L, avec i,j = 0 si i < j ; de mme, les lments de U sont tels que ui,j = 0 si i > j ; enn i,i = 1. Je procderai par identication. a11 =
1k uk1

11 u11 1k u k 2

= u11 ,

a12 = a1n =

= u12 , ......................
1k ukn

= u 1n .

An_Num

105

En utilisant la premire ligne de A, jai trouv la premire ligne de U. Lastuce pour continuer (due Crout, do le nom de lalgorithme), consiste identier maintenant la premire colonne de A. a21 = a31 =
3k uk1 2k uk1

21 u11

22 u21

21 31

= a21 /u11 = a31 /u11 ................

31 u11

32 u21

33 u31

Je dtermine ainsi la premire colonne de L. Vous pouvez imaginer que la deuxime ligne de U sobtient partir de la deuxime ligne de A, puis que la deuxime colonne de L dcoule de la deuxime colonne de A, etc... Les formules gnrales scrivent :
i1

uij = aij
k=1

ik ukj ; j

= i, i + 1, ...n;

i,j

1 = aij ujj

j 1 ik ukj k=1

; i = j + 1, j + 2, ...n

(9.3) (9.4)

avec toujours ii = 1. Il y a une petite dicult : cet algorithme est trs sensible aux erreurs darrondis, et ne fonctionnera pas sans recherche du pivot maximal dans chaque colonne. Dautre part, en gnral, je forme la dcomposition LU pour rsoudre un systme linaire ; ici, je nai permut que les lignes de A et non celles de b (qui napparat pas) ; il faut donc garder trace des permutations pour pouvoir retrouver les inconnues par la suite. On rencontre frquemment deux cas particuliers. La premier est celui dune matrice dnie positive, le second celui dune matrice tridiagonale. Je vais les examiner brivement.

9.3.1

Matrice tridiagonale

Soit A une matrice tridiagonale ; Je pose ai,i1 = xi , ai,i = yi et ai,i+1 = zi . Jadmets en plus que A possde une dcomposition LU sans permutation de lignes. Par identication, on vrie que L et U sont bidiagonales : y1 z1 0 ... ... 0 x2 y2 z2 0 ... 0 0 ... ... ... = . . . 0 0 . . . 0 xn1 yn1 zn1 0 ... ... 0 xn yn 1 0 0 ... 0 d1 u1 0 ... 0 l2 1 0 ... 0 ... 0 0 d2 u2 0 ... 0 ... ... ... 1 . . . 0 0 0 . . . ln1 1 0 0 . . . 0 dn1 un1 0 ... 0 ln 1 0 ... 0 0 dn Vous prouverez sans peine les relations suivantes : y1 = d1 ; ; z1 = u1 ; ; xi = li di1 ; ; zi = ui .

yi = li ui1 + di

Vous pourrez nalement tablir les formules trs simples de rsolution dun systme linaire dont les coecients seraient les xi , yi , zi . Dans le cas o lon doit pratiquer une recherche du pivot

An_Num

106

partiel, le pivot de ltape k se trouve ncessairement dans lune des lignes k ou k + 1 (matrice tridiagonale). Il en rsulte une dcomposition PA = LU, o L est toujours bidiagonale infrieure, alors que U est tridiagonale suprieure. Une matrice n n tridiagonale possde au plus 3n 2 lments non nuls, qui reprsentent, si n est grand, une petite fraction des n2 lments thoriques. Il est recommend dconomiser de la mmoire en rangeant ces lments dans trois tableaux une dimension. La discrtisation des quations aux drives partielles fait souvent apparatre des matrices dites creuses comportant trs peu dlments dirents de zro. Il existe des programmes spcialiss pour les manipuler sans encombrer la mmoire.

9.3.2

Matrice symtrique dnie positive

Si A est symtrique, sa dcomposition scrit : A = LLT . Je suppose en plus que A est dnie positive. Je rappelle deux dnitions quivalentes : xT Ax > 0 quelque soit le vecteur x ; toutes les sous-matrices principales ont des dterminants positifs). On montre alors que les pivots de llimination de Gauss sont strictement positifs et donc que la factorisation LLT se fait sans permutation (dcomposition rgulire de Cholesky). On dtermine les lments de L ( ij = 0sij > i) par identication : = a11 > 0, 11 21 = a21 , 2 2 21 + 22 = a22 .......................
i,j 2 11

1
jj

j 1

aij
k=1 j 1

ik jk

i,j

1
jj

aij
k=1

ik jk

9.3.3

Variantes

Jai montr que la matrice rgulire A admet la factorisation LU en un produit de matrices triangulaires, infrieure pour L diagonale unitaire, suprieure pour U. Cette rpartition des rles nest pas la seule possible. On peut concevoir la dcomposition A = L U o U est maintenant triangulaire diagonale unitaire, L tant simplement triangulaire ; un algorithme du Doolittle et trs voisin des prcdents permet dobtenir L et U . Plutt que de favoriser lun des facteurs grce la possession dune diagonale unitaire, on peut imposer que chaque facteur triangulaire prsente des lments diagonaux gaux 1. On a alors : A = LDU ,
ii

= uii = 1

o D est une matrice diagonale. Dans le cas particulier o A est symtrique, il vient : A = LDLT

9.4

Mthodes itratives de rsolution des systmes linaires

Les trs grands systmes linaires posent un problme pratique : il peut tre impossible de caser en mmoire centrale lensemble des coecients. Dautre part, on rencontre, surtout lorsque le systme linaire provient de la discrtisation dune quation aux drives partielles, une structure particulire des coecients : les lments diagonaux sont plus grands que tous les autres. Dans ces cas l, on peut utiliser avec prot des mthodes itratives de rsolution, beaucoup moins gourmandes en mmoire et plus rapides.

An_Num

107

9.4.1

Mthode de Jacobi

Je cherche la solution de (9.1), avec aii = 0, 1 i n, en connaissant une approximation de la solution : x[0] . Je vais utiliser une mthode dapproximations successives en traitant de faon quivalente chaque coordonne de x : xi =
[k] [k]

1 (bi aii

aij xj
j =i

[k1]

) ;

1 i n.

(9.5)

Le calcul de xi nutilise que la ligne i de A : cette matrice peut donc tre range sur disque et lue la demande. Comme pour toute mthode ditration, je dois me proccuper dun critre darrt. On rencontre couramment lune des deux dnitions classiques suivantes. Je dnis le rsiduel litration k : r[k] = b Ax[k] . Je peux choisir la condition de convergence r[k] , tant un seuil x lavance ou la condition : x[k] x[k1] x[k1] . b

Lalgorithme (9.5) admet une reprsentation matricielle commode pour les analyses thoriques. Je dcompose A en une somme de trois matrices (rien voir avec les L et U des paragraphes prcdents) : A=DLU o D est diagonale, E strictement triangulaire infrieure et F strictement triangulaire suprieure (jai donc aii = dii ), ii = uii = 0). Jintroduis le vecteur x[k] x[k+1] x[k] . En utilisant les relations de rcurrence et la dnition du vecteur rsiduel, vous montrerez facilement que : x[k] = D1 r[k] do : x[k+1] = D1 (L + U)x[k] + D1 b.

Exemple tant donn le systme linaire ci-dessous et le vecteur initial [0, 0]T : 3x + y = 2 x + 2y = 2 ou x = (1/3)(2 y ) 1 y = (x 2) 2 je trouve la suite de solutions approches suivante : x y 2/3 1 1 2/3 8/9 1/2 5/6 5/9 23/27 7/12 31/36 139/162 31/54 41/72

qui converge eectivement mais lentement vers la solution exacte [6/7, 4/7]T .

An_Num un programme Scilab

108

Le code suivant rsoud un systme linaire par la mthode itrative de Jacobi. La matrice des coecients est presque alatoire, mais jai ajout 2 chaque lment diagonal pour tre sr de la convergence ; le vecteur des seconds membres est arbiraire.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 // mthode de J a c o b i pour l e s s y s t e m e s l i n e a i r e s s e u i l = 1 e 6; nitmax = 1 0 0 ; n = 36; // c o n s t r u c t i o n d une m a t r i c e A a d i a g o n a l e dominante A = rand ( n , n ) 0.5 ones ( n , n ) + 2 eye ( n , n ) ; d = diag (A ) ; // c o n s t r u c t i o n d e s s e c o n d membres ; b = sin ( ( 1 : n)% p i /n ) ; // i n i t i a l i s a t i o n x = ones (n , 1 ) ; // r e s o l u t i o n f o r i t = 1 : nitmax s = b A x ; y = x + s ./d ; i f max( abs ( yx ) ) < s e u i l , break , end x = y; end // a f f i c h a g e x (A x b )

chaque tour dans la boucle, x contient lancienne valeur x[n] et y contient la nouvelle valeur x[n+1] [n] n du vecteur inconnu. Plutt que dutiliser directement (9.5), il est commode de calculer 1 ai,j xj (une composante du produit Ax), qui contient un terme de trop et de compenser aprs (lignes 13 et 14). La mthode de Jacobi converge lentement, mais je peux facilement modier cet algorithme pour le rendre plus rapide.

9.4.2

Mthode de Gauss-Seidel
[k+1] [k] [k ]

Lalgorithme de Jacobi me prescrit de calculer xi en utilisant les valeurs x1 , x2 , . . ., [k] [k] [k] xi1 , xi+1 , ...xn ; il semble que je pourrais gagner du temps ou de la prcision, puisque je connais , x2 , . . . , xi1 , qui sont plus prcises que les valeurs des mmes variables litration dj x1 prcdente (k ). Cest ce que fait lalgorithme de Gauss-Seidel. Les relations de rcurrence scrivent : i1 n 1 [ k +1] [ k ] +1 bi xk = aij xj (9.6) aij xj i aii j =1 j =i+1 Ces quations sont peut-tre plus faciles programmer que celles qui dcoulent de la mthode de [k] Jacobi. En eet, il nest pas ncessaire de conserver lensemble des valeurs xi pendant le calcul [k+1] des xi : chaque nouvelle valeur remplace la prcdente. Je vous laisse le soin de montrer que lquivalent matriciel de ces formules est : x[k+1] = (D L)1 Ux[k] + (D L)1 b. Exemple Appliquant lalgorithme de Gauss-Seidel lexemple du paragraphe prcdent, je trouve la suite de valeurs :
[k+1] [k+1] [k+1]

An_Num x y 2/3 -2/3 8/9 -5/9 23/27 -31/54 139/162 -185/324

109

Certains de ces nombres sont apparus lors du calcul prcdent ; on observe toutefois que la convergence est beaucoup plus rapide. une version en Scilab
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 // mthode de Gauss S e i d e l pour l e s s y s t e m e s l i n e a i r e s s e u i l = 1 e 6; nitmax = 3 0 ; n = 16; // c o n s t r u c t i o n d une m a t r i c e A a d i a g o n a l e dominante A = rand ( n , n ) 0.5 o n e s ( n , n ) + 2 eye ( n , n ) ; d = d i a g (A ) ; // c o n s t r u c t i o n d e s s e c o n d membres ; b = s i n ( ( 1 : n)% p i /n ) ; // i n i t i a l i s a t i o n x = ones (n , 1 ) ; // r e s o l u t i o n f o r i t = 1 : nitmax for i = 1:n s = A( i , : ) x ; x ( i ) = x ( i ) + ( b ( i ) s ) /A( i , i ) ; end i f max( abs ( yx ) ) < s e u i l , break , end y = x; it end x A x b

9.4.3

Mthode de surrelaxation

Cette variante de lalgorithme de Gauss-Seidel (elle peut utiliser Jacobi aussi, mais sans avan [k+1] tage) procde comme suit. Connaissant un vecteur x[k] , je calcule un vecteur provisoire x [k+1] laide de lalgorithme (9.6), puis je dnis le vecteur x dnitif comme : [k+1] + (1 )x[k] . x[k+1] = x (9.7)

est un paramtre rel dont il faut optimiser la valeur pour chaque classe de problme. Le choix = 1 me ramne (9.6). On a toujours < 2, et lexprience montre que la meilleure valeur de est voisine de 1,7. En Scilab
1 2 3 4 5 6 7 8 9 10 11 // mthode de s u r r e l a x a t i o n pour l e s s y s t e m e s l i n e a i r e s s e u i l = 1 e 6; nitmax = 3 0 ; n = 1 6 ; omg = 1 . 0 5 ; // c o n s t r u c t i o n d une m a t r i c e A a d i a g o n a l e dominante A = rand ( n , n ) 0.5 ones ( n , n ) + 2 eye ( n , n ) ; d = diag (A ) ; // c o n s t r u c t i o n d e s s e c o n d membres ; b = sin ( ( 1 : n)% p i /n ) ; // i n i t i a l i s a t i o n x = ones (n , 1 ) ; y = x;

An_Num

110

12 13 14 15 16 17 18 19 20 21 22

// r e s o l u t i o n f o r i t = 1 : nitmax for i = 1:n s = A( i , : ) x ; x ( i ) = x ( i ) + omg ( b ( i ) s ) /A( i , i ) ; end i f max( abs ( yx ) ) < s e u i l , break , end y = x; it end x A x b

Chapitre 10

lments propres
10.1 Introduction

Du point de vue thorique, le problme de la dtermination des vecteurs propres et valeurs propres dune matrice est presque aussi bien connu que la rsolution des systmes linaires. La physique fournit un grand nombre de problmes quivalents la diagonalisation dune matrice symtrique ou hermitique. Je me limiterai essentiellement au cas des matrices relles symtriques. Je rappelle quelques proprits des lments propres dune telle matrice. Jappelle valeurs propres de la matrice carre symtrique A les solutions de lquation 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 solutions de lquation polynmiale de degr n : (1)n (n Cn1 n1 + C1 C0 ) = 0 appele quation (ou polynme) caractristique. Dans le cas dune matrice symtrique n n, lquation (2) admet n racines relles, distinctes ou non. Un certain nombre de mthodes anciennes (Leverrier, Krylov) forment le polynme caractristique et dterminent ses zros. Ces mthodes sont abandonnes, car, en labsence dhypothses supplmentaires sur A, elles sont lentes (calcul des Ci ) et instables (recherche des racines). Par contre, ces deux oprations sont rapides pour une matrice tridiagonale. Vous verrez que lune des mthodes les plus performantes consiste tridiagonaliser A en conservant ses lments propres, puis calculer les racines de son polynme caractristique. tant donn une matrice M orthogonale, je dis que la matrice A est semblable A si A = M T AM . On a le thorme : A et A ont mmes valeurs propres. Le vecteur propre u associ la valeur propre est dni par la relation : Au = u Dans le cas particulier dune matrice symtrique, les vecteurs propres (au nombre de n) peuvent tre choisis comme orthonorms : ils forment une base complte. Soit U la matrice dont les colonnes sont les vecteurs propres. Les lectrices vrieront sans peine que lensemble des n quations du type (3) peut scrire : AU = U si dsigne une matrice diagonale dont les seuls lments non nuls sont les valeurs propres. De par sa dnition, U est orthogonale, U T = U 1 . En eet, llment i, j du produit U T U est le j produit scalaire de la ligne i de U T , soit le vecteur ligne uT i , par la colonne j de U , soit u . Comme 111

An_Num

112

les vecteurs propres sont orthonorms, jai (U T U )i,j = i,j ; autrement dit, ce produit de matrices se rduit la matrice unit. Finalement : = U T AU ce qui traduit le thorme suivant. Une matrice symtrique peut toujours tre diagonalise au moyen dune similitude ; la matrice de transformation est orthogonale et ses colonnes forment un jeu complet de vecteurs propres.

10.2
10.2.1

Mthode de la puissance n-ime et mthodes drives


Puissance n-ime

Il arrive parfois que lon recherche uniquement la plus grande des valeurs propres. La mthode de la puissance n-ime rpond bien ce besoin. Lalgorithme est trs simple. Ayant fait choix dun vecteur initial x(0) , je forme par rcurrence : x(n) = Axn1 = An x(0) . Le vecteur x(n) tend vers le vecteur propre associ la plus grande valeur propre (en module) ; (n) (n1) appelons-la 1 . Le rapport de deux composantes homologues de x(n) et x(n1) , soit xk /xk , tend vers 1 . La dmonstration est facile dans le cas dune matrice symtrique, bien que la mthode qui vient dtre expose soit plus gnrale. Soient u(i) , i les lments propres de A. Je peux dvelopper x(0) sur la base des u(i) : x(0) =
i

ci u(i)

Appliquons A : x(1) = Ax(0) =


i

ci Au(i) =
i

ci i u(i)

puis A2 : x(2) = Ax(1) =


i ( i) ci 2 iu .

Il est facile dcrire le cas gnral si lon se souvient de ce que Ak admet les mmes vecteurs propres que A et les k i comme valeurs propres : x(k) =
i (i) (1) ci k = k + 1 iu 1 c1 u (k) i=2

ci (i /1 )k u(i) .

Comme i /1 < 1, la proprit est dmontre. Exemple. Cherchons la plus grande valeur propre de A= 2 1 1 2

partir du vecteur [1, 0]T . La suite des vecteurs itrs et les valeurs approches de la valeur propre, calcules partir de la deuxime composante, sont : k x(k) (k) 1 2 1 2 5 4 2,5 3 14 13 2,8 4 41 40 2,93 5 122 121 2,98 6 365 364 2,99

An_Num Le programme ci-desous


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 // p u i s s a n c e nime A = [1 ,2;3 ,1]; u = [ 1;0.1]; xset ( "window" , 0 ) , xbasc ( 0 ) xsetech ( [ 0 , 0 , 1 , 1 ] , [ 1 . 1 , 1 . 1 , 0 . 1 5 , 0 . 1 5 ] ) plot2d ( 0 , 0 , s t y l e = 1, f r a m e f l a g =0) xarrows ( [ 0 , u ( 1 ) ] , [ 0 , u ( 2 ) ] , 0 . 0 5 ) xstring ( u ( 1 ) , u ( 2 ) 0 . 1 , s t r i n g ( 0 ) ) for i = 1 : 8 u = A u ; c o e f = max( abs ( u ) ) u = u/ c o e f xarrows ( [ 0 , u ( 1 ) ] , [ 0 , u ( 2 ) ] , 0 . 0 5 , i +1) xstring ( u ( 1 ) , u ( 2 ) 0 . 1 , s t r i n g ( i ) ) end

113

a produit une reprsentation graphique de ces calculs Comme le montre lexemple, il arrive que Fig. 10.1 Recherche dun vecteur propre par la mthode de la puissance n-ime
1.2

1.0

5 4 3 2

0.8

0.6 1 0.4

0.2

0.0

0.2 0.2

0.0

0.2

0.4

0.6

0.8

1.0

1.2

certaines composantes de u(i) deviennent trs grandes (ou trs petites) au cours du calcul. Pour (i) viter tout problme de dpassement de capacit, on normalise x(i) de telle faon que supm |xm | = 1, avant de calculer x(i+1) (normalisation au sens de la norme innie). Le facteur de normalisation est alors lapproximation de la valeur propre. Le

10.2.2

Puissance n-ime avec dcalage

La rapidit de convergence de lalgorithme prcdent dpend des rapports i /1 . La convergence sera lente sil existe une autre valeur propre proche de 1 . Il est possible dacclrer la convergence, en augmentant les dirences entre valeurs propres. Il sut de remarquer que A et A = A sI ont mmes vecteurs propres (ces matrices commutent) et que leurs valeurs propres dirent par une translation. Si u et sont lments propres de A, alors : (A sI )u = Au sIu = ( s)u Ce procd est utile dans le cas 1 = 2 ; aprs changement dorigine, 1 pourra tre trs dirent de 2 .

An_Num

114

10.2.3

Puissance n-ime de linverse

Je 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 A1 . Je vous laisse les lecteurs dmontrer ce rsultat. Dans la pratique, on ne calcule pas x(n) = A1 x(n1) , mais on rsout le systme linaire Ax(n) = x(n1) , ce que lon peut faire rapidement en formant une fois pour toute la dcomposition LU de A. Cette mthode a pour mrite principal de servir dintroduction lalgorithme suivant, plus utile.

10.2.4

Puissance n-ime de linverse avec dcalage

Considrons la matrice B = (A sI )1 ; quels sont ses lments propres ? Si s ne concide pas avec lune des valeurs propres de A, B est rgulire et commute avec A. Elle admet donc les mmes vecteurs propres. Soit u lun de ces vecteurs ; il obit la relation Au = u, ou encore u = A1 u, ce qui montre que 1/ est valeur propre de A1 ; en combinant ce rsultat avec les proprits de A sI , je vois que 1/( s) est valeur propre de B . tant donn un vecteur initial x(0) , je forme par rcurrence : x(k) = Bx(k1) = B k x(0) = (A sI )k x(0) . Dveloppons x(0) selon les vecteurs propres de A, en appelant m la valeur propre la plus proche de s : k ci cm m s um + x(k) = u = ci ui k i k ( s ) ( s ) i s i m i
i= m

Comme |m s| < |i s|, le vecteur x(k) converge vers un vecteur proportionnel u(m) . Ici encore, il ne faut pas calculer les inverses des matrices, mais rsoudre des systmes linaires, comme (A sI )x(k) = x(k1) . Cet algorithme peut me permettre de calculer toutes les valeurs propres de A. Il sut de balayer, laide du paramtre s, lintervalle o doivent se trouver les valeurs propres. Pour chaque valeur de s, litration sur x converge vers le vecteur propre appartenant la valeur propre la plus proche de s ; par ailleurs, le rapport de deux coordonnes permet le calcul de cette valeur propre : (k) (k1) xj /xj = 1/(j s). En fait, la mthode savre peu pratique pour la recherche systmatique des valeurs propres ; elle est au contraire trs commode pour dterminer les vecteurs propres, connaissant des valeurs approches des i . Supposons en eet quune autre mthode, dirente, mait fourni un nombre , valeur approche au millime de m . Si je choisis s = , lalgorithme prcdent va converger en quelques itrations vers le vecteur propre associ m , condition que toutes les autres valeurs propres dirent de m par plus de quelques millimes. Exemple. Au 2.1, jai trouv une valeur approche de la plus grande valeur propre dune matrice A, soit s = 2, 99. Cherchons le vecteur propre correspondant partir de x(0) = (1, 0)T . Il me faut rsoudre le systme : 1, 01u + v = 1, u 1, 01v = 0, dont la solution est [50, 2487; 49, 7512]T ou [1; 0, 990099]T aprs normalisation. Une autre itration donnerait le vecteur [1; 0, 99995]T exact 5 105 prs.

10.3

Mthode de Jacobi

Contrairement aux algorithmes prcdents, la mthode de Jacobi permet le calcul de tous les lments propres simultanment. Il sagit deectuer une srie de similitudes qui vont amener la matrice carre symtrique A progressivement la forme diagonale, tout en prservant ses valeurs propres.

An_Num

115

10.3.1

Principe

Le principe de la mthode est facile comprendre sur le cas deux dimensions, et cest par l que je commence. Soit la matrice : a11 a12 A= a12 a22 que je souhaite diagonaliser par une similitude A = RT AR, o R est une matrice orthogonale qui scrit : cos sin c s R= = . sin cos s c Un calcul lmentaire montre que : A = a11 c2 2a12 sc + a22 s2 a12 (c2 s2 ) + (a22 a11 )cs a12 (c2 s2 ) + (a22 a11 )cs a11 s2 + 2a12 cs + a22 c2 .

Je peux alors diagonaliser A en choisissant selon la relation : tg2 = 2a12 /(a22 a11 ). de Ces petits calculs admettent une interprtation gomtrique simple. Soit x = (x1 , x2 ) un vecteur 2 ; la matrice A, jassocie la forme quadratique xT Ax et lquation :
2 xT Ax = 1 = a11 x2 1 + (a12 + a21 )x1 x2 + a22 x2

qui reprsente une conique ; je suppose, pour xer les ides, que cette courbe est une ellipse. Jeectue maintenant le changement de repre dni par : x = Ry . Il sagit dune rotation des axes dangle . Je fais le changement de variables dans lquation de lellipse : (Ry )T ARy = yRT ARy = yA y = 1 La nouvelle quation de la conique est dnie par la nouvelle matrice. Si A est diagonale parce que jai fait un bon choix pour , lquation scrit :
2 2 a11 y1 + a22 y2 = 1.

Une rotation de /3 amne les axes rouges sur les axes bleus. On dit que la conique a t ramene ses axes principaux ; les axes principaux sont aussi les axes de symtrie de lellipse. Les termes croiss ou rectangles ont disparu de lquation. La gnralisation de ce procd n dimensions constitue lalgorithme de Jacobi.

10.3.2
(n)

Mthode de Jacobi

Je vais appliquer la matrice A une suite de similitudes A A(1) 1 A(2) 2 1 (i1) A , avec A(i) = Ri A Ri de telle manire que A(n) tende vers une matrice diagonale D dlments diagonaux i . Il est facile de comprendre pourquoi la diagonalisation nest quapproche. A laide dune rotation des axes du plan (x1 , x2 ), je peux annuler llment a12 comme au paragraphe prcdent. Mais, lorsque que japplique une nouvelle similitude pour faire disparatre a13 , tous les lments de la ligne 1, en particulier le zro que je viens de crer en a12 , sont modis. Ce nest que progressivement que la "substance" de la matrice va se concentrer sur la diagonale. A

An_Num

116

Fig. 10.2 Une ellipse, avec un repre quelconque en rouge et les axes principaux en bleu

est symtrique, relle. Le passage de A(i) (lments ars ) A(i+1) (dlments ars ) fait intervenir la matrice orthogonale Rjk qui vaut (en posant c = cos jk et s = sin jk ) : = 1 0 0 . . . . . . . . . 0 0 0 .. . 0 0 . . . . . . . . . . . . c s 1 s c .. . 0 1

Rj,k

Rjk reprsente une rotation des axes dans le sous-espace (j, k ). Seules les colonnes j et k et les lignes j et k de A(i+1) dirent de celles de A(i) . En calculant dabord AR, puis RT AR, vous montrerez que les quations de transformation scrivent : ars = ars , r, s = j, k, = carj sark , r = j, k, = sarj + cark , r = j, k,

arj = ajr ark = akr

ajj = c2 ajj + s2 akk 2csajk , ajk = akj = cs(ajj akk ) + (c2 s2 )ajk , akk = s2 ajj + c2 akk + 2csajk . Langle de rotation est dni par la condition ajk = 0 tg 2jk = (akk ajj )/(2ajk ). En pratique, on eectue les calculs sur une moiti de la matrice, puisque la similitude respecte la symtrie. On ne calcule pas non plus ajk , dont on sait quil est nul. Je peux donner une indication sur la convergence de la mthode. Nous dnissons les normes

An_Num extradiagonales de A et de A par les relations : S2 =


j =k

117

|ajk |2 ; S 2 =
j =k

|ajk |2 .

En remplaant les ajk par leurs expressions, on montre que S < S , si bien que la suite des S (A(j ) ), positive dcroissante, converge. Il est un peu plus dicile de montrer que les S (A(j ) ) tendent vers zro, condition que les lments liminer soient choisis dans lordre "lexicographique" a12 , a13 , . . . , a1n , a23 , . . . , a2n , . . . On arrte le calcul quand sup |aij | < seuil. Lorsque la convergence est atteinte, la matrice est rpute diagonale et QT AQ = D , avec R1 R2 Rn = Q. Les colonnes de Q sont les vecteurs propres et nous intressent. Il serait ruineux de conserver les matrices Ri pour les multiplier la n. Je procde en fait par rcurrence, en posant Qk = R1 R2 Rk , k < n et Qk+1 = Qk Rk+1 . Chaque fois que je dnis les lments dune matrice R, jen prote pour former la matrice Qk+1 (lments qrs ) partir de Qk (lments qrs ) : qrs = qrs , r, s = j, k, qrj = cqrj + sqrk , r = j, k, qrk = sqrj + cqrk , r = j, k ; Ds que lordre de la matrice dpasse une dizaine, la mthode de Jacobi est moins rapide que la rduction de la matrice la forme tridiagonale, suivie dun calcul de valeurs propres. Cette remarque est dautant plus pertinente que A a la forme dune matrice bande plus ramasse : la mthode de Jacobi dtruit cette structure. Exemple. Je me propose de diagonaliser la matrice symtrique 1.0 1. 0.5 A = A0 = 1.0 1. 0.25 0.5 0.25 2.0 Je calcule dabord le carr de la norme diagonale -->sum(A.*A) = 8.625 et le carr de la norme complte de A : -->trace(A.*A) = 6.0 Pour annuler llment a12 , il faut eectuer une premire rotation dans le sous-espace (1,2). Comme a22 = a11 , jai 2 = /2, = /4, si bien que .7071068 .7071068 0. R1 = .7071068 .7071068 0. 0. 0. 1. et 0. T 0. A1 = R 1 AR1 = .1767767 0. .1767767 2. .5303301 .5303301 2.

La norme au carr reste constante, sum(A1.*A1) = 8.625, alors que la somme des carrs des lments diagonaux augmente : trace(A1.*A1) = 8. La deuxime rotation, destine annuler le plus grand lment extradiagonal, soit a1 23 , est encore particulire, = /4 et 1. 0. 0. R2 = 0. .7071068 .7071068 0. .7071068 .7071068

An_Num 0. .125 .125 T 1.4696699 2.220E 16 A2 = R2 A1 R2 = .125 .125 2.220E 16 2.5303301

118

2 Les tous petits nombres a2 23 = a32 sont ds des erreurs darrondi ; je fait le mnage pour les faire disparatre

A2 = clean(A2) = ! 0. ! - .125 ! .125

.125 1.4696699 0.

.125 ! 0. ! 2.5303301 !

Je surveille le carr de la norme complte, sum(A2.*A2) = 8.625 et le carr de la norme diagonale, trace(A2.*A2) = 8.5625. Vous remarquez que les lments prcdemment annuls ont tendance repousser, bien que moins vigoureusement. 2 2 La troisime rotation, dans le sous-espace (1,2), vise liminer a2 12 . Je trouve tg 2 = 2a12 /(a22 2 a11 ) = 0.1701062, do la matrice de rotation .9964533 .0841471 0. R3 = .0841471 .9964533 0. 0. 0. 1. et la matrice A3 , dbarrasse dlments infrieurs 1016 : .0105558 0. .1245567 0. 1.4802257 .0105184 A3 = .1245567 .0105184 2.5303301 Les lments diagonaux se renforcent : trace(A3.*A3) = 8.59375. La quatrime rotation aura lieu dans le sous-espace (1,3), avec tg 2 = 0.0980419 ou = 0.0488648 rd. La matrice de rotation scrit .9988064 0. .0488453 0. 1. 0. R4 = .0488453 0. .9988064 et permet dobtenir .0166471 A4 = .0005138 0. .0005138 1.4802257 .0105058 0. .0105058 2.5364214

Mon critre de convergence est atteint : jarrte litration. Le carr de la norme diagonale vaut maintenant 8.6247788 ( 3 104 du total). Les vecteurs propres sont les colonnes de la matrice de similitude globale ; comme je nai manipuler que 4 petites matrices, je forme R directement .7213585 .4387257 .5358747 R = R1 R2 R3 R4 = .6861572 .5577276 .4670419 .0939688 .7045989 .7033564 Cette matrice est orthogonale aux erreurs darrondi prs, comme vous le vrierez en formant RT R. Je vous recommande aussi deectuer le produit de A par une colonne de R, pour vrier que lon obtient bien un vecteur proportionnel cette colonne et la valeur propre correspondante. Enn, je peux demander Scilab de faire les calculs directement, avec une tolrance de lordre de 1016 : -->[D,X] = bdiag(A) X = ! .7212071 - .5314834

.4442811 !

An_Num ! - .6863493 ! - .0937280 D = ! - .0166473 ! 0. ! 0. .4614734 .7103293 0. 2.5365259 0. .5621094 ! .6976011 ! 0. ! 0. ! 1.4801214 !

119

Lerreur encourue sur les valeurs propres aprs 4 itrations de lalgorithme de Jacobi nexcde pas 104 . Les vecteurs propres sont nettement moins prcis. Cest toujours le cas pour lalgorithme de Jacobi. Une dernire remarque : lordre dans lequel apparaissent les valeurs propres et les vecteurs propres associs est arbitraire, de mme que le signe des vecteurs propres.

10.4

Rduction la forme tridiagonale

Il est avantageux dabandonner lobjectif de lalgorithme de Jacobi (diagonaliser une matrice symtrique par une suite convergente de similitudes) pour un objectif plus restreint : amener la matrice relle symtrique A la forme tridiagonale. En eet, la dtermination des lments propres dune matrice tridiagonale est trs rapide. Dautre part, la transformation de A en matrice tridiagonale ncessite, grce lalgorithme de Householder, un nombre ni doprations.

10.4.1

Matrice de Householder

Lalgorithme de Householder se comprend facilement partir de sa reprsentation gomtrique dans lespace trois dimensions. Soient un point M et un plan (P), contenant lorigine (mais pas M) et normal au vecteur unitaire n . Je cherche construire le point M qui se dduit de M par une symtrie orthogonale par rapport (P). La droite passant par M et perpendiculaire (P) perce ce plan en K ; elle passe aussi par M. Le vecteur KM est parallle n ; sa longueur est celle de la projection orthogonale de OM sur n ; autrement dit, KM = (n OM )n . Par symtrie, KM est loppos de KM . Je peux relier M M par OM = OM +M M = OM 2KM = OM 2(n OM )n . Il est clair que OM = OM , la symtrie prservant les longueurs. Lorsque je reprsente les vecteurs par des matrices colonne, les relations prcdentes deviennent OM = x, OM = x et x = x 2(n T x)n = x 2n n T x = (I 2n n T )x, les dernires formes tant rendues possibles par lassociativit des produits. Ce raisonnement se gnralise sans peine lespace n dimensions, mme si la reprsentation gomtrique devient plus dicile. Soit w un vecteur unitaire de n : wT w = 1. Je dnis une matrice : P = 1 2wwT . Cette matrice est symtrique : P T = P parce que le transpos dun produit est gal au produit des transposes dans lordre inverse. Elle est aussi orthogonale : P T P = P P = (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 = P x = x 2(wwT x), alors : y T y = xT P T P x = xT x.

Je mintresse maintenant la rciproque du cas prcdent :je voudrais dterminer un vecteur w (et donc une matrice P ) tel quun x donn soit transform par P en un vecteur donn lavance

An_Num et mme, plus prcisment, en un multiple du premier vecteur de la base canonique P x = k e1 .

120

Daprs les relations prcdentes, il apparat que |k |2 = x 2 = xT x L2 et k = L. De plus, daprs la dnition de P x, x k e1 = 2wwT x = 2(wT x)w : le vecteur w doit tre proportionnel x k e1 . Comme il doit tre en plus normalis, je peux crire w= De plus x k e1 x k e1

2 1 /2 x k e1 = x Le1 = [(x1 L)2 + x2 . 2 + .... + xn ]

On montre quil vaut mieux choisir le signe moins (pour viter des erreurs darrondi), si bien que : |x1 k |2 = |x1 + L|2 = L2 + 2L|x1 | + x2 1. Il sen suit que : x k e1
2

= 2L2 + 2L|x1 |. On peut crire, sans normaliser le vecteur w : P = 1 uuT

avec : L = x , k = L, u = x k e1 = [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 : 5 10 15 5 5 10 16 6 2 2 1 15 6 11 3 3 P = 20 5 2 3 19 1 5 2 3 1 19 et on vrie que P x = [4, 0, 0, 0, 0]T .

10.4.2

Tridiagonalisation

Je vais utiliser des matrices de Householder comme P pour amener la matrice relle symtrique A la forme tridiagonale, laide dune srie de similitudes : A(i) = Q(i) A(i1) Qi . Le premier produit (prmultiplication qui agit sur les colonnes), QT A, doit laisser invariant a11 et doit transformer le vecteur [a21 , a31 , . . . , an1 ]T en [k, 0, 0, . . .]T , un multiple du premier vecteur de la base canonique de n1 . Il faut donc faire agir une matrice de Householder Pn1 de dimension n 1 ; celle-ci sera insre dans une matrice dordre n ayant la structure Q= 1 0 0...0 Pn1
T

Le deuxime produit (QT A)Q (postmultiplication agissant sur les lignes) fera de mme pour la premire ligne de A : a11 invariant et [a12 , a13 , . . . , a1n ] transform en [k, 0, . . . , 0]. Vous imaginez sans peine la suite de litration : laide dune matrice de Householder n 2 n 2, je forme une nouvelle matrice Q, dordre n 1, dont la mission sera dannuler les lments a42 , . . . , an2 et a24 , . . . , a2n (ce sont les mmes). Au bout de n 2 similitudes, la matrice sera exactement sous forme tridiagonale : cet algorithme est plus compliqu que celui de Jacobi, mais il aboutit au rsultat cherch en un nombre ni doprations. Il faudra, en principe, garder les matrices Qi pour le calcul des vecteurs propres. Si y est un vecteur propre de An2 , x = Q1 Q2 Qn2 y est vecteur propre de A. En pratique, le produit des Q est accumul au fur et mesure.

An_Num Exemple Je vais tridiagonaliser la matrice qui ma dj servi illustrer la mthode de Jacobi : 1. 1. .5 A = 1. 1. .25 .5 .25 2. Le bas de la premire colonne constitue le vecteur traiter xx = A(2 : 3, 1) = Je calcule successivement k 1. .5 .

121

= sqrt(x*x) = 1.118034, w = x k [10] = .1180340 .5 .2297529 .9732490 ,

que je normalise w = w/sqrt(w w) = Jen dduit P = eye(2, 2) 2 w w = Je vrie ce premier rsultat P A(2 : 3, 1) = P x = Je construit la matrice Q avant de tridiagonaliser : Q = [1 0 0; 0 P (1, 1) P (1, 2); 0 1. 0. 0. P (2, 1) P (2, 2)] = 0. .8944272 .4472136 . 0. .4472136 .8944272 1.118034 2.776E 16 . .

.8944272 .4472136 .4472136 .8944272

Pour une matrice 3 3, il ny a quune tape de tridiagonalisation : 1. 1.118034 0. 1.4 .55 . A1 = clean(A1) = 1.118034 0. .55 1.6 Quelques vrications lmentaires : trace(A1) = 4. = trace(A) et det(A1) = -.0625 = det(A).

10.4.3

Calcul des valeurs propres

Soit J une matrice tridiagonale symtrique relle dordre n : 1 2 0 0 2 2 3 0 J = 0 3 4 4 . . .. .. . . . . n n

An_Num

122

Nous supposons les i tous dirents de zro. Nous pouvons former facilement le polynme caractristique de J , en procdant par rcurrence. Dnissons en eet la matrice partielle : 1 2 0 2 1 3 Ji = i i i et pi (x) = det[Ji I ]. En dveloppant ce dterminant en fonction des lments de la dernire colonne, je trouve les relations : p0 (x) = 1; p1 (x) = 1 x;
2 pi (x) = (i x)pi1 (x) i pi2 (x).

Toute mthode ecace de recherche des zros dun polynme est maintenant applicable au calcul des valeurs propres (les racines de pn ) ; la mthode de bissection est stable et commode. On peut aussi utiliser lalgorithme de Newton, en calculant la drive de pn laide de la rcurrence : p0 (x) = 0; p1 (x) = 1,
2 pi (x) = pi1 (x) + (i x)pi1 (x) i pi2 (x).

10.5

Matrices hermitiques

On rencontre souvent , en physique, des matrices hermitiques : comment chercher leurs lments propres ? La mthode de Householder peut stendre des matrices complexes, mais la programmation en Pascal est pnible, puisque ce langage ignore le TYPE complexe et que lon est oblig de rcrire toutes les oprations arithmtiques (ce ne serait pas le cas en FORTRAN ou en C). Une autre mthode consiste sparer partie relle et partie imaginaire du problme de valeurs propres. Je cherche des solutions de : Ax = x, o A est hermitique et est rel. Je pose A = A + i , x = x + ix . Lhermiticit de A impose la symtrie de A et lantisymtrie de A ( A T = A ). En sparant partie relle et partie imaginaire : A x A x = x , A x + A x = x .

Ces relations peuvent tre considres comme le dveloppement par blocs de lquation : A A A A x x = x x .

Jai ainsi remplac un problme n n complexe en un problme 2n 2n rel. Le nombre de valeurs propres a-t-il doubl pour autant ?

Chapitre 11

Traitement de donnes exprimentales


11.1 Introduction

Chaque fois que je cherche mesurer pratiquement une grandeur, jobtiens un rsultat plus ou moins loign de la "vraie" valeur. En rptant lexprience, en amliorant la technique, la mthode et les instruments de mesure, jai lespoir (souvent vri) que la part derreur va diminuer et que les rsultats vont sapprocher asymptotiquement dune estimation raisonnable et sre. Des considrations de ce genre sappliquent toute activit et en particulier aux mesures physiques, qui sont toujours entaches derreurs et dincertitudes, lesquelles doivent tre rduites par des perfectionnements de la technique et aussi estimes pour tablir la validit des rsultats. Il est commode dtablir une classication des erreurs qui guettent la personne qui eectue des mesures. On distingue ainsi les erreurs systmatiques, qui dcoulent par exemple dun mauvais talonnage dun instrument ou dun biais de lobservateur. Si, pour prvoir lissue dun prochain scrutin prsidentiel, je ninterrogeais que des personnes de sexe masculin, dge suprieur 50 ans et dont les revenus sont suprieurs 300 000 F/an, jaboutirais une prdiction biaise, entache dune erreur de mthode. De mme la mesure des dimensions dune pice avec une rgle tordue, la mesure prcise dune masse sans tenir compte de la pousse dArchimde de lair... Dautre part, malgr la bonne volont de la personne charge des mesures, il peut sintroduire des erreurs non reproductibles, alatoires. Cest par exemple le cas lorsque la sensibilit de lappareil est insusante et que le signal cherch est accompagn de bruit . Les erreurs alatoires aectent la prcision de la mesure : plus elles sont importantes, plus les mesures sont disperses. Les erreurs systmatiques aectent la justesse du rsultat. Si la dispersion se dtecte aisment, le biais est moins visible ; en toute rigueur, il faudrait, pour le mettre en vidence, disposer dune mesure juste et indpendante de la quantit en question. On augmente la prcision dune exprience en rptant celle-ci plusieurs fois et en retenant la moyenne des rsultats individuels. On amliore la justesse en analysant avec soin la mesure et en cherchant toutes les causes derreurs possibles. Dans les paragraphes qui suivent, je considrerais a priori que je dispose de mesures parfaitement justes, seulement aectes derreurs alatoires. Cette situation permet de faire des prdictions assez simplement. Le rsultat dune mesure est considr comme le rsultat du tirage dune variable alatoire, superposition de la valeur "vraie" (non uctuante ou certaine) et de lerreur ; je supposerai que les erreurs sont additives, cest--dire quun rsultat Y est la somme de la valeur vraie inconnue s et dune erreur : Y = s + . Comme est rpute alatoire, je suis conduit considrer les lois de probabilits les plus frquentes qui peuvent caractriser une grandeur alatoire. Une mesure physique est rarement

123

An_Num

124

utilise seule ; je chercherai souvent tirer parti dune srie de rsultats, pour dterminer les paramtres qui dnissent un modle thorique. Quelle est linuence des erreurs de mesures sur la prcision de mes connaissances des paramtres ? Je donnerai quelques lments de rponse la n du chapitre.

11.2
11.2.1

Probabilits
Variables discrtes

Je suppose que les lecteurs ont des connaissances lmentaires en thorie des probabilits et je ne ferai que rappeler quelques dnitions. Je commence par le cas de grandeurs alatoires discrtes, qui ne prennent que des valeurs entires ou quivalentes des entiers (pile ou face, lancement dun d, tirage du loto). Les dirents rsultats possibles dun tirage ou dune preuve, Xi , sont reprs par lindice i, 1 i n. Soit pi la probabilit du rsultat i. Ces grandeurs sont normalises, en ce sens que
n 1

pi = 1. La valeur moyenne dune grandeur alatoire X est note < X > ou ; on a :


n

< X >
1

pi Xi .

(11.1)

Un autre paramtre important est lcart type tel que : 2 < (X < X >)2 >; (11.2)

2 est appele la variance de X . Il arrive souvent que lon sache que tous les rsultats dune preuve sont galement probables (lancement dun d quilibr par exemple). La probabilit dun vnement complexe est alors proportionnelle au nombre dvnements lmentaires qui le compose (exemple : faire apparatre un nombre pair en lanant un d a une probabilit de 3/6). On traduit souvent ce fait en disant que la probabilit dun vnement compos est le rapport du nombre de cas favorables au nombre de cas total.

11.2.2

Variables continues

Ces dnitions prennent une forme un peu dirente lorsque la quantit X est une grandeur relle, continue, dnie dans un intervalle ni ou non. Il est commode dintroduire la fonction de rpartition de X , qui est la probabilit dobserver une valeur de X infrieure ou gale x : F (x) = P roba(X x) et la densit de probabilit de X qui est la drive de la fonction prcdente : f (x) = F (x). On linterprte comme la probabilit de trouver X dans un petit intervalle : f (x)dx = P roba(x X x + dx).

An_Num

125

1.2

1.0

0.8

0.6

P
0.4

0.2

P
0 1 2 3 4 5 6 7 8 9 10

La gure montre les deux fonctions F et F = f et la reprsentation gomtrique de la probabilit de trouver X dans lintervalle [5,3..6,4]. La densit de probabilit est normalise : f (x)dx = 1, ce qui implique que la fonction de rpartition F varie de 0 1 dune extrmit lautre de lintervalle de dnition. La valeur moyenne et lcart type sont alors dnis comme : < x > 2 xf (x)dx, (11.3) (11.4)

(x < x >)2 f (x)dx,

les intgrales tant tendues tout le domaine permis de x.

11.3
11.3.1

Lois de probabilit
Loi Binomiale

Soit une preuve alatoire nayant que deux rsultats possibles : A et B ; si A ne se ralise pas, il y aura ralisation de lvnement complmentaire B (vnements mutuellement exclusifs). Soit p la probabilit de A, et donc q = 1 p celle de B. Procdons n preuves conscutives et indpendantes. Je peux dnir une variable alatoire valeurs entires X gale au nombre dapparitions du rsultat A sur lensemble des n preuves. La probabilit pour que A se ralise exactement k fois (et donc B n k fois), sans tenir compte de lordre des vnements, scrit :
k k nk P (X = k ) b(k ; n, p) = Cn p q .

(11.5)

Cette loi de probabilit est appele 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)

An_Num

126

11.3.2

Loi de Poisson

Lorsque 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. Jessaie de rendre plausible le passage dune loi lautre, par le raisonnement suivant. Pour k = 0, jai b(0; n, p) = (1 p)n = (1 De plus, je dduis de la dnition de b(k ; n, p) la relation b(k ; n, p) (k 1)p = b(k 1; n, p) k (1 p) . k n ) n e .

Cette relation de rcurrence me permet de calculer successivement b(1; n, p) = e , b(2; n, p) = 2 e 2

et ainsi de suite. Je note p(k ; ) cette valeur approche de b(k ; n, p) : cest la loi de Poisson, laquelle scrit en gnral k p(k ; ) = e . (11.7) k! On montre que < k >= et que lcart-type obit 2 =< k >. Cette loi de probabilit intervient dans tous les problmes de comptage en radioactivit comme en microbiologie.

11.3.3

Loi normale ou de Gauss

Lorsque le nombre dpreuves n et le nombre de succs k deviennent grands (en pratique suprieurs 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 repre tel que le maximum de b(k ) soit lorigine ; jai dit que ce maximum avait lieu pour k np =< k >. Il faut donc choisir comme nouvelle variable lcart la moyenne x = k < k >. De plus, lorsque n et k sont grands, je peux approcher les factorielles par la formule de Stirling : n! = nn en 2n. Il vient alors b(x; n, p) 1 x2 exp 2npq 2npq = 1 x2 exp 2 2 2 ,

2 en introduisant lcart-type = npq ; Jai suppos que n et k taient grands ; la quantit 2x 2 varie donc trs peu lorsque k augmente dune unit et je vais pouvoir la considrer comme une variable continue. Je cherche la probabilit pour que la variable alatoire X soit infrieure ou gale x. Cet vnement se produit si X = x 1 ou si X = x 2,. . . si bien que la fonction de rpartition de X scrit x x2 1 exp 2 . F (x) = 2 2

Comme les valeurs de x sont trs serres, je peux remplacer cette somme par une intgrale
x

F (x) =

1 x2 exp 2 2 2

dx .

La fonction exponentielle dcrot trs rapidement lorsque x devient suprieur quelque fois ; je ne commet pratiquement pas derreur en calculant lintgrale depuis . La fonction correspondante

An_Num

127

est considre comme la fonction de rpartition de la loi de Gauss-Laplace. Plus gnralement, celle-ci est dnie par x 1 (x )2 exp N (x; , ) . (11.8) 2 2 2 La probabilit pour que X soit compris entre x et x + dx est proportionnelle la densit de probabilit n(x) = N (x) : n(x)dx = 1 (x )2 exp dx. 2 2 2 (11.9)

Il est commode dintroduire la loi normale rduite (ou standard) pour laquelle = 1 et < x >= 0, reprsente ci-dessous.

1.2

1.0

0.8

0.6

0.4

0.2

0 4 3 2 1 0 1 2 3 4

Vous pouvez maintenant oublier lorigine discontinue de la variable x et la considrer comme une variable continue dnie sur tout laxe rel. Vous pourrez montrer directement ( laide des formules 11.3) que, comme on pouvait sy attendre, la moyenne de X est et que son cart type est .

11.3.4

Loi du chi-deux ou de Pearson

Si X1 , X2 , . . . , Xn sont n variables alatoires indpendantes, chacune distribue selon la mme loi normale de moyenne et dcart type , alors la quantit (Xi )2 / 2 est distribue selon une loi dite du 2 (prononcez qui-deux) n degrs de libert . Si < X >= Xi /n, la variable (Xi < X >)2 / 2 est distribue comme le 2 n 1 degrs de libert. Une variable alatoire X est distribue comme le chi-carr (ou comme le chi-deux) n degrs de libert si sa densit de probabilit est : f (x, n) = La fonction gamma , (x), est lintgrale :

xn/21 ex/2 . 2n/2 (n/2)

(11.10)

(x) =
0

tx1 et dt.

An_Num Elle obit la relation de rcurrence (x + 1) = x(x) et, de plus, (1/2) = .

128

0.20 0.18 0.16 0.14 0.12 0.10 0.08 0.06 0.04 0.02 0 0 2 4 6 8 10 12 14 16 18 20

La gure montre trois versions de la loi du 2 , respectivement pour n = 4, 8, 16. On utilise souvent la fonction de rpartition P (X 2 ) ou la fonction complmentaire Q(X 2 ), que lon trouve tabules dans les ouvrages de statistique mais que lon peut aussi calculer facilement par intgration numrique.

11.3.5

Paramtres de la loi de probabilit et paramtres de lchantillon

Dans la pratique, je dispose dun certain nombre n dobservations dune grandeur Y , rparties au hasard. Lensemble des yi constitue un chantillon extrait de la population de toutes les valeurs possibles de Y . . La variable alatoire Y obit une certaine loi de probabilit p(y ), laquelle est caractrise par une moyenne et un cart-type . Je naurai jamais connaissance de ces paramtres, mais je pourrai essayer de les estimer partir de proprits de lchantillon. Il importe de ne pas confondre paramtres de la population et paramtres de lchantillon. En fait, on a les rsultats suivants : * La meilleure estimation de la moyenne de la population parente est la moyenne m de lchantillon (m = (1/n) yi ). * La meilleure estimation de lcart-type de la population parente est gale lcart-type s de lchantillon, dni par : n 1 s2 = (yi m)2 . (11.11) n1 1 Le facteur n 1 (au lieu de n que lon pourrait attendre) tient compte de ce quune partie de linformation contenue dans lchantillon a t consomme pour calculer m. On dit que les nombres m et s sont respectivement des estimateurs de et . Ce sont des variables alatoires (un autre chantillon donnerait dautres valeurs de m et s). On montre que ces estimateurs sont sans biais, cest--dire que < m >= et que < s2 >= 2 .

11.3.6

Vrication dune loi de probabilit

Je dispose dun chantillon dune variable alatoire Y : suis-je capable de dterminer la loi de probabilit laquelle obit Y ? Non, pas plus que je ne pourrais trouver rigoureusement la moyenne ou lcart-type de Y . La seule approche possible est la suivante. Je fais le choix dune loi de

An_Num

129

probabilit f (y ) et jessaye de vrier lhypothse : les rsultats exprimentaux sont compatibles avec la loi f , avec une probabilit de %. Je ne considre ici quun exemple lmentaire. Soit une preuve conduisant lun ou lautre de r rsultats mutuellement exclusifs dont les probabilits (inconnues) sont p1 , p2 , ...pr . Par ailleurs, je note qi mon estimation de la probabilit du rsultat i. Je vais essayer de vrier lhypothse qi = pi , 1 i r. Je rpte n fois lpreuve et je dsigne par Yi le nombre dapparitions du rsultat i. La quantit Yi /n est proche de pi (loi des grands nombres) et, si lhypothse est valable, elle est aussi voisine de qi . Je dispose alors du thorme suivant. La variable S , dnie comme
r

S=
1

(Yi npi )2 npi

obit la loi de Pearson r 1 degrs de libert, condition que les nombres npi soient assez grands (npi 10 en pratique). Comme jignore les pi , je considre, la place de S , lestimateur
r

T =
1

(Yi nqi )2 , nqi

(11.12)

qui obit peu prs la mme loi de rpartition. Il est clair que T sera petit si mon hypothse est vrie. Je choisis une probabilit ; T tant une variable distribue selon le chi-deux r 1 degrs de libert, je dtermine un nombre 2 vriant P roba(T 2 ) . Je rejette lhypothse si T 2 . En dautres termes, si lcart entre frquences observes et frquences calcules me parait trop grand pour tre d au hasard, je dois conclure que mon hypothse est fausse. Exemple. Jai lanc 120 fois un d, pour obtenir les rsultats consigns ci-dessous. Je fais lhypothse que le d est quilibr, ou encore que la probabilit de chaque face est 1/6. Rang i 1 2 3 4 5 6 nombres observs 25 21 16 28 14 16 total : 120 nombres calculs 20 20 20 20 20 20 total : 120 (yi nqi )2 /nqi 1,25 0,05 0,8 3,2 1,8 0,8 T = 7,9

Je constate, la lecture dune table du 2 , que la probabilit pour que T (avec 5 degrs de libert) soit au moins gal 7,9 est comprise entre 0,1 et 0,2. Lhypothse est considre comme plausible et elle est accepte. Le tableur EXCEL (entre autres) permet dobtenir ce rsultat en quelques pressions de touches. La fonction loi.khi-deux(a2 ;n) renvoie la probabilit dapparition dune valeur de T au moins gale au contenu de la cellule a2 pour un nombre de degrs de libert gal n ; le rsultat est ici 0,1618. La fonction test.khi-deux eectue automatiquement lensemble des calculs, condition de fournir en arguments la plage de cellules contenant les rsultats observs et la plage destine contenir les rsultats attendus.

11.4

Propagation des erreurs

Je mintresse maintenant une grandeur physique G qui est dtermine indirectement partir des mesures de deux grandeurs U et V . Sachant que les valeurs de U et de V sont entaches derreurs alatoires, je me demande quelle peut tre la dispersion de G = g (U, V ). La probabilit dobtenir,

An_Num

130

lors dune mesure particulire, le rsultat (u, v ) dpend de la densit de probabilit conjointe f (u, v ). Plus prcisment, la probabilit pour que U soit dans lintervalle [u, u + du] et V dans [v, v + dv ] est : P roba(u U u + du; v V v + dv ) = f (u, v )dudv. Il faut encore gnraliser la notion de valeur moyenne : < g (u, v ) >= g (u, v )f (u, v )dudv.

La probabilit pour que U soit dans lintervalle [u, u + du], cela quelque soit V , scrit : P roba(u U u + du; V ) = f1 (u) = f (u, v )dv.

partir de la densit f1 , je peux calculer la valeur moyenne < u > et lcart-type u de U , quelque soit V ; des formules symtriques existent pour la variable V . Jintroduis ensuite les moments de la distribution f : mp,q < up v q >= f (u, v )up v q dudv,

puis les "moments centrs" p,q =< (u < u >)p (v < v >)q >. Je trouve en particulier :
2 2,0 = u

2 0,2 = v .

Le moment centr 1,1 < (u < u >)(v < v >) > est souvent appel la covariance de U et V . Les variables alatoires U et V sont dites corrles si 1,1 = 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 les moyennes de quelques mesures de U et V ). Ces estimateurs sont supposs sans biais :< U >= U et < V >= V . Il est raisonnable de choisir G = g (U , V ) comme estimateur de G. Je vais calculer la moyenne et la variance de G . Je fais un dveloppement limit de g autour du point U, V : g (U , V ) = g (U, V ) + (U U )gu + (V V )gv + . . . Dans cette expression, les drives (gU = g/U, gV = g/V ) sont calcules en U, V et sont certaines (non alatoires). La valeur moyenne de cette expression vaut, sachant que U , et V sont sans biais, < g >< g (U , V ) >= g (U, V ) en ngligeant les termes dordre suprieur. g est donc lui-mme, cette approximation, un estimateur non biais. Je calcule maintenant la variance de g
2 g =< [G(U , V ) G(U, V )]2 >=< [(U U )gU + (V V )gV ]2 >

et, en dveloppant la valeur moyenne du carr :


2 2 2 g = 2,0 gU + 21,1 gU gV + 0,2 gV .

Cette formule donne lcart type sur g connaissant les moments centrs de U et V ; on lcrit en gnral en fonction des carts types :
2 2 2 2 2 g = u gU + 2u,v gU gV + v gV ,

(11.13)

o jai introduit la notation habituelle uv = 1,1 pour la covariance. En pratique, on ne connat pas les i,j mais seulement des estimateurs construits partir de rsultats exprimentaux. Si les observations de U et V ne sont pas corrles, alors uv = 0 et la formule prcdente se simplie :
2 2 g = u

g U

2 2 + v

g V

(11.14)

An_Num Exemple. Je considre les fonctions x = uv et y = u/v ; les variances correspondantes sont :
2 2 2 2 2 x = u v + v u2 + 2uv uv

131

2 2 2 2 2 y = u /v 2 + v u /v 4 2uv u/v 3

ce que lon crit en gnral de faon plus symtrique (z = uv ou z = u/v ) : z z


2

u u

v v

uv uv

(11.15)

Dans le cas de variables non corrles, on retrouve un rsultat qui voque laddition des erreurs relatives que lon enseigne dans les cours lmentaires.

11.5

Mthode du maximum de vraisemblance

Un noyau radioactif a une certaine probabilit de dsintgration par unit de temps, note 1/ ; en consquence, pour un grand nombre de noyaux, le nombre de dsintgrations par unit de temps, dN/dt, (la frquence de lvnement) est proportionnel au nombre de noyaux : dN/dt = N (t)/, quation direntielle dont la solution scrit N (t) = N0 et/ . La probabilit de dsintgration par seconde dun noyau est p(t) = (1/ )et/ . Comment dterminer la dure de vie ? Je peux (en principe au moins) mesurer les dates t1 , t2 , . . . , tN auxquelles chacun de ces N noyaux disparat. Si je recommenais lexprience avec une nouvelle famille de N noyaux, jobtiendrais des valeurs des ti direntes des prcdentes : ces uctuations sont dues la nature alatoire du processus radioactif et existent mme si les erreurs de mesure sont ngligeables. La probabilit V ( ) dobserver eectivement les dsintgrations aux poques t1 , t2 , . . . scrit (vnements indpendants) :
N

V ( ) =
i

p(ti ) = exp

ti N ln
1

Le meilleur choix de est celui qui maximise V , cest dire celui qui rend le plus vraisemblable possible le rsultat eectivement observ. Le maximum de V est atteint lorsque ln V est minimal, soit pour la valeur : N 1 = ti . N 1 Autrement dit, la valeur de gale la moyenne des ti calcule sur lchantillon rend maximale la probabilit dapparition de cet ensemble de valeurs. On dit que V est une fonction de vraisemblance et que a t choisi selon un critre de maximum de vraisemblance. Lexemple qui prcde est particulier : si les mesures ne sont pas reproductibles, cest cause de la nature alatoire du phnomne. De plus, le nombre de dsintgrations par seconde est donn par une loi exponentielle (cest en fait un cas particulier de loi de Poisson). Dans beaucoup dautres cas, les mesures vont tre entaches derreurs exprimentales. Je donne encore un exemple simple dapplication du principe de maximum de vraisemblance dans ce cas. Je suppose que jai ralis n dterminations de la grandeur X , que les conditions sont un peu direntes dune mesure lautre, si bien qu chaque mesure est associe une incertitude (carttype) i particulire. La probabilit dapparition de la valeur xi est, comme trs souvent pour des 2 erreurs exprimentales, donne par une loi de Gauss, de valeur moyenne et de variance i : p(xi ) = (x )2 1 exp i 2 2i 2

Je me demande quelle est la meilleure valeur de , en supposant, pour simplier le raisonnement, que les i sont connues. Pour rpondre, je construis une fonction de vraisemblance V (),

An_Num

132

gale au produit des p(xi ), et qui reprsente la probabilit dobserver lensemble des rsultats xi . Comme au paragraphe prcdent, je vais chercher la valeur de qui rend maximale la probabilit V , ce qui revient chercher le minimum de ln V ou de largument de lexponentielle. Il vient :
n

V () =
1

i 2

exp

1 2

n 1

xi i

En annulant la drive par rapport de lexposant, je trouve :


n

=
1

xi 2 i

n 1

1 2 i

La valeur la plus vraisemblable de est la moyenne pondre des valeurs observes xi , les poids tant les inverses des variances relatives chaque mesure. Je peux mme dterminer lincertitude sur : cette quantit dpend en eet des observations xi et obit la loi de propagation des erreurs (nous supposons les mesures indpendantes, donc les corrlations nulles) :
n 2 = 1

xi 1

2 2 i .

Un calcul simple montre que


2 =

n 2 . 1 (1/i )

(11.16)

Lorsque toutes les incertitudes sont gales , cette relation se rduit = . n Lincertitude sur la valeur moyenne dune srie de mesures quivalentes dcrot comme linverse de la racine carre du nombre de mesures indpendantes. (11.17)

11.6

Mthode des moindres carrs

Je vais maintenant appliquer la mthode du maximum de vraisemblance un problme plus gnral. Il me faut, cependant, faire une remarque prliminaire. Bien des gens considre la mthode (on dit souvent le principe) du maximum de vraisemblance comme peu convaincante. Ils prfrent se rfrer plus directement un principe des moindres carrs. Sauf cas particuliers, les deux dmarches sont quivalentes. Jimagine que jai mesur la variation dune grandeur physique y en fonction dune autre grandeur indpendante x : par exemple la susceptibilit magntique dun matriau en fonction de la temprature. Je dispose donc dune srie de rsultats exprimentaux {xi, yi}, i = 1, 2, . . . , n. Les valeurs {xi } de la variable indpendante sont supposes parfaitement exactes, alors que les mesures de y sont entaches derreurs alatoires. Dautre part, jai des raisons de penser que y est li x par une loi physique de la forme : y = f (x, a1 , a2 , ...am ) o les ai sont des paramtres constants. Je suppose que les erreurs qui aectent chaque mesure yi sont additives, indpendantes et rparties selon une loi normale. Je vais donc utiliser le modle Y = f (x, a1 , a2 , . . . , am ) + . Je supposons encore que ce modle est "juste" ou non biais, cest--dire que < >= 0 ou encore que la moyenne de la distribution p(yi ) est f (xi , a1 , ...) = fi =< Yi >. Je souhaite trouver les valeurs

An_Num

133

des ai telles que la loi prcdente reprsente "au mieux" lensemble des rsultats exprimentaux {xk , yk }, k = 1...n. Avec les hypothses faites, je peux crire la probabilit dapparition conjointe des vnements y1 , y2 , . . . , yn : m 1 (y fi )2 exp i V (a1 , a2 , . . . , am ) = 2i 2 i 2 1 ou encore V =
1 m

S exp 2 2

S
1

(yi fi )2 2 i

La quantit S joue un grand rle dans ce formalisme : cest la somme des carrs des carts entre valeurs observes (yi ) et valeurs calcules (fi ), chaque terme tant pondr par linverse du carr de lcart-type. Le maximum de V (la vraisemblance) est atteint lorsque lexposant est minimal. On rejoint ici le principe des moindres carrs qui stipule que les meilleures valeurs des paramtres sont celles qui minimisent la somme (pondre) des carrs des carts entre valeurs exprimentales et valeurs thoriques. Le maximum de V et le minimum de S sont atteints quand S yi fi fi = 2 = 0. 2 ak i ak i=1
m

11.6.1

Ajustement sur une fonction ane

Pour commencer, je considre un modle dpendant linairement de deux paramtres (et linairement de x, bien que cette hypothse ne soit pas ncessaire). Je dit que je vais ajuster les paramtres dun modle linaire ou encore lisser les donnes laide dune droite. Le modle scrit 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 =0 ; 2 i

xi
i=1

yi fi = 0. 2 i

Ces relations constituent en fait un systme de deux quations linaires deux inconnues (a et b). Il est commode de poser
n

S=
i=1

1 2 i

Sx =
i=1

xi 2 i

Sxx =
i=1

x2 i 2 i

Sy =
i=1

yi 2 i

Sxy =
i=1

xi yi 2 . i

Le systme mentionn ci-dessus scrit explicitement : aSxx + bSx aSx + bS = Sxy , = Sy . (11.18)

Ces quations sont appeles quations normales ou quations de Gauss. Le tableau des coefcients est symtrique et les valeurs exprimentales (yi ) napparaissent quau second membre. La 2 solution est lmentaire ; je pose = SSxx Sx et je trouve a = 1 (SSxy Sx Sy ) ; b = 1 (Sxx Sy Sx Sxy ). (11.19)

Les coecients a et b sont des fonctions des variables alatoires yi : ce sont donc elles-mmes des variables alatoires qui nous servent estimer les vraies a et b. Pour apprcier la prcision

An_Num

134

(ou lincertitude) de a et de b, il faut calculer lcart-type de ces paramtres, au moyen de la formule de propagation des erreurs (11.14). Pour u = a ou b, je sais que
n 2 u = 1

u yi

2 2 i .

Je calcule les drives partielles laide des formules (11.19) : a xi S Sx b Sxx xi Sx ; . = == 2 2 yi i yi i Je trouve ensuite S Sxx ; b = . (11.20) Cette mthode lmentaire ne permet pas de trouver la covariance de a et b ; je citerai simplement le rsultat : ab = Sx /. Les formules (11.19) et (11.20) se trouvent assez couramment programmes sur les calculettes. Dautre part, le systme linaire des quations normales dnissant a et b fait intervenir la matrice : Sxx Sx M= , Sx S
2 a =

Je sais dj que det M = et je calcule M1 : M1 = 1 S Sx Sx Sxx = a 2 ab ab b 2 .

Vous voyez que linverse de la matrice des quations normales est la matrice dite des variancescovariances . Cest un cas o le calcul de linverse dune matrice savre fructueux.

11.6.2

Linarisation

Bien des fonctions peuvent, par un changement de variable appropri, se ramener au modle linaire du paragraphe prcdent. Je vais encore traiter un cas particulier. Ltude thorique de la cintique dune raction chimique montre que la concentration dun ractif dpend du temps selon le modle : y = y0 et . Lexprience ma fourni des valeurs yi releves aux instants ti . Pour dterminer y0 et , je linarise ce modle en posant z = ln y : z = ln y0 t t. Dans un calcul de moindres carrs habituel, chaque terme yi fi est pondr par linverse de lcart-type, i . Quel est lcart-type sur ln yi ? Il se dduit de la loi de propagation des erreurs : z = z y y = y y

en supposant que chaque mesure soure de la mme incertitude. Lalgorithme des moindres carrs va fournir la meilleure valeur de , avec son cart-type, , mais cest y0 qui a un sens physique ; jutilise encore la relation (11.14) pour trouver cette fois : y0 = y0 .

An_Num

135

11.7

Qualit de lajustement

Aprs avoir dtermin les meilleures valeurs des paramtres a et b caractrisant un modle linaire, je dois me demander si lexprience vrie ce modle. On dispose pour cela de divers tests statistiques. Je vais dcrire le plus courant, le test dit du chi-deux. Jai montr comment la mthode du maximum de vraisemblance conduisait aux valeurs les plus probables de a et b en rendant minimale la quantit 2 yi fi S2 = i o yi est un rsultat de mesure et fi la valeur de y calcule par le modle pour la mme valeur de la variable indpendante xi . Si le modle tait exact et les uctuations absentes, S 2 serait nul. Ce ne sera pas le cas en pratique, cause des erreurs de mesure dune part, et des dfauts du modle dautre part. Jespre nanmoins que S 2 est petit. Comme il sagit dune somme sur toutes les mesures (n en tout), S 2 augmente avec n. On peut raisonnablement sattendre ce que yi fi soit de lordre de i et S 2 soit de lordre de n. Pour maranchir de leet du nombre de mesures, je pourrais tre tent de considrer la quantit S 2 /n. Ce nest pas tout fait le bon choix, comme le montre lexemple de n = 2. Je peux toujours faire passer une droite exactement par deux points, mais la perfection de cette ajustement nest pas trs convaincante. Il faut en fait rapporter S 2 au nombre de degrs de libert de lexprience ( ), dni comme le nombre de rsultats indpendants (n) diminu du nombre de contraintes ou du nombre de paramtres ajustables (p en gnral, deux pour lexemple dune fonction ane), = n p. Une meilleure mesure de la qualit de lajustement est donc fournie par le chi-deux rduit 2 S2 1 = N p
n i

y i fi i

Daprs les considrations prcdentes,2 est une fonction alatoire dont la valeur moyenne est proche de 1. Aussi, une valeur de 2 / voisine de 1 signale-t-elle un bon modle. De faon un peu plus prcise, je remarque que lune ou lautre des quantits 2 ou S 2 est une somme de carrs de variables alatoires gaussiennes ; elles obissent donc la loi du chi-deux. Je vais devoir dcider si, et avec quelle probabilit, la valeur de 2 dduite de mes mesures peut tre le fait du hasard. Je fais donc lhypothse que mon modle est juste, je fais le choix dun seuil et, muni dune table de la fonction de rpartition de la loi de Pearson, je cherche un nombre u tel que pour une variable T (distribue selon la loi du chi-carr) , P roba(T > u) = . Si 2 / > u, cest que lcart thorie-exprience est trs improbable, ou que mon hypothse est fausse. Il est malheureusement assez frquent que je ne connaisse pas de lincertitude aectant les yi : cest le cas lorsque je nai pas les moyens de rpter les expriences ncessaires. Je suis alors contraint de faire le raisonnement simpli suivant. Je suppose que chaque mesure a la mme dispersion : i = pour linstant inconnue, je dtermine les meilleures valeurs de a et b, puis je recalcule comme 1 2 = (yi a xi b )2 n2 Les carts-types sur a et b peuvent alors tre calculs par les formules (11.20) multiplies par le facteur S /(n 2). Exemple. Jai relev les couples de valeurs suivantes : x y 1 -0,1 2 1,7 4 3,3 5 4,9 8 7,6 9 8,4 10 9,1 12 10,7 15 12,3

et je veux lisser les valeurs de y laide du modle y = ax + b, autrement dit, ajuster au sens des moindres carrs les paramtres a et b pour que lquation propose reprsente au mieux les rsultats exprimentaux. Vous pouvez vous prter au jeu suivant : reporter ces donnes sur papier

An_Num

136

millimtr et dterminer loeil la meilleure droite et les valeurs correspondantes de a et b, avant de faire les calculs. *1er cas (frquent) : jignore les valeurs des erreurs commises sur les y , mais je pense quelles sont toutes alatoires et distribues de faon identique. Je pose alors i = = 1. Comme toutes les formules qui donnent a et b sont homognes en , la valeur exacte importe peu. Le calcul se fait facilement avec une calculette ou avec Scilab. Dans ce logiciel, je dni deux vecteurs x et y contenant les donnes. Jai 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 rsultats sont a = 0.8903, a = 0.0754, b = 0.0958, b = 0.645 ; les points exprimentaux et la droite sont reprsents sur la gure. Si la pente est bien dtermine, lordonne lorigine est imprcise.

17

15

13

11

1 1 1 3 5 7 9 11 13 15 17

Avec ces valeurs de a et b , je recalcule : jadmet que tout cart entre valeur exprimentale et valeur calcule est due une erreur alatoire ; je retiens la moyenne du carr de ces carts comme valeur de 2 (comme indiqu plus haut, je considre quil ny a que n 2 = 7 mesures). Je trouve que = 0.62, do je dduis les bonnes valeurs a = 0.047, b = 0.401. Les amateurs dEXCEL verront que ce logiciel, grce la fonction DROITEREG , peut faire automatiquement les calculs prcdents. *2me cas (idal) : Je sais que les valeurs de y sont entaches derreurs telles que lcart-type sur les 4 premires valeurs de y est de 0,4 et quil est de 0,6 sur les 5 dernires. Jobtiens alors : S = 38, 89 Sx = 225, 0 Sy = 194, 86 Sxx = 1993, 06 Sxy = 1757, 08 do je tire a = 0, 911, a = 0, 038, b = 0, 259, b = 0, 272. La quantit S 2 vaut 11,04 soit un 2 rduit (7 degrs de libert) de 1,577. Les tables donnent une probabilit denviron 0,14 dobtenir par hasard une valeur au moins aussi leve. Le modle est donc accept.

11.8

Coecient de corrlation

Une suite dobservations ma fourni des couples de valeurs (xi , yi ), comme par exemple le nombre de taches solaires observes pendant lanne i et le cours moyen du bourgogne la vente

An_Num

137

des Hospices de Beaune la mme anne. Je me pose la question de savoir sil existe une relation causale entre ces deux variables, en dautres termes, je cherche savoir si x est corrl y . Je vais examiner le cas le plus simple, celui dune corrlation linaire. Si y dpend de x selon la loi linaire y = ax + b, les rsultats du paragraphe prcdent me permette destimer le coecient a. Si x et y sont indpendants, y ne doit, en moyenne, ni crotre ni dcrotre quand x augmente, donc a = 0. Il est aussi permis destimer les paramtres de la loi x = a y + b . Ils sont dirents des prcdents, mais a et a sont lis si x et y sont corrles. Si la corrlation entre x et y est parfaite, les deux lois sont dcrites par des fonctions inverses lune de lautre et a = 1/a ou aa = 1. Je dnis le coecient empirique de corrlation par la relation r = aa . En supposant tous les carts types gaux (une hypothse quil est facile de lever), on trouve la formule ci-dessous. r
n 1 (xi n 1 (xi

< x >)(yi < y >)


n 1 (yi

< x >)2

< y >)2

(11.21)

|r| est compris entre 0 (pas de corrlation) et 1 (corrlation complte) : on considre que x et y sont fortement corrls lorsque que |r| est voisin de 1, pratiquement indpendants si r est proche de 0, mais il est dicile de donner un critre vraiment quantitatif en labsence dhypothses plus prcises sur la nature des erreurs entachant x et y .

11.9

Ajustement sur une fonction linaire de m paramtres


m

Je gnralise hardiment le raisonnement des paragraphes prcdents, pour obtenir lexpression : y (x) =
1

ak k (x)

(11.22)

qui dpend linairement des m paramtres ak , alors que les fonctions k qui dnissent la loi en x sont quelconques. Je souhaite de nouveau rendre minimale la somme des carrs des carts :
n

S =
1

calc 2 obs ] yi [yi 2 i

calc avec, pour chacune des n mesures, yi = y (xi ), la valeur prdite par le modle. Il est commode dintroduire les notations suivantes. A est la matrice n lignes et m colonnes dlments Aij = obs j (xi )/i et b est le vecteur n coordonnes bi = yi /i . De plus, les paramtres ak sont considrs comme les coordonnes dun vecteur a. Les conditions pour que S 2 soit minimale sont : n i=1

1 calc obs yi k (xi ) = 0 2 yi i


n

k = 1, 2, . . . , m.

ce qui scrit : Ma = ; Mik =

i=1 n

1 2 k (xi )j (xi ), i

j =
i=1

1 2 yi k (xi ). i = AT b

Vous pourrez vrier les relations M = AT A ;

o AT dsigne la matrice transpose de A. La matrice M est symtrique dnie positive et le systme linaire se rsout facilement par la mthode de Cholesky. La solution formelle est a = M1 = (AT A)1 AT b.

An_Num

138

Cependant, comme dans le cas 2 inconnues, linverse de M prsente un intrt : llment diagonal [M1 ]ii est la variance (carr de lincertitude) du paramtre ai , alors que les lments non diagonaux [M1 ]ik sont les covariances entre ai et ak .

Vous aimerez peut-être aussi