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.
10 en 1545 les formules de résolution de certaines équations cubiques de
14 $ avec $p$ et $q$ non nuls. Calculons le discriminant
15 $\Delta = \frac{4}{27}p^3+ p^2$ et discutons de son signe:
17 \item si $\Delta$ est nul, l'équation possède
18 deux solutions réelles, une simple et une double :
22 x_0=2\sqrt[3]{\frac{-q}2}=\frac{3q}p
24 x_1=x_2=-\sqrt[3]{\frac{-q}2}=\frac{-3q}{2p}
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:
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}
41 \item si $\Delta$ est négatif, l'équation possède trois solutions réelles:
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\}.
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.
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.
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:
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$.
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})$:
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.
89 A chaque itération, l'intervalle $[a_n,b_n]$ est découpé
104 a \le a_n \le x_n \le b_n \le b,
112 On obtient alors par récurrence que
113 \begin{equation}\label{eq:met:maj}
126 La suite $(a_n)$ est croissante, majorée. Elle converge vers une limite
127 $\alpha$ quand $n$ tend vers l'infini.
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
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
140 Essayons maintenant de déterminer une majoration de l'erreur commise à
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
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
163 Si $n \geq n_0$, alors
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}.
169 Ainsi $\frac{1}{2^n}(b-a) \leq {\epsilon}$ et donc
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$.
183 \begin{minipage}{0.5\textwidth}
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)
193 \caption{Représentation graphique de méthodes itératives de construction de racine}\label{fig:graphe1}
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
202 0 = f(\alpha)= f(x) + (\alpha-x)f'(\zeta), \textrm{ où } \zeta \in [\alpha,x]
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
207 0 = f(x_n) + (x_{n+1}-x_{n})q_n \label{eq:num:class}
209 où $q_n$ est une approximation de $f'(x_n)$.
211 Dans cet exercice, on suppose en plus que:
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.
220 \item Méthode globale
222 \item Montrer que l'on a $x_{n+1} \neq x_{n}$.
223 \item Montrer que (\ref{eq:num:class}) est équivalente à
225 x_{n+1} = x_{n} - \frac{f(x_n)}{q_n} \label{eq:num:gen}
227 \item Dans la représentation graphique donnée figure~\ref{fig:graphe1}:
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.
236 \item Dans la méthode de la corde, $q_n$ est constante et égale à
238 q_{n} = \frac{f(b) - f(a)}{b - a} \label{eq:num:corde}
241 \item Dans la méthode de Lagrange on a
243 q_{n} = \frac{f(x_{n}) - f(x_{n-1})}{x_n - x_{n-1}} \label{eq:num:lagrange}
246 \item Dans la méthode de Newton on a $q_n = f'(x_n)$
252 \section{Convergence des méthodes de Lagrange et Newton}
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:
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 $,
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.
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
277 \lim\limits_{n \to \infty} \dfrac{|e_{n+1}|}{|e_n|^p} = c
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.
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.
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
299 Cependant, on peut les étudier pour les algorithmes spécifiques
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
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}}$.
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$,
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}
324 initialisation du booléen d'\textit{arrêt}\;
326 $x_{n+1} = g(x_n)$ \;
328 \caption{Algorithme du point fixe}\label{algo:pf}
331 \subsection{Conditions suffisantes de convergence}
334 \begin{Prop}\label{th:csconv:pf}
335 Supposons qu'il existe un intervalle $[a,b]$ de $\R$ sur lequel $g$ vérifie:
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$;
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
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.
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é.
360 \item fonction $g_3$ de Ferrari sur $[2;4]$;
361 \item fonction $g_2$ de Ferrari sur $[3;\textrm{3,1}]$;
367 On verra dans cet exercice que les conditions de la
368 proposition~\ref{th:csconv:pf} sont suffisantes, pas nécessaires.
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$.
380 Tout le code suivant est à faire en python.
382 \item Écrire la fonction
383 \verb+[n,X] = iteration_dichotomie(a,b,m,epsilon,f)+ où
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+}$.
395 \item Écrire la fonction
396 \verb+[n,X] = iteration_corde(a,b,+$\verb+x+_{\verb+0+}$\verb+,m,epsilon,f)+ où
398 \item $\verb+x+_{\verb+0+}$ est le premier terme de la suite;
400 \item Écrire la fonction
401 \verb+[n,X] = iteration_Newton(+$\verb+x+_{\verb+0+}$\verb+,m,epsilon,f)+.
407 L'objectif du TP est de mesurer l'ordre de grandeur de la convergence d'une
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.
419 \item Construire la méthode
420 \verb+p=ordre_convergence(X,l)+ telle que
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.
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+.