]> AND Private Git Repository - cours-mesi.git/blob - equations.tex
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
quelques typos
[cours-mesi.git] / equations.tex
1 \section{Motivation}
2 Bien qu’il puisse être posé simplement (trouver tous les $x$ tel que $P(x) =0$),
3 résoudre algébriquement des équations
4 est un problème difficile.
5 Depuis l'antiquité, l’homme a cherché des algorithmes donnant les
6 valeurs des racines d'un polynôme 
7 en fonction de ses coefficients.
8 On connaît une solution pour les polynômes de degré 2. 
9 C’est Cardan qui donna
10 en 1545 les formules de résolution de certaines équations cubiques de 
11 la forme 
12
13 x^3 + px+q = 0
14 $ avec $p$ et $q$ non nuls. Calculons le discriminant 
15 $\Delta = \frac{4}{27}p^3+ p^2$ et discutons de son signe:
16 \begin{itemize}
17 \item si $\Delta$ est nul, l'équation possède
18   deux solutions réelles, une simple et une double :
19
20 $$
21 \begin{cases}
22   x_0=2\sqrt[3]{\frac{-q}2}=\frac{3q}p
23   \\
24   x_1=x_2=-\sqrt[3]{\frac{-q}2}=\frac{-3q}{2p}
25 \end{cases}
26 $$
27
28
29 \item Si $\Delta$ est positif, l'équation possède une solution réelle
30   et deux complexes. On pose alors 
31 $u = \sqrt[3]{\frac{-q + \sqrt{\Delta}}2}$ et $v = \sqrt[3]{\frac{-q - \sqrt{\Delta}}2}$.
32 La seule solution réelle est alors $x_0=u+v$. 
33 Il existe également deux solutions complexes conjuguées l'une de l'autre:
34 $$
35 \begin{cases}
36 x_1= j u +\bar{j} v \\ 
37 x_2= j^2u +\overline{j^2}\end{cases}
38 \qquad\textrm{ où }\qquad j=-\frac12+ i \frac{\sqrt3}2=e^{i\frac{2\pi}3}
39 $$
40
41 \item si $\Delta$ est négatif,  l'équation possède trois solutions réelles:
42 $$
43 x_k = 2 \sqrt{\frac{-p}{3}} \cos{\left(\frac13\arccos{\left(\frac{-q}{2}\sqrt{\frac{27}{-p^3}}\right)}+ \frac{2k\pi}{3}\right)}\qquad\mbox{ avec }\qquad k\in\{0,1,2\}.
44 $$
45
46
47 \end{itemize}
48 Donnée à titre d'exemple, ce travail montre que rapidement on obtient 
49 des algorithmes compliqués.
50 De plus, Abel a montrée en 1824 qu'il n'est pas toujours possible 
51 d'exprimer les racines de l'équation générale de
52 degré supérieur ou égal à 5 à partir des coefficients du polynôme, des
53 quatre opérations  et des racines nièmes...  
54 On s'intéresse donc aux méthodes numériques.
55
56
57
58 \section{Méthodes classiques}
59 On considère pour l'ensemble du chapitre l'équation $f(x)=0$, où 
60 $x$ décrit l'intervalle $[a,b]$ de $\R$ et $f$ désigne une fonction 
61 définie et continue sur $[a,b]$ et à valeur dans $\R$.
62 On suppose de plus la condition $f(a)f(b)\leq 0$ qui garantit 
63 l'existence d'(au moins) une solution sur $[a,b]$.
64 On présente la méthode par dichotomie et on ferra ensuite des exercices 
65 sur d'autres méthodes.
66
67 \subsection{Méthode par dichotomie}
68 Construisons trois suites $(x_n)_{n \in \N}$,
69 $(a_n)_{n \in \N}$ et $(b_n)_{n \in \N}$ définies par:
70 \begin{itemize}
71 \item $a_0=a$, $b_0=b$ et pour tout $n \in \N$, $x_n = (a_n+b_n)/2$, soit 
72   le milieu de $[a_n,b_n]$;
73 \item si $f(a_n)f(x_n)\leq 0$, alors $a_{n+1} =  a_{n}$ et $b_{n+1}=x_n$;
74 \item si $f(a_n)f(x_n)> 0$, alors $a_{n+1} =  x_{n}$ et $b_{n+1}=b_n$.
75 \end{itemize}
76
77 Par récurrence montrons que $f(a_n)f(b_n)\leq 0$ pour tout $n\in \N$.
78 C'est vrai au rang 0. Supposons que ce le soit jusqu'au rang $n$.
79 Évaluons $f(a_{n+1})f(b_{n+1})$: 
80 \begin{itemize}
81 \item si $f(a_n)f(x_n)\leq 0$ alors comme $a_{n+1} =  a_{n}$ et $b_{n+1}=x_n$, 
82 le résultat est établi, c.-à-d. $f(a_{n+1})f(b_{n+1})\leq 0$;
83 \item sinon, $f(a_n)f(x_n)> 0$. Ainsi $f(a_{n+1})f(b_{n+1})$ a le même 
84 signe que $f(a_{n+1})f(b_{n+1})f(a_n)f(x_n)$ c.-à-d. le signe de  
85 $f(x_{n})f(b_{n})f(a_n)f(x_n)$ soit encore le signe de  $f(a_n)f(b_n)$.
86 Ce dernier est positif d'après l'hypothèse de récurence. 
87 \end{itemize}
88
89 A chaque itération, l'intervalle $[a_n,b_n]$ est découpé 
90 en deux. On a donc 
91 $$
92 \begin{array}{c}
93 |
94 a_{n+1} -
95 b_{n+1} 
96 |
97 \leq 
98 \frac{1}{2}
99 |
100 a_{n} -
101 b_{n} 
102 |, 
103 \,
104 a \le a_n \le x_n \le b_n \le b,
105 \,
106 a_{n+1} \geq a_n
107 \textrm{ et }
108  b_{n+1} \leq b_n
109 \end{array}
110 $$ 
111
112 On obtient alors par récurrence que 
113 \begin{equation}\label{eq:met:maj}
114 |
115 a_{n} -
116 b_{n} 
117 |
118 \leq 
119 \frac{1}{2^n}
120 |
121 a -
122 b
123
124 \end{equation}
125
126 La suite $(a_n)$ est croissante, majorée. Elle converge vers une limite 
127 $\alpha$ quand $n$ tend vers l'infini. 
128 De même, 
129 la suite $(b_n)$ est décroissante, minorée. Elle converge vers une limite 
130 $\alpha'$ quand $n$ tend vers l'infini.
131 D'après l'inégalité précédente, $\alpha = \alpha'$.
132 La suite $(x_n)$ est encadrée par $(a_n)$ et $(b_n)$. Elle converge donc aussi  
133 vers $\alpha$.
134 Enfin, comme $f$ est continue et comme
135 $f(a_n)f(b_n)\leq 0$, on a $f(\alpha)f(\alpha)\leq 0$ et donc 
136 $f(\alpha)=0$ et donc $\alpha$ est une racine.
137 On a donc trouvé une méthode algorithmique simple qui converge vers une 
138 des racines.  
139
140 Essayons maintenant de déterminer une majoration de l'erreur commise à 
141 chaque itération. 
142 Tout d'abord, comme $(a_n)$ est croissante et converge vers $\alpha$ on a 
143 $a_n \leq \alpha$. De même $\alpha \leq b_n$ et donc
144 $a_n \leq \{ \alpha,x_n\} \leq b_n$. 
145 Ainsi, d'après l'équation (\ref{eq:met:maj}), on a 
146 $$ 
147 | x_n - \alpha |
148 \leq 
149 | a_n - b_n |
150 \leq 
151 \frac{1}{2^n}
152 |
153 a -
154 b
155 |. 
156 $$
157
158 Ainsi pour un $\epsilon$ donné positif représentant l'amplitude maximale de l'erreur, posons    
159 \begin{equation}\label{eq:erreur:epsilon}
160 n_0 = \lfloor \dfrac{ \ln(\frac{b-a}{\epsilon})}{\ln(2)} \rfloor + 1 
161 \end{equation}
162
163 Si $n \geq n_0$, alors 
164 $
165 2^n \geq 2^{\frac{ \ln(\frac{b-a}{\epsilon})}{\ln(2)}} \geq  
166 e^{ \ln(\frac{b-a}{\epsilon})} \geq 
167 \frac{b-a}{\epsilon}.
168 $
169 Ainsi $\frac{1}{2^n}(b-a) \leq {\epsilon}$ et donc
170
171 | x_n - \alpha |
172 \leq 
173 {\epsilon}.
174 $
175
176 Pour un $\epsilon$ donné, on sait calculer un rang $n_0$ à partir duquel 
177 l'erreur avec la limite est inférieure à cet $\epsilon$. 
178
179
180
181 \begin{figure}
182 \psset{xunit=3cm,yunit=0.8cm}
183 \savedata{\mydata}[{{0.0, -1.25}, {0.1, -1.24}, {0.2, -1.21}, {0.3, -1.16}, {0.4, -1.0899999999999999}, {0.5, -1.0}, {0.6, -0.89}, {0.7, -0.76}, {0.8, -0.6099999999999999}, {0.9, -0.43999999999999995}, {1.0, -0.25}, {1.1, -0.039999999999999813}, {1.2, 0.18999999999999995}, {1.3, 0.44000000000000017}, {1.4, 0.7099999999999997}, {1.5, 1.0}, {1.6, 1.3100000000000005}, {1.7, 1.6399999999999997}, {1.8, 1.9900000000000002}, {1.9, 2.36}, {2.0, 2.75}, {2.1, 3.16}, {2.2, 3.5900000000000007}, {2.3, 4.039999999999999}, {2.4, 4.51}}]
184 \dataplot[plotstyle=curve,showpoints=true]{\mydata}
185 \psline{<->}(0,2)(0,-2)(0,0)(3,0)
186 \psline{-}(1.3125,0)(2.2,3.55)
187
188 \vspace{2em}
189 % \begin{pspicture}(9,9)
190 % \psaxes[labels=none,ticks=none]{->}(0,0)(8,8)[$x$,0][$y$,0]
191 % \pscurve(1,1)(3,4)(6,6)(8,4)
192 % \pscurve[linestyle=symbol,symbolStep=11.6pt,% must be positive 
193 %   curveticks,startAngle=60](1,1)(3,4)(6,6)(8,4)
194 % \end{pspicture}
195 % \begin{pspicture}(8,8)
196 % \psaxes[labels=none,ticks=none]{->}(0,0)(8,8)[$x$,0][$y$,0]
197 % \pscurve[linestyle=symbol,symbolStep=-20,% must be negative !
198 %   curveticks,startAngle=60](1,1)(3,4)(6,6)(8,4)
199 % \end{pspicture}
200 \caption{Représentation graphique de méthodes itératives de construction de racine}\label{fig:graphe1} 
201 \end{figure}
202
203 \begin{Exo}
204 Soit $f$ une fonction de $\R$ dans $\R$. On suppose 
205 que $f$ possède une racine $\alpha$ dans l'intervalle $[a,b]$ et 
206 on cherche une valeur approchée de cette racine.
207 L'idée commune des méthodes de Lagrange et Newton est d'écrire 
208 \begin{equation}
209 0 = f(\alpha)= f(x) + (\alpha-x)f'(\zeta), \textrm{ où } \zeta \in [\alpha,x]
210 \end{equation}
211 On construit de façon itérative une suite $(x_n)_{n \in \N}$ censée converger 
212 vers $\alpha$ en remplaçant l'équation précédente par 
213 \begin{equation}
214 0 = f(x_n) + (x_{n+1}-x_{n})q_n \label{eq:num:class}
215 \end{equation}
216 où $q_n$ est une approximation de $f'(x_n)$.
217
218 Dans cet exercice, on suppose en plus que:
219 \begin{itemize}
220 \item $f(x_n) \neq 0$ : sinon, la racine est trouvée;
221 \item $f$ est injective sur $[a,b]$ (pour tout $x$, $y$ de $[a,b]$, 
222   si $f(x) = f(y) \Rightarrow x = y$);
223 \item $q_n$ n'est jamais nul.
224 \end{itemize}
225
226 \begin{enumerate}
227 \item Méthode globale
228 \begin{enumerate}
229 \item Montrer que l'on a $x_{n+1} \neq x_{n}$.
230 \item Montrer que (\ref{eq:num:class}) est équivalente à 
231 \begin{equation}
232 x_{n+1} = x_{n} - \frac{f(x_n)}{q_n} \label{eq:num:gen}
233 \end{equation}
234 \item Dans la représentation graphique donnée figure~\ref{fig:graphe1}:
235   \begin{enumerate}
236   \item donner l'équation de la droite tracée;
237   \item montrer que l'abscisse du point d'intersection 
238     de cette droite avec l'axe des abscisses est $x_{n+1}$;
239   \item Construire quelques $x_i$ supplémentaires.
240   \end{enumerate}
241 \end{enumerate}
242
243 \item Dans la méthode de la corde, $q_n$ est constante et égale à 
244 \begin{equation}
245 q_{n} = \frac{f(b) - f(a)}{b - a} \label{eq:num:corde}
246 \end{equation}
247
248 \item Dans la méthode de Lagrange on a 
249 \begin{equation}
250 q_{n} = \frac{f(x_{n}) - f(x_{n-1})}{x_n - x_{n-1}} \label{eq:num:lagrange}
251 \end{equation}
252
253 \item Dans la méthode de Newton on a $q_n = f'(x_n)$
254 \end{enumerate}
255 \end{Exo}
256
257
258
259 \section{Convergence des méthodes de Lagrange et Newton}
260
261
262 \begin{Prop}
263 Soit l'équation $f(x)=0$ et la suite $(x_n)$ des itérés de Newton définie par
264 $x_0$ et $\forall n \in N$, $x_{n+1} = x_{n} -\frac{f(x_n)}{f'(x_n)}$.
265 Sous les hypothèses suivantes:
266 \begin{enumerate}
267 \item $f$ de classe $C^2$ sur $[a,b]$,
268 \item $f(a)f(b) < 0$,
269 \item $ \forall x \in [a,b]$, $f'(x)\neq 0$,
270 \item $f''$ de signe constant sur $[a,b]$,
271 \item $\frac{|f(a)|}{|f'(a)|} < b-a $ et $\frac{|f(b)|}{|f'(b)|} < b-a $,
272 \end{enumerate}
273 la suite des itérés de Newton converge pour tout choix de $x_0$ dans $[a,b]$ vers l'unique 
274 solution $\alpha$ de cet intervalle.
275 \end{Prop}
276
277
278
279  \begin{Def}[Erreur et ordre]
280    Soit $(x_n)$ une suite convergeant vers une valeurs $\alpha$. 
281    On appelle \emph{erreur de rang $n$} le réel $e_n=\alpha-x_n$. On 
282    dit que la convergence est d'ordre $p \in \R^*_+$ si
283    $
284    \lim\limits_{n \to \infty} \dfrac{|e_{n+1}|}{|e_n|^p} = c
285    $, 
286    où $c$ est un réel positif non nul.
287    On remarque que plus l'ordre est élevé, plus la méthode converge vite.
288  \end{Def}
289
290
291 \begin{Prop}[Vitesse de convergence]
292 Si la suite des itérés de Lagrange converge, alors la convergence est 
293 d'ordre $(1+\sqrt{5})/2$.
294 Si la suite des itérés de Newton converge, 
295 alors la convergence est au moins d'ordre 2.
296 \end{Prop}
297
298
299 \section{Méthode de point fixe}
300 Soit $f$  une application d'un ensemble $E$ dans lui-même.
301 On appelle \emph{point fixe} de l'application $f$ tout élément
302 $u$ dans $E$ tel que $g(u)=u$.
303 On voit que résoudre ce type d'équation
304 est un cas particulier des équations numériques 
305 $h(u)=g(u)-u=0$. 
306 Cependant, on peut les étudier pour les algorithmes spécifiques 
307 qui les résolvent. 
308
309 \subsection{Exemples de points fixe}
310 L'équation $x^4+6x^2-60x+36=0$ dite de Ferrari admet deux racines réelles dans l'intervalle $[0,4]$.
311 Pour résoudre numériquement ce problème, on peut transformer l'équation en une équation du point 
312 fixe $g_i(x) =x$ avec 
313 \begin{itemize}
314 \item $g_1(x) = \frac{1}{60}(x^4 + 6x^2 +36)$;
315 \item $g_2(x) = - \frac{36}{x^3+6x-60}$;
316 \item $g_3(x) = (-6x^2+ 60x -36)^{\frac{1}{4}}$.
317 \end{itemize}
318
319
320 \subsection{Algorithme du point fixe}
321 L'algorithme du point fixe donné ci dessous (Algorithme~\ref{algo:pf}) est 
322 une version constructive de la suite $(x_n)$ définie par $x_0$ et pour tout $n \in \N$, 
323 $x_{n+1} = g(x_n)$.
324
325 \begin{algorithm}[H]
326  \LinesNumbered 
327  \SetAlgoLined
328  \KwData{$x_0$: terme initial, $g$: fonction définissant les itérés} 
329  \KwResult{$n$: nombre d'itérations effectuées, $[x_1, \ldots,x_n]$: vecteurs des itérés}
330  $n = 0$ \; 
331  initialisation du booléen d'\textit{arrêt}\; 
332  \While{non(arrêt)}{
333    $x_{n+1} = g(x_n)$ \;
334    $n = n+1$ \;}
335  \caption{Algorithme du point fixe}\label{algo:pf}
336 \end{algorithm}
337
338 \subsection{Conditions suffisantes de convergence}
339
340
341 \begin{Prop}\label{th:csconv:pf}
342 Supposons qu'il existe un intervalle $[a,b]$ de $\R$ sur lequel $g$ vérifie:
343 \begin{enumerate}
344 \item $g$ est définie sur $[a,b]$ et $g([a,b]) \subset [a,b]$;
345 \item $g$ est dérivable sur $[a,b]$ et il existe un réel $k\in[0,1[$ tel que pour 
346 tout $x \in [a,b]$ on a $|g'(x)|<k$;
347 \end{enumerate}
348 alors:
349 \begin{enumerate}
350 \item $g$ admet un point fixe $l$ dans $[a,b]$;
351 \item pour tout $x_0$ de $[a,b]$, la suite $x_n$ converge vers $l$, unique solution dans 
352 $[a,b]$.
353 \end{enumerate}
354 \end{Prop}
355
356
357 \subsection{Vitesse de convergence}
358 \begin{Prop}[Vitesse de convergence de la méthode du point fixe]
359 Sous les hypothèses de la proposition précédente, on peut dire qu'en général
360 la convergence de la méthode du point fixe est linéaire.
361 \end{Prop}
362
363 \begin{Exo}
364 Pour chacune des équations suivantes, étudier la convergence de la suite des 
365 itérés du point fixe pour un $x_0$ choisi dans l'intervalle proposé.
366 \begin{enumerate}
367 \item fonction $g_3$ de Ferrari sur $[2;4]$;
368 \item fonction $g_2$ de Ferrari sur $[3;\textrm{3,1}]$;
369 \end{enumerate}
370 \end{Exo}
371
372
373 \begin{Exo}
374 On verra dans cet exercice que les conditions de la 
375 proposition~\ref{th:csconv:pf}  sont suffisantes, pas nécessaires.
376 \begin{enumerate}
377 \item Quels sont les points fixes de $g(x)=x - x^3$ sur $[-1;1]$?
378 \item La fonction $g$ vérifie-t-elle les hypothèses de la proposition~\ref{th:csconv:pf}?
379 \item Montrer que pour tout $x_0 \in [-1;1]$, la suite des itérés converge. 
380   On pourra  se restreindre à étudier $x_0$ sur  $[0;1]$ comme 
381   la fonction est paire.
382 \item Mêmes questions avec $g(x)=x + x^3$.
383 \end{enumerate}
384 \end{Exo}
385
386 \begin{TP}
387 Tout le code suivant est à faire en python.
388 \begin{enumerate}
389 \item Écrire la fonction 
390 \verb+[n,X] = iteration_dichotomie(a,b,m,epsilon,f)+ où
391 \begin{itemize}
392 \item \verb+a+, \verb+b+ sont les bornes de l'intervalle, \verb+m+
393   est le nombre maximal 
394   d'itérations, \texttt{epsilon} est la précision souhaitée 
395   (voir équation (\ref{eq:erreur:epsilon})) et \verb+f+ la fonction à itérer;
396 \item \verb+n+ est le nombre d'itérations réalisées pour que 
397 \verb+f(+$\verb+x+_{\verb+n+}$\verb+)+=0 ou que 
398 $|\verb+x+_{\verb+n+}- \verb+x+_{\verb+n-1+}| \leq \verb+epsilon+$, \verb+n+ étant inférieur à \verb+m+ et \verb+X+ est 
399   le vecteur contenant les 
400   valeurs $\verb+x+_{\verb+0+},\ldots,\verb+x+_{\verb+n+}$.
401 \end{itemize}
402 \item Écrire la fonction 
403 \verb+[n,X] = iteration_corde(a,b,+$\verb+x+_{\verb+0+}$\verb+,m,epsilon,f)+ où
404 \begin{itemize}
405 \item $\verb+x+_{\verb+0+}$ est le premier terme de la suite;
406 \end{itemize}
407 \item Écrire la fonction 
408 \verb+[n,X] = iteration_Newton(+$\verb+x+_{\verb+0+}$\verb+,m,epsilon,f)+.
409 \end{enumerate}
410 \end{TP}
411
412
413 \begin{TP}
414 L'objectif du TP est de mesurer l'ordre de grandeur de la convergence d'une 
415 méthode.
416 On suppose que la suite $(x_n)$ converge vers $l$ avec l'ordre $p\geq 1$. 
417 On note $e_n= l -x_n$. On a $|e_{n+1}| \approx c |e_n|^p$ et donc 
418 $\ln(|e_{n+1}|) \approx p \ln(|e_n|) + \ln(c)$.
419 En posant $y = \ln(|e_{n+1}|)$, $x = \ln(|e_n|)$ et $k = \ln(c)$ on a 
420 $y = px + k$ soit l'équation d'une droite de pente $p$.
421 Pour estimer $p$, on peut donc tracer l'ensemble de points 
422 $(\ln(|e_{n}|),\ln(|e_{n+1}|))$, contruire la droite de regression linéaire
423 et prendre son coefficient directeur.
424
425 \begin{enumerate}
426 \item Construire la méthode 
427 \verb+p=ordre_convergence(X,l)+ telle que 
428 \begin{itemize}
429 \item \texttt{X} est le vecteur contenant les valeurs des itérés $\verb+x+_{\verb+0+}$, \ldots, $\verb+x+_{\verb+n+}$ et 
430   \verb+l+ est la limite présumée de la suite;
431 \item cette fonction exploite la fonction 
432 \verb+scipy.stats.linregress(x, y=None)+;
433 \item \verb+p+ est l'ordre de convergence calculé numériquement.
434 \end{itemize}
435
436 \item Tester les méthodes du TP précédent 
437   (dichotomie, corde, Lagrange, Newton) pour la fonction 
438   $f$ définie par $f(x)=\cos(x)-x$ sur $[0,\pi/2]$.
439   Calculer l'ordre à l'aide de la fonction développée à la première question.
440 \item Comparer avec la fonction \verb+scipy.optimize.newton+.
441 \end{enumerate}
442 \end{TP}
443
444