Analyse Numérique de Mme FACCANONI - Copie
Analyse Numérique de Mme FACCANONI - Copie
Analyse Numérique de Mme FACCANONI - Copie
Analyse numérique
Licence Sciences et Techniques
Gloria Faccanoni
i http://faccanoni.univ-tln.fr/enseignements.html
Dernière mise-à-jour
Dimanche 29 septembre 2013
Ce fascicule est un support au cours d’analyse numérique en deuxième année d’une Licence de Mathématiques. Il
aborde : la recherche de racines d’une fonction, l’interpolation, l’intégration numériques, l’intégration d’équations diffé-
rentielles et la résolution de systèmes linéaires. Les applications se feront avec le langage Python dont la documentation et
les sources peuvent être téléchargées à l’adresse http://www.python.org. Les notions supposées connues correspondent
au programme des cours de Mathématiques (Analyse mathématique des fonctions réelles d’une variable réelle et Algèbre
Linéaire) et Informatiques (Initiation à l’algorithmique et au langage Python) de la première année de Licence.
L’objet de ce aide-mémoire est de proposer une explication succincte des concepts vu en cours. De nombreux livres,
parfois très fournis, existent. Ici on a cherché, compte tenu des contraintes de volume horaire, des acquis des étudiants
à la première année et des exigences pour la suite du cursus, à dégager les points clés permettant de structurer le travail
personnel de l’étudiant voire de faciliter la lecture d’autres ouvrages. Ce polycopiée ne dispense pas des séances de cours et
de TD ni de prendre des notes complémentaires. Il est d’ailleurs important de comprendre et apprendre le cours au fur et
à mesure car on a très peu de temps et beaucoup de concepts nouveaux. Ce polycopié est là pour éviter un travail de copie
qui empêche parfois de se concentrer sur les explications données oralement mais ce n’est pas un livre auto-suffisant (il
est loin d’être exhaustif ) ! De plus, ne vous étonnez pas si vous découvrez des erreurs (merci de me les communiquer).
On a inclus dans ce texte nombreux exercices corrigés. Ceux-ci, de difficulté variée, répondent à une double nécessitée.
Il est important de jongler avec les différents concepts introduits en cours et même de faire certaines erreurs une fois
pour bien identifier les pièges. Les exercices permettent d’orienter les raisonnements vers d’autres domaines (physique,
économie, etc.), cela afin d’exhiber l’intérêt et l’omniprésence du calcul différentiel. Cependant, veuillez noter que vous
n’obtiendrez pas grande chose si vous vous limitez à choisir un exercice, y réfléchir une minute et aller vite voir le début de
la correction en passant tout le temps à essayer de comprendre la correction qui va paraitre incompréhensible. Pour que
la méthode d’étude soit vraiment efficace, il faut d’abord vraiment essayer de chercher la solution. En particulier, il faut
avoir un papier brouillon à coté de soi et un crayon. La première étape consiste alors à traduire l’énoncé (pas le recopier),
en particulier s’il est constitué de beaucoup de jargon mathématique. Ensuite il faut essayer de rapprocher les hypothèses
de la conclusion souhaitée, et pour cela faire quelques calculs ou transformer les hypothèses pour appliquer un théorème
dont on aura vérifier que les hypothèses sont bien satisfaite. C’est ici que l’intuition joue un grand rôle et il ne faut pas
hésiter à remplir des pages pour s’apercevoir que l’idée qu’on a eu n’est pas la bonne. Elle pourra toujours resservir dans
une autre situation. Quand finalement on pense tenir le bon bout, il faut rédiger soigneusement en s’interrogeant à chaque
pas sur la validité (logique, mathématique) de ce qu’on a écrit. Si l’étape précédente ne donne rien, il faut chercher de l’aide
(voir le début de la correction, en parler à un autre étudiant, etc.).
Gloria FACCANONI
2
Table des matières
Notations 5
2. Interpolation 53
2.1. Position du problème . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
2.1.1. Interpolation polynomiale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
2.2. Interpolation de L AGRANGE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
2.2.1. Stabilité de l’interpolation polynomiale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
2.3. Polynôme d’H ERMITE ou polynôme osculateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
2.4. Splines : interpolation par morceaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
2.4.1. Interpolation linéaire composite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
3. Quadrature 79
3.1. Principes généraux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
3.2. Exemples de formules de quadrature interpolatoires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
3.3. Approximation de dérivées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
3
Notations
Ensembles usuels en mathématiques
On désigne généralement les ensemble les plus usuels par une lettre à double barre :
N l’ensemble des entiers naturels
N§ l’ensemble des entiers strictement positifs
Z l’ensemble des entiers relatifs (positifs, négatifs ou nuls)
Z§ l’ensemble des entiers 6= 0
≥ ¥
p
Q l’ensemble des nombres rationnels q, p 2 Z, q 2 Z§
R l’ensemble des réels
R§ l’ensemble des réels autres que 0
C l’ensemble des nombres complexes
Rn [x] l’espace vectoriel des polynômes en x de degré inférieur ou égal à n
Intervalles
Inégalité Notation ensembliste Représentations graphique
a b a b
a ∑x ∑b [a, b]
a b a b
a <x <b ]a, b[
a b a b
a ∑x <b [a, b[
a b a b
a <x ∑b ]a, b]
a a
x∏a [a, +1[
a a
x>a ]a, +1[
b b
x ∑b ] ° 1, b]
b b
x <b ] ° 1, b[
°a a °a a
|x| ∑ a avec a ∏ 0 [°a, a]
°a a °a a
|x| < a avec a ∏ 0 ] ° a, a[
°a a °a a
|x| ∏ a avec a ∏ 0 ] ° 1, °a] [ [a, +1[
°a a °a a
|x| > a avec a ∏ 0 ] ° 1, °a[[]a, +1[
8x 2 R ] ° 1, +1[
a a
x 6= a ] ° 1, a[[]a, +1[= R \ { a }
5
Notations Dimanche 29 septembre 2013
exercice de base
exercice
exemple
curiosité
¥ égal par définition
> strictement supérieur
< strictement inférieur
∏ supérieur ou égal
∑ inférieur ou égal
6= différent
{ } ensemble
A\B ensemble A privé de l’ensemble B, i.e. C A (B) le complémentaire de B dans A
; ensemble vide
| tel que
2 appartient
62 n’appartient pas
8 pour tout (quantificateur universel)
9 il existe (quantificateur universel)
69 il n’existe pas
9! il existe un et un seul
Ω est sous-ensemble (est contenu)
[ union d’ensembles
\ intersection d’ensembles
=) si . . . alors
() si et seulement si
ssi si et seulement si
ln logarithme de base e
loga logarithme de base a
1 infini
R
symbole d’intégrale
n
P
ai somme par rapport à l’indice i , équivaut à a 0 + a 1 + · · · + a n
i =0
Qn
ai produit par rapport à l’indice i , équivaut à a 0 £ a 1 £ · · · £ a n
i =0
n! n factoriel, équivaut à 1 £ 2 £ · · · £ n
g±f f puis g
0 df
f , dx symboles de dérivée
Df domaine de définition d’une fonction f
≠ les instructions sans chevrons dans une boite grisée sont des bouts de code à écrire dans un fichier
1 print ’Coucou!’
6 © G. Faccanoni
Introduction au calcul scientifique
On peut définir le CALCUL SCIENTIFIQUE comme la discipline qui permet de reproduire sur un ordinateur un phénomène
ou un processus décrit par un modèle mathématique.
A NALYSE MATHÉMATIQUE
P HÉNOMÈNE PHYSIQUE , ÉCO - M ODÈLE MATHÉMATIQUE
NOMIQUE , BIOLOGIQUE . . . Bien posé
Mise en équations :
Bien conditionné
Observation expérimentale équations différentielles, inté-
Propriétés de la solution
Modèle conceptuel grales, stochastiques. . .
Solutions analytiques
C ALCULS
P ROGRAMMATION
Langage de programmation (C, A NALYSE NUMÉRIQUE
C++, Fortran, Java, Python, Mat- Méthodes de discrétisation
lab, Scilab, Octave. . .) Analyse des algorithmes (rapi-
Structure des données dité, précision, souplesse)
Implémentation de l’algorithme Estimation des erreurs
Optimisation
P OST P ROCESSING
Visualisation C ALCUL SCIENTIFIQUE
Analyse des résultats
L’ordinateur est aujourd’hui un outil incontournable pour simuler et modéliser des systèmes complexes, mais il faut
encore savoir exprimer nos problèmes (physiques, économiques, biologiques. . .) en langage formalisé des mathématiques
pures sous la forme d’équations mathématiques (différentielles, intégrales. . .). Nous sommes habitués à résoudre les pro-
blèmes de façon analytique, alors que l’ordinateur ne travaille que sur des suites de nombres. On verra qu’il existe souvent
plusieurs approches pour résoudre un même problème, ce qui conduit à des algorithmes 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
mathématique, économie, 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.
Le choix et l’optimisation des algorithmes numériques mis en pratique sont absolument cruciaux tant pour les calculs
de type industriel souvent très répétitifs et devant donc pouvoir être exécutés en un temps très court, que pour les cal-
culs de référence pour lesquels la seule limite est la patience de celui qui les fait. Par exemple, en fluidodynamique, en
laissant tourner une station de travail pendant quelques jours, les numériciens résolvent des systèmes frisant le milliard
d’inconnues. L’expérience montre qu’entre une approche numérique standard et une approche soigneusement réfléchie
7
Introduction au calcul scientifique Dimanche 29 septembre 2013
et optimisée un gain de temps de calcul d’un facteur 100, voire davantage, est souvent observé. Il est clair qu’on peut pas-
ser ainsi, grâce à cet effort, d’un calcul totalement déraisonnable à un calcul parfaitement banal : tout l’enjeu de l’analyse
numériques est là ! C’est dire l’importance pour tous scientifique de bien connaître ces méthodes, leurs avantages et leurs
limites.
p
Exemple Calcul de A
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 A un nombre réel positif dont on cherche la racine carrée. Désignons par x 0 la première estimation de cette racine (généralement
le plus grand entier dont le carré est inférieur à A ; par exemple, si A = 178, alors x 0 = 13 car 132 = 169 < 178 et 142 = 196 > 178) et par
"0 l’erreur associée : p
A = x 0 + "0 .
Cherchons une approximation de "0 . On a
A = (x 0 + "0 )2 = x 02 + 2x 0 "0 + "20 .
Supposons que l’erreur soit petite face à x 0 , ce qui permet de négliger le terme en "20 :
A ' x 02 + 2x 0 "0 .
Remplaçons l’erreur "0 par un "00 , qui en est une approximation, de telle sorte que
A = x 02 + 2x 0 "00 .
On en déduit que
A ° x 02
"00 =
2x 0
donc la quantité µ ∂
1 A
x 1 ¥ x 0 + "00 =+ x0
2 x0
constitue une meilleure approximation de la racine que x 0 (sous réserve que le développement soit convergent). De plus, rien ne nous
empêche de recommencer les calculs avec x 1 , puis x 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 x 0 devrait en principe
converger vers la solution recherchée. Cette suite est
µ ∂
1 A
x k+1 = + xk , x 0 > 0.
2 xk
A°x 2
3. Calculer l’erreur associée "0k+1 = 2x k+1 .
k+1
4. Tant que l’erreur est supérieure à un seuil fixé, recommencer au point 2
Le tableau ci-dessous illustre quelques itérations de cet algorithme pour le cas où A = 5 :
k xk "0k
0 2.0000000000 0.2360679775
1 2.2500000000 0.0139320225
2 2.2361111111 0.0000431336
3 2.2360679779 0.0000000004
4 2.2360679775 0.0000000000
On voit que l’algorithme converge très rapidement et permet donc d’estimer la racine carrée d’un nombre moyennant un nombre li-
mité 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.
Les erreurs
Le simple fait d’utiliser un ordinateur pour représenter des nombres réels induit des erreurs. Par conséquent, plutôt que
de tenter d’éliminer les erreurs, il vaut mieux chercher à contrôler leur effet. Généralement, on peut identifier plusieurs
niveaux d’erreur dans l’approximation et la résolution d’un problème physique.
8 © G. Faccanoni
Dimanche 29 septembre 2013
Au niveau le plus élevé, on trouve l’erreur qui provient du fait qu’on a réduit la réalité physique à un modèle mathéma-
tique. De telles erreurs limitent l’application du modèle mathématique à certaines situations et ne sont pas dans le champ
du contrôle du Calcul Scientifique.
On ne peut généralement pas donner la solution explicite d’un modèle mathématique (qu’il soit exprimé par une in-
tégrale, une équation algébrique ou différentielle, un système linéaire ou non linéaire). La résolution par des algorithmes
numériques entraîne immanquablement l’introduction et la propagation d’erreurs d’arrondi. De plus, il est souvent né-
cessaire d’introduire d’autres erreurs liées au fait qu’un ordinateur ne peut effectuer que de manière approximative des
calculs impliquant un nombre infini d’opérations arithmétiques. Par exemple, le calcul de la somme d’une série ne pourra
être accompli qu’en procédant à une troncature convenable. On doit donc définir un problème numérique, dont la solution
diffère de la solution mathématique exacte d’une erreur, appelée erreur de troncature. La somme des erreurs d’arrondis et
de troncature constitue l’erreur de calcul. L’erreur de calcul absolue est la différence entre x, la solution exacte du modèle
mathématique, et x̃, la solution obtenue à la fin de la résolution numérique, tandis que (si x 6= 0) l’erreur de calcul relative
est définie par l’erreur de calcul absolue divisé par x. Le calcul numérique consiste généralement à approcher le modèle
mathématique en faisant intervenir un paramètre de discrétisation, que nous noterons h et que nous supposerons posi-
tif. Si, quand h tend vers 0, la solution du calcul numérique tend vers celle du modèle mathématique, nous dirons que le
calcul numérique est convergent. Si de plus, l’erreur (absolue ou relative) peut être majorée par une fonction de C h p où
C est indépendante de h et où p est un nombre positif, nous dirons que la méthode est convergente d’ordre p. Quand, en
plus d’un majorant, on dispose d’un minorant C 1 h p (C 1 étant une autre constante (∑ C ) indépendante de h et p), on peut
remplacer le symbole ∑ par '.
© G. Faccanoni 9
1. Résolution d’équations non linéaires
Recherche des solutions de l’équation non linéaire f (x) = 0 où f est une fonction donnée
Un des problèmes classiques en mathématiques appliquées est celui de la recherche des valeurs pour lesquelles une
fonction donnée s’annule. Dans certains cas bien particuliers, comme pour les fonctions x 7! x + 1, x 7! cos(2x) ou encore
x 7! x 2 ° 2x + 1, le problème est simple car il existe pour ces fonctions des formules qui donnent les zéros explicitement.
Toutefois, pour la plupart des fonctions f : R ! R il n’est pas possible de résoudre l’équation f (x) = 0 explicitement et il faut
recourir à des méthodes numériques. Ainsi par exemple une brève étude de la fonction f (x) = cos(x) ° x montre qu’elle
possède un zéro à proximité de 0.7 mais ce zéro ne s’exprime pas au moyen de fonctions usuelles et pour en obtenir une
valeur approchée il faut recourir à des méthodes numériques.
Plusieurs méthodes existent et elles différent pas leur vitesse de convergence et par leur robustesse. Lorsqu’il s’agit de
calculer les zéros d’une seule fonction, la vitesse de la méthode utilisée n’est souvent pas cruciale. Cependant, dans certains
applications il est nécessaire de calculer les zéros de plusieurs milliers de fonctions et la vitesse devient alors un élément
stratégique. Par exemple, si on veut représenter graphiquement l’ensemble de points (x, y) du plan pour lequel x 2 sin(y) +
e x+y ° 7 = 0, on peut procéder comme suit : pour une valeur donnée de x, on cherche l’ensemble des valeurs de y pour
lesquelles x 2 sin(y)+e x+y °7 = 0, i.e. l’ensemble des zéros de la fonction f (y) = x 2 sin(y)+e x+y °7 = 0, et on représente tous
les couples obtenus. On choisit une nouvelle valeur pour x et on répète l’opération. Pour obtenir une courbe suffisamment
précise, il faut procéder à la recherche des zéros d’un très grand nombre de fonction et il est alors préférable de disposer
d’une méthode rapide.
Soit f : R ! R une fonction continue donnée dont on veut évaluer numériquement un ou plusieurs zéros xb, c’est-à-dire
qu’on cherche tous les xb tels que f (b
x ) = 0. Les méthodes numériques pour approcher xb consistent à :
¨ localiser grossièrement le (ou les) zéro(s) de f en procédant à l’étude du graphe de f et/ou à des évaluations qui sont
souvent de type graphique ; on note x 0 cette solution grossière ;
≠ construire, à partir de x 0 , une suite x 1 , x 2 , x 3 , . . . telle que limk!1 x k = xb où f (b
x ) = 0. On dit alors que la méthode est
convergente.
x k+1 = G(x k ), k = 0, 1, 2, . . .
dans lequel on part d’une valeur donnée x 0 pour calculer x 1 , puis à l’aide de x 1 on calcul x 2 etc. La formule même est
dite formule de récurrence. Le procédé est appelé convergent si x k tend vers un nombre fini lorsque k tend vers +1. Il
est bien évident qu’une méthode itérative n’est utile que s’il y a convergence vers les valeurs cherchées.
On peut parfaitement envisager des méthodes itératives multiniveaux, comme par exemples les schémas à trois niveaux
dans lesquels on part de deux valeurs données x 0 et x 1 pour calculer x 2 , puis à l’aide de x 1 et x 2 on calcule x 3 etc.
Définition Ordre de convergence
Soit p un entier positif. On dit qu’une méthode (à deux niveaux) convergente est d’ordre p s’il existe une constante C
telle que
x ° x k |p .
x ° x k+1 | ∑ C |b
|b
Si p = 1 (et C < 1) on parle de convergence linéaire, si p = 2 on parle de convergence quadratique.
11
1. Résolution d’équations non linéaires Dimanche 29 septembre 2013
Pour localiser grossièrement le (ou les) zéro(s) de f on va d’abord étudier de la fonction f , puis on va essayer d’utiliser un
corollaire du théorème des valeurs intermédiaires et le théorème de la bijection afin de trouver un intervalle qui contient
un et un seul zéro.
Théorème des valeurs intermédiaires
Soit f une fonction continue sur un intervalle I = [a; b] de R. Alors f atteint toutes les valeurs intermédiaires entre f (a)
et f (b). Autrement dit :
? si f (a) ∑ f (b) alors pour tout d 2 [ f (a), f (b)] il existe c 2 [a; b] tel que f (c) = d ;
? si f (a) ∏ f (b) alors pour tout d 2 [ f (b), f (a)] il existe c 2 [a; b] tel que f (c) = d .
Ce théorème garantit juste l’existence d’un zéro. Pour l’unicité on essayera d’appliquer le théorème de la bijection dont
l’énoncé est rappelé ci-dessous.
Théorème de la bijection
Soit f une fonction continue et strictement monotone sur un intervalle I de R, alors f induit une bijection de I dans
f (I ). De plus, sa bijection réciproque est continue sur I , monotone sur I et de même sens de variation que f .
f (b k ) ° f (a k )
(c ° a k ) + f (a k ) = 0
bk ° ak
qui est
bk ° ak a k f (b k ) ° b k f (a k )
ck = ak ° f (a k ) = .
f (b k ) ° f (a k ) f (b k ) ° f (a k )
12 © G. Faccanoni
Dimanche 29 septembre 2013 1. Résolution d’équations non linéaires
Dans les deux cas, pour l’itération suivante, on pose soit [a k+1 ; b k+1 ] = [a k ; c k ] soit [a k+1 ; b k+1 ] = [c k ; b k ] de sorte à ce que
f (a k+1 )· f (b k+1 ) < 0. La suite (c k )k2N converge vers xb puisque la longueur de ces intervalles tend vers 0 quand k tend vers
+1.
Soit " l’erreur maximale qu’on peut commettre, les algorithmes s’écrivent alors comme suit :
D ICHOTOMIE : L AGRANGE :
Require: a, b > a, ", f : [a, b] ! R Require: a, b > a, ", f : [a, b] ! R
k √0 k √0
ak √ a ak √ a
bk √ b bk √ b
ak + bk bk ° ak
xk √ xk √ ak ° f (a k )
2 f (b k ) ° f (a k )
while b k ° a k > " or | f (x k )| > " do while b k ° a k > " or | f (x k )| > " do
if f (a k ) f (x k ) < 0 then if f (a k ) f (x k ) < 0 then
a k+1 √ a k a k+1 √ a k
b k+1 √ x k b k+1 √ x k
else else
a k+1 √ x k a k+1 √ x k
b k+1 √ b k b k+1 √ b k
end if end if
a k+1 + b k+1 b k+1 ° a k+1
x k+1 √ x k+1 √ a k+1 ° f (a k+1 )
2 f (b k+1 ) ° f (a k+1 )
k √ k +1 k √ k +1
end while end while
On n’est pas obligé de stoker tous les intervalles et les itérées, on peut gagner de la mémoire en les écrasant à chaque
étape :
D ICHOTOMIE : L AGRANGE :
Require: a, b > a, ", f : [a, b] ! R Require: a, b > a, ", f : [a, b] ! R
a +b b°a
x√ x √a° f (a)
2 f (b) ° f (a)
while b ° a > " or | f (x)| > " do while b ° a > " or | f (x)| > " do
if f (a) f (x) < 0 then if f (a) f (x) < 0 then
b√x b√x
else else
a√x a√x
end if end if
a +b b°a
x√ x √a° f (a)
2 f (b) ° f (a)
end while end while
Remarque
Avec la méthode de la dichotomie, les itérations s’achèvent à la m-ème étape quand |x m ° xb| ∑ |I m | < ", où " est une
tolérance fixée et |I m | désigne la longueur de l’intervalle I m . Clairement I k = b°a
2k
, donc pour avoir une erreur |x m ° xb| < ",
on doit prendre le plus petit m qui vérifie µ ∂
b°a
m ∏ log2 .
"
Notons que cette inégalité est générale : elle ne dépend pas du choix de la fonction f .
© G. Faccanoni 13
1. Résolution d’équations non linéaires Dimanche 29 septembre 2013
Étudions la fonction f :
? f (T ) > 0 pour tout T > 0,
? limT !0+ f (T ) = nv ° M < (n ° 1)v, limT !+1 f (T ) = +1,
° ¢
? f 0 (T ) = v2 1 + (1 + T )n (T n ° 1) > 0 pour tout T > 0 (comparer le graphe de °1/(1 + T )n et de nT ° 1)
T
En étudiant la fonction f on voit que, comme nv < M dès que n > 1, elle admet un unique zéro dans l’intervalle ]0, +1[ (on peut
même prouver qu’elle admet un unique zéro dans l’intervalle ]0, M [).
Supposons que v = 1000 ¤ et qu’après 5 ans M est égal à 6000 ¤. En étudiant la fonction f on voit qu’elle admet un unique zéro
dans l’intervalle ]0.01, 0.1[. Si on applique la méthode de la dichotomie avec " = 10°12 , après 36 itérations la méthode converge vers
0.06140241153618. On conclut ainsi que le taux d’intérêt T est approximativement égal à 6.14%.
Exemple
Soit f (x) = °39 ° 43x + 39x 2 ° 5x 3 . On cherche a estimer x 2 [1; 5] tel que f (x) = 0.
y D ICHOTOMIE
f (3) = 1
f (2.5) = 0.3984375
1 2
f (2) = °0.1875 2.5 3 5 x
f (1) = °1
I 0 = [1; 5]
I 1 = [1; 3]
I 2 = [2; 3]
I 3 = [2; 2.5]
y L AGRANGE
f (1) = °1
I 0 = [1; 5]
I 1 = [1; 2.3̄]
I 2 = [2.11; 2.3̄]
La méthode de dichotomie est simple mais elle ne garantit pas une réduction monotone de l’erreur d’une itération à
l’autre : tout ce dont on est assuré, c’est que la longueur de l’intervalle de recherche est divisée par deux à chaque étape. Par
conséquent, si le seul critère d’arrêt est le contrôle de la longueur de I k , on risque de rejeter de bonnes approximations de
xb. En fait, cette méthode ne prend pas suffisamment en compte le comportement réel de f . Il est par exemple frappant que
la méthode ne converge pas en une seule itération quand f est linéaire (à moins que le zéro xb ne soit le milieu de l’intervalle
de recherche initial).
14 © G. Faccanoni
Dimanche 29 septembre 2013 1. Résolution d’équations non linéaires
ce qui donne
x k ° x k°1
x = xk ° f (x k ).
f (x k ) ° f (x k°1 )
on peut vérifier qu’en partant de la valeur 1 et en appuyant plusieurs fois de suite sur la touche «cosinus», on obtient cette
suite de valeurs :
x 0 = 1,
x 1 = cos(x 0 ) = 0.540302305868,
x 2 = cos(x 1 ) = 0.857553215846,
x 3 = cos(x 2 ) = 0.654289790498,
..
.
x 55 = 0.739085133171,
..
.
x 100 = 0.739085133215
qui tend vers la valeur 0.73908513 . . . . En effet, on a par construction x k+1 = cos(x k ) pour k = 0, 1, . . . (avec x 0 = 1). Si cette
suite converge, sa limite ` satisfait l’équation cos(`) = `. Pour cette raison, ` est appelé point fixe de la fonction cosinus.
Définition Point fixe
Soit ' : R ! R une fonction. Si xb 2 R est tel que '(b
x ) = xb, on dit que xb est un point fixe de ' (l’image de xb par ' est
lui-même).
On peut se demander comment exploiter cette procédure pour calculer les zéros d’une fonction donnée. Remarquons
qu’on peut voir ` comme un point fixe du cosinus, ou encore comme un zéro de la fonction f (x) = x ° cos(x). La méthode
proposée fournit donc un moyen de calculer les zéros de f . Précisons ce principe : soit f : [a, b] ! R la fonction dont on
cherche le zéro. Il est toujours possible de transformer le problème “chercher x tel que f (x) = 0” en un problème équivalent
(i.e. admettant les mêmes solutions) “chercher x tel que x ° '(x) = 0”. Pour que les deux problèmes soient équivalent, la
fonction auxiliaire ' : [a, b] ! R doit être choisie de manière à ce que '(bx ) = xb si et seulement si f (b
x ) = 0. Clairement,
il existe une infinité de manières pour opérer cette transformation. Par exemple, on peut poser '(x) = x ° f (x) ou plus
généralement '(x) = x + ∞ f (x) avec ∞ 2 R§ quelconque. On peut même remplacer ∞ par une fonction de x pour autant
qu’elle ne s’annule pas.
Définition Méthode de point fixe
Supposons que xb 2 R soit un zéro de f ou, de façon équivalente, un point fixe de '. Approcher les zéros de f se ramène
donc au problème de la détermination des points fixes de la fonction ', ce qui se fait en construisant la suite récurrente
(
x 0 donné,
x k+1 = '(x k ).
© G. Faccanoni 15
1. Résolution d’équations non linéaires Dimanche 29 septembre 2013
y y
b b
x1
f
x3
x5
x7
x6
x4
x6
x5
x4 x2
x3
f
x2
x1
Naturellement toute méthode de point fixe n’est pas forcement convergente. Par contre, si elle converge, c’est-à-dire si
la suite x k a une limite que nous notons xb, et si ' est continue, alors cette limite est nécessairement un point fixe de '
puisque µ ∂
xb = lim x k+1 = lim '(x k ) = ' lim x k = '(b
x ).
k!1 k!1 k!1
On a le résultat suivant :
Théorème Convergence (globale) des itérations de point fixe
Considérons une fonction ' : [a; b] ! R. On se donne x 0 2 [a; b] et on considère la suite x k+1 = '(x k ) pour k ∏ 0. Si les
deux conditions suivantes sont satisfaites :
1. condition de stabilité : '(x) 2 [a, b] pour tout x 2 [a, b]
2. condition de contraction stricte : il existe K < 1 tel que |'(x) ° '(y)| ∑ K |x ° y| pour tout x, y 2 [a, b]
alors
? ' est continue,
? ' a un et un seul point fixe x b dans [a, b],
? la suite x k+1 = '(x k ) converge vers x
b pour tout choix de x 0 dans [a, b].
Démonstration.
Continuité La condition de contraction stricte implique que ' est continue puisque, si on prend une suite (y k )k2N 2 [a, b]
qui converge vers un élément x de [a, b], alors nous avons |'(x)°'(y n )| ∑ K |x ° y n | et par suite limk!1 '(y k ) = '(x).
Existence Commençons par prouver l’existence d’un point fixe de '. La fonction g (x) = '(x) ° x est continue dans [a, b]
et, grâce à la condition de stabilité, on a g (a) = '(a) ° a ∏ 0 et g (b) = '(b) ° b ∑ 0. En appliquant le théorème des
valeurs intermédiaires, on en déduit que g a au moins un zéro dans [a, b], i.e. ' a au moins un point fixe dans [a, b].
Unicité L’unicité du point fixe découle de la condition de contraction stricte. En effet, si on avait deux points fixes distincts
xb1 et xb2 , alors
x 1 ° xb2 | = |'(b
|b x 1 ) ° '(b
x 2 )| ∑ K |b
x 1 ° xb2 | < |b
x 1 ° xb2 |
ce qui est impossible.
Convergence Prouvons à présent que la suite x k converge vers l’unique point fixe xb quand k tend vers +1 pour toute
donnée initiale x 0 2 [a; b]. On a
0 ∑ |x k+1 ° xb| = |'(x k ) ° '(b
x )| ∑ K |x k ° xb|
où K < 1 est la constante de contraction. En itérant k + 1 fois cette relation on obtient
16 © G. Faccanoni
Dimanche 29 septembre 2013 1. Résolution d’équations non linéaires
Attention
Si ' : [a; b] ! [a; b] est de classe C 1 ([a, b]) et si |'0 (x)| < 1 pour tout x 2 [a, b], alors la condition de contraction stricte est
satisfaite (et donc le théorème de convergence globale des itérations de point fixe). De plus, on a
x k+1 ° xb
lim = '0 (b
x ).
k!1 x k ° xb
Ce théorème assure la convergence, avec un ordre 1, de la suite (x k )k2N vers le point fixe xb pour tout choix d’une valeur
initiale x 0 2 [a; b]. Il constitue donc un exemple de résultat de convergence globale. Mais en pratique, il est souvent difficile
de déterminer à priori l’intervalle [a; b] ; dans ce cas, le résultat de convergence locale suivant peut être utile.
Théorème d’O STROWSKI ou de convergence (locale) des itérations de point fixe
Soit xb un point fixe d’une fonction ' continue et différentiable dans un intervalle [a; b] contenant xb. Si |'0 (b x )| < 1, alors
il existe un intervalle [c; d ] Ω [a; b] tel que la suite (x k )k2N converge vers xb pour tout x 0 2 [c; d ]. De plus,
? si 0 < '0 (b
x ) < 1 la suite converge de façon monotone, c’est-à-dire, l’erreur x k ° xb garde un signe constant quand k varie ;
? si °1 < '0 (bx ) < 0 la suite converge de façon oscillante, c’est-à-dire, l’erreur x k ° xb change de signe quand k varie.
Ce théorème dit que, de manière générale, la méthode de point fixe ne converge pas pour des valeurs arbitraires de
x 0 , mais seulement pour des valeurs suffisamment proches de xb, c’est-à-dire appartenant à un certain voisinage de xb. Au
premier abord, cette condition semble inutilisable : elle signifie en effet que pour calculer xb (qui est inconnu), on devrait
partir d’une valeur assez proche de xb ! En pratique, on peut obtenir une valeur initiale x 0 en effectuant quelques itérations
de la méthode de dichotomie ou en examinant le graphe de f . Si x 0 est convenablement choisi alors la méthode de point
fixe converge.
Remarque
Soit xb un point fixe d’une fonction ' continue et différentiable dans un intervalle [a; b] contenant xb et soit x k+1 = '(x k )
la suite de point fixe associée. Alors,
? si |'0 (b x )| > 1 la suite diverge ; plus précisément, si '0 (b x ) > 1 la suite diverge de façon monotone, tandis que pour
0
' (b x ) < °1 elle diverge en oscillant ;
? si |'0 (b x )| = 1, on ne peut en général tirer aucune conclusion : selon le problème considéré, il peut y avoir convergence
ou divergence.
Par exemple,
3
? soit ¡(x) = x ° x qui admet x b = 0 comme point fixe. On a ¡0 (b x ) = 1 et x k ! xb pour tout x 0 2 [°1; 1] car
? si x 0 = ±1 alors x k = x b pour tout k ∏ 1,
? si x 0 2] ° 1, 1[ alors x k 2] ° 1, 1[ pour tout k ∏ 1 et la suite est monotone ;
3
? considérons maintenant ¡(x) = x + x qui admet aussi x b = 0 comme point fixe. À nouveau ¡0 (b x ) = 1 mais dans ce cas
la suite diverge pour tout choix de x 0 6= 0.
Exemple
La fonction '(x) = cos(x) vérifie toutes les hypothèses du théorème d’O STROWSKI. En effet, |'0 (xb)| = | sin(xb)| ' 0.67 < 1, donc il existe
par continuité un intervalle [c, d ] qui contient xb tel que |'0 (xb)| < 1 pour x 2 [c, d ]. La fonction '(x) = x 2 ° 1 possède deux points fixes
p p p
xb1 = (1 + 5)/2 et xb2 = (1 ° 5)/2 mais ne vérifie l’hypothèse pour aucun d’eux puisque |'(xb1,2 )| = |(1 ± 5)/2| > 1. Les itérations de
point fixe ne convergent d’ailleurs pas.
x k+1 ° xb '(p+1) (b
x)
lim = .
b)p+1
k!+1 (x k ° x (p + 1)!
© G. Faccanoni 17
1. Résolution d’équations non linéaires Dimanche 29 septembre 2013
x ) = xb et '(i ) (b
où ª est entre x et xb. Comme '(b x ) = 0 pour 1 ∑ i ∑ p, cela se simplifie et on a
'(p+1) (ª)
'(x) = xb + (x ° xb)p+1 .
(p + 1)!
'(p+1) (ª)
x k+1 ° xb = (x k ° xb)p+1 .
(p + 1)!
Lorsque k ! +1, x k tend vers xb et donc ª, qui se trouve entre x k et xb, tend vers xb aussi. Alors
'(p+1) (b
x)
Pour un ordre p fixé, la convergence de la suite vers xb est d’autant plus rapide que (p+1)! est petit.
Pour choisir la fonction ' il est nécessaire de prendre en compte les informations données par les valeurs de f et, éven-
tuellement, par sa dérivée f 0 (si f est différentiable) ou par une approximation convenable de celle-ci. Écrivons pour cela
le développement de TAYLOR de f en xb au premier ordre. On obtient alors la version linéarisée du problème “chercher xb
tel que f (b
x ) = 0” :
f (b x ° x) f 0 (ª)
x ) = 0 = f (x) + (b
où ª est entre xb et x. Cette équation conduit à la méthode itérative suivante :
“pour tout k ∏ 0, étant donné x k , déterminer x k+1 en résolvant l’équation f (x k )+(x k+1 ° x k )q k = 0, où q k est
une approximation de f 0 (x k ).”
La méthode qu’on vient de décrire revient à chercher l’intersection entre l’axe des x et la droite de pente q k passant par
le point (x k , f (x k )), ce qui s’écrit sous la forme d’une méthode de point fixe :
f (x k )
x k+1 = '(x k ) ¥ x k ° , k ∏ 0.
qk
Considérons maintenant quatre choix particuliers de q k et donc de ' qui définissent des méthodes célèbres :
b°a
Méthode de la Corde 1 : '(x k ) = x k ° f (x k )
f (b) ° f (a)
f (x k )
Méthode de la Corde 2 : '(x k ) = x k ° 0
f (x 0 )
f (x k )
Méthode de N EWTON : '(x k ) = x k ° 0
f (x k )
Proposition
Si la méthode de la corde converge, elle converge à l’ordre 1 ; si la méthode de N EWTON converge, elle converge à l’ordre
2 si la racine est simple, à l’ordre 1 sinon.
18 © G. Faccanoni
Dimanche 29 septembre 2013 1. Résolution d’équations non linéaires
Démonstration.
f (b)° f (a)
Méthodes de la Corde qk = (méthode 1) ou q k = f 0 (x 0 ) (méthode 2). Si f 0 (b
b°a x ) = 0 alors '0 (b
x ) = 1 et on ne peut pas
0
assurer la convergence de la méthode. Autrement, la condition |' (b x )| < 1 revient à demander que 0 < f 0 (b x )/q k < 2.
Ainsi la pente de la corde doit avoir le même signe que f 0 (bx ) et, pour la méthode 1, l’intervalle de recherche [a; b] doit
être tel quel
f (b) ° f (a)
b°a <2 .
f 0 (b
x)
La méthode de la corde converge en une itération si f est affine, autrement elle converge linéairement, sauf dans le
f (b)° f (a)
cas (exceptionnel) où f 0 (b
x ) = b°a (méthode 1) ou f 0 (bx ) = f 0 (x 0 ) (méthode 2), i.e. '0 (b
x ) = 0 (la convergence est
alors au moins quadratique).
Méthode de Newton Soit la méthode de N EWTON pour le calcul de xb zéro de f . Cette méthode peut être mise sous la
forme d’une itération de point fixe u n+1 = '(u n ) en posant
f (x)
'(x) = x ° .
f 0 (x)
? Si f (b
x ) 6= 0 (i.e. si xb est racine simple), on trouve
f (x) (x ° xb)h(x)
'(x) = 1 ° 0
= 1° ,
f (x) mh(x) + (x ° xb)h 0 (x)
° ¢
0 h(x) m(m ° 1)h(x) + 2(x ° xb)h 0 (x) + (x ° xb)2 h 00 (x) 1
' (x) = ° ¢2 , '0 (b
x) = 1 ° .
mh(x) + (x ° xb)h 0 (x) m
Si la valeur de m est connue a priori, on peut retrouver la convergence quadratique en modifiant la méthode de
N EWTON comme suit :
f (x)
'(x) = x ° m 0 .
f (x)
Attention
À noter que même si la méthode de N EWTON permet en général d’obtenir une convergence quadratique, un mauvais
choix de la valeur initiale peut provoquer la divergence de cette méthode (notamment si la courbe représentative de f
présente au point d’abscisse x 0 un tangente à peu près horizontale). D’où l’importance d’une étude préalable soignée de
la fonction f (cette étude est d’ailleurs nécessaire pour toute méthode de point fixe).
On obtient
f (x k )
x = xk °
f 0 (x k )
© G. Faccanoni 19
1. Résolution d’équations non linéaires Dimanche 29 septembre 2013
y
f
y = f 0 (x 1 )(x ° x 1 ) + f (x 1 )
xb
x2 x1 x0 x
y = f 0 (x 0 )(x ° x 0 ) + f (x 0 )
Soit f : R ! R une fonction continue et soit xb 2 [a, b] un zéro de f . Cette fois-ci, pour calculer x k+1 on prend l’intersection
de l’axe des abscisses avec la droite passant par le point (x k , f (x k )) et parallèle à la droite passant par les points (a, f (a))
et (b, f (b)), i.e. on cherche x solution du système linéaire
( f (b)° f (a)
y= b°a (x ° x k ) + f (x k ),
y = 0,
ce qui donne
b°a
x = xk ° f (x k ).
f (b) ° f (a)
Il s’agit de la méthode de la corde 1. Cette méthode permet d’éviter qu’à chaque itération on ait à évaluer f 0 (x k ) car on
f (b)° f (a)
remplace f 0 (x k ) par b°a . Une variante de la méthode de la corde consiste à calculer x k+1 comme l’intersection entre
l’axe des abscisses et la droite passant par le point (x k , f (x k )) et parallèle à la droite tangente au graphe de f passant par
le point (x 0 , f (x 0 )), i.e. on cherche x solution du système linéaire
(
y = f 0 (x 0 )(x ° x k ) + f (x k ),
y = 0,
ce qui donne
f (x k )
x = xk °
f 0 (x 0 )
Dans cette variante on remplace f 0 (x k ) par f 0 (x 0 ).
y
y f
f
y = f 0 (x 0 )(x ° x 0 ) + f (x 0 )
f (b)° f (a)
y = b°a (x ° x 0 ) + f (x 0 )
f (b)° f (a)
y = b°a (x ° x 1 ) + f (x 1 )
xb
a x1 x2 b x1
x2 x0 x
xb x0 x y = f 0 (x 0 )(x ° x 1 ) + f (x 1 )
Exemple
On se trouve en possession d’une calculatrice qui ne sait effectuer que les opérations addition, soustraction et multiplication. Lorsque
a > 0 est donné, on veut calculer sa valeur réciproque 1/a. Le problème peut être ramené à résoudre l’équation x = 1/a ce qui équivaut
à chercher le zéro de la fonction
f : R+
§ !R
1
x 7! ° a
x
Selon la formule de N EWTON on a
x k+1 = (1 + a)x k + x k2 ,
20 © G. Faccanoni
Dimanche 29 septembre 2013 1. Résolution d’équations non linéaires
une récurrence qui ne requiert pas de divisions. Pour a = 7 et partant de x 0 = 0.2 par exemple, on trouve x 1 = 0,12, x 2 = 0,139 2,x 3 =
0,142 763 520 0, x 4 = 0,142 857 081 5, etc. Cette suite converge vers 1/7 ' 0,142 857 142 857.
Exemple Comparaison des méthodes de N EWTON pour différentes formulation de la fonction initiale
Dans R§
+ on veut résoudre l’équation
x = e 1/x . (1.1)
En transformant l’équation donnée de différentes manières, on arrive à différentes formules de récurrence :
1. L’équation (1.1) équivaut à chercher le zéro de la fonction
f : R§
+ !R
x 7! x ° e 1/x
f (x ) x ° e 1/xk x ° e 1/xk
x k+1 = x k ° 0 k = x k ° k 1/x = x k ° x k2 k2 .
f (x k ) 1+ e
k x + e 1/xk k
x k2
g : R§
+ !R
y 7! 1 ° ye y
et x k = 1/y k .
3. L’équation (1.1) est encore équivalente à chercher le zéro de la fonction
h : R§
+ !R
x 7! 1 ° x ln(x)
La représentation graphique de f montre qu’il n’existe qu’une seule racine. Comme f (1.7) f (1.9) < 0, elle se trouve dans l’intervalle
[1.7; 1.9]. En partant de x 0 = 1.8 on trouve les suites suivantes :
Critères d’arrêt
Supposons que (x n )n2N soit une suite qui converge vers xb zéro de la fonction f . Nous avons le choix entre deux types de
critères d’arrêt pour interrompre le processus itératif d’approximation de xb : ceux basés sur le résidu et ceux basés sur
l’incrément. Nous désignerons par " une tolérance fixée pour le calcul approché de xb et par e n = xb ° x n l’erreur absolue.
Nous supposerons de plus f continûment différentiable dans un voisinage de la racine.
Contrôle du résidu : les itérations s’achèvent dès que | f (x n )| < ". Il y a des situations pour lesquelles ce test
s’avère trop restrictif ou, au contraire, trop optimiste.
? si | f 0 (b
x )| ' 1 alors |e n | ' " : le test donne donc une indication satisfaisante de l’erreur ;
? si | f 0 (b
x )| ø 1, le test n’est pas bien adapté car |e n | peut être assez grand par rapport à " (voir la figure 1.2 à droite) ;
? si enfin | f 0 (b x )| ¿ 1 alors |e n | ø " et le test est trop restrictif (voir la figure 1.2 à gauche).
Contrôle de l’incrément : les itérations s’achèvent dès que |x n+1 ° x n | < ". Soit (x n )n2N la suite produite par la
méthode de point fixe x n+1 = '(x n ). Comme xb = '(b
x ) et x n+1 = '(x n ), si on développe au premier ordre on sait
qu’il existe ªn 2 I xb,xn tel que
© G. Faccanoni 21
1. Résolution d’équations non linéaires Dimanche 29 septembre 2013
y y
f (x k )
f
xk xk f (x k )
xb xb
ek x ek x
F IGURE 1.2.: Deux situations pour lesquelles le résidu e k = x k ° xb est un mauvais estimateur d’erreur : | f 0 (x)| ¿ 1 (à gauche),
| f 0 (x)| ø 1 (à droite), pour x dans un voisinage de xb.
on en déduit que
x n+1 ° x n
en = .
1 ° '0 (ªn )
Par conséquent, ce critère fournit un estimateur d’erreur satisfaisant si '0 (x) ' 0 dans un voisinage de xb. C’est le
cas notamment des méthodes d’ordre 2, dont la méthode de N EWTON. Cette estimation devient d’autant moins
bonne que '0 s’approche de 1.
Notons d’ailleurs que si la méthode de point fixe converge avec K < 1 et si on considère le critère d’arrêt |x n+1 °
x n | < " alors
"
|e n | = |x n ° xb| ∑ ∑ 2".
1°K
En effet, il suffit de considérer les inégalités suivantes :
22 © G. Faccanoni
Dimanche 29 septembre 2013 1. Résolution d’équations non linéaires
Méthodes numériques.
1 #!/usr/bin/python
2 #-*- coding: Utf-8 -*-
3
6 def dichotomie(f,a,b,tol,maxITER):
7 °°°!fa = f(a)
8 °°°!if abs(fa)<=tol:
9 °°°!°°°!return a
10 °°°!fb = f(b)
11 °°°!if abs(fb)<=tol:
12 °°°!°°°!return b
13 °°°!if fa*fb > 0.0:
14 °°°!°°°!print "La racine n’est pas encadree"
15 °°°!°°°!sys.exit(0)
16 °°°!n = int(math.ceil(math.log(abs(b-a)/tol)/math.log(2.0)))
17 °°°!for k in range(min(n+1,maxITER)):
18 °°°!°°°!c = (a+b)*0.5
19 °°°!°°°!fc = f(c)
20 °°°!°°°!if fc == 0.0:
21 °°°!°°°!°°°!return c
22 °°°!°°°!if fc*fb < 0.0:
23 °°°!°°°!°°°!a = c
24 °°°!°°°!°°°!fa = fc
25 °°°!°°°!else:
26 °°°!°°°!°°°!b = c
27 °°°!°°°!°°°!fb = fc
28 °°°!return (a+b)*0.5
29
30 def lagrange(f,a,b,tol,maxITER):
31 °°°!fa = f(a)
32 °°°!if abs(fa)<=tol:
33 °°°!°°°!return a
34 °°°!fb = f(b)
35 °°°!if abs(fb)<=tol:
36 °°°!°°°!return b
37 °°°!if fa*fb > 0.0:
38 °°°!°°°!print "La racine n’est pas encadree"
39 °°°!°°°!sys.exit(0)
40 °°°!k = 0
41 °°°!while ( ((abs(b-a)>tol) or (abs(fc)>tol)) and (k<maxITER) ):
42 °°°!°°°!k += 1
43 °°°!°°°!c = a-fa*(b-a)/(fb-fa)
44 °°°!°°°!fc = f(c)
45 °°°!°°°!if fc == 0.0:
46 °°°!°°°!°°°!return c
47 °°°!°°°!if fc*fb < 0.0:
48 °°°!°°°!°°°!a = c
49 °°°!°°°!°°°!fa = fc
50 °°°!°°°!else:
51 °°°!°°°!°°°!b = c
52 °°°!°°°!°°°!fb = fc
53 °°°!return a-fa*(b-a)/(fb-fa)
54
55 def newton(f,x_init,tol,maxITER):
56 °°°!k = 0
57 °°°!x = x_init
58 °°°!fx = f(x)
© G. Faccanoni 23
1. Résolution d’équations non linéaires Dimanche 29 septembre 2013
59 °°°!h = tol
60 °°°!dfx = (f(x+h)-fx)/h # calcul approche de f’(x)
61 °°°!while ( (abs(fx)>tol) and (k<maxITER) ):
62 °°°!°°°!x = x - fx/dfx
63 °°°!°°°!fx = f(x)
64 °°°!°°°!dfx = (f(x+h)-fx)/h
65 °°°!°°°!k += 1
66 °°°!if k==maxITER:
67 °°°!°°°!print "Pas de convergence"
68 °°°!else:
69 °°°!°°°!return x
70
71 def point_fix(f,x_init,tol,maxITER):
72 °°°!k = 0
73 °°°!x = x_init
74 °°°!while ( (abs(phi(x)-x)>tol) and (k<maxITER) ):
75 °°°!°°°!x = phi(x)
76 °°°!°°°!k += 1
77 °°°!if k==maxITER:
78 °°°!°°°!print "Pas de convergence"
79 °°°!else:
80 °°°!°°°!return x
Exemple d’utilisation
81 # CHOIX DU CAS TEST
82 exemple = 2
83
103
104 # CALCUL
105 a = -3.
106 b = 0.
107 print "A) Zero calcule par la methode de dichotomie dans l’intervalle [", a, ",", b,"] : ", dichotomie(f,a
Â,b,tol,maxITER)
108 print "B) Zero calcule par la methode de Lagrange dans l’intervalle [", a, ",", b,"] : ", lagrange(f,a,b,
Âtol,maxITER)
109 a = 0.
110 b = 3.
111 print "C) Zero calcule par la methode de dichotomie dans l’intervalle [", a, ",", b,"] : ", dichotomie(f,a
Â,b,tol,maxITER)
112 print "D) Zero calcule par la methode de Lagrange dans l’intervalle [", a, ",", b,"] : ", lagrange(f,a,b,
Âtol,maxITER)
113
114
115 x_init = 0.
24 © G. Faccanoni
Dimanche 29 septembre 2013 1. Résolution d’équations non linéaires
116 print "E) Zero calcule par la methode de \textsc{Newton} a partir du point x_0 =",x_init," : ", newton(f,
Âx_init,tol,maxITER)
117 print "F) Zero calcule par la methode de point fix a partir du point x_0 =",x_init," : ", point_fix(phi,
Âx_init,tol,maxITER)
118
119 x_init = 1.
120 print "G) Zero calcule par la methode de \textsc{Newton} a partir du point x_0 =",x_init," : ", newton(f,
Âx_init,tol,maxITER)
121 print "H) Zero calcule par la methode de point fix a partir du point x_0 =",x_init," : ", point_fix(phi,
Âx_init,tol,maxITER)
122
123
124 # Dans python il existe un module qui implement deja ces methodes, comparons nos resultats avec ceux du
Âmodule:
125 from scipy.optimize import fsolve
126 x_init = 0.
127 print "** Zero calcule par le module scipy.optimize a partir du point x_0 =",x_init," : ", fsolve(f,x_init
Â)
128 x_init = 1.
129 print "** Zero calcule par le module scipy.optimize a partir du point x_0 =",x_init," : ", fsolve(f,x_init
Â)
© G. Faccanoni 25
1. Résolution d’équations non linéaires Dimanche 29 septembre 2013
f (x) = x 3 ° 4x ° 8.95
C ORRECTION DE L’ EXERCICE 1.1. En partant de I 0 = [a, b], les méthodes de la dichotomie et de L AGRANGE produisent
une suite de sous-intervalles I k = [a k , b k ], k ∏ 0, avec I k Ω I k°1 , k ∏ 1, et tels que f (a k ) f (b k ) < 0. Dans notre cas on
a
k √0
ak √ 2
bk √ 3
while |b k ° a k | > 0.01 do
x k √ g (a k , b k )
k √ k +1
if (a k3 ° 4a k ° 8.95)(x k3 ° 4x k ° 8.95) < 0 then
a k+1 √ a k
b k+1 √ x k
else
a k+1 √ x k
b k+1 √ b k
end if
end while
avec ( a +b
k k
pour la méthode de la dichotomie,
g (a k , b k ) = ak 2f (bk )°bk f (ak )
f (b )° f (a ) pour la méthode de la L AGRANGE.
k k
Dichotomie
k ak xk bk signe de f (a k ) signe de f (x k ) signe de f (b k )
0 2.000000 2.5000000 3.00000 – – +
1 2.500000 2.7500000 3.00000 – + +
2 2.500000 2.6250000 2.75000 – – +
3 2.625000 2.6875000 2.75000 – – +
4 2.687500 2.7187500 2.75000 – + +
5 2.687500 2.7031250 2.71875 – – +
6 2.703125 2.7109375 2.71875 – + +
L AGRANGE
k ak xk bk signe de f (a k ) signe de f (x k ) signe de f (b k )
0 2.000000 2.596666667 3.00000 – – +
1 2.596666667 2.690262642 3.00000 – – +
2 2.690262642 2.702092263 3.00000 – – +
3 2.702092263 2.703541518 3.00000 – – +
4 2.703541518 2.703718378 3.00000 – – +
5 2.703718378 2.703739951 3.00000 – – +
6 2.703739951 2.703742582 3.00000 – – +
Exercice 1.2
Déterminer la suite des premiers 3 itérés des méthodes de dichotomie dans l’intervalle [1, 3] et de N EWTON avec x 0 = 2
pour l’approximation du zéro de la fonction f (x) = x 2 ° 2. Combien de pas de dichotomie doit-on effectuer pour amé-
liorer d’un ordre de grandeur la précision de l’approximation de la racine ?
26 © G. Faccanoni
Dimanche 29 septembre 2013 1. Résolution d’équations non linéaires
y
7 f (x) y
f (x)
1 5
4 1 4
7
° 16
3
2
2 3 x 17
12
°1 3
2
2 x
I0
I1
I2
I3
I4
x0 x1 x2 x3
3 5 11
Dichotomie 2 2 = 1,5 4 = 1,25 8 = 1,375
3 17 17
Newton 2 2 = 1,5 12 = 1,416̄ 24 + 12
17 ' 1,4142156
On rappelle qu’avec la méthode de la dichotomie, les itération s’achèvent à la m-ème étape quand |x m ° xb| ∑ |I m | < ", où
" est une tolérance fixée et |I m | désigne la longueur de l’intervalle I m . Clairement I k = b°a
2k
, donc pour avoir |x m ° xb| < " on
doit prendre µ ∂
b°a
m ∏ log2 .
"
Améliorer d’un ordre de grandeur la précision de l’approximation de la racine signifie avoir
|x j ° xb|
|x k ° xb| =
10
donc on doit effectuer k ° j = log2 (10) ' 3,3 itérations de dichotomie.
Exercice 1.3
1. Donner la suite définissant la méthode de N EWTON pour la recherche d’un zéro de fonction. Justifier l’expression
de la suite.
© G. Faccanoni 27
1. Résolution d’équations non linéaires Dimanche 29 septembre 2013
f (x k )
x k+1 = x k ° .
f 0 (x k )
Étant donné une valeur initiale x (0) , cette formule permet de construire une suite x k .
2. Algorithme pour une convergence à " = 10°6 :
Require: x 0 , x 7! f (x)
while |x k+1 ° x k | > 10°6 do
f (x )
x k+1 √ x k ° f 0 (xk )
k
end while
3. La relation précédent peut être mise sous la forme d’une itération de point fixe x k+1 = g (x k ) avec
f (x)
g (x) = x ° .
f 0 (x)
f 00 (b
x)
Si xb est racine simple, c’est-à-dire si f 0 (b
x ) 6= 0, on trouve g 0 (b
x ) = 0 et g 00 (b
x) = f 0 (bx)
: la méthode de N EWTON est donc
0 1
d’ordre 2. Si la racine xb est de multiplicité m > 1, alors g (b
x ) = 1 ° et la méthode n’est que d’ordre 1. Si la valeur
m
de m est connue à priori, on peut retrouver la convergence quadratique de la méthode de N EWTON en modifiant la
méthode comme suit :
f (x k )
x k+1 = x k ° m 0 .
f (x k )
Exercice 1.4
On veut calculer le zéro de la fonction
f (x) = x 2 ° 2
dans l’intervalle [0; 2].
1. On applique la méthode de L AGRANGE : écrire l’algorithme et l’utiliser pour remplir le tableau (on s’arrêtera au
plus petit k qui vérifie | f (x k )| < 10°4 ).
p
k ak xk bk signe de f (a k ) f (x k ) signe de f (b k ) |x k ° 2|
0 0.00000 1.00000 2.00000 – -1.00000 + 0.41421
1
..
.
2. On applique la méthode de N EWTON : écrire l’algorithme et l’utiliser pour remplir le tableau (on s’arrêtera au plus
petit k qui vérifie | f (x k )| < 10°4 ). Le point de départ x 0 est donné.
p
k xk f (x k ) |x k ° 2|
0 1.00000
1
..
.
28 © G. Faccanoni
Dimanche 29 septembre 2013 1. Résolution d’équations non linéaires
a k b k +2
xk √ a k +b k
if (a k2 ° 2)(x k2 ° 2) < 0 then
a k+1 √ a k
b k+1 √ x k
else
a k+1 √ x k
b k+1 √ b k
end if
k √ k +1
end while p
k ak xk bk signe de f (a k ) | f (x k )| signe de f (b k ) |x k ° 2|
0 0.00000 1.00000 2.00000 – |-1.00000|>0.0001 + 0.41421
1 1.00000 1.33333 2.00000 – |-0.22222|>0.0001 + 0.08088
2 1.33333 1.40000 2.00000 – |-0.04000|>0.0001 + 0.01421
3 1.40000 1.41176 2.00000 – |-0.00692|>0.0001 + 0.00245
4 1.41176 1.41379 2.00000 – |-0.00119|>0.0001 + 0.00042
5 1.41379 1.41414 2.00000 – |-0.00020|>0.0001 + 0.00007
6 1.41414 1.41420 2.00000 – |-0.00004|<0.0001 + 0.00001
f (x)
2. La méthode de N EWTON est une méthode de point fixe avec fonction d’itération ¡(x) = x ° f 0 (x)
ce qui donne l’algo-
rithme suivant :
k √0
x k √ 1.00000
while |x k2 ° 2| > 10°4 do
x
x k+1 √ 2k + x1
k
k √ k +1
end while
p
k xk | f (x k )| |x k ° 2|
0 1.00000 |-1.00000|>0.0001 0.41421
1 1.50000 |0.25000|>0.0001 0.08579
2 1.41667 |0.00695|>0.0001 0.00246
3 1.41422 |0.00002|<0.0001 0.00001
Exercice 1.5
Pour calculer les racines de la fonction f (x) = x 3 ° x 2 + 8x ° 8 on utilise 4 méthodes de point fixe différentes décrites par
les fonctions d’itération suivantes :
8 ° x3 1 3 1 2 1 4 2x 3 ° x 2 + 8
'1 (x) = °x 3 + x 2 ° 7x + 8, '2 (x) = , '3 (x) = ° x + x + x+ , '4 (x) = .
8°x 10 10 5 5 3x 2 ° 2x + 8
Dans le tableau suivant sont reportées les suites des itérées obtenues par ces quatre méthodes.
C ORRECTION DE L’ EXERCICE 1.5. Les fonctions 'i sont de classe C 1 au voisinage de `. De plus, on remarque que f (x) =
(x ° 1)(x 2 + 8), donc l’unique racine réelle de f est ` = 1. On sait que
? si |'0i (`)| < 1, alors il existe un intervalle [c; d ] 3 ` tel que la suite (x k )k2N converge vers ` pour tout x 0 2 [c; d ] ; plus
précisément, si 0 < '0i (`) < 1 la suite converge de façon monotone, c’est-à-dire, l’erreur x k ° ` garde un signe constant
© G. Faccanoni 29
1. Résolution d’équations non linéaires Dimanche 29 septembre 2013
quand k varie, tandis que si °1 < '0i (`) < 0 la suite converge de façon oscillante, c’est-à-dire, l’erreur x k ° ` change de
signe quand k varie ;
? si |'0i (`)| > 1 la suite diverge ; plus précisément, si '0i (`) > 1 la suite diverge de façon monotone, tandis que pour
'0i (`) < °1 elle diverge en oscillant ;
? si |'0i (`)| = 1, on ne peut en général tirer aucune conclusion : selon le problème considéré, il peut y avoir convergence
ou divergence.
(j) (p+1)
? Enfin, si 'i (`) = 0 pour 1 ∑ j ∑ p et 'i (`) 6= 0, alors la méthode de point fixe associée à la fonction d’itération 'i
est d’ordre p + 1.
Calculons donc '0i (`) pour i = 1, 2, 3, 4 :
1. '01 (x) = °3x 2 + 2x ° 7 et '01 (1) = °8 : la suite diverge en oscillant (colonne C) ;
°3x 3 (8°x)+(8°x 3 )
2. '02 (x) = (8°x)2
et '02 (1) = ° 14
49 : la suite converge de façon oscillante (colonne D) ;
3 2 1 1 4
3. '03 (x) = ° 10 x + x + et '03 (1) = 10 : la suite converge de façon monotone (colonne A ou B) ;
5 5
(6x 2 °2x)(3x 2 °2x+8)°(2x 3 °x 2 +8)(6x°2)
4. '04 (x) = (3x 2 °2x+8)2
et '04 (1) = 0 : la suite converge à l’ordre au moins 2 (colonne B).
Exercice 1.6
Entre deux murs (verticaux) parallèles, on place deux échelles en les croisant. La première fait 3 m de long, la seconde
2 m. On constate qu’elles se croisent à une hauteur de 1 m. Écrire la méthode de N EWTON pour le calcul approché de la
distance entre les deux murs.
3m
2m
1m
> 2
2 °d 2 2 2
>
b
>
: = =p .
1 a 1 + (1 ° c)2
2
a
2°
On a alors
8p 8
> 3 > d
> 9 ° d2 = p
< , >c = p
< ,
1 + c2
2
=) 9 ° d2
p
1m
2 d
a
> 2 >
: 4°d = p
> , >
:c = p .
1 + (1 ° c)2
2
4 ° d2
c
1 1
Il reste à résoudre p +p = 1. d
4 ° d2 9 ° d2
Posons f (d ) = p 1 2 + p 1 2 ° 1. À partir de d 0 donné dans l’intervalle ]0; 2[, la méthode de N EWTON construit une suite
4°d 9°d
(d k )k2N par la récurrence suivante
p 1 + p 1 2 °1
f (d k ) 4°d 2 9°d
d k+1 = d k ° = d k ° .
f 0 (d k ) p d + p d
(4°d )2 3 2 3
(9°d )
Ø≥ ¥Ø
Ø f (d k ) 0 Ø
Pour que cette suite converge il faut choisir d 0 dans un intervalle [a; b] Ω]0; 2[ tel que Ø d k ° f (d k ) Ø
0 < 1 pour tout x 2 [a; b].
30 © G. Faccanoni
Dimanche 29 septembre 2013 1. Résolution d’équations non linéaires
Exercice 1.7
Soit f , g : [a; b] ! R deux fonctions monotones de classe C 1 ([a; b]). On suppose qu’il existe un et un seul ` 2 [a; b] tel que
f (`) = g (`). À partir de
Ø x0 0 2Ø [a; b], on construit une suite (x n )n2N par la relation f (x n+1 ) = g (x n ) pour n 2 N.
Ø g (`) Ø
1. Montrer que si Ø f 0 (`) Ø < 1 alors il existe un intervalle [Æ; Ø] Ω [a; b] tel que x n ! ` pour tout x 0 2 [Æ; Ø].
Ø 0 Ø
Ø g (`) Ø
2. Dans le cas où Ø f 0 (`) Ø > 1, proposer une méthode itérative convergente pour calculer `.
Exercice 1.8
L’objectif de cet exercice est de déterminer les zéros de la fonction f : [° º2 ; º] ! R définie par
p
x º 3
f (x) = ° sin(x) + ° .
2 6 2
1. Montrer qu’il existe deux solutions `° < 0 et `+ > 0 de l’équation f (x) = 0 pour x 2 [° º2 ; º].
2. Peut-on appliquer la méthode de la bissection pour calculer les deux racines ? Pourquoi ? Dans le cas où c’est
possible, estimer le nombre minimal d’itérations nécessaires pour calculer le(s) zéro(s) avec une tolérance " =
10°10 après avoir choisi un intervalle convenable.
3. Écrire la méthode de N EWTON pour la fonction f . À l’aide du graphe de la fonction f , déduire l’ordre de conver-
gence de la méthode pour les deux zéros.
° º2 ° º3 º
3 `+
` ° º x
Par conséquence `° = ° º3 est l’unique solution de l’équation f (x) = 0 pour x 2 [° º2 ; 0] et il existe un et un seul `+
solution de l’équation f (x) = 0 pour x 2 [0; º]. On peut même améliorer l’encadrement et conclure que `+ 2 [ º3 ; º].
2. La méthode de dichotomie ne peut pas être utilisée pour approcher `° car il est impossible de trouver un intervalle
]a, b[Ω R° sur lequel f (a) f (b) < 0. En ce qui concerne l’approximation de `+ , en partant de [a, b] = [ º3 ; º], la méthode
≥ ¥
de dichotomie converge en log2 b°a " º 35 itérations vers la valeur 2.246005589.
3. La méthode de N EWTON est une méthode de point fixe
(
x k+1 = ¡(x k ),
x 0 donné,
© G. Faccanoni 31
1. Résolution d’équations non linéaires Dimanche 29 septembre 2013
f (x)
avec ¡ l’application définie par ¡(x) = x ° f 0 (x)
. Ici donc elle s’écrit
p
f (x k ) x k ° 2 sin(x k ) + º3 ° 3
x k+1 = x k ° 0 = xk ° .
f (x k ) 1 ° 2 cos(x k )
À l’aide du graphe de la fonction f , on voit que la méthode converge vers `+ quel que soit x 0 2 [°º/2; º/3] avec
un ordre de convergence quadratique et converge vers `° quel que soit x 0 2 [º/3; º] avec un ordre de convergence
linéaire (car f (`° ) = f 0 (`° ) = 0).
y = f 2 (x)
y = f 3 (x)
Méthode de la dichotomie. Dans le cas ∞ = 2, la méthode de dichotomie ne peut pas être utilisée car il est impossible
de trouver un intervalle ]a, b[ sur lequel f 2 (a) f 2 (b) < 0. Pour ∞ = 3, en partant de [a, b] = [°3, °1], la méthode de
dichotomie converge en 34 itérations vers la valeur xb = °1.85792082914850 avec f 3 (b x ) ' °3.6 £ 10°12 . De même, en
prenant [a, b] = [1, 3], la méthode de dichotomie converge en 34 itérations vers la valeur xb = 1.85792082914850 avec
x ) ' °3.6877 £ 10°12 .
f 3 (b
Méthode de Newton. Considérons le cas où ∞ = 2. En partant de la donnée initiale x 0 = 1, la méthode de N EWTON
converge vers la valeur xb = 1.4961 £ 10°4 en 31 itérations avec " = 10°10 tandis que la racine exacte de f 2 est 0. Cet
écart est dû au fait que f 2 est quasiment constante au voisinage de sa racine, donc le problème de recherche du
zéro est mal conditionné. La méthode converge vers la même solution et avec le même nombre d’itérations même
si on prend " égal au zéro machine. Considérons le cas ∞ = 3. La méthode de N EWTON avec " égal au zéro machine
converge vers 1.85792082915020 après 9 itérations en partant de x 0 = 1, alors que si x 0 = °1, elle converge après 9
itérations vers °1.85792082915020.
Voici les instructions :
130 def f(x):
131 °°°!return math.cosh(x)+math.cos(x)-gamma
132
135 gamma = 3
136 tol = 1.0e-15
137 a = -3.
138 b = -1.
139 x_init = -1.
140 print "Zero calcule par la methode de dichotomie dans l’intervalle [", a, ",", b,"] : ", dichotomie(f,a,b,
Âtol,maxITER)
32 © G. Faccanoni
Dimanche 29 septembre 2013 1. Résolution d’équations non linéaires
141 print "Zero calcule par la methode de \textsc{Newton} a partir du point x_0 =",x_init," : ", newton(f,
Âx_init,tol,maxITER)
142 a = 1.
143 b = 3.
144 x_init = 1.
145 print "Zero calcule par la methode de dichotomie dans l’intervalle [", a, ",", b,"] : ", dichotomie(f,a,b,
Âtol,maxITER)
146 print "Zero calcule par la methode de \textsc{Newton} a partir du point x_0 =",x_init," : ", newton(f,
Âx_init,tol,maxITER)
147
148 gamma = 2
149 tol = 1.0e-10
150 x_init = -1.
151 print "Zero calcule par la methode de \textsc{Newton} a partir du point x_0 =",x_init," : ", newton(f,
Âx_init,tol,maxITER)
152 x_init = 1.
153 print "Zero calcule par la methode de \textsc{Newton} a partir du point x_0 =",x_init," : ", newton(f,
Âx_init,tol,maxITER)
où a et b sont deux coefficients qui dépendent du gaz considéré, N est le nombre de molécules contenues dans le volume
V et k = 1.380 650 3 £ 10°23 J K°1 est la constante de Boltzmann. Nous devons donc résoudre une équation non linéaire
dont la racine est V .
Pour le dioxyde de carbone CO 2 , les coefficients a et b prennent les valeurs a = 0.401 Pa m3 et b = 42.7 £ 10°6 m3 . Trouver
le volume occupé par 1000 molécules de CO 2 à la température T = 300 K et la pression p = 3.5 £ 107 Pa par la méthode de
dichotomie, avec une tolérance de 10°12 .
C ORRECTION DE L’ EXERCICE 1.10. On doit calculer les zéros de la fonction f (V ) = pV + aN 2 /V ° abN 3 /V 2 ° pN b °kN T ,
où N est le nombre de molécules. On a
? limV !0+ f (V ) = °1 et limV !+1 f (V ) = +1
? f 0 (V ) = p ° aN 2 /V 2 + 2abN 3 /V 3 = p + aN 2 (2bN /V ° 1)/V 2
p
? f 0 (V ) = 0 si et seulement si
aN 2
V 3 ° V = °2bN donc pour aucun V > 0.
En traçant le graphe de f , on voit que cette fonction n’a qu’un zéro simple dans l’intervalle ]0.01, 0.06[ avec f (0.01) < 0 et
f (0.06) > 0. On peut calculer ce zéro en utilisant la méthode de dichotomie comme suit :
154 def f(V):
155 °°°!a = 0.401
156 °°°!b = 42.7e-6
157 °°°!N = 1000.
158 °°°!T = 300.
159 °°°!p = 3.5e7
160 °°°!k = 1.3806503e-23
161 °°°!return p*V+a*N**2/V-a*b*N**3/V**2-p*N*b-k*N*T
162
167 print "Zero calcule par la methode de dichotomie dans l’intervalle [", left, ",", right,"] : ", dichotomie
Â(f,left,right,tol,maxITER)
© G. Faccanoni 33
1. Résolution d’équations non linéaires Dimanche 29 septembre 2013
Exercice 1.11
Soit A est un nombre positif donné et considérons l’algorithme suivant : étant donné une valeur x 0 , on calcule
A ° x k2
x k+1 = x k + , k = 0, 1, 2, . . .
2
p p
1. Montrer que si la suite x k converge, alors sa limite est soit A soit ° A.
p
2. On
p considère le cas où A 2]0, 4[. Montrer qu’il existe " > 0 tel que, si |x 0 ° A| ∑ " alors la suite x k converge vers
A.
p p
3. Vérifier
p graphiquement que si x 0 est proche de ° A mais différent de ° A, alors la suite x k ne converge pas vers
° A.
4. Vérifier que si x 0 = 1, alors l’algorithme coïncide avec la méthode de la corde 2 pour résoudre x 2 ° A = 0.
5. Proposer un algorithme plus efficace pour calculer la racine carrée d’un nombre positif A.
A ° `2
` = `+ ,
2
p
c’est-à-dire `2 = A et donc ` = ± A.
2. La méthode peut s’écrire sous la forme d’une méthode de point fixe où la fonction ' est définie par
A ° x2
'(x) = x +
.
2
p p
Si A 2]0, 4[ et ` = A, puisque '0 (x) 0
p= 1 ° x, alors |' (`)| = |1 ° A| < 1 : on
p peut appliquer le théorème d’O STROWSKI
donc il existe " > 0 tel que, si |x 0 ° A| ∑ " alors la suite x k converge vers A.
p
3. On a représenté dans la figurepci-dessousple graphe de la fonction ' lorsque A = 1/2. Si on choisit x 0 < ° Apalors
la
p suite divergepvers °1 ; si ° A < x 0 < A alors la suite converge (de manière monotone croissante) vers p A ; si
A < x 0p< 2 + A alors la suite converge (de manière monotone croissante après la première itération) vers A ; si
x 0 > 2 + A alors la suite diverge vers °1.
y
y =x
p
A
x5
x4
p p
° A x0 x1 x2 x 3x
3
x4 2+ A
p x
x2 A
x1
p
° A
'
4. Soit f la fonction définie par f (x) = x 2 ° A. La méthode de la corde 2 pour résoudre f (x) = 0 s’écrit dans ce cas
f (x k ) x k2 ° A
x k+1 = x k ° = x k ° , k = 0, 1, 2, . . . .
f 0 (x 0 ) 2x 0
f (x k ) x k2 ° A
x k+1 = x k ° = x k ° , k = 0, 1, 2, . . . .
f 0 (x 0 ) 2
Ainsi on conclut que la méthode donnée coïncide avec la méthode de la corde 2 pour résoudre x 2 ° A = 0 lorsque
x 0 = 1 comme point de départ.
34 © G. Faccanoni
Dimanche 29 septembre 2013 1. Résolution d’équations non linéaires
f (x k ) x k2 ° A
x k+1 = x k ° = x k ° , k = 0, 1, 2, . . . .
f 0 (x k ) 2x k
Cette méthode est plus efficace que la précédente car elle converge à l’ordre 2 pour tout x 0 > 0.
Exercice 1.12
Soit f : R ! R la fonction définie par f (x) = x 3 °2. On veut approcher le zéro Æ de f par la méthode de point fixe suivante :
(
x 0 donné,
(1.2)
x k+1 = g ! (x k ) pour tout k ∏ 0,
! 4!
g !0 (Æ) = 3(1 ° !)Æ2 + 1 ° ° = 3(1 ° !)Æ2 + 1 ° ! = (1 ° !)(3Æ2 + 1)
3 3Æ3
donc la méthode de point fixe (1.2) est au moins d’ordre 2 si ! = 1.
3. Pour que la méthode de point fixe (1.2) soit d’ordre 3 il faudrait g 0 (Æ) = g 00 (Æ) = 0. Puisque g 0 (Æ) = 0 si et seulement si
! = 1 et g 100 (Æ) = 4!
Æ4
6= 0, il n’est pas possible d’avoir une convergence d’ordre supérieur à 2.
Exercice 1.13
On considère le problème du calcul de ` 2 [0, º] tel que ` = 1 ° 14 cos(`).
1. Montrer qu’on peut utiliser la méthode de la dichotomie pour approcher `. Que vaut l’approximation de ` après 3
itérations ? Quel est l’erreur maximale qu’on obtient après 3 itérations ?
k 0 1 2 3
[a k , b k ] [0, º]
º
`k 2
2. On considère la méthode de point fixe suivante :
(
x 0 2 [0, º],
(1.3)
x k+1 = g (x k ) pour tout k ∏ 0,
© G. Faccanoni 35
1. Résolution d’équations non linéaires Dimanche 29 septembre 2013
k 0 1 2 3
£ º§ £º º
§ £º 3º
§
[a k , b k ] [0, º] 0, 2 4, 2 4, 8
º º 3º 5º
`k 2 4 8 16
L’erreur qu’on obtient après 3 itérations est au plus égale à la largeur de l’intervalle [a 3 ; b 3 ], c’est-à-dire inférieure à
b°a
23
= º8 .
2. On considère la méthode de point fixe de fonction d’itération g .
2.1. Étude graphique de la convergence :
y
º
x0 xx1x22 x 1 x0 º x
0
2.2. g ([0, º]) = [3/4, 5/4] Ω [0, º] et |g (x)| ∑ 1/4 < 1 : la méthode de point fixe converge vers ` pour tout x 0 2 [0, º].
1
2.3. Pour tout k 2 N il existe ªk compris entre ` et x k tel que |x k °`| = |g (x k°1 )°g (`)| = |g 0 (ªk )||x k°1 °`| ∑ 4k
|x 0 °`| ∑
º
4k
. Donc, pour approcher ` à 10°3 près, il faut prendre le plus petit k 2 N qui vérifie k ∏ log4 (103 º) º 5.9, i.e.
k = 6.
2.4. Pour tout k 2 N on a |x k ° `| ° |x k+1 ° x k | ∑ |x k+1 ° x k + x k ° `| = |x k+1 ° `| ∑ C |x k ° `| avec C = 1/4 d’où
1 "
|x k+1 ° `| ∑ |x k+1 ° x k | ∑ .
1 °C 1 °C
Pour que l’erreur soit inférieur à 10°3 il faut alors choisir " ∑ (1 °C )10°3 .
Exercice 1.14
On considère le problème du calcul de ` 2 [0, º] tel que ` = 1 + 12 sin(`).
1. Montrer qu’on peut utiliser la méthode de la dichotomie pour approcher `. Que vaut l’approximation de ` après 3
itérations ?
2. On considère la méthode de point fixe suivante :
(
x 0 2 [0, º],
(1.4)
x k+1 = g (x k ) pour tout k ∏ 0,
36 © G. Faccanoni
Dimanche 29 septembre 2013 1. Résolution d’équations non linéaires
k 0 1 2 3
£ º§ £º º
§ £ 3º º §
[a k , b k ] [0, º] 0, 2 4, 2 8 ,2
º º 3º 7º
`k 2 4 8 16
x0 x1 x2 º x
º
2
2.2. g ([0, º]) = [1, 3/2] Ω [0, º] et |g 0 (x)| ∑ 1/2 < 1 : la méthode de point fixe converge pour tout x 0 2 [0, º].
1
2.3. Pour tout k 2 N il existe ªk compris entre ` et x k tel que |x k °`| = |g (x k°1 )°g (`)| = |g 0 (ªk )||x k°1 °`| ∑ 2k
|x 0 °`| ∑
º °3 3
2k
. Donc, pour approcher ` à 10 près, il faut prendre le plus petit k 2 N qui vérifie k ∏ log2 (10 º) º 11.7, i.e.
k = 12.
2.4. Pour tout k 2 N on a [|x k ° `| ° |x k+1 ° x k | ∑ |x k+1 ° x k + x k ° `| = |x k+1 ° `| ∑ C |x k ° `| d’où
1 "
|x k+1 ° `| ∑ |x k+1 ° x k | ∑ .
1 °C 1 °C
Pour que l’erreur soit inférieur à 10°3 il faut alors choisir " ∑ (1 °C ) £ 10°3 .
Exercice 1.15
Le but de cet exercice est de calculer la racine cubique d’un nombre positif a. Soit g la fonction définie sur R§+ par
2 1 a
g (x) = x + (a > 0 fixé).
3 3 x2
1. Faire l’étude complète de la fonction g .
2. Comparer g à l’identité.
3. Soit la suite (x n )n2N définie par
x n+1 = g (x n ), x 0 > 0.
À l’aide des graphe de g et de l’identité sur R§+ , dessiner la suite (x n )n2N sur l’axe des abscisses. Observer graphi-
quement la convergence.
4. Justifier mathématiquement la convergence observée graphiquement. En particulier, montrer que cette suite est
décroissante à partir du rang 1.
5. Calculer l’ordre de convergence de la suite.
p
6. Écrire l’algorithme défini par la suite (x n )n2N qui permet de déterminer 3
a à une précision de 10°6 .
7. Expliciter la méthode de N EWTON pour la recherche du zéro de la fonction f définie par f (x) = x 3 ° a. Que
remarque-t-on ?
© G. Faccanoni 37
1. Résolution d’équations non linéaires Dimanche 29 septembre 2013
y y
i (x) i (x)
g (x) g (x)
y = 23 x
p
3
p
3
a a
x0 x4 x3 x2 x1
p
3 x p
3 x
a a
(a) Graphe de g comparé au graphe de i (x) = x. (b) Étude graphique de la convergence de la mé-
thode de point fixe.
p
x 0 3
a +1
g 0 (x) ° +
+1 +1
g (x)
p
3
a
2. Graphe de g comparé au graphe de i (x) = x : voir la figure 1.4a. On vérifie analytiquement qu’il existe une et une
seule intersection entre la courbe d’équation y = g (x) et la droite d’équation y = x :
2 1 a
g (x) = x () x+ =x () x 3 = a.
3 3 x2
x ) ° g (x k )| = |g 0 (z k )ek |
ek+1 = |g (b
38 © G. Faccanoni
Dimanche 29 septembre 2013 1. Résolution d’équations non linéaires
f (x k ) x k3 ° a 1 a 2 a
x k+1 = x k ° = x k ° 2
= xk ° xk + 2 = xk + 2
f 0 (x k ) 3x k 3 3x k 3 3x k
autrement dit la méthode de point fixe assignée est la méthode de N EWTON (qu’on sait être d’ordre de convergence
égale à 2 lorsque la racine est simple).
Exercice 1.16
On veut résoudre l’équation e °Æx = x avec 0 < Æ < 1.
1. Vérifier que cette équation admet une unique solution, notée `Æ , dans R.
2. Soit g : R ! R la fonction définie par g (x) = e °Æx . On définit la suite récurrente
(
u0 2 R
(1.5)
u n+1 = g (u n ).
On veut montrer que u n converge vers `Æ . Pour cela, comparer d’abord le graphe de g à l’identité et observer
graphiquement la convergence, ensuite justifier mathématiquement la convergence observée graphiquement.
3. Écrire la méthode de N EWTON pour résoudre l’équation e °Æx = x avec 0 < Æ < 1. Parmi la méthode de N EWTON et
la méthode de point fixe (1.5), laquelle faut-il préférer vis-à-vis de la vitesse de convergence ?
La méthode de point fixe (1.5) n’est que d’ordre 1 car g 0 (`Æ ) 6= 0 tandis que la méthode de N EWTON, qui est encore
une méthode de point fixe, est d’ordre 2 (car Æ est un zéro simple).
© G. Faccanoni 39
1. Résolution d’équations non linéaires Dimanche 29 septembre 2013
y i (x) y i (x)
`Æ `Æ
g (x) x0 x2 x3 x1
g (x)
0 `Æ 1 x `Æ x
(a) Graphe de g comparé au graphe de i (x) = x. (b) Étude graphique de la convergence de la méthode de point
fixe.
Exercice 1.17
Soit f une application de R dans R définie par f (x) = exp(x 2 ) ° 4x 2 . On se propose de trouver les racines réelles de f .
1. Situer les 4 racines de f (i.e. indiquer 4 intervalles disjoints qui contiennent chacun une et une seule racine).
2. Montrer qu’il y a une racine xb comprise entre 0 et 1.
3. Soit la méthode de point fixe (
x k+1 = ¡(x k ),
(1.7)
x 0 2]0, 1[,
p
exp(x 2 )
avec ¡ l’application de R dans R définie par ¡(x) = 2 . Examiner la convergence de cette méthode et en
préciser l’ordre de convergence.
4. Écrire la méthode de N EWTON pour la recherche des zéros de la fonction f .
5. Entre la méthode de N EWTON et la méthode de point fixe (1.7), quelle est la plus efficace ? Justifier la réponse.
40 © G. Faccanoni
Dimanche 29 septembre 2013 1. Résolution d’équations non linéaires
y y
f (x) f (x)
1 1
p
ln 4 0 1
x xb x
4(1°ln 4)
1 1
xb
xb
xb
xb
0 xb 1 x
f (x k ) exp(x k2 ) ° 4x k2 exp(x k2 ) ° 4x k2
x k+1 = x k ° = x k ° = x k ° .
f 0 (x k ) 2x k exp(x k2 ) ° 8x k 2x k (exp(x k2 ) ° 4)
0 xb 1 x
5. Puisque xb est une racine simple de f , la méthode de N EWTON converge à l’ordre 2 tandis que la méthode de point
fixe (1.7) converge seulement à l’ordre 1 : la méthode de N EWTON est donc plus efficace.
Exercice 1.18
p
On cherche à évaluer 5 à l’aide d’un algorithme n’autorisant que les opérations élémentaires. Soit (x n )n2N la suite
définie par récurrence
8
<x 0 = 1,
10x n
:x n+1 = 8n 2 N.
x n2 + 5
© G. Faccanoni 41
1. Résolution d’équations non linéaires Dimanche 29 septembre 2013
y i (x) y i (x)
p
5
5
3
g (x) g (x)
p x x
1 5
x0 x1 x2
p
1. Montrer que si la suite converge, alors elle converge vers 0 ou 5.
p
2. Soit la fonction g définie sur [1; 5] par g (x) = x10x
2 +5 . Étudier g et la comparer à l’identité.
p
3. Montrer que la suite (x n )n2N est croissante et majorée par 5. Conclure.
4. Déterminer l’ordre de convergence de cette suite.
10x
g (x) = x () =x () x 2 = 5.
x2 + 5
p p p p
3. On a g (x) 2 [5/3; 5] pour tout x 2 [1; 5] et on a vu au point précédent que g est croissante et g ( 5) = 5.
De plus, g (x) ∏ x car
10x 10x
g (x) = 2 ∏ p = x,
x + 5 ( 5)2 + 5
par conséquent la suite x k+1 = g (x k ) ∏ x k est croissante.
p p p
Comme g (x) ∑ ( 5) = 5 alors la suite x k+1 = g (x k ) ∑ 5 est bornée. On a ainsi une suite croissante et borné,
© p ce™ qui
implique qu’elle converge.
p Comme au premier point on a montré que si elle converge vers ` alors ` 2 0, 5 , on
conclut que x n °°°°°! 5. Pour l’étude graphique de la convergence de la méthode de point fixe voir la figure 1.8b.
n!+1
Dans
p ce cas, on ne peut pas utiliser le théorème de point fixe pour prouver la convergence de la suite sur l’intervalle
[1; 5]. En effet
p
? g est au moins de classe C 1 ([1; 5])
p p p
? g ([1; 5]) = [5/3; 5] Ω [1; 5]
p p p p p
? mais 0 ∑ g 0 (x) < 1 ssi x 2 [ °10 + 5 5; 5] (et on a °10 + 5 5 > 1).
42 © G. Faccanoni
Dimanche 29 septembre 2013 1. Résolution d’équations non linéaires
p
En revanche, on peut utiliser le théorème de point fixe pour prouver la convergence de la suite sur l’intervalle [5/3; 5]
car
p
? g est au moins de classe C 1 ([5/3; 5])
p p
? g ([5/3; 5]) Ω [5/3; 5]
p
? 0 ∑ g 0 (x) < 1 pour tout x 2 [5/3; 5].
p p
4. Comme g 0 ( 5) = 0 et g 00 ( 5) 6= 0, la méthode de point fixe associée à la fonction d’itération g est d’ordre 2.
Exercice 1.19
L’objectif de cet exercice est de déterminer le zéro d’une fonction C 2 (R, R) vérifiant °2 < f 0 (x) < °1 sur R. On définit la
suite {x n }n2N de R par la récurrence suivante
x n+1 = g (x n ) = x n + Æ f (x n ),
x n+1 = g (x n ) = x n + Æn f (x n ).
Quel est le nom de cette méthode itérative ? Montrer que la suite {x n }n2N converge quel que soit x 0 2 R.
NB : seul la condition f 0 (x) < °1 permet de conclure car une fonction peut être monotone décroissante mais avoir
une limite finie !
2. Puisque lim f (x) = +1 > 0 et lim f (x) = °1 < 0, pour le théorème des valeurs intermédiaires il existe au moins
x!°1 x!+1
un ` 2 R tel que f (`) = 0. Puisque f 0 (x) < 0 pour tout x 2 R, ce ` est unique.
3. Considérons la fonction g définie par g (x) = x + Æ f (x) alors g est de classe C 2 (R, R) et
© G. Faccanoni 43
1. Résolution d’équations non linéaires Dimanche 29 septembre 2013
4.1. On vérifie d’abord que, si la suite converge vers un point fixe de g , ce point est bien un zéro de f (ici le réciproque
est vrai aussi) : soit ` 2 R, alors
4.2. vérifions maintenant que la suite converge vers un point fixe de g (et donc, grâce à ce qu’on a vu au point
précédant, elle converge vers l’unique zéro de f ) :
4.2.1. on a évidemment que g : R ! R ;
4.2.2. on a déjà remarqué que g 2 C 1 (R, R) ;
4.2.3. pour tout x dans R on a prouvé que |g 0 (x)| < 1, i.e. que g est contractante.
Alors la suite x n+1 = g (x n ) converge vers ` point fixe de g et zéro de f .
5. Si Æ = ° f 01(`) alors
f (x n )
x n+1 = g (x n ) = x n ° ,
f 0 (`)
1
qui converge car °2 < f 0 (`) < °1 ssi 2 < Æ < 1 et donc on rentre dans le cas de 0 < Æ < 1.
6. Étant donné que
g 0 (`) = 1 + Æ f 0 (`)
?la méthode de point fixe converge à l’ordre 2 si Æ f 0 (`) = °1,
? la méthode de point fixe converge à l’ordre 1 si °2 < Æ f 0 (`) < 0 mais Æ f 0 (`) 6= °1,
? la méthode de point fixe ne converge pas si Æ f 0 (`) < °2 ou Æ f 0 (`) > 0.
Étant donné que °2 < f 0 (`) < °1 et que 0 < Æ < 1 on peut conclure que
1
? la méthode de point fixe converge à l’ordre 2 si Æ = ° f 0 (`) ,
x n+1 = g (x n ) = x n + Æn f (x n ),
Exercice 1.20
L’objectif de cet exercice est de déterminer le zéro d’une fonction f 2 C 2 (R, R) vérifiant 1 < f 0 (x) < 2 sur R. On définit la
suite {x n }n2N de R par la récurrence suivante
x n+1 = g (x n ),
où Æ > 0 et x 0 2 R sont donnés et la fonction g : R ! R est définie par g (x) = x ° Æ f (x).
1. Montrer que lim f (x) = °1, lim f (x) = +1 et en déduire qu’il existe un unique ` 2 R tel que f (`) = 0.
x!°1 x!+1
2. Montrer que si 0 < Æ < 1, la fonction g vérifie |g 0 (x)| < 1 sur R. En déduire la convergence de la suite {x n }n2N pour
tout Æ 2]0; 1[ quel que soit x 0 2 R.
3. Donner l’ordre de convergence de la suite {x n }n2N en fonction de Æ 2]0; 1[.
4. Comme d’un point de vue pratique on ne peut pas choisir Æ = f 01(`) , on va l’approcher par Æn = 1
f 0 (x n )
et on obtient
la suite {x n }n2N définie par
x n+1 = x n ° Æn f (x n ).
Quel est le nom de cette méthode itérative ? Montrer que la suite {x n }n2N converge quel que soit x 0 2 R.
44 © G. Faccanoni
Dimanche 29 septembre 2013 1. Résolution d’équations non linéaires
NB : seul la condition 1 < f 0 (x) < 2 permet de conclure car une fonction peut être monotone croissante mais avoir
une limite finie !
Puisque lim f (x) = °1 < 0 et lim f (x) = +1 > 0, pour le théorème des valeurs intermédiaires il existe au moins
x!°1 x!+1
un ` 2 R tel que f (`) = 0. Puisque f 0 (x) > 0 pour tout x 2 R, ce ` est unique.
2. g est de classe C 2 (R, R). Puisque 1 < f 0 (x) < 2 et 0 < Æ < 1 on a
Autrement dit
|g 0 (x)| < 1 sur R.
On étudie alors la suite
x n+1 = g (x n )
et on va vérifier qu’il s’agit d’une méthode de point fixe pour le calcul du zéro ` de f .
2.1. On vérifie d’abord que, si la suite converge vers un point fixe de g , ce point est bien un zéro de f (ici le réciproque
est vrai aussi) : soit ` 2 R, alors
Æ6=0
` = g (`) () ` = ` ° Æ f (`) () 0 = Æ f (`) () f (`) = 0;
2.2. vérifions maintenant que la suite converge vers un point fixe de g (et donc, grâce à ce qu’on a vu au point
précédant, elle converge vers l’unique zéro de f ) : g 2 C 1 (R, R) et pour tout x dans R on a prouvé que |g 0 (x)| < 1,
i.e. g est contractante, alors la suite x n+1 = g (x n ) converge vers ` point fixe de g et zéro de f .
3. Étant donné que
g 0 (`) = 1 ° Æ f 0 (`)
avec 0 < f 0 (`) < 2 et 0 < Æ < 1, on peut conclure que
1
? la méthode de point fixe converge à l’ordre 2 si Æ = f 0 (`)
,
1
? la méthode de point fixe converge à l’ordre 1 si Æ 6= f 0 (`)
.
1 1
4. D’un point de vue pratique on ne peut pas choisir Æ = f 0 (`)
car on ne connaît pas `. Si on choisit d’approcher Æ = f 0 (`)
1
par Æn = f 0 (x n )
et on considère la suite {x n }n2N définie par
x n+1 = x n ° Æn f (x n ),
Exercice 1.21
Soit g la fonction définie sur R§+ par
2x 3 + 4x 2 + 10
g (x) = .
3x 2 + 8x
1. Faire l’étude complète de la fonction g . (On admettra que x 3 +4x 2 °10 = 0 admet comme unique solution m º 1,36
et que g (m) = m.)
2. Comparer g à l’identité.
3. Soit la suite (x n )n2N définie par
x n+1 = g (x n ), x 0 > 0.
À l’aide des graphe de g et de l’identité sur R§+ ,
dessiner la suite (x n )n2N sur l’axe des abscisses. Observer graphi-
quement la convergence. En particulier, montrer que cette suite est décroissante à partir du rang 1.
4. Expliciter (sans la vérifier) la condition nécessaire pour la convergence observée graphiquement.
5. Écrire l’algorithme défini par la suite (x n )n2N qui permet de déterminer le point fixe à une précision de ".
6. Expliciter la méthode de N EWTON pour la recherche du zéro de la fonction f définie par f (x) = x 3 + 4x 2 ° 10. Que
remarque-t-on ?
7. Donner l’ordre de convergence de la suite.
© G. Faccanoni 45
1. Résolution d’équations non linéaires Dimanche 29 septembre 2013
y
y i (x) i (x)
g (x) g (x)
y = 23 x ° 49
m x x0 x4 x3 x2 x1 x
(a) Graphe de g comparé au graphe de i . (b) Étude graphique de la convergence de la méthode de point
fixe.
F IGURE 1.9.
x 0 m +1
g 0 (x) ° +
+1 +1
g (x)
m
2. Graphe de g comparé au graphe de i (x) = x : voir la figure 1.9a. On vérifie analytiquement qu’il existe une et une
seule intersection entre la courbe d’équation y = g (x) et la droite d’équation y = x :
2x 3 + 4x 2 + 10
g (x) = x () =x () x 3 + 4x 2 ° 10 = 0 () x =m () f (x) = 0.
3x 2 + 8x
3. Pour l’étude graphique de la convergence de la méthode de point fixe voir la figure 1.9b.
4. On en déduit que pour tout x > 0 on a g (x) ∏ m. Donc, pour tout k > 0, x k = g (x k°1 ) ∏ m. Pour étudier la convergence
de la méthode vérifions si on peut appliquer le théorème de point fixe :
4.1. pour tout x dans [m, +1[ on a g (x) > m donc g ([m, +1[) Ω [m, +1[ ;
4.2. g 2 C 1 ([m, +1[) ; Ø 2 Ø
Ø (6x +8x)°g (x)(6x+8) Ø
4.3. pour tout x dans [m, +1[, on a |g 0 (x)| = Ø 2
3x +8x
Ø < 1 alors g est contractante.
Si les conditions précédentes sont vérifiées alors la méthode converge vers m point fixe de g . De plus, pour tout Æ 2
[m, +1[ : Æ = g (Æ) () Æ = m donc le point fixe de g est racine de f .
5. Algorithme de point fixe :
Require: x 0 > 0, g : x 7! g (x)
46 © G. Faccanoni
Dimanche 29 septembre 2013 1. Résolution d’équations non linéaires
f (x k ) x k3 + 4x k2 ° 10
x k+1 = x k ° = x k ° = g (x k )
f 0 (x k ) 3x k2 + 8x k
x ) ° g (x k )| = |g 0 (z k )ek |
ek+1 = |g (b
Exercice 1.22
q
On se propose de calculer 4 13 en trouvant les racines réelles de l’application f de R dans R définie par f (x) = x 4 ° 13 .
1. Situer les 2 racines de f (i.e. indiquer 2 intervalles disjoints qui contiennent chacun une et une seule racine). En
particulier, montrer qu’il y a une racine xb comprise entre 0 et 1.
2. Soit g la fonction définie sur [0; 1] par
x(9x 4 + 5)
g (x) = .
3(5x 4 + 1)
2.1. Faire l’étude complète de la fonction g et la comparer à l’identité.
2.2. Soit la suite (x n )n2N définie par
x n+1 = g (x n ), x 0 2]0; 1[.
À l’aide des graphe de g et de l’identité sur [0; 1], dessiner la suite (x n )n2N sur l’axe des abscisses. Observer
graphiquement la convergence.
2.3. Justifier mathématiquement la convergence observée graphiquement.
2.4. Calculer l’ordre de convergence de la suite.
q
4 1
2.5. Écrire l’algorithme défini par la suite (x n )n2N qui permet de déterminer 3 à une précision de ".
3. Expliciter la méthode de N EWTON pour la recherche du zéro de la fonction f .
4. Entre la méthode de N EWTON et la méthode de point fixe x k+1 = g (x k ), quelle est la plus efficace ? Justifier la
réponse.
© G. Faccanoni 47
1. Résolution d’équations non linéaires Dimanche 29 septembre 2013
y y
q y = 35 x q
4 1 4 1
3 3
q x x0 x1 x2 x3 q
x4 x
4 1 1 4 1 1
3 3
(a) Graphe de g comparé au graphe de i . (b) Étude graphique de la convergence de la méthode de point fixe.
F IGURE 1.10.
? Pour le graphe de g comparé au graphe de i (x) = x pour x 2 [0; 1] voir la figure 1.10a.
? On vérifie analytiquement qu’il existe une et une seule intersection entre la courbe d’équation y = g (x) et
la droite d’équation y = x :
x(9x 4 + 5) 1
g (x) = x () =x () 9x 4 + 5 = 3(5x 4 + 1) () x4 = () f (x) = 0.
3(5x 4 + 1) 3
2.2. Pour l’étude graphique de la convergence de la méthode de point fixe voir la figure 1.10b.
2.3. Étudions la convergence de la méthode. On remarque que
r
x k+1 9x k4 + 5 4 1
= > 1 () x k <
xk 3(5x k4 + 1) 3
( iq h
4 1
x0 2 3;0
x k+1 = g (x k )
q q
est monotone décroissante et minoré par 4 13 : elle est donc convergente vers ` ∑ 4 13 . Comme ` = g (`) ssi
q q
` = 4 13 , on conclut qu’elle converge vers 4 13 .
q
Par conséquent, quelque soit le point initiale, la méthode de point fixe donnée converge vers 4 13 point fixe de
g (et racine de f ).
Soulignons qu’on ne peut pas utiliser le théorème de point fixe pour prouver la convergence de la méthode car
g n’est pas contractante sur [0; 1]. En effet, dans [0; 1] on a
r
16
|g 0 (x)| < 1 () g 0 (x) < 1 () 5(3x 4 ° 1)2 < 3(5x 4 + 1)2 () 15x 8 + 30x 4 ° 1 > 0 () x 4 > °1 + 2]0; 1[.
15
q 8
p
x 4 +1 15 3
2.4. Si on pose xb = 4 13 alors g (b
x ) = xb, g 0 (b
x ) = 0, g 00 (b
x ) = 0 et g 000 (b x 2 25bx(5bx°22b
x ) = °320b 4 +1)4 = 2 : on conclut que la
suite converge à l’ordre 3.
2.5. Algorithme de point fixe :
Require: x 0 > 0, g : x 7! g (x)
48 © G. Faccanoni
Dimanche 29 septembre 2013 1. Résolution d’équations non linéaires
C ORRECTION DE L’ EXERCICE 1.23. On modifie les fonctions données à la page 23 pour que les méthodes s’arrêtent lorsque
le nombre d’itérations est égal à maxITER :
1 import math, sys
2
3 def dichotomie(f,a,b,tol,maxITER):
4 °°°!fa = f(a)
5 °°°!if abs(fa)<=tol:
6 °°°!°°°!return a
7 °°°!fb = f(b)
8 °°°!if abs(fb)<=tol:
9 °°°!°°°!return b
10 °°°!if fa*fb > 0.0:
11 °°°!°°°!print "La racine n’est pas encadree"
12 °°°!°°°!sys.exit(0)
13 °°°!n = int(math.ceil(math.log(abs(b-a)/tol)/math.log(2.0)))
14 °°°!for k in range(min(n+1,maxITER)):
15 °°°!°°°!c = (a+b)*0.5
16 °°°!°°°!fc = f(c)
17 °°°!°°°!if fc == 0.0:
18 °°°!°°°!°°°!return c
19 °°°!°°°!if fc*fb < 0.0:
20 °°°!°°°!°°°!a = c
21 °°°!°°°!°°°!fa = fc
22 °°°!°°°!else:
23 °°°!°°°!°°°!b = c
24 °°°!°°°!°°°!fb = fc
25 °°°!return (a+b)*0.5
26
27 def lagrange(f,a,b,tol,maxITER):
28 fa = f(a)
29 if abs(fa)<=tol:
30 return a
31 fb = f(b)
32 if abs(fb)<=tol:
33 return b
34 if fa*fb > 0.0:
35 print "La racine n’est pas encadree"
36 sys.exit(0)
37 k = 0
38 fc = 2.*tol
39 while ( (abs(b-a)>tol) and (abs(fc)>tol) and (k<maxITER) ):
40 k += 1
41 c = a-fa*(b-a)/(fb-fa)
42 fc = f(c)
43 if fc == 0.0:
44 return c
45 if fc*fb < 0.0:
46 a = c
47 fa = fc
48 else:
© G. Faccanoni 49
1. Résolution d’équations non linéaires Dimanche 29 septembre 2013
49 b = c
50 fb = fc
51 return a-fa*(b-a)/(fb-fa)
52
53 def newton(f,x_init,tol,maxITER):
54 °°°!k = 0
55 °°°!x = x_init
56 °°°!fx = f(x)
57 °°°!h = tol
58 °°°!dfx = df(x)
59 °°°!while ( (abs(fx)>tol) and (k<maxITER) ):
60 °°°!°°°!x = x - fx/dfx
61 °°°!°°°!fx = f(x)
62 °°°!°°°!dfx = df(x)
63 °°°!°°°!k += 1
64 °°°!return x
Ensuite on construit une matrice dont la première colonne contient le nombre d’itérations, la deuxième colonne l’erreur
absolue obtenue par la méthode de la dichotomie avec le nombre d’itérations indiqué dans la première colonne, la troi-
sième colonne l’erreur absolue obtenue par la méthode de L AGRANGE et la dernière par la méthode de N EWTON.
65 def f(x):
66 return (math.cos(2.*x))**2-x**2
67 def df(x):
68 return -4.*math.cos(2.*x)*math.sin(2.*x)-2.*x
69
70 exact = 0.5149332646611294
71
72 nITER = 10
73 tol = sys.float_info.epsilon
74 a = 0.
75 b = 1.5
76 x_init = 0.75
77
78
79 XXX = []
80 Dic = []
81 Lag = []
82 New = []
83
84 for i in range(nITER):
85 maxITER = i
86 XXX.append(maxITER)
87 Dic.append(abs(exact-dichotomie(f,a,b,tol,maxITER)))
88 Lag.append(abs(exact-lagrange(f,a,b,tol,maxITER)))
89 New.append(abs(exact-newton(f,x_init,tol,maxITER)))
90 print "%2.g %15.17f %15.17f %15.17f" % (XXX[i], Dic[i], Lag[i], New[i])
50 © G. Faccanoni
Dimanche 29 septembre 2013 1. Résolution d’équations non linéaires
92 xlabel(’Iterations’)
93 ylabel(’Absolute error’)
94 axis([0.,nITER,0.,0.1])
95 semilogy(XXX,Dic,"r-o",XXX,Lag,"g-o",XXX,New,"y-o")
96 legend([’Dichotomie’,’Lagrange’,’Newton’])
97 show()
On remarque tout d’abord que la décroissance de l’erreur avec la méthode de la dichotomie n’est pas monotone. De plus,
on voit que la méthode de N EWTON est d’ordre 2 tandis que la méthode de L AGRANGE est d’ordre 1.
© G. Faccanoni 51
2. Interpolation
© ™n
Étant donné n + 1 points (x i , y i ) i =0 , trouver une fonction f : x 7! f (x) telle que f (x i ) = y i
Approcher une fonction f consiste à la remplacer par une autre fonction ' dont la forme est plus simple et dont on
peut se servir à la place de f . On verra dans le prochain chapitre qu’on utilise fréquemment cette stratégie en intégration
Rb Rb
numérique quand, au lieu de calculer a f (x) dx on calcule de manière exacte a '(x) dx, où ' est une fonction simple à
intégrer (par exemple polynomiale). Dans d’autres contextes, la fonction f peut n’être connue que par les valeurs qu’elle
prend en quelques points particuliers. Dans ce cas, on cherche à construire une fonction continue ' représentant une loi
empirique qui se cacherait derrière les données.
P m (x i ) = y i pour 0 ∑ i ∑ m. (2.1)
P m (x) = a 0 + a 1 x + a 2 x 2 + · · · + a m x m ,
où a 0 , a 1 , a 2 , . . . , a m sont des coefficients qui devront être déterminés. Les (m + 1) relations (2.1) s’écrivent alors
8
>
> a 0 + a 1 x 0 + . . . a n x 0m = y 0
>
>
<a + a x + . . . a x m = y
0 1 1 n 1 1
>
> . . .
>
>
: m
an + a1 xm + . . . am xm = ym
Puisque les valeurs x i et y i sont connues, ces relations forment un système linéaire de (m + 1) équations en les (m + 1)
inconnues a 0 , a 1 , a 2 , . . . , a m qu’on peut mettre sous la forme matricielle 1
0 10 1 0 1
1 x 0 . . . x 0m a0 y0
B1 x . . . x 1m C B C B C
B 1 C B a1 C B y 1 C
B. .. C B C B C
B. .. CB . C = B . C. (2.2)
@. . . A @ .. A @ .. A
m
1 xm ... xm am ym
0 1
1 x 0 ... x 0m
B 1 x1 ... x1m C
B C
1. La matrice B . . . C s’appelle matrice de VANDERMONDE.
@. . . A
. . .
m
1 x m ... x m
53
2. Interpolation Dimanche 29 septembre 2013
Ainsi, le problème consistant à chercher le polynôme P m satisfaisant (2.1) peut se réduire à résoudre le système linéaire (2.2).
Cependant, résoudre une système linéaire de (m + 1) équations à (m + 1) inconnues n’est pas une tache triviale. Cette
méthode pour trouver le polynôme P m n’est donc pas une bonne méthode en pratique. Dans la suite on va étudier une
méthode plus astucieuse pour construire le polynôme P m .
autrement dit s’il existe une base telle que les coordonnées du polynôme dans cette base ne sont rien d’autre que les valeurs
connues y 0 , y 1 , . . . , y m .
Pour trouver une telle base, commençons par imposer le passage du polynômes par les m + 1 points donnés : les (m + 1)
relations (2.1) imposent la condition :
(
1 si i = j
L i (x j ) = pour 0 ∑ i , j ∑ m,
0 sinon
ce qui donne
n x °x
Y (x ° x 0 )(x ° x 1 ) · · · (x ° x i °1 )(x ° x i +1 ) · · · (x ° x m )
j
L i (x) = = .
j =0 xi ° x j (x i ° x 0 )(x i ° x 1 ) · · · (x i ° x i °1 )(x i ° x i +1 ) · · · (x i ° x m )
j 6=i
Clairement, le numérateur de L i (x) est un produit de m termes (x ° x j ) avec i 6= j et est donc un polynôme de degré m. Le
dénominateur est une constante et il est facile de vérifier que
? L i (x) 2 Rm [x],
? L i (x j ) = 0 si i 6= j , 0 ∑ i ∑ m,
? L i (x i ) = 1.
P
De plus, les polynômes L 0 , L 1 , L 2 , . . . , L m sont linéairement indépendants car si l’équation m i =0 Æi L i (x) = 0 doit être satis-
Pm P
faite pour tout x 2 R alors i =0 Æi L i (x j ) = 0 doit être vraie pour tout j = 0, 1, . . . , m et puisque m i =0 Æi L i (x j ) = Æ j , on conclut
que tous les Æ j sont nuls. Par conséquent, la famille { L 0 , L 1 , L 2 , . . . , L m } forme une base de Rm [x].
Il est important de remarquer que nous avons construit explicitement une solution du problème (2.1) et ceci pour n’im-
porte quelles valeurs y 0 , y 1 , y 2 , . . . , y m données. Ceci montre que le système linéaire (2.2) a toujours une unique solution.
Théorème Interpolation de L AGRANGE
Étant donné m + 1 points distincts x 0 , . . . , x m et m + 1 valeurs correspondantes y 0 , . . . , y m , il existe un unique polynôme
P m 2 Rm [x] tel que P m (x i ) = y i , pour i = 0, . . . m qu’on peut écrire sous la forme
m
X m x °x
Y j
P m (x) = y i L i (x) 2 Rm [x] où L i (x) = .
i =0 j =0 xi ° x j
j 6=i
Cette relation est appelée formule d’interpolation de L AGRANGE et les polynômes L i sont les polynômes caractéristiques
(de L AGRANGE).
Exemple
Pour m = 2 le polynôme de L AGRANGE s’écrit
Exemple
On cherche le polynôme d’interpolation de L AGRANGE qui en °1 vaut 8, en 0 vaut 3 et en 1 vaut 6. On a
54 © G. Faccanoni
Dimanche 29 septembre 2013 2. Interpolation
Remarque
Si m est petit il est souvent plus simple de calculer directement les coefficients a 0 , a 1 , . . ., a m en résolvant le système
linéaire (2.2).
Soit f : R ! R une fonction continue donnée et soit x 0 , x 1 , x 2 , . . . , x m , (m+1) points distincts donnés. Interpoler la fonction
f aux points x i , 0 ∑ i ∑ m signifie chercher un polynôme P m de degré m tel que
P m (x i ) = f (x i ) pour 0 ∑ i ∑ m. (2.3)
La figure ci-dessous montre le graphe de la fonction f et de son interpolant aux points °1, 0, 1.
y
e
f
P2
1
e
°1 0 1 x
Proposition Erreur
Si y i = f (x i ) pour i = 0, 1, . . . , n, f : I ! R étant une fonction donnée de classe C n+1 (I ) où I est le plus petit intervalle
contenant les nœuds distincts { x i }ni=0 , alors il existe ª 2 I tel que l’erreur d’interpolation au point x 2 I est donnée par
f (n+1) (ª)
E n (x) ¥ f (x) ° P n (x) = !n+1 (x)
(n + 1)!
n
Q
où !n+1 (x) ¥ (x ° x j ).
i =0
Démonstration. Le résultat est évidemment vrai si x coïncide avec l’un des nœuds d’interpolation car E n (x i ) = 0 pour
i = 0, 1, . . . , n. Autrement, considérons x 2 I , x 6= x i pour i = 0, . . . , n et définissons la fonction
G: I !R
!n+1 (t )
t 7! E n (t ) ° E n (x)
!n+1 (x)
© G. Faccanoni 55
2. Interpolation Dimanche 29 septembre 2013
Puisque f 2 C (n+1) (I ) et puisque !n+1 est un polynôme, G 2 C (n+1) (I ) et possède au moins n + 2 zéros distincts dans I . En
effet, les zéros de G sont les n + 1 nœuds x i et le point x car
!n+1 (x i )
G(x i ) = E n (x i ) ° E n (x) = 0, i = 0, . . . , n
!n+1 (x)
!n+1 (x)
G(x) = E n (x) ° E n (x) = 0.
!n+1 (x)
Ainsi, d’après le théorème des valeurs intermédiaires, G 0 admet au moins n + 1 zéros distincts et par récurrence G ( j ) a au
moins n + 2 ° j zéros distincts. Par conséquent, G (n+1) a au moins un zéro, qu’on note ª. D’autre part, puisque E n(n+1) (t ) =
f (n+1) (t ) et !(n+1)
n+1 (x) = (n + 1)! on a
(n + 1)!
G (n+1) (t ) = f (n+1) (t ) ° E n (x)
!n+1 (x)
ce qui donne, avec t = ª, l’expression voulue pour E n (x).
Dans le cas d’une distribution uniforme de nœuds, i.e. quand x i = x i °1 + h avec i = 1, 2, . . . , n et h > 0 et x 0 donnés, on a
h n+1
|!n+1 (x)| ∑ n!
4
et donc
maxx2I | f (n+1) (x)| n+1
max|E n (x)| ∑ h .
x2I 4(n + 1)
3 def lagrange(t,x,y):
4 °°°!p = 0
5 °°°!n = len(x)
6 °°°!L = [1 for i in range(n)]
7 °°°!for i in range(n):
8 °°°!°°°!for j in range(n):
9 °°°!°°°!°°°!if j!=i:
10 °°°!°°°!°°°!°°°!L[i] *= (t-x[j])/(x[i]-x[j])
11 °°°!°°°!p += y[i]*L[i]
12 °°°!return p
13
14 def f(x):
15 °°°!return 1./(1.+x**2)
56 © G. Faccanoni
Dimanche 29 septembre 2013 2. Interpolation
"Noeuds équirépartis"
1 x1 = linspace(-5,5,3)
2 x2 = linspace(-5,5,5)
3 x3 = linspace(-5,5,10)
4 y1 = f(x1)
5 y2 = f(x2)
6 y3 = f(x3)
7
18 plot(t,f(t),’r-’,t,l1t,’b:’,t,l2t,’m-.’,t,l3t,’y--’)
19 legend([’f’,’p_3’,’p_5’,’p_10’],loc=’lower center’)
20 axis([-5, 5, -0.5, 1])
21 show()
4 x1 = Tchebychev(-5,5,3)
5 x2 = Tchebychev(-5,5,5)
6 x3 = Tchebychev(-5,5,10)
7 y1 = [f(x) for x in x1]
8 y2 = [f(x) for x in x2]
9 y3 = [f(x) for x in x3]
10
21 plot(t,f(t),’r-’,t,l1t,’b:’,t,l2t,’m-.’,t,l3t,’y--’)
22 legend([’f’,’p_3’,’p_5’,’p_10’],loc=’lower center’)
23 axis([-5, 5, -0.5, 1])
24 show()
© G. Faccanoni 57
2. Interpolation Dimanche 29 septembre 2013
(a) (b)
où
n
X
§n (x) ¥ max |'i (x)|
x2I i =0
est appelée constante de L EBESGUE (noter que cette constante dépend des nœuds d’interpolation). Des petites perturba-
tions sur les valeurs nodales f (x i ) entraînent des petites variations sur le polynôme d’interpolation quand la constante
de L EBESGUE est petite. La constante de L EBESGUE mesure donc le conditionnement du problème d’interpolation. Pour
l’interpolation de L AGRANGE avec des nœuds équirépartis
2n+1
§n (x) '
(ln(n) + ∞)ne
où e ' 2.71834 (nombre de N EPER) et ∞ ' 0.547721 (constante d’E ULER). Quand n est grand, l’interpolation de L AGRANGE
sur des nœuds équirépartis peut donc être instable.
Exemple
Dans la Figure 2.2 on a tracé
? la fonction f (x) = sin(2ºx),
? le polynôme de L AGRANGE `21 qui interpole f en 22 nœuds équirépartis sur l’intervalle [°1; 1], c’est-à-dire l’ensemble
© ™21
x i = °1 + 0.1i , y i = f (x i ) i =0 ,
© ™21
? le polynôme de L AGRANGE p 21 qui interpole l’ensemble perturbé (x i , ỹ i ) i =0 où ỹ i est une perturbation aléatoire des valeurs
exactes y i de sorte que
max |y i ° ỹ i | ∑ 10°3 .
i =0,...,21
On remarque que la différence entre ces deux polynômes est bien plus grande que la perturbation des données. Plus précisément
et l’écart est particulièrement important aux extrémités de l’intervalle. Remarquer que dans cet exemple la constante de L EBESGUE
est très grande : §n (x) ' 19274.
Cette figure a été obtenue par les instructions :
1 from matplotlib.pylab import *
2 import random
3
4 def lagrange(t,x,y):
5 °°°!p = 0
6 °°°!n = len(x)
7 °°°!L = [1 for i in range(n)]
8 °°°!for i in range(n):
9 °°°!°°°!for j in range(n):
10 °°°!°°°!°°°!if j!=i:
11 °°°!°°°!°°°!°°°!L[i] *= (t-x[j])/(x[i]-x[j])
12 °°°!°°°!p += y[i]*L[i]
13 °°°!return p
14
58 © G. Faccanoni
Dimanche 29 septembre 2013 2. Interpolation
F IGURE 2.2.: Effet de perturbations sur l’interpolation de L AGRANGE en des nœuds équirépartis.
15 def f(x):
16 °°°!return sin(2*math.pi*x)
17
18 x1 = linspace(-1,1,22)
19 y1 = f(x1)
20 y2 = [yi+(2.*random.random()-1.)*0.001 for yi in y1]
21
30 print max(abs(y1-y2))
31 print max([abs(l1t[i]-l2t[i]) for i in range(len(t))])
32
33 plot(t,f(t),’r-’,t,l1t,’b:’,t,l2t,’g:’)
34 legend([’f’,’l_21’,’p_21’],loc=’lower center’)
35 axis([-1, 1, -3, 4])
36 show()
© G. Faccanoni 59
2. Interpolation Dimanche 29 septembre 2013
La méthode des moindres carrés est celle qui choisit m et q de sorte que la somme des carrés de ces déviations soit
minimale. Pour cela, on doit minimiser la fonction E : R2 ! R+ définie par
n
X n
X
E (m, q) = d i2 = (y i ° mx i ° q)2 .
i =0 i =0
@E @E
Pour minimiser E on cherche d’abord les points stationnaires, i.e. les points (m, q) qui vérifient @m = @q = 0. Puisque
√ ! √ !
@E Xn @E X n
(m, q) = °2 (y i ° (mx i + q))x i , (m, q) = °2 (y i ° (mx i + q)) ,
@m i =0 @q i =0
alors
( (P
@E n
@m (m, q) = 0 (y i ° mx i ° q)x i = 0
@E () Pin=0
@q (m, q) = 0 i =0 (y i ° mx i ° q) = 0
8 °Pn ¢ ° Pn ¢ °Pn ¢
>
> i =0 x i i =0 y i ° (n + 1) i =0 x i y i
(°P ¢ °P ¢ P >
>m= °Pn ¢2 °Pn ¢ ,
n
x i2 m + ni=0 x i q = ni=0 y i x i < x ° (n + 1) x 2
i =1 °Pn ¢ ° Pn
i =0 i ¢ °Pn i =0 ¢ ° Pn
i ¢
() °Pn ¢ Pn () 2
i =1 x i m + (n + 1)q = i =0 y i
>
>
> i =0 x i i =0 x i y i ° i =0 y i i =0 x i
>q =
: °Pn ¢2 °Pn ¢ .
2
i =0 x i ° (n + 1) i =0 x i
Exemple y
Si on a le points suivantes 5
4
x 1 2 3 4 5 3
2
y 0.9 1.5 3.5 4.2 4.9 1
on trouve m = 1.07 et q = °0.21. 012345x
60 © G. Faccanoni
Dimanche 29 septembre 2013 2. Interpolation
polynôme ¶2n+1 2 R2n+1 [x] tel que ¶2n+1 (x i ) = y i et ¶02n+1 (x i ) = y i0 , pour i = 0, . . . n qu’on peut écrire sous la forme
8 n
Q
> x°x j
>L i (x)
> = x i °x j ,
>
> j =0
>
>
>
> j 6=i
n >
< Pn
X ci = 1
,
Q(x) = y i A i (x) + y i0 B i (x) 2 P2n+1 où j =0
x i °x j
i =0
>
>
>
> j 6=i
>
>
>
>
> A i (x) = (1 ° 2(x ° x i )c i )(L i (x))2 ,
>
:
B i (x) = (x ° x i )(L i (x))2 ,
Exemple
Pour n = 2 le polynôme d’H ERMITE s’écrit
µ µ ∂∂ µ ∂ µ ∂
1 1 (x ° x 1 )(x ° x 2 ) 2 (x ° x 1 )(x ° x 2 ) 2
Q(x) = y 0 1 ° 2(x ° x 0 ) + + y 00 (x ° x 0 )
x0 ° x1 x0 ° x2 (x 0 ° x 1 )(x 0 ° x 2 ) (x 0 ° x 1 )(x 0 ° x 2 )
µ µ ∂∂ µ ∂ µ ∂
1 1 (x ° x 0 )(x ° x 2 ) 2 0 (x ° x 0 )(x ° x 2 ) 2
+ y 1 1 ° 2(x ° x 1 ) + + y 1 (x ° x 1 )
x1 ° x0 x1 ° x2 (x 1 ° x 0 )(x 1 ° x 2 ) (x 1 ° x 0 )(x 1 ° x 2 )
µ µ ∂∂ µ ∂ µ ∂
1 1 (x ° x 0 )(x ° x 1 ) 2 (x ° x 0 )(x ° x 1 ) 2
+ y 2 1 ° 2(x ° x 2 ) + + y 20 (x ° x 2 ) ,
x2 ° x0 x2 ° x1 (x 2 ° x 0 )(x 2 ° x 1 ) (x 2 ° x 0 )(x 2 ° x 1 )
Remarque
Si n est petit on peut calculer directement les coefficients a 0 , a 1 , . . ., a 2n+1 en résolvant le système linéaire de 2n + 2
équations
8 0 10 1 0 1
>
> a 0 + a 1 x 0 + . . . a 2n+1 x 02n+1 = y 0 1 x0 ... x 02n+1 a0 y0
>
>
>
>a 0 + a 1 x 1 + . . . a 2n+1 x 1
> 2n+1
= y1 B1
B x1 ... x 12n+1 C B a1 C
CB C
B y1 C
B C
>
> B. .. .. CB . C B . C
>. . .
> B .. C B .. C B .. C
>
>
> B . . CB C B C
<a + a x + . . . a x 2n+1 = y B CB C B C
n 1 n 2n+1 n n B1 xn ... x n2n+1 CB C Byn C
i.e. B 2n+1°1 C B C= B 0C
>
> a 1 + a 2 x 0 + . . . 2n + 1a 2n+1 x 02n+1°1 = y 00 B0 x0 ... 2n + 1x 0 CB C B y0 C
>
> B 2n+1°1 C B C B 0C
>
>a 1 + a 2 x 0 + . . . 2n + 1a 2n+1 x 2n+1°1 = y 0 B0 x1 ... 2n + 1x 1 CB C B y1 C
>
> 1 1 B CB C B C
>
> B. .. .. CB . C B . C
>
> ... @ .. . . A @ .
. A @ .. A
>
>
: 0 xn ... 2n + 1x n 2n+1°1
a 2n+1 y n0
a n + a 1 x n + . . . 2n + 1a 2n+1 x n2n+1°1 = y n0
| {z } | {z } | {z }
(2n+2)£(2n+2) (2n+2)£1 (2n+2)£1
© G. Faccanoni 61
2. Interpolation Dimanche 29 septembre 2013
Exemple RUNGE
On veut voir si avec l’interpolation d’H ERMITE on arrive à mieux approcher la fonction de RUNGE. Soit la fonction f : [°5, 5] ! R
définie par f (x) = 1 2 . La figure ci-dessous montre les polynômes interpolants de degrés 3, 5 et 10 pour une distribution équirepartie
1+x
des nœuds.
3 def hermite(t,x,y,dy):
4 °°°!p = 0
5 °°°!n = len(x)
6 °°°!L = [1 for i in range(n)]
7 °°°!c = [0 for i in range(n)]
8 °°°!for i in range(n):
9 °°°!°°°!for j in range(len(x)):
10 °°°!°°°!°°°!if j!=i:
11 °°°!°°°!°°°!°°°!L[i] *= (t-x[j])/(x[i]-x[j])
12 °°°!°°°!°°°!°°°!c[i] += 1./(x[i]-x[j])
13 °°°!°°°!p += (y[i]*(1.-2.*(t-x[i])*c[i])+dy[i]*(t-x[i]))*L[i]**2
14 °°°!return p
15
16 def f(x):
17 °°°!return 1./(1.+x**2)
18
19 def df(x):
20 °°°!return -2.*x/(1.+x**2)**2
21
22 # INPUT
23 x1 = linspace(-5,5,3)
24 x2 = linspace(-5,5,5)
25 x3 = linspace(-5,5,10)
26 y1 = f(x1)
27 y2 = f(x2)
28 y3 = f(x3)
29 dy1 = df(x1)
30 dy2 = df(x2)
31 dy3 = df(x3)
32
43 plot(t,f(t),’r-’,t,h1t,’b:’,t,h2t,’m-.’,t,h3t,’y--’)
44 legend([’f’,’q_3’,’q_5’,’q_10’],loc=’lower center’)
45 axis([-5, 5, -1, 1])
46 show()
62 © G. Faccanoni
Dimanche 29 septembre 2013 2. Interpolation
Même avec l’interpolation d’H ERMITE on voit que l’erreur tend vers l’infini quand n tend vers l’infini pour une distribution uniforme
des nœuds.
Algorithmes
L AGRANGE : © ™n H ERMITE :
© ™n
Require: t , n, (x i , y i ) i =0 Require: t , n, (x i , y i , y i0 ) i =0
p √0 p √0
for i = 0 to n do for i = 0 to n do
Li √ 1 Li √ 1
for j = 0 to n do for j = 0 to n do
if j 6= i then if j 6= i then
t ° xj t ° xj
Li √ £ Li Li √ £ Li
xi ° x j xi ° x j
end if 1
end for ci √ + ci
xi ° x j
p √ p + yi £ Li end if
end for end for ° ¢
return p p √ p + y i £ (1 ° 2(t ° x i ) £ c i ) + y i0 £ (t ° x i ) £ L 2i
end for
return p
Évidemment tout polynôme de degré k est une spline, mais en pratique une spline est constituée de polynômes différents
sur chaque sous-intervalle. Il peut donc y avoir des discontinuités de la dérivée k-ième aux nœuds internes x 1 , . . . , x n°1 .
© G. Faccanoni 63
2. Interpolation Dimanche 29 septembre 2013
Il est intéressant de noter que la commande plot(x,y), utilisée pour afficher le graphe d’une fonction f sur un intervalle
donné [a, b], remplace en fait la fonction par une interpolée linéaire par morceaux, les points d’interpolation étant les
composantes du vecteur x.
Proposition Erreur
Si y i = f (x i ) pour i = 0, 1, . . . , n et f : [a; b] ! R est une fonction donnée de classe C 2 ([a; b]), alors on peut majorer l’erreur
d’interpolation au point x 2 [a; b] par
h2
max | f (x) ° `(x)| ∑ max | f 00 (x)|,
xı[a;b] 8 x2[a;b]
où h = maxi =0,...,n°1 x i +1 ° x i . Par conséquent, pour tout x dans l’intervalle [a; b], `(x) tend vers f (x) quand n ! +1, à
condition que f soit assez régulière.
Le principale défaut de cette interpolation par morceaux est que ` n’est que continue. Or, dans des nombreuses appli-
cations, il est préférable d’utiliser des fonctions ayant au moins une dérivée continue. On peut construire pour cela une
fonction s 3 comme l’interpolation d’H ERMITE des points (x i , f (x i ), f 0 (x i )) et (x i +1 , f (x i +1 ), f 0 (x i +1 )) sur chaque [x i ; x i + 1]
pour i = 0, 1, . . . , n ° 1.
64 © G. Faccanoni
Dimanche 29 septembre 2013 2. Interpolation
Méthodes numériques.
1 def lagrange(t,x,y):
2 °°°!p = 0
3 °°°!n = len(x)
4 °°°!L = [1 for i in range(n)]
5 °°°!for i in range(n):
6 °°°!°°°!for j in range(n):
7 °°°!°°°!°°°!if j!=i:
8 °°°!°°°!°°°!°°°!L[i] *= (t-x[j])/(x[i]-x[j])
9 °°°!°°°!p += y[i]*L[i]
10 °°°!return p
11
12 def hermite(t,x,y,dy):
13 °°°!p = 0
14 °°°!n = len(x)
15 °°°!L = [1 for i in range(n)]
16 °°°!c = [0 for i in range(n)]
17 °°°!for i in range(n):
18 °°°!°°°!for j in range(len(x)):
19 °°°!°°°!°°°!if j!=i:
20 °°°!°°°!°°°!°°°!L[i] *= (t-x[j])/(x[i]-x[j])
21 °°°!°°°!°°°!°°°!c[i] += 1./(x[i]-x[j])
22 °°°!°°°!p += (y[i]*(1.-2.*(t-x[i])*c[i])+dy[i]*(t-x[i]))*L[i]**2
23 °°°!return p
Cas test.
24 from matplotlib.pylab import *
25
26 # INPUT
27 x = [1,2,3,4,5]
28 y = [0,1,0,1,0]
29 dy = [-1,1,0,-1,0]
30
© G. Faccanoni 65
2. Interpolation Dimanche 29 septembre 2013
C ORRECTION DE L’ EXERCICE 2.1. Le polynôme d’interpolation de L AGRANGE de degré n sur l’ensemble des n + 1 points
{(x i , y i )}ni=0 s’écrit
0 1
X n B Y n x °x C
j
p n (x) = Byi C.
@ A
i =0 j =0 x i ° x j
j 6=i
Ici n = 3 donc on a
donc a 3 = ° 13 , a 2 = 2, a 1 = ° 83 et a 0 = 2.
Exercice 2.2
Trouver le polynôme de l’espace vectoriel Vec{1 + x 2 , x 4 } qui interpole les points (0, 1) et (1, 3).
66 © G. Faccanoni
Dimanche 29 septembre 2013 2. Interpolation
Exercice 2.3
1. Construire le polynôme de L AGRANGE P qui interpole les points (°1, 2), (0, 1), (1, 2) et (2, 3).
2. Soit Q le polynôme de L AGRANGE qui interpole les points (°1, 2), (0, 1), (1, 2). Montrer qu’il existe un réel ∏ tel que :
C ORRECTION DE L’ EXERCICE 2.3. Le polynôme d’interpolation de L AGRANGE de degré n sur l’ensemble des n + 1 points
{(x i , y i )}ni=0 s’écrit
0 1
X n B Y n x °x C
j
p n (x) = Byi C.
@ x ° x A
i =0 j =0 i j
j 6=i
1. Ici n = 3 donc on a
(x ° x 1 )(x ° x 2 )(x ° x 3 ) (x ° x 0 )(x ° x 2 )(x ° x 3 )
P (x) = y 0 + y1
(x 0 ° x 1 )(x 0 ° x 2 )(x 0 ° x 3 ) (x 1 ° x 0 )(x 1 ° x 2 )(x 1 ° x 3 )
(x ° x 0 )(x ° x 1 )(x ° x 3 ) (x ° x 0 )(x ° x 1 )(x ° x 2 )
+ y2 + y3
(x 2 ° x 0 )(x 2 ° x 1 )(x 2 ° x 3 ) (x 3 ° x 0 )(x 3 ° x 1 )(x 3 ° x 2 )
x(x ° 1)(x ° 2) (x + 1)(x ° 1)(x ° 2) (x + 1)x(x ° 1)
= + ° (x + 1)x(x ° 2) + =
°3 2 2
1 1
= ° x 3 + x 2 + x + 1.
3 3
2. Par construction
Q(°1) = P (°1),
Q(0) = P (0),
Q(1) = P (1),
donc le polynôme Q(x) ° P (x) s’annule en °1, en 0 et en 1, ceci signifie qu’il existe un polynôme R(x) tel que
Puisque P (x) a degré 3 et Q(x) a degré 2, le polynôme Q(x) ° P (x) a degré 3, donc le polynôme R(x) qu’on a mis en
facteur a degré 0 (i.e. R(x) est une constante).
Si on n’a pas remarqué ça, on peut tout de même faire tous les calculs : dans ce cas n = 2 donc on a
= x 2 + 1.
Ainsi
∑ ∏ ∑ ∏
(x ° x 1 )(x ° x 2 ) x ° x3 (x ° x 0 )(x ° x 2 ) x ° x3
Q(x) ° P (x) = y 0 1° + y1 1°
(x 0 ° x 1 )(x 0 ° x 2 ) x0 ° x3 (x 1 ° x 0 )(x 1 ° x 2 ) x1 ° x3
∑ ∏
(x ° x 0 )(x ° x 1 ) x ° x3 (x ° x 0 )(x ° x 1 )(x ° x 2 )
+ y2 1° ° y3
(x 2 ° x 0 )(x 2 ° x 1 ) x2 ° x3 (x 3 ° x 0 )(x 3 ° x 1 )(x 3 ° x 2 )
(x ° x 0 )(x ° x 1 )(x ° x 2 ) (x ° x 0 )(x ° x 1 )(x ° x 2 )
= °y 0 ° y1
(x 0 ° x 1 )(x 0 ° x 2 )(x 0 ° x 3 ) (x 1 ° x 0 )(x 1 ° x 2 )(x 1 ° x 3 )
(x ° x 0 )(x ° x 1 )(x ° x 2 ) (x ° x 0 )(x ° x 1 )(x ° x 2 )
° y2 ° y3
(x 2 ° x 0 )(x 2 ° x 1 )(x 2 ° x 3 ) (x 3 ° x 0 )(x 3 ° x 1 )(x 3 ° x 2 )
∑
y0 y1
=° +
(x 0 ° x 1 )(x 0 ° x 2 )(x 0 ° x 3 ) (x 1 ° x 0 )(x 1 ° x 2 )(x 1 ° x 3 )
∏
y2 y3
+ + (x ° x 0 )(x ° x 1 )(x ° x 2 )
(x 2 ° x 0 )(x 2 ° x 1 )(x 2 ° x 3 ) (x 3 ° x 0 )(x 3 ° x 1 )(x 3 ° x 2 )
(x + 1)x(x ° 1)
=
3
© G. Faccanoni 67
2. Interpolation Dimanche 29 septembre 2013
et ∏ = 13 . Sinon directement
1 1 1 1 (x + 1)x(x ° 1)
Q(x) ° P (x) = x 2 + 1 + x 3 ° x 2 + x ° 1 = x 3 + x = = ∏x(x + 1)(x ° 1)
3 3 3 3 3
avec ∏ = 13 .
y
Q(x)
3
x3
2
x0 x2
P (x)
x1
°1 0 1 2 x
Exercice 2.4
1. Construire le polynôme de L AGRANGE P qui interpole les trois points (°1, e), (0, 1) et (1, e).
2. Sans faire de calculs, donner l’expression du polynôme de L AGRANGE Q qui interpole les trois points (°1, °1), (0, 0)
et (1, °1).
3. Trouver le polynôme de l’espace vectoriel Vec{1, x, x 2 } qui interpole les trois points (°1, °1), (0, 0) et (1, °1).
Ici n = 2 donc on a
y
P (x)
e
°1 1 x
2.
68 © G. Faccanoni
Dimanche 29 septembre 2013 2. Interpolation
3. Il s’agit de trouver un polynôme p(x) qui soit combinaison linéaire des deux polynômes assignés (i.e. p(x) = Æ + Øx +
∞x 2 ) et qui interpole les trois points (°1, °1), (0, 0) et (1, °1) :
8 8
<p(°1) = 1,
> <Æ ° Ø + ∞ = °1,
>
p(0) = 0, , Æ = 0,
>
: >
:
p(1) = °1, Æ + Ø + ∞ = °1,
d’où Æ = 0, Ø = 0 et ∞ = °1. Le polynôme cherché est donc le polynôme p(x) = °x 2 . En fait, il suffisait de remarquer
que le polynôme Q 2 Vec{1, x, x 2 } pour conclure que le polynôme p cherché est Q lui même.
Exercice 2.5
1. Construire le polynôme de L AGRANGE P qui interpole les points (°1, 1), (0, 1), (1, 2) et (2, 3).
2. Soit Q le polynôme de L AGRANGE qui interpole les points (°1, 1), (0, 1), (1, 2). Montrer qu’il existe un réel ∏ tel que :
C ORRECTION DE L’ EXERCICE 2.5. Le polynôme d’interpolation de L AGRANGE de degré n sur l’ensemble des n + 1 points
{(x i , y i )}ni=0 s’écrit
0 1
X n B Y n x °x C
j
p n (x) = Byi C.
@ x ° x A
i =0 j =0 i j
j 6=i
1. Ici n = 3 donc on a
(x ° x 1 )(x ° x 2 )(x ° x 3 ) (x ° x 0 )(x ° x 2 )(x ° x 3 )
P (x) = y 0 + y1
(x 0 ° x 1 )(x 0 ° x 2 )(x 0 ° x 3 ) (x 1 ° x 0 )(x 1 ° x 2 )(x 1 ° x 3 )
(x ° x 0 )(x ° x 1 )(x ° x 3 ) (x ° x 0 )(x ° x 1 )(x ° x 2 )
+ y2 + y3
(x 2 ° x 0 )(x 2 ° x 1 )(x 2 ° x 3 ) (x 3 ° x 0 )(x 3 ° x 1 )(x 3 ° x 2 )
x(x ° 1)(x ° 2) (x + 1)(x ° 1)(x ° 2) (x + 1)x(x ° 1)
= + ° (x + 1)x(x ° 2) + =
°6 2 2
1 1 2
= ° x 3 + x 2 + x + 1.
6 2 3
2. Par construction
Q(°1) = P (°1),
Q(0) = P (0),
Q(1) = P (1),
donc le polynôme Q(x) ° P (x) s’annule en °1, en 0 et en 1, ceci signifie qu’il existe un polynôme R(x) tel que
Puisque P (x) a degré 3 et Q(x) a degré 2, le polynôme Q(x) ° P (x) a degré 3, donc le polynôme R(x) qu’on a mis en
facteur a degré 0 (i.e. R(x) est une constante).
Si on n’a pas remarqué ça, on peut tout de même faire tous les calculs : dans ce cas n = 2 donc on a
© G. Faccanoni 69
2. Interpolation Dimanche 29 septembre 2013
x(x ° 1)
= ° (x + 1)(x ° 1) + (x + 1)x
2
1 1
= x 2 + x + 1.
2 2
Ainsi
∑ ∏ ∑ ∏
(x ° x 1 )(x ° x 2 ) x ° x3 (x ° x 0 )(x ° x 2 ) x ° x3
Q(x) ° P (x) = y 0 1° + y1 1°
(x 0 ° x 1 )(x 0 ° x 2 ) x0 ° x3 (x 1 ° x 0 )(x 1 ° x 2 ) x1 ° x3
∑ ∏
(x ° x 0 )(x ° x 1 ) x ° x3 (x ° x 0 )(x ° x 1 )(x ° x 2 )
+ y2 1° ° y3
(x 2 ° x 0 )(x 2 ° x 1 ) x2 ° x3 (x 3 ° x 0 )(x 3 ° x 1 )(x 3 ° x 2 )
(x ° x 0 )(x ° x 1 )(x ° x 2 ) (x ° x 0 )(x ° x 1 )(x ° x 2 )
= °y 0 ° y1
(x 0 ° x 1 )(x 0 ° x 2 )(x 0 ° x 3 ) (x 1 ° x 0 )(x 1 ° x 2 )(x 1 ° x 3 )
(x ° x 0 )(x ° x 1 )(x ° x 2 ) (x ° x 0 )(x ° x 1 )(x ° x 2 )
° y2 ° y3
(x 2 ° x 0 )(x 2 ° x 1 )(x 2 ° x 3 ) (x 3 ° x 0 )(x 3 ° x 1 )(x 3 ° x 2 )
∑
y0 y1
=° +
(x 0 ° x 1 )(x 0 ° x 2 )(x 0 ° x 3 ) (x 1 ° x 0 )(x 1 ° x 2 )(x 1 ° x 3 )
∏
y2 y3
+ + (x ° x 0 )(x ° x 1 )(x ° x 2 )
(x 2 ° x 0 )(x 2 ° x 1 )(x 2 ° x 3 ) (x 3 ° x 0 )(x 3 ° x 1 )(x 3 ° x 2 )
(x + 1)x(x ° 1)
=
6
et ∏ = 16 . Sinon directement
1 1 1 1 2 1 1 1
Q(x) ° P (x) = x 2 + x + 1 + x 3 ° x 2 ° x ° 1 = x 3 ° x = x(x 2 ° 1) = ∏x(x + 1)(x ° 1)
2 2 6 2 3 6 6 6
avec ∏ = 16 .
Q(x)
y
3
x3
P (x)
2
x2
1
x0 x1
°1 0 1 2 x
Exercice 2.6
1. Construire le polynôme de L AGRANGE P qui interpole les trois points (°1, Æ), (0, Ø) et (1, Æ) où Æ et Ø sont des réels.
2. Si Æ = Ø, donner le degré de P .
3. Montrer que P est pair. Peut-on avoir P de degré 1 ?
70 © G. Faccanoni
Dimanche 29 septembre 2013 2. Interpolation
Ici n = 2 donc on a
(x ° x 1 )(x ° x 2 ) (x ° x 0 )(x ° x 2 ) (x ° x 0 )(x ° x 1 )
P (x) = y 0 + y1 + y2 +
(x 0 ° x 1 )(x 0 ° x 2 ) (x 1 ° x 0 )(x 1 ° x 2 ) (x 2 ° x 0 )(x 2 ° x 1 )
x(x ° 1) (x + 1)(x ° 1) (x + 1)x
=Æ +Ø +Æ =
2 °1 2
Æ Æ
= x(x ° 1) ° Ø(x + 1)(x ° 1) + x(x + 1)
2 2
= (Æ ° Ø)x 2 + Ø.
Exercice 2.7
Soit Vn la matrice de VANDERMONDE : 0 1
1 a0 a 02 ... a 0n
B1 a1 a 12 ... a 1n C
B C
B1 a2 a 22 ... a 2n C
Vn = B
B.
C.
B. .. .. .. .. CC
@. . . . . A
1 an a n2 ... a nn
Quel est le lien entre cette matrice et l’interpolation polynomiale de l’ensemble de points { (a i ; b i ) }ni=0 ?
P
C ORRECTION DE L’ EXERCICE 2.7. Soit p(x) = ni=0 c i x i le seul polynôme de degré n qui interpole l’ensemble de (n + 1)
P
points { (a i ; b i ) }ni=0 , i.e. b i = p(a i ) = ni=0 c i a i . Alors le vecteur c = (c 0 , c 1 , . . . , c n )T est solution du système linéaire Vc = b.
Exercice 2.8
Vérifier que le polynôme d’interpolation d’H ERMITE d’une fonction f en un point coïncide avec le polynôme de TAYLOR
d’ordre 1 de f en ce point.
C ORRECTION DE L’ EXERCICE 2.8. Le polynôme d’interpolation d’H ERMITE en un point (x 0 , f (x 0 ), f 0 (x 0 )) est l’unique po-
lynôme q 2 R1 [x] qui vérifie q(x 0 ) = f (x 0 ) et q 0 (x 0 ) = f 0 (x 0 ). On cherche alors a 0 et a 1 tels que q(x) = a 0 + a 1 x :
( ( (
q(x 0 ) = f (x 0 ), a 0 + a 1 x 0 = f (x 0 ), a 0 = f (x 0 ) ° x 0 f 0 (x 0 ),
0 0
() 0
()
q (x 0 ) = f (x 0 ), a 1 = f (x 0 ), a 1 = f 0 (x 0 ),
donc q(x) = f (x 0 ) + (x ° x 0 ) f 0 (x 0 ).
Exercice 2.9
Soit f une fonction de classe C 1 et x 0 2 D f le domaine de définition de f . Soit ` le polynôme d’interpolation de L A -
GRANGE de f en x 0 et h le polynôme d’interpolation d’H ERMITE en x 0 . Calculer h(x) ° `(x).
C ORRECTION DE L’ EXERCICE 2.9. Le polynôme d’interpolation de L AGRANGE de f en x 0 est l’unique polynôme ` 2 R0 [x]
qui vérifie `(x 0 ) = f (x 0 ), donc `(x) = f (x 0 ). Le polynôme d’interpolation d’H ERMITE de f en x 0 est l’unique polynôme
h 2 R1 [x] qui vérifie h(x 0 ) = f (x 0 ) et h 0 (x 0 ) = f 0 (x 0 ). On cherche alors a 0 et a 1 tels que h(x) = a 0 + a 1 x :
( ( (
h(x 0 ) = f (x 0 ), a 0 + a 1 x 0 = f (x 0 ), a 0 = f (x 0 ) ° x 0 f 0 (x 0 ),
() ()
h 0 (x 0 ) = f 0 (x 0 ), a 1 = f 0 (x 0 ), a 1 = f 0 (x 0 ),
Exercice 2.10
Soit f : R ! R une fonction de classe C 1 (R) qui s’annule au moins une fois et dont la dérivée ne s’annule pas. Soit x 0 2 D f
donné. Pour i 2 N construisons la suite (x i )i comme suit : x i +1 est la racine du polynôme interpolateur d’H ERMITE de f
en x i . Quelle méthode reconnait-on ? Justifier la réponse.
© G. Faccanoni 71
2. Interpolation Dimanche 29 septembre 2013
C ORRECTION DE L’ EXERCICE 2.10. Le polynôme d’H ERMITE d’une fonction f en x i a équation q(x) = f (x i )+(x °x i ) f 0 (x i ) :
f (x i )
il s’agit de la droite tangente au graphe de f en x i . On cherche x i +1 tel que f (x i ) + (x ° x i ) f 0 (x i ) = 0, d’où x i +1 = x i ° f 0 (x i )
.
On a alors la suite définie par récurrence
(
x 0 donnée,
f (x i )
x i +1 = x i ° f 0 (x i )
,
Exercice 2.11
Soit f une fonction de classe C 1 ([°1, 1]) et p le polynôme interpolateur d’H ERMITE (de degré ∑ 3) de f vérifiant
Écrire le polynôme p.
C ORRECTION DE L’ EXERCICE 2.11. On a deux points d’interpolation (n = 1), on cherche alors un polynôme de R3 [x]. On a
deux méthodes pour calculer le polynôme interpolateur d’H ERMITE :
Première méthode : le polynôme interpolateur d’H ERMITE s’écrit
8 9
> >
n >
X <£ n
§Y (x ° x j ) 2 >
= n
X 1
p(x) = y i (1 ° 2(x ° x i )c i ) + y i0 (x ° x i ) 2>
où ci = .
>
i =0 > j =0 (x i ° x j ) > x
j =0 i ° xj
: ;
j 6=i j 6=i
Pour n = 1 on a alors
µ µ ∂∂ µ ∂2 µ ∂2
1 (x ° x 1 ) (x ° x 1 )
p(x) = y 0 1 ° 2(x ° x 0 ) + y 00 (x ° x 0 )
x0 ° x1 (x 0 ° x 1 ) (x 0 ° x 1 )
µ µ ∂∂ µ ∂2 µ ∂2
1 (x ° x 0 ) (x ° x 0 )
+ y 1 1 ° 2(x ° x 1 ) + y 10 (x ° x 1 ) .
x1 ° x0 (x 1 ° x 0 ) (x 1 ° x 0 )
1£ §
p(x) = f (°1)(x + 2)(x ° 1)2 + f 0 (°1)(x + 1)(x ° 1)2 + f (1)(2 ° x)(x + 1)2 + f 0 (1)(x ° 1)(x + 1)2
4
1h i
= f (°1)(x 3 ° 3x + 2) + f 0 (°1)(x 3 ° x 2 ° x + 1) + f (1)(°x 3 + 3x + 2) + f 0 (1)(x 3 + x 2 ° x ° 1)
4
2 f (°1) + f 0 (°1) + 2 f (1) ° f 0 (1) 3 f (1) ° 3 f (°1) ° f 0 (°1) ° f 0 (1)
= + x
4 4
f 0 (1) ° f 0 (°1) 2 f (°1) + f 0 (°1) ° f (1) + f 0 (1) 3
+ x + x .
4 4
Le polynôme interpolateur d’H ERMITE est donc le polynôme
p(x) = Æ + Øx + ∞x 2 + ±x 3
où
Deuxième méthode : le polynôme interpolateur d’H ERMITE est un polynôme de degré 2n + 1. On cherche donc un poly-
nôme
p(x) = Æ + Øx + ∞x 2 + ±x 3
tel que
p(°1) = f (°1), p 0 (°1) = f 0 (°1), p(1) = f (1), p 0 (1) = f 0 (1),
72 © G. Faccanoni
Dimanche 29 septembre 2013 2. Interpolation
ainsi
2 f (°1) + 2 f (1) + f 0 (°1) ° f 0 (1) °3 f (°1) + 3 f (1) ° f 0 (°1) ° f 0 (1)
Æ= , Ø= ,
4 4
0 0 0 0
° f (°1) + f (1) f (°1) ° f (1) + f (°1) + f (1)
∞= , ±= .
4 4
Exercice 2.12
1. Construire le polynôme de L AGRANGE p qui interpole les points (°1, 0), (0, 0), (1, 0) et (2, 0).
2. Construire l’ensemble des polynômes de degré 4 qui interpolent les points (°1, 0), (0, 0), (1, 0) et (2, 0).
3. Construire le polynôme d’H ERMITE Q qui interpole les points (°1, 0, 1) et (2, 0, °1).
Q(x) = y 0 A 0 + y 00 B 0 + y 1 A 1 + y 00 B 1 = B 0 ° B 1
µ ∂ µ ∂ µ ∂ µ ∂
x ° x1 2 x ° x0 2 x °2 2 x +1 2
= (x ° x 0 ) ° (x ° x 1 ) = (x + 1) ° (x ° 2)
x0 ° x1 x1 ° x0 °3 3
(x ° 2)2 (x + 1) ° (x ° 2)(x + 1)2 °3(x ° 2)(x + 1) °x 2 + x + 2
= = = .
9 9 3
© G. Faccanoni 73
2. Interpolation Dimanche 29 septembre 2013
Si on a oublié la formule, il suffit de remarquer qu’on cherche un polynôme de degré 3 qui a comme racines °1 et 2
et donc qui s’écrit Q(x) = (x + 1)(x ° 2)(ax + b) = ax 3 + (°a + b)x 2 + (°b ° 2a)x ° 2b ; de plus on sait que Q 0 (°1) = 1 et
Q 0 (2) = °1, on trouve alors a et b en résolvant le système linéaire
( ( (
3a(°1)2 + 2(°a + b)(°1) + (°b ° 2a) = 1, 3a + 2a ° 2b ° b ° 2a = 1, a = 0,
2
() ()
3a(2) + 2(°a + b)(2) + (°b ° 2a) = °1, 12a ° 4a + 4b ° b ° 2a = °1, b = °1/3.
et finalement on obtient
1 1 2
a 3 = 0, a2 = ° , a1 = , a0 = ,
3 3 3
°x 2 + x + 2
d’où Q(x) = .
3
y = x +1 r a (x)
P (x)
°1 0 1 2 x
Q(x) y = °x + 2
Exercice 2.13
L’espérance de vie dans un pays a évoluée dans le temps selon le tableau suivant :
Année 1975 1980 1985 1990
Espérance 72,8 74,2 75,2 76,4
Utiliser l’interpolation de L AGRANGE pour estimer l’espérance de vie en 1977, 1983 et 1988. La comparer avec une inter-
polation linéaire par morceaux.
74 © G. Faccanoni
Dimanche 29 septembre 2013 2. Interpolation
C ORRECTION DE L’ EXERCICE 2.13. Le polynôme d’interpolation de L AGRANGE de degré n sur l’ensemble des n + 1 points
{(x i , y i )}ni=0 s’écrit
0 1
X n B Y n x °x C
j
p n (x) = Byi C.
@ A
i =0 j =0 x i ° x j
j 6=i
Ici n = 3 et si on choisit de poser x 0 = 0 pour l’année 1975, x 1 = 5 pour l’année 1980 etc., on a
(x ° x 1 )(x ° x 2 )(x ° x 3 ) (x ° x 0 )(x ° x 2 )(x ° x 3 )
P (x) = y 0 + y1
(x 0 ° x 1 )(x 0 ° x 2 )(x 0 ° x 3 ) (x 1 ° x 0 )(x 1 ° x 2 )(x 1 ° x 3 )
(x ° x 0 )(x ° x 1 )(x ° x 3 ) (x ° x 0 )(x ° x 1 )(x ° x 2 )
+ y2 + y3 =
(x 2 ° x 0 )(x 2 ° x 1 )(x 2 ° x 3 ) (x 3 ° x 0 )(x 3 ° x 1 )(x 3 ° x 2 )
(x ° 5)(x ° 10)(x ° 15) (x ° 0)(x ° 10)(x ° 15)
= 72,8 + 74,2
(0 ° 5)(0 ° 10)(0 ° 15) (5 ° 0)(5 ° 10)(5 ° 15)
(x ° 0)(x ° 5)(x ° 15) (x ° 0)(x ° 5)(x ° 10)
+ 75,2 + 76,4 =
(10 ° 0)(10 ° 5)(10 ° 15) (15 ° 0)(15 ° 5)(15 ° 10)
°72,8(x ° 5)(x ° 10)(x ° 15) + 3 £ 74,2x(x ° 10)(x ° 15) ° 3 £ 75,2x(x ° 5)(x ° 15) + 76,4x(x ° 5)(x ° 10)
=
750
On a alors que
? l’espérance de vie en 1977 correspond à P (2) = 73,45,
? l’espérance de vie en 1983 correspond à P (8) = 74,81,
? l’espérance de vie en 1988 correspond à P (13) = 75,86.
Si on considère une interpolation linéaire par morceaux (splines de degré 1) ; on obtient que l’espérance de vie est sous-
estimé en 1977 et sur-estimé en 1988 par rapport à l’interpolation précédente car
74,2°72,8
? l’espérance de vie en 1977 correspond à 5°0 2 + 72,8 = 73,36 < P (2),
75,2°74,2
? l’espérance de vie en 1983 correspond à 10°5 8 + 73,2 = 74,8 ª P (8),
76,4°74,2
? l’espérance de vie en 1988 correspond à 15°10 13 + 72,8 = 75,92 > P (13).
y
76,4 P (x)
75,86
75,2
74,81
74,2
73,45
72,8
x
1975 1977 1980 1983 1985 1988 1990
Exercice 2.14
Pour calculer le zéro d’une fonction y = f (x) inversible sur un intervalle
© [a; b]™on peut utiliser l’interpolation : après avoir
n
évalué f sur une discrétisation x i de [a; b], on interpole l’ensemble (y i , x i ) i =0 et on obtient un polynôme x = p(y) tel
que
f (x) = 0 () x = p(0).
Utiliser cette méthode pour évaluer l’unique racine Æ de la fonction f (x) = e x ° 2 dans l’intervalle [0; 1] avec trois points
d’interpolation.
Comparer ensuite le résultat obtenu avec l’approximation du zéro de f obtenue par la méthode de Newton en 3 itérations
à partir de x 0 = 0.
i xi yi
0 0 °1
1 p
1 2 e °2
2 1 e °2
© G. Faccanoni 75
2. Interpolation Dimanche 29 septembre 2013
Le polynôme d’interpolation de L AGRANGE de degré n sur l’ensemble des n + 1 points {(y i , x i )}ni=0 s’écrit
0 1
X n B Y n y°y C
j
p n (y) = Bx i C.
@ y ° y A
i =0 j =0 i j
j 6=i
Ici n = 2 donc on a
(y ° y 1 )(y ° y 2 ) (y ° y 0 )(y ° y 2 ) (y ° y 0 )(y ° y 1 )
p(y) = x 0 + x1 + x2
(y 0 ° y 1 )(y 0 ° y 2 ) (y 1 ° y 0 )(y 1 ° y 2 ) (y 2 ° y 0 )(y 2 ° y 1 )
p
1 (y + 1)(y ° e + 2) (y + 1)(y ° e + 2)
= p p + p .
2 ( e ° 2 + 1)( e ° 2 ° e + 2) (e ° 2 + 1)(e ° 2 ° e + 2)
p
1 p °e+2 ° e+2
Par conséquent une approximation de la racine de f est p(0) = p
2 ( e°2+1)( e°2°e+2) + (e°2+1)(e°2°pe+2) º 0.7087486785.
La méthode de Newton s’écrit (
x 0 = 0,
xk
x k+1 = x k ° e e xk°2 = x k ° 1 + e 2xk ,
on obtient ainsi la suite
k xk
0 0
1 1
2
2 e º 0.7357588825
2°e 2
3 e ° 2e º 0.6940422999
e
Remarque : comme il n’y a que trois points d’interpolation, on pourrait calculer directement le polynôme interpolateur
de f plutôt que de sa fonction réciproque et chercher les zéros de ce polynôme directement car il s’agit d’un polynôme de
degré 2. Cependant cette idée ne peut pas être généralisée au cas de plus de trois points d’interpolation car on ne connait
pas de formule générale pour le calcul des zéros d’un polynôme de degré n ∏ 3.
Exercice 2.15
Soit f une fonction continue dont on connait les valeurs uniquement pour t entier, c’est-à-dire on suppose connues les
valeurs f (∑) pour tout ∑ 2 Z. Si t 2 R \ Z, on définit une approximation p(t ) de f (t ) en interpolant la fonction f par un
polynôme de degré 3 aux quatre points entiers les plus proches de t . Calculer p(t ) et écrire un algorithme qui fournit
p(t ).
C ORRECTION DE L’ EXERCICE 2.15. Soit ` = E [t ] la partie entière 2 de t . Alors t 2 [`; ` + 1] et il s’agit de définir le polynôme
p interpolant les points
ce qui donne
0 1 0 1
X 3 B Y 3 t ° (∑ ° 1 + j ) C X 3 B Y 3 t °∑+1° j C
P (t ) = B f (∑ ° 1 + i ) C= B f (∑ ° 1 + i ) C
@ A @ A
i =0 j =0 (∑ ° 1 + i ) ° (∑ ° 1 + j ) i =0 j =0 i°j
j 6=i j 6=i
f (∑ ° 1) f (∑)
=° (t ° ∑)(t ° ∑ ° 1)(t ° ∑ ° 2) + (t ° ∑ + 1)(t ° ∑ ° 1)(t ° ∑ ° 2)
6 2
f (∑ + 1) f (∑ + 2)
° (t ° ∑ + 1)(t ° ∑)(t ° ∑ ° 2) + (t ° ∑ + 1)(t ° ∑)(t ° ∑ ° 1)
2 6
Require: f : Z ! R, t
∑ √ E [t ]
x0 √ ∑ ° 1
2. Pour tout nombre réel x, la partie entière notée E (x) est le plus grand entier relatif inférieur ou égal à x. Par exemple, E (2.3) = 2, E (°2) = °2 et
E (°2.3) = °3. La fonction partie entière est aussi notée [x] (ou bxc par les anglo-saxons). On a toujours E (x) ∑ x < E (x) + 1 avec égalité si et seulement si x
est un entier relatif. Pour tout entier relatif k et et pour tout nombre réel x, on a E (x + k) = E (x) + k. L’arrondi à l’entier le plus proche d’un réel x peut être
exprimé par E (x + 0.5).
76 © G. Faccanoni
Dimanche 29 septembre 2013 2. Interpolation
x1 √ ∑
x2 √ ∑ + 1
x3 √ ∑ + 2
y √0
for i = 0 to 3 do
L√1
for j = 0 to 3 do
if j 6= i then
t ° xj
L√ £L
xi ° x j
end if
end for
y √ y + f (x i ) £ L
end for
return y
Exercice 2.16
4
1. Calculer le polynôme p de L AGRANGE qui interpole la fonction f (x) = x aux points d’abscisse x 0 = 1, x 1 = 2 et
x 2 = 4. Esquisser les graphes de f et de p pour x 2 [1, 4].
2. Vérifier que l’erreur "(x) ¥ f (x) ° p(x) prend sa valeur maximale en un unique point x̃ dans l’intervalle [2, 4]. Cal-
culer ensuite x̃ à 10°1 près (on pourra utiliser la méthode de dichotomie).
3. Comparer la fonction " avec l’estimation théorique de l’erreur.
C ORRECTION DE L’ EXERCICE 2.16.
1. f est une hyperbole et p est la parabole qui passe par les points (1, 4), (2, 2) et (4, 1) : p(x) = 12 x 2 ° 72 x + 7
y
2
p
1 f
1 2 4 x
2. On a "(x) ¥ f (x) ° p(x) = x4 ° 7 + 72 x ° 12 x 2 . Comme "0 (x) = 72 ° x ° x42 , il s’agit de trouver x̃ tel que "0 (x) = 0. Une simple
comparaison des graphes des fonctions u : x 7! 72 ° x et v : x 7! x42 montre que "0 (x) = 0 admet une solution dans
l’intervalle [1, 2] et une solution dans l’intervalle [2, 4] (en effet, "0 (1) = u(1) ° v(1) = 2.5 ° 4 < 0, "0 (2) = u(2) ° v(2) =
1.5°1 > 0 et "0 (4) = u(4)°v(4) < 0). On a "00 (x) = °1+8/x 3 : l’erreur étant convexe pour x < 2 et concave pour x > 2, on
0
conclut qu’elle prend sa valeur maximale pour x = x̃ 2 [2, 4]. On≥cherche ≥ alors¥¥ x̃ 2 [2,°4] tel que " (x̃) = 0¢ par la méthode
°1 4°2
de dichotomie. Pour que l’erreur soit inférieur à 10 , il faut E log2 10°1 + 1 = E 2 log2 (2) + log2 (5) + 1 = 5 étapes :
k 0 1 2 3 4 5
£ 7§ £ 13 § £ 25 § £ 49 25
§
[a k , b k ] [2, 4] [3, 4] 3, 2 3, 4 3, 8 16 , 8
7 13 25 49 99
`k 3 2 4 8 16 32
bk ° ak 2 > 10°1 1 > 10°1 0.5 > 10°1 0.25 > 10°1 0.125 > 10°1 0.0625 < 10°1
99
L’erreur prend sa valeur maximale pour x̃ º 32 = 3.09375 et vaut "(x̃) º 0.01166653913.
3. Comparons ce résultat avec l’estimation théorique de l’erreur. n = 2 et f est de classe C 1 ([1, 4]), donc pour tout
x 2 [1, 2] il existe ªx 2 [1, 4] tel que
f 000 (ªx ) 3
"théorique (x) = (x ° 1)(x ° 2)(x ° 4) = ° 4 (x 3 ° 7x 2 + 14x ° 8).
3! ªx
4
p
° 7 + 72 x ° 12 x 2 , on obtient "théorique = " ssi ªx =
4
Comme "(x) = x 6x.
© G. Faccanoni 77
3. Quadrature
Rb
Calculer a f (x) dx où f est une fonction donnée
Dans ce chapitre on va étudier des méthodes pour approcher les intégrales de fonctions. On sait bien qu’il n’est pas toujours
possible, pour une fonction arbitraire, de trouver la forme explicite d’une primitive. Mais même quand on la connaît, il est
parfois difficile de l’utiliser. C’est par exemple le cas de la fonction f (x) = cos(4x) cos(3 sin(x)) pour laquelle on a
Zº 1 (°9/4)k
81 X
f (x) dx = º ;
0 16 k=0 k!(k + 4)!
on voit que le calcul de l’intégrale est transformé en un calcul, aussi difficile, de la somme d’une série. Dans certains cas, la
fonction à intégrer n’est connue que par les valeurs qu’elle prend sur un ensemble fini de points (par exemple, des mesures
expérimentales). On se trouve alors dans la même situation que celle abordée au chapitre précédent pour l’approximation
des fonctions. Dans tous ces cas, il faut considérer des méthodes numériques afin d’approcher la quantité à laquelle on
s’intéresse, indépendamment de la difficulté à intégrer la fonction.
L’approximation f n doit être facilement intégrable, ce qui est le cas si, par exemple, f n est un polynôme. Une approche
P
naturelle consiste à prendre f n = ni=0 f (x i )L i (x), le polynôme d’interpolation de L AGRANGE de f sur un ensemble de n + 1
nœuds distincts {x i }ii =n
=0
. Ainsi on aura
X n µ Zb ∂
Y n x °x
j
I ( f ) º In ( f ) = f (x i ) L i (x)dx où L i (x) = .
i =0 a j =0 x i ° x j
j 6=i
qui est une somme pondérée des valeurs de f aux points x i : on dit que ces points sont les nœuds de la formule de quadra-
ture et que les nombres Æi 2 R sont les coefficients ou encore les poids. La formule de quadrature de L AGRANGE peut être
généralisée au cas où on connaît les valeurs de la dérivée de f : ceci conduit à la formule de quadrature d’H ERMITE. Les
formules de L AGRANGE et d’H ERMITE sont toutes les deux des formules de quadrature interpolatoires, car la fonction f est
remplacée par son polynôme d’interpolation.
79
3. Quadrature Dimanche 29 septembre 2013
Astuce
Pour vérifier qu’une formule de quadrature est d’ordre r il suffit de vérifier qu’elle est exacte sur une base de Rr [x] (par
exemple la base canonique) et inexacte pour un polynôme de degré r + 1 (par exemple le polynôme x r +1 ). En effet, si q
P
est un polynôme de Rr [x], il existe Æ0 , Æ1 , . . . , Ær tels que q(x) = rk=0 Æk x k . Alors
Zb r µ µZb ∂∂ r ≥ ¥
X X
I (q) = q(x) dx = Æk x k dx = Æk I (x k ) .
a k=0 a k=0
Pour vérifier qu’une formule de quadrature I n a degré d’exactitude r il suffit alors de vérifier que I n (x k ) = I (x k ) pour tout
k = 0...r .
Théorème
Toute formule de quadrature interpolatoire utilisant n + 1 nœuds distincts a un degré d’exactitude au moins égale à n.
En effet, si f 2 Rn [x], alors le polynôme d’interpolation coïncide avec f .
La réciproque aussi est vraie : une formule de quadrature utilisant n + 1 nœuds distincts et ayant un degré d’exactitude au
moins égale à n est nécessairement de type interpolatoire. Le degré d’exactitude peut même atteindre 2n + 1 dans le cas
des formules de quadrature de G AUSS.
Définition Stabilité Pn Pn
Une formule de quadrature I n ( f ) = i =0 Æi f (x i ) est dite stable s’il existe M 2 R§+ tel que i =0 |Æi | ∑ M .
Théorème
Une méthode de quadrature de type interpolation est convergente sur C [a; b] ssi les formules sont stables.
m°1
X X n
(j) (j)
I n,m ( f ) = Æk f (x k ).
j =0 k=0
Souvent on définit d’abord une formule de quadrature sur l’intervalle [0; 1] ou sur l’intervalle [°1; 1] et puis on la généra-
lise à l’intervalle [x i ; x i +1 ] par un changement de variable affine.
Astuce Changement de variable affine
Soit x 2 [a; b] et soit y 2 [c; d ], on cherche une transformation y = g (x) qui envoie l’intervalle [a; b] dans l’intervalle [c; d ]
ainsi
Zd Zb
f (y)dy = f (g (x))g 0 (x)dx.
c a
Si g 0 (x) est une constante, i.e. si g est une transformation affine g (x) = mx + q, alors
Zd Zb
f (y)dy = m f (mx + q)dx.
c a
80 © G. Faccanoni
Dimanche 29 septembre 2013 3. Quadrature
On obtient
d °c cb ° ad
m= , q= .
b°a b°a
d °c cb ° ad
Par conséquent y = x+ d’où
b°a b°a
Zd Z µ ∂
d °c b d °c cb ° ad
f (y)dy = f x+ dx.
c b°a a b°a b°a
Exemple
? Transformer l’intervalle [0; 1] dans l’intervalle [x i ; x i +1 ] par un changement de variable affine.
On a y = (x i +1 ° x i )x + x i et
Zx Z1
i +1
f (y)dy = (x i +1 ° x i ) f ((x i +1 ° x i )x + x i )dx.
xi 0
x i +x i +1
On voit que lorsque x = 0 alors y = x i , lorsque x = 1 alors y = x i +1 , ou encore lorsque x = 1/2 alors y = 2 etc.
? Transformer l’intervalle [°1; 1] dans l’intervalle [x i ; x i +1 ] par un changement de variable affine.
x °x °x °x i x °x
On a y = i +12 i x + i +12 , qu’on peut réécrire y = x i + (1 + x) i +12 i et
Zx Z
i +1 x i +1 ° x i 1 ≥ x i +1 ° x i ¥
f (y)dy = f x i + (1 + x) dx.
xi 2 °1 2
I ( f ) º I 0 ( f ) = (b ° a) f (a).
© G. Faccanoni 81
3. Quadrature Dimanche 29 septembre 2013
h2 0
E0( f ) = | f (¥)|, h = b ° a, ¥ 2]a; b[.
2
b°a
E 0,m ( f ) = H | f 0 (¥)|, ¥ 2]a; b[.
2
I 0 ( f ) = (b ° a) f (b).
h2 0
E0( f ) = | f (¥)|, h = b ° a, ¥ 2]a; b[.
2
m°1
X m°1
X
I 0,m ( f ) = H f (x k ) = H f (a + (k + 1)H ).
k=0 k=0
b°a
E 0,m ( f ) = H | f 0 (¥)|, ¥ 2]a; b[.
2
82 © G. Faccanoni
Dimanche 29 septembre 2013 3. Quadrature
b°a ° ¢
I1( f ) = f (a) + f (b) .
2
h 3 00
E1( f ) = | f (¥)|, h = b ° a, ¥ 2]a; b[.
12
Degré Le degré d’exactitude de la formule du point milieu est 1, comme celle du point milieu.
• Formule composite Pour obtenir la formule du trapèze composite, on décompose l’intervalle d’intégration [a; b] en
m sous-intervalles de largeur H = b°a m avec m ∏ 1. En introduisant les nœuds de quadrature x k = a + k H pour
k = 0, 1, . . . , m ° 1 on obtient
√ !
H m°1
X° ¢ 1 m°1
X 1
I 1,m ( f ) = f (x k ) + f (x k+1 ) = H f (a) + f (a + k H ) + f (b) .
2 k=0 2 k=1 2
b ° a 2 00
E 0,m ( f ) = H | f (¥)|, ¥ 2]a; b[.
12
© G. Faccanoni 83
3. Quadrature Dimanche 29 septembre 2013
a b x x0 = a x1 x2 x3 x4 = b x
(a) Formule du rectangle à gauche. (b) Formule du rectangle à gauche composite.
a b x x0 = a x1 x2 x3 x4 = b x
(c) Formule du rectangle à droite. (d) Formule du rectangle à droite composite.
a+b x 0 +x 1 x 1 +x 2 x 2 +x 3 x 3 +x 4
2 2 2 2 2
a b x x0 = a x1 x2 x3 x4 = b x
(e) Formule du point milieu. (f) Formule du point milieu composite.
a b x x0 = a x1 x2 x3 x4 = b x
(g) Formule du trapèze. (h) Formule du trapèze composite.
a a+b b x x0 = a x1 x2 x3 x
2 x4 = b
(i) Formule de Cavalieri-Simpson. (j) Formule de Cavalieri-Simpson composite.
84 © G. Faccanoni
Dimanche 29 septembre 2013 3. Quadrature
Algorithmes
M ÉTHODE DE S IMPSON
Require: a ; b > a ; n > 0 ; f : [a; b] ! R
h √ b°a 2n
s1 √ 0
s 2 √ f (a + h)
for i = 1 to n ° 1 do
s 1 √ s 1 + f (a + 2i h)
s 2 √ s 2 + f (a + (2i + 1)h)
end for ° ¢
return I √ h3 f (a) + f (b) + 2s 1 + 4s 2
f (x i + h) ° f (x i )
f 0 (x i ) = lim
h!0 h
f (x i ) ° f (x i ° h)
= lim
h!0 h
f (x i + h/2) ° f (x i ° h/2)
= lim .
h!0 h
Une idée naturelle pour calculer numériquement f 0 (x i ) y
consiste donc à se donner une valeur de h positive assez pe-
tite et à calculer
f (x i + h) ° f (x i ) f (x i + h)
f 0 (x i ) º ±+
h f (x i ) ¥ , (3.1) f (x i )
h
f (x i ) ° f (x i ° h)
f 0 (x i ) º ±°
h f (x i ) ¥ , (3.2)
h
f (x i + h) ° f (x i ° h)
f 0 (x i ) º ±h f (x i ) ¥ , (3.3) f (x)
2h
© G. Faccanoni 85
3. Quadrature Dimanche 29 septembre 2013
f (x i ± h) = f (x i ) ± h f 0 (x i ) + h 2 f 00 (x i ) + O(h 3 ),
on obtient
f (x i + h) ° f (x i ) f (x i ) + h f 0 (x i ) + h 2 f 00 (x i ) + O((h)3 ) ° f (x i )
= = f 0 (x i ) + O(h),
h h
f (x i ) ° f (x i ° h) f (x i ) ° f (x i ) + h f 0 (x i ) ° h 2 f 00 (x i ) + O(h 3 )
= = f 0 (x i ) + O(h),
h h
f (x i + h) ° f (x i ° h) f (x i ) + h f 0 (x i ) + (h)2 f 00 (x i ) + O(h 3 ) ° f (x i ) + h f 0 (x i ) ° (h)2 f 00 (x i )
= = f 0 (x i ) + O(h 2 ).
2h 2h
Donc, si f est assez régulière, les différences finies convergent vers f 0 (x i ) lorsque h tend vers zéro. De plus, pour les diffé-
rences finies à gauche et à droite la convergence est d’ordre 1 alors que la différence finie centrée converge à l’ordre 2.
Exemple
On compare pour différentes valeurs de h les valeurs données par ces trois formules pour la dérivée de la fonction sinus en 0 :
3 def DFgauche(f,x,h):
4 °°°!return (f(x+h)-f(x))/h
5
6 def DFdroite(f,x,h):
7 °°°!return (f(x)-f(x-h))/h
8
9 def DFcentree(f,x,h):
10 °°°!return (f(x+0.5*h)-f(x-0.5*h))/h
11
12 # TEST
13 def f(x):
14 °°°!return sin(x)
15
16 x = 0
17 for i in range(1,13):
18 °°°!h = 10**(-i)
19 °°°!dfg = DFgauche(f,x,h)
20 °°°!dfd = DFdroite(f,x,h)
21 °°°!dfc = DFcentree(f,x,h)
22 °°°!print "%5.e %17.15f %17.15f %17.15f" %(h, dfg, dfd, dfc)
86 © G. Faccanoni
Dimanche 29 septembre 2013 3. Quadrature
est d’ordre h 2 et on dit que la différence finie est consistante à l’ordre 2 en h. Elle est ainsi plus précise que les formules
de différences finies progressives et rétrogrades.
Exemple p
Par exemple, en utilisant le code de l’exemple précédent pour calculer la dérivée première de la fonction 1 + x en 0, on obtient
Cette fois-ci on voit apparaître très nettement la perte de précision lorsque h est trop petit.
f (x i + h) ° 2 f (x i ) + f (x i ° h)
f 00 (x i ) º
(h)2
et on a l’estimation d’erreur :
f (x i + h) ° 2 f (x i ) + f (x i ° h)
h2
f (x i ) + h f 0 (x i ) + (h)2 f 00 (x i ) + O((h)3 ) ° 2 f (x i ) + f (x i ) ° h f 0 (x i ) + (h)2 f 00 (x i )
= = f 00 (x i ) + O(h 2 ).
h2
© G. Faccanoni 87
3. Quadrature Dimanche 29 septembre 2013
Méthodes numériques.
1 #!/usr/bin/python
2 #-*- coding: Utf-8 -*-
3
6 def rectangle_gauche_composite(f,a,b,n):
7 °°°!h = (b-a)/n
8 °°°!s = 0.
9 °°°!for i in range(n):
10 °°°!°°°!s += f(a+i*h)
11 °°°!return h*s
12
13 def rectangle_droite_composite(f,a,b,n):
14 °°°!h = (b-a)/n
15 °°°!s = 0.
16 °°°!for i in range(n):
17 °°°!°°°!s += f(a+(i+1)*h)
18 °°°!return h*s
19
20 def milieu_composite(f,a,b,n):
21 °°°!h = (b-a)/n
22 °°°!s = 0.
23 °°°!for i in range(n):
24 °°°!°°°!s += f(a+(i+0.5)*h)
25 °°°!return h*s
26
27 def trapeze_composite(f,a,b,n):
28 °°°!h = (b-a)/n
29 °°°!s = (f(a)+f(b))*0.5
30 °°°!for i in range(1,n):
31 °°°!°°°!s += f(a+i*h)
32 °°°!return h*s
33
34 def simpson_composite(f,a,b,n):
35 °°°!h = (b-a)/(2.*n)
36 °°°!s1 = 0.
37 °°°!s2 = f(a+h)
38 °°°!for i in range(1,n):
39 °°°!°°°!s1 += f(a+2*i*h)
40 °°°!°°°!s2 += f(a+(2*i+1)*h)
41 °°°!return (f(a)+f(b)+2.*s1+4.*s2)*h/3.
88 © G. Faccanoni
Dimanche 29 septembre 2013 3. Quadrature
55 °°°!n = 100
56 °°°!a = 0.0
57 °°°!b = 1.0
58 °°°!def f(x):
59 °°°!°°°!return x**3
60 °°°!def primitive(x):
61 °°°!°°°!return x**4/4.
62 elif exemple==3:
63 °°°!n = 10
64 °°°!a = -10.0
65 °°°!b = 10.0
66 °°°!def f(x):
67 °°°!°°°!return math.exp(-x**2)
68 °°°!def primitive(x):
69 °°°!°°°!return 0. # on ne connait pas la primitive
70 else:
71 °°°!print "Cas test non defini"
72 °°°!sys.exit(0)
73
74
82 # Dans python il existe un module qui implement deja ces methodes, comparons nos resultats avec ceux du
Âmodule:
83 from scipy import integrate
84 results = integrate.quad(f,a,b)
85 print "Avec scipy.integrate l’integrale est approchee par ", results[0], "avec une erreure de ", results
Â[1]
© G. Faccanoni 89
3. Quadrature Dimanche 29 septembre 2013
x 0 /2
1
1 /23
2 5
/2
f (x) 3
/2 2 2 1.6364 1.2500 0.9565
C ORRECTION DE L’ EXERCICE 3.1. La méthode des trapèzes composite à m + 1 points pour calculer l’intégrale d’une fonc-
tion f sur l’intervalle [a, b] s’écrit
Zb √ !
1 m°1
X 1 b°a
f (t )d t ' h f (a) + f (a + i h) + f (b) avec h = .
a 2 i =1 2 m
Exercice 3.2
Étant donnée l’égalité
µZ+1 ∂2 µZ10 ∂2
°x 2 °x 2
º=4 e dx =4 e dx + ≤ ,
0 0
avec 0 < ≤ < 10°44 , utiliser la méthode des trapèzes composite à 10 intervalles pour estimer la valeur de º.
C ORRECTION DE L’ EXERCICE 3.2. La méthode des trapèzes composite à m intervalles pour calculer l’intégrale d’une fonc-
tion f sur l’intervalle [a, b] s’écrit
Zb √ !
1 m°1
X 1 b°a
f (t )d t ' h f (a) + f (a + i h) + f (b) avec h = .
a 2 i =1 2 m
2
Ici on a f (x) = e °x , a = 0, b = 10, m = 10 d’où h = 1 et on obtient
1 X10 2 1 1 1 1 1 1 1 1 1 1 1 1
I' + e °i + 100 = + + 4 + 9 + 16 + 25 + 36 + 49 + 64 + 81 + 100 º 3.1422.
2 i =1 2e 2 e e e e e e e e e 2e
Exercice
R
3.3
º
Estimer 0 sin(x) dx en utilisant la méthode des trapèzes composite avec 8 et puis 16 sous-intervalles en prenant en
compte l’erreur.
C ORRECTION DE L’ EXERCICE 3.3. La méthode des trapèzes composite à m + 1 points pour calculer l’intégrale d’une fonc-
tion f sur l’intervalle [a, b] s’écrit
Zb √ !
1 m°1
X 1 b°a
f (t )d t ' h f (a) + f (a + i h) + f (b) avec h =
a 2 i =1 2 m
90 © G. Faccanoni
Dimanche 29 septembre 2013 3. Quadrature
et l’erreur est
º3
E= sin(ª)
768
pour ª 2]0; º[. Comme on ne connait pas la valeur de ª, on ne peut pas connaitre E mais on peut en déterminer les bornes :
º3 º3 º3
E min = sin(0) = 0 E max = sin(º/2) = ' 0.04037
768 768 768
ainsi Zº
(1.97423 ° 0) ∑ sin(x) dx ∑ (1.97423 + 0.04037) = 2.01460
0
La valeur exacte est bien évidemment 2.
Avec 16 sous-intervalles on a h = º/16 et les nouveaux noeuds se trouvent au milieux des sous-intervalles précédents :
x j = º/16 + j º/8 = (1 + 2 j )º/16 pour j = 0, 1, . . . , 7, ainsi
Zº 7
1.97423 º X
sin(x) dx ' + sin((1 + 2 j )º/16) º 1.99358
0 2 16 j =0
et le limites de l’erreur deviennent (observons que E est divisé par 4 lorsque h est divisé par 2) :
0.04037
E min = 0 E max ' = 0.01009
4
ainsi Zº
1.99358 ∑ sin(x) dx ∑ (1.99358 + 0.01009) = 2.00367.
0
Exercice 3.4
On considère l’intégrale
Z2
1
I= dx.
1 x
1. Calculer la valeur exacte de I .
2. Évaluer numériquement cette intégrale par la méthode des trapèzes avec m = 3 sous-intervalles.
3. Pourquoi la valeur numérique obtenue à la question précédente est-elle supérieure à ln(2) ? Est-ce vrai quelque
soit m ? Justifier la réponse. (On pourra s’aider par un dessin.)
4. Quel nombre de sous-intervalles m faut-il choisir pour avoir une erreur inférieure à 10°4 ? On rappelle que l’erreur
de quadrature associée s’écrit, si f 2 C 2 ([a; b]),
Ø Ø
Ø (b ° a)4 00 Ø
Ø
|E m | = Ø f (ª)ØØ , ª 2]a; b[.
12m 2
3. La valeur numérique obtenue à la question précédente est supérieure à ln(2) car la fonction f (x) = x1 est convexe. On
peut se convaincre à l’aide d’un dessin que les trapèzes sont au-dessus de la courbe y = 1/x, l’aire sous les trapèzes
sera donc supérieure à l’aire sous la courbe. Pour bien visualiser la construction considérons m = 1 :
© G. Faccanoni 91
3. Quadrature Dimanche 29 septembre 2013
1
0.5
1
0.5
0
0.5 1 1.5 2
0
Cela reste vrai quelque soit le pas h choisi car la fonction est convexe ce qui signifie qu’une corde définie par deux
points de la courbe y = 1/x sera toujours au-dessus de la courbe et par le raisonnement précédant l’aire sous les
trapèzes sera supérieure à l’aire exacte.
4. L’erreur est majorée par
0.5 1 1.5 2
(b ° a)4
|E m | ∑ sup | f 00 (ª)|.
12m 2 ª2]a;b[
1 2 1
|E m | ∑ 2
max 3 = .
12m ª2]1;2[ ª 6m 2
1
p
Pour que |E m | < 10°4 il suffit que 6m 2
< 10°4 , i.e. m > 102 / 6 º 40,8. À partir de 41 sous-intervalles, l’erreur de
quadrature est inférieure à 10°4 .
Exercice 3.5
On considère l’intégrale
Z2
I= ln(x) dx.
1
1. Évaluer numériquement cette intégrale par la méthode des trapèzes composite avec m = 4 sous-intervalles et
comparer le résultat ainsi obtenu avec la valeur exacte. Pourquoi la valeur numérique est-elle inférieure à la valeur
exacte ? Est-ce vrai quel que soit m ? (Justifier la réponse.)
2. Quel nombre de sous-intervalles m faut-il choisir pour avoir une erreur E m inférieure à 10°2 ? On rappelle que,
pour une fonction f de classe C 2 , l’erreur de quadrature E m associée à la méthode des trapèzes composite avec
une discrétisation uniforme de pas h = (b ° a)/m de l’intervalle [a, b] en m sous-intervalles vérifie
Ø Ø
Ø (b ° a) 2 00 Ø
|E m | = ØØ h f (ª)ØØ , ª 2]a; b[.
12
y
a 2 i =1 2 m
1
Ici on a f (x) = ln(x), a = 1, b = 2, m = 4 d’où h = 4 et on obtient
µ µ ∂ µ ∂ µ ∂ ∂ µ µ ∂ µ ∂ µ ∂ ∂
1 1 5 3 7 1 1 5 3 7 1
I' f (1) + f +f +f + f (2) = ln + ln + ln + ln(2) º 0.3836995094.
4 2 4 2 4 2 4 4 2 4 2
1
Une primitive de ln(x) est F (x) = x(ln(x)°1). La valeur exacte est alors I = [x(ln(x)°1)]x=2x=1 = 2 ln(2)°1 º 0.386294361.
La valeur numérique obtenue est inférieure à celle exacte quelque soit le pas h choisi car la fonction f est concave, ce
qui signifie qu’une corde définie par deux points de la courbe y = ln(x) sera toujours en-dessous de la courbe, donc
0.5
l’aire sous les trapèzes sera inférieure à l’aire exacte. Pour bien visualiser la construction considérons m = 2 :
y
1
0.5
0
0
x
0.5 1 1.5 2
x
92 0.5 1 1.5 2 © G. Faccanoni
Dimanche 29 septembre 2013 3. Quadrature
Exercice 3.6
Soit f une fonction C 1 (R, R).
1. On considère l’approximation
Z1 µ ∂
1 ° 3¢ ° 1¢ °1¢ °3¢
f (x) dx º 11 f ° 5 + f ° 5 + f 5 + 11 f 5 .
°1 12
Rb
En tirer une formule de quadrature composite pour l’intégrale a f (x) dx.
Rb
3. Écrire l’algorithme pour approcher a f (x) dx.
© G. Faccanoni 93
3. Quadrature Dimanche 29 septembre 2013
Rb
3. Algorithme d’approximation de a f (x) dx
Require: a ; b > a ; n > 0 ; f : [a; b] ! R
h √ b°an
s √0
for i = 0 to n ° 1 do
x √ a +ih ° ¢ ° ¢ ° ¢ ° ¢
s √ s + 11 f x + h5 + f x + 2h 3h 4h
5 + f x + 5 + 11 f x + 5
end for
h
return I √ 36 s
Exercice 3.7
Soit f une fonction C 1 (R, R).
1. On considère l’approximation µ ∂
Z1
2 ° ¢ ° ¢
f (x) dx º 2 f ° 12 ° f (0) + 2 f 12 .
°1 3
Quel est le degré d’exactitude de cette formule de quadrature ?
b°a
2. On se donne les points {x i }ii =n
=0
de subdivision de l’intervalle [a; b] : x i = a + i h avec h = n . À l’aide d’un change-
ment de variable affine, en déduire une formule de quadrature pour l’intégrale
Zxi +1
f (x) dx.
xi
Rb
En tirer une formule de quadrature composite pour l’intégrale a f (x) dx.
Rb
3. Écrire l’algorithme pour approcher a f (x) dx.
0 1 2 2 au moins 0
1 x 0 0 au moins 1
2 x2 2/3 2/3 au moins 2
3 x3 0 0 au moins 3
4 x4 2/5 1/6 3
b°a
Soit h = x i +1 ° x i = n . La formule précédente se réécrit
Zxi +1 ∑ µ ∂ µ ∂ µ ∂∏
h h h 3h
f (x) dx º 2 f xi + ° f xi + + 2 f xi + .
xi 3 4 2 4
Rb
3. Algorithme d’approximation de a f (x) dx
94 © G. Faccanoni
Dimanche 29 septembre 2013 3. Quadrature
Exercice 3.8
b°a
Soit f une fonction C 1 (R, R). On se donne les points {x i }ii =n
=0
de subdivision de l’intervalle [a; b] : x i = a +i h avec h = n .
Le but de l’exercice est de trouver une formule de quadrature à 2n points pour approcher l’intégrale
Zb
f (x) dx. (3.4)
a
On propose dans un premier temps (question 1 à 4) de construire la formule de quadrature à deux points suivantes :
Z1
g (x) dx º g (°Æ) + g (Æ), (3.5)
°1
3. En déduire une formule de quadrature à 2n points, notée F , pour le calcul approché de (3.4). Cette formule de
quadrature est-elle stable ?
4. Écrire l’algorithme du calcul de F .
3. Si h = x i +1 °x i = b°a
n (i.e. si on considère une subdivision de l’intervalle [a; b] équirépartie) alors on trouve la formule
de quadrature composite (i.e. sur n sous-intervalles et à 2n points)
Zb ∑ µ µ q ∂∂ µ µ q ∂∂∏ ∑ µ µ q ∂∂ µ µ q ∂∂∏
h n°1
X 1 1 h n°1
X
f (x) dx º f xi + h 1 ° 3 + f xi + h 1 + 3 = f a + h i + 1 ° 3 + f a + h i + 1 + 13
1
.
a 2 i =0 2 i =0
Cette formule de quadrature est stable puisque tous les coefficients sont positifs.
4. Algorithme du calcul de F :
Require: a ; b > a ; n > 0 ; f : [a; b] ! R
© G. Faccanoni 95
3. Quadrature Dimanche 29 septembre 2013
b°a
h√ n ≥ q ¥
Æ1 √ a + 1 ° 13 h
≥ q ¥
Æ2 √ a + 1 + 13 h
for i = 0 to n ° 1 do
s √ s + f (Æ1 + i h) + f (Æ2 + i h)
end for
return I √ h2 s
b°a
5. Soit h = 2n et x i = a + i h pour i = 0, . . . , 2n. On subdivise l’intervalle [a; b] en n intervalles [x 2i ; x 2i +2 ] de largeur
2h.
a h h b
x0 x 2i x 2i +1 x 2i +2 x 2n
f (1)° f (°1)
L’équation (3.6b) donne Æ = f (0), la somme (3.6c)+(3.6a) donne ∞ = 2 et enfin la soustraction (3.6c)°(3.6a)
f (1)° f (°1)
donne Ø = 2 .
2. On en déduit la méthode de quadrature
Z1 Z1
f (°1) + 4 f (0) + f (1)
f (t ) dt º p(t ) dt = 2(Æ + ∞/3) = .
°1 °1 3
96 © G. Faccanoni
Dimanche 29 septembre 2013 3. Quadrature
4. Soit x = mt + q, alors
Zx2i +2 Z1 ( ( x 2i +2 °x 2i
x 2i = °m + q, m= 2 ,
f (x) dx = m f (mt + q) dt avec i.e. x 2i +2 +x 2i
x 2i °1 x 2i +2 = m + q, q= 2 ,
x 2i +2 °x 2i
d’où le changement de variable x = x 2i + (t + 1) 2 . On déduit la formule de quadrature (exacte sur l’espace des
polynôme de degré au plus 3)
Zx2i +2 Z
x 2i +2 ° x 2i 1 ≥ x 2i +2 ° x 2i ¥ x 2i +2 ° x 2i £ §
f (x) dx = f x 2i + (t + 1) dt º f (x 2i ) + 4 f (x 2i +1 ) + f (x 2i +2 ) .
x 2i 2 °1 2 6
x °x
5. h = b°a
2n =
i +1
2
i
pour i = 0, . . . , 2n. On subdivise l’intervalle [a; b] en n intervalles [x 2i ; x 2i +2 ] de largeur 2h. On trouve
ainsi la formule de quadrature composite
Zb X Zx2i +2
n°1 n°1
X x 2i +2 ° x 2i £ §
f (x) dx = f (x) dx º f (x 2i ) + 4 f (x 2i +1 ) + f (x 2i +2 )
a i =0 x 2i i =0 6
h n°1
X£ §
= f (x 2i ) + 4 f (x 2i +1 ) + f (x 2i +2 )
3 i =0
" #
h n°1
X n°1
X
= f (a) + f (b) + 2 f (x 2i ) + 4 f (x 2i + h)
3 i =1 i =0
" #
h n°1
X n°1
X
= f (a) + f (b) + 2 f (a + 2i h) + 4 f (a + (2i + 1)h) .
3 i =1 i =0
Exercice 3.10
Soit f une fonction C 1 (R, R). On se donne les points {x i }ii =2n
=0
de subdivision de l’intervalle [a; b] : x i = a+i h avec h = b°a
2n .
Le but de l’exercice est de trouver une formule de quadrature à 2n + 1 points basée sur la formule de S IMPSON pour
approcher
Zb
f (x) dx. (3.7)
a
On propose dans un premier temps (question 1 à 3) de construire la formule de quadrature à 3 points de Simpson :
Z1
g (x) dx º Æg (°1) + Øg (0) + Æg (1), (3.8)
°1
où les réels Æ et Ø sont à déterminer.
1. Déterminer Æ et Ø pour que la formule de quadrature (3.8) ait degré d’exactitude maximale.
2. À l’aide d’un changement de variable affine, en déduire une formule de quadrature exacte sur l’espace des poly-
nôme de degré au plus 3 pour l’intégrale suivante :
Zx2i +2
f (x) dx.
x 2i
3. En déduire une formule de quadrature à 2n points, notée F , pour le calcul approché de (3.7). Cette formule de
quadrature est-elle stable ?
4. Écrire l’algorithme du calcul de F .
5. Soit x un élément de [x i ; x i +1 ]. Écrire une formule de Taylor f (x) = P i (x) + R i (x) à l’ordre 3 pour f en x, avec P i 2
P3 . Majorer R i sur [x i ; x i +1 ] en fonction de h.
6. En déduire une estimation d’erreur entre (3.7) et F .
© G. Faccanoni 97
3. Quadrature Dimanche 29 septembre 2013
Si Ø 6= 2(1 ° Æ) la formule de quadrature n’est même pas exacte pour une constante, si Ø = 2(1 ° Æ) mais Æ 6= 1/3, elle
est exacte pour les polynômes de degré au plus 1, si Æ = 1/3 et Ø = 4/3 la formule est exacte pour les polynômes de
degré au plus 3.
2. Soit x = mt + q, alors (
Zx2i +2 Z1
x 2i = °m + q,
f (x) dx = m f (mt + q) dt avec
x 2i °1 x 2i +2 = m + q,
x °x
d’où le changement de variable x = x 2i + (t + 1) 2i +22 2i . On déduit la formule de quadrature (exacte sur l’espace des
polynôme de degré au plus 3)
Zx2i +2 Z
x 2i +2 ° x 2i 1 ≥ x 2i +2 ° x 2i ¥ x 2i +2 ° x 2i £ §
f (x) dx = f x 2i + (t + 1) dt º f (x 2i ) + 4 f (x 2i +1 ) + f (x 2i +2 ) .
x 2i 2 °1 2 6
Cette formule de quadrature est stable puisque tous les coefficients sont positifs et on a
" #
h n°1
X n°1
X b°a b°a
1+1+2 1+4 1 = [2 + 2(n ° 1) + 4n] = 6n = (b ° a).
3 i =1 i =0 6n 6n
4. Algorithme du calcul de F :
Require: f : [a, b] ! R, a, b > a, n > 0
H √ b°a n
s1 √ 0
s 2 √ s 2 + f (a + H /2)
for i = 1 to n ° 1 do
s 1 √ s 1 + f (a + i H )
s 2 √ s 2 + f (a + (i + 1)H /2)
end for £ §
return I √ H6 f (a) + f (b) + 2s 1 + 4s 2
5. Soit x un élément de [x 2i ; x 2i +2 ]. Une formule de TAYLOR à l’ordre 3 pour f en x s’écrit
avec
f 00 (x 2i ) f 000 (x 2i )
P i (x) = f (x 2i ) + (x ° x 2i ) f 0 (x 2i ) + (x ° x 2i )2 + (x ° x 2i )3 2 P3
2 6
98 © G. Faccanoni
Dimanche 29 septembre 2013 3. Quadrature
et le reste de L AGRANGE
f I V (ª)
R i (x) = (x ° x 2i )4avec ª 2]x 2i ; x 2i +2 [.
24
On peut majorer R i sur [x 2i ; x 2i +2 ] en fonction de H = x 2i +2 ° x 2i :
H4 b ° a H3
|R i (x)| ∑ max | f I V (ª)| = max | f I V (ª)|.
24 n 24
6. On en déduit l’estimation d’erreur entre (3.7) et F suivante 1
Ø Zb Ø ØØn°1 Zx Ø Ø
Ø Øn°1 Z Ø
Ø
Ø
Ø
Ø ØX
Ø
2i +2
Ø Ø X x2i +2 Ø
Ø f (x) dx ° F ∑
Ø Ø Ø P i (x) dx ° F Ø + Ø R i (x) dx Ø
a i =0 x 2i
Ø Ø i =0 x2i Ø
Ø Z Ø
Øn°1 Ø
Ø X x2i +2 Ø
∑ nH |R i (x 2i +2 )| + Ø R i (x) dx Ø
Ø i =0 x2i Ø
b ° a H3 b ° a H3
∑ nH max | f I V (ª)| + nH max | f I V (ª)|
n 24 n 24
H4
= (b ° a) sup | f I V (ª)|.
12
Exercice 3.11
b°a
Soit f une fonction C 1 (R, R). On se donne les points {x i }ii =n
=0
de subdivision de l’intervalle [a; b] : x i = a +i h avec h = n .
Le but de l’exercice est de trouver une formule de quadrature à 3n points pour approcher l’intégrale
Zb
f (x) dx. (3.9)
a
On propose dans un premier temps de construire la formule de quadrature à trois points suivantes :
Z1
2° ¢
g (x) dx º g (°Æ) + g (0) + g (Æ) , (3.10)
°1 3
3. En déduire une formule de quadrature à 3n points, notée F , pour le calcul approché de (3.9). Cette formule de
quadrature est-elle stable ?
© G. Faccanoni 99
3. Quadrature Dimanche 29 septembre 2013
3. Si H = x i +1 °x i = b°a
n (i.e. si on considère une subdivision de l’intervalle [a; b] équirépartie) alors on trouve la formule
de quadrature composite (i.e. sur n sous-intervalles et à 3n points)
Zb Xh ≥ ≥ ¥¥ ≥ ≥ ¥¥i
H n°1 ° ¢
f (x) dx º f x i + H 1 ° p1 + f x i + H2 + f x i + H 1 + p1
a 3 i =0 2 2
Xh ≥
H n°1 ≥ ¥¥ ° ¢ ≥ ≥ ¥¥i
= f a + H i + 1 ° p1 + f x i + H2 + f a + H i + 1 + p1 .
3 i =0 2 2
Cette formule de quadrature est stable puisque tous les coefficients sont positifs.
Exercice 3.12
b°a
Soit f une fonction C 1 (R, R). On se donne les points {x i }ii =n
=0
de subdivision de l’intervalle [a; b] : x i = a +i h avec h = n .
Le but de l’exercice est de trouver une formule de quadrature à n points pour approcher l’intégrale définie
Zb
f (x) dx. (3.11)
a
On propose dans un premier temps (question 1 à 2) de construire la formule de quadrature à deux points :
Z1
4 ≥ w¥ 2
g (x) dx º g ° + g (w), (3.12)
°1 3 2 3
3. En déduire une formule de quadrature à 2n points, notée F , pour le calcul approché de (3.11). Cette formule de
quadrature est-elle stable ?
4. Écrire l’algorithme du calcul de F .
3. Si H = x i +1 °x i = b°a
n (i.e. si on considère une subdivision de l’intervalle [a; b] équirépartie) alors on trouve la formule
de quadrature composite (i.e. sur n sous-intervalles et à 2n points)
Zb ∑ µ µ q ∂∂ µ µ q ∂∂∏
H n°1
X
f (x) dx º f x i + H 1 + 23 + 2 f x i + H 1 ° 16
a 3 i =0
" √ √ r !! √ √ r !!#
H n°1
X 2 1
= f a +H i +1+ +2f a + H i +1° .
3 i =0 3 6
Cette formule de quadrature est stable puisque tous les coefficients sont positifs.
100 © G. Faccanoni
Dimanche 29 septembre 2013 3. Quadrature
4. Algorithme du calcul de F :
Require: a ; b > a ; n > 0 ; f : [a; b] ! R
H √ b°an p
Æ1 √ a + H (1 + p2/3)
Æ2 √ a + H (1 ° 1/6)
for i = 0 to n ° 1 do
s √ s + f (Æ1 + i H ) + 2 f (Æ2 + i H )
end for
return I √ H3 s
Exercice 3.13
1. Soit 0 < Æ ∑ 1 un nombre réel donné et soit !1 , !2 , !3 trois nombres réels. Considérons la formule de quadrature
Z1
g (t ) dt º !1 g (°Æ) + !2 g (0) + !3 g (Æ).
°1
3. Soit h = b°a
n et x i = a + i h pour i = 0, . . . , n. On subdivise l’intervalle [a; b] en n intervalles [x i ; x i +1 ] de largeur h. En
déduire la formule de quadrature composite pour le calcul approché de
Zb
f (x) dx.
a
0 1 2 !1 + !2 + !3
Soit !2 = 2 ° !1 ° !3
1 x 0 °Æ!1 + Æ!3
Soit !3 = !1 et donc !2 = 2 ° 2!1
2
2 x2 3 2Æ2 !1
1 1
Soit !1 = 3Æ2
et donc !3 = 3Æ2
et !2 = 2 ° 3Æ2 2
3 x3 0 0
2 2 2
4 x4 5 3Æ
q
3 5 8
Soit Æ = 5 et donc !1 = !3 = 9 et !2 = 9
5 x5 0 0
6 2 6
6 x 7 25
q
Si Æ = 35 , !1 = !3 = 59 et !2 = 89 alors la formule est exacte pour les polynômes de degré au plus 5 (il s’agit de la
formule de G AUSS -L EGENDRE à 3 points).
Remarquons que si on choisit Æ = 1 on retrouve la formule de S IMPSON.
2. Soit x = mt + q, alors (
Zxi +1 Z1
x i = °m + q,
f (x) dx = m f (mt + q) dt avec
xi °1 x i +1 = m + q,
© G. Faccanoni 101
3. Quadrature Dimanche 29 septembre 2013
x i +1 °x i
d’où le changement de variable x = x i + (t + 1) 2 . On déduit la formule de quadrature (exacte sur l’espace des
polynôme de degré au plus 5)
Zxi +1 Z
x i +1 ° x i 1 ≥ x i +1 ° x i ¥
f (x) dx = f x i + (t + 1) dt
xi 2 °1 2
" √ √ r ! ! √ √ r ! !#
x i +1 ° x i 3 x i +1 ° x i ≥x ¥
i +1 + x i 3 x i +1 ° x i
º 5 f xi + 1 ° +8f + 5 f xi + 1 + .
18 5 2 2 5 2
3. h = b°a
n = x i +1 ° x i pour i = 0, . . . , n. On subdivise l’intervalle [a; b] en n intervalles [x i ; x i +1 ] de largeur h. On trouve
ainsi la formule de quadrature composite
Zb X Zxi +1
n°1
f (x) dx = f (x) dx
a i =0 x i
" √ √ r ! ! √ √ r ! !#
n°1
X x i +1 ° x i 3 x i +1 ° x i ≥x ¥
i +1 + x i 3 x i +1 ° x i
º 5 f xi + 1 ° +8f + 5 f xi + 1 +
i =0 18 5 2 2 5 2
" √ √ r ! ! µ ∂ √ √ r ! !#
h X n°1 3 h 3
= 5 f xi + 1 ° h + 8 f xi + + 5 f xi + 1 + h
18 i =0 5 2 5
" √ √ r ! ! µ µ ∂ ∂ √ √ r ! !#
h n°1
X 3 1 3
= 5f a + i +1° h +8f a + i + h +5f a + i +1+ h .
18 i =0 5 2 5
1. Soit p le polynôme de L AGRANGE qui interpole f aux points °1 et 1. Écrire le polynôme p, en déduire une formule
de quadrature basée sur l’approximation
Z1 Z1
f (x) dx º p(x) dx
°1 °1
3. En utilisant le résultat au point précédent, proposer une formule de quadrature composite pour le calcul approché
de l’intégrale
Zb
f (x) dx.
a
Quelle méthode de quadrature reconnait-on ?
102 © G. Faccanoni
Dimanche 29 septembre 2013 3. Quadrature
R1
Par construction, cette formule de quadrature a degré d’exactitude au moins 1. Soit f (x) = x 2 , alors °1 f (x) dx = 2/3
tandis que f (°1) + f (1) = 2 : la formule est exacte pour les polynômes de degré au plus 1.
2. Soit x = mt + q, alors (
Zxi +1 Z1
x i = °m + q,
f (x) dx = m f (mt + q) dt avec
xi °1 x i +1 = m + q,
x i +1 °x i
d’où le changement de variable x = x i + (t + 1) 2 . On en déduit la formule de quadrature (exacte sur l’espace des
polynôme de degré au plus 1)
Zxi +1 Z
x i +1 ° x i 1 ≥ x i +1 ° x i ¥ x i +1 ° x i £ §
f (x) dx = f x i + (t + 1) dt º f (x i ) + f (x i +1 ) .
xi 2 °1 2 2
b°a x i +1 °x i
3. On subdivise l’intervalle [a; b] en n intervalles [x i ; x i +1 ] de largeur h = n = 2 pour i = 0, . . . , n. On trouve ainsi
la formule de quadrature composite
Zb X Zxi +1
n°1 n°1
X x i +1 ° x i £ § h n°1
X£ §
f (x) dx = f (x) dx º f (x i ) + f (x i +1 ) = f (x i ) + f (x i +1 )
a i =0 x i i =0 2 2 i =0
" # " #
h n°1
X h n°1
X
= f (a) + f (b) + 2 f (x i ) = f (a) + f (b) + 2 f (a + i h) .
2 i =1 2 i =1
1. Écrire le polynôme p.
2. En déduire la méthode d’intégration numérique élémentaire
Z1
1° 0 ¢
f (s) ds º f (°1) + f (1) + f (°1) ° f 0 (1) .
°1 3
3. Connaissant la formule sur [°1; 1], en déduire la formule de quadrature des trapèzes-H ERMITE sur l’intervalle [a; b]
par exemple grâce au changement de variable y = a + (x + 1) b°a2 .
où
© G. Faccanoni 103
3. Quadrature Dimanche 29 septembre 2013
Pour n = 1 on a alors
µ µ ∂∂ µ ∂2 µ ∂2
1 (x ° x 1 ) (x ° x 1 )
p(x) = y 0 1 ° 2(x ° x 0 ) + y 00 (x ° x 0 )
x0 ° x1 (x 0 ° x 1 ) (x 0 ° x 1 )
µ µ ∂∂ µ ∂2 µ ∂2
1 (x ° x 0 ) (x ° x 0 )
+ y 1 1 ° 2(x ° x 1 ) + y 10 (x ° x 1 ) .
x1 ° x0 (x 1 ° x 0 ) (x 1 ° x 0 )
1£ §
p(x) = f (°1)(x + 2)(x ° 1)2 + f 0 (°1)(x + 1)(x ° 1)2 + f (1)(2 ° x)(x + 1)2 + f 0 (1)(x ° 1)(x + 1)2
4
1h i
= f (°1)(x 3 ° 3x + 2) + f 0 (°1)(x 3 ° x 2 ° x + 1) + f (1)(°x 3 + 3x + 2) + f 0 (1)(x 3 + x 2 ° x ° 1)
4
2 f (°1) + f 0 (°1) + 2 f (1) ° f 0 (1) 3 f (1) ° 3 f (°1) ° f 0 (°1) ° f 0 (1)
= + x
4 4
f 0 (1) ° f 0 (°1) 2 f (°1) + f 0 (°1) ° f (1) + f 0 (1) 3
+ x + x .
4 4
Le polynôme interpolateur d’H ERMITE est donc le polynôme
p(x) = Æ + Øx + ∞x 2 + ±x 3
où
Deuxième méthode : le polynôme interpolateur d’H ERMITE est un polynôme de degré 2n +1. On cherche donc un
polynôme
p(x) = Æ + Øx + ∞x 2 + ±x 3
tel que
p(°1) = f (°1), p 0 (°1) = f 0 (°1), p(1) = f (1), p 0 (1) = f 0 (1),
c’est-à-dire tel que 8
>
>Æ ° Ø + ∞ ° ± = f (°1),
>
>
<Æ + Ø + ∞ + ± = f (1),
>
>
>Ø ° 2∞ + 3± = f 0 (°1),
>
:
Ø + 2∞ + 3± = f 0 (1).
En utilisant la méthode d’élimination de G AUSS on obtient :
0 1 0 1
1 °1 1 °1 f (°1) 1 °1 1 °1 f (°1)
B 1 1 1 1 f (1) C √L 2 °L 1 B 0 2 0 2 f (1) ° f (°1) C
[A|b] = B C °L°2°°°°°! B C
@ 0 1 °2 3 0
f (°1) A @ 0 1 °2 3 f 0 (°1) A
0
0 1 2 3 f (1) 0 1 2 3 f 0 (1)
0 1 0 1
L 3 √L 3 ° 12 L 2 1 °1 1 °1 f (°1) 1 °1 1 °1 f (°1)
L 4 √L 4 ° 12 L 3 B
B 0 2 0 2 f (1) ° f (°1) C B
C L 4 √L 4 +L 3 B 0 2 0 2 f (1) ° f (°1) C
C
°°°°°°°°! B 0 f (1)° f (°1) C °°°°°°°! B 0 f (1)° f (°1) C
@ 0 0 °2 2 f (°1) ° 2 A @ 0 0 °2 2 f (°1) ° 2
A
f (1)° f (°1)
0 0 2 2 f 0 (1) ° 2
0 0 0 4 f 0 (1) + f 0 (°1) ° f (1) + f (°1)
104 © G. Faccanoni
Dimanche 29 septembre 2013 3. Quadrature
ainsi
3. Connaissant la formule sur [°1; 1], on en déduit la formule sur un intervalle [a; b] quelconque par le changement de
variable y = a + (x + 1) b°a
2 qui donne
2
Zb Z µ ∂
b°a 1 b°a
f (y)dy = f a + (x + 1) dx
a 2 °1 2
∑ ∏
b°a b°a 0
= f (a) + f (b) + ( f (a) ° f 0 (b))
2 6
b°a (b ° a)2 0
= ( f (a) + f (b)) + ( f (a) ° f 0 (b)).
2 12
Exercice 3.16
Soit f une fonction C 1 ([0; 1], R). On se donne les points {x i }ii =n
=0
de subdivision de l’intervalle [0; 1] : x i = i h avec h = n1 .
Le but de l’exercice est de trouver une formule de quadrature pour approcher
Z1
f (x) dx. (3.14)
0
1. Soit i un entier fixé (1 ∑ i ∑ n ° 1). Trouver m i un point du segment [x i ; x i +1 ] et a, b et c trois coefficients réels tels
que la formule de quadrature suivante, sur l’intervalle [x i ; x i +1 ], soit exacte pour p un polynôme de degré le plus
haut possible : Z x i +1
p(x) dx = ap(x i ) + bp(m i ) + c p(x i +1 ).
xi
2. En déduire en fonction de a, b et c la formule de quadrature Q( f )
n
X n°1
X
Q( f ) = Æi f (x i ) + Øi f (m i )
i =0 i =0
pour le calcul approché de 3.14 construite sur la formule de quadrature précédente pour chaque intervalle du type
[x i ; x i +1 ]. Cette formule de quadrature est-elle stable ?
3. On rappelle que si p interpole f en k points y 1 < y 2 < · · · < y k , on a l’estimation d’erreur
supª2[y 1 ;y k ] | f (k) (ª)| Y
k
8x 2 [y 1 ; y k ], | f (x) ° p(x)| ∑ (x ° y j ).
k! j =1
© G. Faccanoni 105
3. Quadrature Dimanche 29 septembre 2013
tels que
Z1
p(x) dx = Ap(0) + B p(M ) +C p(1),
0
R1
p(x) dx = Ap(0) + B p(M ) +C p(1)
0
k k
h i1
d 0 x + d21 x 2 + d32 x 3 + d43 x 4 Ad 0 + B d 0 +C d 0
0
k k
d1 d2 d3
d0 + 2 + 3 + 4 (A + B +C )d 0 + (B M +C )d 1 + (B M 2 +C )d 2 + (B M 3 +C )d 3
Par conséquent, pour que la formule soit exacte de degré au moins 3 il faut que
8 8 8
>
> A + B +C = 1 >
> A + B +C = 1 >
> A = 16 ,
>
> >
> >
>
<B M +C = 1 <B M = 1 °C <B = 2 ,
2 () 2 () 3
> 2 1 > 1 1 > 1
>
> B M +C = 3 >
> ( 2 °C )M = 3 °C >
> C = 6,
>
: 1
>
: 1 1
>
:
B M 3 +C = 4 ( 3 °C )M = 4 °C M = 12 .
La méthode Z1 µ ∂
1 2 1 1
f (x) dx = f (0) + f + f (1),
0 6 3 2 6
est exacte pour tout polynôme de degré au moins 3.
Soit maintenant f (x) = x 4 . On a
Z1 ∑ 5 ∏1
x 1
f (x) dx = =
0 5 0 5
mais µ ∂ µ ∂
1 2 1 1 1 2 1 4 1 5
f (0) + f + f (1) = + + = ,
6 3 2 6 6 3 2 6 24
donc la formule de quadrature est exacte de degré 3.
Si on revient aux variables initiales, on trouve
8
1 1
>m i = 2 x i + 2 x i +1 ,
>
>
>
<a = 1 h,
6
>b = 2 h,
>
>
> 3
:
c = 16 h
106 © G. Faccanoni
Dimanche 29 septembre 2013 3. Quadrature
2. L’intégrale
Z1 X Zxi +1
n°1
f (x)dx = f (x) dx
0 i =0 x i
peut être calculée numériquement en utilisant la formule précédente pour approcher chaque intégrale
Zxi +1
hh ≥x +x ¥
i i +1
i
f (x) dx º f (x i ) + 4 f + f (x i +1 ) .
xi 6 2
On obtient ainsi
Z1 X Zxi +1
n°1
f (x)dx = f (x) dx
0 i =0 x i
hh
n°1
X ≥x +x ¥
i i +1
i
º f (x i ) + 4 f + f (x i +1 )
i =0 6 2
" #
h X n°1 n°1
X X ≥ x i + x i +1 ¥
n°1
= f (x i ) + f (x i +1 ) + 4 f
6 i =0 i =0 i =0 2
" #
h n°1
X n°1
X ≥ x i + x i +1 ¥
= f (a) + f (b) + 2 f (x i ) + 4 f
6 i =1 i =0 2
(
n
X n°1
X h
2h 3 si i = 1, . . . , n ° 1,
= Æi f (x i ) + Øi f (m i ) = Q( f ) avec Øi = , Æi = h
i =0 i =0 3 6 sinon.
Cette formule de quadrature est stable puisque tous les coefficients Æi et Øi sont positifs et on a
√ !
X n n°1
X h n°1
X h h n°1 X 2h 1 1 1 n°1 X 1 2 n°1
X
Æi + Øi = + + + = + 1+ + 1 = 1.
i =0 i =0 6 i =1 3 6 i =0 3 n 6 3 i =1 6 3 i =0
P Rxi +1
3. On reconnait la formule de Cavalieri-Simpson : remarquons alors que Q( f ) = n°1 i =0 x i p(x)dx avec p le polynôme
qui interpole (x i , f (x i )), (m i , f (m i )) et (x i +1 , f (x i +1 )). Par conséquent l’erreur de quadrature entre (3.14) et Q est
ØZ1 Ø
Ø Ø
|E (h)| = ØØ f (x) dx °Q( f )ØØ
Ø 0 Z Ø
Øn°1
Ø X xi +1 X Zxi +1
n°1 Ø
Ø
=Ø f (x) dx ° p(x)dx Ø
Ø i =0 xi i =0 x i
Ø
n°1
X Z x i +1 Ø Ø
∑ Ø f (x) ° p(x)Ø dx
i =0 x i
X Zxi +1
000
n°1 supª2[xi ;xi +1 ] | f (ª)|
∑ (x ° x i )(x ° m i )(x ° x i +1 )dx
i =0 x i 6
4
∑ Dh .
4. Algorithme
Require: x 7! f
Require: n > 0
1
a √ 6n
2
b √ 3n
1
c √ 6n
I √ a f (0)
for i = 1 to n ° 1 do µ 1∂
° ¢ i°
I √ I + (a + c) f ni + b f n 2
end for µ ∂
n° 12
return I √ I + c f (1) + b f n
© G. Faccanoni 107
4. Équations différentielles ordinaires
Calculer la fonction t 7! y(t ) qui vérifie l’EDO y 0 (t ) = f (t , y(t )) et la condition y(t 0 ) = y 0
Les équations différentielles décrivent l’évolution de nombreux phénomènes dans des domaines variés. Une équation
différentielle est une équation impliquant une ou plusieurs dérivées d’une fonction inconnue. Si toutes les dérivées sont
prises par rapport à une seule variable, on parle d’équation différentielle ordinaire. Une équation mettant en jeu des déri-
vées partielles est appelée équation aux dérivées partielles. On dit qu’une équation différentielle (ordinaire ou aux dérivées
partielles) est d’ordre p si elle implique des dérivées d’ordre au plus p. Dans le présent chapitre, nous considérons des
équations différentielles ordinaires d’ordre un.
Définition Équations différentielles
Une équation différentielle (EDO) est une équation, dont l’inconnue est une fonction y, exprimée sous la forme d’une
relation F (y, y 0 , y 00 , . . . , y (n) ) = g (t ) dans laquelle cohabitent à la fois y = y(t ) et ses dérivées y 0 , y 00 , . . . (n est appelé l’ordre
de l’équation). Si la fonction g , appelée «second membre» de l’équation, est nulle, on dit que l’équation en question est
homogène.
Nous pouvons nous limiter aux équations différentielles du premier ordre, car une équation d’ordre p > 1 peut toujours
se ramener à un système de p équations d’ordre 1. Une équation différentielle ordinaire admet généralement une infinité
de solutions. Pour en sélectionner une, on doit imposer une condition supplémentaire qui correspond à la valeur prise par
la solution en un point de l’intervalle d’intégration. On considérera par conséquent des problèmes, dits de C AUCHY ainsi
défini :
Définition Problème de C AUCHY
Soit f : I £ R ! R une fonction donnée et y 0 la dérivée de y par rapport à t . On appelle problème de C AUCHY le problème
trouver y : I Ω R ! R tel que (
y 0 (t ) = f (t , y(t )), 8t 2 I ,
y(t 0 ) = y 0 ,
avec t 0 un point de I et y 0 une valeur appelée donnée initiale.
Exemple
On se donne f (t , y(t )) = 3t ° 3y(t ) et y 0 = Æ (un nombre quelconque). On cherche une fonction y : t 2 R+ 7! y(t ) 2 R qui satisfait
(
y 0 (t ) = 3t ° 3y(t ), 8t > 0,
y(0) = Æ.
y(0) = (Æ + 1/3)e 0 + 0 ° 1/3 = Æ, y 0 (t ) = °3(Æ + 1/3)e °3t + 1 = °3(Æ + 1/3)e °3t + 1 ° 3t + 3t = °3y(t ) + 3t .
On vérifie que la solution y est donnée par y(t ) = p 1 qui n’est définie que pour t 2 [0; 1/2[. Cet exemple montre qu’un problème
1°2t
de C AUCHY n’a pas toujours une solution pour tout t 2 [0; +1[ puisqu’ici la solution explose lorsque t tend vars la valeur 1/2 (en effet,
nous avons lim ° y(t ) = +1).
t !(1/2)
109
4. Équations différentielles ordinaires Dimanche 29 septembre 2013
Les trois exemples ci-dessus montrent que l’étude mathématique de l’existence et de l’unicité de solutions d’un pro-
blème de C AUCHY peut être une affaire délicate. Dans ce chapitre, nous nous contentons de rappeler un résultat d’existence
et d’unicité global, au sens où on peut intégrer le problème de C AUCHY jusqu’à t = 1 :
Proposition Théorème de C AUCHY-Lipschitz
Soit un problème de C AUCHY. Si la fonction f (t , y) est
1. continue par rapport à ses deux variables ;
2. lipschitzienne par rapport à sa deuxième variable, c’est-à-dire qu’il existe une constante positive L (appelée
constante de Lipschitz) telle que
| f (t , y 1 ) ° f (t , y 2 )| ∑ L|y 1 ° y 2 |, 8t 2 I , 8y 1 , y 2 2 R,
Cas particulier
Soient a et g deux fonctions continues d’un intervalle I dans R, si f (t , y(t )) = a(t )y(t ) + g (t ) et si (t 0 , y 0 ) 2 I £ R, alors il
existe une unique solution y de l’équation différentielle telle que y(t 0 ) = y 0 .
Remarque
Graphiquement, ce théorème signifie que par tout point du plan dont l’abscisse est dans I , il passe une courbe intégrale
et une seule, autrement dit deux trajectoires ne peuvent pas se croiser. En particulier, si une équation différentielle admet
comme solution la solution nulle, alors toute autre solution est soit toujours positive soit toujours négative.
Exemple
2
On se donne f (t , y(t )) = |y(t )| + sin(y(t )) + e °t /2 et y 0 = 1. On cherche une fonction y : t 2 R+ 7! y(t ) 2 R qui satisfait
(
y 0 (t ) = (y(t ))3 , 8t > 0,
y(0) = 1.
Par le théorème de C AUCHY-Lipschitz, le problème de C AUCHY a une solution globale unique y(t ). Cependant, il n’est pas possible de
donner une expression explicite de la solution.
En pratique, on ne peut expliciter les solutions que pour des équations différentielles ordinaires très particulières. Dans
certains cas, on ne peut exprimer la solution que sous forme implicite. Dans d’autres cas, on ne parvient même pas à
représenter la solution sous forme implicite. Pour ces raisons, on cherche des méthodes numériques capables d’approcher
la solution de toutes les équations différentielles qui admettent une solution.
110 © G. Faccanoni
Dimanche 29 septembre 2013 4. Équations différentielles ordinaires
© ™
inconnue u n qui approche y(t n ). L’ensemble des valeurs u 0 = y 0 , u 1 , . . . , u Nh représente la solution numérique. Les sché-
mas qu’on va construire permettent de calculer u n+1 à partir de u n et il est donc possible de calculer successivement u 1 ,
u 2 ,. . ., en partant de u 0 .
Si nous intégrons l’EDO y 0 (t ) = f (t , y(t )) entre t n et t n+1 nous obtenons
Ztn+1
y(t n+1 ) ° y(t n ) = f (t , y(t ))d t .
tn
Soit u n une approximation de y(t n ) et u n+1 une approximation de y(t n+1 ). On peut construire différentes schémas selon la
formule de quadrature utilisée pour approcher le membre de droite.
? Si on utilise la formule de quadrature du rectangle à gauche, i.e.
Ztn+1
f (t , y(t ))d t º h f (t n , y(t n ))
tn
Il s’agit d’un schéma implicite car il ne permet pas d’expliciter directement u n+1 en fonction de u n lorsque la fonction
f n’est pas triviale.
? Si on utilise la formule de quadrature du point du milieu, i.e.
Ztn+1 µ µ ∂∂
h h
f (t , y(t ))d t º h f t n + , y t n +
tn 2 2
où u n+1/2 est une approximation de y(t n + h/2). Nous pouvons utiliser une prédiction d’E ULER progressive pour ap-
procher le u n+1/2 dans le terme f (t n + h/2, u n+1/2 ) par ũ n+1/2 = u n + (h/2) f (t n , u n ). Nous avons construit ainsi un
nouveau schéma appelé schéma d’E ULER modifié qui s’écrit
8
<u 0 = y(y 0 ) = y 0 ,
>
ũ n+1/2 = u n + (h/2) f (t n , u n ),
>
:
u n+1 = u n + h f (t n + h/2, ũ n+1/2 ) n = 0, 1, 2, . . .
Il s’agit à nouveau d’un schéma implicite car il ne permet pas d’expliciter directement u n+1 en fonction de u n lorsque
la fonction f n’est pas triviale. En fait, ce schéma fait la moyenne des schémas d’E ULER progressif et rétrograde.
© G. Faccanoni 111
4. Équations différentielles ordinaires Dimanche 29 septembre 2013
? Pour éviter le calcul implicite de u n+1 dans le schéma du trapèze, nous pouvons utiliser une prédiction d’E ULER pro-
gressive et remplacer le u n+1 dans le terme f (t n+1 , u n+1 ) par ũ n+1 = u n + h f (t n , u n ). Nous avons construit ainsi un
nouveau schéma appelé schéma de H EUN. Plus précisément, la méthode de H EUN s’écrit
8
<u 0 = y(y 0 ) = y 0 ,
>
ũ n+1 = u n + h f (t n , u n ),
>
: ° ¢
u n+1 = u n + h f (t n , u n ) + f (t n+1 , ũ n+1 ) n = 0, 1, 2, . . .
Remarque
Considérons le schéma d’E ULER rétrograde. Si nous voulons calculer u n+1 , nous définissons la fonction
g (x) = x ° h f (t n+1 , x) ° u n
et nous cherchons un zéro de g (x) en prenant par exemple la méthode de N EWTON. Ainsi nous pouvons poser x 0 = u 0 et
x m+1 = x m ° g (x m )/g 0 (x m ), m = 0, 1, . . . . Puisque g 0 (x) = 1 ° h@x f (t n+1 , x), nous obtenons donc dans ce cas le schéma
(
x0 = un ,
x m °h f (t n+1 ,x)°u n
x m+1 = x m ° 1°h@x f (t n+1 ,x) m = 0, 1, 2, . . .
et u n+1 = limm!1 x m pour autant que f soit suffisamment régulière et que x 0 soit suffisamment proche de u n+1 , ce qui
est le cas si le pas h est suffisamment petit.
Nous avons vu que sa solution est donnée par y(t ) = (Æ ° 1/3)e 3t + t + 1/3. Si nous cherchons à résoudre le problème
de C AUCHY jusqu’à t = 10 avec Æ = 1/3, nous obtenons y(10) = 10 + 1/3 = 31/3. Par contre, si nous faisons le calcul
avec l’approximation Æ = 0.333333 au lieu de 1/3, nous avons y(10) = (0.333333 ° 1/3)e 30 + 10 + 1/3 = °e 30 /3000000 +
31/3 ce qui représente une différence avec la précédente valeur de e 30 /3000000 º 107 /3. Cet exemple nous apprend
qu’une petite erreur sur la condition initiale (erreur relative d’ordre 10°6 ) peut provoquer une très grande erreur sur
y(10) (erreur relative d’ordre 106 ). Ainsi, si le calculateur mis à notre disposition ne calcul qu’avec 6 chiffres significatifs
(en virgule flottante), alors Æ = 1/3 devient Æ = 0.333333 et il est inutile d’essayer d’inventer une méthode numérique
pour calculer y(10). En effet, la seule erreur sur la condition initiale provoque déjà une erreur inadmissible sur la solution.
Nous sommes en présence ici d’un problème numériquement mal posé, appelé aussi problème mal conditionné.
4.2. A-Stabilité
Dans la section précédente, on a considéré la résolution du problème de C AUCHY sur des intervalles bornés. Dans ce
cadre, le nombre Nh de sous-intervalles ne tend vers l’infini que quand h tend vers zéro. Il existe cependant de nombreuses
situations dans lesquelles le problème de C AUCHY doit être intégré sur des intervalles en temps très grands ou même infini.
Dans ce cas, même pour h fixé, Nh tend vers l’infini. On s’intéresse donc à des méthodes capables d’approcher la solution
pour des intervalles en temps arbitrairement grands, même pour des pas de temps h «assez grands».
Définition
Soit Ø > 0 un nombre réel positif et considérons le problème de C AUCHY
(
y 0 (t ) = °Øy(t ), pour t > 0,
y(0) = y 0
112 © G. Faccanoni
Dimanche 29 septembre 2013 4. Équations différentielles ordinaires
où y 0 6= 0 est une valeur donnée. Sa solution est y(t ) = y 0 e °Øt et limt !+1 y(t ) = 0.
Soit h > 0 un pas de temps donné, t n = nh pour n 2 N et notons u n º y(t n ) une approximation de la solution y au temps
tn .
Si, sous d’éventuelles conditions sur h, on a
lim u n = 0,
n!+1
u n+1 = (1 ° Øh)u n , n = 0, 1, 2, . . .
et par suite
u n = (1 ° Øh)n u 0 , n = 0, 1, 2, . . .
Par conséquente, lim u n = 0 si et seulement si
n!+1 Ø Ø
Ø1 ° Øh Ø < 1,
(1 + Øh)u n+1 = u n , n = 0, 1, 2, . . .
et par suite
1
un = u0 , n = 0, 1, 2, . . .
(1 + Øh)n
Dans ce cas nous voyons que pour tout h > 0 nous avons limn!1 u n = 0, le schéma d’E ULER rétrograde est donc
toujours stable, sans limitations sur h.
? Le schéma de C RANK -N ICOLSON appliqué à notre exemple s’écrit
µ ∂ µ ∂
h h
1 + Ø u n+1 = 1 ° Ø u n
2 2
et par suite µ ∂n
2 ° Øh
un = u0 , n = 0, 1, 2, . . .
2 + Øh
Par conséquent, lim u n = 0 si et seulement si
n!+1 Ø Ø
Ø 2 ° Øh Ø
Ø Ø
Ø 2 + Øh Ø < 1.
© G. Faccanoni 113
4. Équations différentielles ordinaires Dimanche 29 septembre 2013
0 2 x = Øh
Nous avons |q(x)| < 1 si et seulement si 0 < x < 2. La relation lim u n = 0 est donc satisfaite si et seulement si
n!+1
2
h< .
Ø
Cette condition de stabilité limite le pas h d’avance en t lorsqu’on utilise le schéma de H EUN.
A première vue, il semble que le schéma d’E ULER progressif et le schéma de H EUN soient préférable au schéma d’E ULER
rétrograde et de C RANK -N ICOLSON puisque ces derniers ne sont pas explicites. Cependant, les méthodes d’E ULER implicite
et de C RANK -N ICOLSON sont inconditionnellement A-stables. C’est aussi le cas de nombreuses autres méthodes implicites.
Cette propriété rend les méthodes implicites attractives, bien qu’elles soient plus coûteuses que les méthodes explicites.
114 © G. Faccanoni
Dimanche 29 septembre 2013 4. Équations différentielles ordinaires
4 import math
5 import sys
6 import matplotlib.pyplot as plt
7
8 def euler_progressif(f,tt,N):
9 °°°!yy = [y0]
10 °°°!for i in range(N):
11 °°°!°°°!yy.append(yy[i]+h*f(tt[i],yy[i]))
12 °°°!return yy
13
14 def euler_modifie(f,tt,N):
15 °°°!yy = [y0]
16 °°°!for i in range(N):
17 °°°!°°°!yy.append(yy[i]+h*f(tt[i]+h*0.5,yy[i]+h*0.5*f(tt[i],yy[i])))
18 °°°!return yy
19
20 def heun(f,tt,N):
21 °°°!yy = [y0]
22 °°°!for i in range(N):
23 °°°!°°°!yy.append(yy[i]+h*(f(tt[i],yy[i])+f(tt[i+1],yy[i]+h*f(tt[i],yy[i]))))
24 °°°!return yy
et voici un exemple
25 # INITIALISATION
26 N = 3
27 exemple = 4
28
29 if exemple==1 :
30 °°°!t0 = 0.
31 °°°!y0 = 1.
32 °°°!tfinal = 3.
33 °°°!def f(t,y):
34 °°°!°°°!return y
35 °°°!def sol_exacte(t):
36 °°°!°°°!return math.exp(t)
37 elif exemple==2 :
38 °°°!t0 = 0.
39 °°°!y0 = 1.
40 °°°!tfinal = 3.
41 °°°!def f(t,y):
42 °°°!°°°!return t
43 °°°!def sol_exacte(t):
44 °°°!°°°!return 1.+0.5*t**2
45 elif exemple==3 :
46 °°°!t0 = 0.
47 °°°!y0 = 0.
48 °°°!tfinal = 1.
49 °°°!def f(t,y):
50 °°°!°°°!return math.cos(2*y)
51 °°°!def sol_exacte(t):
52 °°°!°°°!return 0.5*math.asin((math.exp(4.*t)-1.)/(math.exp(4.*t)+1.))
53 else :
54 °°°!print "Exemple non defini"
55 °°°!sys.exit(0)
56
57 # CALCUL
58 h = (tfinal-t0)/N
59 tt = [ t0+i*h for i in range(N+1) ]
60 yy_exacte = [sol_exacte(t) for t in tt]
61 yy_euler_progressif = euler_progressif(f,tt,N)
© G. Faccanoni 115
4. Équations différentielles ordinaires Dimanche 29 septembre 2013
62 yy_euler_modifie = euler_modifie(f,tt,N)
63 yy_heun = euler_modifie(f,tt,N)
64
65 # AFFICHAGE
66 plt.axis([t0, tfinal, min(yy_euler_progressif), max(yy_euler_progressif)])
67 plt.plot(tt,yy_exacte,’m’,tt,yy_euler_progressif,’go’,tt,yy_euler_modifie,’cs’,tt,yy_heun,’r^’)
68 plt.show()
116 © G. Faccanoni
Dimanche 29 septembre 2013 4. Équations différentielles ordinaires
y k+1 = (1 ° ¢t )y k .
y k+1 = (1 ° ¢t )k+1 .
4. On a donc
µ ∂
3 k
? si ¢t = 2.5 alors y k = ° ,
2
µ ∂k
1
? si ¢t = 1.5 alors y k = ° ,
2
µ ∂k
1
? si ¢t = 0.5 alors y k = .
2
© G. Faccanoni 117
4. Équations différentielles ordinaires Dimanche 29 septembre 2013
y(i ¢t )
t i = i ¢t ¢t = 2.5 ¢t = 1.5 ¢t = 0.5
0 1 1 1
0.5 0.5
1 0.25
1.5 °0.5 0.125
2 0.0625
2.5 °1.5 0.03125
3 0.25 0.015625
3.5 0.0078125
4 0.00390625
4.5 °0.125 0.001953125
5 2.25 0.0009765625
5.5 0.00048828125
6 0.0625 0.000244140625
6.5 0.0001220703125
7 6.103515625 £ 10°5
7.5 °3.75 °0.03125 3.0517578125 £ 10°5
8 1.52587890625 £ 10°5
8.5 7.62939453125 £ 10°6
9 0.015625 3.814697265625 £ 10°6
9.5 1.9073486328125 £ 10°6
10 5.0625 9.5367431640625 £ 10°7
Ci-dessous sont tracées sur l’intervalle [0; 10], les courbes représentatives de la solution exacte et de la solution cal-
culée par la méthode d’E ULER explicite. En faisant varier le pas ¢t nous pouvons constater que si ¢t = 2.5 l’erreur
commise entre la solution exacte et la solution calculée est amplifiée d’un pas à l’autre.
y
2 Exacte
¢t = 0.5
1 ¢t = 1.5
¢t = 2.5
0
1 2 3 4 5 6 7 8 9 t
°1
°2
°3
NB : les trois premières itérées ont la même pente (se rappeler de la construction géométrique de la méthode d’E ULER).
5. De la formule y k+1 = (1 ° ¢t )k+1 on déduit que
? si 0 < ¢t < 1 alors la solution numérique est stable et convergente,
? si 1 < ¢t < 2 alors la solution numérique oscille mais est encore convergente,
? si ¢t > 2 alors la solution numérique oscille et divergente.
En effet, on sait que la méthode est absolument stable si et seulement si |1 ° ¢t | < 1.
Remarque : la suite obtenue est une suite géométrique de raison q = 1 ° ¢t . On sait qu’une telle suite
? diverge si |q| > 1 ou q = °1,
? est stationnaire si q = 1,
? converge vers 0 |q| < 1.
118 © G. Faccanoni
Dimanche 29 septembre 2013 4. Équations différentielles ordinaires
Exercice 4.2
L’évolution de la concentration de certaines réactions chimiques au cours du temps peut être décrite par l’équation
différentielle
1
y 0 (t ) = ° y(t ).
1+ t2
Sachant qu’à l’instant t = 0 la concentration est y(0) = 5, déterminer la concentration à t = 2 à l’aide de la méthode
d’E ULER implicite avec un pas h = 0.5.
C ORRECTION DE L’ EXERCICE 4.2. La méthode d’E ULER implicite est une méthode d’intégration numérique d’EDO du pre-
mier ordre de la forme y 0 (t ) = F (t , y(t )). C’est une méthode itérative : en choisissant un pas de discrétisation h, la valeur y
à l’instant t + h se déduit de la valeur de y à l’instant t par l’approximation linéaire
on obtient une suite (y k )k2N qui approche les valeurs de la fonction y en t k . Dans notre cas, l’équation non-linéaire s’écrit
h
y k+1 = y k ° 2
y k+1 .
1 + t k+1
4 + (k + 1)2
y k+1 = yk .
6 + (k + 1)2
On obtient donc
k tk yk
0 0 5
4+12
1 0.5 6+12
5 = 57 5 = 25
7 º 3.57
4+22 25 8 25 20
2 1.0 6+22 7
= 10 7 = 7 º 2.86
4+32 20
3 1.5 6+32 7
= 13 20 52
15 7 = 21 º 2.48
2
4+4 52
4 2.0 6+42 21
= 20 52 520
22 21 = 231 º 2.25
La concentration à t = 2 est d’environ 2.25. Comparons avec le calcul exact : y(2) = 5e ° arctan(2) º 1.652499838.
y
5
2 Exacte
E ULER implicite
1
1 2 3 t
© G. Faccanoni 119
4. Équations différentielles ordinaires Dimanche 29 septembre 2013
Exercice 4.3
Soit Ø > 0 un nombre réel positif et considérons le problème de C AUCHY
(
y 0 (t ) = °Øy(t ), pour t > 0,
(4.1)
y(0) = y 0 ,
où y 0 est une valeur donnée. Soit h > 0 un pas de temps donné, t i = i h pour i 2 N (ainsi t 0 = 0) et y i une approximation
de y(t i ).
1. Écrire le schéma du trapèze (appelé aussi de C RANK -N ICOLSON) permettant de calculer y i +1 à partir de y i . Sous
quelle condition sur h le schéma du trapèze est-il A-stable ? Autrement dit, pour quelles valeurs de h la relation
lim y i = 0 a-t-elle lieu ?
i !+1
2. À partir du schéma du trapèze, en déduire le schéma de H EUN. Sous quelle condition sur h le schéma de H EUN
est-il A-stable ?
Soit y i une approximation de y(t i ) et y i +1 une approximation de y(t i +1 ). Si on utilise la formule du trapèze, i.e.
Zti +1
h° ¢
f (t , y(t )) dt º f (t i , y(t i )) + f (t i +1 , y(t i +1 ))
ti 2
Il s’agit d’un schéma implicite car il ne permet pas d’écrire directement y i +1 en fonction de y i lorsque la fonction
f n’est pas triviale. En appliquant le schéma du trapèze au problème (4.1) on obtient la suite définie par récurrence
suivante (
y = y(t 0 ),
≥0 ¥ ≥ ¥
1 + h2 Ø y i +1 = 1 ° h2 Ø y i .
120 © G. Faccanoni
Dimanche 29 septembre 2013 4. Équations différentielles ordinaires
En appliquant le schéma de H EUN au problème (4.1) on obtient la suite définie par récurrence suivante
(
y 0 = y(t 0 ),
≥ ¥
(Øh)2
y i +1 = 1 ° Øh + 2 y i .
0 2 x = Øh
Nous avons |q(x)| < 1 si et seulement si 0 < x < 2. La relation lim y i = 0 est donc satisfaite si et seulement si
i !+1
2
h< .
Ø
Exercice 4.4
On considère le problème de C AUCHY
(
y 0 (t ) = °(y(t ))m + cos(t ), pour t > 0,
(4.2)
y(0) = 0,
| f (t , y 1 ) ° f (t , y 2 )| ∑ L|y 1 ° y 2 |, 8t 2 I , 8y 1 , y 2 2 R,
© G. Faccanoni 121
4. Équations différentielles ordinaires Dimanche 29 septembre 2013
Soit y i une approximation de y(t i ) et y i +1 une approximation de y(t i +1 ). Si on utilise la formule du rectangle à droite,
i.e. Z t i +1
f (t , y(t )) dt º ¢t f (t i +1 , y(t i +1 ))
ti
Choisissons x 0 = y i comme valeur de départ. Nous pouvons utiliser x 1 comme approximation de y i +1 et on obtient
le schéma 8
< y 0 = 0,
>
° ¢
y i + ¢t y im ° ¢t cos(t i +1 ) + y i
> y
: i +1 = ° .
1 + m¢t y im°1
Exercice 4.5
Soit le problème de C AUCHY :
(
u 0 (t ) + 10u(t ) = 0, 8t 2 R,
(4.3)
u(0) = u 0 > 0.
1. Montrer qu’il existe une unique solution globale u 2 C 1 (R, R) que vous préciserez explicitement.
122 © G. Faccanoni
Dimanche 29 septembre 2013 4. Équations différentielles ordinaires
lim u n § = u 0 e °10T .
¢t !0
7. Soit (v n )n2N la suite définissant le schéma d’E ULER explicite pour l’équation différentielle (4.3). Montrer que
lim v n § = u 0 e °10T .
¢t !0
d’où
1 ° 5¢t
u n+1 = un .
1 + 5¢t
Il s’agit d’une suite géométrique de raison
1 ° 5¢t
r= .
1 + 5¢t
© G. Faccanoni 123
4. Équations différentielles ordinaires Dimanche 29 septembre 2013
ln(1 + Æx)
lim =1
x!0 Æx
et en observant que
° 1°5¢t ¢ ¢tT °1 ° 1°5¢t ¢n § ° 1°5¢t ¢ ¢tT
1+5¢t ∑ 1+5¢t ∑ 1+5¢t
k k
ln(1°5¢t )°ln(1+5¢t ) ln(1°5¢t )°ln(1+5¢t )
e (T °¢t ) ¢t eT ¢t
k k
(T °¢t ) °5 ln(1°5¢t5¢t
)°5 ln(1+5¢t )
T °5 ln(1°5¢t )°5 ln(1+5¢t )
e e 5¢t
# #
e °10T e °10T
on conclut que
µ ∂n §
1 ° 5¢t
lim u n § = u 0 lim = u 0 e °10T .
¢t !0 ¢t !0 1 + 5¢t
7. La suite définissant le schéma d’E ULER explicite pour l’EDO assignée s’écrit
v n+1 ° v n
= f (t n , u n ) =) v n+1 = v n ° 10¢t v n = (1 ° 10¢t )v n = (1 ° 10¢t )n+1 v 0 .
¢t
Il s’agit à nouveau d’une suite géométrique de raison
r e = 1 ° 10¢t
qui converge si et seulement si |r e | < 1, i.e. si et seulement si ¢t < 0,2 (le schéma d’E ULER pour cette EDO est condi-
tionnellement stable).
Soit T > 0 fixé et considérons n § = n § (¢t ) tel que T ° ¢t < n § ¢t ∑ T . Alors
T § T
(1 ° 10¢t ) ¢t °1 ∑ (1 ° 10¢t )n ∑ (1 ° 10¢t ) ¢t
k k
ln(1°10¢t ) ln(1°10¢t )
e (T °¢t ) ¢t eT ¢t
k k
°10(T °¢t ) ln(1°10¢t )
°10T ln(1°10¢t )
e °10¢t e °10¢t
# #
e °10T e °10T
d’où
T
lim v n § = u 0 lim (1 ° 10¢t ) ¢t = u 0 e °10T .
¢t !0 ¢t !0
De plus, on sait (cf. cours) que la suite {u n }n2N converge à l’ordre 2 tandis que la suite {v n }n2N converge à l’ordre 1.
124 © G. Faccanoni
Dimanche 29 septembre 2013 4. Équations différentielles ordinaires
Exercice 4.6
Soit le problème de C AUCHY : p
8
< 0 u(t )
u (t ) + = 0, 8t 2 R+ ,
: 2
u(0) = u 0 > 0.
1. Soit le schéma numérique défini par la suite (u n )n2N suivante
u n+1 ° u n u n+1
+ p = 0, 8n 2 N,
¢t 2 un
1. Pour ¢t > 0 fixé on obtient une formule de récurrence rendue explicite par un calcul élémentaire :
un 2(u n )3/2
u n+1 = = p , 8n 2 N.
1 + 2p¢tu 2 u n + ¢t
n
2. On étudie la suite (
u 0 > 0,
2(u n )3/2
u n+1 = p
2 u n +¢t
, 8n 2 N,
Exercice 4.7
Soit le problème de C AUCHY : (
u 0 (t ) + u 5 (t ) = 0, 8t 2 R+ ,
(4.5)
u(0) = u 0 > 0.
© G. Faccanoni 125
4. Équations différentielles ordinaires Dimanche 29 septembre 2013
1. Comme g 2 C 1 (R+ , R+ ), d’après C AUCHY-Lipschitz, il existe T > 0 et une unique solution u 2 C 1 ([0, T ], R+ ). Par ré-
currence, en exploitant l’EDO et la régularité de g , on grimpe en régularité sur u et u 2 C 1 ([0, T ], R+ ).
La fonctionne nulle est solution de l’équation différentielle g (0) = 0. Comme u 0 > 0, par l’unicité de la solution du
problème de C AUCHY on a u(t ) > 0 pour tout t 2 [0, T ] (car deux trajectoires ne peuvent pas se croiser). De plus, u est
décroissante, ainsi la solution est bornée (u(t ) 2 ]0, u 0 [). On en déduit par le théorème des extrémités que la solution
u admet un prolongement sur R+ solution de l’EDO.
2. Pour ¢t > 0 fixé on obtient une formule de récurrence rendue explicite par un calcul élémentaire :
un
u n+1 = , 8n 2 N.
1 + u n4 ¢t
3. On étudie la suite (
u 0 > 0,
un
u n+1 = 1+u n4 ¢t
, 8n 2 N,
Exercice 4.8
Soit le problème de C AUCHY : (
u 0 (t ) + sin(u(t )) = 0, 8t 2 R,
(4.7)
u(0) = u 0 > 0.
1. Montrer qu’il existe une unique solution globale u 2 C 1 (R, R).
2. Écrire le schéma le schéma d’E ULER explicite pour ce problème de C AUCHY en explicitant vos notations.
3. Montrer que la suite (u n )n2N construite par ce schéma vérifie
|u n+1 | ∑ |u n | + ¢t , 8n 2 N,
u n+1 = u n ° ¢t sin(u n ), 8n 2 N.
126 © G. Faccanoni
Dimanche 29 septembre 2013 4. Équations différentielles ordinaires
T (5) = 50.
Calculer la solution exacte de ce problème de C AUCHY et la comparer avec la solution approchée obtenue par la méthode
d’E ULER explicite.
T 0 (t ) dT
T 0 (t ) = K (T (t ) ° 25) =) =K =) = Kdt =)
(T (t ) ° 25) (T ° 25)
Z Z
1
dT = K dt =) ln(T ° 25) = K t + c =) T ° 25 = De K t =) T (t ) = 25 + De K t
(T ° 25)
75 = T (0) = 25 + De K ·0 =) D = 50 =) T (t ) = 25 + 50e K t
ln(2) ln(2)
50 = T (5) = 25 + 50e K t =) K =° º °0.14 =) T (t ) = 25 + 50e ° 5 t
5
T
75
50
25
0
5 10 15 t
Solution approchée par la méthode d’Euler progressive Supposons de connaître K mais de ne pas vouloir/pouvoir
calculer la fonction T (t ). Grâce à la méthode d’E ULER on peut estimer la température à différentes instantes t i en
faisant une discrétisation temporelle du futur (i.e. on construit une suite de valeurs {t i = 0 + i ¢t }i ) et en construisant
© G. Faccanoni 127
4. Équations différentielles ordinaires Dimanche 29 septembre 2013
une suite de valeurs {Ti }i où chaque Ti est une approximation de T (t i ). Si on utilise la méthode d’E ULER, cette suite
de température est ainsi construite : (
Ti +1 = Ti ° ln(2)
5 ¢t (Ti ° 25),
T0 = 75,
qu’on peut réécrire comme (
Ti +1 = (1 ° ln(2)
5 ¢t )Ti + 5 ln(2)¢t ,
T0 = 75.
1. Exemple avec ¢t = 5 :
T
75
50
25
0
5 10 15 t
ti T (t i ) Ti T (t i ) ° Ti
0.000000 75.000000 75.000000 0.000000
5.000000 50.000000 40.342641 9.657359
10.000000 37.500000 29.707933 7.792067
15.000000 31.250000 26.444642 4.805358
2. Exemple avec ¢t = 1 :
T
75
50
25
0
5 10 15 t
128 © G. Faccanoni
Dimanche 29 septembre 2013 4. Équations différentielles ordinaires
ti T (t i ) Ti T (t i ) ° Ti
0.000000 75.000000 75.000000 0.000000
1.000000 68.527528 68.068528 0.459000
2.000000 62.892914 62.097962 0.794952
3.000000 57.987698 56.955093 1.032605
4.000000 53.717459 52.525176 1.192283
5.000000 50.000000 48.709377 1.290623
6.000000 46.763764 45.422559 1.341205
7.000000 43.946457 42.591391 1.355066
8.000000 41.493849 40.152707 1.341142
9.000000 39.358729 38.052095 1.306634
10.000000 37.500000 36.242691 1.257309
11.000000 35.881882 34.684123 1.197759
12.000000 34.473229 33.341618 1.131610
13.000000 33.246924 32.185225 1.061700
14.000000 32.179365 31.189141 0.990224
15.000000 31.250000 30.331144 0.918856
1. Soit ¢t le pas temporel. Écrire le schéma d’E ULER implicite pour approcher la solution de cette équation différen-
tielle.
2. Soit Text = 0±C. En déduire une forme du type
Tn+1 = g (¢t , n, T0 )
avec g (¢t , n, T0 ) à préciser (autrement dit, l’itéré en t n ne dépend que de ¢t , de n et de T0 ). Que peut-on en déduire
sur la convergence de la méthode ?
3. Problème. Un homicide a été commis. On veut établir l’heure du crime sachant que
? pour un corps humaine on peut approcher K º °0.007438118376 (l’échelle du temps est en minutes et la
température en Celsius),
? le corps de la victime a été trouvé sur le lieu du crime à 2H 20 du matin,
? à l’heure du décès la température du corps était de 37±C,
? à l’heure de la découverte la température du corps est de 20±C,
? la température externe est Text = 0±C.
Approcher l’heure de l’homicide en utilisant le schéma d’E ULER implicite avec ¢t = 10 minutes.
4. Pour cette équation différentielle, il est possible de calculer analytiquement ses solutions. Comparer alors la solu-
tion exacte avec la solution approchée obtenue au point précédent.
© G. Faccanoni 129
4. Équations différentielles ordinaires Dimanche 29 septembre 2013
autrement dit, l’itérée en t n ne dépend que de ¢t et de n mais ne dépend pas de Tn . Comme 0 < 1°K1 ¢t < 1 pour tout
¢t > 0, la suite est positive décroissante ce qui assure que la solution numérique est stable et convergente.
3. On cherche combien de minutes se sont écoulés entre le crime et la découverte du corps, autrement dit on cherche
n tel que
µ ∂ ° ¢
1 n+1 37 37 ln 37
20
20 = 37 =) (1 ° K ¢t ) = =) n + 1 = log(1°K ¢t ) = =) n º 8.
(1 ° K ¢t )n+1 20 20 ln(1 ° K ¢t )
0 = K (c ° Text )
T 0 (t ) dT
T 0 (t ) = K (T (t ) ° Text ) =) =K =) = K dt =)
T (t ) ° Text T ° Text
Z Z
1
dT = K dt =) ln(T ° Text ) = K t + c =) T ° Text = De K t =) T (t ) = Text + De K t .
T ° Text
La valeur numérique de la constante d’intégration D est obtenue grâce à la CI :
T0 = T (0) = De K ·0 =) D = °T0 =) T (t ) = T0 e K t
T (t ) = 37e K t .
20 = 37e K t
1
d’où t = K ln 20
37 º 82,70715903 minutes, c’est-à-dire 83 minutes avant 2H20 : le crime a été commit à 00H57.
T [±C]
t
1H00
1H10
1H20
1H30
1H40
1H50
2H00
2H10
2H20
Exercice 4.11
Un modèle pour la diffusion d’une épidémie se base sur l’hypothèse que sa vitesse de propagation est proportionnelle
au nombre d’individus infectés et au nombre d’individus sains.
Si on note I (t ) ∏ 0 le nombre d’individus infectés à l’instant t ∏ 0 et A > 0 le nombre d’individus total, il existe une
constante k 2 R+ telle que I 0 (t ) = k I (t )(A ° I (t )).
1. Montrer qu’il existe T > 0 et une unique solution I 2 C 1 ([0, T ]) au problème de C AUCHY :
(
I 0 (t ) = k I (t )(A ° I (t )),
I (0) = I 0 > 0.
2. Montrer que si 0 < I 0 < A alors 0 < I (t ) < A pour tout t > 0.
130 © G. Faccanoni
Dimanche 29 septembre 2013 4. Équations différentielles ordinaires
I n+1 ° I n
= k I n (A ° I n+1 ).
¢t
Montrer que ce schéma est inconditionnellement A-stable.
I n+1 ∑ A () (1 + k A¢t )I n ∑ (1 + k I n ¢t )A () In ∑ A
A
Exacte
Approchée avec ¢t = 1
I0
t
© G. Faccanoni 131
4. Équations différentielles ordinaires Dimanche 29 septembre 2013
Exercice 4.12
Considérons une population de bactéries. Soit p(t ) le nombre d’individus (∏ 0) à l’instant t ∏ 0. Un modèle qui décrit
l’évolution de cette population est l’«équation de la logistique» : soit k et h deux constantes positives, alors p(t ) vérifie
l’équation différentielle ordinaire (EDO) du premier ordre
p 0 (t ) = kp(t ) ° hp 2 (t ).
p(0) = p 0 ∏ 0.
0 = kc ° hc 2 .
Étant donné que deux solutions d’une EDO ne s’intersectent jamais, dorénavant on supposera p(t ) 6= 0 et p(t ) 6=
k +
h pour tout t 2 R , ainsi
p 0 (t )
= 1.
kp(t ) ° hp 2 (t )
Formellement on a
Z Z
dp 1
= 1 dt =) dp = 1 dt =)
kp ° hp 2 p(k ° hp)
Z Z Z
1 1 1 °h 1 1
dp ° dp = 1 dt =) ln(p) ° ln(k ° hp) = t + c =)
k p k k ° hp k k
µ ∂
p p
ln = kt + kc =) = De kt =)
k ° hp k ° hp
k
p(t ) = 1 .
De kt
+h
kD p0
p 0 = p(0) = =) D= .
1 + hDe 0k k ° hp 0
132 © G. Faccanoni
Dimanche 29 septembre 2013 4. Équations différentielles ordinaires
p
5
4
Exemple avec k = 3, h = 1
3 et différentes valeurs de
p0.
2
0
1 2 3 t
Solution approchée Supposons de ne pas vouloir/pouvoir calculer la fonction p(t ). Grâce à la méthode d’E ULER on
peut estimer le nombre d’indivus à différentes instantes t i en faisant une discrétisation temporelle du futur (i.e.
on construit une suite de valeurs {t i = 0 + i ¢t }i ) et en construisant une suite de valeurs {p i }i où chaque p i est une
approximation de p(t i ). Si on utilise la méthode d’E ULER, cette suite est ainsi construite :
(
p i +1 = p i + ¢t p i (k ° hp i ),
p 0 donné,
© G. Faccanoni 133
4. Équations différentielles ordinaires Dimanche 29 septembre 2013
1
E= y (m+1) (ª)h m+1 pour x < ª < x + h,
(m + 1)!
1 00 1 1
y(h) ' y(0) + y 0 (0)h + y (0)h 2 + y 000 (0)h 3 + y I V (0)h 4 .
2! 3! 4!
En dérivant l’EDO on trouve
y(0) = 1,
0 2
y (x) = °4y(x) + x , y 0 (0) = °4,
y 00 (x) = °4y 0 (x) + 2x, y 00 (0) = 16,
y 000 (x) = °4y 00 (x) + 2, y 000 (0) = °62,
y I V (x) = °4y 000 (x), y I V (0) = 248.
°4 16 °62 248
y(0.1) ' 1 + + + + = 0.6707
10 200 6000 240000
et comme
° ¢ ° ° ¢ ¢ ° ° ° ¢ ¢ ¢
y I V (x + h) = °4y 000 (x) = °4 °4y 00 (x) + 2 = °4 °4y 0 (x) + 2x + 2 = °4 °4 °4y(x) + x 2 + 2x + 2
° ° ° ¢ ¢ ¢
alors y I V (0.1) ' °4 °4 °4 £ 0.6707 + (0.1)2 + 0.2 + 2 = 166.259 et on obtient l’estimation de l’erreur
248 ° I V ¢ 248
E' y (0.1) ° y I V (0) = (166.259 ° 248) = °0.000068.
960000 960000
134 © G. Faccanoni
5. Systèmes linéaires
Résoudre l’ensemble d’équations linéaires Ax = b
? Les COEFFICIENTS a i j et les SECONDES MEMBRES b i sont des éléments donnés de R. Les INCONNUES x 1 , x 2 , . . . , x p sont
à chercher dans R.
? Le SYSTÈME HOMOGÈNE associé à (S) est le système obtenu en remplaçant les b i par 0.
? Une SOLUTION de (S) est un p-uplet (x 1 , x 2 , . . . , x p ) qui vérifie simultanément les n équations de (S). Résoudre (S)
signifie chercher toutes les solutions.
? Un système est IMPOSSIBLE, ou incompatible, s’il n’admet pas de solution. Un système est POSSIBLE, ou compatible,
s’il admet une ou plusieurs solutions.
? Deux systèmes sont ÉQUIVALENTS s’ils admettent les mêmes solutions.
Écriture matricielle
Si on note
0 1 0 1 0 1
x1 b1 a 11 ... a 1p
B . C B . C B .. .. C
x = @ .. A b = @ .. A A=@ . . A
xp bn a n1 ... a np
Dans ce chapitre, nous ne traiterons que des systèmes linéaires carrés d’ordre n à coefficients réels, autrement dit A =
(a i , j ) 2 Rn£n et b = (b i ) 2 Rn . Dans ce cas, on est assuré de l’existence et de l’unicité de la solution si une des conditions
équivalentes suivantes est remplie :
1. A est inversible (i.e. det(A) 6= 0) ;
2. le système homogène Ax = 0 admet seulement la solution nulle.
La solution du système peut alors être calculée par la formule de C RAMER. Cependant cette formule est d’une utilité pra-
tique limitée à cause du calcul des déterminants qui est très couteux. Pour cette raison, des méthodes numériques alter-
natives aux formules de C RAMER ont été développées. Elles sont dites directes si elles fournissent la solution du système
en un nombre fini d’étapes, itératives si elles nécessitent (théoriquement) un nombre infini d’étapes. Notons dès à présent
que le choix entre une méthode directe et une méthode itérative pour la résolution d’un système dépend non seulement
de l’efficacité théorique des algorithmes, mais aussi du type de matrice, des capacités de stockage en mémoire et enfin de
l’architecture de l’ordinateur.
135
5. Systèmes linéaires Dimanche 29 septembre 2013
où k·k est une norme matricielle subordonnée. En général, K (A) dépend du choix de la norme ; ceci est signalé en intro-
duisant un indice dans la notation. Par exemple, on a les deux normes matricielles suivantes :
n
X n
X
kAk1 = max |a i j |, kAk1 = max |a i j |.
j =1,...,n i =1 i =1,...,n j =1
Considérons un système non singulier Ax = b. Si ±b est une perturbation de b et si on résout Ay = b + ±b, on obtient
par linéarité y = x + ±x avec A±x = ±b. La question est de savoir s’il est possible de majorer l’erreur relative k±xk/kxk sur la
solution du système en fonction de l’erreur relative k±bk/kbk commise sur le second membre. Il est possible de démontrer
que
k±xk k±bk
∑ K (A)
kxk kbk
où K (A) est le nombre de conditionnement de la matrice A. On voit alors que plus le conditionnement de la matrice est
grand, plus la solution du système linéaire est sensible aux perturbations des données. Cependant, le fait qu’un système
linéaire soit bien conditionné n’implique pas nécessairement que sa solution soit calculée avec précision. Il faut en plus
utiliser des algorithmes stables. Inversement, le fait d’avoir une matrice avec un grand conditionnement n’empêche pas
nécessairement le système global d’être bien conditionné pour des choix particuliers du second membre.
Si k±bk/kbk est de l’ordre de la précision relative ¥ = 10°p du calculateur, alors k±xk/kxk pourrait, au pire, être égal à
Si on calcul la solution du système linéaire avec un ordinateur à p chiffres significatifs en valeur décimale, on ne pourra pas
garantir à priori plus de
E (p ° log10 (K (A)))
chiffres significatifs sur la solution. Si on applique cette règle au système linéaire de l’exemple, il est facile de vérifier que
K (A) ' 107 , par conséquent nous pouvons perdre jusqu’à 7 chiffres significatifs lors de sa résolution. Il faut donc un ordi-
nateur calculant avec 10 chiffres significatifs pour être sûr d’obtenir les 3 premiers chiffres de la solution.
Exemple
Un exemple bien connu de matrice mal conditionnée est la matrice de H ILBERT d’ordre n définie par a i j = 1/(i + j °1) pour 1 ∑ i , j ∑ n.
Attention
Un système linéaire ne change pas de solution si on change l’ordre des équations. Cependant, l’ordre des équations peut
changer totalement la solution donnée par une méthode numérique !
136 © G. Faccanoni
Dimanche 29 septembre 2013 5. Systèmes linéaires
Propriété
Le déterminant d’une matrice triangulaire est égal au produit des éléments diagonaux.
La méthode du pivot de G AUSS transforme le système Ax = b en un système équivalent (c’est-à-dire ayant la même
solution) de la forme Ux = y, où U est une matrice triangulaire supérieure et y est un second membre convenablement
modifié. Enfin on résout le système triangulaire Ux = y.
Définition Méthode du pivot de G AUSS
Soit A = (a i j ) 1∑i ∑n la matrice des coefficients du système Ax = b.
1∑ j ∑p
Étape k : en permutant éventuellement deux lignes du système, on peut supposer a kk 6= 0 (appelé pivot de l’étape k). On
transforme toutes les lignes L i avec i > k comme suit :
ik
`
=
ai k
Li √ Li ° Lk .
a kk
Exemple
Soit le système linéaire
8
x +2x 2 +3x 3 +4x 4 = 1,
> 1
>
<
2x 1 +3x 2 +4x 3 +x 4 = 2,
>3x +4x 2 +x 3 +2x 4 = 3,
: 1
>
4x 1 +x 2 +2x 3 +3x 4 = 4.
1. Résolution par la méthode du pivot de G AUSS :
8 8
> x 1 +2x 2 +3x 3 +4x 4 = 1 LL 2 √L 2 °2L 1
>x 1 +2x 2 +3x 3 +4x 4 = 1
>
< 3 √L 3 °3L 1 >
<
2x 1 +3x 2 +4x 3 +x 4 = 2 L 4 √L 4 °4L 1 °x 2 °2x 3 °7x 4 = 0
°°°°°°°°°!
>
> 3x 1 +4x 2 +x 3 +2x 4 = 3 >
> °2x 2 °8x 3 °10x 4 = 0
: :
4x 1 +x 2 +2x 3 +3x 4 = 4 °7x 2 °10x 3 °13x 4 = 0
8 8
x +2x 2 +3x 3 +4x 4 = 1 x 1 +2x 2 +3x 3 +4x 4 = 1
> 1
L 3 √L 3 °2L 2 >
<
>
>
<
L 4 √L 4 °7L 2 °x 2 °2x 3 °7x 4 = 0 L 4 √L 4 +L 3 °x 2 °2x 3 °7x 4 = 0
°°°°°°°°°! °°°°°°°°!
>
> °4x 3 +4x 4 = 0 >
> °4x 3 +4x 4 = 0
: :
4x 3 +36x 4 = 0 40x 4 = 0
donc x 4 = 0, x 3 = 0, x 2 = 0 et x 1 = 1.
2. Résolution par la méthode du pivot de G AUSS en écriture matricielle :
0 1 L 2 √L 2 °2L 1 0 1
1 2 3 4 1 L 3 √L 3 °3L 1
1 2 3 4 1
B 2 3 4 1 2 C B 0 °1 °2 °7 0 C
B
[A|b] = @ C °L°4°√L 4 °4L 1
°°°°°°! B C
3 4 1 2 3 A @ 0 °2 °8 °10 0 A
4 1 2 3 4 0 °7 °10 °13 0
© G. Faccanoni 137
5. Systèmes linéaires Dimanche 29 septembre 2013
0 1 0 1
L 3 √L 3 °2L 2
1 2 3 4 1 1 2 3 4 1
L 4 √L 4 °7L 2 B
B 0 °1 °2 °7 0 C L 4 √L 4 +L 3 B
C 0 °1 °2 °7 0 C
°°°°°°°°°! @ °°°°°°°°! B C
0 0 °4 4 0 A @ 0 0 °4 4 0 A
0 0 4 36 0 0 0 0 40 0
donc x 4 = 0, x 3 = 0, x 2 = 0 et x 1 = 1.
Si on a plusieurs systèmes dont seul le second membre change, il peut être utile de factoriser une fois pour toute la
matrice A et résoudre ensuite des systèmes triangulaires.
Algorithme de factorisation LU sans pivot
Soit le système linéaire Ax = b.
Factorisation On commence par factoriser la matrice A 2 Rn£n sous la forme d’un produit de deux matrices A = LU.
Les termes non nuls de U et les termes non nuls en-dessous de la diagonale principale de L sont mémorisés encore
dans la matrice A et sont ainsi calculées :
for k = 1 to n ° 1 do
for i = k + 1 to n do
ai k
ai k √ {Il s’agit de `i k mémorisé dans a i k }
a kk
for j = k + 1 to n do
ai j √ ai j ° ai k ak j {Il s’agit de u i j mémorisé dans a i j }
end for
end for
end for
Résolution Résoudre le système linéaire revient maintenant à résoudre successivement
1. le système triangulaire inférieur Ly = b : les éléments non nuls de la matrice triangulaire inférieure L sont
donné par `i j = a i j pour i = 1, . . . , n et j = 1, . . . , i ° 1 et `i i = 1 pour tout i = 1, . . . , n, donc l’algorithme
s’écrit
y 1 √ b1
for i = 2 to n do
si √ 0
for j = 1 to i ° 1 do
si √ si + ai j y j
end for
y i √ bi ° si
end for
2. le système triangulaire supérieure Ux = y : les éléments non nuls de la matrice triangulaire supérieure U sont
donné par u i j = a i j pour i = 1, . . . , n et j = i , . . . , n, donc l’algorithme s’écrit
yn
xn √
a nn
for i = n ° 1 to 1 by °1 do
si √ 0
for j = 1 to i ° 1 do
si √ si + ai j y j
end for
y i ° si
xi √
ai i
end for
Attention
Pour une matrice quelconque A 2 Rn£n , la factorisation LU existe et est unique si et seulement si les sous-matrices
principales Ai de A d’ordre i = 1, . . . , n ° 1 (celles que l’on obtient en restreignant A à ses i premières lignes et colonnes)
ne sont pas singulières (autrement dit si les mineurs principaux, i.e. les déterminants des sous-matrices principales, sont
non nuls).
On peut identifier des classes de matrices particulières pour lesquelles les hypothèses de cette proposition sont satis-
faites :
Proposition
Si la matrice A 2 Rn£n est symétrique et définie positive ou si est à diagonale dominante a alors la factorisation LU existe
et est unique.
a. A 2 Rn£n est
? symétrique si a i j = a j i pour tout i , j = 1, . . . , n,
? définie positive si pour tout vecteurs x 2 Rn avec x 6= 0, xT Ax > 0,
138 © G. Faccanoni
Dimanche 29 septembre 2013 5. Systèmes linéaires
Pn
? à diagonale dominante par lignes si |a i i | ∏ |a |, pour i = 1, . . . , n (à diagonale dominante stricte par lignes si l’inégalité est stricte),
j =1 i j
j 6=i
P
? à diagonale dominante par colonnes si |a i i | ∏ nj=1 |a j i |, pour i = 1, . . . , n (à diagonale dominante stricte par colonnes si l’inégalité est stricte),
j 6=i
Une technique qui permet d’effectuer la factorisation LU pour toute matrice A inversible, même quand les hypothèses de
cette proposition ne sont pas vérifiées, est la méthode du pivot par ligne : il suffit d’effectuer une permutation convenable
des lignes de la matrice originale A à chaque étape k où un terme diagonal a kk s’annule.
Définition Algorithme de G AUSS avec pivot
(k)
Dans la méthode d’élimination de G AUSS les pivot a kk doivent être différents de zéro. Si la matrice est inversible mais un
pivot est zéro (ou numériquement proche de zéro), on peut permuter deux lignes avant de poursuivre la factorisation.
Concrètement, à chaque étape on cherche à avoir le pivot de valeur absolue la plus grande possible. L’algorithme modifié
s’écrit alors
for k = 1 to n ° 1 do
for i = k + 1 to n do
Chercher r¯ tel que |a r(k)
¯k
| = maxr =k,...,n |a r(k)
k
| et échanger la ligne k avec la ligne r¯
a i(k)
k
`i k √ (k)
a kk
for j = k + 1 to n do
a i(k+1)
j
√ a i(k)
j
° `(k) a (k)
ik k j
end for
end for
end for
Une fois calculées les matrices L et U et la matrice des permutations P (i.e. la matrice telle que PA = LU), résoudre
le système linéaire consiste simplement à résoudre successivement le système triangulaire inférieur Ly = Pb puis le
système triangulaire supérieure Ux = y.
Propriété Déterminant Qn
La factorisation LU permet de calculer le déterminant de A en O(n 3 ) car det(A) = det(L) det(U) = k=1
u kk .
Axi = ei , pour i = 1, . . . , n.
En supposant que PA = LU, où P est la matrice de changement de pivot partiel, on doit résoudre 2n systèmes triangu-
laires de la forme
Lyi = Pei , Uxi = yi , pour i = 1, . . . , n.
c’est-à-dire une suite de systèmes linéaires ayant la même matrice mais des seconds membres différents.
Exemple
Soit les systèmes linéaires
0 10 1 0 1 0 10 1 0 1
1 2 3 4 x1 1 1 2 3 4 x1 10
B2 3 4 1C Bx 2 C B2C B2 3 4 1C Bx 2 C B10C
B CB C = B C et B CB C = B C.
@3 4 1 2A @x 3 A @3A @3 4 1 2A @x 3 A @10A
4 1 2 3 x4 4 4 1 2 3 x4 10
2. Factoriser la matrice A (sans utiliser la technique du pivot) et résoudre les systèmes linéaires.
3. Calculer le déterminant de A.
4. Calculer A°1 .
0 1 L 2 √L 2 °2L 1 0 1 0 1
1 2 3 4 1 L 3 √L 3 °3L 1
1 2 3 4 1 L 3 √L 3 °2L 2
1 2 3 4 1
B 2 3 4 1 2 C B 0 °1 °2 °7 0 C B 0 °1 °2 °7 0 C
B
[A|b] = @ C °L°4°√L 4 °4L 1
°°°°°°! B C °L°4°√L 4 °7L 2
°°°°°°! B C
3 4 1 2 3 A @ 0 °2 °8 °10 0 A @ 0 0 °4 4 0 A
4 1 2 3 4 0 °7 °10 °13 0 0 0 4 36 0
© G. Faccanoni 139
5. Systèmes linéaires Dimanche 29 septembre 2013
0 1
1 2 3 4 1
L 4 √L 4 +L 3 B 0 °1 °2 °7 0 C
°°°°°°°°! B @ 0
C
0 °4 4 0 A
0 0 0 40 0
donc
x 4 = 0, x 3 = 0, x 2 = 0, x 1 = 1.
donc 8
>
> x 1 + 2x 2 + 3x 3 + 4x 4 = 10
>
>
<°x ° 2x ° 7x = °10
2 3 4
=) x 4 = 1, x 3 = 1, x 2 = 1, x 1 = 1.
>°4x 3 + 4x 4 = 0
>
>
>
:
40x 4 = 40
2. Factorisation de la matrice A :
0 1 0 1 0 1 0 1
1 2 3 4 LL 2 √L 2 °2L 1 1 2 3 4 L 3 √L 3 °2L 2
1 2 3 4 1 2 3 4
3 √L 3 °3L 1
B2 3 4 1C L B2 °1 °2 °7 C B2 °1 °2 °7C L B2 °1 °2 °7C
B √L
C °°4°°°° 4 °4L 1
°°°! B C °L°4°√L 4 °7L 2
°°°°°°! B √L
C °°4°°°°
4 +L 3
°°! B C
@3 4 1 2A @3 °2 °8 °10A @3 2 °4 4A @3 2 °4 4A
4 1 2 3 4 °7 °10 °13 4 7 4 36 4 7 °1 40
donc
0 1 0 1
1 0 0 0 1 2 3 4
B2 1 0 0C B0 °1 °2 °7C
L=B
@3
C U=B C
2 1 0A @0 0 °4 4A
4 7 °1 1 0 0 0 40
et Ux = y
0 10 1 0 1
1 2 3 4 x1 1
B0 °1 °2 °7C Bx 2 C B0C
B CB C = B C =) x 4 = 0, x 3 = 0, x 2 = 0, x 1 = 1.
@0 0 °4 4 A @x 3 A @0A
0 0 0 40 x 4 0
et Ux = y
0 10 1 0 1
1 2 3 4 x1 10
B0 °1 °2 °7C Bx 2 C B°10C
C B C B
B = C =) x 4 = 1, x 3 = 1, x 2 = 1, x 1 = 1.
@0 0 °4 4 A @x 3 A @ 0 A
0 0 0 40 x4 40
140 © G. Faccanoni
Dimanche 29 septembre 2013 5. Systèmes linéaires
et finalement 0°9 1 0 1
/40 1
/40 /40
1 11
/40 °9 1 1 11
B1
°1 B /40
1
/40 11
/40 °9
/40CC 1 B1 1 11 °9C
A =@ 1 = B C.
/40 11
/40 °9
/40 1
/40 A 40 @ 11 11 °9 1A
11
/40 °9
/40 1
/40 1
/40 11 °9 1 1
n
P
bi ° a i j x kj
j =1
j 6=i
x ik+1 = , i = 1, . . . , n
ai i
0 1 0 1
B x 1(k) C B x 1(k+1) C
B C B C
B C B C
B x 2(k) C B x 2(k+1) C
B C B C
B C B C
B .. C B .. C
B . C B . C
B C B C
B C B C
B
B x i(k)
°1
C
C
B
B x i(k+1)
°1
C
C
x(k) = B
B
C
C x(k+1) = B
B
C
C
B x i(k) C B x i(k+1) C
B C B C
B C B C
B
B x i(k)
+1
C
C
B
B x i(k+1)
+1
C
C
B C B C
B .. C B .. C
B . C B . C
B C B C
@ A @ A
x n(k) x n(k+1)
Proposition
Si la matrice A est à diagonale dominante stricte, la méthode de J ACOBI converge.
© G. Faccanoni 141
5. Systèmes linéaires Dimanche 29 septembre 2013
La méthode de G AUSS -S IDEL est une amélioration de la méthode de J ACOBI dans laquelle les valeurs calculées sont
utilisées au fur et à mesure du calcul et non à l’issue d’une itération comme dans la méthode de J ACOBI.
Définition Méthode de G AUSS -S IDEL
Soit x0 = (x 10 , x 20 , . . . , x n0 ) un vecteur donné. La méthode de G AUSS -S IDEL définit la composante x ik+1 du vecteur xk+1 à
partir des composantes x k+1 j
du vecteur xk+1 pour j < i et des composantes x kj du vecteur xk pour j ∏ i de la manière
suivante :
iP
°1 n
P
bi ° a i j x k+1
j
° a i j x kj
j =1 j =i +1
x ik+1 = , i = 1, . . . , n
ai i
0 1 0 1
B x 1(k) C B x 1(k+1) C
B C B C
B C B C
B x 2(k) C B x 2(k+1) C
B C B C
B C B C
B .. C B .. C
B . C B . C
B C B C
B C B C
B
B x i(k)
°1
C
C
B
B x i(k+1)
°1
C
C
(k) (k+1)
x = BB
C
C x = B
B
C
C
B x i(k) C B x i(k+1) C
B C B C
B C B C
B
B x i(k)
+1
C
C
B
B x i(k+1)
+1
C
C
B C B C
B .. C B .. C
B . C B . C
B C B C
@ A @ A
x n(k) x n(k+1)
Proposition
Si la matrice A est à diagonale dominante stricte ou si elle est symétrique et définie positive, la méthode de G AUSS -S EIDEL
converge.
Algorithmes
Ces algorithmes tentent de résoudre le système d’équations linéaires Ax = b d’inconnue x. La matrice A, de taille n £ n,
doit être inversible et le second membre b doit être de longueur n. Les itérations s’arrêtent quand le rapport entre la
norme du k-ème residu est inférieure ou égale à TOLL, le nombre d’itérations effectuées est alors renvoyé dans iter.
MaxITER est le nombre maximum d’itérations.
Il n’y a pas de résultat général établissant que la méthode de G AUSS -S EIDEL converge toujours plus vite que celle de
J ACOBI. On peut cependant l’affirmer dans certains cas, comme le montre la proposition suivante
Proposition
Soit A une matrice tridiagonale de taille n £ n inversible dont les coefficients diagonaux sont tous non nuls. Alors les
méthodes de J ACOBI et de G AUSS -S EIDEL sont soit toutes les deux convergentes soit toutes les deux divergentes. En cas
142 © G. Faccanoni
Dimanche 29 septembre 2013 5. Systèmes linéaires
de convergence, la méthode de G AUSS -S EIDEL est plus rapide que celle de J ACOBI.
Exemple
Considérons le système linéaire
0 10 1 0 1
4 2 1 x 4
@°1 2 0A @ y A = @2A
2 1 4 z 9
mis sous la forme 8 y z
<x = 1 ° 2 ° 4 ,
>
x
y = 1+ 2 ,
>
: y
z = 94 ° x2 ° 4 .
© G. Faccanoni 143
5. Systèmes linéaires Dimanche 29 septembre 2013
1. Approcher la solution avec la méthode de J ACOBI avec 3 itérations à partir de x(0) = (2, 2, 2).
2. Approcher la solution avec la méthode de G AUSS -S EIDEL avec 3 itérations à partir de x(0) = (2, 2, 2).
3. Résoudre les systèmes linéaires par la méthode d’élimination de G AUSS.
4. Factoriser la matrice A (sans utiliser la technique du pivot) et résoudre les systèmes linéaires.
C ORRECTION DE L’ EXERCICE 5.1.
1. Méthode de J ACOBI :
0 1 0 12°(1£(°1)+1£0) 1 0 12°(1£ °2 +1£ 10 ) 1
0 1 12°(1£2+1£2) 04 1 0 13 1 3 9 0 52 1
2 6 /3 B 0°(2£ 4 +0£0) C 6 /6 B 6 C /27
(0) (1) B 0°(2£2+0£2) C @ A (2) (3) 0°(2£ 13 10
6 +0£ 9 )
x = @2 A , x =@ 4 A = °1 , x =B @
3
4
C = @°2/3A ,
A x =B
@
C = @°13/12A
A
6°(1£2+2£2) 4
2 0 6°(1£ 43 +2£(°1)) 10
/9 6°(1£ 13 °2 31
/36
6 6 +2£ 3 )
6 6
ainsi 0 1
1.926
x º @°1.083A .
0.861
2. Méthode de G AUSS -S EIDEL :
0 12°(1£2+1£2) 1 0
12°(1£ °2
1 0 12°(1£ 35 +1£ °35 ) 1
0 1 04 1 3 +1£1) 0 35 1 18 36 0 431 1
2 B 0°(2£ 64 +0£2) C /3 6
B 0°(2£ 35 +0£1) C /18 B 6 C /216
(0) (1) B C 2A (2) B C (3) 0°(2£ 431
216 +0£1)
x = @ 2 A , x =@ 3
4
@
A = °3 , x =@ 18
A=
@ °35
/36A , x =B
@
C = @°431/432A
A
4 4
2 6°(1£ 43 +2£ °2
3 ) 1 35 °35
6°(1£ 18 +2£ 36 ) 1 431 °431
6°(1£ 216 +2£ 432 ) 1
6 6 6
ainsi 0 1
1.995
x º @°0.995A .
1
3. Méthode d’élimination de G AUSS :
0 1 L 2 √L 2 ° 26 L 1 0 1 11 0 1
6 1 1 12 6 1 1 12 6 L
L 3 √L 3 ° 11 2 6 1 1 12
L 3 √L 3 ° 16 L 1 11
° 13 11
° 13
3
(A|b) = @ 2 4 0 0 A °°°°°°°°! @ 0 3 °4 A °°°°°°°°°°! @ 0 3 °4 A
11 35
1 2 6 6 0 6 6 4 0 0 6 6
donc 8
<6x 1 + x 2 + x 3 = 12,
>
11 1
3 x 2 ° 3 x 3 = °4
=) x 3 = 1, x 2 = °1, x 1 = 2.
>
:
6x 3 = 6
4. Factorisation de la matrice A :
0 1
0 1 L 2 √L 2 ° 26 L 1 0 1 11
6 1 1 6 1 1 L 3 √L 3 ° 116 L 2 B 62 1 1
L 3 √L 3 ° 16 L 1 11
° 13 C
0A °°°°°°°°! @ 26 11
° 13 A °°°°°°°°°°! B
@2 3 C
4 3 @6 3
11 A
1 11 35 1
1 2 6 6 6 6 6
6
11 6
3
donc
0 1 0 1
1 0 0 6 1 1
L = @ 13 1 0A U = @0 11
3 °31A
1 1
6 2 1 0 0 6
144 © G. Faccanoni
Dimanche 29 septembre 2013 5. Systèmes linéaires
et Ux = y
0 10 1 0 1
6 1 1 x1 1
11
@0
3 ° 13 A @x 2 A = @°4A =) x 3 = 1, x 2 = °1, x 1 = 2.
0 0 6 x3 6
Exercice 5.2
Soit A une matrice, A 2 Mn,n (R).
1. Rappeler les conditions nécessaires et suffisantes pour l’existence d’une factorisation LU de la matrice A et préciser
les définitions de L et U.
2. On suppose L et U construites (i.e. on dispose de tous les coefficients `i , j et u i , j de L et U), écrire l’algorithme de
résolution de Ax = b, avec b 2 Mn,1 (R) donné.
3. Soit la matrice A suivante : 0 1
3 °1 °1
@°1 3 °1A .
°1 °1 3
Construire à la main les matrices L et U de la factorisation LU.
3. Factorisation :
0 1 L 2 √L 2 ° °1
3 L1
0 1 0 1
3 °1 °1 3 °1 °1 L √L ° ° / L 3 4 °1 °1
L 3 √L 3 ° °1
3 L1 3 3 / 2 8
3
Exercice 5.3
Calculer, lorsqu’il est possible, la factorisation LU des matrices suivantes :
0 1 0 1
1 2 3 1 2 3
A = @2 4 5A , B = @7 8 9A .
7 8 9 2 4 5
Comment peut-on modifier l’algorithme de factorisation pour pouvoir toujours aboutir à une factorisation LU lorsque
la matrice est inversible ?
© G. Faccanoni 145
5. Systèmes linéaires Dimanche 29 septembre 2013
C ORRECTION DE L’ EXERCICE 5.3. Pour une matrice quelconque A 2 Mn,n (R), la factorisation LU (sans pivot) existe et est
unique ssi les sous-matrices principales Ai de A d’ordre i = 1, . . . , n ° 1 (celles que l’on obtient en restreignant A à ses i
premières lignes et colonnes) ne sont pas singulières (autrement dit si les mineurs principaux, i.e. les déterminants des
sous-matrices principales, sont non nuls).
Matrice A : comme det(A) 6= 0, la matrice A est bien inversible. Puisque det(A1 ) = a 11 = 1 6= 0 mais det(A2 ) = a 11 a 22 °
a12a 21 = 0, on ne peut pas factoriser A sans utiliser la technique du pivot. En effet,
0 1 L 2 √L 2 ° 12 L 1 0 1
1 2 3 1 2 3
L 3 √L 3 ° 71 L 1
A = @2 4 5A °°°°°°°°! @0 0 °1 A
7 8 9 0 °6 °12
La factorisation LU ne peut pas être calculée car à la prochaine étape il faudrait effectuer le changement L 3 √ L 3 ° °6
0 L2.
Matrice B :
0 1 L 2 √L 2 ° 71 L 1 0 1
1 2 3 1 2 3
L 3 √L 3 ° 21 L 1
A2 = @7 8 9A °°°°°°°°! @0 °6 °12A
2 4 5 0 0 °1
Lorsqu’un pivot est nul, la méthode de G AUSS pour calculer la factorisation LU de la matrice A n’est plus applicable. De
plus, si le pivot n’est pas nul mais très petit, l’algorithme conduit à des erreurs d’arrondi importantes. C’est pourquoi des
algorithmes qui échangent les éléments de façon à avoir le pivot le plus grand possible ont été développés. Les programmes
optimisés intervertissent les lignes à chaque étape de façon à placer en pivot le terme de coefficient le plus élevé : c’est la
méthode du pivot partiel. Pour la matrice A cela aurait donné
0 1 0 1 L 2 √L 2 ° 71 L 1 0 1
1 2 3 1 2 3 1 2 3
L 2 $L 3 L 3 √L 3 ° 21 L 1
@
A= 2 4 5A °°°°°! @7 8 9A °°°°°°°°! @0 °6 °12A .
7 8 9 2 4 5 0 0 °1
Bien évidemment, il faut garder trace de cet échange de lignes pour qu’il puisse être répercuté sur le terme source et sur
l’inconnue lors de la résolution du système linéaire ; ceci est réalisé en introduisant une nouvelle matrice P, dite matrice
pivotale, telle que PA = LU : la résolution du système linéaire Ax = b est donc ramené à la résolution des deux systèmes
triangulaires Ly = Pb et Ux = y. Dans notre exemple cela donne
0 1
1 0 0
P = @0 0 1A
0 1 0
Exercice 5.4
Soit Æ un paramètre réel et soient les matrices AÆ , P et le vecteur b définis par
0 1 0 1 0 1
2 4 1 1 0 0 0
AÆ = @Æ °2 °1A , P = @0 0 1A , b = @°3/2A .
2 3 2 0 1 0 °1
146 © G. Faccanoni
Dimanche 29 septembre 2013 5. Systèmes linéaires
Par conséquent, la matrice AÆ admet une décomposition LU (sans pivot) si et seulement si Æ 6= °1.
3. Si Æ = °1 la matrice AÆ n’admet pas de décomposition LU sans pivot. La matrice P échange les lignes 2 et 3 de la
matrice A et on obtient la matrice
0 10 1 0 1
1 0 0 2 4 1 2 4 1
PA°1 = @0 0 1A @°1 °2 °1A = @ 2 3 2 A.
0 1 0 2 3 2 °1 °2 °1
4. Pour résoudre le système linéaire Mx = Pb il suffit de résoudre les deux systèmes triangulaires suivantes :
? Ly = Pb :
3 1 3
y 1 = 0, y 2 = °1 ° y 1 = °1, y3 = ° + y1 = ° ;
2 2 2
? Ux = y :
°3 19
x3 = (°2) = 3, x 2 = (°1 ° x 3 )/(°1) = 4, x 1 = (0 ° x 2 ° 4x 3 )/2 = ° .
2 2
Exercice 5.5
Considérons les deux matrices carrées d’ordre n > 3 :
0 1 0 1
Æ 0 0 0 ... Ø Ø 0 ... ... 0 0 Æ
B0 Æ 0 0 0 . .. ØC BØ 0 0 0 Æ 0C
B C B C
B .. C B. C
B .. C B. .. C
B0 0 Æ 0 . .C B. 0 . 0C
B C B C
B . .. . .. C B .. .. C
A=B 0 ... ØC B=B . ... .C
B C B C
B. . .. C B. C
B. . . C B. C
B. . 0 ØC B. 0 Æ 0 0 0C
B C B C
@0 0 0 Æ ØA @Ø Æ 0 0 Æ 0A
Ø Ø ... Ø Ø Æ Æ Ø Ø ... Ø Ø
avec Æ et Ø réels non nuls.
1. Vérifier que la factorisation LU de la matrice B ne peut pas être calculée sans utiliser la technique du pivot.
2. Calculer analytiquement le nombre d’opérations nécessaires pour calculer la factorisation LU de la matrice A.
© G. Faccanoni 147
5. Systèmes linéaires Dimanche 29 septembre 2013
3. Exprimer le déterminant de la matrice A sous forme récursive en fonction des coefficients de la matrice et de sa
dimension n.
4. Sous quelles conditions sur Æ et Ø la matrice A est définie positive ? Dans ce cas, exprimer le conditionnement de
la matrice en fonction des coefficients et de la dimension n.
0 1 L 2 √L 2 °L 1 0 1
Ø 0 0 Æ L 3 √L 3 °L 1 Ø 0 0 Æ
Æ B C
B Ø 0 Æ 0C L 4 √L °
4 Ø 1L
B0 0 Æ °Æ C
B(1) = B
@Ø
C °°°°°°°° °! B(2) = B C.
Æ 0 0A @0 Æ 0 °Æ A
2
Æ Ø Ø Ø 0 Ø Ø Ø ° ÆØ
2. La matrice A est une matrice «en flèche» : pour en calculer la factorisation LU il suffit de transformer la dernière
ligne, ce qui requiert le calcul de l’unique multiplicateur `nk = Ø/Æ et l’exécution de n ° 1 produits et sommes. Le
coût globale est donc de l’ordre de n.
3. Le déterminant ±n de la matrice A de dimension n coïncide avec le déterminant de la matrice U. Comme u i i = Æ
pour tout i < n et u nn = Æ ° (n ° 1)Ø2 /Æ, on conclut que
µ ∂
n
Y n°1
Y Ø2 n°1
±n = u i i = u nn · u i i = Æ ° (n ° 1) Æ = Æn ° (n ° 1)Æn°2 Ø2 .
i =1 i =1 Æ
4. Les valeurs propres de la matrice A sont les racines du déterminant de la matrice A ° ∏I. Suivant le même raisonne-
ment du point précédant, ce déterminant s’écrit
Exercice 5.6
Donner une condition suffisante sur le coefficient Æ pour avoir convergence des méthodes de J ACOBI et G AUSS -S EIDEL
pour la résolution d’un système linéaire associé à la matrice
0 1
Æ 0 1
A = @0 Æ 0A
1 0 Æ
C ORRECTION DE L’ EXERCICE 5.6. Une condition suffisante pour la convergence des méthodes de J ACOBI et de G AUSS -
P
S EIDEL est que A est à diagonale strictement dominante, i.e. 3i =1 |a i j | < |a i i | pour j = 1, 2, 3. La matrice A vérifie cette
i 6= j
condition si et seulement si |Æ| > 1.
148 © G. Faccanoni
Dimanche 29 septembre 2013 5. Systèmes linéaires
Exercice 5.7
Considérons le système linéaire Ax = b avec
0 1
Æ 0 ∞
A = @0 Æ ØA
0 ± Æ
avec Æ, Ø, ∞ et ± des paramètres réels. Donner des conditions suffisantes sur les coefficients pour avoir
1. convergence de la méthode de J ACOBI
2. convergence de la méthode de G AUSS-S EIDEL.
∏1 = Æ, ∏2 = Æ ° Ø, ∏3 = Æ + Ø,
Exercice 5.8
Écrire les formules de la méthode d’élimination de G AUSS pour une matrice de la forme
0 1
a 1,1 a 1,2 0 ... 0
B .. C
B C
B a 2,1 a 2,2 a 2,3 0 . C
B C
B .. .. .. .. .. C
B . . . . . C
A=B B .
C.
C
B .. .. ..
B . . 0 C C
B . C
B . C
@ . a n°1,n°1 a n°1,n A
a n,1 a n,2 . . . a n,n°1 a n,n
Quelle est la forme finale de la matrice U = A(n) ? Étant donné la forme particulière de la matrice A, indiquer le nombre
minimal d’opérations nécessaire pour calculer U ainsi que celui pour la résolution des systèmes triangulaires finaux.
C ORRECTION DE L’ EXERCICE 5.8. Comme la matrice a une seule sur-diagonale non nulle, les formules de la méthode d’éli-
mination de G AUSS deviennent
a i(k+1)
j
= a i(k)
j
(k)
+ `i k a k, j
, i , j = k + 1,
a i(k)
k
`i k = (k)
, i = k + 1.
a kk
© G. Faccanoni 149
5. Systèmes linéaires Dimanche 29 septembre 2013
Exercice 5.9
Soit Æ 2 R§ et considérons les matrices carrées de dimension n
0 1 0 Ø ∞ ∞1
Æ 0 . . . °Æ °Æ ... °Æ
B .. .. C B Æ .. .. C
B . C B ∞ . C
B 0 . C B° . C
A=B C , B=B Æ C.
B .. C B .. Ø ∞C
@ . Æ °ÆA @ . ° A
Æ Æ
∞ ∞ ∞
°Æ . . . °Æ °Æ °Æ ... °Æ Æ
il faut que
8
<Ø + ∞ = 1
>
°Ø + (n ° 3)∞ = 0
>
:
(n ° 2)∞ = 1
ce qui donne
n °3 1
Ø= , ∞= .
n °2 n °2
2. On trouve immédiatement kAk1 = n|Æ| tandis que
1 n n o 2
kA°1 k1 = max n, = .
|Æ| n °2 |Æ|
2
K 1 (A) = n|Æ| = 2n.
|Æ|
Exercice 5.10
On suppose que le nombre réel " > 0 est assez petit pour que l’ordinateur arrondisse 1 + " en 1 et 1 + (1/") en 1/" (" est
plus petit que l’erreur machine (relative), par exemple, " = 2°30 en format 32 bits). Simuler la résolution par l’ordinateur
des deux systèmes suivants : ( (
"a + b = 1 2a + b = 0
et
2a + b = 0 "a + b = 1
On appliquera pour cela la méthode du pivot de G AUSS et on donnera les décompositions LU des deux matrices associées
à ces systèmes. On fournira également la solution exacte de ces systèmes. Commenter.
150 © G. Faccanoni
Dimanche 29 septembre 2013 5. Systèmes linéaires
e = b et Ux
Pour résoudre ce système linéaire approché on résout les systèmes triangulaires Ly e =y:
µ ∂µ
∂ µ ∂
1 0y1 1 2
2 = =) y 1 = 1, y2 = ° ;
" 1y2 0 "
µ ∂µ ∂ µ ∂
" 1 a 1
= 2 =) b = 1, a = 0.
0 ° 2" b °"
Second système : µ ∂µ ∂ µ ∂
2 1 a 0
= .
" 1 b 1
Factorisation LU :
µ ∂ µ ∂ µ ∂ µ ∂
2 1 L 2 √L 2 ° 2" L 1 2 1 1 0 2 1
°°°°°°°°! donc L= , U=
" 1 0 1 ° 2" "
2 1 0 1 ° 2"
e = b et Ux
Pour résoudre ce système linéaire approché on résout les systèmes triangulaires Ly e =y:
µ ∂µ ∂ µ ∂
1 0 y1 0
" = =) y 1 = 0, y 2 = 1;
2 1 y2 1
µ ∂µ ∂ µ ∂
2 1 a 0 " "
= =) b=° , a= .
0 ° 2" b 1 2 4
Exercice 5.11
Rappeler l’algorithme vu en cours pour calculer la décomposition LU d’une matrice A et la solution du système Ax = b
où le vecteur colonne b est donné. On appliquera ces algorithmes pour les cas suivants :
0 10 1 0 1 0 10 1 0 1
0 10 1 0 1 1 2 3 4 x1 1 1 1 1 1 x1 1
1 1 1 x1 1 B2
@2 B °5 7 1C B x 2 C B1 C
CB C = B C
B1
B °2 3 4C Bx 2 C B1C
CB C = B C
1 3A @x 2 A = @1A et @3 et
1 1 5 A @ x 3 A @1 A @1 4 6 8A @x 3 A @1A
°3 2 4 x3 1
2 2 0 3 x4 1 1 0 0 0 x4 1
© G. Faccanoni 151
5. Systèmes linéaires Dimanche 29 septembre 2013
152 © G. Faccanoni
Dimanche 29 septembre 2013 5. Systèmes linéaires
Exercice 5.12
Écrire les méthodes itératives de G AUSS, J ACOBI et G AUSS -S EIDEL pour les systèmes suivants :
( (
10a + b = 11 2a + 10b = 12
et
2a + 10b = 12 10a + b = 11.
Pour chacun de ces méthodes et systèmes, on illustrera les résultats théoriques de convergence/non-convergence en
calculant les 3 premières itérés en prenant comme point de départ le vecteur (a, b) = (0, 0).
? Second système :
µ ∂ µ ∂ ( (
2 10 12 L 2 √L 2 ° 10
2 L1 2 10 12 2a + 10b = 12 a =1
°°°°°°°°°! =) =)
10 1 11 0 °49 °49 °49b = °49 b = 1.
? Second système : ( (
12°10b
2a + 10b = 12 a= 2
()
10a + b = 11 b = 11 ° 10a
La méthode ne converge pas, en effet on a
µ ∂ µ 12°0 ∂ ∂ µ µ µ
12°10£11 ∂ ∂ µ 12°10£(°49) µ ∂ ∂
(0) 0 (1) 2
6 (2) 2
°49 (3) 2
251
x = , x = = , x = = , x = = .
0 11 ° 0 11 11 ° 10 £ 6 °49 11 ° 10 £ (°49) 501
? Second système : ( (
12°10b
2a + 10b = 12 a= 2
()
10a + b = 11 b = 11 ° 10a
La méthode ne converge pas, en effet on a
µ ∂ µ 12°0 ∂ µ ∂ µ 12°10£(°49) ∂ µ ∂ µ 12°10£(°2499) ∂ µ ∂
0 6 251 12501
x(0) = , x(1) = 2 = , x(2) = 2 = , x(3) = 2 = .
0 11 ° 10 £ 6 °49 11 ° 10 £ 251 °2499 11 ° 10 £ (12501) °124999
© G. Faccanoni 153
5. Systèmes linéaires Dimanche 29 septembre 2013
Exercice 5.13
Résoudre les systèmes linéaires suivants :
8 8 8
<x ° 5y ° 7z = 3
> <x ° 5y ° 7z = 6
> <x ° 5y ° 7z = 0
>
2x ° 13y ° 18z = 3 et 2x ° 13y ° 18z = 0 et 2x ° 13y ° 18z = 3
>
: >
: >
:
3x ° 27y ° 36z = 3 3x ° 27y ° 36z = °3 3x ° 27y ° 36z = 6.
On remarque que seul le terme source change. On calcul d’abord la décomposition LU de la matrice A :
0 1 0 1 0 1
1 °5 °7 L 2 √L 2 °2L 1 1 °5 °7 1 °5 °7
L 3 √L 3 °3L 1 L 3 √L 3 °4L 2
@2 °13 °18A °°°°°°°°! @0 °3 °4 A °°°°°°°°! @0 °3 °4A
3 °27 °36 0 °12 °15 0 0 1
donc
0 1 0 1
1 0 0 1 °5 °7
L = @2 1 0A U = @0 °3 °4A
3 4 1 0 0 1
Exercice 5.14
Soit A une matrice, A 2 Mn,n (R).
1. Rappeler la méthode de J ACOBI pour la résolution du système Ax = b, avec b 2 Mn,1 (R) donné.
154 © G. Faccanoni
Dimanche 29 septembre 2013 5. Systèmes linéaires
Exercice 5.15
Soit la matrice A 2 Rn£n , n ∏ 3, dont les éléments vérifient
? a i j = 1 si i = j ou i = n,
? a i j = °1 si i < j ,
? a i j = 0 sinon.
Calculer la factorisation LU de A.
C ORRECTION DE L’ EXERCICE 5.15. Factorisation LU de la matrice A :
0 1 0 1 0 1
1 °1 . . . . . . . . . °1 1 °1 . . . . . . . . . °1 1 °1 ... ... ... °1
B .. .. C B .. .. C B .. .. C
B0 1 . . C C B . C B . . C
B B0 1 . C B0 1 C
B. . . C B. . . C B .. C
B. .. . .. .. C 1
L √L n ° 1 L 1 B . .. . .. .. C L n √L n ° 1 L 2 B ..
2 .. .. C
B. 1 C °°n°°°° °°°! B B . 1 C B. . 1 . . C
B C C °°°°°°°°°! B C
B .. .. .. .. .. C B .. .. .. .. .. C B .. .. .. .. .. C
B.
B . . . . C
C
B.
B . . . . C C
B.
B . . . . C
C
@0 . . . . . . 0 1 °1 A @ 0 ... ... 0 1 °1 A @0 ... ... 0 1 °1A
1 1 1 ... 1 1 0 2 2 ... 2 2 0 0 4 ... 4 4
0 1
1 °1 . . . . . . . . . °1
B .. .. C
B0 1 . . C
B C
B .. C
L n √L n ° 2 1 L n°1 B .. .. ..
n°2
. . C
[. . . ] °°°°°°°°°°°°°! B . 1 . C.
B C
B .. .. .. .. .. C
B.
B . . . . CC
@0 . . . . . . 0 1 °1 A
0 0 0 . . . 0 2n°1
On obtient les matrices
0 1 0 1
1 0 ... ... ... 0 1 °1 ... ... ... °1
B .. .. C B .. .. C
B0 1 . .C B0 1 . . C
B C B C
B .. .. C B .. .. C
B . C B . C
L=B 0 0 1 .C et U=B0 0 1 . C.
B C B C
B .. .. .. .. .. .. C B .. .. .. .. .. C
B.
B . . . . .CC
B.
B . . . °1 . C
C
@0 0 ... 0 1 0A @0 0 ... 0 1 °1 A
1 2 4 ... 2n°2 1 0 0 0 ... 0 2n°1
© G. Faccanoni 155
5. Systèmes linéaires Dimanche 29 septembre 2013
c’est-à-dire
? `i i = 1 pour i = 1, . . . , n, ? u i j = a i j pour i=1,. . .,n-1, j=1,. . .,n,
? `i j = 0 si i < n et i 6= j , ? u n j = 0 si j < n,
? `n j = 2 j °1 si j < n ; ? u nn = 2n°1 .
Exercice 5.16
Considérons une matrice A 2 Rn£n (avec n ∏ 3) dont les éléments vérifient
? a i j = 1 si i = j ou j = n,
? a i j = °1 si i > j ,
? a i j = 0 sinon.
Calculer la factorisation LU de A.
i.e.
? `i i = 1 pour i = 1, . . . , n, , ? u i i = 1 pour i = 1, . . . , n ° 1,
? `i j = °1 si i > j ? u i n = 2i °1 pour i = 1, . . . , n,
? `i j = 0 sinon ; ? u i j = 0 sinon.
Exercice 5.17
On considère la matrice tridiagonale inversible A 2 Rn£n
0 1
a1 c1 0 ... ... 0
B .. .. C
B . C
Bb 2 a 2 c 2 . C
B C
B .. .. .. C
B 0 b3 a3 . . . C
A=B B .
C
C
B .. .. .. .. ..
B . . . . 0 C C
B . C
B . .. C
@ . . b n°1 a n°1 c n°1 A
0 ... ... 0 bn an
156 © G. Faccanoni
Dimanche 29 septembre 2013 5. Systèmes linéaires
1. Montrer que les matrices L et U de la factorisation LU de A sont bidiagonales, i.e. si a i j = 0 pour |i ° j | > 1 alors
`i j = 0 pour i > 1 + j (et pour i < j car triangulaire inférieure) et u i j = 0 pour i < j ° 1 (et pour i > j car triangulaire
supérieure).
Soit A(k) , k = 0, . . . , n ° 1 la matrice obtenue à l’étape k de la méthode de G AUSS, avec A(0) = A et A(n°1) = U. On
montrera par récurrence sur k que A(k) est tridiagonale pour tout k = 0, . . . , n ° 1, i.e. a i(k)
j
= 0 pour |i ° j | > 1.
a i(k)
k
a i(k+1)
j
= a i(k)
j
° (k)
a k(k)j .
a kk
Pour chaque ligne i > k, considérons séparément les colonnes j ∑ k et les colonnes j > k :
(k+1)
? si j ∑ k, a = 0 (zéros qu’on fait apparaitre avec la méthode de G AUSS pour une matrice quelconque),
ij
? soit j > k :
(k)
? si j < i °1, comme i , j > k alors a
ij
= 0 et i > j +1 > k +1, c’est-à-dire i °k > 1 et donc a i(k)
k
= 0 et `(k)
ik
= 0.
Donc a i(k+1)
j
= 0.
? si j > i + 1, comme i , j > k alors a i(k)
j
= 0 et j > i + 1 > k + 1, c’est-à-dire j ° k > 1 et donc a k(k)j = 0. Donc
a i(k+1)
j
= 0.
2. Les coefficients (Æ1 , Æ2 , . . . , Æn ), (Ø2 , Ø3 , . . . , Øn ) et (∞1 , ∞2 , . . . , ∞n°1 ) se calculent en imposant l’égalité LU = A. L’algo-
rithme se déduit en parcourant les étapes de la méthode de G AUSS :
© G. Faccanoni 157
5. Systèmes linéaires Dimanche 29 septembre 2013
0 1 0 1
a1 c1 0 ... ... 0 Æ1 = a 1 ∞1 = c 1 0 ... ... 0
B .. .. C B .. C
..
B . C B . C
Bb 2 a2 c2 . C B 0 Æ2 = a 2 ° Ø2 c 1 ∞2 = c 2 .
C
B C B C
B .. .. .. C B .. .. ..
C
B0 b3 a3 . . . C L 2 √L 2 °Ø2 L 1 (1) B 0 b3 a3 . . C.
A(0) = B
B .
C °°°°°°°°°! A = B
C B
C
C
B .. .. .. .. .. b .. .. .. .. ..
B . . . . 0 CC Ø2 = a 2
1
B
B . . . . . 0 CC
B . C B .. C
B . .. C B .. C
@ . . b n°1 a n°1 c n°1 A @ . .
b n°1 a n°1 c n°1 A
0 ... ... 0 bn an 0 ... ... 0 bn an
0 1
Æ1 = a 1 ∞1 = c 1 0 ... ... 0
B .. .. C
B . C
B 0 Æ2 = a 2 ° Ø2 c 1 ∞2 = c 2 . C
B C
B .. .. .. C
L 3 √L 3 °Ø3 L 2 B 0 0 Æ3 = a 3 ° Ø c
3 2 . . . C L 4 √L 4 °Ø4 L 3
°°°°°°°°°! A(2) = B B
C °°°°°°°°°! [· · · ]
C
b3
B .
.. . .. . .. . .. . .. b
Ø3 = Æ
2 B 0 C C Ø4 = Æ4
3
B .. C
B .. C
@ . . b n°1 a n°1 c n°1 A
0 ... ... 0 bn an
0 1
Æ1 = a 1 ∞1 = c 1 0 ... ... 0
B .. .. C
B . C
B 0 Æ2 = a 2 ° Ø2 c 1 ∞2 = c 2 . C
B C
B .. .. .. C
L n √L n °Øn L n°1 (n°1)
B 0 0 Æ 3 = a 3 ° Ø 3 c 2 . . . C
[· · · ] °°°°°°°°°°°! A =BB C
. . . . . C
Øn = Æ
bn
B .
. . . . . . . . . 0 C
n B C
B . C
B . .. C
@ . . 0 Æn°1 = a n°1 ° Øn°1 c n°2 ∞n°1 = c n°1 A
0 ... ... 0 0 Æn = a n ° Øn c n°1
3. La résolution du système linéaire Ax = f se ramène à la résolution des deux systèmes linéaires Ly = f et Ux = y, pour
lesquels on obtient les formules suivantes :
( (
y1 = f1, y1 = f1,
i.e. b
y i = f i ° Øi y i °1 , pour i = 2, . . . , n, y i = f i ° a °Øi c y i °1 , pour i = 2, . . . , n;
i i i °1
8
yn
( >
> x = ,
xn =
yn < n Æn
Æn , y °c x
y i °∞i x i +1 i.e. x i = a i °Øi ci +1 , pour i = n ° 1, . . . , 2,
xi = , pour i = n ° 1, . . . , 1, >
> i i i °1
Æi :x = y i °ci x2 .
1 a1
Exercice 5.18
Soit les systèmes linéaires
8
<4x 1 + 3x 2 + 3x 3 = 10
>
3x 1 + 4x 2 + 3x 3 = 10 (5.1)
>
:
3x 1 + 3x 2 + 4x 3 = 10
8
<4x 1 + x 2 + x 3 = 6
>
x 1 + 4x 2 + x 3 = 6 (5.2)
>
:
x 1 + x 2 + 4x 3 = 6
1. Rappeler une condition suffisante de convergence pour les méthodes de J ACOBI et de G AUSS-S EIDEL. Rappeler
une autre condition suffisante de convergence pour la méthode de G AUSS -S EIDEL (mais non pour la méthode de
J ACOBI). Les systèmes (5.1) et (5.2) vérifient-ils ces conditions ?
2. Écrire les méthodes de J ACOBI et de G AUSS -S EIDEL pour ces deux systèmes linéaires.
3. On illustrera les résultats théoriques de convergence/non-convergence de ces deux schémas en prenant comme
point de départ le vecteur (x 1 , x 2 , x 3 ) = (0, 0, 0) et en calculant les 3 premiers itérés :
3.1. avec la méthode de J ACOBI pour le système (5.1),
158 © G. Faccanoni
Dimanche 29 septembre 2013 5. Systèmes linéaires
A1 x = b A2 x = b
0 1 0 1 0 1 0 1
(k+1) (k) (k) (k+1) (k) (k)
x
B 1 C B 10 ° 3x 2 ° 3x 3 C x
B 1 C B 6 ° x 2 ° x 3 C
B C B C B C B C
B (k+1) C 1 B C B (k+1) C 1 B C
J ACOBI Bx C = 4 B10 ° 3x ° 3x (k) C
(k) Bx C = 4 B6 ° x ° x (k) C
(k)
B 2 C B 1 3 C B 2 C B 1 3 C
@ A @ A @ A @ A
x 3(k+1) 10 ° 3x 1(k) ° 3x 2(k) x 3(k+1) 6 ° x 1(k) ° x 2(k)
0 1 0 1 0 1 0 1
(k+1) (k) (k) (k+1) (k) (k)
Bx 1 C B 10 ° 3x 2 ° 3x 3 C Bx 1 C B 6 ° x2 ° x3 C
B C B C B C B C
B (k+1) C 1 B C B (k+1) C 1 B C
Gauss-S EIDEL Bx C = 4 B 10 ° 3x (k+1) ° 3x (k) C Bx C = 4 B 6 ° x (k+1) ° x (k) C
B 2 C B 1 3 C B 2 C B 1 3 C
@ A @ A @ A @ A
(k+1) (k+1) (k+1) (k+1) (k+1) (k+1)
x3 10 ° 3x 1 ° 3x 2 x3 6 ° x1 ° x2
1. det A1 (∏) = (4 ° ∏)3 + 27 + 27 ° 9(4 ° ∏) ° 9(4 ° ∏) ° 9(4 ° ∏) = 64 ° 48∏ + 12∏2 ° ∏3 + 54 ° 108 + 27∏ = °∏3 + 12∏2 ° 21∏ + 10. Une racine évidente est
∏ = 1 et on obtient det A1 (∏) = (∏ ° 1)(°∏2 + 11∏ ° 10) = (∏ ° 1)2 (∏ ° 10).
© G. Faccanoni 159
5. Systèmes linéaires Dimanche 29 septembre 2013
0 1(0) 0 1 0 1(1) 0 1 0 1
3
x1 0 x1 6°1£0°1£0
B C B C B C 1B C B2C
Bx C = B0C =) Bx C = B6 ° 1 £ 0 ° 1 £ 0C = B 3 C
@ 2A @ A @ 2A 4 @ A @2A
3
x3 0 x3 6°1£0°1£0 2
0 1(2) 0 1 0 1 0 1(3) 0 1 0 1
x1 6 ° 1 £ 32 ° 1 £ 32 3
4 x1 6 ° 1 £ 34 ° 1 £ 34 9
B C 1B C B C B C 1B C B8C
=) B C B 3 3C B3C B C B 3 3C B9C
@x 2 A = 4 @6 ° 1 £ 2 ° 1 £ 2 A = @ 4 A =) @x 2 A = 4 @6 ° 1 £ 4 ° 1 £ 4 A = @ 8 A
x3 6 ° 1 £ 32 ° 1 £ 32 3
4 x3 6 ° 1 £ 34 ° 1 £ 34 9
8
0 1(0) 0 1 0 1(1) 0 10 1
3
x1 0 x1 6°1£0°1£0
B C B C B C 1B CB 2 C
Bx C = B0C =) Bx C = B 6 ° 1 £ 3 ° 1 £ 0 C B 9 C
@ 2A @ A @ 2A 4 @ 2 A@ 8 A
x3 0 x3 6 ° 1 £ 32 ° 1 £ 89 27
32
0 1(2) 0 1 0 1 0 1(3) 0 1 0 1
9 27 129
x1 6 ° 1 £ 8 ° 1 £ 32 128 x1 6 ° 1 £ 531 2025
512 ° 1 £ 2048
8139
8192
B C 1B C B C B C 1B C B C
=) B C B 129 27 C B 531 C B C B 8139 2025 C B 32913 C
@x 2 A = 4 @ 6 ° 1 £ 128 ° 1 £ 32 A = @ 512 A =) @x 2 A = 4 @ 6 ° 1 £ 8192 ° 1 £ 2048 A = @ 32768 A
x3 6 ° 1 £ 129 531
128 ° 1 £ 512
2025
2048 x3 6 ° 1 £ 8139 32913
8192 ° 1 £ 32768
131139
131072
0 1 L 2 √L 2 ° 34 L 1 0 1 0 1 0 1
4 3 3 10 4 3 3 10 4 3 3 10 1
L 3 √L 3 ° 34 L 1 L 3 √L 3 ° 3/4
7/4 L2
@ 3 4 3 10 A °°°°°°°°! @ 0 7
/4 3
/4 5
/2 A °°°°°°°°°°! @ 0 7
/4 3
/4 5
/2 A =) x = @1A
3 3 4 10 0 3
/4 7
/4 5
/2 0 0 10
/7 10
/7 1
? Système (5.2) :
0 1 L 2 √L 2 ° 14 L 1 0 1 0 1 0 1
4 1 1 6 4 1 1 6 3/4 4 1 1 6 1
L 3 √L 3 ° 14 L 1 L 3 √L 3 ° 15/4 L2
@ 1 4 1 6 A °°°°°°°°! @ 0 15
/4 3
/4 9
/2 A °°°°°°°°°°! @ 0 15
/4 3
/4 9
/2 A =) x = @1A
1 1 4 6 0 3
/4 15
/4 9
/2 0 0 18
/5 18
/5 1
160 © G. Faccanoni
A. Python : guide de survie pour les TP
Le but de ce chapitre est de fournir suffisamment d’informations pour pouvoir tester les mé-
thodes numériques vues dans ce polycopié. Il n’est ni un manuel de Python ni une initia-
tion à la programmation. On suppose que vous avez déjà des notions de programmation et
de manipulation de fichier.
Python est un langage développé dans les années 1 980 (le nom est dérivé de la série télévisée britannique des Monty
Python’s Flying Circus). Il est disponible pour tous les principaux systèmes d’exploitation (Linux, Unix, Windows, Mac OS,
etc.). Un programme écrit sur un système fonctionne sans modification sur tous les systèmes. Les programmes Python ne
sont pas compilés en code machine, mais sont gérés par un interpréteur. Le grand avantage d’un langage interprété est que
les programmes peuvent être testés et mis au point rapidement, ce qui permet à l’utilisateur de se concentrer davantage sur
les principes sous-jacents du programme et moins sur la programmation elle-même. Cependant, un programme Python
peut être exécuté uniquement sur les ordinateurs qui ont installé l’interpréteur Python.
L’INTERPRÉTEUR permet d’entrer directement des commandes et dès qu’on écrit une commande, Python l’exécute et ren-
voie instantanément le résultat. L’invite de commande se compose de trois chevrons (>>>) et représente le prompt : cette
marque visuelle indique que Python est prêt à lire une commande. Il suffit de saisir à la suite une instruction puis d’appuyer
sur la touche «Entrée». Pour commencer, comme le veux la tradition informatique, on va demander à Python d’afficher les
fameux mots «Hello world» :
161
A. Python : guide de survie pour les TP Dimanche 29 septembre 2013
La console Python fonctionne comme une simple calculatrice : on peut saisir une expression dont la valeur est renvoyée
dès qu’on presse la touche «Entrée». Si on observe l’image suivante, on voit le résultat affiché après l’entrée de commandes
supplémentaires.
Pour naviguer dans l’historique des instructions saisies dans l’INTERPRÉTEUR on peut utiliser les raccourcis Alt+p (p comme
previous) et Alt+n (n comme next). 1
Si on ferme Python et qu’on le relance, comment faire en sorte que l’ordinateur se souvienne de ce que nous avons tapé ?
On ne peut pas sauvegarder directement ce qui se trouve dans la fenêtre de l’interpréteur, parce que cela comprendrait à la
fois les commandes tapées et les réponses du système. Il faut alors avoir un fichier avec uniquement les commandes qu’on
a tapées et sauver le tout comme un document. Ainsi plus tard on pourra ouvrir ce fichier et lancer Python sans avoir à
retaper toutes les commandes. Tout d’abord, commençons par un support propre en ouvrant une nouvelle fenêtre.
1. Il ne s’agit pas, pour l’instant, de s’occuper des règles exactes de programmation, mais seulement d’expérimenter le fait d’entrer des commandes
dans Python.
162 © G. Faccanoni
Dimanche 29 septembre 2013 A. Python : guide de survie pour les TP
On voit qu’il n’y a rien dans cette nouvelle fenêtre (pas d’en-tête comme dans l’INTERPRÉTEUR). Ce qui veut dire que ce
fichier est uniquement pour les commandes : Python n’interviendra pas avec ses réponses lorsque on écrira le programme
et ce tant que on ne le lui demandera pas. On appellera cela la fenêtre de P ROGRAMME, pour la différencier de la fenêtre de
l’INTERPRÉTEUR. En fait, ce qu’on veut faire, c’était de sauver les quelques instructions qu’on a essayées dans l’interpréteur.
Alors faisons-le soit en tapant soit en copiant-collant ces commandes dans la fenêtre P ROGRAMME :
On note qu’on s’est débarrassés du prompt de Python (>>>). Sauvons maintenant le fichier : la commande «Save» (Sauver)
se trouve dans le menu «File» (Fichier) ou utiliser le raccourcis Ctrl+S :
Ayant sauvé le programme, pour le faire tourner et afficher les résultats dans la fenêtre de l’INTERPRÉTEUR il suffit d’utiliser
la commande «Run script» (lancer le script) dans le menu «Run» de la fenêtre P ROGRAMME ou appuyer sur la touche «F5»
Si on a fait une faute de frappe, Python le remarque et demande de corriger. Il est souvent assez pertinent pour diriger vers
le problème et dans le cas ci-dessous il dit qu’on a oublié quelque chose à la fin de la ligne : il faut remplacer " par ’.
Cette faute de frappe étant corrigée, on fait tourner le programme et on regarde le résultat dans l’INTERPRÉTEUR :
© G. Faccanoni 163
A. Python : guide de survie pour les TP Dimanche 29 septembre 2013
Maintenant qu’on a sauvé le programme, on est capable de le recharger : on va tout fermer et relancer I DLE. La commande
«Open» (Ouvrir) se trouve dans le menu «File» (Fichier). Si tout se passe bien, on va avoir une nouvelle fenêtre P ROGRAMME
avec l’ancien programme.
Commentaires Le symbole dièse (#) indique le début d’un commentaire : tous les caractères entre # et la fin de la ligne
sont ignorés par l’interpréteur.
Variables et affectation Dans la plupart des langages informatiques, le nom d’une variable représente une valeur d’un
type donné stockée dans un emplacement de mémoire fixe. La valeur peut être modifiée, mais pas le type. Ce n’est pas le
cas en Python, où les variables sont typées dynamiquement. La session interactive suivante avec l’INTERPRÉTEUR Python
illustre ce propos (>>> est le prompt) :
1 >>> b = 2 # b is an integer
2 >>> print(b)
3 2
4 >>> b = b*2.0 # b is a float
5 >>> print(b)
6 4.0
L’affectation b = 2 crée une association entre le nom b et le nombre entier 2. La déclaration suivante b*2.0 évalue l’ex-
pression et associe le résultat à b ; l’association d’origine avec l’entier 2 est détruite. Maintenant b se réfère à la valeur en
virgule flottante 4.0. Il faut bien prendre garde au fait que l’instruction d’affectation (=) n’a pas la même signification que
le symbole d’égalité (=) en mathématiques (ceci explique pourquoi l’affectation de 3 à x, qu’en Python s’écrit x = 3, en
algorithmique se note souvent x √ 3). On peut aussi effectuer des affectations parallèles :
1 >>> a, b = 128, 256
2 >>> print(a)
3 128
4 >>> print(b)
5 256
ATTENTION. Python est sensible à la casse. Ainsi, les noms n et N représentent différents objets. Les noms de variables
peuvent être non seulement des lettres, mais aussi des mots ; ils peuvent contenir des chiffres (à condition toutefois de ne pas
commencer par un chiffre), ainsi que certains caractères spéciaux comme le tiret bas «_» (appelé underscore en anglais).
164 © G. Faccanoni
Dimanche 29 septembre 2013 A. Python : guide de survie pour les TP
Chaîne de caractères (Strings) Une chaîne de caractères est une séquence de caractères entre guillemets (simples ou
doubles). Les chaînes de caractères sont concaténées avec l’opérateur plus (+), tandis que l’opérateur (:) est utilisé pour
extraire une portion de la chaîne. Voici un exemple :
1 >>> string1 = ’Press return to exit’
2 >>> string2 = ’the program’
3 >>> print string1 + ’ ’ + string2 # Concatenation
4 Press return to exit the program
5 >>> print string1[0:12] # Slicing
6 Press return
Une chaîne de caractères est un objet immuable, i.e. ses caractères ne peuvent pas être modifiés par une affectation, et sa
longueur est fixe. Si on essaye de modifier un caractère d’une chaîne de caractères, Python renvoie une erreur comme dans
l’exemple suivant :
1 >>> s = ’Press return to exit’
2 >>> s[0] = ’p’
3 Traceback (most recent call last):
4 File "<stdin>", line 1, in <module>
5 TypeError: ’str’ object does not support item assignment
Listes Une liste est une suite d’objets, rangés dans un certain ordre. Chaque objet est séparé par une virgule et la suite
est encadrée par des crochets. Une liste n’est pas forcement homogène : elle peut contenir des objets de types différents les
uns des autres. La première manipulation que l’on a besoin d’effectuer sur une liste, c’est d’en extraire et/ou modifier un
élément : la syntaxe est ListName[index]. Voici un exemple :
1 >>> fraise = [12, 10, 18, 7, 15, 3] # Create a list
2 >>> print fraise
3 [12, 10, 18, 7, 15, 3]
4 >>> fraise[2]
5 18
6 >>> fraise[1] = 11
7 >>> print fraise
8 [12, 11, 18, 7, 15, 3]
ATTENTION. En Python, les éléments d’une liste sont indexés à partir de 0 et non de 1.
Si on tente d’extraire un élément avec un index dépassant la taille de la liste, Python renvoi un message d’erreur :
1 >>> fraise[0], fraise[1], fraise[2], fraise[3], fraise[4], fraise[5]
2 (12, 11, 18, 7, 15, 3)
3 >>> fraise[6]
4 Traceback (most recent call last):
5 File "<pyshell#4>", line 1, in <module>
6 fraise[6]
7 IndexError: list index out of range
On peut extraire une sous-liste en déclarant l’indice de début (inclus) et l’indice de fin (exclu), séparés par deux-points :
ListName[i:j], ou encore une sous-liste en déclarant l’indice de début (inclus), l’indice de fin (exclu) et le pas, séparés
par des deux-points : ListName[i:j:k]. Cette opération est connue sous le nom de slicing (en anglais). Un petit dessin et
quelques exemples permettrons de bien comprendre cette opération fort utile :
len(fraise)
0 1 2 3 4 5 6
fraise= 12 11 18 7 15 3
-6 -5 -4 -3 -2 -1
1 >>> fraise[2:4]
2 [18, 7]
3 >>> fraise[2:]
© G. Faccanoni 165
A. Python : guide de survie pour les TP Dimanche 29 septembre 2013
4 [18, 7, 15, 3]
5 >>> fraise[:2]
6 [12, 11]
7 >>> fraise[:]
8 [12, 11, 18, 7, 15, 3]
9 >>> fraise[2:5]
10 [18, 7, 15]
11 >>> fraise[2:6]
12 [18, 7, 15, 3]
13 >>> fraise[2:7]
14 [18, 7, 15, 3]
15 >>> fraise[2:6:2]
16 [18, 15]
17 >>> fraise[-2:-4]
18 []
19 >>> fraise[-4:-2]
20 [18, 7]
21 >>> fraise[-1]
22 3
À noter que lorsqu’on utilise des tranches, les dépassements d’indices sont licites.
Voici quelques opérations et méthodes très courantes associées aux listes :
166 © G. Faccanoni
Dimanche 29 septembre 2013 A. Python : guide de survie pour les TP
27 >>> a.sort()
28 >>> print a
29 [2, 17, 20, 21, 34, 37, 83, 100]
30 >>> len(a) # Determine length of list
31 8
32 >>> a.insert(2,7) # Insert 7 in position 2
33 >>> print a
34 [2, 17, 7, 20, 21, 34, 37, 83, 100]
35 >>> a[0] = 21 # Modify selected element
36 >>> print a
37 [21, 17, 7, 20, 21, 34, 37, 83, 100]
38 >>> a[2:4] = [-2,-5,-1978] # Modify selected elements
39 >>> print a
40 [21, 17, -2, -5, -1978, 21, 34, 37, 83, 100]
ATTENTION. Si a est une liste, la commande b=a ne crée pas un nouvel objet b mais simplement une référence (pointeur)
vers a. Ainsi, tout changement effectué sur b sera répercuté sur a aussi ! Pour créer une copie c de la liste a qui soit vraiment
indépendante on utilisera la commande deepcopy du module copy comme dans l’exemple suivant :
1 >>> import copy
2 >>> a = [1.0, 2.0, 3.0]
3 >>> b = a # ’b’ is an alias of ’a’
4 >>> b[0] = 5.0 # Change ’b’
5 >>> print a # The change is reflected in ’a’
6 [5.0, 2.0, 3.0]
7 >>> print b
8 [5.0, 2.0, 3.0]
9 >>> a = [1.0, 2.0, 3.0]
10 >>> c = copy.deepcopy(a) # ’c’ is an independent copy of ’a’
11 >>> c[0] = 5.0 # Change ’c’
12 >>> print a # ’a’ is not affected by the change
13 [1.0, 2.0, 3.0]
14 >>> print c
15 [5.0, 2.0, 3.0]
Qu’est-ce qui se passe lorsque on copie une liste a avec la commande b=a ? En effet, une liste fonctionne comme un carnet
d’adresses qui contient les emplacements en mémoire des différents éléments de la liste. Lorsque on écrit b=a on dit que b
contient les mêmes adresses que a (on dit que les deux listes «pointent» vers le même objet). Ainsi, lorsqu’on modifie la valeur
de l’objet, la modification sera visible depuis les deux alias.
Matrices Les matrices peuvent être représentées comme des listes imbriquées : chaque ligne est un élément d’une liste.
Par exemple, le code
1 >>> a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
© G. Faccanoni 167
A. Python : guide de survie pour les TP Dimanche 29 septembre 2013
ATTENTION. Dans Python les indices commences à zéro, ainsi a[0] indique la première ligne, a[1] la deuxième etc.
0 1
a 00 a 01 a 02 ...
Ba 10 a 11 a 12 . . .C
A=@ A
.. .. .. ..
. . . .
Fonction range La fonction range crée un itérateur. Au lieu de créer et garder en mémoire une liste d’entiers, cette
fonction génère les entiers au fur et à mesure des besoins :
? range(n) renvoi un itérateur parcourant 0, 1, 2, . . . , n ° 1 ;
? range(n,m) renvoi un itérateur parcourant n, n + 1, n + 2, . . . , m ° 1 ;
? range(n,m,p) renvoi un itérateur parcourant n, n + p, n + 2p, . . . , m ° 1.
1 >>> range(10)
2 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
3 >>> range(0)
4 []
5 >>> range(1)
6 [0]
7 >>> range(3,7)
8 [3, 4, 5, 6]
9 >>> range(0,20,5)
10 [0, 5, 10, 15]
11 >>> range(0,20,-5)
12 []
13 >>> range(0,-20,-5)
14 [0, -5, -10, -15]
15 >>> range(20,0,-5)
16 [20, 15, 10, 5]
Instruction print Pour afficher à l’écran des objets on utilise la commande print object1, object2, ... qui conver-
tis object1, object2 en chaînes de caractères et les affiche sur la même ligne séparés par des espace. Le retour à la ligne
peut être forcé par le caractère \n, la tabulation par le caractère \t :
1 >>> a = 12345,6789
2 >>> b = [2, 4, 6, 8]
3 >>> print a,b
4 (12345, 6789) [2, 4, 6, 8]
5 >>> print "a=", a, "\nb=", b
6 a= (12345, 6789)
7 b= [2, 4, 6, 8]
8 >>> print "a=", a, "\tb=", b
9 a= (12345, 6789) °°!b= [2, 4, 6, 8]
Pour mettre en colonne des nombres on pourra utiliser l’opérateur % : la commande print ’%format1, %format2,...
Â’%(n1,n2,...) affiche les nombres n1,n2,... selon les règles %format1, %format2,.... Typiquement on utilise
wd pour un entier
w.d f pour un nombre en notation floating point
w.d e pour un nombre en notation scientifique
où w est la largeur du champ total, d le nombre de chiffres après la virgule. Voici quelques exemples :
1 >>> a = 1234.56789
2 >>> n = 9876
3 >>> print ’%7.2f’ %a
4 1234.57
5 >>> print ’n = %6d’ %n
6 n = 9876
7 >>> print ’n = %06d’ %n
8 n = 009876
9 >>> print ’%12.4e %6d’ %(a,n)
10 1.2346e+03 9876
168 © G. Faccanoni
Dimanche 29 septembre 2013 A. Python : guide de survie pour les TP
Quelques exemples :
1 >>> a = 100
2 >>> b = 17
3 >>> c = a-b
4 >>> a = 2
5 >>> c = b+a
6 >>> a,b,c
7 (2, 17, 19)
8 >>> a = 3
9 >>> b = 4
10 >>> c = a
11 >>> a = b
12 >>> b = c
13 >>> a, b, c
14 (4, 3, 3)
Certains de ces opérations sont aussi définies pour les chaînes de caractères et les listes comme dans l’exemple suivant :
1 >>> s = ’Hello ’
2 >>> t = ’to you’
3 >>> a = [1, 2, 3]
4 >>> print 3*s # Repetition
5 Hello Hello Hello
6 >>> print 3*a # Repetition
7 [1, 2, 3, 1, 2, 3, 1, 2, 3]
8 >>> print a + [4, 5] # Append elements
9 [1, 2, 3, 4, 5]
10 >>> print s + t # Concatenation
11 Hello to you
12 >>> print 3 + s # This addition makes no sense
13 Traceback (most recent call last):
14 File "<stdin>", line 1, in <module>
15 TypeError: unsupported operand type(s) for +: ’int’ and ’str’
Il existe aussi les opérateurs augmentés :
On écrit Équivaut à
a += b a = a + b
a -= b a = a - b
a *= b a = a*b
a /= b a = a/b
a **= b a = a**b
a %= b a = a%b
Opérateurs de comparaison et connecteurs logiques Les opérateurs de comparaison renvoient True si la condition
est vérifiée, False sinon. Ces opérateurs sont
On écrit Ça signifie
< <
> >
<= ∑
>= ∏
== =
!= 6=
in 2
© G. Faccanoni 169
A. Python : guide de survie pour les TP Dimanche 29 septembre 2013
Pour combiner des conditions complexes (par exemple x > °2 et x 2 < 5), on peut combiner des variables booléennes en
utilisant les connecteurs logiques :
On écrit Ça signifie
and et
or ou
not non
Deux nombres de type différents (entier, à virgule flottante, etc.) sont convertis en un type commun avant de faire la com-
paraison. Dans tous les autres cas, deux objets de type différents sont considérés non égaux. Voici quelques exemples :
1 >>> a = 2 # Integer
2 >>> b = 1.99 # Floating
3 >>> c = ’2’ # String
4 >>> print a>b
5 True
6 >>> print a==c
7 False
8 >>> print (a>b) and (a==c)
9 False
10 >>> print (a>b) or (a==c)
11 True
12 >>> print (a>b) or (a==b)
13 True
La déclaration d’une nouvelle fonction commence par le mot-clé def. Ensuite, toujours sur la même ligne, vient le nom de
la fonction (ici FunctionName) suivi des paramètres formels 2 de la fonction parameters), placés entre parenthèses, le tout
terminé par deux-points (on peut mettre autant de paramètres formels qu’on le souhaite et éventuellement aucun). Une
fois la première ligne saisie, on appuie sur la touche «Entrée» : le curseur passe à la ligne suivante avec une indentation. Si
l’instruction return est absente, la fonction renvoi l’objet None.
ATTENTION. Dès que Python atteint l’instruction return something, il renvoi l’objet something et abandonne aussitôt
après l’exécution de la fonction (on parle de code mort pour désigner les lignes qui suivent l’instruction return).
Voici un bêtisier pour mieux comprendre les règles : dans le premier cas il manque les deux-points en fin de ligne, dans
le deuxième il manque l’indentation, dans le troisième il manque le mot return et donc tout appel de la fonction aura
comme réponse None, dans le quatrième l’instruction print ’Hello’ n’est jamais lue par Python car elle apparait après
l’instruction return.
1 >>> def f(x)
2 SyntaxError: invalid syntax
3 >>> def f(x):
4 return 2*x**7-x**6+5*x**5-x**4+9*x**3+7*x**2+8*x-1
5 File "<pyshell#7>", line 2
6 return 2*x**7-x**6+5*x**5-x**4+9*x**3+7*x**2+8*x-1
2. Les paramètres figurant entre parenthèses dans l’en-tête d’une fonction se nomment paramètres formels, par opposition aux paramètres fournis
lors de l’appel de la fonction qui sont appelés paramètres effectifs.
170 © G. Faccanoni
Dimanche 29 septembre 2013 A. Python : guide de survie pour les TP
7 ^
8 IndentationError: expected an indented block
9 >>> def f(x):
10 °°°!2*x**7-x**6+5*x**5-x**4+9*x**3+7*x**2+8*x-1
11
12
13 >>> f(2)
14 >>> print f(2)
15 None
16 >>> def f(x):
17 °°°!a = 2*x**7-x**6+5*x**5-x**4+9*x**3+7*x**2+8*x-1
18 °°°!return a
19 °°°!print ’Hello’
20
21 >>> f(2)
22 451
ATTENTION. Les variables définies à l’intérieur d’une fonction ne sont pas «visibles» depuis l’extérieur de la fonction. On
exprime cela en disant qu’une telle variable est locale à la fonction. De plus, si une variable existe déjà avant l’exécution de
la fonction, tout se passe comme si, durant l’exécution de la fonction, cette variable était masquée momentanément, puis
restituée à la fin de l’exécution de la fonction.
Dans l’exemple suivant, la variable x est une variable locale à la fonction f : crée au cours de l’exécution de la fonction f,
elle est supprimée une fois l’exécution terminée :
1 >>> def f(y):
2 °°°!x = 2
3 °°°!return 4.*y
4
5 >>> f(5)
6 20.0
7 >>> x
8 Traceback (most recent call last):
9 File "<pyshell#35>", line 1, in <module>
10 x
11 NameError: name ’x’ is not defined
Dans l’exemple suivant, la variable x est une variable qui vaut 6 à l’extérieur de la fonction et 7 au cours de l’exécution de
la fonction f :
1 >>> x = 6.
2 >>> def f(y):
3 °°°!x = 7
4 °°°!return x*y
5
6 >>> print x
7 6.0
8 >>> print f(1.)
9 7.0
10 >>> print x
11 6.0
Dans l’exemple suivant la fonction derivatives approche les dérivées première et seconde d’une fonction f par les
formules
f (x + h) ° f (x ° h) f (x + h) ° 2 f (x) + f (x ° h)
f 0 (x) ' , f 00 (x) '
2h h2
1 import math
2 def derivatives(f,x,h):
3 °°°!df = (f(x+h)-f(x-h))/(2.*h)
4 °°°!ddf = (f(x+h)-2.*f(x)+f(x-h))/h**2
5 °°°!return df,ddf
º
Si on veut calculer la valeur des dérivées première et seconde de la fonction x 7! cos(x) en x = 2 il suffit d’écrire
© G. Faccanoni 171
A. Python : guide de survie pour les TP Dimanche 29 septembre 2013
ATTENTION. Si une liste est passée comme paramètre d’une fonction et cette fonction la modifie, cette modification se
répercute sur la liste initiale. Si ce n’est pas le résultat voulu, il faut travailler sur une copie de la liste.
1 def squares(a):
2 °°°!for i in range(len(a)):
3 °°°!°°°!a[i] = a[i]**2
4
5 a = [1,2,3,4]
6 print a # The output is [1, 2, 3, 4]
7 squares(a)
8 print a # The output is [1, 4, 9, 16]
A.3.2. Modules
Un module est une collection de fonctions. Pour importer un module, il faut utiliser la commande import ModuleName.
Il est alors possible d’obtenir une aide sur le module avec la commande help(ModuleName). La liste des fonctions dé-
finies dans un module peut être affichée par la commande dir(ModuleName). Les fonctions s’utilisent sous la forme
ModuleName.FunctionName(parameters). Il est également possible d’importer le contenu du module sous la forme
from ModuleName import * et alors les fonctions peuvent être utilisées directement par FunctionName(parameters).
Python offre par défaut une bibliothèque de plus de deux cents modules qui évite d’avoir à réinventer la roue dès que
l’on souhaite écrire un programme. Ces modules couvrent des domaines très divers : mathématiques (fonctions mathéma-
tiques usuelles, calculs sur les réels, sur les complexes, combinatoire. . .), administration système, programmation réseau,
manipulation de fichiers, etc. Ici on en présente seulement quelques-uns, à savoir ce dont on se servira dans les TP.
Le module math Dans Python seulement quelque fonction mathématique est prédéfinie :
abs(a) Valeur absolue de a
max(suite) Plus grande valeur de la suite
min(suite) Plus petite valeur de la suite
round(a,n) Arrondi a à n décimales près
pow(a,n) Exponentiation, renvoi a n
sum(L) Somme des éléments de la suite
divmod(a,b) Renvoi quotient et reste de la division de a par b
8
<°1 si a < b,
>
cmp(a,b) Renvoi 0 si a = b,
>
:
1 si a > b.
Toutes les autres fonctions mathématiques sont définies dans le module math. Comme mentionné précédemment, on
dispose de plusieurs syntaxex pour importer un module :
1 >>> import math
2 >>> print math.pi
3 3.14159265359
4 >>> print math.sin(math.pi)
5 1.22464679915e-16
6 >>> print math.log(1.0)
7 0.0
ou
1 >>> from math import *
2 >>> print pi
3 3.14159265359
4 >>> print sin(pi)
5 1.22464679915e-16
6 >>> print log(1.0)
7 0.0
Voici la liste des fonctions définies dans le module math :
172 © G. Faccanoni
Dimanche 29 septembre 2013 A. Python : guide de survie pour les TP
Le module matplotlib pour le tracé de données Le tracé de courbes scientifiques peut se faire à l’aide du mo-
dule matplotlib. Pour l’utiliser, il faut importer le module pylab. La référence complète de matplotlib est lisible à
l’adresse : http://matplotlib.sourceforge.net/matplotlib.pylab.html. Il est en particulier recommandé de re-
garder les “screenshots” (captures d’écrans), qui sont donnés avec le code utilisé pour les générer. Dans ces rappels on ne
verra que la représentation de fonction 1D.
ATTENTION. Lorsque l’on utilise I DLE, après la commande show() nécessaire pour visualiser les graphes, l’interpréteur
python se bloque (c’est un bug de l’éditeur). Pour pallier à ce problème on peut utiliser I DLE X, téléchargeable à l’adresse
http: // idlex. sourceforge. net , qui améliore I DLE et qui ne pose pas de problèmes avec matplotlib.
Pour tracer le graphe d’une fonction f : [a, b] ! R, Python a besoin d’une grille de points x i où évaluer la fonction,
ensuite il relie entre eux les points (x i , f (x i )) par des segments (il s’agit d’une spline linéaire comme on verra au prochaine
chapitre). Plus les points sont nombreux, plus le graphe de la fonction spline est proche du graphe de la fonction f . Pour
générer les points x i on peut utiliser l’instruction linspace(a,b,n) qui construit la liste de n + 1 éléments
∑ ∏
b°a b°a
a, a + ,a +2 ,...,b
n n
ou encore
1 from matplotlib.pylab import *
2 x = arange(-5,5,0.1) # x = [-5,-4.9,-4.8,...,5] with 101 elements
3 y = sin(x) # operation is broadcasted to all elements of the array
4 plot(x,y)
5 show()
On obtient une courbe sur laquelle on peut zoomer, modifier les marge et sauvegarder dans différents formats (jpg, png,
eps. . .). On peut même tracer plusieurs courbes sur la même figure. Par exemple, si on veut comparer les graphes de la
fonction précédente en modifiant la grille de départ, on peut écrire
1 from matplotlib.pylab import *
2
Le résultat est affiché à la figure A.1a (la courbe bleu correspond à la grille la plus grossière, la courbe rouge correspond à la
grille la plus fine).
Pour tracer plusieurs courbes, on peut les mettre les unes à la suite des autres en spécifiant la couleur et le type de trait,
changer les étiquettes des axes, donner un titre, ajouter une grille, une légende. . .
© G. Faccanoni 173
A. Python : guide de survie pour les TP Dimanche 29 septembre 2013
174 © G. Faccanoni
Dimanche 29 septembre 2013 A. Python : guide de survie pour les TP
? Plutôt que l’échelle log-log, nous utiliserons parfois une échelle semi-logarithmique, c’est-à-dire logarithmique sur
l’axe des y et linéaire sur l’axe des x. Cette représentation est par exemple préférable quand on trace l’erreur E d’une
méthode itérative en fonction des itérations k ou plus généralement quand les ordonnées s’étendent sur un intervalle
n
beaucoup plus grand que les abscisses. Si E (k) = C k E (0) avec C 2]0; 1[ alors ln(E ) = ln(E (0)) + k n ln(C ), c’est-à-dire
une droite si n = 1, une parabole si n = 2 etc. La commande Python pour utiliser l’échelle semi-logarithmique est
semilogy.
Par exemple, on a tracé sur la figure à gauche des courbes représentant le comportement de l’erreur de trois méthodes
différentes. La ligne rouge correspond à une méthode d’ordre un, la parabole bleu à une méthode d’ordre deux et la
cubique verte à une méthode d’ordre trois. Sur la figure à droite on a tracé les mêmes données qu’à gauche mais avec
la commande plot, c’est-à-dire en échelle linéaire pour les axes x et y. Il est évident que la représentation linéaire
n’est pas la mieux adaptée à ces données.
© G. Faccanoni 175
A. Python : guide de survie pour les TP Dimanche 29 septembre 2013
On a besoin d’une instruction qui opère une disjonction de cas. En Python il s’agit de l’instruction de choix introduite par
le mot-clé if. La syntaxe est la suivante :
1 if condition_1:
2 °°°!instruction_1.1
3 °°°!instruction_1.2
4 °°°!...
5 elif condition_2:
6 °°°!instruction_2.1
7 °°°!instruction_2.2
8 °°°!...
9 ...
10 else:
11 °°°!instruction_n.1
12 °°°!instruction_n.2
13 °°°!...
où condition_1, condition_2. . . représentent des ensembles d’instructions dont la valeur est True ou False (on les
obtient en général en utilisant les opérateurs de comparaison). La première condition condition_i ayant la valeur True
entraîne l’exécution des instructions instruction_i.1, instruction_i.2. . . Si toutes les conditions sont fausses, les
instructions instruction_n.1, instruction_n.2. . . sont exécutées.
ATTENTION. Bien noter le rôle essentiel de l’indentation qui permet de délimiter chaque bloc d’instructions et la présence
des deux points après la condition du choix et après le mot clé else.
176 © G. Faccanoni
Dimanche 29 septembre 2013 A. Python : guide de survie pour les TP
5 °°°!°°°!sign = ’positive’
6 °°°!else:
7 °°°!°°°!sign = ’zero’
8 °°°!return sign
9
10 a = 2.0
11 print ’a is ’ + sign_of(a) # Output: a is positive
12 a = -2.0
13 print ’a is ’ + sign_of(a) # Output: a is negative
14 a = 0.0
15 print ’a is ’ + sign_of(a) # Output: a is zero
La fonction valeur absolue peut être définie comme suit :
1 def val_abs(x):
2 °°°!if x>0:
3 °°°!°°°!return x
4 °°°!else:
5 °°°!°°°!return -x
6
7 val_abs(5) # Output 5
8 val_abs(-5) # Output 5
A.5. Boucles
Les structure de répétition se classent en deux catégories :
répétition conditionnelle : le bloc d’instructions est à répéter autant de fois qu’une condition est vérifiée,
répétition inconditionnelle : le bloc d’instructions est à répéter un nombre donné de fois.
Boucle while : répétition conditionnelle Le constructeur while a la forme générale suivante (attention à l’indentation
et aux deux points) :
1 while condition:
2 °°°!instruction_1
3 °°°!instruction_2
4 °°°!...
où condition représente des ensembles d’instructions dont la valeur est True ou False. Tant que la condition condition_i
a la valeur True, on exécute les instructions instruction_i.
ATTENTION. Si la condition ne devient jamais fausse, le bloc d’instructions est répété indéfiniment et le programme ne se
termine pas.
£ §
Voici un exemple pour créer la liste 1, 12 , 13 , . . . :
1 nMax = 5
2 n = 1
3 a = [] # Create empty list
4 while n<nMax:
5 °°°!a.append(1.0/n) # Append element to list
6 °°°!n += 1
7 print a # Output [1.0, 0.5, 0.33333333333333331, 0.25]
© G. Faccanoni 177
A. Python : guide de survie pour les TP Dimanche 29 septembre 2013
Boucle for : répétition inconditionnelle Lorsque l’on souhaite répéter un bloc d’instructions un nombre déterminé
de fois, on peut utiliser un compteur actif, c’est-à-dire une variable qui compte le nombre de répétitions et conditionne la
sortie de la boucle. C’est la structure introduite par le mot-clé for qui a la forme générale suivante (attention à l’indentation
et aux deux points) :
1 for target in sequence:
2 °°°!instruction_1
3 °°°!instruction_2
4 °°°!...
où target est le compteur actif et sequence est un itérateur (souvent généré par la fonction range ou une liste ou une
chaîne de caractères). Tant que target£ appartient § à sequence, on exécute les instructions instruction_i.
Voici un exemple pour créer la liste 1, 12 , 13 , . . . avec un itérateur généré par la fonction range :
1 nMax = 5
2 a = [] # Create empty list
3 for n in range(1,nMax):
4 °°°!a.append(1.0/n) # Append element to list
5 print a # The output is [1.0, 0.5, 0.33333333333333331, 0.25]
Interrompre une boucle L’instruction break sort de la plus petite boucle for ou while englobante. L’instruction continue
continue sur la prochaine itération de la boucle. Les instructions de boucle ont une clause else qui est exécutée lorsque la
boucle se termine par épuisement de la liste (avec for) ou quand la condition devient fausse (avec while), mais pas quand
la boucle est interrompue par une instruction break. Ceci est expliqué dans la boucle suivante, qui recherche des nombres
premiers :
1 for n in range(2,10):
2 °°°!for x in range(2,n):
3 °°°!°°°!if n%x==0:
4 °°°!°°°!°°°!print n, ’egale’, x, ’*’, n/x
5 °°°!°°°!°°°!break
6 °°°!else:
7 °°°!°°°!print n, ’est un nombre premier’
ce qui donne
1 2 est un nombre premier
2 3 est un nombre premier
3 4 egale 2 * 2
4 5 est un nombre premier
5 6 egale 2 * 3
6 7 est un nombre premier
7 8 egale 2 * 4
8 9 egale 3 * 3
List-comprehensions Les listes définies par compréhension permettent de générer des listes de manière très concise
sans avoir à utiliser des boucles. La syntaxe pour définir une liste par compréhension est très proche de celle utilisée en
mathématiques pour définir un ensemble :
{ f (x) | x 2 E }
[ f(x) for x in E ]
178 © G. Faccanoni
Dimanche 29 septembre 2013 A. Python : guide de survie pour les TP
ce qui donne
1 0 32.0
2 5 41.0
3 10 50.0
4 15 59.0
5 20 68.0
6 25 77.0
7 30 86.0
8 35 95.0
9 40 104.0
10 45 113.0
11 50 122.0
12 55 131.0
13 60 140.0
14 65 149.0
15 70 158.0
16 75 167.0
17 80 176.0
18 85 185.0
19 90 194.0
20 95 203.0
21 100 212.0
On construit la liste des années bissextiles entre l’année 2000 et l’année 2099 :
1 >>> [b for b in range(2000,2100) if (b%4==0 and b%100!=0) or (b%400==0)]
2 [2000, 2004, 2008, 2012, 2016, 2020, 2024, 2028, 2032, 2036, 2040, 2044, 2048, 2052, 2056, 2060, 2064,
Â2068, 2072, 2076, 2080, 2084, 2088, 2092, 2096]
© G. Faccanoni 179
Bibliographie
[1] Alexandre C ASAMAYOU -B OUCAU, Pascal C HAUVIN et Guillaume C ONNAN : Programmation en Python pour les mathé-
matiques. Dunod, 2012.
[2] F. J EDRZEJEWSKI : Introduction aux méthodes numériques. Springer, 2005.
[3] A. QUARTERONI, R. S ACCO et F. S ALERI : Matematica numerica. Springer-Verlag Italia, Milan, 1998.
[4] A. QUARTERONI, F. S ALERI et P. G ERVASIO : Calcul scientifique : cours, exercices corrigés et illustrations en MATLAB et
Octave. Springer, 2011.
[5] Alfio QUARTERONI, Riccardo S ACCO et Fausto S ALERI : Numerical mathematics, volume 37 de Texts in Applied Mathe-
matics. Springer-Verlag, New York, 2000.
[6] Alfio QUARTERONI, Riccardo S ACCO et Fausto S ALERI : Méthodes numériques. Springer-Verlag Italia, Milan, 2007.
Algorithmes, analyse et applications. [Algorithms, analysis and applications], Translated from the 1998 Italian original
by Jean-Frédéric Gerbeau.
[7] Alfio QUARTERONI, Riccardo S ACCO et Fausto S ALERI : Numerical mathematics, volume 37 de Texts in Applied Mathe-
matics. Springer-Verlag, Berlin, second édition, 2007.
[8] Alfio QUARTERONI et Fausto S ALERI : Scientific computing with MATLAB, volume 2 de Texts in Computational Science
and Engineering. Springer-Verlag, Berlin, 2003.
[9] Alfio QUARTERONI et Fausto S ALERI : Scientific computing with MATLAB and Octave, volume 2 de Texts in Computa-
tional Science and Engineering. Springer-Verlag, Berlin, second édition, 2006.
[10] Alfio QUARTERONI, Fausto S ALERI et Paola G ERVASIO : Scientific computing with MATLAB and Octave, volume 2 de
Texts in Computational Science and Engineering. Springer-Verlag, Berlin, 2010. Third edition [of MR2253397].
[11] J. R APPAZ et M. P ICASSO : Introduction à l’analyse numérique. PPUR, 1998.
181