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

Private GIT Repository
ajout de partiels
[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 \centering{
183 \begin{minipage}{0.5\textwidth}
184 \vspace{7em}
185 \psset{xunit=3cm,yunit=0.8cm}
186 \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}}]
187 \dataplot[plotstyle=curve,showpoints=true]{\mydata}
188 \psline{<->}(0,2)(0,-2)(0,0)(3,0)
189 \psline{-}(1.3125,0)(2.2,3.55)
190 \vspace{5em}
191 \end{minipage}
192 }
193 \caption{Représentation graphique de méthodes itératives de construction de racine}\label{fig:graphe1} 
194 \end{figure}
195
196 \begin{Exo}
197 Soit $f$ une fonction de $\R$ dans $\R$. On suppose 
198 que $f$ possède une racine $\alpha$ dans l'intervalle $[a,b]$ et 
199 on cherche une valeur approchée de cette racine.
200 L'idée commune des méthodes de Lagrange et Newton est d'écrire 
201 \begin{equation}
202 0 = f(\alpha)= f(x) + (\alpha-x)f'(\zeta), \textrm{ où } \zeta \in [\alpha,x]
203 \end{equation}
204 On construit de façon itérative une suite $(x_n)_{n \in \N}$ censée converger 
205 vers $\alpha$ en remplaçant l'équation précédente par 
206 \begin{equation}
207 0 = f(x_n) + (x_{n+1}-x_{n})q_n \label{eq:num:class}
208 \end{equation}
209 où $q_n$ est une approximation de $f'(x_n)$.
210
211 Dans cet exercice, on suppose en plus que:
212 \begin{itemize}
213 \item $f(x_n) \neq 0$ : sinon, la racine est trouvée;
214 \item $f$ est injective sur $[a,b]$ (pour tout $x$, $y$ de $[a,b]$, 
215   si $f(x) = f(y) \Rightarrow x = y$);
216 \item $q_n$ n'est jamais nul.
217 \end{itemize}
218
219 \begin{enumerate}
220 \item Méthode globale
221 \begin{enumerate}
222 \item Montrer que l'on a $x_{n+1} \neq x_{n}$.
223 \item Montrer que (\ref{eq:num:class}) est équivalente à 
224 \begin{equation}
225 x_{n+1} = x_{n} - \frac{f(x_n)}{q_n} \label{eq:num:gen}
226 \end{equation}
227 \item Dans la représentation graphique donnée figure~\ref{fig:graphe1}:
228   \begin{enumerate}
229   \item donner l'équation de la droite tracée;
230   \item montrer que l'abscisse du point d'intersection 
231     de cette droite avec l'axe des abscisses est $x_{n+1}$;
232   \item Construire quelques $x_i$ supplémentaires.
233   \end{enumerate}
234 \end{enumerate}
235
236 \item Dans la méthode de la corde, $q_n$ est constante et égale à 
237 \begin{equation}
238 q_{n} = \frac{f(b) - f(a)}{b - a} \label{eq:num:corde}
239 \end{equation}
240
241 \item Dans la méthode de Lagrange on a 
242 \begin{equation}
243 q_{n} = \frac{f(x_{n}) - f(x_{n-1})}{x_n - x_{n-1}} \label{eq:num:lagrange}
244 \end{equation}
245
246 \item Dans la méthode de Newton on a $q_n = f'(x_n)$
247 \end{enumerate}
248 \end{Exo}
249
250
251
252 \section{Convergence des méthodes de Lagrange et Newton}
253
254
255 \begin{Prop}
256 Soit l'équation $f(x)=0$ et la suite $(x_n)$ des itérés de Newton définie par
257 $x_0$ et $\forall n \in N$, $x_{n+1} = x_{n} -\frac{f(x_n)}{f'(x_n)}$.
258 Sous les hypothèses suivantes:
259 \begin{enumerate}
260 \item $f$ de classe $C^2$ sur $[a,b]$,
261 \item $f(a)f(b) < 0$,
262 \item $ \forall x \in [a,b]$, $f'(x)\neq 0$,
263 \item $f''$ de signe constant sur $[a,b]$,
264 \item $\frac{|f(a)|}{|f'(a)|} < b-a $ et $\frac{|f(b)|}{|f'(b)|} < b-a $,
265 \end{enumerate}
266 la suite des itérés de Newton converge pour tout choix de $x_0$ dans $[a,b]$ vers l'unique 
267 solution $\alpha$ de cet intervalle.
268 \end{Prop}
269
270
271
272  \begin{Def}[Erreur et ordre]
273    Soit $(x_n)$ une suite convergeant vers une valeurs $\alpha$. 
274    On appelle \emph{erreur de rang $n$} le réel $e_n=\alpha-x_n$. On 
275    dit que la convergence est d'ordre $p \in \R^*_+$ si
276    $
277    \lim\limits_{n \to \infty} \dfrac{|e_{n+1}|}{|e_n|^p} = c
278    $, 
279    où $c$ est un réel positif non nul.
280    On remarque que plus l'ordre est élevé, plus la méthode converge vite.
281  \end{Def}
282
283
284 \begin{Prop}[Vitesse de convergence]
285 Si la suite des itérés de Lagrange converge, alors la convergence est 
286 d'ordre $(1+\sqrt{5})/2$.
287 Si la suite des itérés de Newton converge, 
288 alors la convergence est au moins d'ordre 2.
289 \end{Prop}
290
291
292 \section{Méthode de point fixe}
293 Soit $f$  une application d'un ensemble $E$ dans lui-même.
294 On appelle \emph{point fixe} de l'application $f$ tout élément
295 $u$ dans $E$ tel que $g(u)=u$.
296 On voit que résoudre ce type d'équation
297 est un cas particulier des équations numériques 
298 $h(u)=g(u)-u=0$. 
299 Cependant, on peut les étudier pour les algorithmes spécifiques 
300 qui les résolvent. 
301
302 \subsection{Exemples de points fixe}
303 L'équation $x^4+6x^2-60x+36=0$ dite de Ferrari admet deux racines réelles dans l'intervalle $[0,4]$.
304 Pour résoudre numériquement ce problème, on peut transformer l'équation en une équation du point 
305 fixe $g_i(x) =x$ avec 
306 \begin{itemize}
307 \item $g_1(x) = \frac{1}{60}(x^4 + 6x^2 +36)$;
308 \item $g_2(x) = - \frac{36}{x^3+6x-60}$;
309 \item $g_3(x) = (-6x^2+ 60x -36)^{\frac{1}{4}}$.
310 \end{itemize}
311
312
313 \subsection{Algorithme du point fixe}
314 L'algorithme du point fixe donné ci dessous (Algorithme~\ref{algo:pf}) est 
315 une version constructive de la suite $(x_n)$ définie par $x_0$ et pour tout $n \in \N$, 
316 $x_{n+1} = g(x_n)$.
317
318 \begin{algorithm}[H]
319  \LinesNumbered 
320  \SetAlgoLined
321  \KwData{$x_0$: terme initial, $g$: fonction définissant les itérés} 
322  \KwResult{$n$: nombre d'itérations effectuées, $[x_1, \ldots,x_n]$: vecteurs des itérés}
323  $n = 0$ \; 
324  initialisation du booléen d'\textit{arrêt}\; 
325  \While{non(arrêt)}{
326    $x_{n+1} = g(x_n)$ \;
327    $n = n+1$ \;}
328  \caption{Algorithme du point fixe}\label{algo:pf}
329 \end{algorithm}
330
331 \subsection{Conditions suffisantes de convergence}
332
333
334 \begin{Prop}\label{th:csconv:pf}
335 Supposons qu'il existe un intervalle $[a,b]$ de $\R$ sur lequel $g$ vérifie:
336 \begin{enumerate}
337 \item $g$ est définie sur $[a,b]$ et $g([a,b]) \subset [a,b]$;
338 \item $g$ est dérivable sur $[a,b]$ et il existe un réel $k\in[0,1[$ tel que pour 
339 tout $x \in [a,b]$ on a $|g'(x)|<k$;
340 \end{enumerate}
341 alors:
342 \begin{enumerate}
343 \item $g$ admet un point fixe $l$ dans $[a,b]$;
344 \item pour tout $x_0$ de $[a,b]$, la suite $x_n$ converge vers $l$, unique solution dans 
345 $[a,b]$.
346 \end{enumerate}
347 \end{Prop}
348
349
350 \subsection{Vitesse de convergence}
351 \begin{Prop}[Vitesse de convergence de la méthode du point fixe]
352 Sous les hypothèses de la proposition précédente, on peut dire qu'en général
353 la convergence de la méthode du point fixe est linéaire.
354 \end{Prop}
355
356 \begin{Exo}
357 Pour chacune des équations suivantes, étudier la convergence de la suite des 
358 itérés du point fixe pour un $x_0$ choisi dans l'intervalle proposé.
359 \begin{enumerate}
360 \item fonction $g_3$ de Ferrari sur $[2;4]$;
361 \item fonction $g_2$ de Ferrari sur $[3;\textrm{3,1}]$;
362 \end{enumerate}
363 \end{Exo}
364
365
366 \begin{Exo}
367 On verra dans cet exercice que les conditions de la 
368 proposition~\ref{th:csconv:pf}  sont suffisantes, pas nécessaires.
369 \begin{enumerate}
370 \item Quels sont les points fixes de $g(x)=x - x^3$ sur $[-1;1]$?
371 \item La fonction $g$ vérifie-t-elle les hypothèses de la proposition~\ref{th:csconv:pf}?
372 \item Montrer que pour tout $x_0 \in [-1;1]$, la suite des itérés converge. 
373   On pourra  se restreindre à étudier $x_0$ sur  $[0;1]$ comme 
374   la fonction est paire.
375 \item Mêmes questions avec $g(x)=x + x^3$.
376 \end{enumerate}
377 \end{Exo}
378
379 \begin{TP}
380 Tout le code suivant est à faire en python.
381 \begin{enumerate}
382 \item Écrire la fonction 
383 \verb+[n,X] = iteration_dichotomie(a,b,m,epsilon,f)+ où
384 \begin{itemize}
385 \item \verb+a+, \verb+b+ sont les bornes de l'intervalle, \verb+m+
386   est le nombre maximal 
387   d'itérations, \texttt{epsilon} est la précision souhaitée 
388   (voir équation (\ref{eq:erreur:epsilon})) et \verb+f+ la fonction à itérer;
389 \item \verb+n+ est le nombre d'itérations réalisées pour que 
390 \verb+f(+$\verb+x+_{\verb+n+}$\verb+)+=0 ou que 
391 $|\verb+x+_{\verb+n+}- \verb+x+_{\verb+n-1+}| \leq \verb+epsilon+$, \verb+n+ étant inférieur à \verb+m+ et \verb+X+ est 
392   le vecteur contenant les 
393   valeurs $\verb+x+_{\verb+0+},\ldots,\verb+x+_{\verb+n+}$.
394 \end{itemize}
395 \item Écrire la fonction 
396 \verb+[n,X] = iteration_corde(a,b,+$\verb+x+_{\verb+0+}$\verb+,m,epsilon,f)+ où
397 \begin{itemize}
398 \item $\verb+x+_{\verb+0+}$ est le premier terme de la suite;
399 \end{itemize}
400 \item Écrire la fonction 
401 \verb+[n,X] = iteration_Newton(+$\verb+x+_{\verb+0+}$\verb+,m,epsilon,f)+.
402 \end{enumerate}
403 \end{TP}
404
405
406 \begin{TP}
407 L'objectif du TP est de mesurer l'ordre de grandeur de la convergence d'une 
408 méthode.
409 On suppose que la suite $(x_n)$ converge vers $l$ avec l'ordre $p\geq 1$. 
410 On note $e_n= l -x_n$. On a $|e_{n+1}| \approx c |e_n|^p$ et donc 
411 $\ln(|e_{n+1}|) \approx p \ln(|e_n|) + \ln(c)$.
412 En posant $y = \ln(|e_{n+1}|)$, $x = \ln(|e_n|)$ et $k = \ln(c)$ on a 
413 $y = px + k$ soit l'équation d'une droite de pente $p$.
414 Pour estimer $p$, on peut donc tracer l'ensemble de points 
415 $(\ln(|e_{n}|),\ln(|e_{n+1}|))$, contruire la droite de regression linéaire
416 et prendre son coefficient directeur.
417
418 \begin{enumerate}
419 \item Construire la méthode 
420 \verb+p=ordre_convergence(X,l)+ telle que 
421 \begin{itemize}
422 \item \texttt{X} est le vecteur contenant les valeurs des itérés $\verb+x+_{\verb+0+}$, \ldots, $\verb+x+_{\verb+n+}$ et 
423   \verb+l+ est la limite présumée de la suite;
424 \item cette fonction exploite la fonction 
425 \verb+scipy.stats.linregress(x, y=None)+;
426 \item \verb+p+ est l'ordre de convergence calculé numériquement.
427 \end{itemize}
428
429 \item Tester les méthodes du TP précédent 
430   (dichotomie, corde, Lagrange, Newton) pour la fonction 
431   $f$ définie par $f(x)=\cos(x)-x$ sur $[0,\pi/2]$.
432   Calculer l'ordre à l'aide de la fonction développée à la première question.
433 \item Comparer avec la fonction \verb+scipy.optimize.newton+.
434 \end{enumerate}
435 \end{TP}
436
437