analyse numérique - Lpc2E
Transcription
analyse numérique - Lpc2E
Université d’Orléans – Faculté des Sciences Licence de physique – 3ème année ANALYSE NUMÉRIQUE T. Dudok de Wit Université d’Orléans Janvier 2013 Table des matières 1 Introduction 1.1 Un exemple : le calcul de 4 p x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Interpolation et extrapolation 4 5 2.1 L’interpolation polynomiale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.2 Autres fonctions d’interpolation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.3 Extrapolation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.4 Interpolation en plusieurs dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3 Différentiation numérique 13 3.1 Estimation de la dérivée première . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.2 Estimation de la dérivée seconde . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.3 Dériver dans la pratique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.3.1 Si f (x) est donnée par un tableau de valeurs . . . . . . . . . . . . . . . . . . . . . . . . 16 3.3.2 Si f (x) est donnée par son expression analytique . . . . . . . . . . . . . . . . . . . . . 16 3.3.3 Impact du bruit sur la dérivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 4 Intégration numérique 19 4.1 Méthodes simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 4.2 Méthodes composées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4.3 Autres méthodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 4.4 L’intégration dans la pratique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 5 Recherche des racines d’une fonction 25 5.1 Méthode de la bisection ou de la dichotomie . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 5.2 Méthode de la “Regula falsi” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 5.3 Méthode de la sécante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 5.4 Méthode de Newton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 5.5 La recherche de racines dans la pratique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 6 Intégration d’équations différentielles 33 6.1 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 6.2 Les méthodes d’Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 6.3 Stabilité des méthodes d’Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 6.4 Méthodes de Runge-Kutta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 6.5 L’intégration dans la pratique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 6.6 Intégrer lorsque l’ordre > 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 6.7 Intégrer en présence de conditions de bord . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 2 Ce fascicule est un support au cours d’analyse numérique Il aborde : l’interpolation, la dérivation et l’intégration numériques, la recherche de racines d’une fonction et l’intégration d’équations différentielles. Deux autres chapitres de l’analyse numérique (algèbre linéaire et optimisation) seront abordés dans le cours de Nathalie Brun-Huret. Les applications se feront avec le logiciel Scilab (un clone gratuit de matlab), dont la documentation et les sources peuvent être téléchargées à l’adresse http://www.scilab.org Quelques références utiles disponibles à la BU sont : • J.-Ph. Grivet, Méthodes numériques appliquées, EDP Sciences, 2009 (très proche du programme du cours, mais avec un contenu plus riche) : http://www.edition-sciences.com/methodes-numeriques-appliquees.htm • A. Fortin, Analyse numérique, Presses Internationales Polytechniques, Montreal, 4ème édition, 2011 (bonne introduction, proche des applications) : http://giref.ulaval.ca/afortin.html • C. Guilpin, Manuel de calcul numérique appliqué, EDP Sciences, 1999 (plus complet et plus théorique que le précédent). • W. Press et al., Numerical Recipes in C, Cambridge University Press, 3ème édition, 2007 (LA référence sur les outils numériques) : http://www.nr.com Des références sur le logiciel Scilab • Le site de Scilab : http://www.scilab.org • Divers manuels d’introduction à Scilab : http://www.scilab.org/resources/documentation/ • P. Depondt, Cours de physique numérique à l’ENS Cachan, 2011 (excellent cours en ligne, mais le niveau est plus proche d’un cours de master) http://bit.ly/101JXn2 Pour me contacter : Thierry Dudok de Wit email [email protected] http://lpc2e.cnrs-orleans.fr/~ddwit/enseignement.html 3 1 Introduction L’ordinateur est aujourd’hui un outil incontournable pour simuler et modéliser les systèmes, mais il faut encore savoir exprimer nos problèmes en langage formalisé des mathématiques pures. Nous sommes habitués à résoudre les problèmes de façon analytique, alors que l’ordinateur ne travaille que sur des suites de nombres. On verra dès lors qu’il existe souvent plusieurs approches pour résoudre un même problème, ce qui conduit à des algorithmes 1 différents. Un des objectifs de ce cours est de fournir des bases rigoureuses pour développer quelques algorithmes utiles dans la résolution de problèmes en physique. Un algorithme, pour être utile, doit satisfaire un certain nombre de conditions. Il doit être : • rapide : le nombre d’opérations de calcul pour arriver au résultat escompté doit être aussi réduit que possible. • précis : l’algorithme doit savoir contenir les effets des erreurs qui sont inhérentes à tout calcul numérique. Ces erreurs peuvent être dues à la modélisation, à la représentation sur ordinateur ou encore à la troncature. • souple : l’algorithme doit être facilement transposable à des problèmes différents. 1.1 Un exemple : le calcul de p x Sur ordinateur, l’addition de deux entiers peut se faire de façon exacte mais non le calcul d’une racine carrée. On procède alors par approximations successives jusqu’à converger vers la solution souhaitée. Il existe pour cela divers algorithmes. Le suivant est connu depuis l’antiquité (mais ce n’est pas celui que les ordinateurs utilisent). Soit x un nombre réel positif dont on cherche la racine carrée. Désignons par a 0 la première estimation de cette racine, et par ǫ0 l’erreur associée. p x = a 0 + ǫ0 Cherchons une approximation de ǫ0 . Nous avons x = (a 0 + ǫ0 )2 = a 02 + 2a 0 ǫ0 + ǫ20 Supposons que l’erreur soit petite face à a 0 , ce qui permet de négliger le terme en ǫ20 x ≈ a 02 + 2a 0 ǫ0 Remplaçons l’erreur ǫ0 par un ǫ′0 , qui en est une approximation, de telle sorte que x = a 02 + 2a 0 ǫ′0 1. Le mot algorithme vient du mathématicien arabe Al-Khwarizmi (VIIIè siècle) qui fut l’un des premiers à utiliser une séquence de calculs simples pour résoudre certaines équations quadratiques. Il est un des pionniers de l’al-jabr (algèbre). 4 On en déduit que ǫ′0 = (x/a 0 − a 0 )/2 Le terme µ ¶ 1 x + a0 2 a0 constitue une meilleure approximation de la racine que a 0 , sous réserve que le développement soit convergent. Dans ce dernier cas, rien ne nous empêche de recommencer les calculs avec a 1 , puis a 2 , etc., jusqu’à ce que la précision de la machine ne permette plus de distinguer le résultat final de la véritable solution. On peut donc définir une suite, qui à partir d’une estimation initiale a 0 devrait en principe converger vers la solution recherchée. Cette suite est : ¶ µ 1 x a k+1 = a0 > 0 + ak , 2 ak a 1 = a 0 + ǫ′0 = L’algorithme du calcul de la racine carrée devient donc 1. Démarrer avec une première approximation a 0 > 0 de p x 2. A chaque itération k, calculer la nouvelle approximation a k+1 = (x/a k + a k )/2 3. Calculer l’erreur associée ǫ′k+1 = (x/a k+1 − a k+1 )/2 4. Tant que l’erreur est supérieure à un seuil fixé, recommencer en 2. Le tableau ci-dessous illustre quelques itérations de cet algorithme pour le cas où x = 4. i 0 1 2 3 4 etc ai ǫ′i 4 2.5 2.05 2.00061 2.00000009 -1.5 -0.45 -0.0494 -0.000610 -0.000000093 Nous voyons que l’algorithme converge très rapidement, et permet donc d’estimer la racine carrée d’un nombre moyennant un nombre limité d’opérations élémentaires (additions, soustractions, divisions, multiplications). Il reste encore à savoir si cet algorithme converge toujours et à déterminer la rapidité de sa convergence. L’analyse numérique est une discipline proche des mathématiques appliquées, qui a pour objectif de répondre à ces questions de façon rigoureuse. 2 Interpolation et extrapolation Problème ¡: Une fonction f (x)¢n’est¡ connue que ¢¡ ¢ par quelques-uns de ses points de colocation : x0 , f (x0 ) , x1 , f (x1 ) , . . ., xn , f (xn ) . Comment fait-on pour évaluer cette fonction f en un x donné, proche des points de colocation ? 5 Dans toutes les expériences où on est amené à évaluer une fonction f (x) pour différentes valeurs de x (par exemple la pression p(T ) en fonction de la température T dans une machine thermique) il est fastidieux voire impossible d’évaluer une fonction f (x) pour un grand nombre de valeurs de x. L’interpolation devient nécessaire chaque fois que l’on veut estimer f (x) pour une valeur de x autre que celles dont on dispose. Comme nous le verrons plus bas, l’interpolation se trouve aussi à la base de nombreux algorithmes. Exemple : Lors d’un balayage de fréquence, la réponse en amplitude d’un filtre passe-haut a été mesurée à quelques fréquences différentes (cf. tableau ci-dessous). Estimez la fréquence de coupure de ce filtre, sachant que la fonction de transfert du filtre varie régulièrement avec la fréquence. Il faut donc interpoler les données et déterminer à quelle fréquence correspond le gain de -3 [dB]. La figure 1 suggère que cette fréquence de coupure vaut environ f c = 6500 Hz. gain [dB] fréquence [Hz] xk -0.39 -1.39 -1.73 -4.01 f (xk ) 2000 4000 4800 7500 -3 ? 1 0 gain [dB] −1 −2 −3 ? −4 −5 −6 0 2000 4000 6000 8000 10000 frequence [Hz] F IGURE 1 – Les trois mesures ainsi que l’emplacement approximatif de la fréquence de coupure du filtre, pour un gain de -3 dB Avant d’interpoler ces données, il convient d’abord de • changer les unités : les fréquences sont exprimées ici en Hz, mais il est plus commode de les convertir en kHz de sorte à ne pas avoir à gérer des valeurs qui s’écartent trop de l’unité. • changer de représentation. Notre objectif est en effet d’évaluer la fréquence pour un gain donné. Il est donc préférable de traiter la fréquence comme une fonction du gain ( f = f (g )) plutôt que l’inverse (g = g ( f )). 6 Si on possède un modèle analytique exact de la fonction de transfert, il vaut mieux utiliser celui-ci pour faire un ajustement aux données et en déduire des valeurs interpolées. En l’absence de modèle analytique, le plus simple consiste à ajuster des polynômes. Les polynômes ont en effet l’avantage de se calculer aisément et de posséder des propriétés mathématiques intéressantes (dont celle d’être aisément différentiables). Nous avons deux options : 1. Soit on ajuste un seul polynôme à l’ensemble des points de colocation. Ce polynôme ne pourra pas forcément passer par tous les points. Ce cas est illustré dans la figure 2(a) ci-dessous. Le polynôme de degré 1 (une droite) ne passe pas par tous les points et approxime relativement mal les mesures. Le polynôme de degré 2 (une parabole) ne passe lui non plus par tous les points mais donne des résultats visuellement meilleurs. Le polynôme de degré 3 passe exactement par tous les points. 2. Soit on ajuste des polynômes différents aux différents intervalles, de façon à passer par tous les points. Le plus simple consiste à relier les mesures par des polynômes de degré 1 (= des segments de droite). L’interpolation spline, qui est couramment utilisée dans la pratique, consiste à relier les points par des bouts de polynôme de degré 3. On obtient ainsi une fréquence de coupure de f c = 7196 Hz. (a) (b) 10 mesures droite parabole cubique 8 6 frequence [kHz] frequence [kHz] 10 4 2 0 −6 mesures ordre 1 spline 8 6 4 2 −4 −2 gain [dB] 0 −6 0 −4 −2 gain [dB] 0 F IGURE 2 – A gauche : interpolation des données par un polynôme unique. A droite : interpolation en utilisant des polynômes différents pour chaque intervalle. Il reste maintenant à savoir si le polynôme d’interpolation utilisé constitue une bonne approximation de la fonction f (x) (dont, rappelons-le, on ne connaît que quatre valeurs), ou s’il est possible de faire mieux. Sans perte de généralité, trions les valeurs des abscisses xi de telle sorte que x0 ≤ x1 ≤ . . . ≤ xn . Si la valeur de x qui nous intéresse se situe dans l’intervalle [x1 , xn ], on parlera d’interpolation. Sinon, c’est d’extrapolation qu’il s’agira. L’extrapolation d’une fonction est un tache généralement beaucoup plus délicate que l’interpolation. 7 Il n’est pas nécessaire que les pivots xi soient équidistants, même si cela permet d’avoir des algorithmes plus rapides. 2.1 L’interpolation polynomiale Solution ¡: une des¢ solutions les plus simples consiste à faire passer par les points de colocation xi , f (xi ) un polynôme de degré k p k (x) = a 0 + a 1 x + a 2 x 2 + . . . + a k x k tel que p k (xi ) = f (xi ) ∀i = 1, . . .n puis à évaluer ensuite ce polynôme en x. Si ce polynôme approxime bien la fonction f , on peut espérer que f (x) ≈ p k (x). Un théorème important dit ici que ¡ ¢ Théorème : Par n + 1 points de colocation xi , f (xi ) , d’abscisses différentes (xi 6= x j ∀i 6= j ), on ne peut faire passer qu’un et un seul polynôme de degré n. f(x) 4 3 mesures p4(x) 2 spline log(x) 1 0 −1 −2 0 1 2 3 4 5 x F IGURE 3 – Exemple d’ajustement d’une fonction f (x) = log(x) par un polynôme de degré quatre p 4 (x) et par une fonction spline cubique s(x). La fonction f (x) n’est connue que par cinq points de colocation. L’interpolation est satisfaisante, quelle que soit la fonction choisie. En revanche, l’extrapolation s’écarte très vite de la valeur exacte, et ce pour tous les polynômes. Par deux points ne passe donc qu’une seule droite. Par trois points une seule parabole, etc. Il existe différentes approches pour construire ces polynômes. Toutes donnent formellement le même résultat, mais leur utilité pratique varie considérablement (temps de calcul, sensibilité aux erreurs d’arrondi, . . . ). La méthode de Lagrange est un méthode simple et systématique pour construire des polynômes de degré quelconque. 8 Elle n’est cependant guère utilisée aujourd’hui en raison de son coût en temps de calcul. • Pour une fonction définie par deux points de colocation uniquement (n = 2), le polynôme de Lagrange est de degré 1 et s’écrit p 1 (x) = f (x0 ) x − x0 x − x1 + f (x1 ) x0 − x1 x1 − x0 On vérifie que ce polynôme passe bien par les deux points de colocation puisque p(x = x0 ) = f (x0 ) et p(x = x1 ) = f (x1 ). • Pour une fonction définie par trois points de colocation, le polynôme de Lagrange est une parabole d’équation p 2 (x) = f (x0 ) (x − x1 )(x − x2 ) (x − x0 )(x − x2 ) (x − x0 )(x − x1 ) + f (x1 ) + f (x2 ) (x0 − x1 )(x0 − x2 ) (x1 − x0 )(x1 − x2 ) (x2 − x0 )(x2 − x1 ) Pour une fonction définie par n + 1 points de colocation, l’expression générale du polynôme de Lagrange de degré n s’écrit p n (x) = n X f (xk )L k (x) k=0 où L k (x) désigne le polynôme de degré n L k (x) = (x − x0 )(x − x1 ) · · ·(x − xk−1 )(x − xk+1 ) · · ·(x − xn ) (xk − x0 )(xk − x1 ) · · ·(xk − xk−1 )(xk − xk+1 ) · · ·(xk − xn ) On vérifie que L k (x) satisfait toujours la condition ½ 0 si l 6= k L k (xl ) = 1 si l = k Erreur d’interpolation : l’interpolation polynomiale peut aisément générer des valeurs absurdes, si elle n’est pas effectuée correctement. Il est donc essentiel de quantifier l’erreur d’interpolation pour interpréter les résultats. En analyse numérique , il est généralement impossible de connaître exactement l’erreur. En effet, si tel était le cas, alors la solution exacte serait elle aussi connue. En revanche, il est souvent possible d’estimer l’ordre de grandeur de l’erreur et de savoir comme cette dernière se comporte dans différentes conditions. Cette information est nécessaire (mais non suffisante) pour évaluer la fiabilité d’une méthode. Appelons ǫn (x) l’écart ou erreur définie par f (x) = p n (x) + ǫn (x) 9 Tout le problème consiste à estimer l’erreur sans disposer de la valeur de f (x) en tout x. On supposera dans ce qui suit que les valeurs des points de colocation sont connues exactement, ce qui n’est pas toujours vrai dans la pratique. Le théorème suivant est alors utile ¡ ¢ Soit ¢ un ensemble de n + 1 points de colocation { x0 , f (x0 ) , x1 , f (x1 ) , . . ., xn , f (xn ) }. On suppose que la fonction f (x) est définie dans l’intervalle [x0 , xn ] et qu’elle est (n + 1)-fois dérivable dans l’intervalle ]x0 , xn [. Il existe alors une abscisse ξ ∈ [x0 , xn ] telle que ¡Théorème ¢ ¡: ǫn (x) = f (n+1) (ξ) (x − x0 )(x − x1 ) · · ·(x − xn ) (n + 1)! où l’expression f (n+1) (ξ) désigne la dérivée (n + 1)-ième de f (x), évaluée en une abscisse ξ inconnue. Ce théorème nous apprend que • l’erreur ǫn (x) est d’autant plus petite que la fonction f (x) est "lisse" (ses dérivées supérieures restent petites). • l’erreur ǫn (x) diminue quand x est proche d’un des points de colocation. Elle est naturellement nulle aux points de colocation : ǫn (xi ) = 0, i = 0, . . ., n • pour un degré n élevé, le polynôme dans l’expression de l’erreur tend à osciller, ce qui peut affecter l’interpolation. mesures p10(x) 15 f(x) 10 5 0 0 2 4 6 x F IGURE 4 – Exemple d’interpolation avec un polynôme de degré 10. Plus le degré est élevé, plus le polynôme a tendance à osciller. La figure 4 illustre ce qui se passe quand on interpole avec des polynômes de degré élevé. Non seulement le calcul de ces polynômes de degré élevé présente des instabilités numériques, mais en plus on voit apparaître des oscillations indésirables. Augmenter le degré du polynôme ne fait qu’amplifier ces oscillations. D’où la règle générale 10 L’interpolation polynomiale est d’autant plus risquée que le degré du polynôme est élevé. En pratique, on ne dépasse rarement le degré trois. L’interpolation est d’autant meilleure que la fonction à ajuster est régulière (continûment dérivable). La figure 5 illustre l’interpolation d’une fonction qui n’est pas continûment dérivable. La discontinuité augmente considérablement l’erreur d’interpolation. 12 10 f(x) 8 6 4 mesures p5(x) 2 spline sol. exacte 0 −2 2 4 6 8 x F IGURE 5 – Exemple d’ajustement d’une fonction discontinue par un polynôme de degré quatre p 5 (x) et par une fonction spline cubique s(x). La fonction f (x) n’est connue que par six points de colocation. 2.2 Autres fonctions d’interpolation Il existe de nombreuses autres méthodes d’interpolation ainsi que divers algorithmes pour le calcul des coefficients des polynômes d’interpolation. Le cas où les pivots sont équidistants se prête évidemment le mieux à un calcul rapide. Le choix d’une méthode est généralement motivé par un ou plusieurs critères - la simplicité de la programmation - la rapidité de l’algorithme de calcul - la capacité de la fonction à décrire f (x) - le propriétés analytiques intéressantes - la généralisation à plus de dimensions : comment interpoler une fonction de plusieurs variables ? . . . Citons ici les fonctions spline cubiques, qui sont devenues très populaires. Au lieu de faire passer un unique polynôme de degré élevé par tous les points de colocation, on choisit de faire passer une cubique différente par chaque paire de points 11 (x0 , x1 ), (x1 , x2 ), . . ., (xn−1 , xn ). Le problème est a priori sous-déterminé, car il existe une infinité de cubiques pouvant passer par deux points. Toutefois, si on impose en chaque xi la continuité de f (x) ainsi que la continuité de la dérivée première f ′ (x), la solution devient unique. Le résultat est souvent plus satisfaisant qu’avec un polynôme de Lagrange, comme le montrent les figures 3 et 4. Il existe en outre des algorithmes rapides pour le calcul des coefficients des splines. 2.3 Extrapolation L’extrapolation est une tâche encore bien plus délicate que l’interpolation, car la rapide divergence des fonctions polynômiales tend rapidement à donner des valeurs qui sont totalement dénuées de sens. Contrairement à l’interpolation, il est indispensable de disposer d’un modèle analytique de la fonction à étudier si on veut extrapoler celle-ci. Sans un tel modèle, l’extrapolation sera peu crédible. effectif [milliard] 25 20 mesures p5(x) 15 spline exponentielle 10 5 0 1800 1900 2000 2100 annee F IGURE 6 – Extrapolation de l’effectif de la population mondiale jusqu’en 2100. Exemple : Le tableau ci-dessous donne quelques valeurs de la population mondiale. Différentes hypothèses de fécondité donnent des extrapolations fort différentes. Selon le scénario malthusien (taux de natalité constant), la concentration devrait continuer de croître de façon exponentielle n(t) = n0 e t /τ . Ce cas est illustré par la courbe en traitillé dans la figure 6. Une réduction progressive de ce taux permettrait au contraire de stabiliser l’effectif. Les extrapolation polynomiales dans la figure 6 ne s’appuient sur aucun modèle et n’ont donc aucune valeur, même si le hasard veut que le modèle spline soit en bon accord avec le modèle mathusien pour le siècle à venir. 12 année t effectif n(t) [milliard] 1804 1927 1 2 1960 1974 3 4 1987 5 1999 6 2.4 Interpolation en plusieurs dimensions De nombreuses applications sont de grosses consommatrices d’interpolations à plusieurs dimensions : les programmes faisant appel à des éléments finis, la CAO, les logiciels utilisés pour générer des effets spéciaux dans les films, . . . La plupart des outils (et en particulier les fonctions spline) peuvent être générées à plusieurs dimensions, au prix d’une plus grande complexité. 3 Différentiation numérique Une fonction f (x) continûment dérivable est connue par quelques-uns de ses points de colocation. Comment fait-on pour évaluer la dérivée première f ′ (x) et/ou les dérivées d’ordre supérieur ? Ce besoin de différentiation numérique s’exprime dans de nombreux domaines. Exemple : La tension aux bornes d’un condensateur qui se décharge est mesurée à des intervalles réguliers, donnant une suite de valeurs {U0 ,U1 ,U2 , . . .,Un }. Pour estimer le courant de décharge I = C U̇ , il faut dériver une fonction dont on ne connaît que les points de colocation. Comment procéder ? La solution consiste ici à faire passer par les points de colocation un polynôme d’interpolation, puis à dériver celui-ci le nombre de fois nécessaire. On peut ainsi estimer la dérivée aux points de colocation ou entre deux. 3.1 Estimation de la dérivée première ¡ ¢ Le cas le plus simple est celui où il n’y a que deux points de colocation : x , f (x ) et 0 0 ¡ ¢ x1 , f (x1 ) . Par ces points passe la droite d’équation p 1 (x) = f (x1 ) − f (x0 ) (x − x0 ) + f (x0 ) x1 − x0 L’estimation de la dérivée première équivaut donc au coefficient directeur de la droite f ′ (x) ≈ p 1′ (x) = f (x1 ) − f (x0 ) , x1 − x0 x ∈ [x0 , x1 ] Notons qu’elle prend la même valeur en tout point de l’intervalle [x0 , x1 ]. Par ailleurs, la dérivée seconde et toutes les dérivées supérieures sont nulles. 13 Estimation de l’erreur : Pour savoir quelle confiance accorder à l’expression ci-dessus, il faut connaître l’erreur. Du chapitre précédent, nous tirons f (x) = p n (x) + ǫn (x) ⇒ f ′ (x) = p n′ (x) + ǫ′n (x) Supposons dorénavant que les abscisses des points de colocation sont régulièrement réparties, et appelons h = xi +1 − xi l’écartement ou pas entre deux abscisses voisines. On peut alors montrer que ǫ′n (x) = (−1)n f (n+1) (ξ) n h , (n + 1)! ξ ∈ [x0 , xn ] L’erreur varie donc comme ǫ′n (x) ∼ h n . On dira qu’elle est d’ordre n et on écrira fréquemment de façon abrégée ǫ′n (x) ∼ O (h n ) Avec deux points de colocation, l’expression de la dérivée première d’ordre 1 peut s’écrire de deux façons différentes. Soit on estime la pente de la droite qui passe par le point de colocation suivant (différence avant), soit on prend la pente de la droite passant par le point qui précède (différence arrière). f ′ (xk ) = f (xk+1 ) − f (xk ) + O (h) h différence avant d’ordre 1 f (xk ) − f (xk−1 ) + O (h) différence arrière d’ordre 1 h Avec trois points de colocation, le polynôme d’interpolation devient une parabole. A partir de cette dernière, on peut évaluer la dérivée première en chacun des trois points f ′ (xk ) = f ′ (xk−1 ) = − f (xk+1 ) + 4 f (xk ) − 3 f (xk−1 ) + O (h 2 ) différence avant d’ordre 2 2h f ′ (xk ) f (xk+1 ) − f (xk−1 ) 2h + O (h 2 ) différence centrée d’ordre 2 3 f (xk+1 ) − 4 f (xk ) + f (xk−1 ) 2h + O (h 2 ) différence arrière d’ordre 2 = f ′ (xk+1 ) = Pour les différences d’ordre 2, l’erreur varie asymptotiquement comme h 2 alors que pour les différences d’ordre un, elle varie comme h. Pour une fonction f suffisamment lisse et pour un petit pas h donné, la différence d’ordre 2 donnera généralement une erreur plus petite. Trois raisons nous poussent à préférer la différence centrée d’ordre 2 : 1. D’abord, son terme d’erreur est en O (h 2 ) et non en O (h) 2. Un calcul plus détaillé montre ensuite que parmi les trois estimateurs d’ordre 2, c’est la différence centrée qui possède en moyenne l’erreur la plus petite. 3. Enfin, et c’est là un point crucial : la différence centrée d’ordre 2 ne nécessite que la connaissance de deux points de colocation. En effet, la valeur du point en lequel on estime la dérivée n’entre pas en jeu. Le coût en calcul est donc identique à celui d’une différence d’ordre 1, pour un résultat meilleur. 14 f(x2) diff. avant diff. centree diff. arriere f(x1) f(x0) x0 x1 x2 F IGURE 7 – Illustration des dérivées avant et arrière d’ordre 1, et de la dérivée centrée d’ordre 2 au point d’abscisse x = x 1 . Exemple : L’estimation de la dérivée de f (x) = 1/x en x = 2 par différentes méthodes donne les résultats ci-dessous. On constate que pour h suffisamment petit, réduire le pas d’un facteur 10 revient à diminuer l’erreur d’un facteur 10 pour la méthode d’ordre 1 et d’un facteur 100 pour la méthode de d’ordre 2. En revanche, pour des grands pas h, la méthode d’ordre 1 est plus proche de la réalité. La différence centrée d’ordre 2 est donc plus intéressante, à condition que le pas soit suffisamment petit, et pour autant que la fonction f à dériver soit suffisamment continue. pas h 1.50000000 1.00000000 0.10000000 0.01000000 0.00100000 0.00010000 0.00001000 différence centrée d’ordre 2 ′ f (x = 2) |ǫ| -0.57142857 0.32142857 -0.33333333 0.08333333 -0.25062657 0.00062657 -0.25000625 0.00000625 -0.25000006 0.00000006 -0.25000000 0.00000000 -0.25000000 0.00000000 différence avant d’ordre 1 ′ f (x = 2) |ǫ| -0.14285714 0.10714286 -0.16666667 0.08333333 -0.23809524 0.01190476 -0.24875622 0.00124378 -0.24987506 0.00012494 -0.24998750 0.00001250 -0.24999875 0.00000125 3.2 Estimation de la dérivée seconde La procédure reste la même pour les dérivées secondes, sauf que le polynôme d’interpolation doit être dérivé deux fois. Comme ce polynôme doit être au minimum de degré 2 (sinon sa dérivée seconde est nulle), on en déduit qu’il faut au minimum trois points de colocation. 15 Pour trois points de colocation, on obtient les expressions f ′′ (xk−1 ) = f (xk+1 ) − 2 f (xk ) + f (xk−1 ) + O (h 2 ) h2 différence avant d’ordre 2 f ′′ (xk ) = f (xk+1 ) − 2 f (xk ) + f (xk−1 ) + O (h 2 ) h2 différence centrée d’ordre 2 f ′′ (xk+1 ) = f (xk+1 ) − 2 f (xk ) + f (xk−1 ) + O (h 2 ) 2 h différence arrière d’ordre 2 A titre de comparaison, la différence centrée d’ordre 4 s’écrit f ′′ (xk ) = − f (xk−2 ) + 16(xk−1 ) − 30 f (xk ) + 16 f (xk+1 ) − f (xk+2 ) + O (h 4 ) h4 3.3 Dériver dans la pratique 3.3.1 Si f (x) est donnée par un tableau de valeurs Si la fonction à dériver est spécifiée par un ensemble de points de colocation (= son expression analytique n’est pas connue) alors le pas est imposé. Le seul degré de liberté dont on dispose reste le degré du polynôme d’interpolation utilisé pour évaluer la dérivée. Augmenter le degré du polynôme peut sembler intéressant, mais nous avons vu que les polynômes d’interpolation de degré supérieur à 3 sont rarement recommandables. Par ailleurs, un telcalcul nécessitera davantage d’opérations de calcul. 3.3.2 Si f (x) est donnée par son expression analytique La situations est fort différente lorsque l’expression analytique de la fonction à dériver est connue. En effet les points de colocation peuvent alors être choisis librement et on peut prendre un pas h aussi petit que souhaité. On pourrait penser qu’il vaut mieux choisir un pas h très petit pour augmenter la précision du calcul. C’est souvent vrai. Toutefois, lorsque h devient trop petit, le résultat est entaché par des erreurs d’arrondi. En effet, suivant le type de fonction à dériver, il arrivera un moment où l’écart f (x + h) − f (x) sera inférieur à la précision du calculateur. Le résultat sera alors erroné. Il existe donc une valeur optimale du pas qui dépendra de la fonction f (x) à dériver et de la précision du calculateur. Pour une calculette de poche, la valeur relative du pas se situera typiquement entre h/x = 10−2 et h/x = 10−6 . Pour un calcul en double précision, le pas relatif pourra parfois descendre jusqu’à h/x = 10−12 . 16 3.3.3 Impact du bruit sur la dérivation La différentiation numérique est une procédure qui amplifie fortement le bruit dans un signal. La figure 8 illustre le cas de la dérivation de la fonction f (x) = sin(x) lorsque cette dernière est affectée par du bruit additif de faible amplitude. f(x) f(x)=sin(x) sans bruit 1 1 0.5 0.5 0 0 −0.5 −0.5 −1 −1 0 f’(x) f(x)=sin(x) avec bruit 2 4 6 8 0 6 f’(x) sans bruit f’(x) avec bruit 1 0.5 0.5 0 0 −0.5 −0.5 −1 −1 2 4 x 1 0 2 x 4 6 8 0 x 2 4 6 8 8 x F IGURE 8 – Dérivation de la fonction f (x) = sin(x) avec un léger bruit additif (à droite) et sans bruit additif (à gauche). La rangée de haut représente la fonction f (x) avec ses points de colocation. La rangée de bas représente la fonction différenciée, avec la dérivée avant d’ordre 1 (traitillé), la dérivée arrière d’ordre 1 (trait fin) et la dérivée centrée d’ordre 2 (trait épais). Pour résumer, il est conseillé de 17 Pour les dérivées d’ordre 1 et 2, les expressions les plus intéressantes sont les différences centrées d’ordre 2 f ′ (xk ) = f ′′ (xk ) = f (xk+1 ) − f (xk−1 ) + O (h 2 ) 2h f (xk+1 ) − 2 f (xk ) + f (xk−1 ) + O (h 2 ) h2 En général, plus le terme d’erreur O (h p ) est d’ordre élevé, plus le résultat tendra à être précis. Mais ceci n’est pas toujours vrai lorsque les données sont affectées de bruit. De fait, les dérivées d’ordre supérieur et les expressions d’ordre supérieur à 2 sont rarement utilisées. A titre d’exemple, un programme de calcul simplifié de la dérivée par différence centrée s’écrit en Scilab 1 function [ dydx ] = derivee (y ,h ) 2 3 4 5 // y : vecteur de valeurs a deriver // h : pas de derivation // dydx : difference centree de y(x ) ( vecteur colonne ) 6 7 8 9 10 11 12 13 14 y = y (:); n = length (y ); dydx = zeros (n ,1); dydx (1) = y (2) - y (1); dydx ( n) = y(n )-y (n -1); dydx (2: n -1) = (y (3: n)- y (1: n -2)) / 2; dydx = dydx / h; endfunction où y est un vecteur d’ordonnées obtenues pour des abscisses espacées de h. Voici la même fonction, écrite sous une forme plus compacte 1 function [ dydx ] = derivee (y ,h ) 2 3 4 5 // y : vecteur de valeurs a deriver // h : pas de derivation // dydx : difference centree de y(x ) ( vecteur colonne ) 6 7 8 9 y = y (:); // met y en vecteur colonne dydx = [ y (2) - y (1); (y (3: $)- y (1: $ -2))/2; y($ )- y($ -1)]/ h; endfunction Si l’expression analytique de la fonction f (x) est connue, alors on peut procéder différemment : 18 1 function [ dfdx ] = derivee (f ,x ) 2 3 4 5 // f : nom de la fonction a deriver // x : vecteur d ’ abscisses ou il faut evaluer la derivee // dfdx : valeur de la derivee ( vecteur colonne ) 6 7 8 9 10 11 x = x (:); // met x en vecteur colonne dx = [x (2) - x (1); (x (3: $)- x (1: $ -2))/2; x( $)- x($ -1)]; // le pas y = f (x ); // evalue en x la fonction dont le nom est dans f dfdx = [ y (2) - y (1); (y (3: $)- y (1: $ -2))/2; y($ )- y($ -1)] ./ dx ; endfunction Il faut ensuite définir la fonction à dériver. Par exemple pour f (x) = xe −x nous aurions function f = mafonction(x) // definit la fonction dont il faut evaluer la derivee f = exp(-x).*x; endfunction Et le résultat s’obtient en exécutant dans la console z = derivee(mafonction,x); 4 Intégration numérique Le problème de l’intégration numérique (ou quadrature) peut se présenter de deux façons différentes : Problème 1 : Une ´ fonction f (x) est connue par quelques-uns de ses points de ¡ colocation { xi , f (xi ) }ni=0 (qui sont régulièrement espacés ou non). Comment fait-on Rx pour estimer la valeur de l’intégrale x0n f (x) d x, alors que l’expression analytique de f (x) n’est pas connue ? Un exemple : la décharge d’un courant I (t) dans une bobine d’inductance L est étudiée en mesurant le courant des intervalles de temps réguliers. R 2 Cela 1 donne une suite {I 0 , I 1 , . . ., I n }. Comment estimer l’énergie W = 2 L I d t ? Problème 2 : On cherche la valeur de l’intégrale définie Rb f (x) d x lorsque l’expression analytique de l’intégrand f (x) est connue, mais non sa primitive. Un exemple : calculer Rb a 2 e −x d x 19 a Solution : Ces deux problèmes, pourtant très différents, peuvent être résolus avec les mêmes outils. Comme dans le chapitre précédent, nous interpolons la fonction f (x) ou ses points de colocation avec un polynôme, puis nous intégrons explicitement ce polynôme. Nous supposerons dans ce qui suit que la distance entre points de colocation adjacents est constante et vaut h (le pas). 4.1 Méthodes simples Commençons par le cas le plus simple : estimer l’intégrale définie par seulement deux points de colocation (n = 1). Par ces deux points passe le polynôme de degré 1 p 1 (x) = Or nous avons Zx1 x0 ce qui donne f (x1 ) − f (x0 ) (x − x0 ) + f (x0 ) x1 − x0 f (x) d x = Zx1 x0 Zx1 x0 p 1 (x) d x + Zx1 x0 ǫ1 (x) d x ´ h³ f (x) d x = f (x0 ) + f (x1 ) + O (h 3 ) 2 Cette méthode est dite méthode des trapèzes puisque l’aire est approximée par un trapèze (cf. figure 9). f(x) n=1 n=2 4 4 3 3 2 2 1 1 0 0 2 4 0 0 6 x 2 4 6 x F IGURE 9 – Exemple d’intégration d’une fonction par interpolation avec un polynôme du premier et du second degré. La valeur de l’intégrale correspond à l’aire de la figure en gris. En ajoutant un point de colocation entre les deux premiers, nous pouvons améliorer le résultat et interpoler par une parabole. Cela donne la méthode de Simpson Zx2 ´ h³ f (x) d x = f (x0 ) + 4 f (x1 ) + f (x2 ) + O (h 5 ) 3 x0 20 Notons que pour un pas h suffisamment petit, la méthode de Simpson donne une erreur considérablement plus petite que celle de la méthode des trapèzes. On peut supposer que le résultat s’améliore davantage en approximant l’intégrale avec quatre points. Toutefois, pour les raisons évoquées plus haut, il n’est guère recommandé de recourir à des polynômes de degré plus élevé. Comment faut-il alors procéder pour intégrer des fonctions données par un grand nombre de points de colocation ? Au lieu d’augmenter le degré du polynôme, il suffit d’appliquer séparément la méthode des trapèzes ou se Simpson à chacun des intervalles. Cela donne les formules dites composées. f(x) trapezes n=6 Simpson n=6 4 4 3 3 2 2 1 1 0 0 2 4 0 0 6 x 2 4 6 x F IGURE 10 – Exemple d’intégration d’une fonction avec une méthode composée : la méthode des trapèzes (à gauche) et celle de Simpson (à droite). 4.2 Méthodes composées Pour intégrer avec la méthode des trapèzes une fonction dont les abscisses sont {x0 , x1 , . . ., xn }, il suffit d’appliquer séparément la méthode des trapèzes à chaque intervalle. Cela donne Zxn ´ h³ ´ ´ h³ h³ f (x0 ) + f (x1 ) + f (x1 ) + f (x2 ) + · · · + f (xn−1 ) + f (xn ) + O (nh 3 ) f (x) d x = 2 2 2 x0 ³1 ´ 1 = h f (x0 ) + f (x1 ) + f (x2 ) + · · · + f (xn−1 ) + f (xn ) + O (nh 3 ) 2 2 Dans la pratique, les bornes d’intégration x0 et xn sont généralement fixées, mais non le nombre n d’intervalles. C’est donc sur ce dernier qu’il faut jouer pour améliorer la précision des résultats. Comment varie le terme d’erreur en fonction de n ? Nous avons ³ x − x ´3 1 n 0 nh 3 = n ∼ 2 n n −2 L’erreur d’intégration varie donc comme n et nous noterons O (n −2 ). Contrairement à la dérivation, où le paramètre-clé est le pas h, ici nous travaillons plutôt sur le nombre d’intervalles n. 21 Avec la méthode de Simpson (en prenant des intervalles qui ne se chevauchent pas), on obtient la formule de Simpson composée. Comme chaque intervalle nécessite trois points de colocation, le nombre n d’intervalles doit obligatoirement être pair. Cela donne Zxn ´ h³ f (x) d x = f (x0 ) + 4 f (x1 ) + 2 f (x2 ) + 4 f (x3 ) + · · · + 4 f (xn−1 ) + f (xn ) + O (n −4 ) 3 x0 4.3 Autres méthodes On utilise aujourd’hui plus couramment des méthodes adaptatives qui, pour un nombre d’intervalles n donné, offrent une erreur plus petite ou bien qui permettent de sélectionner le meilleur nombre d’intervalles (pour une précision donnée) en procédant par itérations. La méthode de Romberg consiste à combiner astucieusement une interpolation par des polynômes de différents degrés pour réduire davantage le terme d’erreur. Les méthodes de quadrature de Gauss cherchent à minimiser l’erreur d’intégration en choisissant convenablement les abscisses xi (qui ne sont plus forcément réparties uniformément). Enfin, il existe des méthodes spécialement adaptées à l’intégration de fonctions qui présentent des singularités, comme par exemple f (x) = x −1/2 . 4.4 L’intégration dans la pratique Les problèmes d’intégration numérique sont comparables à ceux rencontrés dans la différentiation numérique. Augmenter le nombre n d’intervalles (lorsque c’est possible) améliore généralement les résultats. Toutefois, lorsque n devient trop grand, le temps de calcul devient prohibitif et le résultat est corrompu par les erreurs d’arrondi. Suivant le type de fonction, n peut varier de n = 100 − 106 ou plus. Il existe des méthodes qui permettent de déterminer le nombre n optimal de façon récursive. Exemple de calcul avec un intégrand connu On cherche la valeur de l’intégrale I = n 2 4 10 100 1000 R1 0 e −x d x donne méthode des trapèzes I ǫ 0.6452351 -0.0131 0.6354094 -0.00328 0.6326472 -0.000526 0.6321258 -0.00000526 0.6321206 -0.0000000526 méthode de Simpson I ǫ 0.6323336 -0.000213 0.6321341 -0.0000136 0.6321209 -0.000000351 0.6321209 -0.0000000000351 0.6321209 -0.00000000000000351 22 On s’aperçoit qu’en décuplant le nombre d’intervalles, l’erreur chute d’un facteur 102 pour la méthode des trapèzes (qui est d’ordre O (n −2 )), et d’un facteur 104 pour la méthode de Simpson, d’ordre O (n −4 ). Ceci est illustré dans la figure 11. A précision comparable, la méthode de Simpson nécessite donc moins de opérations arithmétiques. Attention : ceci est vrai uniquement pour un nombre d’intervalles n ≫ 1. Quand ce nombre est faible (typiquement n < 10), il peut arriver que la méthode des trapèzes offre un meilleur résultat. Exemple de calcul avec une suite de points de colocation Quelle est la distance parcourue par un objet dont les mesures de vitesse ont donné ? t [s] 5 6 7 8 9 10 11 12 13 v [m/s] 20 19 17 13 8 5 2 1 0 On trouve respectivement Méthode ordre résultat Méthode des rectangles n −1 85.00 m Méthode de trapèzes n −2 75.00 m Méthode de Simpson n −4 75.33 m Dans cet exemple, le résultat exact n’est pas connu car l’expression analytique de f (x) ne l’est pas non plus. 0 10 Trapezes Simpson −5 ε(n) 10 −10 10 −15 10 eps 0 10 2 4 10 10 6 10 n F IGURE 11 – Evolution de l’erreur d’intégration en fonction du nombre d’intervalles n, pour la méthode Rπ des trapèzes et celle de Simpson. La fonction intégrée est ici 0 sin x d x. Notez que l’erreur cesse du chuter lorsque sa valeur devient comparable à la précision machine. Inutile d’augmenter n dans ce cas ! 23 Avant d’intégrer une fonction, il faut la visualiser au préalable, afin déterminer si elle se prête bien à une intégration numérique (régularité, discontinuités, singularités,. . . ) et pour estimer le pas. Le pas doit toujours être choisi h ≪ T , où T est l’échelle caractéristique sur laquelle la fonction f (x) varie. Pour une fonction périodique, par exemple, T sera la période. Les méthodes d’intégration classiques sont la méthode des trapèzes et celle de Simpson. La seconde offre, à temps de calcul équivalent, un résultat généralement meilleur. Zxn ³1 ´ 1 f (x) d x = h f (x0 ) + f (x1 ) + f (x2 ) + · · · + f (xn−1 ) + f (xn ) + O (n −2 ) 2 2 x0 Zxn ´ h³ f (x0 )+4 f (x1 )+2 f (x2 )+4 f (x3 )+· · ·+4 f (xn−1 )+ f (xn ) +O (n −4 ) f (x) d x = 3 x0 Un programme de calcul simplifié de l’intégrale par la méthode des trapèzes, lorsque l’expression analytique de l’intégrand est connue, est donné ci-dessous. On pourrait aussi passer le nom de l’intégrand comme argument. 1 function [ y] = trapezes (f ,a ,b ,n) 2 3 4 5 6 7 // // // // // f a b n y : : : : : nom de la fonction a integrer borne inferieure borne superieure nombre d ’ intervalles integrale 8 9 10 11 12 13 x = linspace (a ,b ,n +1) ’; y = f (x ); // evalue en x la fonction dont le nom est dans f h = x (2) - x (1); // le pas I = ( sum (y ) - 0.5*( y (1)+ y($ )))* h ; endfunction La même fonction, basée sur la méthode de Simpson, donne 1 function [ I] = simpson (f ,a ,b , n) 2 3 4 5 6 7 // // // // // f a b n I : : : : : nom de la fonction a integrer borne inferieure borne superieure nombre d ’ intervalles ( pair ) integrale 8 9 10 11 12 13 n x y h I = = = = = 2* int ( n /2); // garantit que n soit pair linspace (a ,b ,n +1) ’; f (x ); // evalue en x la fonction dont le nom est dans f x (2) - x (1); // le pas y (1)+ y ($) + 4* sum (y (2:2: $ -1)) + 2* sum (y (3:2: $ -2)); 24 14 15 I = I *h /3; endfunction Par intégrer, il fait leur fournir le nom de la fonction qui définit l’intégrand. Par R1 2 exemple, pour calculer 0 e −x d x avec la méthode des trapèzes en prenant 400 noeuds, on commence par définir l’intégrand function f = integrand(x) // definit l’integrand pour le calcul d’integrale f = exp(-x.*x); endfunction ou encore définir dans la console une fonction avec la commande deff deff(’[y]=integrand(x)’,’y=exp(-x.*x)’) puis dans la console on exécute la commande I = trapezes(integrand,0,1,400) 5 Recherche des racines d’une fonction Problème : Une fonction f (x) connue en chacun de ses points possède une ou plusieurs racines (ou zéros) {x̄i | f (x̄i ) = 0}. Comment fait-on pour déterminer ces racines ? Il existe de nombreuses méthodes de recherche de racines. Toutes sont itératives : partant d’une ou de plusieurs estimations de la racine, ces méthodes convergent en principe par itérations successives. Le problème consiste à trouver un compromis entre la vitesse (il faut limiter le nombre d’opérations de calcul) et la fiabilité (il faut que la méthode converge sûrement vers la valeur souhaitée). Dans la pratique, on est souvent amené à alterner différentes méthodes en fonction des caractéristiques de la fonction. Notons aussi que le problème courant de la recherche de zéros en plusieurs dimensions {(x̄i , ȳ i , . . .) | f (x̄i , ȳ i , . . .) = 0} est nettement plus complexe et fait aujourd’hui encore l’objet d’intenses recherches. 5.1 Méthode de la bisection ou de la dichotomie Supposons que l’intervalle dans lequel se situe la racine soit connu. La méthode de la bisection offre une convergence lente mais sûre vers la racine. Cette méthode est recommandée lorsque la fonction présente des discontinuités ou des singularités. 25 Procédure à suivre : La racine se trouve initialement dans l’intervalle de recherche [xk , xk+1 ]. On a donc f (xk ) · f (xk+1 ) ≤ 0. L’algorithme devient 1. choisir comme nouvelle abscisse xk+2 = (xk + xk+1 )/2, le point milieu de l’intervalle : 2. si f (xk ) · f (xk+2 ) ≤ 0, la solution se trouve dans l’intervalle [xk , xk+2 ], qui devient alors le nouvel intervalle de recherche 3. au contraire, si f (xk ) · f (xk+2 ) ≥ 0, le nouvel intervalle de recherche devient [xk+2 , xk+1 ] 4. revenir au point 1. jusqu’à ce qu’il y ait convergence. 6 x1 4 2 f(x) x3 0 x x2 −2 −4 0 x 4 ∞ x0 0.5 1 1.5 2 2.5 3 x F IGURE 12 – Représentation des premières itérations avec la méthode de la bisection pour f (x) = x 2 − 4. On peut montrer que cette méthode possède une convergence linéaire : si ǫk = |x̄ − xk | est l’écart à la k-ième itération entre xk et la racine x∞ , alors en moyenne ǫk+1 = c ǫk , où 0 < c < 1 est une constante. Exemple : reprenons l’exemple de l’introduction, qui consiste à calculer la racine carrée de 4. Posons f (x) = x 2 − 4 = 0, dont la solution est la racine recherchée. L’intervalle de départ est [0.5, 3]. Cela donne itération k 0 1 2 3 4 5 6 etc intervalle [0.5000, 3.0000] [1.7500, 3.0000] [1.7500, 2.3750] [1.7500, 2.0625] [1.9062, 2.0625] [1.9844, 2.0625] [1.9844, 2.0234] nlle valeur xk+2 1.7500 2.3750 2.0625 1.9062 1.9844 2.0234 2.0039 26 erreur f (xk+2 ) |ǫk+2 | -0.9375 0.2500 1.6406 0.3750 0.2539 0.0625 -0.3662 0.0938 -0.0623 0.0156 0.0943 0.0234 0.0156 0.0039 5.2 Méthode de la “Regula falsi” Lorsque la fonction f (x) peut être approximée par une droite dans le voisinage de sa racine, alors la convergence peut généralement être accélérée en effectuant une interpolation linéaire au lieu de prendre le point milieu. Cela conduit à la méthode de la Regula Falsi ou des parties proportionnelles. Procédure à suivre : Comme dans la méthode de la bisection, on suppose que la racine se trouve initialement dans l’intervalle de recherche [xk , xk+1 ]. L’algorithme devient 1. interpoler la fonction f (x) dans cet intervalle par une droite. On prend comme nouvelle valeur xk+2 l’endroit où cette corde intercepte l’axe des abscisses xk+2 = xk+1 − f (xk+1 ) xk+1 − xk f (xk+1 ) − f (xk ) 2. si f (xk ) · f (xk+2 ) ≤ 0, l’intervalle qui encadre la solution devient [xk , xk+2 ] 3. au contraire, si f (xk+1 ) · f (xk+2 ) ≥ 0, l’intervalle devient [xk+2 , xk+1 ] 4. revenir en 1. jusqu’à ce qu’il y ait convergence. 6 x1 4 f(x) 2 0 x x3 ∞ x2 −2 −4 0 x0 0.5 1 1.5 2 2.5 3 x F IGURE 13 – Représentation des premières itérations de la méthode de la Regula falsi pour f (x) = x 2 − 4. La convergence est légèrement meilleure que celle de la méthode de la bisection. Elle est dite supralinéaire, car en moyenne ǫk+1 = c ǫ1.618... , où 0 < c < 1 est une constante. k Exemple : Le tableau ci-dessous illustre les premières itérations pour le cas où f (x) = x 2 − 4. 27 itération k 0 1 2 3 4 etc intervalle [a, b] [0.5000, 3.0000] [1.5714, 3.0000] [1.9062, 3.0000] [1.9809, 3.0000] [1.9962, 3.0000] nlle valeur xk+2 1.5714 1.9062 1.9809 1.9962 1.9992 erreur |ǫk+2 | 0.42857 0.09375 0.01911 0.00384 0.00077 Voici un exemple de code Scilab qui estime la racine d’une fonction (dont l’expression analytique est connue) par la méthode de la Regula falsi. 1 function [ x2 ] = regulafalsi(f ,x0 ,x1 , epsilon ) 2 3 4 5 6 7 // // // // // f : nom de la fonction a etudier x0 : borne inferieure de l ’ intervalle x1 : borne superieure de l ’ intervalle epsilon : tolerance sur la solution x2 : racine 8 9 10 11 12 maxiter = 50; // nombre maximum d ’ iterations k = 1; f0 = f( x0 ); f1 = f( x1 ); 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 while k < maxiter x2ancien = x0 ; x2 = x0 - f0 *( x1 - x0 )/( f1 - f0 + %eps ); f2 = f( x2 ); disp ([ x2 f2 ]) if f1 *f2 <0 x0 = x2 ; f0 = f2 ; else x1 = x2 ; f1 = f2 ; end k = k +1; if abs (x2 - x2ancien )< epsilon , break , end end if k == maxiter , disp ( ’** ␣ pas ␣ de ␣ convergence␣ ** ’), end endfunction Il faut ensuite définir séparément la fonction à étudier. Par exemple, pour f (x) = e −x + x/5 − 1, on prend function [f] = racine(x) // definit la fonction dont on veut la racine f = exp(-x) + x/5 - 1; endfunction 28 et pour lancer la recherche de racines dans l’intervalle [0, 10] il faut écrire dans la console z = regulafalsi(racine,0,10,1e-6); 5.3 Méthode de la sécante Cette méthode est très proche de la précédente. Toutefois, au lieu de prendre à chaque itération l’intervalle qui encadre la racine, on définit le nouvel intervalle à partir des deux dernières valeurs. Procédure à suivre : On suppose que la racine se trouve initialement à proximité (mais pas forcément dans) de l’intervalle de recherche [xk , xk+1 ]. L’algorithme devient 1. interpoler la fonction f (x) dans cet intervalle par une droite. On prend comme nouvelle valeur xk+2 l’endroit où cette corde intercepte l’axe des abscisses xk+1 − xk xk+2 = xk+1 − f (xk+1 ) f (xk+1 ) − f (xk ) 2. le nouvel intervalle de recherche devient [xk+1 , xk+2 ] 3. revenir en 1. jusqu’à ce qu’il y ait convergence. 6 x1 4 f(x) 2 0 x x3 ∞ x2 −2 −4 0 x0 0.5 1 1.5 2 2.5 3 x F IGURE 14 – Représentation des premières itérations de la méthode de la sécante pour f (x) = x 2 − 4. La convergence est légèrement plus rapide qu’avec la méthode de la Regula falsi. En revanche, la méthode de la sécante est moins robuste car il n’est plus garanti que la solution se trouve à l’intérieur de l’intervalle. Exemple : Le tableau ci-dessous illustre les premières itérations pour le cas où f (x) = x 2 − 4. 29 itération k 0 1 2 3 etc intervalle [xk , xk+1 ] [0.5000, 3.0000] [3.0000, 1.5714] [1.5714, 1.9062] [1.9062, 2.0116] nlle valeur xk+2 1.5714 1.9062 2.0116 1.9997 erreur |ǫk+2 | 0.42857 0.09375 0.01155 0.00028 5.4 Méthode de Newton La méthode de Newton s’applique aux fonctions donc on connaît l’expression analytique de la dérivée première f ′ (x). Contrairement aux deux méthodes précédentes, il suffit de connaître une seule estimation initiale x de la racine x∞ . Supposons que cette estimation soit suffisamment proche de la racine pour justifier un développement limité 1 f (x∞ ) = f (x + δ) = f (x) + δ f ′ (x) + δ2 f ′′ (x) + O (δ3 ) = 0 2 Si δ est suffisamment petit, on peut négliger les termes d’ordre supérieur à 2, pour avoir f (x) + δ f ′ (x) + O (δ2 ) = 0 soit δ=− f (x) f ′ (x) ce qui donne enfin la suite xk+1 = xk − f (xk ) f ′ (xk ) Procédure à suivre : Connaissant une estimation initiale xk de la racine, il faut donc f (x ) 1. calculer δ = − f ′ (xk ) k 2. la nouvelle estimation de la racine devient xk+1 = xk + δ 3. poursuivre en 1. jusqu’à ce qu’il y ait convergence La convergence de cette méthode est quadratique, car en moyenne ǫk+1 = c ǫ2k où 0 < c < 1 est une constante. Mais cette propriété n’est assurée que dans un voisinage immédiat de la racine. Ailleurs, la convergence peut devenir nettement moins favorable. Exemple : reprenons toujours le même exemple du calcul de la racine, avec f (x) = x 2 − 4. Alors f (xk ) xk+1 = xk − ′ f (xk ) = xk − xk2 − 4 2xk = ¶ µ 1 2 xk + 2 xk Partant de l’estimation initiale x0 = 3, on obtient successivement 30 x0 20 f(x) 15 10 x1 5 0 1.5 x∞x2 2 2.5 3 3.5 4 4.5 5 x F IGURE 15 – Représentation des premières itérations de la méthode de Newton pour f (x) = x 2 − 4. itération k 0 1 2 3 etc anc. valeur xk 3.000000 2.166667 2.006410 2.000010 nlle valeur xk+1 2.166667 2.006410 2.000010 2.000000 erreur |ǫk+1 | 0.166667 0.006410 0.000010 3 · 10−11 Voici un exemple de code Scilab qui estime la racine d’une fonction (dont l’expression analytique ainsi que celle de la dérivée sont connues) par la méthode de Newton. 1 function [ x1 ] = newton (f ,x0 , epsilon ) 2 3 4 5 6 // // // // f : nom de la fonction a analyser x0 : borne inferieure de l ’ intervalle epsilon : tolerance sur la solution x1 : racine 7 8 9 maxiter = 50; // nombre maximum d ’ iterations k = 1; 10 11 12 13 14 15 16 17 18 19 20 while k < maxiter [f0 , fprime0 ] = f ( x0 ); x1 = x0 - f0 / fprime0 ; disp ([ x1 f0 ]) k = k +1; if abs (x1 - x0 )< epsilon , break , end x0 = x1 ; end if k == maxiter , disp ( ’** ␣ pas ␣ de ␣ convergence␣ ** ’), end endfunction 31 Il est ipportant que la fonction à analyser restitue à la fois la valeur f (x) et la dérivée f ′ (x). Par exemple function [f,fprime] = racine(x) // definit la fonction dont on cherche la racine f = exp(-x) + x/5 - 1; fprime = -exp(-x) + 1/5; endfunction 5.5 La recherche de racines dans la pratique f(x) La recherche de racines sans inspection préalable de la fonction f est une opération risquée. Comme le montre la figure 16, les pièges sont nombreux. 1 1 0.5 0.5 0 0 −0.5 −0.5 −1 0 0.2 0.4 0.6 0.8 1 −1 0 0.2 0.4 f(x) x 1 1 0.5 0.5 0 0 −0.5 −0.5 −1 0 0.2 0.4 0.6 0.8 1 0.6 0.8 1 x 0.6 0.8 1 x −1 0 0.2 0.4 x F IGURE 16 – Quelques fonctions pour lesquelles la recherche des racines risque de poser des problèmes si l’intervalle de recherche initial et la méthode ne sont pas soigneusement choisis. 32 Avant de rechercher les racines d’une fonction, il est indispensable de visualiser cette fonction. Dans le doute, mieux vaut opter pour une méthode dont la convergence est lente mais sûre. Avec la méthode de la bisection, on est assuré de voir l’intervalle se réduire de moitié à chaque itération, ce qui n’est pas le cas avec les autres méthodes. La convergence sera d’autant meilleure que la fonction pourra être approximée par une droite (méthode de la sécante ou de la Regula falsi) dans le voisinage de la racine. La méthode de Newton permet de converger plus rapidement lorsque l’expression de la dérivée première est connue. La meilleure stratégie consiste généralement à démarrer par une méthode lente mais sûre (bisection) pour ensuite accélérer la convergence dans le voisinage de la racine avec une méthode de Newton. 6 Intégration d’équations différentielles Problème : Une variable y(t) par une équation différentielle ordinaire ¡ est décrite ¢ du premier ordre d y(t)/d t = f y(t), t . On connaît la condition initiale y(t = t0 ) = y 0 . Comment déterminer y(t) à des temps autres que t0 ? 6.1 Exemple Un condensateur se décharge dans une résistance non-linéaire, dont la valeur dépend du courant. Ce genre de situation surgit par exemple avec les tubes fluorescents. Le circuit est décrit par l’équation dI I =− dt C R(I ) avec la condition initiale I (t0 ) = I 0 . Cette équation est facile à intégrer lorsque R =cte. En revanche, il devient très difficile de trouver une solution analytique dans le cas où R varie. Il faut alors procéder à une intégration numérique. Tous les logiciels de conception de circuits par ordinateur comprennent des modules plus ou moins sophistiqués pour résoudre de tels problèmes. Représentons la solution recherchée I (t) en fonction de t. La valeur initiale I (t0 ) ainsi que la dérivée première en ce point I ′ (t0 ) sont connues. Faisons un développement 33 limité de la solution (en supposant que celle-ci soit suffisamment continue) pour déterminer la valeur que prend le courant à un instant ultérieur t0 + δt, d I (t0 ) 1 2 d 2 I (t0 ) + δt +... dt 2 dt2 d I (t0 ) + O (δt 2 ) = I (t0 ) + δt d t ¡ ¢ = I (t0 ) + δt f I (t0 ), t0 + O (δt 2 ) I (t0 + δt) = I (t0 ) + δt Avec un pas de temps δt suffisamment petit, on peut donc approximer la valeur que prend le courant au temps t0 + δt. Or l’opération peut maintenant être répétée en t = t0 + δt puisque la valeur de la dérivée première en ce point peut être calculée. Cela nous permet de passer au point t = t0 + 2δt, et ainsi de suite. La méthode d’intégration consiste donc à estimer les valeurs successives de I (t) en procédant par petits pas de temps. y(t) y0 dt t0 sol. exacte t0+2*dt t0+3*dt t0+4*dt t0+5*dt t0+6*dt t t0+dt 2 1 y(t) 0 −1 sol. exacte dt=0.1 dt=0.5 dt=1 dt=2 −2 −3 −4 0 1 dt=1 dt=0.5 dt=0.25 dt=0.1 2 3 4 t F IGURE 17 – Exemple d’intégration de la fonction y ′ (t ) = −0.5y(t ) + 0.8t (2 − t ) pour différents pas de temps. Quel pas de temps δt faut-il choisir ? Un grand pas implique un nombre réduit d’opérations de calcul, mais entraîne en retour une plus grande erreur. Un pas petit améliore la précision des résultats, au prix 34 d’un temps de calcul plus élevé. Un pas trop petit risque d’amplifier les erreurs de troncature. Il existe donc un pas idéal, qui peut éventuellement varier au cours du temps. Nous verrons qu’il existe divers algorithmes pour traiter ce genre de problème. 6.2 Les méthodes d’Euler Les méthodes d’Euler sont les plus simples pour intégrer une équation différentielle. Cependant, ces méthodes sont rarement utilisées en raison de manque de précision et de leur instabilité. Nous avons au départ ¡ ¢ ½ ′ y (t) = f y(t), t y(t0 ) = y 0 Discrétisons d’abord le temps en prenant des pas de même durée h : tk = t0 + kh. Posons pour simplifier y(tk ) = y k . Il s’agit désormais de trouver la suite {y k } définie par ′ y (tk ) = f (y k , tk ) y(t0 ) = y 0 tk = t0 + kh Exprimons la dérivée de y(t) par une différence finie (cf. chapitre 3). Cela conduit à trois expressions différentes suivant qu’on prend la différence avant, arrière ou centrée. Chacune possède des propriétés différentes. y k+1 − y k y ′ (tk ) = + O (h) différence avant h y ′ (tk ) = y k − y k−1 + O (h) h y ′ (tk ) = y k+1 − y k−1 + O (h 2 ) différence centrée 2h différence arrière • La méthode d’Euler explicite s’obtient en prenant la différence avant. Cela donne une équation simple à résoudre en y k+1 y k+1 = y k + h f (y k , tk ) + O (h 2 ) Cette méthode, quoique simple, est peu utilisée. D’abord, elle est relativement peu précise. Mais surtout, elle est instable puisque l’erreur a généralement tendance à croître. Cette instabilité, illustrée dans la figure 18, peut survenir même si le pas h est très petit. • La méthode d’Euler implicite s’obtient en prenant la différence arrière. Cela donne une équation plus difficile à résoudre en y k y k − h f (y k , tk ) = y k−1 + O (h 2 ) Cette équation n’admet pas toujours de solution analytique, ce qui est un sérieux handicap. En revanche, la méthode est stable puisque l’erreur n’a plus tendance à croître indéfiniment. 35 F IGURE 18 – Illustration d’un schéma d’intégration instable. L’erreur (= écart entre y(t ) et y k ) croît progressivement et finit pas envahir complètement. • La méthode d’Euler centrée, quoique plus précise, est peu utilisée car à chaque pas de temps il faut gérer à la fois y k+1 , y k et y k−1 : y k+1 = y k−1 + 2h f (y k , tk ) + O (h 3 ) La figure 19 illustre l’intégration d’une équation différentielle par différentes méthodes, pour deux valeurs du pas h. h=0.2 h=0.05 1.4 1.4 o Euler explicite + Euler implicite . Runge−Kutta 2 1.3 1.2 f f 1.3 1.2 1.1 1.1 1 1 0 0.2 0.4 0.6 0.8 1 0 t 0.2 0.4 0.6 0.8 1 t F IGURE 19 – Résultat de l’intégration de l’équation y ′ (t ) = 1 + t − y(t ) avec y(0) = 1 par les méthodes d’Euler explicite, Euler implicite et de Runge-Kutta d’ordre 2. Les pas sont respectivement h = 0.2 (figure de gauche) et h = 0.05 (figure de droite). Le trait continu représente la solution exacte y(t ) = e −t + t . 6.3 Stabilité des méthodes d’Euler En plus de la précision, il est essentiel qu’une méthode d’intégration soit numériquement stable. Par stabilité on entend ici que l’intégration d’une équation dont on sait que la solution est bornée, doit elle aussi rester bornée. 36 L’étude de la stabilité d’une méthode est une tâche complexe. L’exemple suivant permet cependant d’illustrer l’origine des instabilités. Intégrons l’équation y ′ = −y avec la condition initiale y 0 = 1. 1. Avec la méthode d’Euler explicite, on obtient y k+1 = y k − hy k ⇒ y k = (1 − h)k y 0 Cette suite converge à condition que |1 − h| < 1. Cela implique soit h > 0 (toujours vrai) soit h < 2. Il n’est donc pas possible de choisir des pas h arbitrairement grands, sous risque de voir la suite diverger. 2. Avec la méthode d’Euler implicite, on obtient y k+1 = y k − hy k+1 ⇒ y k = (1 + h)−k y 0 La stabilité est ici vérifiée pour tout h > 0. Plus généralement, on peut montrer que la méthode d’Euler implicite est toujours stable. 3. Avec la méthode d’Euler centrée, on obtient y k+1 = y k−1 − 2hy k p et la condition de stabilité devient | − h ± 1 + h 2 | < 1. Cette méthode peut elle aussi devenir instable. 6.4 Méthodes de Runge-Kutta Les méthodes de Runge-Kutta sont couramment utilisées car elles allient précision, stabilité et simplicité. Toutes nécessitent plusieurs itérations pour effectuer un pas. La méthode de Runge-Kutta d’ordre 2 est la plus simple ; elle combine deux itérations successives de la méthode d’Euler explicite. Dans un premier temps la dérivée en (tk , y k ) est évaluée pour faire une première estimation du point suivant (noté A dans la figure 20). L’estimation provisoire de y k+1 en ce point est ensuite utilisée pour affiner la calcul de la dérivée. Une nouvelle approximation de celle-ci est obtenue en prenant sa valeur à mi-parcours (prise au point B). C’est cette valeur de la dérivée qui sera ensuite utilisée pour estimer le prochain pas y k+1 (point C). La procédure d’intégration se résume à α = h f (y µ k , tk ) ¶ α h β = h f y k + , tk + 2 2 3 y k+1 = y k + β + O (h ) Même si cette méthode demande deux fois plus opérations de calcul que la méthode d’Euler explicite pour effectuer un seul pas, le résultat est plus précis et plus stable. 37 F IGURE 20 – Principe de fonctionnement de la méthode de Runge-Kutta du second ordre pour effectuer un seul pas. Le lettres réfèrent au texte. La méthode de Runge-Kutta d’ordre 4 combine quatre itérations successives. Sa précision est généralement encore meilleure. La procédure d’intégration devient α β γ δ y k+1 = h f (y ¶ µ k , tk ) h α = h f y k + , tk + 2 2¶ µ β h = h f y k + , tk + 2 2¢ ¡ = h f y k + γ, tk + h 1 = y k + (α + 2β + 2γ + δ) + O (h 5 ) 6 38 Le code suivant décrit un exemple d’intégration par la méthode de Runge-Kutta d’ordre 2. La fonction à intégrer est définie par integrand. 1 function [y ,t ] = rungekutta2( t0 , tn ,h , y0 ) 2 3 4 5 6 7 8 // // // // // // t0 : temps initial tn : temps final h : pas de temps y0 : conditions initiales ( vecteur ) y : solution ( une colonne par variable ) t : vecteur temps correspondant 9 10 11 12 13 14 15 n = ceil (( tn - t0 )/ h )+1; // nombre de pas ordre = length ( y0 ); // ordre = nbre de cond initiales y = zeros (n , ordre ); t = zeros (n ,1); y (1 ,:) = y0 (:) ’; t (1) = t0 ; 16 17 18 19 20 21 22 23 for i =1: n -1 t(i +1) = delta1 = delta2 = y(i +1 ,:) end endfunction t( i) + h; h* integrand (t (i ), y(i ,:)); h* integrand (t (i )+ h /2 , y (i ,:)+ delta1 /2); = y(i ,:) + delta2 ; 24 25 26 27 28 29 30 function yprime = integrand (t ,y) // definit le systeme a integrer k = 4; yprime (1) = y (2); yprime (2) = -k*y (1); endfunction 6.5 L’intégration dans la pratique Le choix du pas est un point essentiel. S’il est trop grand, la méthode choisie, aussi bonne soit-elle, donnera des résultats erronés (cf. figure 21). Si le pas est trop petit, on perdra du temps de calcul et on risquera d’être affecté par des erreurs d’arrondi. D’où les règles générales Le pas h doit toujours être choisi nettement inférieur au temps caractéristique de la fonction y(t) à intégrer. Par exemple, pour une fonction périodique de période T , il faudra prendre h ≪ T . Parmi les méthodes d’intégration qui existent, celles de Runge-Kutta offrent souvent un bon compromis entre précision et temps de calcul. 39 . Euler h=1 + Euler h=0.5 o Runge−Kutta 2 h=1 2 f 1 f(x) 0 −1 −2 0 2 4 6 8 10 t F IGURE 21 – Intégration d’une équation différentielle dont la solution est y(t ) = sin(2πt /5). Cette équation a délibérément été intégrée avec des pas trop grands pour en montrer les conséquences. Les méthodes utilisées sont : Euler explicite avec un pas de h = 1 (points), Euler explicite avec un pas de h = 0.5 (croix), et Runge-Kutta d’ordre 2 avec un pas de h = 1. Le problème de l’intégration des équations différentielles est fait encore l’objet de recherches intensives. Une solution intéressante consiste à adapter le pas h à l’allure de la fonction y(t) pour gagner du temps. Lorsque la fonction y(t) est régulière avec ses dérivées d’ordre > 2 sont petites, alors on peut se contenter de choisir un pas élevé, qui sera progressivement réduit dans le voisinage de brusques variations de y(t). Les méthodes de Runge-Kutta peuvent aussi aisément se généraliser à la résolution d’équations différentielles d’ordre supérieur à 1. 6.6 Intégrer lorsque l’ordre > 1 Les équations différentielles d’ordre supérieur à 1 peuvent aisément être transformées en des systèmes d’équations d’ordre 1, moyennant la définition de nouvelles variables. Ainsi, le modèle de l’oscillateur harmonique amorti d2 d f (t) + λ f (t) + ω2 f (t) = 0 2 dt dt peut d’écrire d f (t) = u(t) dt d u(t) = −λu(t) − ω2 f (t) dt où u(t) est la nouvelle variable, qui s’apparente à une vitesse. Cette paire d’équations couplées d’ordre 1 peut maintenant être intégrée à l’aide des méthodes discutées précédemment. 40 Plus généralement, toute équation différentielle différentielle d’ordre N dN f d xN + a N (x) d N −1 f d x N −1 + a N −1 (x) d N −2 f d x N −2 + · · · + a 2 (x) df + a 1 (x) f (x) + a 0 (x) = 0 dx peut être transformé en un système de N équations différentielles d’ordre 1, moyennant la création de N − 1 nouvelles variables d f (x) = u1 (x) dx d2 f (x) = u2 (x) d x2 d3 f (x) = u3 (x) d x3 .. . d N −1 d x N −1 dN d xN f (x) = u N −1 (x) f (x) = −a N (x)u N −1 (x) − a N −1 (x)u N −2 (x) − · · · − a 2 (x)u1 (x) − a 1 (x) f (x) − a 0 (x) Les conditions initiales f (x0 ) = f 0 , ¯ d f ¯¯ = f 0′ , ¯ d x x=x0 ¯ d 2 f ¯¯ = f 0′′ , ¯ 2 d x x=x0 f (x0 ) = f 0 , u1 (x0 ) = u1,0 , u2 (x0 ) = u2,0 , deviennent alors etc. etc. 6.7 Intégrer en présence de conditions de bord L’intégration est plus difficile lorsque le problème est spécifié par des conditions de bord (ou aux limites) et non par des conditions initiales. Par exemple, le problème d2 f (x) + ddx f (x) + g (x) = 0 possède des conditions initiales si f (0) = a, ddx f (x = 0) = b, d x2 car il suffit d’intégrer depuis x = 0. On parlera au contraire de conditions de bord si f (0) = a, f (x = 1) = b. Il existe plusieurs stratégies pour intégrer de tels problèmes. L’une consiste à recourir aux éléments finis (au programme de master). Une autre stratégie consiste à remplacer les conditions initiales manquantes par des valeurs estimées, puis à intégrer l’équation jusqu’à ce que la solution atteigne le bord. En fonction de l’écart observé entre la valeur finale de la solution et la condition de bord imposée, on corrigera la solution en adaptant ses conditions initiales. Ceci s’apparente à la correction qu’un tireur applique à l’angle de tir lorsqu’il souhaite atteindre sa cible ; c’est la raison pour laquelle la méthode porte le nom de méthode du tir. 41 Exemple : Une équation différentielle doit être intégrée de xi à x f . Le conditions de bord imposées sont ½ f (xi ) = f i f (x f ) = f f Soit, a (1) la valeur initiale de la condition de bord manquante ; par exemple f ′ (xi ) = a (1) s’il s’agit d’une équation d’ordre 2. L’équation est intégrée avec ces deux conditions initiales jusqu’à l’abscisse x f pour donner en ce point f (x f ) = f f(1) . Un second essai avec une autre condition initiale a (2) donne f (x f ) = f f(2) . Le problème se réduit alors à une recherche de racines. Nous pouvons en effet définir une fonction F (a) telle que F (a (1) ) = f f(1) − f f F (a (2) ) = f f(2) − f f Le problème se réduit alors à la recherche de la valeur a (∞) telle que F (a (∞) ) = f f(∞) − f f = 0 où la fonction F n’est connue que pour les quelques valeurs de a (i ) . Il suffit dès lors d’itérer à l’aide d’une méthode de recherche de racines (sécante, ou autre) jusqu’à converger vers la racine. Toutefois, rien ne garantit que la racine existe ou soit unique. 42