\documentclass{article}
\oddsidemargin 5 mm
\evensidemargin 5 mm
\textwidth 16cm
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath,amsfonts,amssymb}
\usepackage[francais]{babel}
\usepackage{times}
\usepackage{xspace}
\usepackage{makeidx}
\usepackage{ifpdf}
\ifpdf
 \usepackage[colorlinks,pdftex]{hyperref}
\else
 \usepackage[ps2pdf,breaklinks=true,colorlinks=true,linkcolor=red,citecolor=green]{hyperref}
\fi
\newcommand{\bs}{\symbol{92}}
\newcommand{\Z}{\mathbb{Z}}
\newcommand{\Q}{\mathbb{Q}}
\newcommand{\N}{\mathbb{N}}
\newcommand{\R}{\mathbb{R}}
\newcommand{\C}{\mathbb{C}}
\newtheorem{theorem}{Th\'eor\`eme}
\newtheorem{thm}[theorem]{Th\'eor\`eme}
\newtheorem{prop}[theorem]{Proposition}
\newtheorem{defn}{D\'efinition}
\makeindex

%HEVEA\renewcommand{\cuttingunit}{subsection}

% \renewcommand{\cuttingunit}{subsection} (add HEVEA after % for hacha)
\input{giacfr.tex}
\ifhevea
\(
\newcommand{\R}{{\mathbb{R}}}
\newcommand{\mathbb{R}}{{\mathbb{R}}}
\newcommand{\C}{{\mathbb{C}}}
\newcommand{\mathbb{C}}{{\mathbb{C}}}
\newcommand{\Z}{{\mathbb{Z}}}
\newcommand{\N}{{\mathbb{N}}}
\newcommand{\Q}{{\mathbb{Q}}}
\newcommand{\tr}{\mbox{tr\,}}
\newcommand{\M}{\mathrm{M}}
\newcommand{\Mat}{\mathrm{Mat}}
\newcommand{\ds}{\displaystyle}
\)
\else
\newcommand{\R}{{\mathbb{R}}}
\newcommand{\rr}{{\mathbb{R}}}
\newcommand{\C}{{\mathbb{C}}}
\newcommand{\cc}{{\mathbb{C}}}
\newcommand{\Z}{{\mathbb{Z}}}
\newcommand{\N}{{\mathbb{N}}}
\newcommand{\Q}{{\mathbb{Q}}}
\newcommand{\tr}{\mbox{tr\,}}
\newcommand{\M}{\mathrm{M}}
\newcommand{\Mat}{\mathrm{Mat}}
\newcommand{\ds}{\displaystyle}
\fi
%HEVEA\htmlfoot{Retour \`a la page principale de \ahref{http://www-fourier.univ-grenoble-alpes.fr/\home{parisse}/giac_fr.html}{Giac/Xcas}.}
\giacmathjax
%HEVEA\renewcommand{\footertext}{}


\begin{document}
\title{Mat 367, M\'ethodes num\'eriques}
\author{Bernard.Parisse@ujf-grenoble.fr}
\date{2016}

\begin{giacjshere}["max-height: 550px; overflow:auto"]
%\loadgiacjsonline
%\loadgiacjs

\maketitle

La version HTML de ce document comporte des champs de saisie
interactifs, ceux-ci apparaissent comme des commandes ``mortes'' dans
la version PDF. La version HTML est
optimis\'ee pour le navigateur Firefox. Vous pouvez
ex\'ecuter toutes les commandes interactives en cliquant sur le bouton
Ex\'ecuter (attention cela peut prendre un certain temps!), 
le champ suivant est la console de l'interpr\'eteur du
logiciel de calcul formel.
\\
Les commandes sont ex\'ecut\'ees par la version javascript de
Giac/Xcas. Bien que le th\`eme de ce cours soit num\'erique, on verra
sur de nombreuses commandes qu'il est fort utile de disposer 
d'un logiciel capable de faire du calcul formel!

\tableofcontents

\printindex

\pagebreak

\section{Pr\'esentation du module}

Les th\`emes abord\'es seront~:
\begin{enumerate}
\item calcul approch\'e, repr\'esentation des donn\'ees (flottants, vecteurs,
  matrices), erreurs (normes, de calcul, d'arrondi...).
\item Pivot de Gauss, factorisation LU, conditionnement, Cholesky,
  factorisation QR.
\item Interpolation polyn\^omiale (\'evaluation, interpolation de
  Lagrange, Hermite, B\'ezier)
\item Int\'egration num\'erique
\item M\'ethode du point fixe, de Newton,
m\'ethodes it\'eratives en alg\`ebre lin\'eaire
\item M\'ethode de la puissance, valeurs propres
et vecteurs propres.
\item R\'esolution d'\'equations diff\'erentielles.
%\item Optimisation (non fait faute de temps)
\end{enumerate}

L'\'evaluation se fait sur~:
\begin{itemize}
\item 1/2~: un DS à mi-semestre et
certains compte-rendus de TP (à r\'ediger seul ou en binome), 
\item 1/2~: l'examen final
\end{itemize}
Les calculatrices et les netbooks de taille d'\'ecran plus petits
que 13 pouces sont autoris\'ees au DS et à l'examen final (pr\^et possible
de netbooks pour le semestre).

\section{Repr\'esentation des nombres et autres donn\'ees, calcul exact/approch\'e}
Mot-clefs:\\
Types de base~: entier machine, entier long, flottant machine et 
multipr\'ecision (Base 2, base 10). \\
Erreur relative, erreur absolue, erreur d'arrondi, +/-, */\%\\
Algorithme de Horner.
Types compos\'es~: complexes, polynomes (repr\'esentation dense/creuse), 
symboles, listes (vecteurs, matrices), expressions, fonctions.\\

Les principaux ensembles de nombres en math\'ematiques sont les entiers
positifs $\N$ et relatifs $\Z$, les rationnels $\Q$, les r\'eels $\R$
et les complexes $\C$. Sur ordinateur, on peut repr\'esenter ces
nombres de mani\`ere exacte dans certains cas, approch\'ee dans d'autres.

\subsection{Représentation des entiers}

\begin{prop}
{\bf Division euclidienne de deux entiers~:} si $a$ et $b$ sont
deux entiers, $a \geq 0, b>0$, il existe un unique couple $(q,r)$ tel que
\index{division euclidienne}
\[ a = bq +r , \quad r \in [0, b[ \]
\end{prop}
Preuve~: On prend pour $q$ le plus grand entier tel que $a-bq \geq 0$.\\
Exemple~: \giacinput{iquorem(23,7)}

La division euclidienne permet d'écrire un nombre entier, en utilisant
une base $b$ et des caractères pour représenter les entiers
entre 0 et $b-1$. Nous \'ecrivons les nombres entiers en {\bf base} $b=10$\index{base}
avec comme caractères les chiffres de 0 à 9.
Les ordinateurs utilisent des circuits binaires pour stocker
les informations, il est donc naturel d'y travailler en base 2 
en utilisant comme caractères 0 et 1 ou en base 16 en utilisant
comme caractères les chiffres de 0 à 9 et les lettres de A à F.
En g\'en\'eral, pour trouver l'\'ecriture d'un nombre en base $b$ (par
exemple $b=2$), 
on effectue des divisions euclidienne successives par $b$ du nombre puis
de ses quotients successifs jusqu'\`a ce que le quotient soit 0 et on
accolle les restes obtenus (premier reste \`a droite, dernier
reste \`a gauche).
Inversement, pour retrouver un entier $d$ \`a partir
de son \'ecriture $d_n...d_0$, on traduit les divisions euclidiennes 
successives en 
\begin{eqnarray*}
 d &=&( ... ((d_n b +d_{n-1})b + d_{n-2})...+d_1)b+d_0\\
&=& d_n b^n + d_{n-1} b^{n-1} + ... + d_0
\end{eqnarray*}
Par exemple, vingt-cinq s'\'ecrit en base 16 \verb|0x19| car 25 divis\'e
par 16 donne quotient 1, reste 9\\
\giacinput{convert(25,base,16)}\\
En base 2, on trouverait \verb|0b11001| car $25=2^4+2^3+1$.\\
\giacinput{convert(25,base,2)}\\
On peut effectuer les op\'erations arithm\'etiques de base 
(+,-,*, division) directement en base 2 (ou 16). Par exemple
la table de l'addition est 0+0=0, 0+1=1+0=1 et 1+1=0 je retiens 1,
donc~:
\begin{verbatim}
  01001111
+ 01101011
----------
  10111010
\end{verbatim}

{\bf Exercice~}: 
comment passe-t-on simplement de la représentation d'un nombre en
base 2 à un nombre en base 16 et réciproquement~?

Les microprocesseurs peuvent effectuer directement
les opérations arithmétiques de base sur les entiers ``machine''
(d\'eclin\'es en plusieurs variantes selon la taille et la
possibilit\'e d'avoir un signe). Noter que la division de deux
entiers $a$ et $b$ n'a pas la même signification que la division de deux
réels, comme elle ne tomberait pas forcément juste, 
on calcule le quotient et le reste de la division euclidienne. 

Ces entiers machines permettent
de représenter de manière exacte des petits entiers relatifs 
par exemple un entier machine sign\'e sur 4 octets est
compris entre $[-2^{31},2^{31}-1]$. 

Ces entiers machines permettent de faire très rapidement
du calcul exact sur les
entiers, mais \`a condition qu'il n'y ait pas de d\'epassement
de capacit\'e, par exemple pour des entiers 32 bits, $2^{30}+2^{30}+2^{30}+2^{30}$
renverra 0. Ils sont utilisables avec tous les langages de
programmation traditionnels.

Les logiciels de calcul formel et certains logiciels
de programmation permettent de travailler avec
des entiers de taille beaucoup plus grande, ainsi qu'avec des
rationnels, permettant de faire du calcul exact, mais on paie
cette exactitude par un temps de calcul plus long, de plus
pas mal de m\'ethodes num\'eriques ne gagnent rien \`a
faire des calculs interm\'ediaires exacts. N\'eanmoins, l'utilisation
d'un logiciel de calcul formel permettra dans certains cas d'illustrer
certains ph\'enom\`enes dus au calcul approch\'e.

\subsection{Les r\'eels}
On se ram\`ene d'abord au cas des r\'eels positifs, en machine
on garde traditionnellement un bit pour stocker le signe du r\'eel
\`a repr\'esenter.

\subsubsection{Virgule fixe et flottante.}
La premi\`ere id\'ee qui vient naturellement serait d'utiliser
un entier et de d\'eplacer la virgule
d'un nombre fixe de position, ce qui revient \`a mulitplier
par une puissance (n\'egative) de la base. Par exemple en base 10 avec un
d\'ecalage de 4, \verb|1234.5678|
serait repr\'esent\'e par \verb|12345678| et \verb|1.2345678| par
\verb|12345| (on passe de l'entier au r\'eel par multiplication
par $10^{-4}$. L'inconv\'enient d'une telle repr\'esentation est
qu'on ne peut pas repr\'esenter des r\'eels grands ou petits,
comme par exemple le nombre d'Avogadro, la constante de Planck, etc.

D'o\`u l'id\'ee de ne pas fixer la position de la virgule, on parle
alors de repr\'esentation \`a virgule flottante ou de nombre flottant~: on
repr\'esente un nombre par deux entier, l'un appel\'e {\bf mantisse}\index{mantisse}
reprend les chiffres significatifs du r\'eel sans virgule, l'autre
l'exposant, donne la position de la virgule. Attention, le séparateur
est un point et non une virgule dans la grande
majorité des logiciels scientifiques.
On s\'epare
traditionnellement la mantisse de l'exposant par la lettre \verb|e|.
Par exemple \verb|1234.5678| peut \^etre repr\'esent\'e 
par \verb|12345678e-8| (mantisse \verb|12345678|, exposant -8)
mais aussi par \verb|1234567800e-10|.

Naturellement, sur un ordinateur, il y a des limites pour les entiers  
repr\'esentant la mantisse $m$ et l'exposant $e$. 
Si on \'ecrit les nombres en base
$b$, la mantisse $m$ s'\'ecrira avec un nombre $n$ fix\'e de chiffres (ou
de bits en base 2), donc $m \in [0,b^n[$. Soit un r\'eel $x$ repr\'esent\'e
par
\[ x=mb^e, \quad m \in [0,b^n[ \]
Si $m\in [0,b^{n-1}[$, alors on peut aussi \'ecrire $x=m' b^{e-1}$ avec
$m'=mb \in [0,b^n[$, quelle \'ecriture faut-il choisir?
Intuitivement, on sent qu'il vaut mieux prendre $m'$ le plus grand
possible, car cela augmente le nombre de chiffres significatifs (alors
que des 0 au d\'ebut de $m$ ne sont pas significatifs).
Ceci est confirm\'e par le calcul de l'erreur d'arrondi pour
repr\'esenter un r\'eel. En effet, si $x$ est un r\'eel non nul, il ne
s'\'ecrit pas forc\'ement sous la forme $mb^e$, on doit l'arrondir,
par exemple au plus proche r\'eel de la forme $mb^e$. La distance
de $x$ \`a ce r\'eel est inf\'erieure ou \'egale \`a la moiti\'e
de la distance entre deux flottants cons\'ecutifs, 
$mb^e$ et $(m+1)b^e$, donc l'erreur d'arrondi
est inf\'erieure ou \'egale \`a $b^e/2$. Si on divise par $x \geq mb^e$,
on obtient une erreur relative d'arrondi major\'ee par $1/(2m)$.
On a donc int\'er\^et \`a prendre $m$ le plus grand possible pour
minimiser cette erreur. Quitte \`a mulitplier par $b$, on peut
toujours se ramener (sauf exceptions, cf. ci-dessous), 
\`a $m \in [b^{n-1},b^n[$, on a alors
une erreur d'arrondi relative major\'ee par
\[ \frac{1}{2b^{n-1}}\]

On appelle {\bf flottant normalis\'e}\index{normalis\'e} un flottant tel que $m \in
[b^{n-1},b^n[$. Pour \'ecrire un r\'eel sous forme de flottant
normalis\'e, on \'ecrit le r\'eel en base $b$, et on d\'eplace
la virgule pour avoir exactement $n$ chiffres non nuls avant la
virgule et on arrondit (par exemple au plus proche). 
L'exposant est \'egal au d\'ecalage effectu\'e.
Notez qu'en base 2, un flottant normalisé commence forcément
par 1, ce qui permet d'économiser un bit dans le stockage.

Ainsi, l'erreur d'{\bf arrondi}\index{arrondi} commise lorsqu'on
représente un réel (connu exactement) par un double normalis\'e 
est une erreur relative inf\'erieure \`a
de $2^{-53}$ ($b=2$ et $n=52+1$ pour les doubles).

Exemples~: 
\begin{itemize}
\item en base 10 avec $n=6$, pour repr\'esenter
$\pi=3,14159265...$, on doit d\'ecaler la virgule de 5 positions,
on obtient \verb|314159.265...| on arrondit \`a $314159$ donc
on obtient \verb|314159e-5|.
\item en base 2 avec $n=10$, pour repr\'esenter trois cinqui\`emes ($3/5$
en base 10, not\'e $11/101$ en base 2), 
on pose la division en base 2 de \verb|11| par 
\verb|101|, ce qui donne
\begin{verbatim}
 11        | 101
 110       ---------
-101       | 0.1001
----       |
  010      |
   100     |
   1000    |
  - 101    |
  -----    |
    011    |
\end{verbatim}
on retrouve le nombre de d\'epart donc le d\'eveloppement est
p\'eriodique et vaut \verb|0.1001 1001 1001 ...|.
On d\'ecale le point de 10 positions, on arrondit,
donc trois cinqui\`emes est
repr\'esent\'e par la mantisse \verb|1001100110| et l'exposant
\verb|-10|. On observe aussi sur cet exemple que $3/5$ dont l'\'ecriture
en base 10 \verb|0.6| est exacte, n'a pas d'\'ecriture exacte en base
2 (de m\^eme que 1/3 n'a pas d'\'ecriture exacte en base 10).
\end{itemize}

Il existe une exception \`a la possibilit\'e de normaliser les flottants,
lorsqu'on atteint la limite inf\'erieure de l'exposant $e$. 
Soit en effet $e_m$ le plus petit exposant des flottants normalis\'es
et consid\'erons les flottants $x=b^{e_m}(1+1/b)$ et $y=b^{e_m}$. Ces
flottants sont distincts, 
mais leur diff\'erence n'est plus repr\'esentable par un flottant normalis\'e.
Comme on ne souhaite pas repr\'esenter $x-y$ par 0, 
(puisque le test $x==y$ renvoie faux), on introduit les flottants 
{\bf d\'enormalis\'es} \index{d\'enormalis\'e}, il s'agit de
flottants dont l'exposant est l'exposant minimal repr\'esentable sur
machine et dont la mantisse appartient \`a $[0,b^{n-1}[$. Par exemple
0 est repr\'esent\'e par un flottant d\'enormalis\'e de mantisse 0
(en fait 0 a deux repr\'sentation, une de signe positif et une de
signe n\'egatif).

Enfin, on utilise traditionnellement une valeur de l'exposant pour
repr\'esenter les nombres plus grands que le plus grand r\'eel
repr\'sentable sur machine (traditionnellement appel\'e plus ou
moins infini)
et les erreurs (par exemple 0./0. ou racine carr\'ee d'un nombre
r\'eel n\'egatif, traditionnellement appel\'e NaN, Not a Number).

{\bf Exercice}~: quels sont les nombres r\'eels repr\'esentables exactement
en base 10 mais pas en base 2~?
Si on écrit $1/10$ en base 2 avec 53 bits de précision, puis que
l'on arrondit avec 64 bits de précision, ou si on écrit $1/10$ en
base 2 avec 64 bits de précision, obtient-on la même chose~?

Les ordinateurs repr\'sentent g\'en\'eralement les flottants en base 2 
(cf. la section suivante pour
plus de pr\'ecisions), mais cette repr\'esentation n'est pas utilis\'ee
habituellement par les humains, qui pr\'ef\`erent compter
en base 10. Les ordinateurs effectuent donc la conversion dans
les routines d'entr\'ee-sortie. Le format standard utilis\'e
pour saisir ou afficher un nombre flottant dans un logiciel
scientifique est compos\'e d'un nombre \`a virgule
flottante utilisant le point comme s\'eparateur d\'ecimal (et
non la virgule) suivi si n\'ecessaire de la lettre \verb|e| puis de l'exposant,
par exemple \verb|1.23e-5| ou \verb|0.0000123|. Dans les
logiciels de calcul formel, pour distinguer un entiers
repr\'esent\'es par un entier
d'un entier repr\'esent\'e par un flottant on \'ecrit
l'entier suivi de \verb|.0| par exemple \verb|23.0|.

{\bf Remarque}~:\\
Les microprocesseurs ayant un mode {\bf BCD}\index{BCD} peuvent avoir un format
de repr\'esentation des flottants en base 10, les nombres d\'ecimaux
comme par exemple 0.3 peuvent \^etre repr\'esent\'es exactement. 
Certains logiciels, notamment maple, utilisent par d\'efaut des
flottants logiciels en base 10 sur des microprocesseurs sans mode BCD, 
ce qui entraine une baisse de
rapidit\'e importante pour les calculs num\'eriques (on peut
partiellement am\'eliorer les performances en utilisant \verb|evalhf|
en maple).

\subsubsection{Les flottants au format {\tt double}} 
\index{flottant} \index{double}
Cette section d\'eveloppe les notions de la section pr\'ec\'edente
pour les flottants machine selon la norme IEEE-754, utilisables dans les langage de
programmation usuels, elle peut \^etre omise en première lecture.
La représentation d'un double
en mémoire se compose de 3 parties~: le bit\index{bit} 
de signe $s=\pm 1$ sur 1 bit, 
la mantisse\index{mantisse} $M \in [0,2^{52}[$ sur 52 bits, 
et l'exposant\index{exposant} $e \in [0, 2^{11}[$ sur 11 bits. Pour les nombres
``normaux'', l'exposant est en fait compris entre 1 et $2^{11}-2$,
le nombre repr\'esent\'e est le rationnel
\[ (1+\frac{M}{2^{52}}) 2^{e+1-2^{10}} \]
Pour \'ecrire un nombre sous cette forme, il faut d'abord chercher par
quel multiple de 2 il faut le diviser pour obtenir un r\'eel $r$ dans
$[1,2[$, ce qui permet de d\'eterminer l'exposant $e$. Ensuite on
\'ecrit la repr\'esentation en base 2 de $r-1 \in [0,1[$.
Exemples~:
\begin{itemize}
\item -2 \\
Signe n\'egatif. Il faut diviser sa valeur absolue 
2 par $2^1$ pour \^etre entre 1 et 2 dont
$e+1-2^{10}=1$, l'exposant est $e=2^{10}$. On a alors $r=1$, $r-1=0$.
Repr\'esentation \\
\verb|1 10000000000 00000000...0000|
\item 1.5=3/2\\
Signe positif, compris entre 1 et 2 dont l'exposant v\'erifie
$e+1-2^{10}=0$ soit
$e=2^{10}-1=2^9+2^8+2^7+2^6+2^5+2^4+2^3+2^2+2^1+2^0$. 
On a $r-1=1/2=2^{-1}$. D'o\`u la repr\'esentation\\
\verb|0 01111111111 10000000...0000|
\item 6.4=32/5\\
Positif. Il faut le diviser par $2^{2}$ pour avoir $8/5 \in [1,2[$
donc $e+1-2^{10}=2$ soit $e=2^{10}+1$. Ensuite $r=3/5$ qu'il faut
\'ecrire en base 2 (cf. section pr\'ec\'edente),
on \'ecrit donc les 52 premiers \'el\'ements du d\'eveloppement
avec une r\`egle d'arrondi du dernier bit au nombre le plus proche. 
Ici le bit suivant le dernier \verb|1001| est un \verb|1|, on arrondit
donc \`a \verb|1010|. D'o\`u la repr\'esentation\\
\verb|0 1000000001 100110011001...10011010|\\
\end{itemize}
On observe que la repr\'esentation en base 2 de 6.4 a du \^etre
arrondie (car elle est infinie en base 2) bien qu'elle soit exacte
(finie) en base 10.
Seuls les entiers et les rationnels dont le d\'enominateur est une puissance
de 2 peuvent \^etre repr\'esent\'es exactement.
Ceci entraine des r\'esultats qui peuvent surprendre
comme par exemple le fait que
\verb|0.5 - 5*0.1| n'est pas nul.

Des représentations spéciales (avec $e=0$ ou $e=2^{11}-1$) 
ont été introduites
pour représenter $\pm \infty$ (pour les flottants plus grands
en valeur absolue que le plus grand flottant représentable), et pour
repr\'esenter les
nombres non nuls plus petits que le plus petit flottant représentable
de la manière exposée ci-dessus (on parle de flottants dénormalisés),
ainsi que le nombre NaN (Not a Number) lorsqu'une opération a un résultat
indéfini (par exemple 0/0).

Remarque~: Sur les processeurs compatibles avec les i386, 
le coprocesseur arithmétique i387 gère en interne des flottants
avec 80 bits dont 64 bits de mantisse. Sur les architectures 64 bits
(x86 ou AMD), le jeu d'instruction SSE permet de travailler avec
des flottants de 128 bits. Le compilateur gcc permet d'utiliser
ces flottants longs avec le type \verb|long double| ou
les types \verb|__float80| et \verb|__float128| en utilisant
un drapeau de compilation du type \verb|-msse|

\subsubsection{Op\'erations sur les flottants}
Les opérations arithmétiques de base sur les flottants
se font de la manière suivante~:
\begin{itemize}
\item addition et soustraction~: on détecte s'il faut additionner
ou soustraire en valeur absolue en analysant les signes,
on détermine l'exposant le plus grand et on décale la partie mantisse 
du flottant dont l'exposant est le plus petit pour se ramener à additionner
deux entiers (partie mantisses correspondant au même exposant), 
on décale à nouveau la partie mantisse en modifiant l'exposant 
après l'opération pour normaliser le flottant
\item multiplication~: on additionne les exposants et on multiplie
les parties mantisses (vus comme des entiers), on arrondit et
on ajuste l'exposant si nécessaire
\item division~: on soustrait les exposants et on divise les parties
mantisses (division ``à virgule''), on tronque et on
ajuste l'exposant si nécessaire
\end{itemize}

\subsubsection{Erreurs} \index{erreur}
La repr\'esentation des nombres r\'eels par des doubles pr\'esente
des avantages, les op\'erations arithm\'etiques
sont faites au plus vite par le microprocesseur.
Les coprocesseurs arithmétiques (intégrés sur les microprocesseurs
de PC) proposent m\^eme
le calcul des fonctions usuelles (trigonométriques, racine carrée, log et exp)
sur le type double et utilisent des formats de représentation interne
ayant plus de 64 bits pour les doubles, ce qui permet de limiter
les erreurs d'arrondi. 
Par contre, des erreurs vont \^etre introduites,
on parle de calcul approch\'e par opposition au calcul exact sur les
rationnels. En effet, la repr\'esentation doit d'abord arrondir 
tout r\'eel qui n'est pas un rationnel dont le d\'enominateur
est une puissance de 2. Ensuite chaque op\'eration va entrainer
une propagation de ces erreurs et va y ajouter une erreur d'arrondi 
sur le r\'esultat.
Enfin, l'utilisation du type double peut provoquer un d\'epassement
de capacit\'e (par exemple \verb|100!*100!|).

Pour diminuer ces erreurs et les risques de d\'epassement de
capacit\'e, il existe des types flottants multiple pr\'ecision,
qui permettent de travailler avec un nombre fix\'e \`a l'avance
de d\'ecimales et une plage d'exposants plus grande. Les calculs sont plus longs mais les erreurs
plus faibles. Attention, il s'agit toujours de calcul approch\'e!
De plus, pour des quantit\'es dont la valeur est d\'etermin\'ee
de mani\`ere exp\'erimentale, la source principale de propagation
d'erreurs est la pr\'ecision des quantit\'es initiales, il ne sert
souvent \`a rien d'utiliser des types flottants multipr\'ecision car les
erreurs dus à la représentation (double) sont négligeables devant
les erreurs de mesure. Dans ce cas, il est pertinent lorsqu'on
\'evalue $f(x)$ avec $x$ mal connu de calculer aussi $f'(x)$, en effet~:
$$ f(x(1+h))= f(x)+xh f'(x) + O(h^2)$$
l'erreur relative sur $f(x)$ est donc au premier ordre multipli\'ee par
$$ |\frac{xf'(x)}{f(x)}|$$
Par exemple, l'erreur relative sur $e^x$ est au premier ordre l'erreur relative sur $x$
multipli\'ee par $|x|$.
\giacinputbigmath{a:=convert(100,interval); (right(a)-left(a))/evalf(a,12)}\\
\giacinputbigmath{b:=exp(a); (right(b)-left(b))/evalf(b,12)}

\subsubsection{Erreur absolue, relative, arrondi propagation des erreurs.}
On a vu pr\'ec\'edemment que pour repr\'esenter un r\'eel, on devait
l'arrondir, ce qui introduit une erreur m\^eme si le r\'eel est
connu exactement (par exemple 1/10).
Voyons comment se propagent les {\bf erreurs}\index{erreur} 
dans les opérations arithmétiques
de base~: on distingue l'addition, la multiplication
et l'inversion. La soustraction se ramène à l'addition car
le calcul de l'opposé n'introduit aucune erreur nouvelle.
Pour l'addition, si $|x -x_0| \leq \varepsilon_0$ et si $|y-y_0| \leq \varepsilon_1$
alors par l'inégalité triangulaire ($|a+b|\leq |a|+|b|$), on a~:
\[ |(x+y)-(x_0+y_0)| \leq |x-x_0| + | y-y_0 | \leq 
\varepsilon_0 + \varepsilon_1 \]
on dit que les erreurs {\em absolues\/} s'additionnent. 
\begin{defn}
L'{\bf erreur absolue}\index{erreur absolue}
est définie comme un majorant de la valeur absolue
de la différence entre le nombre réel et
son représentant double~:
\[ |x-x_0| \leq \varepsilon \]
\end{defn}
Mais comme il faut représenter $x_0+y_0$
en machine, on doit ajouter une erreur d'arrondi, qui est
proportionnelle \`a la valeur absolue de $x_0+y_0$ d'o\`u la notion
d'erreur {\em relative}~:
\begin{defn}
L'{\bf erreur relative}\index{erreur relative} 
est égale à l'erreur absolue divisée par
la valeur absolue du nombre
\[ |x-x_0| \leq \varepsilon |x_0| \]
\end{defn}
Remarquons au passage que les erreurs de mesure expérimentales sont 
pratiquement toujours des erreurs relatives.

Donc lorsqu'on effectue une addition (ou une soustraction) de deux réels
sur machine, on doit additionner les deux erreurs absolues sur les opérandes
et ajouter une erreur d'arrondi (relative de $2^{-53}$, à titre
d'exercice, on pourra vérifier que cette erreur
d'arrondi est majorée par l'erreur absolue de la somme 
$x+y$ dès l'instant où
$x$ et $y$ ont eux-même une erreur d'arrondi).

Lorsqu'on effectue une multiplication de deux nombres $x,y$ dont les
représentants $x_0,y_0$ sont non nuls, on a
\[ \left| \frac{xy-x_0 y_0}{x_0 y_0} \right| = 
\left| \frac{x}{x_0} \frac{y}{y_0} -1 \right|
= \left| 
(\frac{x}{x_0}-1)(\frac{y}{y_0} -1)+(\frac{x}{x_0}-1)+(\frac{y}{y_0} -1) 
\right|  \]
l'erreur relative est donc la somme des erreurs relatives et du produit
des erreurs relatives (on peut souvent négliger le produit devant la somme). Il
faut aussi y ajouter une erreur relative d'arrondi de $2^{-53}$ sur $x_0 y_0$.

On observe que la multiplication est une opération posant moins
de problèmes que l'addition, car on manipule toujours des erreurs
relatives, par exemple si l'erreur relative sur deux doubles
$x$ et $y$ non nuls
est de $2^{-53}$, alors l'erreur relative sur $xy$ sera de 
\[ 2^{-53} + 2^{-53} + 2^{-106} + 2^{-53} \approx 3 \times 2^{-53} \]
Lorsque l'erreur relative sur les données est grande devant $2^{-53}$,
l'erreur relative d'arrondi final est négligeable, on peut alors dire que
les erreurs relatives s'additionnent pour un produit (c'est aussi vrai
pour un quotient: exercice!).
Par contre, si on additionne deux nombres dont le représentant de
la somme est proche de 0, la somme des erreurs absolues peut
devenir non négligeable par rapport à la somme des représentants, entrainant
une erreur relative très grande. Par exemple si $x$ est représenté
par $x_0=1+2^{-52}$ avec
une erreur d'arrondi de $2^{-53}$ et
$y$ par $y_0=-1$ avec la même erreur d'arrondi, 
l'addition de $x$ et $y$ renvoie $2^{-52}$ avec une erreur
absolue de $2 * 2^{-53}$ (ici il n'y a pas d'arrondi lorsqu'on fait la somme).
C'est une erreur relative de $1$ (qui domine largement
l'erreur d'arrondi) ce qui signifie que dans la mantisse, seul le
premier bit sur les 52 a un sens, la perte de précision est très grande.

Une autre conséquence importante est que l'addition de réels sur machine
n'est pas une opération associative,
par exemple
\[ (2.0^{-53}+2.0^{-53})+1.0 \rightarrow 1+2^{-52} \]
alors que
\[ 2.0^{-53}+(2.0^{-53}+1.0) \rightarrow 1 \]
Dans Xcas, il n'y a que 48 bits de mantisse~:
\giacinputbigmath{(2.^(-48)+(2.^(-48)+1.))-1.;  ((2.^(-48)+2.^(-48))+1.)-1.}
Si on a plusieurs termes
à additionner, il faut commencer par additionner entre eux
les termes les plus petits, pour que les petits termes ne soient
pas absorbés un à un dans les erreurs d'arrondi (les petits ruisseaux
font les grands fleuves).

Exercice~: pour calculer la valeur
num\'erique d'une d\'eriv\'ee de fonction, il vaut mieux
calculer $(f(x+h)-f(x-h))/(2h)$ que $(f(x+h)-f(x))/h$ car le terme
d'erreur est en $O(h^2)$ et non en $O(h)$. Attention
toutefois \`a ne pas prendre $h$ trop petit, sinon $x+h=x$
en flottants et m\^eme si $x+h \neq x$, l'erreur absolue sur
$f(x+h)-f(x-h)$ est (au moins) d'ordre $\varepsilon |f(x)|$, donc l'erreur
relative est d'ordre $\varepsilon/h |f(x)|$. 
Par exemple pour {\tt h=1e-8} le reste est en $O(h^2)$ donc
de l'ordre des erreurs d'arrondi mais l'erreur relative sur
$f(x+h)-f(x-h)$ est d'ordre $\epsilon/h$ largement sup\'erieure
(en flottants double-pr\'ecision). On choisira plut\^ot $h$ tel que
$\epsilon/h$ soit proche de $h^2$, donc de l'ordre de {\tt 1e-5}, qui
fournira une valeur approch\'ee avec une erreur relative de l'ordre
de {\tt 1e-10}.
Exemple~: calcul de la d\'eriv\'ee num\'erique de $\exp(\sin(x))$ en $x=1$
\giacinputbigmath[style="width:800px;height:40px;font-style:large"]{f(x):=exp(sin(x)); seq(taux_accroissement(f(x),1.0-10^(-k),1.0+10^(-k))-f'(1.0),k,1,11)}

Remarquons néanmoins que les erreurs calculées ici sont des majorations
des erreurs réelles (ou si on préfère l'erreur obtenue dans le pire
des cas), statistiquement les erreurs sur les résultats sont moindres,
par exemple si on effectue $n$ calculs susceptibles de provoquer
des erreurs ind\'ependantes suivant une m\^eme loi d'esp\'erance nulle, la moyenne des
erreurs divis\'ee par l'\'ecart-type de la loi
tend vers une loi normale centr\'ee r\'eduite. De mani\`ere plus
d\'eterministe, on a l'in\'egalit\'e de Bienaym\'e-Tchebyshev
\[ P(|X|>\alpha) \leq \frac{n\sigma^2}{\alpha^2}\]
o\`u $X$ est la variable al\'eatoire somme des $n$ erreurs, $\alpha$
l'erreur et $n\sigma^2$ la variance de la somme $n$ erreurs
suppos\'ees ind\'ependantes, cette probabilit\'e tend vers 0 pour $n$
grand si $\alpha$ est d'ordre $n$, et ne tend
pas vers 0 si $\alpha$ est de l'ordre de $\sqrt{n}$.
Exemple~: somme de $n=400$ nombres r\'epartis sur $[-1,1]$ selon la loi
uniforme (repr\'esentant des erreurs), on divise par $\sqrt{n}=$20, 
on effectue plusieurs tirages (par exemple 500) on trace l'histogramme et 
on compare avec la loi normale de moyenne
nulle (l'esp\'erance de la somme) et d'\'ecart-type celui de la loi
uniforme.
\giacinput[style="width:800px;height:40px;font-style:large"]{m:=ranm(400,500,-1..1):;gl_x=-2..2;histogram(sum(m)/20,-1,0.1); plot(normald(0,0.57),-2..2)}

Il est d'ailleurs souvent trop difficile de calculer une majoration
rigoureuse de l'erreur pour des calculs sauf les plus simples.
Lorsqu'on doute de la précision d'un calcul, un test peu couteux consiste
à refaire ce calcul en utilisant des flottants en précision plus
grande et tester si le résultat varie en fonction du nombre de chiffres
significatifs utilisés, ou faire varier l\'eg\`erement
les donn\'ees et observer la sensibilit\'e du r\'esultat.
Si on veut travailler en toute rigueur sans
pour autant calculer les erreurs à priori, il faut utiliser un logiciel
utilisant des intervalles pour représenter les réels (section suivante)

\subsection{L'arithm\'etique d'intervalle.}\index{intervalle, arithm\'etique}
Certains syst\`emes de calcul formel peuvent manipuler directement
des intervalles r\'eels, par exemple par l'interm\'ediaire de la
bibliothèque C MPFI. Les op\'erations arithm\'etiques sur des
intervalles renvoient alors le meilleur intervalle possible contenant
toutes les valeurs possibles lorsque les op\'erandes parcourent
leurs intervalles respectifs.
Exemple en Xcas (version 1.1.1 et ult\'erieures)~:
\verb|[-1..2]*[-1..2]| renvoie \verb|[-2..4]|.
Attention ici on parcourt toutes les valeurs possibles de 
$xy, \ x \in [-1,2], y \in [-1,2]$. Ce qui est diff\'erent du carr\'e
d'un intervalle ou plus g\'en\'eralement de l'\'evaluation
d'un polyn\^ome en un intervalle, \verb|horner(x^2,[-1..2])|
renvoie ainsi \verb|[0..4]|.

Les fonctions disponibles sont souvent moins riches qu'en
arithm\'etique flottante, le calcul d'une fonction non monotone
sur un intervalle peut s'av\'erer d\'elicat, alors que si la fonction
est monotone, il suffit de calculer l'image des deux bornes
de l'intervalle. Pour les polyn\^omes, Xcas d\'ecompose
les coefficients en deux parties $P=P_+-P_-$ en fonction
du signe, puis utilise la monotonie de $P_+$ et $P_-$ sur
$\R^+$ et $\R^-$ respectivement.

L'arithm\'etique d'intervalle dans $\C$ est beaucoup plus difficile
\`a mettre en oeuvre puisqu'il n'y a plus d'ordre ni de monotonie,
on doit alors s'en remettre \`a des estimations sur les parties
r\'eelles et imaginaires qui ne tiendront pas compte du ph\'enom\`ene
ci-dessus sur la diff\'erence entre $xy, \ x \in [-1,2], y \in [-1,2]$
et $x^2, \ x \in [-1,2]$.

\subsection{Types compos\'es.}
Apr\`es les nombres r\'eels, on passe aux 
{\bf nombres complexes}\index{complexe}~: 
on utilise un couple (partie r\'eelle, imaginaire) de fractions (exacts) 
ou de flottants et les r\`egles habituelles sur les complexes.

On peut repr\'esenter les {\bf polynôme}\index{polynome}
de la facon suivante~:
\begin{itemize}
\item les polynômes à 1 variable, repr\'esentation dense, on stocke
la liste des coefficients du polynôme par ordre croissant ou d\'ecroissant
\item les polynômes à 1 variable, repr\'esentation creuse, on stocke
des paires coefficients, degr\'e pour les coefficients non nuls
\item les polynômes à plusieurs variables, repr\'esent\'e r\'ecursivement
de mani\`ere dense ou creuse (i.e. $P(x_1,...,x_n)$ vu comme polynôme
en $x_n$ à coefficients polynômes d\'ependant des variables $x_1,...,x_{n-1}$),
ce sont des cas particuliers des 2 cas pr\'ec\'edents
\item les polynômes à plusieurs variables distribu\'es, on stocke
des monômes, qui sont des paires coefficient, liste d'entiers,
la liste repr\'esentant les exposant des variables dans le monôme.
\item la repr\'esentation symbolique (par exemple $x y^2-5x+y^3$)
beaucoup plus difficile à manipuler directement
\end{itemize}
Algorithmes de base sur les polynômes~: 
l'\'evaluation en un point (Horner, cf. TD/TP), la multiplication et 
division euclidienne et le PGCD (m\^eme algorithme que pour les
entiers mais avec la division euclidienne des polyn\^omes, attention
toutefois aux erreurs d'arrondis)

Les {\bf symboles}\index{symbole} ou noms de variable d\'esignent par exemple
le nom d'une inconnue dans un polyn\^ome, ils sont repr\'esent\'es
par une chaine de caract\'ere et peuvent \^etre affect\'es \`a une valeur
pendant une session (la valeur d\'epend d'un contexte d'ex\'ecution
et le remplacement du symbole par sa valeur affect\'ee est appel\'e
\'evaluation).

Les {\bf expressions}\index{expression}, par exemple \verb|sin(x)+2*x^2|,
elles peuvent \^etre repr\'esent\'ees par des arbres. L'\'evaluation
d'une expression consiste à remplacer les symboles de l'expression
par leur valeur, puis à effectuer les op\'erations en tenant compte
de la substitution. Il est parfois souhaitable de ne pas
effectuer certaines op\'erations de substitution, on empêche
l'\'evaluation, explicitement (\verb|''|) ou implicitement
(par exemple l'affectation n'\'evalue pas le symbole qu'on va affecter).

Les {\bf fonctions}\index{fonction} ne doivent pas \^etre confondues avec les
expressions, elles associent \`a leurs arguments une expression. Par
exemple \verb|sin| est une fonction, alors que \verb|sin(x)|
est une expression.

Les conteneurs contiennent plusieurs objets et permettent d'associer 
\`a un indice un objet. Il en existe de plusieurs types, par exemple
les {\bf listes}\index{liste} et les {\bf s\'equences}\index{sequence} 
dont l'indice est un
entier compris entre 1 (ou 0) et la taille (-1), les {\bf tables} dont
l'indice est plus g\'en\'eral, et les tableaux
(utilis\'es pour les {\bf vecteurs, matrices}\index{vecteur}\index{matrice}) 
qui sont essentiellement des listes ou des listes de listes de même taille. 
Les s\'equences sont des listes d'objets ordonn\'es ``non r\'ecursifs''
(ils ne peuvent contenir des s\'equences), alors que les listes
peuvent contenir des listes, sinon il n'y a pas de diff\'erences.
Dans les logiciels de calcul formel, la plupart du temps
les s\'equences se notent en indiquant les \'el\'ements s\'epar\'es par
des virgules. Les listes s'en distinguent par les d\'elimiteurs \verb|[]|.
Il faut prendre garde au fait qu'en g\'en\'eral affecter par exemple
\verb|l[1]:=3;| à une variable libre \verb|l| cr\'ee une table et
non une liste.
Remarque: certains logiciels acc\'edent \`a certains types de
conteneurs uniquement par r\'ef\'erence (par exemple maple pour les
vecteurs et matrices), dans ce dernier cas une seule copie des objets 
du conteneur existe si on copie de la mani\`ere habituelle
une variable contenant un vecteur ou
une matrice dans une autre variable, 
la modification d'un \'el\'ement du conteneur modifie
alors toutes les copies pointant sur ce conteneur. Cette m\'ethode
est plus efficace mais peut \^etre surprenante.

%Id\'ees TD: Exercices sur les nombres en base 2,
%sur les changements de base, sur les erreurs.
%Ecriture en base $z$ avec reste sym\'etrique.
%L'addition n'est pas associative dans les flottants : comment
%sommer des s\'eries de terme g\'en\'eral d\'ecroissant pour avoir la meilleure
%pr\'ecision possible. 
%Changement d'origine pour un polynome avec appel de Taylor.

\section{Alg\`ebre lin\'eaire}
\subsection{Le pivot de Gauss}\index{pivot} \index{Gauss}
Cet algorithme permet de cr\'eer des z\'eros en effectuant des manipulations
r\'eversibles sur les lignes d'une matrice. Ces lignes peuvent
repr\'esenter les coefficients d'un syst\`eme lin\'eaire, on obtient
alors un syst\`eme lin\'eaire \'equivalent, ou les coordonn\'ees
d'un syst\`eme de vecteur, on obtient alors les coordonn\'ees
d'un syst\`eme de vecteur engendrant le même sous-espace vectoriel. On
peut \'egalement repr\'esenter 2 matrices $A$ et $B$ reli\'es par une relation
$Ax=B$, cette relation reste alors vraie au cours et donc
apr\`es la r\'eduction.

\subsubsection{L'algorithme}
L'algorithme est le suivant:
\begin{enumerate}
\item on initialise $c=1$ et $l=1$,
$c$ d\'esigne le num\'ero de colonne $c$ à r\'eduire, et $l$ le 
num\'ero de ligne à partir duquel on cherche un ``pivot''
(au d\'ebut $l$ et $c$ valent donc 1, en g\'en\'eral
les 2 augmentent de 1 à chaque it\'eration)
\item Si $c$ ou $l$ est plus grand que le nombre de colonnes ou
de lignes on arrête.
\item  Si la colonne $c$ n'a
que des coefficients nuls à partir de la ligne $l$, on incr\'emente
le num\'ero de colonne $c$ de 1 et on passe à l'\'etape 2. Sinon,
on cherche la ligne dont le coefficient est en valeur absolue
le plus grand possible (en calcul approch\'e) ou le plus simple
possible (en calcul exact), on \'echange cette ligne avec la ligne $l$.
Puis on effectue pour toutes les lignes sauf $l$ ou pour toutes
les lignes à partir de $l+1$ (selon qu'il s'agit d'une r\'eduction
de Gauss compl\`ete ou d'une r\'eduction de Gauss sous-diagonale) la
manipulation r\'eversible 
\[ L_j \leftarrow  L_j -\frac{a_{jc}}{a_{lc}} L_l \]
On incr\'emente $c$ et $l$ de 1 et on passe à l'\'etape 2.
\end{enumerate}

\subsubsection{Efficacit\'e de l'algorithme}
Si la matrice possède $L$ lignes et $C$ colonnes,
le nombre maximal d'opérations pour réduire une ligne est 
$C$ op\'erations (une op\'eration=1 multiplication + 1 soustraction, 
en calculant une seule fois le quotient). Si
on a d\'ej\`a r\'eduit $k-1$ colonnes, ce nombre est en fait $C-(k-1)$
puisqu'on ne calcule pas les 0 des colonnes d\'ej\`a r\'eduites.
Il y a $L-1$ lignes à réduire à chaque
étape et min$(L,C)$ étapes à effectuer, on en déduit que le
nombre maximal d'opérations pour réduire une matrice est
$(L-1)\sum_{k=1}^{\mbox{min}(L,C)}(C-(k-1))$. Pour une matrice carrée de taille $n$, cela fait 
$(n-1) \sum_{k=1}^n (n-(k-1)) =n^3/2+O(n^2)$ opérations. 
\giacinputbigmath{purge(n);normal((n-1)*sum((n-(k-1)),k,1,n))}
Si on effectue une r\'eduction en-dessous de la diagonale, 
toujours pour une matrice carr\'ee, on trouve $\sum_{k=1}^n
(n-(k-1))(n-k)=n^3/3+O(n^2)$.
\giacinputbigmath{normal(sum((n-(k-1))*(n-k),k,1,n))}

\subsubsection{Erreurs d'arrondis du pivot de Gauss} \index{erreur}
Comme $|a_{jc}| \leq |a_{lc}|$, une \'etape de r\'eduction multiplie
au plus l'erreur absolue des coefficients par 2. Donc la
r\'eduction compl\`ete d'une matrice peut multiplier au pire l'erreur
absolue sur les coefficients par $2^n$ (où $n$ est le nombre
d'\'etapes de r\'eduction, inf\'erieur au plus petit du nombre de lignes
et de colonnes). Ceci signifie qu'avec la pr\'ecision d'un double,
on peut au pire perdre toute pr\'ecision pour des matrices pas
si grandes que ça ($n=52$). Heureusement, il semble qu'en pratique, 
l'erreur absolue ne soit que tr\`es rarement multipli\'ee par un facteur sup\'erieur à
10, par exemple si on multiplie une matrice $n,n$ \`a
coefficients flottants al\'eatoires dans $[0,1]$ selon la loi uniforme
par son inverse, on trouve une erreur absolue tr\`es faible m\^eme
pour des valeurs de $n$ largement plus grandes que 100.
\giacinputbigmath{n:=300; a:=ranm(n,n,0..1):; b:=inv(a):;  maxnorm(a*b-idn(a))}

Par contre, si on ne prend pas la pr\'ecaution de choisir le pivot
de norme maximale dans la colonne, les erreurs d'arrondis se
comportent de mani\`ere bien moins bonnes, comme le montre l'~:\\
{\bf Exemple}\\
Soit \`a r\'esoudre le syst\`eme lin\'eaire
\[ \epsilon x + 1.0 y = 1.0 , \quad x + 2.0 y = 3.0 \]
avec $\epsilon =2^{-54}$ (pour une machine utilisant des doubles pour
les calculs en flottant,
plus g\'en\'eralement on choisira $\epsilon$ tel que $(1.0+3\epsilon)-1.0$
soit indistinguable de 0.0).\\
Si on r\'esoud le syst\`eme exactement,
on obtient $x=1/(1-2\epsilon)$ (environ 1)
et $y=(1-3\epsilon)/(1-2\epsilon)$ (environ 1).
Supposons que l'on n'utilise pas la strat\'egie du pivot partiel,
on prend alors comme pivot $\epsilon$, donc on effectue la
manipulation de ligne $L_2 \leftarrow L_2 - 1/\epsilon L_1$ ce qui
donne comme 2\`eme \'equation $(2.0-1.0/\epsilon)y=3.0-1.0/\epsilon$.
Comme les calculs sont num\'eriques, et \`a cause des erreurs
d'arrondis, cette 2\`eme \'equation sera remplac\'ee par
$(-1.0/\epsilon)y=-1.0/\epsilon$ d'o\`u $y=1.0$, qui sera remplac\'e
dans la 1\`ere \'equation, donnant $\epsilon x = 1.0-1.0y=0.0$ donc
$x=0.0$.\\
Inversement, si on utilise la strat\'egie du pivot partiel, alors
on doit \'echanger les 2 \'equations $L_2'=L_1$ et $L_1'=L_2$ puis on effectue
$L_2 \leftarrow L_2' - \epsilon L_1'$, ce qui donne
$(1.0-2.0\epsilon) y = 1.0 - 3.0 \epsilon $, remplac\'ee en raison
des erreurs d'arrondi par $1.0*y=1.0$ donc $y=1.0$, puis on remplace
$y$ dans $L_1'$ ce qui donne $x=3.0-2.0y=1.0$.\\
On observe dans les deux cas que la valeur de $y$ est proche de la
valeur exacte, mais la valeur de $x$ dans le premier cas est
grossi\`erement eloign\'ee de la valeur correcte.

On peut aussi s'int\'eresser à la sensibilit\'e de la solution d'un
syst\`eme lin\'eaire à des variations de son second membre. Cela fait intervenir
le nombre de conditionnement de la matrice $A$ (voir plus bas) du syst\`eme (qui
est essentiellement la valeur absolue du rapport de la valeur propre
la plus grande sur la valeur propre la plus petite), plus
ce nombre est grand, plus la solution variera (donc plus on
perd en pr\'ecision).

\subsection{Applications de Gauss}
\subsubsection{Base d'un sous-espace} 
On r\'eduit la matrice des vecteurs \'ecrits en ligne, puis
on prend les lignes non nulles, dont les vecteurs
forment une base du sous-espace vectoriel engendr\'e par
les vecteurs du d\'epart.

Exemple~:  base du sous-espac engendr\'e par $(1,2,3), (4,5,6), (7,8,9)$.
On r\'eduit la matrice, la 3\`eme ligne est nulle
donc on ne garde que les 2 premi\`eres lignes $(1,0,-1), (0,1,2)$
(remarque: une r\'eduction sous-diagonale aurait suffi).

\subsubsection{D\'eterminant} \index{determinant}
On r\'eduit la matrice (carr\'ee) en notant le nombre
d'inversions de ligne, et on fait le produit des coefficients
diagonaux, on change le signe si le nombre d'inversions de lignes
est impair.

\subsubsection{R\'eduction sous forme \'echelonn\'ee (rref)} \index{rref} 
\index{reduction}
On r\'eduit la matrice puis on divise chaque ligne par son premier
coefficient non nul. Si la matrice repr\'esentait un syst\`eme
lin\'eaire inversible on obtient la matrice identit\'e sur les colonnes
sauf la derni\`ere et la solution en lisant la derni\`ere colonne.
La relation conserv\'ee est en effet $Ax=b$ où $x$ est la solution
de l'\'equation, et à la fin de la r\'eduction $A=I$.

Par exemple pour r\'esoudre le syst\`eme
\[ \left\{ \begin{array}{ccc}
  x + 2y + 3z &=& 5 \\
  4x + 5y + 6z &=& 0 \\
  7x + 8y &=& 1
\end{array}
\right. \]
on r\'eduit sous forme \'echelonn\'ee la matrice 
\giacinput{rref([[1,2,3,5],[4,5,6,0],[7,8,0,1]])}
ce qui donne
\verb|[[1,0,0,-9],[0,1,0,8],[0,0,1,-2/3]]|, d'où la solution
$x=-9, y=8, z=-2/3$.

\subsubsection{Inverse} \index{inverse}
On accolle la matrice identit\'e à droite de la matrice à inverser. On effectue
la r\'eduction sous forme \'echelonn\'ee, on doit obtenir à droite
l'identit\'e si la matrice est inversible, on a alors à gauche
la matrice inverse.
La relation conserv\'ee est en effet $A x=B$  où $x$ est l'inverse
de la matrice de d\'epart, et en fin de r\'eduction $A=I$.

Par exemple, pour calculer l'inverse
de \verb|[[1,2,3],[4,5,6],[7,8,0]]|, on r\'eduit~:\\
\giacinputbigmath{rref([[1,2,3,1,0,0],[4,5,6,0,1,0],[7,8,0,0,0,1]])}

\subsubsection{Noyau} \index{noyau} \index{ker}
On r\'eduit la matrice sous forme \'echelonn\'ee. Puis on introduit des lignes
de 0 afin que les 1 en tête de ligne se trouvent sur la diagonale
de la matrice. On enl\`eve ou on rajoute des lignes de 0 à la fin
pour obtenir une matrice carr\'ee. Une base du noyau est alors
form\'ee en prenant chaque colonne correspondant à un 0 sur la
diagonale, en remplaçant ce 0 par -1. On v\'erifie qu'on obtient bien 0
en faisant le produit de ce vecteur par la matrice r\'eduite. De
plus les vecteurs cr\'e\'es sont clairement lin\'eairement ind\'ependants
(puisqu'ils sont \'echelonn\'es), et il y en a le bon nombre (th\'eor\`eme
noyau-image).

Exemple~: calcul du noyau de \verb|[[1,2,3,4],[1,2,7,12]]|, on
r\'eduit la matrice avec rref, ce qui donne
\verb|[[1,2,0,-2],[0,0,1,2]]|, on ajoute une ligne de 0 entre
ces 2 lignes pour mettre le 1 de la 2\`eme ligne sur la diagonale
ce qui donne \verb|[[1,2,0,-2],[0,0,0,0],[0,0,1,2]]|, puis
on ajoute une ligne de 0 à la fin pour rendre la matrice carr\'ee.
On obtient ainsi le syst\`eme \'equivalent de matrice~:\\ 
\verb|[[1,2,0,-2],[0,0,0,0],[0,0,1,2],[0,0,0,0]]|
\\
La 2\`eme colonne donne le premier vecteur de la base du noyau,
$(2,-1,0,0)$, la 4\`eme colonne donne le deuxi\`eme vecteur
$(-2,0,2,-1)$, on v\'erifie ais\'ement que ces 2 vecteurs
forment une famille libre du noyau, donc une base car 
la dimension du noyau est \'egale à 2 (dimension de l'espace de d\'epart
moins le rang de la matrice, c'est-à-dire le nombre de lignes 
non nulles de la matrice r\'eduite).

\subsection{La m\'ethode de factorisation $LU$} \index{LU}
Dans sa forme la plus simple, elle permet d'\'ecrire
une matrice $A$ comme produit de deux matrices triangulaire
inf\'erieures et sup\'erieures, ce qui ram\`ene la r\'esolution
de syst\`eme à la r\'esolution de deux syst\`emes triangulaires.
Pour tenir compte d'\'el\'ements diagonaux nuls et pour optimiser 
les erreurs d'arrondi, il est n\'ecessaire d'effectuer des
permutations sur les lignes de la matrice.

\subsubsection{Interpr\'etation matricielle du pivot de Gauss}
On notera $l$ et $c$ le nombre de lignes et colonnes de $A$ (pour
\'eviter la confusion avec le facteur $L$) et on
supposera $A$ non singuli\`ere pour simplifier l'exposition.

 Lorsqu'on r\'eduit la colonne $j$ d'une matrice $\tilde{A}$
 (partiellement r\'eduite) \`a partir
de la ligne $j+1$ (en supposant $\tilde{A}_{j,j} \neq 0$), cela revient \`a
multiplier $\tilde{A}$ \`a gauche par une matrice $\tilde{L}_j$ cr\'e\'ee en
partant de la matrice
identit\'e de taille $l$ o\`u on remplace les 0 
colonne $j$, lignes $j+1$ \`a $l$ par 
le coefficient de la combinaison de ligne effectu\'ee~:
$$l_i \rightarrow l_i - \frac{\tilde{A}_{i,j}}{\tilde{A}_{j,j}} l_j $$
donc~:
\[ \tilde{L}_j = \left( \begin{array}{ccccccc}
1 & ... & 0   & 0 & 0 & ... & 0\\
...& ... & ... & ... & ... & ... & 0\\
0 & ... & 1   & 0 & ... & ... & 0\\
0 & ... & 0 & 1  & ... & ... & 0 \\
0 & ... & 0 & - \frac{\tilde{A}_{j+1,j}}{\tilde{A}_{j,j}} & 1 & ... & 0 \\
 0 & ... & 0  & .... & 0 & ... & 0 \\
0 & ... & 0 & - \frac{\tilde{A}_{l,j}}{\tilde{A}_{j,j}} & 0 & ... & 1\\
\end{array} \right) \]
On v\'erifie facilement que l'inverse de cette matrice est
\[ L_j = \tilde{L}_j^{-1} = \left( \begin{array}{ccccccc}
1 & ... & 0   & 0 & 0 & ... & 0\\
...& ... & ... & ... & ... & ... & 0\\
0 & ... & 1   & 0 & ... & ... & 0\\
0 & ... & 0 & 1  & ... & ... & 0 \\
0 & ... & 0 & \frac{\tilde{A}_{j+1,j}}{\tilde{A}_{j,j}} & 1 & ... & 0 \\
 0 & ... & 0  & .... & 0 & ... & 0 \\
0 & ... & 0 & \frac{\tilde{A}_{l,j}}{\tilde{A}_{j,j}} & 0 & ... & 1\\
\end{array} \right) \]
Donc $A$ est le produit des matrices $L_j$ par une matrice r\'eduite
$U$ qui est triangulaire sup\'erieure
\[ A= L_1...L_{l-1} U \]
On v\'erifie ensuite que le produit des matrices $L_1...L_{l-1}$ revient \`a
remplacer les coefficients de la colonne $j$ sous la diagonale 
par ceux de $L_j$, ce qui donne une matrice $L$ triangulaire
inf\'erieure (avec des 1 sur la diagonale). Pour l'obtenir il suffit
au cours de l'algorithme de r\'eduction sous-diagonale du 
pivot de Gauss de stocker le coefficient
de la combinaison lin\'eaire dans une matrice initialis\'ee
\`a la matrice identit\'e (on peut aussi le faire
en place dans la matrice \'a r\'eduire).

Attention, le produit $\tilde{L}_{l-1}...\tilde{L}_1$ ne s'obtient pas en
copiant la colonne $j$ de $\tilde{L}_j$ pour $j$ variant de 1 \`a
$l-1$! On peut l'obtenir en faisant
une r\'eduction sous-diagonale de la matrice bloc obtenue en collant
$A$ avec la matrice identit\'e ayant $l$ lignes.

\subsubsection{Factorisation $PA=LU$}
Si on veut mettre en oeuvre la strat\'egie du pivot partiel (ou en
calcul exact si un coefficient diagonal est nul), il est n\'ecessaire
d'intervertir une ligne de la matrice partiellement r\'eduite
avec une ligne en-dessous. Cela revient \`a r\'eduire la matrice
$A$ de d\'epart apr\`es \'echange de ces m\^emes lignes. En
cons\'equence ce n'est pas $A$ qui est le produit $LU$ mais
une matrice obtenue par permutations de lignes de $A$, que
l'on peut \'ecrire comme produit \`a gauche de $A$ par une matrice
de permutation $P$.

Remarque~: si \`a une \'etape de r\'eduction, tous les coefficients
de la colonne $j$ \`a partir de la ligne $j$ sont nuls, on peut
simplement ignorer cette colonne, on remplit la colonne $j$ de la
matrice $L_j$ avec la colonne $j+1$ de $A$ \`a partir de la ligne $j$.

\subsubsection{Applications}
On peut r\'esoudre des syst\`emes lin\'eaires par la factorisation
$LU$. En effet soit \`a r\'esoudre $Ax=b$. On effectue la permutation
de lignes sur $A$ et $b$ (correspondant \`a la matrice de permutation
$P$), ce qui donne $PAx=Pb=LUx$, puis on r\'esoud $Ly=Pb$
(syst\`eme triangulaire inf\'erieur), puis on r\'esoud $Ux=y$
(syst\`eme triangulaire sup\'erieur).

Comparaison avec la r\'eduction compl\`ete sous forme \'echelonn\'ee de
$(A|b)$~:
\begin{itemize}
\item La factorisation $LU$ peut reservir plus tard pour r\'esoudre le m\^eme
syst\`eme lin\'eaire avec un autre second membre.
Avec \verb|rref| il faut d\`es le d\'epart mettre tous les
vecteurs colonnes second membre \`a $A$.
\item Le nombre d'op\'erations pour r\'esoudre un syst\`eme $n,n$
est moindre. La r\'eduction sous-diagonale n\'ecessite de r\'eduire
les colonnes $j$ de 1 \`a $n-1$, avec pour r\'eduire la colonne $j$
$n-j$ combinaisons lin\'eaire de lignes ayant $n+1-j$ coefficients non
nuls, soit $\sum_{j=1}^(n-1) (n-j)(n+1-j)=1/3n^3+O(n^2)$ op\'erations
(1 op\'eration = 1 multiplication et 1 soustraction).
La r\'esolution des syst\`emes triangulaires est en $O(n^2)$.
\item Le calcul est plus favorable au cache m\'emoire, puisqu'on
  travaille sur une portion de plus en plus petite de la matrice.
\end{itemize}
\giacinputbigmath[style="width:800px;height:40px;font-style:large"]{n:=500; a:=ranm(n,n,0..1):; p,l,u:=lu(a):;b:=randvector(n):; 
time(c:=linsolve(p,l,u,b)); maxnorm(a*c-b);time(d:=linsolve(a,b)); maxnorm(a*d-b);}

On peut inverser une matrice en utilisant la d\'ecomposition
$LU$. Supposons pour simplifier que la permutation est l'identit\'e.
On calcule d'abord $L^{-1}$ en utilisant le fait que $L$ est
triangulaire inf\'erieure, voici comment cela est impl\'ement\'e dans
Xcas ($L$ est not\'e {\tt l})~:
\begin{verbatim}
first step compute l^-1, 
solve l*a=y for y a canonical basis vector
  a0=y0, a1=y1-l_{1,0}*a0, ..., ak=yk-sum_{j=0..k-1}(l_kj*aj)
if y=(0,..,0,1,0,...0) (1 at position i), 
  a0=..=a_{i-1}=0, a_i=1 and we start at equation k=i+1 and sum_{j=i...}
-> n^3/6 operations
To store the result in place of l
we first compute all the a2 (there is only 1), then all the a3 (2), etc.
a0=y0, a1=y1-l_{1,0}*a0, ..., ak=yk-sum_{j=0..k-1}(l_kj*aj)
\end{verbatim}
Puis on r\'esoud $U A^{-1}=L^{-1}$ colonne par colonne
\begin{verbatim}
second step, solve u*inverse=l^-1 (now under the diagonal)
we compute a column of inverse by solving the system: 
u*col(inverse)=corresponding row of l^-1, 
and overwrite the row of l^-1 by solution
u*[x0,..,xn-1]=[a0,...,an]
x_{n-1}=a_{n-1}/u_{n-1,n-1}
x_{n-2}=(a_{n-2}-u_{n-2,n-1}*x_{n-1})/u_{n-2,n-2}
...
x_k=(a_{k}-sum_{j=k+1..n-1} u_{k,j}x_j)/u_{k,k}
-> n^3/2 operations
To store the solution in place, we first compute all the x_{n-1}
put them in the last line of m, then all the x_{n-2}, etc.
\end{verbatim}

\subsection{La factorisation de Cholesky} \index{cholesky}
Dans le cas o\`u la matrice est r\'eelle sym\'etrique d\'efinie
positive (ou plus g\'en\'eralement hermitienne), 
on peut obtenir une \'ecriture analogue
mais o\`u $U$ est la transconjugu\'ee de $L$
\[ A=U^* U = L L^* \]
$L$ reste triangulaire
inf\'erieure, mais n'a plus des 1 sur sa diagonale en g\'en\'eral. Si
$A$ est d\'efinie positive, on peut rendre l'\'ecriture unique en
imposant aux coefficients diagonaux de $L$ d'\^etre r\'eels positifs.

L'algorithme de calcul de $U$ est la traduction matricielle de l'algorithme
de Gauss de r\'eduction des formes quadratiques. On a en effet
\[ x^* A x=x^* U^* U x = ||Ux||^2 \]
les lignes de $U$ (ou les colonnes de $L$) sont donc les coefficients
des formes lin\'eaires ind\'ependantes qui interviennent dans l'\'ecriture
de la forme quadratique comme somme/diff\'erence de carr\'es de formes
lin\'eaires. Si $A$
est d\'efinie positive, seules des sommes interviennent, et les
variables s'\'eliminent l'une apr\`es l'autre (le coefficient de $x_2$ est forc\'ement
non nul lorsqu'on a \'elimin\'e $x_1$ et ainsi de suite), ceci explique
la forme triangulaire de $U$ et $L$.

Le calcul de $L$ se fait donc colonne par colonne, en calculant d'abord le
coefficient diagonal comme racine carr\'ee du coefficient diagonal 
$\alpha_j=\sqrt{A_{j,j}}$.
Ensuite on effectue les combinaisons de ligne sous la forme
\[ l_j \rightarrow \frac{1}{\alpha_j}l_j, \quad  l_i \rightarrow \alpha_j l_i - \frac{A_{i,j}}{\alpha_j} l_j \]

On peut aussi tout simplement effectuer le produit de $L L^*$ et
chercher les inconnues en commencant par $l_{1,1}$ puis on calcule
les $l_{i,1}$ pour $i>1$, etc. En suivant wikipedia, pour une matrice r\'eelle~:
\[ L=\begin{bmatrix}
l_{11}& 0 & \cdots & 0 \\
l_{21} & l_{22}& \cdots & 0\\
\vdots & \vdots & \ddots & \vdots\\
l_{n1} & l_{n2} & \cdots & l_{nn}
\end{bmatrix} \]
\[ a_{ij}=\left(LL^{T}\right)_{ij}={\sum_{k=1}^{n}l_{ik}l_{jk}}=
{\sum_{k=1}^{\min\left\{ i,j\right\} }l_{ik}l_{jk}},\;1\leq i,j\leq n \]
La matrice $A$ \'etant sym\'etrique, il suffit que les relations ci-dessus
soient v\'erifi\'ees pour $i \leq j$, 
c'est-à-dire que les \'el\'ements $l_{i,j}$ de la matrice $L$ doivent
satisfaire
\[ a_{ij}={\sum_{k=1}^{i}l_{ik}l_{jk}},\;1\leq i\leq j\leq n \]
Pour $i=1$, on d\'etermine la premi\`ere colonne de $L$
\[ a_{11}=l_{11}l_{11}, \quad a_{1j}=l_{11}l_{j1}\]
donc
\[ l_{11}=\sqrt{a_{11}}, \quad l_{j1}=\frac{a_{1j}}{l_{11}}
\ (\mbox{pour } j>1) \]
On d\'etermine la $i$-i\`eme colonne de $L$ ($2\leq i\leq n)$ apr\`es avoir
calcul\'e les $i-1$ premi\`eres colonnes
\[ a_{ii}=l_{i1}l_{i1}+\ldots+l_{ii}l_{ii}, \quad
a_{ij}=l_{i1}l_{j1}+\ldots+l_{ii}l_{ji} \]
d'où 
\[ l_{ii}= \sqrt{{a_{ii}-{\sum_{k=1}^{i-1}l_{ik}^{2}}}}, \quad
l_{ji}=\frac{a_{ij}-{\sum_{k=1}^{i-1}l_{ik}l_{jk}}}{l_{ii}} \
(\mbox{pour } j > i)\]
Pour une matrice hermitienne complexe, il suffit de remplacer
$l_{ik}l_{jk}$ par $l_{ik}\overline{l_{jk}}$ et $l_{ik}^{2}$ par
$|l_{ik}|^{2}$.

Le nombre d'op\'erations arithm\'etiques \`a effectuer est asymptotiquement
2 fois plus faible que celui pour $LU$. En effet,
pour la premi\`ere ligne, il faut 1 racine et $n-1$ divisions,
pour la deuxi\`eme ligne, 1 racine, $n-1$ additions, multiplications
et $n-2$ divisions, ..., pour la $i$-i\`eme ligne 1 racine,
$(i-1)(n-i)$ additions, multiplications et $n-2$ divisions, au final
le cout est domin\'e par les additions et multiplications en $n^3/6$
pour chaque, contre $n^3/3$ pour la
factorisation $LU$. Mais le temps r\'eel d\'epend de l'optimisation
de l'impl\'ementation, en particulier des acc\`es m\'emoire plus
couteux que les op\'erations arithm\'etiques, ainsi avec Xcas, l'algorithme de Cholesky
n'est pas plus rapide que la factorisation $LU$.

La commande Xcas correspondante est \verb|cholesky| et renvoie
la matrice $L$.

\subsection{Conditionnement}
Le conditionnement mesure la sensibilit\'e de la solution renvoy\'ee d'un
syst\`eme lin\'eaire aux donn\'ees du probl\`eme.

\subsubsection{Rappel sur les normes matricielles}
On utilisera les normes suivantes sur l'espace vectoriel des matrices $n,n$~:
\begin{itemize}
\item la norme infinie $|A|_\infty$=max$|a_{i,j}|$ 
\giacinputbigmath{a:=ranm(3,3); maxnorm(a)}
\item les normes subordonn\'ees \`a une norme de $\R^n$ ou $\C^n$
dite norme triple
$$ ||| A ||| = \max_{x/\|x\|=1} \| Ax \| = \max_{x \neq 0 } \frac{\|  Ax \|}{\|x\|} $$
Xcas reconnait trois normes triples, subordonn\'ees aux normes $L^1$,
$L^2$ (euclidienne) et $L^\infty$ sur $\R^n$ ou $\C^n$
\giacinputbigmath{matrix_norm(a,1); matrix_norm(a,2); matrix_norm(a,inf)}
\item la norme de Frob\'enius $ \sqrt{\sum_{i,j} |a_{i,j}|^2}$
\giacinputbigmath{frobenius_norm(a)}
\end{itemize}

Si on prend comme norme la norme $L^2$, le calcul de $|||A|||$
n\'ecessite de maximiser $\sqrt{<Ab|Ab>}$ pour $b$ de norme 1, ce qui revient
\`a maximiser $\sqrt{<b|A^* A b>}$. En diagonalisant la matrice hermitienne
$A^* A$, on voit qu'il suffit d'en trouver la plus grande valeur
propre et d'en prendre la racine carr\'ee. Les valeurs propres de
$A^*A$ sont appel\'ees valeurs singuli\`eres de $A$ (ce sont des
r\'eels positifs).

Le calcul de la normes triple infinie est plus simple, si $\|x\|_\infty=1$
$$ |(Ax)_i| = |\sum_{j} a_{i,j} x_j| \leq \sum_{j} |a_{i,j}| $$
avec \'egalit\'e si les $x_j$ valent $\pm 1$ avec le bon choix de
signe. On en d\'eduit que 
$$||| A |||_{\infty}=\mbox{max}_i \sum_{j} |a_{i,j}| $$
aussi appel\'e norme de ligne (on prend le max sur les lignes
de la somme des valeurs absolues
des coefficients de la ligne).

Pour la norme 1, on trouve la norme colonne (max sur les colonnes
de la somme des valeurs absolues des coefficients d'une colonne)~:
$$ \sum_i |(Ax)_i| = \sum_i |\sum_{j} a_{i,j} x_j|
\leq \sum_j |x_j| \sum_i |a_{i,j}|
\leq \mbox{max}_j  \sum_i |a_{i,j}| $$
Pour r\'ealiser la norme triple, on prend $x_i=0$ si $i\neq j$ qui
r\'ealise le max, et $x_j=1$.

\subsubsection{Nombre de condition}
Soit le syst\`eme lin\'eaire $Ax=b$ de solution $x=A^{-1}b$, 
supposons $b$ connu avec une erreur $e$, alors la solution renvoy\'ee
sera $x+A^{-1}e$, on a donc une erreur relative sur la solution de 
\[ \frac{\|A^{-1}e\|}{\|A^{-1}b\|} = \frac{\|A^{-1}e\|}{\|e\|} 
\frac{\|e\|}{\|b\|}
\frac{\|b\|}{\|A^{-1}b\|}  \leq |||A^{-1}|||  \frac{|e|}{|b|} |||A|||  \]
(la derni\`ere in\'egalit\'e s'obtient en \'ecrivant $b=A(A^{-1}b)$).
On en d\'eduit que le rapport de l'erreur relative sur la solution par l'erreur
relative du second membre est major\'ee par
le produit de la norme de $A$ (en tant qu'application lin\'eaire)
par la norme de $A^{-1}$, ce produit est appel\'e conditionnement
de la matrice $A$ (ou parfois nombre de condition de $A$ en adoptant
la terminologie anglo-saxonne).

On remarquera que le conditionnement d\'epend du choix de la norme sur
l'espace vectoriel. Pour la norme 2,
on sait que $|||A|||$ est la plus grande valeur singuli\`ere de $A$
le m\^eme calcul pour $A^{-1}$ (dont les
valeurs singuli\`eres sont les inverses des valeurs singuli\`eres de $A$) nous
donne alors le~:
\begin{theorem}
Lorsqu'on r\'esoud un syst\`eme lin\'eaire $Ax=b$, $A$ matrice connue
pr\'ecis\'ement et inversible, $b$ connu avec une erreur relative en
norme $L^2$, l'erreur relative en norme $L^2$ sur $x$ est au plus
multipli\'ee par
\[ K_2(A)= \frac{\lambda_n}{\lambda_1} \]
o\'u $\lambda_n$ [resp. $\lambda_1$] est la plus grande [resp. plus
petite] valeur singuli\`ere de $A$ (racines carr\'ees des
valeurs propres de $A^*A$).\\
Ce facteur d'amplification des erreurs relatives est \'evidemment
sup\'erieur ou \'egal \`a 1. Il est \'egal \`a 1 si la matrice est
unitaire (puisque $A$ est une matrice
d'isom\'etrie ou car $AA^*=I$). 
S'il est de l'ordre de $2^c$ on perdra (au plus) $c$ bits de
pr\'ecision sur la mantisse de $x$.
\end{theorem}
Avec Xcas, les valeurs singuli\`eres s'obtiennent par l'instruction
\verb|SVL(A)|, le conditionnement $L^2$ par \verb|cond(A,2)|
(\verb|cond(A,1)| donne le conditionnement $L^1$ et \verb|cond(A,inf)|
donne le conditionnement $L^\infty$).
Attention, les valeurs singuli\`eres de $A$ ne sont pas les valeurs
absolues des valeurs propres de $A$ (c'est le cas si $A$ 
commute avec sa transconjugu\'ee mais ce n'est pas g\'en\'eral).
On peut utiliser la m\'ethode de la puissance (cf. infra) pour estimer
rapidement la plus
grande valeur singuli\`ere de $A$ (donc sans diagonaliser compl\`etement
la matrice $A^*A$), et de m\^eme sur $A^{-1}$ (en utilisant $LU$
ou Cholesky pour trouver les it\'er\'ees sans calculer $A^{-1}$).

On remarque que si $A$ est une matrice orthogonale, alors son nombre
de conditionnement vaut 1, si on doit utiliser des matrices
orthogonales dans un algorithme, ce sera stable num\'eriquement.

On peut aussi prendre la norme $L^1$ sur l'espace vectoriel, dans ce
cas la norme de matrice correspondante est la norme de colonne (exercice!),
le maximum des sommes valeurs absolues des \'el\'ements
des colonnes (\verb|colNorm(A)| en Xcas) et le conditonnement
est le produit de \verb|colNorm(A)| par \verb|colNorm(inv(A))|
qui est renvoy\'e par \verb|COND(A)| en Xcas.

Si la matrice du syst\`eme $A$ (de nombre de condition not\'e
$\kappa(A)$) est elle-m\^eme connue avec une
certaine incertitude, alors pour $||\Delta A||$ suffisamment petit,
la solution de
$(A+\Delta A)(x+\Delta x)=b+\Delta b$ v\'erifie
$$ \frac {|\Delta x |}{|x|}\leq
\frac{\kappa(A)}{1-\kappa(A)\frac{||\Delta A||}{||A||}}
\left(\frac{|\Delta b|}{|b|}+\frac{||\Delta A||}{||A||}
\right) $$
En effet, on a 
$$ A \Delta x =\Delta b - \Delta A(x+\Delta x)
\Rightarrow \Delta x = A^{-1}(\Delta b - \Delta A(x+\Delta x))  $$
donc en norme
$$ \| \Delta x \| \leq |||A^{-1}||| (\frac{\|\Delta b\|}{\|b\|}\|Ax\|
+ \frac{||| \Delta A |||}{|||A|||} |||A||| (\|x\|+\|\Delta x\|))$$
puis~:
$$ \frac{\| \Delta x \|}{\|x\\} \leq \kappa(A)
(\frac{\|\Delta b\|}{\|b\|}
+ \frac{||| \Delta A |||}{|||A|||} (1+\frac{\| \Delta x \|}{\|x\\}) $$

\subsection{Quelques m\'ethodes alternatives au pivot}
\subsubsection{Factorisation $QR$}\index{QR}
La factorisation $QR$ 
consiste à écrire une matrice $A$ comme produit d'une matrice
orthogonale (ou unitaire dans $\C$) et d'une matrice triangulaire
supérieure. Les matrices orthogonales ayant un conditionnement
de 1 (en norme $L^2$) cette factorisation peut s'obtenir de mani\`ere 
numériquement stable.

Il existe plusieurs algorithmes pour effectuer cette factorisation.
On peut voir cette factorisation comme l'orthonormalisation de
Gram-Schmidt appliqu\'e aux vecteurs colonnes de $A$ si $A$ est non 
singuli\`ere. Mais la proc\'edure de Gram-Schmidt n'est pas
num\'eriquement stable (car on retranche d'un vecteur
une combinaison lin\'eaire des vecteurs pr\'ec\'dents pour rendre
le nouveau vecteur orthogonal et les erreurs d'arrondi s'accumulent
rendant l'orthogonalit\'e plus al\'eatoire).
La m\'ethode de Householder utilise des matrices de sym\'etrie
par rapport \`a un hyperplan et ne souffre pas de ce probl\`eme d'instabilit\'e.
Pour annuler les coefficients de la premi\`ere colonne $c_1$ de $A$,
on construit le vecteur $u=c_1 \pm \|c_1\| e_1$ o\`u $e_1$
est le premier vecteur de base et le signe $\pm$ est
le signe de la premi\`ere composante de $c_1$ (pour assurer
la stabilit\'e num\'erique). On fait alors la sym\'etrie $Q_1$ par rapport
\`a l'hyperplan $H$ orthogonal \`a $u$, qui laisse $H$ invariant
et transforme $u$ en $-u$. Comme $u$ est vecteur directeur
de la bissectrice int\'erieure ou ext\'erieure de $c_1$ et $e_1$, la sym\'etrie
\'echange ces deux vecteurs, \'eventuellement au signe pr\`es.
La matrice $A_1=Q_1A$ a donc comme premi\`ere colonne un multiple de
$e_1$, on continue ensuite en faisant le m\^eme raisonnement
sur la matrice $A_1$ en se limitant et lignes et colonnes d'indice
$\geq 2$. Apr\`es $n-1$ it\'erations, on a $A_{n-1}=Q_{n-1}...Q_1A$
qui est triangulaire sup\'erieure d'o\`u la factorisation annonc\'ee.

Matriciellement, $Q_1=I-2vv^*$ o\`u $v=u/\|u\|$, pour calculer $Q_1A$
il faut effectuer $A-2vv^*A$, on calcule donc $w=v^*A$ en $n^2$
op\'erations (ou une op\'eration est une addition et une
multiplication) puis on soustrait $(2v)_i w_j$ de $a_{ij}$ en $n^2$
op\'erations. En faisant de m\^eme aux \'etapes qui suivent, sans
tenir compte de la simplification progressive du vecteur $v$, on 
effectue $2n^3$ op\'erations. La constante 2 peut \^etre 
un peu am\'elior\'ee en tenant compte des 0 initiaux de $v$ aux
\'etapes 2 et ult\'erieures, elle est toutefois sup\'erieure \`a LU
(et Cholesky), mais en contrepartie
la m\'ethode est tr\`es stable num\'eriquement.

On peut aussi utiliser des rotations (m\'ethode de Givens) pour
annuler les coefficients de $A$ sous la diagonale.  C'est par exemple
tr\`es efficace pour des matrices tridiagonales.

Lorsque la matrice $A$ n'est pas carr\'ee, mais poss\`ede $n$ lignes
et $c$ colonnes, la factorisation $QR$ est encore possible, la matrice
$Q$ est alors une matrice carr\'ee d'ordre $n$, et $R$ a les m\^emes
dimensions que $A$. En particulier si $A$ a plus de lignes que de
colonnes (matrice verticale), $R$ aussi. Par exemple si $A$ est de 
rang maximal $c$, alors $R$ se d\'ecompose en un premier bloc
$c,c$ inversible $R_1$ et un deuxi\`eme bloc $n-c,c$ enti\`erement nul.

{\bf Applications~:}\\
On peut alors écrire $Ax=b$ sous la forme $QRx=b$
donc $Rx=Q^*b$ qui est un système triangulaire supérieur,
donc résoudre $Ax=b$ en $O(n^2)$ opérations une fois 
la factorisation $QR$ effectu\'ee.\\
\giacinputbigmath{a:=[[1.,2.,3.],[4.,5.,6.],[7.,8.,0.]]; q,r:=qr(a);}

Mais c'est surtout pour résoudre {\bf au sens des moindres carrés}
un système sur-déterminé que la factorisation $QR$ trouve tout
son intérêt. Soit $A$ la matrice d'un syst\`eme sur-d\'etermin\'e
avec $n$ lignes et $c$ colonnes, $n>c$ (matrice ``verticale'' ou mince).
Le syst\`eme n'a en g\'en\'eral pas de solution, on cherche alors
\`a minimiser $\| Ax-b \|_2^2$. Ceci revient \`a
chercher la projection orthogonale de $b$ sur Im$(A)$.
Soit $Ax$ cette projection, on a $b=Ax+p$ avec $p$ orthogonal
\`a Im$(A)$ donc dans Ker$(A*)$, donc $A^*b=A^*(Ax+p)=A^*Ax$.
\begin{prop}
La solution $x$ du probl\`eme de minimisation de $\| Ax-b \|_2$
est donn\'ee par $A^*Ax=A^*b$
\end{prop}
Si $A=QR$ on a alors $R^* R x=R^* Q^*b$. Si $A$ est de rang maximal
$c$, on d\'ecompose $R$ en $(^{R_1}_{R_2})$ avec $R_1$ inversible de
taille $c$ et
$R_2=0$, donc $R^*=(R_1^*, 0)$ et le syst\`eme devient $R_1^*R_1x =(R_1^*,0) Q^*b $
et comme $R_1$ est inversible, on a $R_1x=$ les $c$ premi\`eres lignes
de $Q^*b$.
Il vaut mieux résoudre ce syst\`eme que $A^* Ax=A^*b$ car
le conditionnement de $A^* A$ est le carré du conditionnement
de $A$ (le nombre d'opérations est un peu sup\'erieur~:
$QR$ a une constante nettement plus grande que Cholesky mais
il n'y a pas de multiplication de matrice \`a faire, et le résultat
est plus précis).

Notons qu'on peut r\'esoudre de mani\`ere assez analogue
un syst\`eme sous-d\'etermin\'e au sens des moindres carr\'es.
On consid\`ere toujours le syst\`eme $Ax=b$ mais cette fois-ci
$A$ est une matrice ``horizontale'' (nombre de lignes $n<c$ le nombre
de colonnes). Si $b \in $Im$(A)$ (on peut g\'en\'eriquement supposer
que $A$ est de rang $n$), 
il y a une infinit\'e de solutions, on
cherche alors la solution de norme minimale. On cherche donc le
projet\'e orthogonal de l'espace affine des solutions (dirig\'e selon Ker$(A)$)
sur l'orthogonal de Ker$(A)$ qui est Im$A^*$. Ainsi $x=A^*y$
v\'erifie $Ax=b$, donc $AA^*y=b$. Si $A$ est de rang $n$ alors
$AA^* $ est inversible et $y=(AA^*)^{-1}b$ donc $x=A (AA^*)^{-1}b$.
En utilisant la factorisation $QR$ de $A^*$ (attention pas celle de
$A$), on a $AA^*=R^*R$, donc $x=QR(R^*R)^{-1}b$. Si $A$ est de rang $n$,
on a alors en posant $R=(^{R_1}_{0})$ avec $R_1$ matrice $n,n$ inversible~:
$$x=Q\left(\begin{array}{c}R_1\\0\end{array}\right)R_1^{-1} R_1^{*^{-1}}b=Q\left(\begin{array}{c}
{R_1}^{*^{-1}} \\ 0\end{array}\right)b=Q_1 {R_1}^{*^{-1}} b$$
o\`u $Q_1$ d\'esigne les $n$ premi\`eres colonnes de $Q$.
\begin{prop}
Soit $A$ une matrice ayant $n$ lignes et $c>n$ colonnes.
Si $A$ est de rang maximal $n$, posons $A^*=QR$, $R_1$ les $n$
premi\`eres lignes de $R_1$, $Q_1$ les $n$ premi\`eres colonnes
de $Q$. La solution de $Ax=b$ de norme
minimale est donn\'ee par $Q_1c$ o\`u $c$ est la solution de $R_1^*c=b$
(syst\`eme triangulaire).
\end{prop}

{\bf Exemple 1 : la r\'egression lin\'eaire}~:\\
On se donne $n$ points de coordonn\'ees $(x_i,y_i)$ o\`u les $x_i$
sont distincts 2 \`a 2 et on cherche
la droite qui approche le mieux ces points au sens de l'\'ecart en $y$
au carr\'e. Il s'agit donc de trouver $\alpha$ et $\beta$ qui minimisent~:
$$  \sum_{j=1}^n (\alpha+\beta x_i-y_i)^2 $$
Ici on a~:
$$ A=\left( \begin{array}{cc}
1 & x_1 \\
... & ... \\
1 & x_n  \\
\end{array} \right), \quad 
x=\left( \begin{array}{c} \alpha \\ \beta \end{array}\right),
\quad
b=\left( \begin{array}{c}
y_1  \\
...  \\
y_n  \\
\end{array} 
\right)$$
Pour trouver $\alpha, \beta$ de mani\`ere pr\'ecise, on pr\'eferera
donc calculer la factorisation $QR$ de $A$ plut\^ot que calculer $A^*A$, $R_1$ est
une matrice carr\'ee d'ordre 2, $Q$ une matrice carr\'ee d'ordre $n$, 
la premi\`ere colonne de $Q$ est le vecteur de coordonn\'ees
$\pm (1,...,1)/\sqrt{n}$.
Exemple~: on se donne les points $(1,2), (2,1), (3,5), (4,4)$. La
matrice $A$ et $b$ sont donc\\
\giacinputbigmath{A:=evalf(tran([seq(1,4),seq(j,j,1,4)])); b:=[2,1,5,4];}

\giacinputbigmath{q,r:=qr(A); y0,m:=normal(r[0..1,0..1]^-1*trn(q)[0..1]*b);}

\giacinputbig[style="width:800px;height:40px;font-style:large"]{purge(x);droite(y=m*x+y0); scatterplot(seq(j,j,1,4),b);linear_regression_plot(seq(j,j,1,4),b)}

{\bf Exemple 2: r\'egression polynomiale}~:\\
C'est une g\'en\'eralisation de l'exemple pr\'ec\'edent, on cherche un polyn\^ome $P(x)$
de degr\'e fix\'e tel que $\sum_i (y_i-P(x_i))^2$ soit minimal. Si on
choisit la base canonique des polyn\^omes, la
matrice $A$ est alors une matrice de Vandermonde 
et son conditionnement est en g\'en\'eral tr\`es
mauvais. De plus, plus le degr\'e augmente, plus l'extrapolation 
est hasardeuse~:\\
\giacinputbigmath{a:=[[0,-3],[1,-1],[2,0],[3,1],[4,3],[5,4],[6,5],[10,9]]:;}

\giacinputbig[style="width:800px;height:40px;font-style:large"]{scatterplot(a); linear_regression_plot(a[0..6]); polynomial_regression_plot(a[0..6],4);}

On pr\'ef\`erera utiliser une base de polyn\^omes orthogonaux pour
le produit scalaire $\sum_i P(x_i)Q(x_i)$
ou minimiser une autre fonctionnelle quadratique, par
exemple une int\'egrale du carr\'e de la diff\'erence entre une
fonction \`a approcher et un polyn\^ome ou un
polyn\^ome trigonom\'etrique.

{\bf Remarque}~: La factorisation $QR$ peut s'obtenir
en calculant la factorisation de Cholesky de $A^* A$ qui donne $R$,
mais on lui pr\'ef\`ere une m\'ethode de calcul direct pour des
raisons de stabilit\'e, en tout cas pour des matrices denses (pour des
matrices creuses des consid\'erations d'efficacit\'e peuvent faire
pr\'ef\'erer la factorisation de Cholesky).
 
\subsubsection{Jacobi, Gauss-Seidel, relaxation}\index{Jacobi}
\index{Gauss-Seidel} \label{sec:jacobi}
Lorsqu'on a une matrice creuse (peu d'\'el\'ements non nuls),
l'algorithme du pivot de Gauss a tendance \`a densifier rapidement
la matrice r\'eduite (surtout avec le pivot partiel o\`u on ne
controle pas le nombre de z\'eros de la ligne contenant le pivot). Il
peut alors \^etre int\'eressant d'utiliser des m\'ethodes alternatives
ne faisant intervenir que des produits de matrice, donnant \'eventuellement
un r\'esultat seulement approch\'e. 

Par exemple pour calculer
l'inverse d'une matrice $A=M-N$, avec $M$ facile \`a inverser (par
exemple diagonale) et 
$N$ petit en norme et creuse, on peut \'ecrire~:
$$ A^{-1}=(M-N)^{-1} =
(M(I-M^{-1}N))^{-1}=(I+M^{-1}N+(M^{-1}N)^2+...)M^{-1}$$

De m\^eme pour r\'esoudre un syst\`eme lin\'eaire $Ax=b$
avec $A=M-N$,
on consid\`ere la suite $Mx_{n+1}-Nx_n=b$, donc $x_{n+1}$ est obtenu
en r\'esolvant le syst\`eme~:
$$ Mx_{n+1}=b+N x_n, \quad x_0=0$$
pour laquelle on v\'erifiera les hypoth\`eses du th\'eor\`eme du point
fixe, il suffit par exemple de v\'erifier que la plus
grande valeur singuli\`ere de $M^{-1}N$ est strictement plus petite que 1.
Lorsque la matrice $N$ n'est pas creuse, le proc\'ed\'e est int\'eressant
pour r\'esoudre approximativement un syst\`eme si $n$ est grand
et si chaque it\'eration est en $O(n^2)$ (ceci veut
dire qu'on ne calcule pas $M^{-1}$ sauf si c'est
\'evident, par exemple si $M$ est diagonale), 
mais le proc\'ed\'e n'est pas int\'eressant pour le calcul de
l'inverse de $A$.
 
Notons $D$ la partie diagonale de $A$,
$L$ sa partie triangulaire inf\'erieure stricte, $U$ sa partie
triangulaire sup\'erieure stricte,
La m\'ethode de Jacobi utilise pour $M$ la
diagonale $D$ de $A$, alors
que la m\'ethode de Gauss-Seidel prend pour $M$ la partie triangulaire
inf\'erieure $D+L$ de $A$ (diagonale comprise). 
Pour Jacobi, on a donc
$$ x_{n+1}=D^{-1}(b+(D-A)x_n)=x_n+D^{-1}(b-Ax_n)$$
En Xcas, l'instruction pr\'eprogramm\'ee est \verb|jacobi_linsolve|, 
on peut aussi programmer la m\'ethode par
\begin{giacprog}
jacobi(A,b,eps,N):={
  local D,x0,x1,n,j;
  n:=size(A);
  D:=diag(A).^-1;
  x0:=seq(0,n);
  pour j de 1 jusque N faire
    x1:=b-A*x0;
    si l2norm(x1)<eps alors return x0; fsi;
    x0:=x0+D .*x1;
  fpour;
  return "non convergent";
}:;
\end{giacprog}
Un cas simple o\`u on a convergence~:
\begin{prop} 
Lorsque la matrice $A$ est
\`a diagonale strictement dominante, c'est-\`a-dire que
l'\'el\'ement diagonal est en valeur absolue strictement sup\'erieur
\`a la somme des \'el\'ements non diagonaux de la m\^eme ligne~:
$$ |a_{ii}| > \sum_{j\neq i} |a_{ij}| $$
la m\'ethode de Jacobi converge.
\end{prop}
En effet,
$\|M^{-1}Nx\|_\infty < \| x\|_\infty$ car~:
$$ |(Nx)_i| \leq \sum_{j \neq i} |a_{ij}| |x_j| \leq \sum_{j \neq i}
|a_{ij}| \|x\|_\infty < |a_{ii}| \| x\|_\infty  
\quad  \Rightarrow \quad |M^{-1}(Nx)_i| <  \| x\|_\infty $$
On retrouve ce cas pour une petite perturbation d'une matrice
diagonale, par exemple~\\
\giacinputbigmath{n:=500;A:=2*idn(n)+1e-4*ranm(n,n,uniform,-1,1):;b:=seq(1,n):;}

\giacinput{time(c:=linsolve(A,b));}

\giacinput{time(d:=jacobi(A,b,1e-12,50));}

\giacinput{maxnorm(d-c)}
Pour $n$ assez grand, la m\'ethode de Jacobi devient plus rapide. Cela
se v\'erifie encore plus vite si $A$ est une matrice creuse.

Pour Gauss-Seidel,
le calcul de $M^{-1}$ n'est pas effectu\'e, on r\'esoud
directement le syst\`eme triangulaire $Mx_{n+1}=b+Nx_n$ soit
$$ (D+L)x_{n+1}=b-Ux_n$$ 
Gauss-Seidel
est moins adapt\'e \`a la parall\'elisation que Jacobi.
On adapte le programme pr\'ec\'edent
\begin{giacprog}
seidel(A,b,N,eps):={
  local L,U,x0,x1,n,j;
  n:=size(A);
  L:=diag(A,left);
  U:=A-L;
  x0:=seq(0.0,n);
  pour j de 1 jusque N faire
    x1:=b-U*x0;
    x1:=linsolve(L,x1);
    si l2norm(x1-x0)<eps*l2norm(x0) alors return x0; fsi;
    x0:=x1;
  fpour;
  return "non convergent";
}:;
\end{giacprog}

Dans la m\'ethode de relaxation, on pose pour $M$ la matrice triangulaire
inf\'erieure $M=\frac1\omega D+L$ o\`u $\omega >0$, donc
$N=(\frac1\omega-1) D-U$
et on utilise la r\'ecurrence $Mx_{n+1}=b+Nx_n$ donc
$Mx_{n+1}=b+(M-A)x_n$ puis
$M(x_{n+1}-x_n)=b-Ax_n$ puis
$$ (D+\omega L) (x_{n+1}-x_n) = \omega(b-Ax_n)$$
On remarque que Gauss-Seidel correspond \`a $\omega=1$.
L'instruction correspondante de Xcas est \verb|gauss_seidel_linsolve| et
peut prendre en param\`etre le coefficient de relaxation, 
dont la valeur par d\'efaut est 1.

\begin{prop} (Convergence~): 
si $A=M-N$ est une matrice sym\'etrique d\'efinie positive
et si $M^*+N$ est d\'efinie positive, alors la m\'ethode converge. 
\end{prop}
On utilise la norme correspondant \`a
la forme quadratique de matrice $A$ et on calcule la norme subordonn\'ee
de $M^{-1}N$, on a $ M^{-1}Nx=x-y$ avec $y=M^{-1}Ax$ donc 
\begin{eqnarray*} 
\| M^{-1}Nx \|^2_A&=&<x-y|A (x-y))> \\
&=&<x|Ax>+<y|Ay>-<y|Ax>-<x|Ay> \\
&=&<x|Ax>+<y|Ay>-<y|My> -<My|y>\\
&=&<x|Ax>-<y|(M^*+N)y>\\
& < & <x|Ax>=\|x\|_A^2
\end{eqnarray*}
Cons\'equence~: si $A$ sym\'etrique d\'efinie positive, alors 
Gauss-Seidel converge, car $M^*+N=D$. Pour la relaxation,
on a $M^*+N=(2/\omega -1)D$ qui est d\'efinie positive si $\omega<2$.

{\bf Remarque~}: Jacobi et Gauss-Seidel sont impl\'ement\'ees dans les commandes
Xcas {\tt jacobi\_linsolve} et {\tt gauss\_seidel\_linsolve}.

\subsubsection{Le gradient conjugu\'e}\index{gradient conjugu\'e}
Il s'agit de résoudre $Ax=b$, où $A$ est définie positive. 
Si on a une base orthogonale pour le produit scalaire induit par $A$, 
on peut calculer la $j$-ième coordonn\'ee de $x$ 
dans cette base en faisant le produit scalaire de 
$Ax=b$ par le $j$-ième vecteur de la base. 
On construit donc petit à petit une base orthogonale 
pour $A$ par un procédé à la Gram-Schmidt, 
mais on ne part pas de la base canonique~: 
on construit cette famille orthogonale pour $A$ 
en meme temps qu'on calcule les composantes de $x$.
On pose $x_0=0$, à la i-ième itération si $Ax_i-b=0$ 
on a terminé, sinon $r_i=Ax_i-b$ 
est linéairement indépendant des éléments 
de la famille orthogonale dejà construite, 
on complète la famille orthogonale avec un nouveau vecteur, 
on calcule la $i+1$-ième composante de $x$ 
sur la famille orthogonale, et on ajoute le tout à $x_i$ 
pour obtenir $x_{i+1}$. 
On s'arr\^ete en au plus la dimension itérations 
lorsque la famille orthogonale est devenue une base. 

La commande \verb|conjugate_gradient(A,b)| de Xcas permet de faire ce
calcul, on peut préciser une valeur initiale de recherche \verb|x0|
et une précision \verb|eps| en tapant 
\verb|conjugate_gradient(A,b,x0,eps)|.
Voir aussi le menu {\tt Exemple, analyse, gradconj}


\section{Approximation polynomiale} \label{sec:interp}
On présente dans cette section quelques méthodes d'approximation
de fonctions par des polynômes sur un intervalle, la section suivante 
présente des méthodes d'approximation près d'un point ou de l'infini.

\subsection{Polyn\^ome de Lagrange}\index{Lagrange} \index{interpolation}
\'Etant donn\'e la facilit\'e de manipulation qu'apportent les
polynomes, on peut chercher \`a approcher une fonction par un
polyn\^ome. La m\'ethode la plus naturelle consiste \`a chercher
un polyn\^ome de degr\'e le plus petit possible
\'egal \`a la fonction en certains points $x_0,...,x_n$
et \`a trouver une majoration de la diff\'erence entre la fonction
et le polyn\^ome.
Le polynome interpolateur de Lagrange r\'epond \`a cette question.

\subsubsection{Existence et unicit\'e}
Soit donc $x_0,...,x_n$ des r\'eels distincts et $y_0,...,y_n$
les valeurs de la fonction \`a approcher en ces points (on posera
$y_j=f(x_j)$ pour approcher la fonction $f$). On cherche
donc $P$ tel que $P(x_j)=y_i$ pour $j \in [0,n]$.

Commencons par voir s'il y a beaucoup de solutions. Soit $P$ et $Q$
deux solutions distinctes du probl\`eme, alors $P-Q$ est non nul
et va s'annuler en $x_0, ...,x_n$ donc poss\`ede $n+1$ racines donc
est de degr\'e $n+1$ au moins. R\'eciproquement, si on ajoute
\`a $P$ un multiple du polynome $A=\prod_{j=0}^n (X-x_j)$, on obtient
une autre solution. Toutes les solutions se d\'eduisent donc
d'une solution particuli\`ere en y ajoutant un polynome de degr\'e
au moins $n+1$ multiple de $A$. 

Nous allons maintenant construire
une solution particuli\`ere de degr\'e au plus $n$.
Si $n=0$, on prend $P=x_0$ constant. On proc\`ede ensuite par
r\'ecurrence. Pour construire le polyn\^ome correspondant
\`a $x_0,...,x_{n+1}$ on part du polyno\^ome $P_n$ correspondant \`a
$x_0,...,x_{n}$ et on lui ajoute un multiple r\'eel de $A$
\[ P_{n+1}=P_n+ \alpha_{n+1} \prod_{j=0}^n (X-x_j) \]
Ainsi on a toujours $P_{n+1}(x_j)=y_j$ pour $j=0,..n$, on calcule
maintenant $ \alpha_{n+1}$ pour que $P_{n+1}(x_{n+1})=y_{n+1}$.
En remplacant avec l'expression de $P_{n+1}$ ci-dessus, on obtient
\[ P_n(x_{n+1})+  \alpha_{n+1} \prod_{j=0}^n (x_{n+1}-x_j) = y_{n+1} \]
Comme tous les $x_j$ sont distincts, il existe une solution unique~:
\[  \alpha_{n+1}=\frac{y_{n+1}-P_n(x_{n+1})}{\prod_{j=0}^n (x_{n+1}-x_j)}\]

On a donc prouv\'e le~:
\begin{thm} \index{lagrange} \index{interpolation}
Soit $n+1$ r\'eels distincts $x_0,...,x_n$ et $n+1$
r\'eels quelconques $y_0,...,y_n$.
Il existe un unique polyn\^ome $P$ de degr\'e inf\'erieur ou \'egal \`a
$n$, appel\'e polynome de Lagrange, tel que~:
\[ P(x_i)=y_i\]
\end{thm}

Exemple~: d\'eterminons le polynome de degr\'e inf\'erieur ou \'egal
\`a 2 tel que $P(0)=1, P(1)=2, P(2)=1$. On commence par $P_0=1$.
Puis on pose $P_1=P_0+ \alpha_{1}X=1+ \alpha_{1}X$. 
Comme $P(1)=2=1+ \alpha_{1}$ on en tire $ \alpha_{1}=1$
donc $P_1=1+X$. Puis on pose $P_2=P_1+ \alpha_{2}X(X-1)$, on a 
$P_2(2)=3+2 \alpha_{2}=1$
donc $ \alpha_{2}=-1$, finalement $P_2=1+X-X(X-1)$.\\
\giacinputbigmath{P:=interp([0,1,2],[1,2,1]);}

\subsubsection{Majoration de l'erreur d'interpolation.}
Reste \`a estimer l'\'ecart entre une fonction et son polynome
interpolateur, on a le~:
\begin{thm} \index{lagrange}
Soit $f$ une fonction $n+1$ fois d\'erivable sur un intervalle $I=[a,b]$
de $\R$, $x_0,...,x_n$ des r\'eels distincts de $I$. 
Soit $P$ le polynome de Lagrange donn\'e par les $x_j$ et $y_j=f(x_j)$.
Pour tout r\'eel $x \in I$,
il existe un r\'eel $\xi_x \in [a,b]$ (qui d\'epend de $x$) tel
que~:
\begin{equation} \label{eq:lagrange}
 f(x)-P(x) = \frac{f^{[n+1]}(\xi_x)}{(n+1)!} \prod_{j=0}^n(x-x_j) 
\end{equation}
\end{thm}
Ainsi l'erreur commise d\'epend d'une majoration de la taille
de la d\'eriv\'ee $n+1$-i\`eme sur l'intervalle, mais aussi
de la disposition des points $x_j$ par rapport \`a $x$. Par exemple
si les points $x_j$ sont \'equidistribu\'es, le terme
$|\prod_{j=0}^n(x-x_j)|$ sera plus grand pr\`es du bord de $I$ qu'au
centre de $I$.

Preuve du th\'eor\`eme~: Si $x$ est l'un des $x_j$ l'égalité est vraie. Soit 
\[ C=(f(x)-P(x))/\prod_{j=0}^n(x-x_j) \]
on considère maintenant la fonction~:
\[ g(t)=f(t)-P(t) - C \prod_{j=0}^n(t-x_j) \]
elle s'annule en $x_j$ pour $j$ variant de 0 à $n$ ainsi qu'en $x$
suite au choix de la constante $C$, donc $g$ s'annule au moins $n+2$ fois
sur l'intervalle contenant les $x_j$ et $x$, donc $g'$ s'annule au moins
$n+1$ fois sur ce même intervalle, donc $g'{'}$ s'annule au moins
$n$ fois, etc. et finalement $g^{[n+1]}$ s'annule une fois
au moins sur cet intervalle. Or 
\[ g^{[n+1]} = f^{[n+1]} - C (n+1)!\]
car $P$ est de degré inférieur ou égal à $n$ 
et $ \prod_{j=0}^n(x-x_j) - x^{n+1}$ est de degré
inférieur ou égal à $n$. Donc il existe bien un réel $\xi_x$ dans
l'intervalle contenant les $x_j$ et $x$ tel que
\[ C=\frac{f^{[n+1]}(\xi_x)}{(n+1)!} \]
\giacinputbigmath{f(x):=ln(x^2+1); n:=10; X:=evalf(seq(j/n,j,0,n)); Y:=map(X,f);}
\giacinputbigmath{P:=interp(X,Y);}
\giacinput{plot([f(x),P],x=-1..2,color=[red,blue])}

\giacinput{plot(1e7*abs(f(x)-P),x=0..1)}

Attention, l'erreur d'interpolation peut devenir tr\`es grande
lorsqu'on utilise beaucoup de points d'interpolation.

\subsubsection{Calcul efficace du polyn\^ome de
  Lagrange.}\index{divis\'ees, diff\'erences}\index{diff\'erences divis\'ees}
Avec la m\'ethode de calcul pr\'ec\'edent, on remarque que le
polyn\^ome de Lagrange peut s'\'ecrire \`a la Horner sous la forme~:
\begin{eqnarray*}
 P(x) &=& \alpha_0 + \alpha_1 (x-x_0) + ... + \alpha_n
 (x-x_0)...(x-x_{n-1}) \\
&=& \alpha_0 + (x-x_0)( \alpha_1 + (x-x_1)(\alpha_2 +  ... +
(x-x_{n-2})(\alpha_{n-1}+(x-x_{n-1}) \alpha_n)...))
\end{eqnarray*}
ce qui permet de le calculer rapidement une fois les $\alpha_i$
connus.
On observe que 
\[ \alpha_0=f(x_0), \quad \alpha_1=\frac{f(x_1)-f(x_0)}{x_1-x_0} \]
On va voir que les $\alpha_k$ peuvent aussi se mettre sous forme
d'une diff\'erence.
On d\'efinit les diff\'erences divis\'ees d'ordre $n$ par r\'ecurrence
\[ f[x_i]=f(x_i), \quad f[x_i,...,x_{k+i+1}]=
\frac{f[x_{i+1},...,x_{k+i+1}]-f[x_i,...,x_{k+i}]}{x_{k+i+1}-x_i} \]
On va montrer que $\alpha_k=f[x_0,...,x_k]$.
C'est vrai au rang 0, il suffit donc de le montrer au rang $k+1$ en
l'admettant au rang $k$. Pour cela on observe qu'on peut construire 
le polyn\^ome d'interpolation en $x_0,...,x_{k+1}$ \`a partir des polyn\^omes 
d'interpolation $P_k$ en $x_0,...,x_k$ et $Q_k$ en $x_1,...,x_{k+1}$ 
par la formule~:
\[ P_{k+1}(x)= \frac{(x_{k+1}-x)P_k + (x-x_0)Q_k}{x_{k+1}-x_0}\]
en effet on v\'erifie que $P_{k+1}(x_i)=f(x_i)$ pour $i\in [1,k]$ car
$P_k(x_i)=f(x_i)=Q_k(x_i)$,
et pour $i=0$ et $i=k+1$, on a aussi $P_{k+1}(x_0)=f(x_0)$ et  
$P_{k+1}(x_{k+1})=f(x_{k+1})$.
Or $\alpha_{k+1}$ est le coefficient dominant de $P_{k+1}$ donc
c'est la diff\'erence du coefficient dominant de $Q_k$ et de $P_k$
divis\'ee par $x_{k+1}-x_0$, c'est-\`a-dire la d\'efinition de 
$f[x_0,...,x_{k+1}]$ en fonction de $f[x_1,...,x_{k+1}]$ et $f[x_0,...,x_{k}]$.

Exemple~: on reprend $P(0)=1, P(1)=2, P(2)=1$. On a
\[
\begin{array}{cccc}
x_i & f[x_i] & f[x_i,x_{i+1}] & f[x_0,x_1,x_2] \\
0 & \framebox{1} & & \\
  &   & (2-1)/(1-0)=\framebox{1} & \\
1 & 2 & &  (-1-1)/(2-0)=\framebox{-1}   \\
  &   & (1-2)/(2-1)=-1 & \\
2 & 1 & & \\
\end{array}
\]
donc $P(x)=\framebox{1}+(x-0)(\framebox{1}+(x-1)(\framebox{-1}))=1+x(2-x)$.

On peut naturellement utiliser l'ordre que l'on souhaite pour les
$x_i$, en observant que le coefficient dominant de $P$ ne d\'epend pas de
cet ordre, on en d\'eduit que $f[x_0,...,x_k]$ est ind\'ependant de
l'ordre des $x_i$, on peut donc \`a partir du tableau ci-dessus
\'ecrire $P$ par exemple avec l'ordre 2,1,0, sous la forme
\[ P(x)=1+(x-2)(-1+(x-1)(-1))=1+(x-2)(-x)\]

Le nombre d'op\'erations n\'ecessaires pour faire ce calcul est
proportionnel \`a $n^2$.

La commande Xcas \verb|interp| ou son synonyme \verb|lagrange|
effectue ce calcul. Pour avoir les diff\'erences divis\'ees, 
on peut cr\'eer le programme suivant~:
\begin{giacprog}
dd(X,Y):={ // Algorithme des différences divisées
  local k,l,n,A,old,cur;
  si size(X)!=size(Y) alors return "erreur" fsi;
  n:=size(X)-1;
  A:=[Y[0]];
  old:=Y;
  pour k de 1 jusque n faire
    // calcul de cur en fonction de old
    cur:=[];
    pour l de 0 jusque n-k faire
      cur[l]:=(old[l+1]-old[l])/(X[l+k]-X[l])
    fpour;
    A[k]:=cur[0];
    old:=cur;
  fpour;
  retourne A;
}:;
\end{giacprog}
\giacinput{dd([0,1,2],[1,2,1])}
(N.B. pour rendre ce programme optimal, il faudrait utiliser
l'affectation en place \verb|=<| au lieu de \verb|:=|)

\subsubsection{Sensibilit\'e aux erreurs sur les donn\'ees.}
Si les $y_j$ sont connus avec une certaine erreur, alors le polyn\^ome 
d'interpolation est connu de mani\`ere approch\'ee. Plus
pr\'ecis\'ement, si on note
$$ \pi_j(x)=\prod_{k \neq j} \frac{x-x_k}{x_j-x_k}$$
le $j$-i\`eme polynome de Lagrange valant 1 en $x_j$ et 0 ailleurs,
l'erreur vaut~:
$$ \sum_j (\tilde{y}_j-y_j) \pi_j(x) $$
Si l'erreur relative sur les $y_j$ est major\'ee par $\epsilon$,
l'erreur sur le polyn\^ome d'interpolation est major\'ee par~:
$$ \epsilon \, \mbox{max}_j|y_j| \sum_j |\pi_j(x)| $$
il y a amplification de l'erreur par un facteur major\'e par~
$$ \mbox{max}_{x \in [a,b]} \sum_{j=0}^n |\pi_j(x)| $$
Ce facteur s'appelle {\bf constante de Lebesgue}\index{Lebesgue, constante
  de}\index{constante de Lebesgue} relative \`a la
subdivision $x_0,...,x_n$ de $[a,b]$. On peut le calculer
num\'eriquement pour une subdivision \'equidistribu\'ee,
et montrer qu'il croit comme $\frac{2^{n+1}}{e n \ln(n)}$,
par exemple pour $n=40$, il vaut environ {\tt 5e9}.
Illustration avec Xcas~:\\
\giacinputbigmath{l(k,n):=product((x-j)/(k-j),j,0,k-1)*product((x-j)/(k-j),j,k+1,n);}\\
\giacinput[style="width:800px;height:40px;font-style:large"]{n:=10; f:=add(abs(l(k,n)),k,0,n); plot(f,x=0..n)}
puis essayer avec $n=20$. Pour $n=40$, en observant que le max
est atteint dans $[0,1]$, on peut remplacer les valeurs absolues
par la bonne puissance de -1\\
\giacinputbigmath{n:=40; g:=l(0,n)+add((-1)^(k+n-1)*l(k,n),k,1,n)}\\
on a alors un polyn\^ome, dont on calcule l'abscisse du maximum par\\
\giacinputbigmath{g1:=normal(g'); l:=realroot(g1,1e-12,evalf)}\\
puis \giacinput{subst(g,x=l[0])} qui donne environ {\tt 4.7e9}.


\subsection{Interpolation aux points de Tchebyshev}\index{Tchebyshev}
L'id\'ee la plus naturelle pour interpoler un polyn\^ome en $n+1$
points d'un intervalle $[a,b]$ consiste \`a couper en $n$ morceaux
de m\^eme longueur. Mais ce n'est pas le plus efficace car le
terme $|\prod_{j=0}^n(x-x_j)|$ est plus grand pr\`es des bords. Il est
donc plus judicieux d'avoir plus de points pr\`es des bords et moins
\`a l'int\'erieur. C'est l\`a qu'interviennent les polyn\^omes de
Tchebyshev, ils sont d\'efinis par d\'eveloppement de $\cos(nx)$
en puissances de $\cos(x)$~:
$$ T_n(\cos(x))=\cos(nx) $$
Sur $[-1,1]$, le polyn\^ome $T_n$ vaut en valeur absolue au plus 1, et
atteint cette valeur exactement $n+1$ fois lorsque $x=k\pi/n$ donc 
$X=\cos(x)=\cos(k\pi/n)$.\\
\giacinput{n:=7; plot(tchebyshev1(n),x=-1..1)}
De plus cette majoration est optimale. En effet
soit $U$ un polyn\^ome de degr\'e au plus $n$ 
qui v\'erifie $|U|_\infty<1$ sur $[-1,1]$
et tel que $U$ ait le m\^eme coefficient dominant que
$T_n$. Alors la diff\'erence $T_n-U$ est du signe de $T_n$ en
$X=\cos(k\pi/n), k \in [0,n]$ puisqu'en ces points $T_n$ est
extr\^emal de valeur absolue 1. Donc $T_n-U$ s'annule $n$ fois sur
$[-1,1]$, mais son degr\'e est au plus $n-1$ donc $T_n=U$ absurde.

On a donc int\'er\^et \`a prendre les abscisses des points
d'interpolation en les racines $t_n$ de $T_n$
$$ \frac{a+b}{2} + \frac{a-b}{2} t_n, \quad t_n=\cos((k+\frac12)\frac\pi n), 
\quad k=0..n-1$$
On pourra observer que le ph\'enom\`ene de 
Runge\index{Runge, ph\'enom\`ene de} qui apparait par
exemple pour $f(x)=1/(25x^2+1)$ sur $[-1,1]$ avec des points d'interpolation
\'equidistants n'apparait plus si on prend des points de Tchebyshev.\\
\giacinputbigmath{f(x):=1/(1+25x^2); n:=20; X:=seq(2*j/n-1.0,j,0,n); }\\
\giacinputbig{l:=lagrange(X,map(X,f)):; plot(l-f(x),x=-1..1)}

\giacinputbigmath{T:=seq(cos((j+0.5)*pi/(n+1)),j,0,n);}\\
\giacinput[style="width:800px;height:20px;font-style:large"]{l:=lagrange(T,map(T,f)):; plot(100*(l-f(x)),x=-1..1)}

Ceci est reli\'e \`a la constante de Lebesgue 
qui pour des points de Tchebyshev vaut un peu moins de 4 pour $n<100$
(se comporte comme $\frac2\pi \ln(n)$ pour $n$ grand), on peut montrer
que les polyn\^omes de Lagrange aux points de Tchebyshev convergent
uniform\'ement vers $1/(25x^2+1)$ (c'est plus g\'en\'eralement
vrai pour toute fonction $C^1$ sur l'intervalle).

Remarque~: ce n'est pas le polyn\^ome de meilleure approximation,
de $f$ (celui qui minimise la norme $L^\infty$ de la diff\'erence)
car la d\'eriv\'ee $n+1$-i\`eme varie en g\'en\'eral sur $[a,b]$. Mais
il est trop difficile de le calculer en g\'en\'eral.

Exemple de calcul explicite de constante de Lebesgue pour $n=40$ avec
Xcas
\begin{giacprog}
purge(x);
t(k,n):={ 
 local T; 
 T:=seq(cos(pi*(k+.5)/(n+1)),k,0,n);
 return product((x-T[j])/(T[k]-T[j]),j,0,k-1)*
  product((x-T[j])/(T[k]-T[j]),j,k+1,n);
}:;
\end{giacprog}
\giacinput[style="width:800px;height:20px;font-style:large"]{n:=40; f:=add(abs(t(k,n)),k,0,n):;plot(f,x=-1..1)}

\subsection{Interpolation de Hermite}\index{Hermite, interpolation de}
Si on fait tendre un des points d'interpolation vers un autre, la
donn\'ee de la valeur en ces 2 points serait redondante, elle 
est remplac\'ee par la valeur de la d\'eriv\'ee. Dans le calcul
des diff\'erences divis\'ees ci-dessus on fera comme si les
2 points \'etaient distincts et successifs, disons $x_i$ et $x_{i+1}$,
on remplace le rapport ind\'etermin\'e 
\[ \frac{f(x_{i+1})-f(x_i)}{x_{i+1}-x_i} = \frac{0}{0}\]
par $f'(x_i)$.
On montre qu'une fois ce changement r\'ealis\'e
tout le reste est identique (y compris la majoration d'erreur).
On peut bien sur g\'en\'eraliser au cas de plusieurs paires de points 
identiques ou des multiplicit\'es plus grandes faisant intervenir
des d\'eriv\'ees d'ordre sup\'erieures, dans ce cas la diff\'erence
divis\'ee $f[x_i,...,x_{i+m}]$ sera remplac\'ee par $f^{[m]}(x_i)/m!$.

\subsection{Polyn\^omes de Bernstein et courbes de
  B\'ezier}\index{Bernstein, polyn\^omes de} \index{B\'ezier, courbes de}
Les polyn\^omes de Bernstein de degr\'e $m$ sont les
$$ B^n_k (x) = 
\left( \begin{array}{c} n \\ k \end{array} \right) x^k (1-x)^{n-k}$$
On reconnait la probabilit\'e d'avoir $k$ succ\`es si on effectue $n$
tirages ind\'ependants (avec remise) 
avec probabilit\'e $x \in [0,1]$ de succ\`es par tirage. Ceci donne
une relation de r\'ecurrence
$$ B^{n+1}_{k+1}=(1-x)B^n_{k+1}+x B^n_k $$
qui peut servir \`a calculer les $B^m_i$. On en d\'eduit aussi que l'esp\'erance
de $k$ selon cette loi vaut $nx$ (somme de $n$ variables d'esp\'erance
$x$) et l'esp\'erance de $(k-nx)^2$ vaut
$nx(1-x)$ (variance de la somme de $n$ variables ind\'ependantes
de variance $x$).
On en d\'eduit qu'on peut approcher uniform\'ement une
fonction continue sur un intervalle $[a,b]$ par des polyn\^omes, en
se ramenant \`a $a=0, b=1$, on pose~:
$$ P_n(x) = \sum_{k=0}^n f(\frac{k}{n}) B^n_k(x) $$
En effet, par continuit\'e uniforme de $f$ sur $[0,1]$, pour
$\epsilon>0$,
il existe $\delta>0$ tel que $|x-y|<\delta \Rightarrow
|f(x)-f(y)|<\epsilon/2$,
dans
$$P_n(x)-f(x)=\sum_{k=0}^n (f(\frac{k}{n})-f(x)) B^n_k(x)$$
on d\'ecompose la somme sur $k$ en deux parties, $|k/n-x|<\delta$
et $|k/n-x| \geq \delta$, pour la premi\`ere somme, on majore
$|f(\frac{k}{n})-f(x)|$ par $\epsilon/2$ puis par $\sum_{k=0}^n$,
pour la deuxi\`eme somme, on majore par $2|f|_\infty$ et on utilise
$1<(k/n-x)^2/\delta^2=1/n^2/\delta^2 (k-nx)^2$ pour se ramener au calcul
de la variance de $k$, au final
$$ |P_n(x)-f(x)| \leq \frac \epsilon 2 + \frac{1}{n^2 \delta^2} nx(1-x)|f|_\infty$$
il suffit de choisir $n$ assez grand pour rendre le membre de droite
plus petit que $\epsilon$.

Les polyn\^omes de Bernstein ne sont pas des polyn\^omes
interpolateurs aux points $k/n, \, 0<k<n$, et la convergence
n'est pas forc\'ement tr\`es rapide.
On les utilise pour approcher rapidement des morceaux de
courbes, si on se donne des ``points de controle'' $A_0, ..., A_n$
on construit la courbe param\'etr\'ee
$$ A(t) = \sum_{k=0}^n A_k \left( \begin{array}{c} n\\ i \end{array} \right) x^i
(1-x)^{n-i} $$
appel\'ee courbe de B\'ezier. En pratique on les utilise pour $n=3$.

\subsection{Polynômes orthogonaux.}\index{orthogonaux, polyn\^omes}
\index{polyn\^omes orthogonaux}
Il s'agit d'une autre m\'ethode d'approximation, 
particuli\`erement important pour l'int\'egration~: les polyn\^omes
de meilleur approximation au sens de normes $L^2$ ou $L^2$
\`a poids $w(x)>0$ sur l'intervalle de bornes $\alpha$ et $\beta$
(finis ou infinis). 
On consid\`ere le produit scalaire
$$ <f|g>=\int_\alpha^\beta w(x) f(x)g(x) \ dx$$
et on projette alors la fonction \`a approcher 
sur une base de polyn\^omes orthogonaux
de degr\'es croissants construit par la proc\'edure
de Gram-Schmidt \`a partir de la base canonique
pour le produit scalaire ci-dessus.

\begin{prop}
Le polyn\^ome $P_n$ de degr\'e $n$
obtenu par orthogonalisation de Gram-Schmidt
pour le produit scalaire $\int_\alpha^\beta w(x) f(x)g(x) \ dx$
poss\`ede $n$ racines r\'eelles.
\end{prop}
En effet, soit $r$ le nombre de racines r\'eelles de $P_n$, on pose $f=P_n$ et 
$g=\prod_{i=1}^r (x-x_i)$, $wfg$ est de signe constant
et non identiquement nul donc $<f|g> \neq 0$ donc
$r=n$ sinon $g$ serait de degr\'e strictement plus petit que $n$
donc orthogonal \`a $P_n$.

On peut aussi construire ces polyn\^omes en cherchant les valeurs
propres de
$$ T(f)=\frac{1}{w} (awf')'$$
o\`u $a>0$ est un polyn\^ome de degr\'e au plus 2
sur $]\alpha,\beta[$, tel que $aw$ s'annule (ou tend vers 0) 
aux bornes de l'intervalle d'int\'egration~: si $\alpha$ et $\beta$ sont finis
$a(x)=(x-\alpha)(\beta-x)$.
On a alors
$$ <T(f)|g>=\int_\alpha^\beta (awf')'g =
[awf'g]_\alpha^\beta-\int_\alpha^\beta awg'f'
=-\int_\alpha^\beta awg'f'$$
car le terme tout int\'egr\'e s'annule 
(puisque $aw$ s'annule en $\alpha$ et $\beta$). Donc $<T(f)|g>=<f|T(g)>$
est sym\'etrique, les vecteurs propres de $T$ correspondant \`a des
valeurs propres distinctes sont donc orthogonaux entre eux.
Pour trouver ces valeurs propres/polyn\^omes vecteurs propres, on
\'ecrit $T(P_n)=\lambda_n P_n$ pour un polyn\^ome $P_n$ de degr\'e
$n$. Si $aw'/w$ est un polyn\^ome de degr\'e au plus 1, 
le terme de degr\'e dominant de cette \'equation
donne la valeur de $\lambda_n$ et les termes de degr\'e plus petits
permettent en g\'en\'eral de d\'eterminer de mani\`ere unique les
coefficients de $P_n$ en fonction du coefficient dominant.

Pour certains poids $w(x)$ standards,
les polyn\^omes obtenus ont un nom~:
\begin{itemize}
\item Legendre\index{Legendre} pour $w(x)=1$ sur $[-1,1]$, $a(x)=1-x^2$
\item Hermite pour $w(x)=e^{-x^2}$ sur $\R$, $a(x)=1$
\item Laguerre pour $w(x)=x^a e^{-x}$ sur $\R^+$, 
\item Tchebyshev de premi\`ere esp\`ece pour $w(x)=1/\sqrt{1-x^2}$ sur
  $[-1,1]$, $a(x)=1-x^2$
\item Tchebyshev de deuxi\`eme esp\`ece pour $w(x)=\sqrt{1-x^2}$ sur
  $[-1,1]$, $a(x)=1-x^2$
\end{itemize}

Ainsi, les polyn\^omes de Legendre v\'erifient
$$ ((1-x^2)P_n')'=\lambda_n P_n$$
Le terme de degr\'e $n$ de cette \'equation donne $\lambda_n=-n(n+1)$,
le terme sous-dominant est nul. Plus g\'en\'erallement, 
le terme de degr\'e $k$ v\'erifie
\begin{equation} \label{eq:legendre_rec}
 (k+2)(k+1)p_{k+2}-k(k+1)p_k=-n(n+1)p_k \Rightarrow
p_{k+2}=\frac{k(k+1)-n(n+1)}{(k+2)(k+1)} p_k
\end{equation}
Ceci permet de calculer le polyn\^ome $P_n$, on normalise
$P_n$ par $P_n(1)=1$.\\
\giacinputbig{n:=10; p:=makelist(n+1); p[0]:=1;}\\
\giacinputbig{for k from 0 to size(p)-3 step 2 do p[k+2]:=(k*(k+1)-n*(n+1))/(k+2)/(k+1)*p[k]; od;}\\
\giacinputbigmath{q:=p*1/sum(p); normal(poly2symb(revlist(q))); legendre(n)}

Le calcul de ces polyn\^omes peut aussi se faire par une r\'ecurrence \`a 2
crans du type~:
\begin{equation} \label{eq:rec_orthogonaux}
P_{n+1}=(a_nx-b_n)P_n-c_nP_{n-1}
\end{equation}
La valeur de $a_n$ est d\'efinie par la normalisation de la famille de
polyn\^omes, ensuite $b_n$ et $c_n$ sont d\'etermin\'es respectivement
par 
$$<P_{n+1}|P_n>=0 \Rightarrow b_n<P_n|P_n>=a_n<xP_n|P_n>$$ 
et
$$<P_{n+1}|P_{n-1}>=0 \Rightarrow
c_n<P_{n-1}|P_{n-1}>=a_n<xP_n|P_{n-1}>=a_n<P_n|xP_{n-1}>$$
donc
$$c_n<P_{n-1}|P_{n-1}>=\frac{a_n}{a_{n-1}}<P_n|P_n+b_{n-1}P_{n-1}+c_{n-1}P_{n-2}>
=\frac{a_n}{a_{n-1}}<P_n|P_n>$$
Les autres relations
d'orthogonalit\'e $<P_{n+1}|P_j>=0, j<n-1$ sont automatiquement
v\'erifi\'ees puisque $<xP_n|P_j>=<P_n|xP_j>=0$ et $P_n$ est orthogonal
aux polyn\^omes de degr\'e $\leq n-1$.

Dans l'exemple des polyn\^omes de Legendre, les polyn\^omes obtenus
sont pairs si $n$ est pair et impairs sinon, la relation de 
r\'ecurrence a donc un coefficient $b_n$ nul. La convention
de normalisation usuelle est $P_n(1)=1$, on peut montrer qu'on a
$a_n=(2n+1)/(n+1)$ et $<P_n|P_n>=2/(2n+1)$ 
donc $c_n=n/(n+1)$.
$$ (n+1)P_{n+1}=(2n+1)xP_n-nP_{n-1}$$
En effet la normalisation en 1 donne $1=a_n-c_n$ donc $c_n=a_n-1$,
les termes de degr\'e $n+1$ et $n-1$ de $P_{n+1}=a_nxP_n-c_nP_{n-1}$ donnent
$$ p_{n+1,n+1}=a_np_{n,n}, \quad p_{n+1,n-1}=a_n
p_{n,n-2}-(a_n-1)p_{n-1,n-1}$$
On applique alors (\ref{eq:legendre_rec}) et on d\'eduit de la
deuxi\`eme \'equation ci-dessus~:
$$ -\frac{n(n+1)}{2(2n+1)} p_{n+1,n+1}= -\frac{n(n-1)}{2(2n+1)} a_n
p_{n,n}-(a_n-1)p_{n-1,n-1}$$
puis on applique la premi\`ere~:
$$ \frac{n(n+1)}{2(2n+1)} -
\frac{n(n-1)}{2(2n+1)}=\frac{a_n-1}{a_na_{n-1}}$$
d'o\`u 
$$ a_n=\frac{1}{1-\frac{n^2}{4n^2-1} a_{n-1}}$$

\giacinputbig{S(f,g):=int(f*g,x,-1,1);}\\
\giacinputbigmath{gramschmidt([1,x,x^2,x^3,x^4],S);}\\
\giacinputbigmath{f:=ln(x+2);C:=seq(S(f,legendre(k))/S(legendre(k),legendre(k)),k,0,4);}\\
\giacinputbigmath{g:=sum(C[j]*legendre(j),j,0,4);}\\
\giacinputbig{plot([f,g],x,-1.4,1.4,color=[red,blue]);}

{\bf Remarques}
\begin{itemize}
\item On peut utiliser la r\'ecurrence \`a deux crans pour \'evaluer
le polyn\^ome en un r\'eel, il n'est alors pas n\'ecessaire
de calculer $P_n$ dans la base canonique.
\item La r\'ecurrence \`a deux crans se g\'en\'eralise pour les degr\'es
plus petits que $d$ au produit scalaire
$$ <P|Q>=\sum_{j=0}^d P(x_j) Q(x_j) $$
o\`u les $x_j$ sont des abscisses distinctes 2 \`a 2. Le calcul
d'une base orthogonale permet de
faire des calculs de r\'egressions polynomiales mieux conditionn\'es
qu'en utilisant la base canonique (et la matrice de Vandermonde).
\item
On peut voir l'interpolation trigonom\'etrique (s\'eries de Fourier,
transform\'ee de Fourier discr\`ete) comme une
g\'en\'eralisation en rempla\c{c}ant une base orthonormalis\'ee
de polyn\^omes par une base orthogonale de sinus, cosinus
ou exponentielles.
\end{itemize}
 
\subsection{Les splines}\index{splines}
Il s'agit de fonctions définies par des polynomes de degré borné
sur des intervalles, dont on fixe la valeur
aux extrémités des intervalles (comme pour le polynome de Lagrange)
ce qui rend la fonction continue, de plus on exige un
degré de régularité plus grand, par exemple etre de classe $C^2$.
Enfin, on fixe des conditions aux bornes de la réunion des 
intervalles, par exemple avoir certaines dérivées nulles. 

Par exemple supposons qu'on se donne $n$ intervalles, donc $n+1$
points $x_0,...,x_n$, on se fixe une régularité $C^{d-1}$. Ceci
entraine $(n-1)d$ conditions de recollement, on y ajoute $n+1$
conditions de valeur en $x_0,...,x_n$, on a donc $nd+1$ conditions,
la borne sur le degré des polynomes doit donc etre $d$ (ou plus,
mais $d$ suffit) ce qui donne $n(d+1)$ degrés de liberté, on
peut donc ajouter $d-1$ conditions, par exemple pour les splines
naturelles, on impose que les dérivées d'ordre $d/2$ à $d-1$
soient nulles en $x_0$ et $x_n$ (si $d$ est pair, on commence à
la dérivée $d/2+1$-ième nulle en $x_n$).

Pour trouver les polynomes, on doit donc résoudre un grand système
linéaire. Une méthode permettant de diminuer la taille du système
linéaire à résoudre dans le cas des splines naturelles
consiste à se fixer $n$ inconnues $z_0,..,z_{n-1}$
représentant les dérivées $d$-ième de la spline $f$ en
$x_0$ sur $[x_0,x_1]$ à $x_{n-1}$ sur $[x_{n-1},x_n]$, 
et $(d-1)/2$ inconnues $f_j$, représentant
la valeur de la dérivée de $f$ en $x_0$ pour $j$ variant
de 1 à $(d-1)/2$. On peut alors écrire le polynome sur l'intervalle
$[x_0,x_1]$ car on connait son développement de Taylor en $x_0$.
On effectue un changement d'origine (par application répétée
de Horner) en $x_1$. On obtient alors le polynome sur $[x_1,x_2]$
en remplaçant uniquement la dérivée $d$-ième par $z_1$.
On continue ainsi jusqu'en $x_{n-1}$. Le système s'obtient en
calculant la valeur du polynome en $x_0,...,x_n$ et la nullité
des dérivées d'ordre $(d-1)/2$ à $d/2$ en $x_n$. On résoud
le système et on remplace pour avoir les valeurs numériques
des coefficients du polynome.

\subsection{Autres approximations polynomiales.}
On peut citer le polyn\^ome de Taylor en un point qui donne
une bonne approximation pr\`es du point (voir aussi ci-dessus
le polyn\^ome de Hermite), les approximants de Pad\'e 
o\`u on approche par le quotient de 2 polyn\^omes (ceci
donne parfois de tr\`es bons r\'esultats comme pour la fonction
exponentielle pr\`es de 0 par exemple).
\giacinputbigmath{purge(x); p:=pade(exp(x),x,10,6);}
On observe que le d\'enominateur est le num\'erateur pris en
$-x$. Ceci permet de calculer pr\'ecis\'ement $e^x$ par exemple sur
$[-1,1]$ en tr\`es peu d'op\'erations arithm\'etiques, calcul de
$X=xx$, puis de $a=(30X+3360)X+30240, b=x((X+420)X+15120)$
puis $(a+b)/(a-b)$, soit 5 multiplications, 6 additions, 1 division.
\giacinputbigmath[style="width:800px;height:40px;font-style:large"]{x:=0.5; X:=x*x; a:=(30X+3360)*X+30240;
  b:=x*((X+420)*X+15120); (a+b)/(a-b); exp(0.5);}

On utilise aussi souvent des approximations distinctes selon
l'intervalle consid\'er\'e, par exemple l'interpolation lin\'eaire
par morceaux, les fonctions splines ... ou la r\'eduction d'arguments
pour se ramener \`a un intervalle avec une bonne apprixomation
(par exemple $e^x=(e^{x/2})^2$)

\section{Int\'egration num\'erique} 
\index{integration} \index{quadrature}
Les fractions rationnelles admettent une primitive que l'on calcule
en d\'ecomposant la fraction avec B\'ezout comme expliqu\'e pr\'ec\'edemment.
Mais elles font figure d'exceptions,
la plupart des fonctions n'admettent pas de primitives qui s'expriment
à l'aide des fonctions usuelles. Pour calculer une int\'egrale,on
revient donc à la d\'efinition d'aire sous la courbe, aire que
l'on approche, en utilisant par exemple un polynome de Lagrange.

Le principe est donc le suivant~: on d\'ecoupe l'intervalle d'int\'egration
en subdivisions $[a,b]=[a,a+h] + [a+h,a+2h]+...[a+(n-1)h,a+nh=b$, où
$h=(b-a)/n$ est le pas de la subdivision, et
sur chaque subdivision, on approche l'aire sous la courbe.

\subsection{Les rectangles et les trap\`ezes}
Sur une subdivision $[\alpha,\beta]$, on approche la fonction par un segment.
Pour les rectangles, il s'agit d'une horizontale~: on peut prendre 
$f(\alpha)$, $f(\beta)$ (rectangle à droite et gauche)
ou $f((\alpha+\beta)/2)$ (point milieu), pour les trap\`ezes on utilise
le segment reliant $[\alpha,f(\alpha)]$ à $[\beta,f(\beta)]$.

Exemple~: calcul de la valeur approch\'ee de $\int_0^1 t^3 dt$
(on en connait la valeur exacte $1/4=0.25$) par ces m\'ethodes en subdivisant
$[0,1]$ en 10 subdivisions (pas $h=1/10$), donc $\alpha=j/10$ et $\beta=(j+1)/10$
pour $j$ variant de 0 à 9.
Pour les rectangles à gauche, on obtient sur une subdivision
$f(\alpha)=(j/10)^3 $ que l'on multiplie par la longueur de la subdivision 
soit $h=1/10$~:
\[ \frac{1}{10} \sum_{j=0}^9 (\frac{j}{10})^3  = \frac{81}{400} = 0.2025\]
Pour les rectangles à droite, on obtient
\[ \frac{1}{10} \sum_{j=1}^{10} (\frac{j}{10})^3  = \frac{121}{400} = 0.3025\]
Pour le point milieu $f((\alpha+\beta)/2)=f((j/10+(j+1)/10)/2)=f(j/10+1/20)$
\[ \frac{1}{10} \sum_{j=0}^9 (\frac{j}{10}+\frac{1}{20})^3  = 199/800 = 0.24875\]
Enfin pour les trap\`ezes, l'aire du trap\`eze d\'elimit\'e par l'axe des $x$,
les verticales $y=\alpha$, $y=\beta$ et les points sur ces verticales
d'ordonn\'ees respectives $f(\alpha)$ et $f(\beta)$ vaut
\[ h \frac{f(\alpha)+f(\beta)}{2}\]
donc
\[ \frac{1}{10} \sum_{j=0}^9 \left( (\frac{j}{10})^3 +(\frac{j+1}{10})^3
\right) = 
\frac{101}{400} = 0.2525 \]
Dans la somme des trap\`ezes, on voit que chaque terme apparait deux fois
sauf le premier et le dernier.

Plus g\'en\'eralement, les formules sont donc les suivantes~:
\index{rectangle} \index{trapeze} \index{point milieu}
\begin{eqnarray}
\mbox{rectangle gauche} & = & h \sum_{j=0}^{n-1} f(a+jh) \label{eq:rectangle_gauche}\\
\mbox{rectangle droit} & = & h \sum_{j=1}^{n} f(a+jh) \label{eq:rectangle_droit}\\
\mbox{point milieu} & = & h \sum_{j=0}^{n-1} f(a+jh+\frac{h}{2}) 
\label{eq:point_milieu}\\
\mbox{ trapezes } & = & 
h \left(\frac{f(a)+f(b)}{2}+\sum_{j=1}^{n-1} f(a+jh) \right) 
\label{eq:trapezes}
\end{eqnarray}
où $h=(b-a)/n$ est le pas de la subdivision, $n$ le nombre de
subdivisions.\\
\giacinputbigmath{f(x):=ln(1+x^2); a:=0; b:=1.0; n:=100.0; h:=(b-a)/n; I:=int(f(x),x,a,b)}\\
\giacinputbigmath{R:=h*sum(f(a+j*h),j,0,n-1); h*sum(f(a+j*h),j,1,n); R-I;}\\
\giacinputbigmath{M:=h*sum(f(a+h/2+j*h),j,0,n-1); M-I;}\\
\giacinputbigmath{T:=h*(f(a)/2+f(b)/2+sum(f(a+j*h),j,1,n-1)); T-I;}\\

On observe sur l'exemple que le point milieu et les trap\`ezes donnent
une bien meilleure pr\'ecision que les rectangles. Plus g\'en\'eralement,
la pr\'ecision de l'approximation n'est pas la même selon le choix
de m\'ethode.
Ainsi pour les rectangles à gauche (le r\'esultat est le même
à droite), si $f$ est continument d\'erivable, de d\'eriv\'ee major\'ee
par une constante $M_1$ sur $[a,b]$, en faisant un
d\'eveloppement de Taylor de $f$ en $\alpha$, on obtient
\[ |\int_{\alpha}^{\beta} f(t) dt - \int_{\alpha}^{\beta} f(\alpha) dt |
= | \int_{\alpha}^{\beta} f'(\theta_t)(t-\alpha) dt |
\leq M_1 \int_{\alpha}^{\beta} (t-\alpha) dt = M_1\frac{(\beta-\alpha)^2}{2}
\]
Ainsi dans l'exemple, on a $M_1=3$, l'erreur est donc major\'ee par $0.015$
sur une subdivision, donc par $0.15$ sur les 10 subdivisions.

Pour le point milieu, on fait le d\'eveloppement en $(\alpha+\beta)/2$ à l'ordre
2, en supposant que $f$ est deux fois continument d\'erivable~:
\begin{eqnarray*}
 |\int_{\alpha}^{\beta} f(t)  - \int_{\alpha}^{\beta} f(\frac{\alpha+\beta}{2})  |
&= &| \int_{\alpha}^{\beta} f'(\frac{\alpha+\beta}{2})(t-\frac{\alpha+\beta}{2}) dt
\\
& &
+  \int_{\alpha}^{\beta} \frac{f'{'}(\theta_t)}{2}(t-\frac{\alpha+\beta}{2})^2 |
\\
&\leq & \frac{M_2}{2} 2 \int_{\frac{\alpha+\beta}{2}}^{\beta}
(t-\frac{\alpha+\beta}{2})^2 dt  \\
& \leq & M_2\frac{(\beta-\alpha)^3}{24}
\end{eqnarray*}
Dans l'exemple, on a $M_2=6$, donc l'erreur sur une subdivision est
major\'ee par $0.25e-3$, donc sur 10 subdivisions par $0.25e-2=0.0025$.

Pour les trap\`ezes, la fonction $g$ dont le graphe est le segment reliant
$[\alpha,f(\alpha)]$ à $[\beta,f(\beta)]$ est $f(\alpha)+(t-\alpha)/(\beta-\alpha)f(\beta)$,
c'est en fait un polynome de Lagrange, si $f$ est deux fois continument
d\'erivable, on peut donc majorer la diff\'erence
entre $f$ et $g$ en utilisant (\ref{eq:lagrange}), on int\`egre la valeur
absolue ce qui donne
\[ |\int_{\alpha}^{\beta} f(t) dt - \int_{\alpha}^{\beta} g(t) dt |
\leq \int_{\alpha}^{\beta} |\frac{f'{'}(\xi_x)}{2} (x-\alpha)(x-\beta)|
\leq M_2 \frac{(\beta-\alpha)^3}{12} \]
où $M_2$ est un majorant de $|f'{'}|$ sur $[a,b]$.

Lorsqu'on calcule l'int\'egrale sur $[a,b]$ par une de ces m\'ethodes,
on fait la somme sur $n=(b-a)/h$ subdivisions de longueur 
$\beta-\alpha=h$, on obtient
donc une majoration de l'erreur commise sur l'int\'egrale~:
\begin{itemize}
\item pour les rectangles à droite ou gauche $nM_1h^2/2=M_1 h (b-a)/2$
\item pour le point milieu $M_2 h^2 (b-a)/24$
\item pour les trap\`ezes $M_2h^2 (b-a)/12$.
\end{itemize}
Lorsque $h$ tend vers 0, l'erreur tend vers 0, mais pas à la même vitesse,
plus rapidement pour les trap\`ezes et le point milieu
que pour les rectangles. Plus on
approche pr\'ecis\'ement la fonction sur une subdivision, plus la
puissance de $h$ va être grande, plus la convergence sera rapide
lorsque $h$ sera petit, avec toutefois une contrainte fix\'ee par la
valeur de $M_k$, borne sur la d\'eriv\'ee $k$-i\`eme de $f$ (plus
$k$ est grand, plus $M_k$ est grand en g\'en\'eral). Nous allons voir dans la suite
comment se comporte cette puissance de $h$ en fonction de la facon
dont on approche $f$.

\subsection{Ordre d'une m\'ethode} \index{ordre}
On appelle m\'ethode d'int\'egration l'\'ecriture d'une approximation
de l'int\'egrale sur une subdivision sous la forme
\[ \int_{\alpha}^{\beta} f(t) dt \approx I(f)=\sum_{j=1}^k w_j f(x_j) \]
où les $x_j$ sont dans l'intervalle $[\alpha,\beta]$, par exemple \'equir\'epartis
sur $[\alpha,\beta]$. On utilise aussi la d\'efinition~:
\[ \int_{\alpha}^{\beta} f(t) dt \approx I(f)=
(\beta-\alpha)\sum_{j=1}^k \tilde{w}_j f(x_j) \]
On prend toujours $\sum_j w_j=\beta-\alpha$ (ou $\sum_j \tilde{w}_j=1$) pour
que la m\'ethode donne le r\'esultat exact si la fonction est constante.

On dit qu'une m\'ethode d'int\'egration est d'ordre $n$ si il y a \'egalit\'e
ci-dessus pour tous les polynômes de degr\'e inf\'erieur ou \'egal à $n$
et non \'egalit\'e pour un polyn\^ome de degr\'e $n+1$.
Par exemple, les rectangles à droite et gauche sont d'ordre 0, 
le point milieu et les trap\`ezes sont d'ordre 1. Plus
g\'en\'eralement, si on approche $f$ par son polyn\^ome
d'interpolation de Lagrange en $n+1$ points (donc par un polyn\^ome
de degr\'e inf\'erieur ou \'egal \`a $n$), on obtient une m\'ethode
d'int\'egration d'ordre au moins $n$.

Si une m\'ethode est d'ordre $n$ avec des $w_j\geq 0$ et 
si $f$ est $n+1$ fois continument d\'erivable,
alors sur une subdivision, on a~:
\begin{equation} \label{eq:majoration_err}
|\int_{\alpha}^{\beta} f-I(f)| \leq M_{n+1} \frac{(\beta-\alpha)^{n+2}}{(n+1)!}
(\frac{1}{n+2}+1)
\end{equation}

En effet, on fait le d\'eveloppement de Taylor de $f$ par exemple
en $\alpha$ à l'ordre $n$
\begin{eqnarray*}
 f(t)&=&T_{n}(f)+\frac{(t-\alpha)^{n+1}}{(n+1)!} f^{[n+1]}(\theta_t),\\
 T_{n}(f)&=&f(\alpha)+(t-\alpha)f'(\alpha)+...+ 
\frac{(t-\alpha)^{n}}{n!} f^{[n]}(\alpha)
\end{eqnarray*}
Donc 
\[ |\int_{\alpha}^{\beta} f- \int_{\alpha}^{\beta} T_{n}(f)|
\leq \int_{\alpha}^{\beta} \frac{(t-\alpha)^{n+1}}{(n+1)!} |f^{[n+1]}(\theta_t)| 
\leq \left[ M_{n+1} \frac{(t-\alpha)^{n+2}}{(n+2)!} \right]_\alpha^\beta
\]
De plus, 
\begin{eqnarray*}
 |I(f) -I(T_n(f))| =|I\left( f^{[n+1]}(\theta_t)
  \frac{(t-\alpha)^{n+1}}{(n+1)!} \right)|
& \leq &  \sum_{j=1}^k |w_j| M_{n+1} \frac{(x_j-\alpha)^{n+1}}{(n+1)!} 
\\
& \leq & \sum_{j=1}^k |w_j| M_{n+1} \frac{(\beta-\alpha)^{n+1}}{(n+1)!}
\end{eqnarray*}
Donc comme la m\'ethode est exacte pour $T_n(f)$, on en d\'eduit que
\begin{eqnarray*}
|\int_{\alpha}^{\beta} f-I(f)|
&= &|\int_{\alpha}^{\beta} f-\int_{\alpha}^{\beta} T_n(f)+I(T_n(f))- I(f)| \\
&\leq& |\int_{\alpha}^{\beta} f-\int_{\alpha}^{\beta} T_n(f)|+|I(T_n(f))- I(f)|\\
&\leq & M_{n+1}  \frac{(\beta-\alpha)^{n+2}}{(n+2)!} +  
\sum_{j=1}^k |w_j| M_{n+1} \frac{(\beta-\alpha)^{n+1}}{(n+1)!} 
\end{eqnarray*}
Si les $w_j\geq 0$, alors $\sum_{j=1}^k |w_j|=\sum_{j=1}^k w_j=\beta-\alpha$
et on obtient finalement (\ref{eq:majoration_err})

On remarque qu'on peut am\'eliorer la valeur de la constante 
en faisant tous les d\'eveloppement de Taylor
en $(\alpha+\beta)/2$ au lieu de $\alpha$, 
Apr\`es sommation sur les $n$ subdivisions, on obtient que~:
\begin{theorem}
Pour une m\'ethode d'ordre $n$ à coefficients positifs et une fonction $f$
$n+1$ fois continument d\'erivable~
\[|\int_{a}^{b} f-I(f)| \leq M_{n+1} \frac{h^{n+1}}{2^{n+1}(n+1)!}  (b-a) 
(\frac{1}{(n+2)}+1)\]
\end{theorem}

On observe que cette majoration a la bonne puissance de $h$ sur
les exemples d\'eja trait\'es, mais pas forc\'ement le meilleur coefficient
possible, parce que nous avons trait\'e le cas g\'en\'eral d'une
m\'ethode d'ordre $n$, et utilis\'e une majoration pas toujours
optimale du reste. Pour obtenir la meilleure valeur possible de la
constante, il faut exprimer le reste de la formule de Taylor sous
forme int\'egrale et utiliser la forme pr\'ecise de la m\'ethode~:
$$ f(t)=T_n(f)(t)+\int_\alpha^t \frac{(t-x)^n}{n!} f^{[n+1]}(x) \
dx $$
donc
$$ \int_{\alpha}^{\beta} f- \int_{\alpha}^{\beta} T_{n}(f)
= \int_{\alpha}^{\beta} \int_\alpha^t\frac{(t-x)^{n}}{n!} 
f^{[n+1]}(x) \ dx \ dt
= \int_{\alpha}^{\beta} \int_\alpha^\beta \frac{(t-x)_+^{n}}{n!} 
f^{[n+1]}(x) \ dx \ dt
$$
o\`u $(t-x)_+=$max$(0,t-x)$. En intervertissant les deux int\'egrales
(Fubini), on obtient~:
\begin{eqnarray*} \int_{\alpha}^{\beta} f- \int_{\alpha}^{\beta} T_{n}(f)
&=& \int_{\alpha}^{\beta} \int_\alpha^\beta \frac{(t-x)_+^{n}}{n!} 
\ dt f^{[n+1]}(x) \ dx \\
&=& \int_{\alpha}^{\beta} \int_x^\beta \frac{(t-x)_+^{n}}{n!} \ dt 
f^{[n+1]}(x) \ dx\\
&=& \int_{\alpha}^{\beta} \frac{(\beta-x)^{n+1}}{(n+1)!} f^{[n+1]}(x) \ dx
\end{eqnarray*}
D'autre part~:
\begin{eqnarray*} I(f)-I(T_n(f)) &=&
I\left( \int_\alpha^\beta \frac{(x-t)_+^{n}}{n!}  f^{[n+1]}(t) \ dt 
  \right) \\
& = &  \sum_{j=1}^k w_j 
\int_\alpha^\beta \frac{(x_j-t)_+^{n}}{n!} f^{[n+1]}(t) \ dt 
\end{eqnarray*}
Donc~:
$$ \int_{\alpha}^{\beta} f-I(f)
= \int_{\alpha}^{\beta} 
( \frac{(\beta-x)^{n+1}}{(n+1)!} -  \sum_{j=1}^k w_j \frac{(x_j-x)_+^{n}}{n!})
f^{[n+1]}(x) \ dx
$$
On appelle noyau de P\'eano\index{P\'eano, noyau de} l'expression
$$ N(x)=\frac{(\beta-x)^{n+1}}{(n+1)!} -  \sum_{j=1}^k w_j
\frac{(x_j-x)_+^{n}}{n!}$$
On a alors~:
$$ |\int_{\alpha}^{\beta} f-I(f)|
\leq \int_{\alpha}^{\beta} |N(x)| |f^{[n+1]}(x)| \ dx
\leq M_{n+1} \int_{\alpha}^{\beta} |N(x)| \ dx$$

\subsection{Simpson} \index{Simpson}
Il s'agit de la m\'ethode obtenue en approchant la fonction
sur la subdivision $[\alpha,\beta]$ par son polynome de Lagrange
aux points $\alpha,(\alpha+\beta)/2,\beta$. On calcule l'int\'egrale
par exemple avec un logiciel de calcul formel, avec Xcas~:
\begin{center}
\giacinputbigmath{factor(int(lagrange([a,(a+b)/2,b],[fa,fm,fb]),x=a..b))}
\end{center}
qui donne la formule sur une subdivision
\[ I(f) = \frac{h}{6} (f(\alpha)+4f(\frac{\alpha+\beta}{2}) + f(\beta)) \]
et sur $[a,b]$~:
\begin{equation} \label{eq:simpson}
I(f) = \frac{h}{6} \left( f(a)+f(b)+ 4 \sum_{j=0}^{n-1} f(a+jh+\frac{h}{2})
+ 2  \sum_{j=1}^{n-1} f(a+jh) \right)
\end{equation}
\giacinputbigmath{f(x):=ln(1+x^2); a:=0; b:=1.0; n:=100.0; h:=(b-a)/n; int(f(x),x,a,b)}\\
\giacinputbigmath{h/6*(f(a)+f(b)+4*sum(f(a+j*h+h/2),j,0,n-1)+2*sum(f(a+j*h),j,1,n-1))}\\
Si on int\`egre $t^3$ sur $[0,1]$ en 1 subdivision par cette m\'ethode,
on obtient
\[ \frac{1}{6} (0+ 4 \frac{1}{2^3} + 1)=\frac{1}{4} \]
c'est-à-dire le r\'esultat exact, ceci est aussi v\'erifi\'e pour $f$ polynome
de degr\'e inf\'erieur ou \'egal à 2 puisque l'approximation de Lagrange
de $f$ est alors \'egale à $f$. On en d\'eduit que la m\'ethode de Simpson
est d'ordre 3 (pas plus car la m\'ethode
de Simpson appliqu\'ee à l'int\'egrale de
$t^4$ sur $[0,1]$ n'est pas exacte). On peut am\'eliorer
la constante g\'en\'erale de la section pr\'ec\'edente pour la majoration
de l'erreur en~:
\[ |\int_a^b f - I(f)| \leq \frac{h^4}{2880} (b-a) M_4 \]
En effet sur une subdivision \'el\'ementaire $[\alpha,\beta]$, 
le noyau de P\'eano vaut~:
\begin{eqnarray*}
 N(x) &=&
\frac{(\beta-x)^4}{4!} - \frac16 \frac{(\beta-x)_+^{3}}{3!}
-\frac23 \frac{(\frac{\alpha+\beta}2-x)_+^{3}}{3!} - 
\frac16 \frac{(\alpha-x)_+^{3}}{3!} \\
& =&
\frac{(\beta-x)^4}{4!} - \frac16 \frac{(\beta-x)^{3}}{3!}
-\frac23 \frac{(\frac{\alpha+\beta}2-x)_+^{3}}{3!} 
\end{eqnarray*}
on observe que $N(x)\leq 0$ sur $[\alpha,\beta]$ \\
\giacinputbigmath{N(x):=(1-x)^4/4!-1/6*(1-x)^3/3!-2/3/3!*max(0,1/2-x)^3}\\
\giacinput{plot(1000*N(x),x=0..1)}
et son int\'egrale vaut $-1/2880(\beta-\alpha)^4$~:\\
\giacinputbigmath{int(N(x),x=0..1/2)+int(N(x),x=1/2..1)}

La m\'ethode de Simpson n\'ecessite $2n+1$ \'evaluations de $f$ (le calcul
de $f$ est un point \'etant presque toujours 
l'op\'eration la plus couteuse en temps d'une
m\'ethode de quadrature), au lieu de $n$ pour les rectangles
et le point milieu et $n+1$ pour les trap\`ezes. Mais on a une majoration
en $h^4$ au lieu de $h^2$ donc le ``rapport qualit\'e-prix'' de la m\'ethode
de Simpson est meilleur, on l'utilise donc plutot que les
m\'ethodes pr\'ec\'edentes sauf si $f$ n'a pas la r\'egularit\'e
suffisante (ou si $M_4$ est trop grand).

 \subsection{Newton-Cotes} \index{Newton-Cotes}
On peut g\'en\'eraliser l'id\'ee pr\'ec\'edente, d\'ecouper la subdivision 
$[\alpha,\beta]$ en $n$ parts \'egales et utiliser le polynôme d'interpolation
en ces $n+1$ points $x_0=\alpha, x_1, ..., x_n=\beta$. 
Ce sont les m\'ethodes de Newton-Cotes,
qui sont d'ordre $n$ au moins. Comme le polyn\^ome d'interpolation
d\'epend lin\'eairement des ordonn\'ees, cette m\'ethode est bien
de la forme~:
\[ I(f)=(\beta-\alpha)\sum_{j=0}^n \tilde{w}_j f(x_j)\]
De plus les $\tilde{w}_j$ sont universels (ils ne d\'ependent pas de 
la subdivision), parce qu'on peut faire 
le changement de variables $x=\alpha+t(\beta-\alpha)$ dans l'int\'egrale
et le polyn\^ome d'interpolation et donc se ramener \`a $[0,1]$.

Exemple~: on prend le polyn\^ome d'interpolation en 5 points 
\'equidistribu\'es sur une subdivision $[a,b]$ (m\'ethode de Boole). 
Pour calculer les
$\tilde{w}_j$, on se ram\`ene \`a $[0,1]$, puis on tape
\begin{center}
\giacinputbigmath{int(lagrange(seq(j/4,j,0,4),[f0,f1,f2,f3,f4]),x=0..1)}
\end{center}
et on lit les coefficients de \verb|f0| \`a \verb|f4|
qui sont les $\tilde{w}_0$ \`a  $\tilde{w}_4$: 7/90, 32/90, 12/90,
32/90, 7/90. Voir aussi la section \ref{sec:poids}
La m\'ethode est d'ordre au moins 4 par construction, mais on v\'erifie
qu'elle est en fait d'ordre 5 (exercice), la majoration de l'erreur
d'une m\'ethode d'ordre 5 est 
\[ |\int_a^b f -I(f)| \leq \frac{M_6}{2^6 6!}(1+\frac{1}{7}) h^6 (b-a) \]
elle peut \^etre am\'elior\'ee pour cette m\'ethode pr\'ecise en
\[ |\int_a^b f -I(f)| \leq \frac{M_6}{1935360} h^6 (b-a) \]

En pratique, on ne les utilise pas tr\`es souvent, car d'une part
pour $n\geq 8$, les $w_j$ ne sont pas tous positifs, et
d'autre part, parce que la constante $M_n$ devient trop
grande. On pr\'ef\`ere utiliser la m\'ethode de Simpson en utilisant
un pas plus petit.

Il existe aussi d'autres m\'ethodes, par exemple les quadratures de Gauss
(on choisit d'interpoler en utilisant des points non \'equir\'epartis 
tels que l'ordre de la m\'ethode soit le plus grand possible, cf. infra)
ou la m\'ethode de Romberg qui est une m\'ethode d'acc\'el\'eration
de convergence bas\'ee sur la m\'ethode des trap\`ezes (on prend
la m\'ethode des trap\`ezes en 1 subdivision de $[a,b]$, puis
2, puis $2^2$, ..., et on \'elimine les puissances de $h$
du reste $\int f-I(f)$ en utilisant un th\'eor\`eme d'Euler-Mac Laurin
qui montre que le d\'eveloppement asymptotique de
l'erreur en fonction de $h$ ne contient que des puissances paires
de $h$). De plus, on peut être amen\'e à faire varier le pas $h$
en fonction de la plus ou moins grande r\'egularit\'e de la fonction.

\subsection{Calcul des poids $w_i$} \label{sec:poids}
Si la m\'ethode d'int\'egration consiste \`a interpoler 
$f$ en $n$ points $x_0,...,x_n$, alors la m\'ethode est exacte pour
tout polyn\^ome de degr\'e $n$. Si on prend 
$P_j(x)=\prod_{k \neq j}(x-x_k)$, on en d\'eduit~:
$$ \int_\alpha^\beta P_j(x) \ dx = w_j P_j(x_j) $$ 
Par exemple en interpolant en $0,1/2,1$ sur $[0,1]$, on obtient
$$w_0 P_0(0)=\int_0^1 P_0(x) \ dx, \quad P_0(x)=(x-\frac12)(x-1)$$
\giacinputbigmath{purge(x);P0:=(x-1)*(x-1/2); int(P0,x,0,1)/P0(x=0);}\\
On peut aussi r\'esoudre un syst\`eme lin\'eaire en prenant pour $f$
les polyn\^omes de la base canonique, la matrice du syst\`eme est
la transpos\'ee de la matrice de Vandermonde en les $x_j$ et le second
membre a pour $j$-i\`eme composante $\int_\alpha^\beta x^j \ dx$.
\giacinputbigmath{inv(tran(vandermonde(0,1/2,1)))*[1,1/2,1/3]}

\subsection{En r\'esum\'e}
Int\'egration sur $[a,b]$, $h$ pas d'une subdivision, $M_k$ majorant
de la d\'eriv\'ee $k$-i\`eme de la fonction sur $[a,b]$\\
\begin{tabular}{|c|c|c|c|c|} \hline 
 & formule & Lagrange degr\'e & ordre & erreur \\ \hline
rectangles & (\ref{eq:rectangle_gauche}), (\ref{eq:rectangle_droit}) & 0 & 0 & $M_1 h (b-a)/2$ \\
point milieu & (\ref{eq:point_milieu}) & 0 & 1 & $M_2 h^2 (b-a)/24$ \\
trap\`ezes & (\ref{eq:trapezes}) & 1 & 1 & $M_2 h^2 (b-a)/12$ \\
Simpson & (\ref{eq:simpson})& 2 & 3 & $M_4 h^4 (b-a)/2880$  \\ \hline
\end{tabular}
% Romberg, Gauss. 
%Comparaison s\'erie/int\'egrale.
%S\'eries enti\`eres.
%Point milieu, RK.
%S\'eries enti\`eres. 

\subsection{Accélération de Richardson-Romberg}
\index{Romberg}\index{Richardson-Romberg}
\begin{prop}
Soit $g$ une fonction de classe $C^{2k}$ sur $[a,b]$, 
$T_h(g)$ la valeur de la méthode des trapèzes sur $[a,b]$ de pas 
$h=(b-a)/N$ ($N$ entier).
Alors $T_h(g)$ admet un développement en puissances paires de $h$
à l'ordre $2k$.
\end{prop}

Pour montrer ce résultat, il faut établir la formule d'Euler-Mac
Laurin. On commence par se placer sur une subdivision de l'intervalle
$[0,1]$, on intègre par parties $\int_0^1 f(t)\ dt$ en faisant apparaitre
la formule des trapèzes, on intègre donc 1 en $t-\frac12$
$$ \int_0^1 f(t) \ dt = 
[(t-\frac12)f(t)]_0^1 - \int_0^1 (t-\frac12)f'(t) \ dt =
\frac{f(0)+f(1)}{2} - \int_0^1 (t-\frac12)f'(t) \ dt
$$
où encore
$$ T_1(f)=\int_0^1 f(t) \ dt 
+  \int_0^1 (t-\frac12)f'(t) \ dt $$
Pour poursuivre, on pose $B_1(t)=t-\frac12$, qu'on va intégrer
en $\frac12((t-\frac12)^2+c)$, où on choisit $c$ pour que l'intégrale
soit nulle, donc $c=-1/6$. On pose $B_2=(t-\frac12)^2-1/6$, on a~:
$$  T_1(f)=\int_0^1 f(t) \ dt 
+ [\frac{B_2}{2} f']_0^1 - \int_0^1 \frac{B_2}{2}f'{'}(t) \ dt 
$$
Plus
généralement, on pose
$$ B_{p+1}'=pB_p, \quad \int_0^1 B_{p+1}(t) \ dt=0 $$
ce qui définit de manière unique les $B_p$. La nullité de l'intégrale
montre que $B_{p+1}(1)=B_{p+1}(0)$ ce qui simplifiera l'expression des
termes tout intégrés. De plus, on montre par récurrence
que les $B_p$ ont une symétrie paire
ou impaire selon la parité de $p$ par rapport à $t=1/2$.
Après $p$ intégrations par parties, on obtient~:
\begin{eqnarray*}
  T_1(f)&=&\int_0^1 f(t) \ dt 
+ \frac{B_2(0)}{2} (f'(1)-f'(0)) 
+ ... \\
& &+ \frac{B_{2k}(0)}{(2k)!} (f^{[2k-1]}(1)-f^{[2k-1]}(0)) 
- \int_0^1 \frac{B_{2k}}{(2k)!} f^{[2k]}(t) \ dt 
\end{eqnarray*}
En faisant le même raisonnement sur $[k,k+1]$ pour $k=1,...,N-1$
et en sommant, on obtient la formule 
d'{\bf Euler-Mac Laurin}\index{Euler, Mac Laurin}\index{Mac Laurin, Euler}~:
\begin{eqnarray*}
  T_1^{[0,N]}(f)&=&\int_0^N f(t) \ dt 
+ \frac{B_2(0)}{2} (f'(N)-f'(0)) 
+ ... \\
& & + \frac{B_{2k}(0)}{(2k)!} (f^{[2k-1]}(N)-f^{[2k-1]}(0)) 
- \int_0^N \frac{B_{2k}}{(2k)!} f^{[2k]}(t) \ dt 
\end{eqnarray*}
On pose alors $x=a+ht$ (donc $dt=dx/h$) et $f(t)=g(x)$
(donc $f'(t)=df/dt=h dg/dx$), on obtient 
\begin{eqnarray*}
 \frac1h T_h^{[a,b]}(g)&=& \frac1h \int_0^N g(x) \ dx 
+ \frac{B_2(0)}{2} h(g'(b)-g'(a)) 
+ ... \\
& &+ \frac{B_{2k}(0)}{(2k)!} h^{2k-1} (g^{[2k-1]}(N)-g^{[2k-1]}(0)) 
- \int_0^N \frac{B_{2k}}{(2k)!} h^{2k} g^{[2k]}(x) \ \frac1h dx 
\end{eqnarray*}
donc
\begin{eqnarray*}
 T_h^{[a,b]}(g) &=&  \int_0^N g(x) \ dx 
+ h^2 \frac{B_2(0)}{2} (g'(b)-g'(a)) 
+ ... \\
& & + h^{2k} \frac{B_{2k}(0)}{(2k)!}  (g^{[2k-1]}(N)-g^{[2k-1]}(0)) 
- h^{2k} \int_0^N \frac{B_{2k}}{(2k)!}  g^{[2k]}(x) \  dx 
\end{eqnarray*}

L'accélération consiste à éliminer les puissances de $h^2$ en
commençant par $h^2$ avec des subdivisions deux fois plus fines
à chaque itération.
Ainsi $T_h^1(f) = (4T_{h/2}(f)-T_h(f))/(4-1)$ n'a plus de termes en $h^2$
et tend vers l'intégrale à approcher lorsque $h$ tend vers 0. 
On peut d'ailleurs vérifier qu'il s'agit de la méthode de Simpson.
On élimine ensuite le terme en $h^4$ en posant
$T_h^2(f)=(4^2 T_{h/2}^1(f)-T_h^1(f))/(4^2-1)$ et ainsi
de suite. On construit un tableau triangulaire \verb|T|
dont chaque
ligne $l$ contient $T_{h/2^l}(f), T_{h/2^l}^1(f), ...$ 
(avec des indices qui commencent à 0). Pour
calculer le terme d'indice 0 de la ligne courante
on fait une méthode des trapèzes sur 2 fois plus
de subdivisions que la précédente, puis pour le $j$-ième terme
\verb|T[l,j]|
on effectue \verb|(4^j*T[l-1,j-1]-T[l,j-1])/(4^j-1)|
(on n'a donc besoin que de la ligne précédente pour calculer
la ligne courante).
On s'arrête par exemple lorsque la valeur absolue de la différence
entre les derniers termes de deux lignes consécutives est inférieur
à la précision souhaitée (erreur empirique).

\subsection{Cas des fonctions p\'eriodiques.}
Si $f$ est une fonction p\'eriodique r\'eguli\`ere ($C^\infty$),
alors la m\'ethode des trap\`ezes sur une p\'eriode est d'ordre 
arbitrairement grand. En effet, pour une s\'erie de Fourier tronqu\'ee
\`a l'ordre $m$, la formule des trap\`ezes avec $N$ subdivisions donne
le r\'esultat exact de $\int_0^T f(t) dt$ d\`es que $N>m$. Il suffit
ensuite d'utiliser que le reste de
la s\'erie de Fourier ($m>N$) 
a des coefficients \`a d\'ecroissance rapide.

La m\'ethode des trap\`ezes donne donc de bons r\'esultats pour une 
fonction p\'eriodique, on peut d'ailleurs aussi 
l'appliquer pour calculer une valeur
approch\'ee des coefficients de Fourier de la fonction. La liste des valeurs
approch\'ees obtenue est alors la transform\'ee de Fourier discr\`ete
des valeurs de la fonction $f$ aux $N$ points de la subdivision, elle
se calcule donc rapidement avec la transform\'ee de Fourier rapide.
Par exemple, pour approcher $f(x)=e^{\sin(x)}$, on peut utiliser les
commandes suivantes en Xcas~:
\begin{giacprog}
f(x):=exp(sin(x));
N:=16; F:=seq(f(k/N*2.*pi),k,0,N-1); G:=fft(F);
k:=4;
g:=G[0]+sum(G[j]*exp(i*j*x),j,1,k)+sum(G[N-j]*exp(-i*j*x),j,1,k);
h:=normal(re(exp2trig(g)/N));
\end{giacprog}
\giacinputbig{plot(h,x=-pi..pi,color=red); //plot(f(x),x=-pi..pi)}

Ou directement \verb|2*re(G[j]/N)| est une valeur approch\'ee du
$j$-i\`eme coefficient de Fourier $a_j$ de $f$, et \verb|-2*im(G[j]/N)|
de $b_j$, par exemple~:\\
\giacinputbig{1/pi*int(f(x)*cos(4x),x,0,2.*pi); 2*re(G[4]/N);}
\giacinputbig{1/pi*int(f(x)*sin(5x),x,0,2.*pi); -2*im(G[5]/N);}
On observe en effet une tr\`es bonne concordance (11 d\'ecimales).

Bien entendu, cela n'est pas tr\`es utile pour approcher $e^{\sin(x)}$
(il vaut mieux composer exponentielle et sinus), 
mais cela pourrait le devenir pour une
fonction p\'eriodique plus compliqu\'ee ou pour une fonction
p\'eriodique dont on ne connait qu'un \'echantillonage r\'egulier
(par exemple un fichier num\'erique audio).

\subsection{Quadratures gaussiennes.}
\index{gaussienne, quadrature}\index{quadrature gaussienne}
\subsubsection{Description}
On a vu que l'interpolation polynomiale \'etait de meilleure
qualit\'e en prenant les points de Tchebyshev plutot que
des points \'equidistants, il est donc naturel de calculer
des approximations d'int\'egrale de cette mani\`ere
ou encore d'optimiser le choix des abscisses pour avoir
une m\'ethode d'int\'egration d'ordre maximal.

Si on se fixe $n$ abscisses $x_1$ \`a $x_n$, on peut obtenir l'ordre
$2n-1$. En effet, consid\'erons le polyn\^ome $P_n=\prod_{i=1}^n (x-x_i)$,
qui est de degr\'e $n$, si la m\'ethode est d'ordre $2n-1$ alors
il sera orthogonal \`a tous les polyn\^omes de degr\'e inf\'erieur
strict \`a $n$ pour le produit scalaire 
$$<f|g>=\int_a^b f(x) g(x) \ dx$$
puisque $<P_n|x^j>=\int_a^b P_n x^j $ sera combinaison lin\'eaire des
$P_n x^j$ en $x_k, k=1..n$ (car la formule d'int\'egration est exacte puisque le degr\'e
du polyn\^ome $P_nx^j$ est au plus $2n-1$). Donc $P_n$ est \`a une constante
multiplicative pr\`es le $n$-i\`eme polyn\^ome orthogonal pour
l'integrale sur $[a,b]$, si $[a,b]=[-1,1]$ c'est \verb|legendre(n)|.
R\'eciproquement, si les $x_k$ sont les racines de ce polyn\^ome,
alors la formule d'int\'egration est exacte, on effectue la division
euclidienne du polyn\^ome $P$ de degr\'e au plus $2n-1$ \`a
int\'egrer par $P_n$
$$ P= P_n Q + R , \quad \mbox{deg}(Q) \leq n-1 $$
On a $\int_a^b P_n Q=0$ par orthogonalit\'e et la combinaison
lin\'eaire correspondante en les $x_k$ est nulle, et on a exactiture
pour $R$, car de degr\'e au plus $n-1$.

Exemple~:
\giacinputbigmath{l:=proot(legendre(10));}\\
\giacinputbigmath{f(x):=ln(1+x^2); int(f(x),x,-1.0,1.0);}\\
\giacinputbigmath{p:=interp(l,f); int(p,x,-1.0,1.0)}

\subsubsection{Calcul des poids}
On peut calculer les poids en appliquant
la section \ref{sec:poids}. On peut ainsi montrer
que les poids sont positifs en appliquant la formule
d'int\'egration au polyn\^ome
$\prod_{j\neq k}(x-x_j)$
(la formule est exacte \`a cause du degr\'e du polynome).
On peut d'ailleurs montrer que le poids $w_i$ 
en une racine du polyn\^ome de Legendre
sur $[-1,1]$ est donn\'e par~:
$$ w_i=\frac{2}{(1-x_i^2)P'_n(x_i)^2} = \frac{2(1-x_i^2)}{n^2P_{n-1}(x_i)^2}=\frac{2}{nP_{n-1}(x_i)P_n'(x_i)}$$
\giacinputbigmath{n:=10; P:=legendre(n); Q:=legendre(n-1); l:=proot(P);}\\
\giacinputbigmath{a:=inv(trn(vandermonde(l))):; a*seq((1+(-1)^j)/(j+1),j,0,n-1);}\\
\giacinputbigmath{seq(2/(1-l[j]^2)/P'(x=l[j])^2,j,0,n-1)}\\
\giacinputbigmath{seq(2*(1-l[j]^2)/n^2/Q(x=l[j])^2,j,0,n-1)}\\
\giacinputbigmath{seq(2/n/Q(x=l[j])/P'(x=l[j]),j,0,n-1)}\\
Preuve de la derni\`ere formule~:\\
On a $I(P_n/(x-x_i))=w_i P'_n(x_i)$ la valeur de $(P_n/(x-x_i))$
en $x_i$ est par d\'efinition de $P'_n(x_i)$ la limite $(P_n(x)-P_n(x_i))/(x-x_i)$
lorsque $x$ tend vers $x_i$ (rappelons que $P_n(x_i)=0$).
Par exactitude de la formule d'int\'egration
$$w_i P'_n(x_i)=\int_{-1}^1 \frac{P_n}{x-x_i} =
\frac1{P_{n-1}(x_i)}\int_{-1}^1 P_n \frac{P_{n-1}(x_i)}{x-x_i} 
= \frac1{P_{n-1}(x_i)}\int_{-1}^1 P_n \frac{P_{n-1}(x)}{x-x_i} $$
la derni\`ere \'egalit\'e r\'esulte du fait que
$(P_{n-1}(x)-P_{n-1}(x_i))/(x-x_i)$
est un polyn\^ome de degr\'e au plus $n-2$ donc orthogonal \`a $P_n$.
Donc
$$w_i P'_n(x_i)=
= \frac1{P_{n-1}(x_i)}\int_{-1}^1 P_{n-1} \frac{P_n(x)}{x-x_i} $$
Or $P_n(x)/(x-x_i)$ est un polyn\^ome de degr\'e $n-1$, si on fait son
quotient par $P_{n-1}$ on obtient une constante qui vaut $a_{n-1}$ en
utilisant la relation de r\'ecurrence \`a 2 crans
$P_n=(a_{n-1}x-b_{n-1})P_{n-1}-c_{n-1}P_{n-2}$. Le reste est de
degr\'e $n-2$ donc orthogonal \`a $P_{n-1}$, d'o\`u
$$w_i P'_n(x_i)=
= \frac1{P_{n-1}(x_i)}\int_{-1}^1 P_{n-1}^2 a_{n-1} $$
On conclut en utilisant la valeur de $a_{n-1}=(2n-1)/n$ et de
$\| P_{n-1}\|^2=2/(2(n-1)+1)$.

\subsubsection{Erreur d'une quadrature gaussienne}
On consid\`ere une quadrature gaussienne d'ordre $2n+1$ obtenue
par interpolation aux $n+1$ racines du $n+1$-i\`eme polynome de
Legendre sur $[-1,1]$.

Rappelons que le polyn\^ome d'interpolation de $f$ aux points
$x_0,x_1,...,x_n$ s'\'ecrit
$$ P_n(t)=f[x_0]+f[x_0,x_1](t-x_0)+...+f[x_0,...,x_n](t-x_0)...(t-x_{n-1})$$
Si on ajoute $x$ on obtient un polyn\^ome d'interpolation de degr\'e $n+1$
$$ P_{n+1}(t)=f[x_0]+f[x_0,x_1](t-x_0)+...+f[x_0,...,x_n,x](t-x_0)...(t-x_{n-1})(t-x_n)$$
qui coincide avec $f$ en $t=x$ donc
$$
f(x)=f[x_0]+f[x_0,x_1](x-x_0)+...+f[x_0,...,x_n,x](x-x_0)...(x-x_{n-1})(x-x_n)$$
Le m\^eme calcul fait avec un point $x_{n+1}$ en plus donne
$$
f(x)=f[x_0]+f[x_0,x_1](x-x_0)+...+f[x_0,...,x_n,x_{n+1}](x-x_0)...(x-x_{n-1})(x-x_n)
+ f[x_0,...,x_n,x_{n+1},x](x-x_0)...(x-x_{n-1})(x-x_n)(x-x_{n+1})$$
On a donc montr\'e la formule~:
\begin{equation} \label{eq:diffdivtranslate}
f[x_0,...,x_n,x]=f[x_0,...,x_n,x_{n+1}]+f[x_0,...,x_n,x_{n+1},x](x-x_{n+1})
\end{equation}
mais en fait on va ajouter plus qu'un point, on va en ajouter $n+1$
\begin{eqnarray*}
&&f(x)-(f[x_0]+f[x_0,x_1](x-x_0)+...+f[x_0,...,x_n](x-x_0)...(x-x_{n-1})
)\\
&=&f[x_0,...,x_n,x_{n+1}](x-x_0)...(x-x_{n-1})(x-x_n) +...+f[x_0,...,x_{2n+1}](x-x_0)...(x-x_{2n})
+ f[x_0,...,x_{2n+1},x](x-x_0)...(x-x_{2n+1})
\end{eqnarray*}
puis on int\`egre sur $[-1,1]$, on obtient \`a gauche l'erreur et \`a
droite, seul le dernier terme est non nul, car le polyn\^ome de Legendre
proportionnel \`a $(x-x_0)...(x-x_{n-1})(x-x_n) $, de degr\'e $n+1$,
est orthogonal \`a tous les polyn\^ome de degr\'e $\leq n$
$$ \int_{-1}^1 (f(x) -P_n(x)) \ dx = \int_{-1}^1
f[x_0,...,x_{2n+1},x](x-x_0)...(x-x_{2n+1}) \ dx $$
D'autre part, le r\'esultat sur l'erreur d'interpolation \ref{eq:lagrange} donne
$$ f[x_0,...,x_n,x]=\frac{f^{[n+1]}(\xi_x)}{(n+1)!}$$
en particulier $|f[x_0,...,x_n,x]| \leq M_{n+1}/(n+1)!$
D'o\`u la majoration
$$ |  \int_{-1}^1 (f(x) -P_n(x)) \ dx | \leq \frac{M_{2n+2}}{(2n+2)!}
\int_{-1}^1|(x-x_0)...(x-x_{2n+1})| \ dx $$
Il suffit ensuite de faire tendre les $x_{n+1},...,x_{2n+1}$ vers
$x_0,...,x_n$ pour enlever la valeur absolue et obtenir
$$ |  \int_{-1}^1 (f(x) -P_n(x)) \ dx | \leq \frac{M_{2n+2}}{(2n+2)!}
 \int_{-1}^1 L_{n+1}^2(x) \ dx $$ 
o\`u $L_{n+1}$ est proportionnel au $n+1$-i\`eme polyn\^ome de
Legendre de coefficient dominant 1.

Par exemple, pour $n=1$, on a 2 points d'interpolation en les racines
de $L_2=x^2-1/3$ et l'erreur d'interpolation
est major\'ee par $M_4/24\int_{-1}^1(x^2-1/3) \ dx=M_4/24 \times 8/45=M_4/135$.

\subsection{M\'ethode adaptative.}
On calcule une valeur approch\'ee de l'int\'egrale sur $[a,b]$ par
deux quadratures gaussiennes emboit\'ees, on estime l'erreur,
si elle est sup\'erieure \`a la tol\'erance on divise en 2. On
recommence en subdivisant en 2 l'intervalle o\`u l'erreur est
maximale. On s'arr\^ete lorsque l'erreur estim\'ee est inf\'erieure
\`a la tol\'erance.

L'estimation de l'erreur se fait par exemple avec deux quadratures
gaussiennes emboit\'ees (c'est-\`a-dire que les points d'interpolation
de la moins fine sont contenues dans les points d'interpolation de la
plus fine, pour \'eviter de devoir calculer la fonction en de nouveaux
points, on consid\'ere alors l'erreur sur la quadrature la moins fine
comme la valeur absolue de la diff\'erence des deux valeurs). Ou avec
trois quadratures emboit\'ees,
Hairer propose de prendre comme quadrature la plus fine en $h^{30}$
(15 points), interm\'ediaire en $h^{14}$ (avec les m\^emes points
sauf le point central), moins fine en $h^6$ (avec les points 1, 3, 5,
9, 11, 13), et d'estimer l'erreur par 
$$ \epsilon_1=| I_{30}-I_{14}|,  \epsilon_2=| I_{30}-I_{6}|; 
\epsilon = \epsilon_1 \left(\frac{\epsilon_1}{\epsilon_2} \right)^2 $$
On observe en effet que $\epsilon$ est en $h^{30}$, comme
l'ordre de la m\'ethode. 

\subsection{Accélération de Richardson-Romberg}
\index{Romberg}\index{Richardson-Romberg}
\begin{prop}
Soit $g$ une fonction de classe $C^{2k}$ sur $[a,b]$, 
$T_h(g)$ la valeur de la méthode des trapèzes sur $[a,b]$ de pas 
$h=(b-a)/N$ ($N$ entier).
Alors $T_h(g)$ admet un développement en puissances paires de $h$
à l'ordre $2k$.
\end{prop}

Pour montrer ce résultat, il faut établir la formule d'Euler-Mac
Laurin. On commence par se placer sur une subdivision de l'intervalle
$[0,1]$, on intègre par parties $\int_0^1 f(t)\ dt$ en faisant apparaitre
la formule des trapèzes, on intègre donc 1 en $t-\frac12$
$$ \int_0^1 f(t) \ dt = 
[(t-\frac12)f(t)]_0^1 - \int_0^1 (t-\frac12)f'(t) \ dt =
\frac{f(0)+f(1)}{2} - \int_0^1 (t-\frac12)f'(t) \ dt
$$
où encore
$$ T_1(f)=\int_0^1 f(t) \ dt 
+  \int_0^1 (t-\frac12)f'(t) \ dt $$
Pour poursuivre, on pose $B_1(t)=t-\frac12$, qu'on va intégrer
en $\frac12((t-\frac12)^2+c)$, où on choisit $c$ pour que l'intégrale
soit nulle, donc $c=-1/6$. On pose $B_2=(t-\frac12)^2-1/6$, on a~:
$$  T_1(f)=\int_0^1 f(t) \ dt 
+ [\frac{B_2}{2} f']_0^1 - \int_0^1 \frac{B_2}{2}f'{'}(t) \ dt 
$$
Plus
généralement, on pose
$$ B_{p+1}'=pB_p, \quad \int_0^1 B_{p+1}(t) \ dt=0 $$
ce qui définit de manière unique les $B_p$. La nullité de l'intégrale
montre que $B_{p+1}(1)=B_{p+1}(0)$ ce qui simplifiera l'expression des
termes tout intégrés. De plus, on montre par récurrence
que les $B_p$ ont une symétrie paire
ou impaire selon la parité de $p$ par rapport à $t=1/2$.
Après $p$ intégrations par parties, on obtient~:
\begin{eqnarray*}
  T_1(f)&=&\int_0^1 f(t) \ dt 
+ \frac{B_2(0)}{2} (f'(1)-f'(0)) 
+ ... \\
& &+ \frac{B_{2k}(0)}{(2k)!} (f^{[2k-1]}(1)-f^{[2k-1]}(0)) 
- \int_0^1 \frac{B_{2k}}{(2k)!} f^{[2k]}(t) \ dt 
\end{eqnarray*}
En faisant le même raisonnement sur $[k,k+1]$ pour $k=1,...,N-1$
et en sommant, on obtient la formule 
d'{\bf Euler-Mac Laurin}\index{Euler, Mac Laurin}\index{Mac Laurin, Euler}~:
\begin{eqnarray*}
  T_1^{[0,N]}(f)&=&\int_0^N f(t) \ dt 
+ \frac{B_2(0)}{2} (f'(N)-f'(0)) 
+ ... \\
& & + \frac{B_{2k}(0)}{(2k)!} (f^{[2k-1]}(N)-f^{[2k-1]}(0)) 
- \int_0^N \frac{B_{2k}}{(2k)!} f^{[2k]}(t) \ dt 
\end{eqnarray*}
On pose alors $x=a+ht$ (donc $dt=dx/h$) et $f(t)=g(x)$
(donc $f'(t)=df/dt=h dg/dx$), on obtient 
\begin{eqnarray*}
 \frac1h T_h^{[a,b]}(g)&=& \frac1h \int_0^N g(x) \ dx 
+ \frac{B_2(0)}{2} h(g'(b)-g'(a)) 
+ ... \\
& &+ \frac{B_{2k}(0)}{(2k)!} h^{2k-1} (g^{[2k-1]}(N)-g^{[2k-1]}(0)) 
- \int_0^N \frac{B_{2k}}{(2k)!} h^{2k} g^{[2k]}(x) \ \frac1h dx 
\end{eqnarray*}
donc
\begin{eqnarray*}
 T_h^{[a,b]}(g) &=&  \int_0^N g(x) \ dx 
+ h^2 \frac{B_2(0)}{2} (g'(b)-g'(a)) 
+ ... \\
& & + h^{2k} \frac{B_{2k}(0)}{(2k)!}  (g^{[2k-1]}(N)-g^{[2k-1]}(0)) 
- h^{2k} \int_0^N \frac{B_{2k}}{(2k)!}  g^{[2k]}(x) \  dx 
\end{eqnarray*}

L'accélération consiste à éliminer les puissances de $h^2$ en
commençant par $h^2$ avec des subdivisions deux fois plus fines
à chaque itération.
Ainsi $T_h^1(f) = (4T_{h/2}(f)-T_h(f))/(4-1)$ n'a plus de termes en $h^2$
et tend vers l'intégrale à approcher lorsque $h$ tend vers 0. 
On peut d'ailleurs vérifier qu'il s'agit de la méthode de Simpson.
On élimine ensuite le terme en $h^4$ en posant
$T_h^2(f)=(4^2 T_{h/2}^1(f)-T_h^1(f))/(4^2-1)$ et ainsi
de suite. On construit un tableau triangulaire \verb|T|
dont chaque
ligne $l$ contient $T_{h/2^l}(f), T_{h/2^l}^1(f), ...$ 
(avec des indices qui commencent à 0). Pour
calculer le terme d'indice 0 de la ligne courante
on fait une méthode des trapèzes sur 2 fois plus
de subdivisions que la précédente, puis pour le $j$-ième terme
\verb|T[l,j]|
on effectue \verb|(4^j*T[l-1,j-1]-T[l,j-1])/(4^j-1)|
(on n'a donc besoin que de la ligne précédente pour calculer
la ligne courante).
On s'arrête par exemple lorsque la valeur absolue de la différence
entre les derniers termes de deux lignes consécutives est inférieur
à la précision souhaitée (erreur empirique).

\subsection{M\'ethodes probabilistes.} \index{Monte-Carlo}
Pour d\'eterminer $\int_a^b f(t) \ dt $, on l'interpr\`ete comme
une esp\'erance, plus pr\'ecis\'ement comme $(b-a)E(f(X))$ 
o\`u $X$ est une variable al\'eatoire
qui suit la loi uniforme sur $[a,b]$, et on approche cette valeur
par 
$$ \frac{b-a}{n} \sum_{k=1}^n f(x_k) $$
o\`u $x_k$ est obtenu par un g\'en\'erateur pseudo-al\'eatoire
(selon la loi uniforme).
Par exemple\\
\giacinputbigmath{f(t):=exp(-t^2); n:=1000; a:=0; b:=2.0;l:=ranv(n,uniform,a,b):;}\\
\giacinputbigmath{(b-a)*sum(apply(f,l))/n; int(f(t),t,a,b);}\\
La convergence en fonction de $n$ est assez lente, on peut l'observer
en faisant plusieurs estimations~:\\
\giacinputbigmath{m:=ranm(500,n,uniform,a,b):;I:=seq(2*sum(apply(f,m[k]))/n,k,0,size(m)-1);}\\
\giacinput{histogram(I,0,0.01)}

En effet, les tirages sont \'equidistribu\'es selon la m\^eme loi,
la loi des grands nombres s'applique donc~: on fait $b-a$ fois
une moyenne de
$n$ tirages, si $n$ est grand, on converge vers une loi normale
dont l'\'ecart-type est en $(b-a)\sigma/\sqrt{n}$.
La valeur de la constante $\sigma$
peut se calculer \`a partir de $f$
$$ \sigma^2 = \frac{1}{b-a}\int_a^b f^2(t) \ dt -
\left( \frac{1}{b-a}\int_a^b f(t) \ dt  \right)^2 $$
par exemple ici\\
\giacinputbigmath{2*sqrt(int(f(t)^2,t,0,2.)/2-(1/2*int(f(t),t,0,2.))^2)/sqrt(n); stddevp(I);}\\
mais on ne fait pas ce calcul en pratique
(puisqu'il faudrait calculer une int\'egrale), on estime
l'\'ecart-type $\sigma/\sqrt{n}$ de la loi normale par
l'\'ecart-type de l'\'echantillon des estimations \verb|stddevp(I)|.\\
\giacinputbig{histogram(I,0,0.01); plot(normald(mean(I),stddevp(I),x),x=0.8..1)}

On peut donc obtenir rapidement une estimation de $\sigma$ en prenant
l'\'ecart-type d'une s\'equence de valeurs de $f$\\
\giacinputbigmath{f(t):=exp(-t^2); n:=1000; a:=0;  b:=2.0;l:=ranv(n,uniform,a,b):;}\\
\giacinputbigmath{fl:=apply(f,l):;m:=(b-a)*mean(fl);s:=(b-a)*stddevp(fl)/sqrt(n);[m-2s,m+2s]}

Cette m\'ethode converge donc beaucoup moins vite que les quadratures,
en dimension 1. Mais elle se g\'en\'eralise tr\`es facilement en
dimension plus grande en conservant la m\^eme vitesse de convergence
alors que le travail n\'ecessaire pour une m\'ethode de quadrature
croit comme une puissance de la dimension, et ne n\'ecessite pas
de param\'etrer des domaines d'int\'egration compliqu\'es (il suffit
par exemple d'utiliser la m\'ethode du rejet pour avoir un
g\'en\'erateur uniforme
dans un domaine inclus dans un cube).

\section{Suites it\'eratives et applications}
R\'esum\'e:\\
Th\'eor\`eme du point fixe, m\'ethode de Newton,convexit\'e. 
Exemple: calcul de valeur approch\'ee de racines carr\'ees,
R\'esolution d'\'equations.


\subsection{Le point fixe dans $\R$}
Soit $f$ une fonction continue sur un intervalle $I=[a,b]$ de $\R$, et 
à valeurs dans $I$ (attention à bien choisir $I$ pour que l'image
de $I$ par $f$ reste dans $I$).
On s'int\'eresse à la suite 
\begin{equation} \label{eq:u_n_fixe}
 u_{n+1}=f(u_n), \quad u_0 \in I 
\end{equation}
Supposons que $u_n$ converge vers une limite $l \in I$ lorsque
$n \rightarrow +\infty$, alors la limite doit v\'erifier
\[ f(l)=l \]
puisque $f$ est continue. On dit que $l$ est un point fixe de $f$.
Ceci am\`ene à l'id\'ee d'utiliser ces suites pour r\'esoudre num\'eriquement
l'\'equation $f(x)=x$. Nous allons donner un th\'eor\`eme permettant
d'assurer que la suite (\ref{eq:u_n_fixe}) converge, et que la limite
est l'unique solution de $f(l)=l$ sur $I$.

\begin{defn}
On dit que $f$ est contractante\index{contractante} de rapport $k<1$ sur $I$ si
\[ \forall x,y \in I, \quad |f(y)-f(x)| \leq k |y-x| \]
\end{defn}

En pratique, les fonctions $f$ que l'on consid\`erera seront continument
d\'erivables, donc d'apr\`es le th\'eor\`eme des accroissements finis
\[ f(y)-f(x)=f'(\theta) (y-x), \quad \theta \in [x,y] \]
ainsi pour v\'erifier que $f$ est contractante, on \'etudie la valeur absolue
de $f'$ sur $I$, il suffit de montrer que cette valeur absolue
est strictement inf\'erieure à un r\'eel $k<1$ pour conclure (il faut
donc chercher le maximum de $|f'|$ sur $I$. Attention, il s'agit du
maximum de $|f'|$ et pas du maximum de $f'$, ce qui revient à chercher
le maximum de $f'$ et de $-f'$).

On a alors le 
\begin{theorem} (du point fixe)\index{point fixe}\\
si $f$ est contractante de $I=[a,b]$
dans $I$ de rapport $k$ 
alors la suite (\ref{eq:u_n_fixe}) converge vers l'unique
solution de $f(l)=l$ dans $I$. On a de plus les encadrements~:
\begin{equation}  \label{eq:u_n_l}
|u_n-l| \leq k^n |b-a|, \quad
|u_n -l | \leq \frac{|u_{n+1}-u_n|}{1-k} 
\end{equation}
\end{theorem}

D\'emonstration~: Tout d'abord si $f$ est contractante, on montre à partir
de la d\'efinition de la continuit\'e que $f$ est continue. 
Soit $g(x)=f(x)-x$, alors $g$ est continue, positive en $a$ et n\'egative
en $b$, il existe donc $l\in[a,b]$ tel que $g(l)=0$ (th\'eor\`eme des
valeurs interm\'ediaires). Soit $u_n$ une suite d\'efinie par
(\ref{eq:u_n_fixe}). On a alors pour tout $n$
\[ |u_{n+1}-l|=|f(u_n)-f(l)| \leq k |u_n-l| \]
Donc par une r\'ecurrence \'evidente~:
\[ |u_n-l| \leq k^n |u_0-l| \]
ce qui entraine d'ailleurs que $|u_n-l| \leq k^n |a-b|$.
Comme $k \in [0,1[ $, la suite g\'eom\'etrique $k^n$ converge vers 0
lorsque $n$ tend vers l'infini, donc $u_n$ tend vers $l$.
Notons que $l$ est unique car si $l'$ est une autre solution
alors $|l-l'|=|f(l)-f(l')| \leq k|l-l'|$ donc $(1-k)|l-l'| \leq 0$,
or $1-k>0$ et $|l-l'| \geq 0$ donc $|l-l'|$ doit \^etre nul.
Passons à la preuve de la majoration (\ref{eq:u_n_l}) qui est importante
en pratique car elle donne un test d'arrêt de calcul des
termes de la suite r\'ecurrente, on \'ecrit pour $m>0$~:
\[ u_n-l= u_n - u_{n+1} + u_{n+1} - u_{n+2} + ... + u_{n+m-1}- u_{n+m}
+ u_m-l \]
puis on majore avec l'in\'egalit\'e triangulaire
\[ |u_n-l| \leq \sum_{j=0}^{m-1} |u_{n+j}-u_{n+j+1}| + |u_m-l| \]
puis on applique le fait que $f$ est contractante de rapport $k$
\[ |u_n-l| \leq \sum_{j=0}^{m-1} k^j |u_{n}-u_{n+1}| + |u_m-l| \]
soit
\[ |u_n-l| \leq \frac{1-k^m}{1-k} |u_{n}-u_{n+1}| + |u_m-l| \]
On fait alors tendre $m$ vers l'infini d'où le r\'esultat.

Exemples~: 
Cherchons une valeur approch\'ee de $\sqrt{2}$ par cette m\'ethode.
Il faut d'abord trouver une fonction $f$ dont $\sqrt{2}$ est un point
fixe, par exemple
\[ f(x)=\frac{x+2}{x+1}\]
On v\'erifie que $f(\sqrt{2})=\sqrt{2})$, puis que $f'=-1/(x+1)^2$
donc $f$ d\'ecroit. On va voir si les hypoth\`eses du th\'eor\`eme du point
fixe s'appliquent sur par exemple $[1,2]$. Comme $f$ est d\'ecroissante
$f([1,2])=[f(2),f(1)]=[4/3,3/2]$ qui est bien inclus dans $[1,2] $.
De plus $f'$ est comprise entre $-1/(1+1)^2=-1/4$ et $-1/(2+1)^2=-1/9$ donc
$|f'|<1/4$, $f$ est contractante de rapport $1/4$. On peut donc
it\'erer la suite à partir par exemple de $u_0=1$ et on va converger
vers $\sqrt{2}$ (en s'en rapprochant à chaque cran d'un rapport
inf\'erieur à $1/4$).

Consid\'erons l'\'equation en $x$
\[ x- e \sin(x) =t, \quad e \in [0,1[ \]
c'est l'\'equation du temps utilis\'ee en astronomie pour trouver la
position d'une plan\`ete sur son orbite elliptique ($e$ \'etant l'excentricit\'e
de l'ellipse).
Il n'y a pas de formule exacte permettant de calculer $x$ en fonction de $t$.
Si on a une valeur num\'erique pour $t$, on peut trouver une valeur
num\'erique approch\'ee de $x$ par la m\'ethode du point fixe, en r\'e\'ecrivant
l'\'equation sous la forme 
\[ f(x)=t+e\sin(x) = x \]
On observe que $f$ envoie $\R$ dans $[t-e,t+e]$ donc on peut prendre
$I=[t-e,t+e]$, de plus $|f'|\leq e <1$, $f$ est contractante
de rapport $e \in [0,1[$, le th\'eor\`eme s'applique, il suffit de
prendre une valeur initiale dans $[t-e,t+e]$ et d'it\'erer la suite
jusqu'à obtenir la pr\'ecision d\'esir\'ee. Par exemple si on veut une
valeur approch\'ee de $x$ à $10^{-6}$ pr\`es, il suffira que la diff\'erence
entre deux termes successifs de la suite $u_n$ v\'erifie
\[ |u_{n+1}-u_n| \leq  10^{-6} (1-e) \]
on aura alors bien~:
\[ |u_n-x| \leq \frac{|u_{n+1}-u_n|}{1-e} \leq 10^{-6} \]

Cette m\'ethode n'est pas toujours optimale, car la vitesse de convergence
vers la limite $l$ est dite ``lin\'eaire'', c'est-\`a-dire 
que le temps de calcul pour
avoir $n$ d\'ecimales est proportionnel à $n$ (ou
encore il faut effectuer un nombre d'it\'erations
proportionnel à $n$, chaque it\'eration faisant
gagner en pr\'ecision de l'ordre du rapport $k$ de contractance). 
En effet, supposons que $f'$ est continue en $l$ et que $0<L=|f'(l)|<1 $.
Il existe alors un intervalle $I=[l-\eta,l+\eta]$ tel que
\[  x \in I \Rightarrow \frac{L}{2} \leq |f'(x)| \leq \frac{1+L}{2} \]
Le th\'eor\`eme des accroissements finis donne alors
\[ |u_{n+1} - l | = |f(u_n)-f(l)| = |f'(\theta)| |u_n-l|,
\quad \theta \in [u_n,l] \]
Si $u_0 \in I$, alors $\theta \in I$ donc $|u_1-l| \leq |u_0-l|$ et
$u_1 \in I$, par r\'ecurrence on a pour tout $n$, $u_n \in I$ 
\[ \frac{L}{2} |u_n-l| \leq |u_{n+1} - l| \leq \frac{1+L}{2} |u_n-l| \]
on a donc par r\'ecurrence 
\[ \left(\frac{L}{2}\right)^n|u_0-l| \leq |u_n-l| \leq  
\left( \frac{1+L}{2} \right)^n|u_0-l|
\]
Donc pour avoir $|u_n-l| \leq \epsilon$ il suffit que 
\[ \left( \frac{1+L}{2} \right)^n|u_0-l| \leq \epsilon \Rightarrow
n \geq \frac{\ln(\frac{\epsilon}{|u_0-l|})}{\ln( \frac{1+L}{2}) } \]
et il faut que
\[ \left(\frac{L}{2}\right)^n |u_0-l| \leq \epsilon
\Rightarrow
n \geq \frac{\ln(\frac{\epsilon}{|u_0-l|})}{\ln( \frac{L}{2}) }
 \]

Si $f$ est suffisamment r\'eguli\`ere,
il existe une m\'ethode plus rapide lorsqu'on est proche de la racine ou lorsque
la fonction a des propri\'et\'es de convexit\'e, c'est la m\'ethode de Newton.
Et m\^eme si Newton n'est pas applicable, une simple dichotomie
peut \^etre plus efficace si la constante de contractance est 
sup\'erieure \`a $1/2$ (y compris pr\'es de la solution de $f(x)=x$).
Toutefois la m\'ethode du point fixe reste int\'eressante si la
constante de contractance est suffisamment petite (par exemple $k=0.1$
garantit 15 d\'ecimales en 15 it\'erations) et pr\'esente l'avantage
de se g\'en\'eraliser en dimension plus grande, cf. la section suivante.

\subsection{Le point fixe dans $\R^n$}
Le th\'eor\`eme pr\'ec\'edent se g\'en\'eralise. 
\begin{theorem}
Soit $I$ un ensemble
ferm\'e de $\R^n$ (ou d'un espace m\'etrique complet) tel que $f$ 
envoie $I$ dans $I$ et tel que $f$ soit contractante sur $I$
$$ \exists k<1, \forall x,y \in I, \quad |f(x)-f(y)| \leq k |x-y|$$
Alors pour tout $u_0 \in I$, la suite $(u_n)$ d\'efinie par
$u_{n+1}=f(u_n)$ converge vers l'unique solution dans $I$ de $f(l)=l$.
\end{theorem}
La d\'emonstration de la convergence est un peu diff\'erente de celle donn\'ee en
dimension 1, on montre que $(u_n)$ est une suite de Cauchy, car pour $n>m$
$$ |u_n-u_m| \leq \sum_{j=m}^{n-1}|u_{j+1}-u_j | 
\leq k^m \frac{1}{1-k} |u_1-u_0| $$
donc $(u_n)$ est convergente puisque nous sommes dans un ferm\'e 
d'un espace complet. (Cela permet d'ailleurs de g\'en\'eraliser 
l'\'enonc\'e donn\'e en dimension 1 au cas o\`u $a$ ou $b$ est infini)

La vitesse de convergence est lin\'eaire, la d\'emonstration est
identique \`a celle de la dimension 1.

Remarque~: 
\begin{itemize}
\item L'existence d'un point fixe sans hypoth\`ese de contractance
se g\'en\'eralise si $I$ est un convexe compact pr\'eserv\'e
par $f$ (th\'eor\`eme
de Brouwer ou de Schauder).
\item Pour v\'erifier les hypoth\`eses du th\'eor\`eme dans
$\R^n$, il suffit de montrer que dans $I$ la norme triple de $f'$
subordonn\'ee \`a la norme choisie dans $\R^n$ est inf\'erieure
\`a $k<1$. Pour $f$ lin\'eaire,
cela revient \`a calculer une norme subordonn\'ee de matrice, 
et donne lieu \`a des m\'ethodes it\'eratives alternatives \`a
l'inversion de matrice, cf. la section \ref{sec:jacobi}.
\item l'algorithme de recherche
PageRank de google utilise le point fixe, en tr\`es grande dimension~:
$n$ est le nombre de pages Web, $I$ est l'ensemble des vecteurs
de $\R^n$ dont toutes les coordonn\'ees sont positives ou nulles et
dont la somme des coordonn\'ees vaut 1, $f$ est la somme d'un vecteur
constant et du produit du vecteur $x$ par une matrice $A$ transpos\'ee
d'une matrice stochastique.
\end{itemize}

 
\subsection{La m\'ethode de Newton dans $\R$.}
La m\'ethode de Newton est une m\'ethode de r\'esolution de l'\'equation
$f(x)=0$, attention à la diff\'erence avec le th\'eor\`eme du point fixe
qui permet de r\'esoudre num\'eriquement $f(x)=x$.
Si $x_0$ est proche de la racine $r$
on peut faire un d\'eveloppement de Taylor à l'ordre 1 de la
fonction $f$ en $x_0$~:
\[ f(x)=f(x_0)+(x-x_0)f'(x_0)+O((x-x_0)^2) \]
Pour trouver une valeur approch\'ee de $r$, on ne garde que la partie
lin\'eaire du d\'eveloppement, on r\'esout~:
\[ f(r)=0 \approx f(x_0) + (r-x_0) f'(x_0) \]
donc (si $f'(x_0)\neq 0$)~:
\[ r \approx x_0 -\frac{f(x_0)}{f'(x_0)}\]
Graphiquement, cela revient à tracer la tangente à la courbe repr\'esentative
de $f$ et à chercher où elle coupe l'axe des $x$.
On consid\`ere donc la suite r\'ecurrente d\'efinie par une valeur $u_0$
proche de la racine et par la relation~:
\[ u_{n+1} = u_n -\frac{f(u_n)}{f'(u_n)}\]

Il y a deux th\'eor\`emes importants, l'un d'eux prouve que
si $u_0$ est ``assez proche'' de $r$ alors la suite $u_n$ converge vers $r$,
malheureusement il est difficile de savoir en pratique si on est 
``assez proche'' de $u_0$ pour que ce th\'eor\`eme s'applique. Le second
th\'eor\`eme donne un crit\`ere pratique facile à v\'erifier qui assure
la convergence, il utilise les propri\'et\'es de convexit\'e de la fonction.

\begin{theorem} \index{Newton}
Soit $f$ une fonction de classe $C^2$ (2 fois continument d\'erivable)
sur un intervalle ferm\'e $I$. Soit $r$ une racine simple de $f$
situ\'ee \`a l'int\'erieur de $I$
(telle que $f(r)=0$ et $f'(r)\neq 0$). Alors il existe $\varepsilon>0$
tel que la suite d\'efinie par
\[ u_{n+1} = u_n -\frac{f(u_n)}{f'(u_n)}, \quad |u_0-r| \leq \varepsilon \]
converge vers $r$.

Si on a $|f'{'}| \leq M$ et $|1/f'| \leq m$ sur un intervalle 
$[r-\eta,r+\eta]$ contenu dans $I$, alors on peut prendre tout r\'eel
$\varepsilon>0$ tel que $\varepsilon < 2/(mM)$ et $\varepsilon \leq \eta$.
\end{theorem}

{\bf D\'emonstration}~: on a
\[ u_{n+1}-r = u_n - r - \frac{f(u_n)}{f'(u_n)} = 
\frac{(u_n-r)f'(u_n)-f(u_n)}{f'(u_n)} \]
En appliquant un d\'eveloppement de Taylor de $f$ en $u_n$ à l'ordre 2,
on obtient pour un r\'eel $\theta$
situ\'e entre $r$ et $u_n$~:
\[ 0 = f(r)=f(u_n)+(r-u_n) f'(u_n) + (r-u_n)^2 \frac{f'{'}(\theta)}{2} \]
donc~:
\[ (u_n-r)f'(u_n)-f(u_n)= (u_n-r)^2 \frac{f'{'}(\theta)}{2} \]
d'o\`u~:
\[ |u_{n+1}-r| \leq |u_n-r|^2 \frac{1}{|f'(u_n)|} 
\frac{|f'{'}(\theta)|}{2} \]
On commence par choisir un intervalle $[r-\varepsilon,r+\varepsilon]$
contenant strictement $r$ et tel que $|f'{'}|<M$ et $|1/f'|<m$
sur $[r-\varepsilon,r+\varepsilon]$ (c'est toujours possible car
$f'{'}$ et $1/f'$ sont continues au voisinage de $r$ puisque $f'(r)\neq 0$).
Si $u_n$ est dans cet intervalle, alors $\theta$ aussi donc
\begin{equation}\label{eq:newton}
 |u_{n+1}-r| \leq |u_n-r|^2 \frac{Mm}{2} \leq  \frac{|u_n-r|Mm}{2}
|u_n-r|,  
\end{equation}
On a $|u_n-r| \leq \varepsilon$, on diminue si n\'ecessaire
$\varepsilon$ pour avoir $\varepsilon < 2/(Mm)$, on a alors~:
\[ |u_{n+1}-r| \leq k |u_n-r|, \quad k=\frac{\varepsilon Mm}{2}<1  \]
donc d'une part $u_{n+1}$ est encore dans l'intervalle 
$[r-\varepsilon,r+\varepsilon]$ 
ce qui permettra de refaire le m\^eme raisonnement au rang
suivant, et d'autre part
on a une convergence au moins g\'eom\'etrique vers $r$.
En fait la convergence est bien meilleure
lorsqu'on est proche de $r$ grace au carr\'e dans $|u_n-r|^2$,
plus pr\'ecis\'ement, on montre par r\'ecurrence que
\[ |u_n-r| \leq |u_0 - r|^{2^n} \left( \frac{Mm}{2} \right)^{2^n-1}
\]
il faut donc un nombre d'it\'erations proportionnel \`a $\ln(n)$
pour atteindre une pr\'ecision donn\'ee.

{\bf Remarque~:} ce th\'eor\`eme se g\'en\'eralise sur $\C$ et même sur $\R^n$
(cf. la section suivante).

{\bf Exemple~:} pour calculer $\sqrt{2}$, on \'ecrit l'\'equation $x^2-2=0$
qui a $\sqrt{2}$ comme racine simple sur $I=[1/2,2]$, 
on obtient la suite r\'ecurrente
\[ u_{n+1} = u_n - \frac{u_n^2-2}{2u_n} \]
Si on prend $\eta=1/2$, on a $f'=2x$ et $f'{'}=2$
donc on peut prendre $M=2$ et $m=1$ car $|1/f'|\leq 1$ sur 
$[\sqrt{2}-1/2,\sqrt{2}+1/2]$. On a $2/(mM)=1$, on peut donc 
prendre $\varepsilon=1/2$, la suite convergera pour tout 
$ u_0 \in [\sqrt{2}-1/2,\sqrt{2}+1/2]$.

Plus g\'en\'eralement, on peut calculer une racine $k$-i\`eme d'un r\'eel $a$
en r\'esolvant $f(x)=x^k-a$ par la m\'ethode de Newton.

L'inconv\'enient de ce th\'eor\`eme
est qu'il est difficile de savoir si la valeur de d\'epart qu'on
a choisie se trouve suffisamment pr\`es d'une racine pour que
la suite converge. Pour illustrer le ph\'enom\`ene, 
on peut par exemple colorer les points du plan
complexe en $n+1$ couleurs selon que la suite d\'efinie par la m\'ethode
de Newton converge vers l'une des $n$ racines d'un polynôme de degr\'e
$n$ fix\'e au bout de par exemple 50 it\'erations (la $n+1$-i\`eme couleur
servant aux origines de suite qui ne semblent pas converger).

Passons maintenant à un crit\`ere tr\`es utile en pratique~:
\begin{defn} (convexit\'e)\index{convexe}\\
Une fonction $f$ continument d\'erivable sur un intervalle $I$ de $\R$
est dite convexe si son graphe est au-dessus de la tangente en tout point
de $I$.
\end{defn}
Il existe un crit\`ere simple permettant de savoir si
une fonction de classe $C^2$ est convexe~:
\begin{theorem}
Si $f$ est $C^2$ et $f'{'} \geq 0$ sur $I$ alors $f$ est convexe.
\end{theorem}
{\bf D\'emonstration}~:\\
L'\'equation de la tangente au graphe en $x_0$ est 
\[ y=f(x_0)+f'(x_0)(x-x_0) \]
Soit
\[ g(x)=f(x)-(f(x_0)+f'(x_0)(x-x_0)) \]
on a~:
\[ g(x_0)=0, \quad g'(x)=f'(x)-f'(x_0), \quad g'(x_0)=0, 
\quad g'{'}=f'{'} \geq 0 \]
donc $g'$ est croissante, comme $g'(x_0)=0$, $g'$ est n\'egative
pour $x<x_0$ et positive pour $x>x_0$, donc $g$ est d\'ecroissante
pour $x<x_0$ et croissante pour $x>x_0$. On conclut alors que
$g \geq 0$ puisque $g(x_0)=0$. Donc $f$ est bien au-dessus
de sa tangente.

On arrive au deuxi\`eme th\'eor\`eme sur la m\'ethode de Newton
\begin{theorem} \index{Newton}
Si $f(r)=0, f'(r)>0$ et si $f'{'} \geq 0$ sur $[r,b]$ alors
pour tout $u_0 \in [r,b]$ la suite de la m\'ethode de Newton
\[ u_{n+1} = u_n -\frac{f(u_n)}{f'(u_n)},  \]
est d\'efinie, d\'ecroissante, minor\'ee par $r$ et converge vers 
$r$. De plus
\[ 0 \leq u_n -r \leq \frac{f(u_n)}{f'(r)} \]
\end{theorem}

{\bf D\'emonstration}~:\\
On a $f'{'} \geq 0$ donc si $f'(r)>0$ alors $f'>0$
sur $[r,b]$, $f$ est donc strictement croissante sur $[r,b]$
on en d\'eduit que $f>0$ sur $]r,b]$ donc $u_{n+1} \leq u_n$.
Comme la courbe repr\'esentative de $f$ est au-dessus de la tangente,
on a $u_{n+1} \geq r$ (car $u_{n+1}$ est l'abscisse du point
d'intersection de la tangente avec l'axe des $x$). 
La suite $u_n$ est donc d\'ecroissante minor\'ee par $r$, donc convergente
vers une limite $l\geq r$. \`A la limite, on a 
\[ l=l-\frac{f(l)}{f'(l)} \Rightarrow f(l)=0 \]
donc $l=r$ car $f>0$ sur $]r,b]$.

Comme $(u_n)$ est d\'ecroissante, on a bien $0 \leq u_n -r$,
pour montrer l'autre in\'egalit\'e, on applique le th\'eor\`eme
des accroissements finis, il existe $\theta \in [r,u_n]$ tel que
\[ f(u_n)-f(r)=(u_n-r)f'(\theta) \]
comme $f(r)=0$, on a
\[ u_n-r = \frac{f(u_n)}{f'(\theta)} \]
et la deuxi\`eme in\'egalit\'e du th\'eor\`eme
en d\'ecoule parce que $f'$ est croissante.

{\bf Variantes}~:\\
Il existe des variantes, par exemple si $f'(r)<0$ et $f'{'} \geq 0$
sur $[a,r]$. Si $f'{'} \leq 0$, on consid\`ere $g=-f$.

{\bf Application}~:\\
On peut calculer la valeur approch\'ee de la 
racine $k$-i\`eme d'un r\'eel $a>0$ en appliquant ce deuxi\`eme
th\'eor\`eme. En effet si
$a>0$, alors $x^k-a$ est 2 fois continument d\'erivable et 
de d\'eriv\'ee premi\`ere $kx^{k-1} $ et
seconde $k(k-1)x^{k-2}$ strictement positives sur $\R^{+\ast}$ (car $k \geq 2$).
Il suffit donc de prendre une valeur de d\'epart $u_0$ plus grande que
la racine $k$-i\`eme, par exemple $1+a/k$ (en effet
$(1+a/k)^k \geq 1+k a/k=1+a$).
En appliquant l'in\'egalit\'e du th\'eor\`eme, on a~:
\[ 0 \leq u_n - \sqrt[k]{a} \leq  
\frac{u_n^k - a}{k\sqrt[k]{a}^{k-1} }
\leq \frac{u_n^k-a}{ka}  \sqrt[k]{a}
\leq \frac{u_n^k-a}{ka} (1+\frac{a}{k})
\]
Pour avoir une valeur approch\'ee de $\sqrt[k]{a}$ \`a $\varepsilon$ pr\`es,
on peut donc choisir comme test d'arr\^et 
\[ u_n^k -a \leq \frac{ka}{1+\frac{a}{k}} \varepsilon \]
Par exemple pour $\sqrt{2}$, le test d'arr\^et serait 
$u_n^2-2 \leq 2 \varepsilon$.

\subsection{La m\'ethode de Newton dans $\R^n$.}
Le premier \'enonc\'e du cas de la dimension 1 se g\'en\'eralise en~:
\begin{theorem} \index{Newton}
Soit $f$ une fonction de classe $C^2$ (2 fois continument d\'erivable)
sur un ferm\'e $I$ de $\R^n$. Soit $r$ une racine simple de $f$
situ\'ee \`a l'int\'erieur de $I$
(telle que $f(r)=0$ et $f'(r)=(\partial_j f_i)(r)$ inversible). 
Alors il existe $\varepsilon>0$
tel que la suite d\'efinie par
\[ u_{n+1} = u_n -(f'(u_n) )^{-1}f(u_n), \quad |u_0-r| \leq \varepsilon \]
converge vers $r$.

Si on a $|f'{'}| \leq M$ et $|(f')^{-1}| \leq m$ sur une boule
centr\'e en $r$ de rayon $\eta>0$ contenue dans $I$, alors on peut prendre tout r\'eel
$\varepsilon>0$ tel que $\varepsilon < 2/(mM)$ et $\varepsilon \leq \eta$.
\end{theorem}
La d\'emonstration est calqu\'ee sur la dimension 1, mais il faut
prendre le reste int\'egral dans la formule de Taylor
\[ u_{n+1}-r = u_n - r - f'(u_n)^{-1} f(u_n) = 
f'(u_n)^{-1} (f'(u_n)(u_n-r)-f(u_n) ) \]
puis on applique Taylor le long du segment $[r,u_n]$~:
\[ 0 = f(r)=f(u_n)+ f'(u_n) (r-u_n)+  \int_0^1 (1-\theta)(r-u_n)
f'{'}(r+\theta (u_n-r)) (r-u_n) \, d\theta \]
donc~:
$$u_{n+1}-r =-f'(u_n)^{-1}  (r-u_n) 
\left(\int_0^1 (1-\theta)f'{'}(r+\theta (u_n-r)) \, d\theta \right) (r-u_n)  $$
et on en d\'eduit (\ref{eq:newton}) et on conclut de m\^eme en
rempla\c{c}ant intervalle centr\'e en $r$ de rayon $\varepsilon$
par boule de rayon $\varepsilon$.

Remarque~: la convergence ``num\'erique'' (au sens du calcul en
flottant) de la suite $u_n$ ne suffit pas \`a montrer l'existence
d'une racine proche de $u_n$. Une m\'ethode de preuve alternative
au calcul des constantes $m$ et $M$ consiste
\`a trouver un rectangle ou une boule autour de $u_n$ pr\'eserv\'ee
par l'application $x\rightarrow x-f'(x)^{-1} f(x)$.

%% Id\'ees TD: diff\'erentes suites it\'eratives approchant $\sqrt{3}$,
%% par exemple trouver (a*x+b)/(c*x+d) ayant sqrt(3) comme point fixe
%% vitesse de convergence th\'eorique.
%% Recherche de suite it\'erative pour les racines $n$-i\`eme.

%% Id\'ees TP: observation pratique de la vitesse de convergence,
%% en pr\'ecision double ou illimit\'ee. Exemple de cas où Newton marche
%% et ne marche pas, utilisation du pr\'efacteur.

\subsection{Calcul approch\'e des racines complexes simples} 
\index{factorisation} \index{racine}
La section pr\'ec\'edente nous a montr\'e qu'on pouvait
se ramener \`a la recherche de racines simples, ce qui 
donne envie d'essayer la m\'ethode de Newton. On a malheureusement
rarement la possibilit\'e de pouvoir d\'emontrer qu'\`a partir d'une valeur
initiale donn\'ee, la m\'ethode de Newton converge, 
parce que les racines peuvent \^etre complexes, et m\^eme si elles
sont r\'eelles, on n'a pas forc\'ement de r\'esultat sur la convexit\'e
du polyn\^ome (cf. cependant une application des suites de
Sturm qui permet de connaitre le signe
de $P'{'}$ sur un intervalle sans le factoriser).

On effectue donc souvent des it\'erations de Newton, en partant de
0.0, en esp\'erant s'approcher suffisamment d'une racine pour que
le th\'eor\`eme de convergence th\'eorique s'applique. On se fixe
un nombre maximal d'it\'erations, si on le d\'epasse on prend alors
une valeur initiale al\'eatoire complexe et on recommence.

Une fois une racine d\'etermin\'ee, on l'\'elimine en calculant
le quotient euclidien $Q$ de $P$ par $X-r$ (par l'algorithme de Horner),
puis on calcule les racines du quotient $Q$ (qui sont des racines de $P$).

Un probl\`eme pratique apparait alors, c'est que $r$ n'est pas exact
donc le quotient $Q$ non plus, au fur et \`a mesure du calcul des
racines de $P$, on perd de plus en plus de pr\'ecision.
Il existe une am\'elioration simple, si $r'$ est une racine
approch\'ee de $Q$, alors elle est racine approch\'ee de $P$
et on a toutes les chances qu'elle soit suffisamment proche
d'une racine de $P$ pour que le th\'eor\`eme s'applique, on
effectue alors 1 ou 2 it\'erations de Newton avec $r'$ mais pour $P$
(et non $Q$) afin d'am\'eliorer sa pr\'ecision comme racine de $P$.

Une m\'ethode de calcul plus stable utilise la recherche des valeurs
propres de la matrice companion en double pr\'ecision, 
puis affine par la m\'ethode de
Newton pour obtenir des valeurs approch\'ees multi-pr\'ecision,
c'est ce que fait \verb|proot|, par exemple \verb|proot(x^3+x+1,50)|.


Enfin, on peut appliquer directement la m\'ethode de Newton pour
trouver dans $\C^n$ toutes les racines simultan\'ement, c'est la
m\'ethode de {\bf Durand-Kerner, Weierstrass}\index{Durand-Kerner, Weierstrass}.
On pose $g_x(z)=\prod_{i=1}^n (x-z_i)$, il s'agit de r\'esoudre en $z$
$g_x(z)=P(x)$. On a a l'ordre 1 en $z$
$$ g_x(z+w)=g_x(z) - \sum_{i=1}^n w_i \prod_{j \neq i} (x-z_j) +O(w^2)
=P(x)$$
pour trouver $w_i$, on pose $x=z_i$, on obtient
$$ -\prod_{j \neq i}(z_i-z_j) w_i = P(z_i)$$
donc
$$ w_i=-\frac{P(z_i)}{\prod_{j \neq i}(z_i-z_j)}$$
On peut aussi calculer le produit du d\'enominateur en effectuant
$g_x'(z_i)$ (la d\'eriv\'ee porte sur $x$). 
On retrouve la m\'ethode de Newton \`a une variable
o\`u la d\'eriv\'ee du polyn\^ome au d\'enominateur est remplac\'ee 
par la valeur approch\'ee du polyn\^ome.
D'o\`u le programme
\begin{verbatim}
dw(P,N,eps):={ // Weierstrass, Durand-Kerner polynomial rooter
  local l,v,w,n,j,k,q,q1;
  P:=P/lcoeff(P);
  n:=degree(P);
  assume(l,symbol);
  v:=seq(exp(i*l/n*2.0*pi),l,0,n-1); w:=v;
  for k from 1 to N do
    q:=pcoeff(v);
    q1:=q';
    for j from 0 to n-1 do
      w[j]:=v[j]-horner(P,v[j])/horner(q1,v[j]);
    od;
    if (l2norm(w-v)<eps*l2norm(v))
      return w;
    v:=w;
  od;
  retourne "max iter reached";
}:;
\end{verbatim}
Par exemple \verb|dw(x^3+x+1,100,1e-10)| renvoie des valeurs
approch\'ees des racines de $x^3+x+1$.

Si on s'int\'eresse seulement \`a la racine de module maximal d'un
polyn\^ome, on peut
en trouver une estimation assez simplement en appliquant la m\'ethode
de la puissance \`a la matrice companion du polyn\^ome.
On peut am\'eliorer la pr\'ecision d'une racine
par des it\'erations inverses ou par la m\'ethode de Newton en une
variable.

\section{R\'eduction approch\'ee des endomorphismes}
On pourrait trouver des valeurs propres approch\'ees d'une matrice
en calculant le polynome caract\'eristique ou minimal puis en le
factorisant num\'eriquement. Mais cette m\'ethode n'est pas id\'eale
relativement aux erreurs d'arrondis (calcul du polynome caract\'eristiaue,
de ses racines, et nouvelle approximation en calculant le noyau
de $A-\lambda I$), lorsqu'on veut calculer quelques valeurs propres
on pr\'ef\`ere utiliser des m\'ethodes it\'eratives directement sur $A$
ce qui \'evite la propagation des erreurs d'arrondi.

\subsection{M\'ethode de la puissance} \index{puissance}
Elle permet de d\'eterminer la plus grande valeur propre en valeur absolue
d'une matrice diagonalisable lorsque celle-ci est unique.
Supposons en effet que les valeurs propres de $A$ soient
$x_1,...,x_n$ avec $|x_1| \leq |x_2| \leq ... \leq |x_{n-1}| < |x_n|$
et soient $e_1,...,e_n$ une base de vecteurs propres correspondants.
On choisit un vecteur al\'eatoire $v$ et on calcule la suite
$v_k=Av_{k-1}=A^k v $. Si $v$ a pour coordonn\'ees $V_1,...,V_n)$ 
dans la base propre, alors
\[ v_k = \sum_{j=1}^n V_j x_j^k e_j 
= x_n^k w_k, \quad w_k=\sum_{j=1}^n V_j \left(\frac{x_j}{x_n}\right)^k e_j
\]
L'hypoth\`ese que $x_n$ est l'unique valeur propre
de module maximal entraine alors 
que $\lim_{k \rightarrow +\infty} w_k = V_n e_n$ puisque la suite
g\'eom\'etrique de raison $x_j/x_n$ converge vers 0.
Autrement dit, si $V_n\neq 0$ (ce qui a une probabilit\'e 1 d'être
vrai pour un vecteur al\'eatoire), 
$v_k$ est \'equivalent à $V_n x_n^k e_n$. Lorsque $n$
est grand, $v_k$ est presque colin\'eaire au vecteur propre
$e_n$ (que l'on peut estimer par $v_k$ divis\'e par sa norme), 
ce que l'on d\'etecte en testant si $v_{k+1}$ et $v_k$
sont presques colin\'eaires. De plus le facteur de colin\'earit\'e
entre $v_{k+1}$ et $v_k$ est presque $x_n$, la valeur propre
de module maximal.

Exercice~: tester la convergence de $v_k=A^kv$ vers l'espace propre
associ\'e à $\lambda=3$ pour la matrice \verb|[[1,-1],[2,4]]|
et le vecteur $v=(1,0)$. Attention à ne pas calculer $A^k$ pour
d\'eterminer $v_k$, utiliser la relation de r\'ecurrence!

Si on n'observe pas de convergence ou si elle est trop lente, alors
$|x_{n-1}|$ est proche de $|x_n|$ ou \'egal, il est judicieux
de faire subir à la matrice un shift, on remplace $A$ par
$A-\lambda I$. On peut prendre $\lambda$ al\'eatoirement, ou bien
mieux faire des it\'erations inverses sur $A-\lambda I$ si $\lambda$
est une estimation d'une valeur propre (voir les it\'erations inverses
ci-dessous).

Lorsqu'on applique cette m\'ethode a une matrice r\'eelle, il peut arriver
quíl y ait deux valeurs propres conjugu\'ees de module maximal. On
peut appliquer la m\'ethode ci-dessus avec un shift complexe non r\'eel,
mais on doit alors travailler en arithm\'etique complexe 
ce qui est plus couteux. Le même
type de raisonnement que ci-dessus montre que pour $k$ grand,
$v_{k+2}$ est presque colin\'eaire à l'espace engendr\'e par $v_k$ et $v_{k+1}$, 
la recherche d'une relation $ av_{k+2}+ b v_{k+1} + v_k=0$ 
permet alors de calculer les valeurs propres qui sont les deux racines
de $ax^2+bx+1=0$.

La convergence est de type s\'erie g\'eom\'etrique, on gagne le même nombre
de d\'ecimales à chaque it\'eration.

Applications~: 
\begin{itemize}
\item la m\'ethode de la puissance peut donner
une estimation du nombre de condition $L^2$ d'une
matrice $A$. On calcule $B=A^* A$ puis on effectue
cette m\'ethode sur $B$ pour avoir une estimation
de la plus grande valeur propre, puis ``sur $B^{-1}$''
par it\'erations inverses et on fait le rapport des racines carr\'ees.
C'est une m\'ethode int\'eressante si la matrice
est creuse et sym\'etrique (pour pouvoir faire Cholesky creux
pour les it\'erations inverses).
\item
la m\'ethode de la puissance peut donner une estimation
rapide de la taille de la plus grande racine d'un polyn\^ome (en
module), en it\'erant sur la matrice companion du polyn\^ome,
matrice qui contient beaucoup de 0, donc le produit avec un vecteur
se fait en temps $O(n)$, o\`u $n$ est le degr\'e du polyn\^ome.
\begin{verbatim}
f(P,eps,N):={
  local k,l,n,v,old,new,oldratio,tmp;
  l:=coeffs(P);
  n:=degree(P);
  l:=revlist(l[1..n]/l[0]);
  v:=randvector(n,uniform,-1,1);
  oldratio:=-1;
  for k from 1 to N do
    old:=maxnorm(v);
    tmp := -l[0]*v[n-1];
    for j from 1 to n-1 do
      v[j] =< v[j-1]-l[j]*v[n-1];
    od;
    v[0] =< tmp;
    new:=maxnorm(v);
    if (abs(new/old-oldratio)<eps) return new/old;
    oldratio:=new/old;
  od;
  retourne undef;
}:;
\end{verbatim}
\end{itemize}

Ceci peut par exemple servir à d\'eterminer pour un polynôme $P$ donn\'e
squarefree (de degr\'e $n$ et coefficient dominant $p_n$)
l'\'ecart minimal entre 2 racines, on calcule\\
\verb|R:=normal(resultant(P,subst(P,x=x+y),x)/x^degree(P))|\\
c'est un polynôme bicarr\'e dont on cherche la plus petite racine
en calculant le carr\'e de la plus grande racine en module
de \verb|numer(subst(R,y=1/sqrt(x)))|.

On peut obtenir un minorant à priori de cette plus petit racine en calculant 
\[ 
\mbox{resultant}(P,P')= 
\pm p_n^{2n-1} \prod_{1 \leq i < j \leq n} (r_i-r_j)^2 
\]
on isole l'\'ecart minimal au carr\'e, on majore les autres carr\'es en
majorant les racines, et
on peut minorer le r\'esultant à priori par 1 si $P$ est à coefficients
entiers.

\subsection{It\'erations inverses} \index{it\'erations inverses}
La m\'ethode pr\'ec\'edente permet de calculer la valeur propre
de module maximal d'une matrice. Pour trouver une valeur
propre proche d'une quantit\'e donn\'ee $x$, on peut appliquer
la m\'ethode pr\'ec\'edente à la matrice $(A-xI)^{-1}$ (en pratique
on effectue $LU$ sur $A-xI$ et on r\'esoud $(A-xI)u_{n+1}=u_n$). En effet,
les valeurs propres de cette matrice sont les $(x_i-x)^{-1}$ dont
la norme est maximale lorsqu'on se rapproche de $x_i$. Attention
à ne pas prendre $x$ trop proche d'une valeur propre, car le calcul
de $(A-xI)u_{n+1}=u_n$ est alors peu pr\'ecis (la matrice \'etant
mal conditionn\'ee).

\subsection{Elimination des valeurs propres trouv\'ees}
Si la matrice $A$ est sym\'etrique, et
si $e_n$ est un vecteur propre norm\'e \'ecrit en colonne, on peut consid\'erer
la matrice $B=A-x_n e_n e_n^t$ qui poss\`ede les mêmes valeurs
propres et mêmes vecteurs propres que $A$ avec même multiplicit\'e, 
sauf $x_n$ qui est remplac\'e par 0. 
En effet les espaces propres de $A$ sont orthogonaux
entre eux, donc
\[ Be_n=x_ne_n -x_n e_n e_n^t e_n = 0,
Be_k = x_k e_k - x_n e_n e_n^t e_k = x_k e_k\]
On peut donc calculer
la 2\`eme valeur propre (en valeur absolue), l'\'eliminer
et ainsi de suite.

Si la matrice $A$ n'est pas sym\'etrique, il faut consid\'erer
$B=A-x_n e_n f_n^t /e_n.f_n$ o\`u $f_n$ est vecteur propre
de $A^t$ associ\'e \`a $x_n$. En effet $f_k.e_j=0$ si $i \neq j$
car $Ae_k.f_j=x_ke_k.f_j=e_k.A^tf_j=x_je_kf_j$ et donc $f_k.e_k \neq 0$
(sinon $e_k$ est dans l'orthogonal de $\R^n=$Vect$(f_1,...,f_n)$.


\subsection{D\'ecomposition de Schur}\index{Schur (factorisation)}
\index{factorisation de Schur}
Il s'agit d'une factorisation de matrice sous la forme
\[ A = P S P^{-1}\]
o\`u $P$ est unitaire et $S$ diagonale sup\'erieure.
Existence (th\'eorique)~: 
on prend une valeur propre et un vecteur propre correspondant,
puis on projette sur l'orthogonal de ce vecteur propre et on s'y
restreint, on prend \`a nouveau une valeur propre et un vecteur propre
correspondant, etc.

On peut approcher cette factorisation par un algorithme it\'eratif
qui utilise la factorisation $QR$\index{QR} d'une matrice quelconque comme
produit d'une matrice unitaire par une matrice triangulaire sup\'erieure
\`a coefficients positifs sur la diagonale. On fait l'hypoth\`ese que les
valeurs propres de $S$ sur la diagonale sont class\'ees par ordre de module 
strictement d\'ecroissant $|\lambda_1|>|\lambda_2|>...>|\lambda_n|$ 
(d\'eveloppement inspir\'e par Peter J. Olver dans le cas sym\'etrique
\verb|http://www.math.umn.edu/~olver/aims_/qr.pdf|). On peut toujours
s'y ramener quitte à remplacer $A$ par $A- \alpha I$.
Posons $A_1=A$, et par r\'ecurrence $A_n=Q_nR_n$ (avec $Q_n$ unitaire et $R$
triangulaire sup\'erieure à coefficients diagonaux positifs), 
$A_{n+1}=R_nQ_n$. On a alors
\begin{eqnarray*}
 A^k  
& = & (Q_1 R_1) (Q_1 R_1) (Q_1 R_1) ... (Q_1 R_1) (Q_1 R_1) \\
& = & Q_1 (R_1 Q_1) (R_1 Q_1) (R_1 ... Q_1) (R_1 Q_1) R_1 \\
& = & Q_1 (Q_2 R_2) (Q_2 R_2) .. (Q_2 R_2) R_1 \\
& = & Q_1 Q_2 (R_2 Q_2) R_2 .. Q_2 R_2 R_1 \\
& = & Q_1 Q_2 (Q_3 R_3) ... Q_3 R_3 R_2 R_1 \\
& = & Q_1 ... Q_k R_k ...R_1
\end{eqnarray*}
D'autre part $A=PSP^{-1}$ donc $A^k = P S^k P^{-1}$. Soit $D$ la forme diagonale
de $S$ et $U$ la matrice de passage $S=UDU^{-1}$, où $U$ est triangulaire sup\'erieure
et où on choisit la normalisation des coefficients sur la diagonale de $U$ valant 1.
On a donc 
\[ A^k = P U D^{k} U^{-1} P^{-1} \]
Ensuite, on suppose
qu'on peut factoriser $U^{-1}P^{-1}=L\tilde{U}$ sans permutations, donc
qu'on ne rencontre pas de pivot nul, et quitte \`a multiplier 
les vecteurs unitaires de $P^{-1}$ par une constante complexe de module 1
on peut supposer que les pivots sont positifs donc que $\tilde{U}$ a
des coefficients positifs sur la diagonale, on a alors
\[ A^k = P U D^k L \tilde{U} = Q_1 ... Q_k R_k ...R_1 \]
puis en multipliant par $\tilde{U}^{-1} |D|^{-k}$
\[ P U D^k L |D|^{-k} =  Q_1 ... Q_k R_k ...R_1 \tilde{U}^{-1} |D|^{-k} \]
o\`u $R_k ...R_1 \tilde{U}^{-1} |D|^{-k}$ est triangulaire sup\'erieure à coefficients positifs
sur la diagonale et $Q_1 ... Q_k$ est unitaire. On regarde ensuite les entr\'ees 
de la matrice $D^k L |D|^{-k}$, sous la diagonale elles convergent (g\'eom\'etriquement) vers 0,
donc $UD^k L |D|^{-k}$ tend vers une matrice triangulaire sup\'erieure
dont les coefficients diagonaux valent $e^{i k\arg(\lambda_j)}$. On montre que cela
entraine que $Q_1 ... Q_k $ est \'equivalent à $P(D/|D|)^k$
\[ Q_1 ... Q_k \approx P (D/|D|)^{k}, \quad  
R_k ...R_1 \tilde{U}^{-1} |D|^{-k} \approx (D/|D|)^{-k} UD^k L |D|^{-k} \]
Donc, $Q_k$ tend à devenir diagonale, et $R_k Q_k=A_{k+1}$ triangulaire sup\'erieure. De plus
\[ A=Q_1 A_2 Q_1^{-1} = ... = Q_1 ... Q_k A_{k+1} (Q_1 ... Q_k)^{-1} \]
la matrice $A_{k+1}$ est donc semblable à $A$.

En pratique, on n'impose pas la positivit\'e des coefficients diagonaux de $R$
dans la factorisation $QR$, ce qui ne change
\'evidemment pas le fait que $Q_k$ s'approche d'une matrice diagonale et $A_k$ d'une matrice
triangulaire sup\'erieure (avec convergence à vitesse g\'eom\'etrique).
On commence aussi par mettre la matrice $A$ sous forme de Hessenberg
(par conjugaison par des matrices de Householder),
c'est-\`a-dire presque triangulaire sup\'erieure (on autorise des
coefficients non nuls dans la partie inf\'erieure seulement sur la sous-diagonale, 
$a_{ij}=0$ si $i>j+1$). Cela r\'eduit consid\'erablement le temps de calcul de la
d\'ecomposition $QR$, le produit $RQ$ ayant encore cette
propri\'et\'e,  une it\'eration se fait en temps $O(n^2)$ au lieu de
$O(n^3)$. Le calcul de $RQ$ \`a partir de $A$ est d'ailleurs fait directement,
on parle d'it\'eration $QR$ implicite.

On utilise aussi des ``shifts'' pour acc\'elerer la convergence, c'est-à-dire qu'au lieu
de faire $QR$ et $RQ$ sur la matrice $A_k$ on le fait sur $A_k - \alpha_k I$ où
$\lambda_k$ est choisi pour acc\'elerer la convergence vers 0 du coefficient d'indice
ligne $n$ colonne $n-1$ (id\'ealement il faut prendre $\alpha_k$ proche de $\lambda_n$ la
valeur propre de module minimal, afin de minimiser 
$|\lambda_n-\alpha_k|/|\lambda_{n-1}-\alpha_k|$). 
En effet, si $A_k - \lambda_k I = Q_k R_k$ et $A_{k+1}=R_kQ_k+\lambda_k I$ alors~:
\begin{eqnarray*}
 (A-\alpha_1 I) ... (A-\alpha_k I) &= &
Q_1R_1(Q_1R_1-(\alpha_2-\alpha_1)I) ...(Q_1R_1-(\alpha_k-\alpha_1)I)
\\ &=& Q_1 (R_1Q_1 - (\alpha_2-\alpha_1)I)R_1 
(Q_1R_1-(\alpha_3-\alpha_1)I) ...(Q_1R_1-(\alpha_k-\alpha_1)I)
\\ &=& Q_1 (A_2 - \alpha_1 I -(\alpha_2-\alpha_1)I) R_1 
Q_1(R_1Q_1-(\alpha_3-\alpha_1)I) R_1...(Q_1R_1-(\alpha_k-\alpha_1)I)
\\ &=& Q_1 (A_2 - \alpha_2 I) (A_2 - \alpha_3 I) ... (A_2 - \alpha_{k}I) R_1
\\ &=& ...
\\&=&Q_1 ... Q_k R_k ...R_1
\end{eqnarray*}
On peut aussi \'eliminer la derni\`ere
ligne et la derni\`ere colonne de la matrice pour acc\'elerer les calculs d\`es que le coefficient
en ligne $n$ colonne $n-1$ est suffisamment petit.

On remarque que pour une matrice r\'eelle si on choisit des shifts conjugu\'es,
alors $Q_1...Q_k R_k...R_1$ est r\'eel. Or si $QR=\overline{Q}\overline{R}$
et si $R$ est inversible
\[ \overline{Q}^{-1} Q = \overline{R} R^{-1} \]
On a donc une matrice sym\'etrique (car $\overline{Q}^{-1}=Q^t$) 
et triangulaire sup\'erieure. On en d\'eduit que
$\overline{Q}^{-1} Q=D$ est diagonale, donc $Q=\overline{Q} D$. On peut
donc rendre $Q$ r\'eelle en divisant chaque colonne par un $e^{i\theta}$, et
rendre $R$ r\'eelle en conjuguant par la matrice $D$.
Mais ce proc\'ed\'e de retour au r\'eel apr\`es \'elimination de 2 valeurs propres
complexes conjugu\'ees d'une matrice r\'eelle
se heurte à un probl\`eme de conditionnement parce que le choix d'un shift
int\'eressant pour la convergence va rendre la matrice $R$ proche d'une matrice non
inversible (les deux derniers coefficients diagonaux de $R$ sont proches de 0).
On a alors seulement
\[ \overline{Q}^{-1} Q R = \overline{R} \]
Si on d\'ecompose $\overline{Q}^{-1} Q$, $R$, $\overline{R}$ par blocs 
$n-2,n-2$, $n-2,2$, $2,n-2$ et $2,2$, on a
\begin{eqnarray*}
\left(\begin{array}{cc}
QQ_{11} & QQ_{12} \\
QQ_{21} & QQ_{22} 
\end{array} \right)
\left(\begin{array}{cc}
R_{11} & R_{12} \\
0 & R_{22} 
\end{array} \right)
&=& \left(\begin{array}{cc}
QQ_{11} R_{11} & QQ_{21}R_{11} \\
QQ_{11} R_{12} + QQ_{12} R_{22} & QQ_{21} R_{12} + QQ_{22} R_{22} 
\end{array} \right)  \\
&=&
\left(\begin{array}{cc}
\overline{R}_{11} & \overline{R}_{12} \\
0 & \overline{R}_{22} 
\end{array} \right)
\end{eqnarray*}
Donc on a $QQ_{11} =\overline{R}_{11} R_{11}^{-1}$.
Comme $Q$ est unitaire, $QQ=\overline{Q}^{-1} Q=Q^t \, Q$ est sym\'etrique, donc
$QQ_{11}$ est diagonale puisque sym\'etrique et triangulaire sup\'erieure. On peut donc
ramener $Q_{11}$ et $R_{11}$ en des matrices r\'eelles.
L'algorihtme des it\'erations $QR$ implicites traite de mani\`ere
efficace le cas des
couples de valeurs propres complexes conjugu\'ees ou plus
g\'en\'eralement de clusters de valeurs propres, c'est l'algorithme
de Francis (aussi appel\'e {\em bulge chasing} en anglais, qu'on
pourrait traduire par ``\`a la poursuite du bourrelet'', cela vient
de la forme que prend la matrice apr\`es application d'un shift,
elle a des entr\'ees non nulles en premi\`ere colonne plus bas
que la sous-diagonale qui forment un bourrelet non nul, 
l'annulation de ces entr\'ees par des transformations de Householder
d\'eplace le bourrelet sur la colonne suivante).

Revenons à la localisation des valeurs propres (une autre approche 
consiste à rechercher un rectangle du plan complexe stable par it\'er\'ee
de la m\'ethode de Newton).
On suppose qu'on a maintenant une matrice
unitaire $P$ et une matrice triangulaire sup\'erieure $S$
(aux erreurs d'arrondi pr\`es) telles que
\[ P^{-1} A P = S \]
Que peut-on en d\'eduire~?
On va d'abord arrondir $P$ en une matrice exacte à coefficients rationnels, dont les d\'enominateurs
sont une puissance de 2 (en fait c'est exactement ce que donne l'\'ecriture d'un flottant
en base 2, une fois ramen\'e tous les exposants à la même valeur). On a donc une matrice
$P_e$ presque unitaire exacte et telle que
\[ S_e = P_e^{-1} A P_e  \]
est semblable à $A$, et presque triangulaire sup\'erieure.
(comme $P_e$ est presque unitaire, sa norme et la norme de son inverse
sont proches de 1 donc $S_e$ est proche de $S$, les coefficients de $S_e$
sont de la même taille que les coefficients de $A$~: le changement de base est bien
conditionn\'e et c'est la raison pour laquelle on a choisi d'effectuer des 
transformations unitaires). 

Notons $\mu_1, ..., \mu_n$ les coefficients
diagonaux de $S_e$, soit $\varepsilon$ un majorant de la norme des coefficients
sous-diagonaux de $S_e$, et soit $\delta$ un minorant de l'\'ecart entre 2 $\mu_j$ distincts.
On a donc $S_e=U+E$ où $U$ est triangulaire sup\'erieure, $E$ est triangulaire inf\'erieure
avec des 0 sous la diagonale et des coefficients de module major\'es par $\varepsilon$.
Si $\varepsilon$ est suffisamment petit devant $\delta$, on va montrer qu'on peut
localiser les valeurs propres de $S_e$ (qui sont celles de $A$) au moyen des $\mu_j$.

En effet, fixons $j$ et soit $C$ un cercle de centre $\mu=\mu_j$ et de rayon 
$\alpha \leq \delta/2$. 
Si $A$ est une matrice diagonalisable, on sait que
\[ \mbox{nombre de valeurs propres} \in C =  \frac{1}{2i\pi}  \mbox{trace} \int_C (A-zI)^{-1} \]
En prenant $A=S_e$, et en \'ecrivant
\[ (S_e-zI)^{-1} = (U-zI+E)^{-1} = ( I + (U-zI)^{-1}E)^{-1}(U-zI)^{-1}  \]
on d\'eveloppe le second terme si la norme de $(U-zI)^{-1}E$ est strictement inf\'erieure à 1
\[ (S_e-zI)^{-1} = (U-zI)^{-1} -(U-zI)^{-1}E(U-zI)^{-1} + (U-zI)^{-1}E(U-zI)^{-1}E(U-zI)^{-1} + ...\]
puis on calcule la trace
\[ \mbox{trace}(S_e-zI)^{-1} = \sum_j (\mu_j-z)^{-1} + \eta \]
avec
\[ |\eta| \leq 2\pi \alpha || (U-zI)^{-1} || \frac{|| (U-zI)^{-1}E ||}{1-|| (U-zI)^{-1}E ||}\]
Au final, le nombre de valeurs propres dans $C$ est donn\'e par
\[ 1 + \tilde{\eta}, \quad |\tilde{\eta}| \leq 
\alpha \mbox{max}_{z \in C} || (U-zI)^{-1} || \frac{|| (U-zI)^{-1}E ||}{1-|| (U-zI)^{-1}E ||} \]
Il suffit donc que le max soit plus petit que 1 pour avoir l'existence d'une valeur
propre et une seule de $S_e$ dans le cercle $C$ (à distance au plus $\alpha$ de $\mu$).
Ce sera le cas si
\[ \varepsilon \leq \frac{1}{2} \left( \frac{\delta}{2 ||S_e||} \right)^{n-1} 
\frac{\alpha}{\sqrt{n-1}}\]
on choisit donc $\alpha$ pour r\'ealiser l'\'egalit\'e ci-dessus,
sous r\'eserve que $\delta$ ne soit pas trop petit, rappelons que $\alpha$ doit être
plus petit ou \'egal à $\delta/2$. Si $\delta$ est petit, il peut être n\'ecessaire
d'utiliser une pr\'ecision plus grande pour les calculs de la d\'ecomposition de Schur
en arithm\'etique flottante.

Typiquement, on peut esp\'erer (pour un \'ecart $\delta$ pas trop petit) pouvoir
localiser les racines d'un polynôme de degr\'e $n$ par cette m\'ethode avec pr\'ecision
$b$ bits en $O(n^3 b^2 + n^2 b^3)$ op\'erations pour le calcul de la d\'ecomposition
de Schur en flottant ($n^3b^2$ pour Hessenberg initial puis $n^2b^2$ par it\'eration
et un nombre d'it\'erations proportionnel à $b$). 
Pour le calcul exact de $S_e$, il faut inverser une matrice
de taille $n$ avec des coefficients de taille proportionnelle à $b$ donc $O(n^4b\ln(n))$
op\'erations (en modulaire, la taille des coefficients de l'inverse est $O(nb \ln(n))$)
puis calculer un produit avec une matrice $n,n$ de coefficients de taille
proportionnelle à $b$, soit $O(n^4b^2\ln(nb))$ op\'erations. Asymptotiquement,
on peut faire mieux avec des m\'ethodes de multiplication et d'op\'erations matricielles
par blocs. Pour \'eviter la perte d'un facteur $n$, 
on peut aussi ne pas faire de calculs en mode exact et controler
les erreurs sur la matrice $S$.
On peut regrouper les valeurs propres par ``clusters'' si elles sont trop
proches à la pr\'ecision de $b$ bits. Pour la recherche des racines
d'un polynôme $P$, on peut montrer, en calculant le r\'esultant de $P$
et de $P'$ qui est en module plus grand ou \'egal à 1, et en l'\'ecrivant
comme produit des carr\'es de diff\'erences des racines, et en majorant toutes
les diff\'erences de racine sauf une à l'aide de la norme infinie
de $P$, qu'il faut au pire $b=O(n)$ bits pour s\'eparer les racines).

%\section{Optimisation}

\pagebreak

\section{Equations différentielles (résolution numérique)}
\subsection{Méthodes à un pas}
On considère l'équation différentielle 
$$y'=f(t,y), \quad t \in \R, \quad y(t) \in \R^d, y(0)=y_0$$ 
o\`u $y(t)$ est la fonction inconnue cherchée
et où $f$ est une fonction régulière de $t$ et $y$ (par exemple
$C^1$ sur un domaine pour avoir existence et non recoupement des courbes
int\'egrales dans ce domaine).  On cherche
à approcher numériquement $y(t)$ pour $t>0$. 
On présente ici des méthodes de résolution numérique à un pas,
dont le principe consiste à discrétiser l'intervalle $[0,t]$ en des
subdivisions en temps de petite taille $[0,t_1], [t_1,t_2], ..., 
[t_{n-1},t_n=t]$. Si $y_i$ est une valeur approchée de $y(t_i)$
la méthode à un pas se traduit par une relation de récurrence entre
$y_i$ et $y_{i+1}$ qui reflète une méthode d'intégration
approchée de
$$ y(t_{i+1})=y(t_i)+\int_{t_i}^{t_{i+1}} f(t,y(t)) \ dt$$
Par exemple, la méthode d'Euler explicite\index{Euler, m\'ethode d'} 
utilise la méthode des
rectangles à gauche
$$ y_{i+1} = y_i + (t_{i+1}-t_i) f(t_i,y_i)=y_i+hf(t_i,y_i)$$
o\`u $h=t_{i+1}-t_i$ (pour une m\'ethode \`a pas variable,
le pas $h$ peut d\'ependre de $i$) 
alors que la méthode d'Euler implicite utilise la méthode 
des rectangles à droite
$$ y_{i+1} = y_i + (t_{i+1}-t_i) f(t_{i+1},y_{i+1})=y_i+hf(t_{i}+h,y_{i+1})$$
cette dernière relation nécéssite de résoudre une équation pour
déterminer $y_{i+1}$ d'où son nom de méthode implicite.
Plus g\'en\'eralement, la m\'ethode de r\'esolution revient \`a
se donner une fonction $\Phi(t,y,h)$ et \`a poser~:
$$ y_{i+1}=y_i+h\Phi(t_i,y_i,h)$$
pour la m\'ethode d'Euler explicite, $\Phi(t,y,h)=f(t,y)$, pour
la m\'ethode d'Euler implicite, $\Phi$ s'obtient en r\'esolvant une 
\'equation (par exemple avec la m\'ethode du point fixe, pour $h$
suffisamment petit).

Lorsqu'on compare la solution de l'équation et une valeur
approchée obtenue par une méthode à un pas, il faut distinguer 
\begin{itemize}
\item l'erreur locale (ou erreur de consistance)
de la méthode qui est une majoration
de $|y_1-y(t_1)|$ en fonction du pas $h=t_1-t_0$, on dit 
qu'une méthode est d'ordre au moins $n$ si $|y_1-y(t_1)|\leq
C_n h^{n+1}$ (cette notion est reli\'ee \`a l'ordre
de la m\'ethode num\'erique d'int\'egration approch\'ee utilis\'ee).
\item l'erreur globale de la méthode, qui accumule deux phénomènes,
l'erreur locale à chaque pas et l'erreur sur la condition initiale
pour les subdivisions $[t_i,t_{i+1}], i>0,$ cons\'equence des erreurs
pr\'ec\'edentes (en pratique il faudrait aussi ajouter les erreurs
d'arrondis et l'erreur
\'eventuelle sur la condition initiale). Pour majorer cette erreur,
il est nécessaire de supposer que la fonction $f$ est lipschitzienne
par rapport à la variable $y$, l'erreur globale fera alors intervenir
un terme en $e^{Ct}$ multiplié par l'erreur locale
(accumulation exponentielle des erreurs au cours du temps).
\end{itemize}
Plus pr\'ecis\'ement, on a le r\'esultat suivant~:
\begin{thm}
Soit $y(t)$ la solution de $y'=f(t,y), y(t_0)=y_0$ sur $[t_0,T]$.
On consid\'ere une m\'ethode de r\'esolution \`a un pas~:
$$ y_{i+1}=y_i+h_i\Phi(t_i,y_i,h_i)$$ 
Si la m\'ethode est d'ordre $p$, i.e. si pour $h=max(h_i)$ 
l'erreur locale satisfait 
$$|y(t) + h\Phi(t,y(t),h)-y(t+h)|\leq C_p h^{p+1}, \ quad \forall t \in [t_0,T], h \leq H $$ 
et si la fonction $\Phi$ est 
lipschitzienne en $y$ de constante $\Lambda$ pour $h\leq H$ et $y$ dans un 
voisinage de la solution $y(t)$, 
i.e. si
$$ |\Phi(t,z,h)-\Phi(t,y,h)| \leq \Lambda |z-y| $$
alors l'erreur globale v\'erifie
$$ |y(t_n)-y_n| \leq h^p \frac{C_p}{\Lambda}
(e^{\Lambda(t_n-t_0)}-1)$$
\end{thm}
Par exemple, pour Euler explicite, $\Phi(t,y,h)=f(t,y)$, la constante
$\Lambda$ est la constante de Lipschitz de $f$, et on prendra pour
$C_1$ un majorant de $\frac12|\partial_y f(t,y)|$ dans un voisinage de la
solution $y(t)$ pour $t \in [t_0,t_n]$.

Pour prouver ce r\'esultat, il faut d\'eterminer comment se propagent
les erreurs locales introduites \`a chaque pas.
Par exemple, on a une erreur locale au pas 1 $y(t_1)-y_1$ donc une
condition initiale modifi\'ee pour le pas 2 $y_1$ au lieu de $y(t_1)$.
Cette erreur se propage au pas 2 en une erreur 
$$| y_1-y(t_1)+h_1(\Phi(t_1,y_1,h_1)-\Phi(t_1,y(t_1),h_1)| 
\leq (1+h_1 \Lambda)|y_1-y(t_1)| \leq e^{h_1 \Lambda} |y_1-y(t_1)|$$
De m\^eme aux pas suivants, donc au pas $n$ l'erreur locale au pas 1
s'est propag\'ee en une erreur inf\'erieure ou \'egale \`a~
$$ e^{h_{n-1} \Lambda}... e^{h_2 \Lambda} e^{h_1 \Lambda} |y_1-y(t_1)|
= e^{\Lambda (t_n-t_0)} |y_1-y(t_1)| \leq C_ph_0^{p+1} e^{\Lambda (t_n-t_0)}$$
Il faut ensuite sommer les erreurs locales propag\'ees de chaque pas
$$ \sum_{i=0}^{n-1} C_p h_i^{p+1} e^{\Lambda (t_n-t_i)} 
\leq C_p h^p \sum_{i=0}^{n-1} h_i e^{\Lambda (t_n-t_i)} $$
Comme $e^{\Lambda(t_n-t)}$ est positive d\'ecroissante sur
$[t_0,t_n]$, on peut majorer la somme par l'int\'egrale
$$ C_p h^p \int_{t_0}^{t_n} e^{\Lambda (t_n-t)} \ dt $$
d'o\`u le r\'esultat.

(Voir aussi Demailly ou Hairer)

\subsection{Méthodes de Runge-Kutta (explicites)}\index{Runge-Kutta}
Ce sont des méthodes explicites qui 
utilisent une méthode de Newton-Cotes pour approcher
$\int f(t,y(t)) \ dt$ sur $[t_i,t_{i+1}]$.
Pour simplifier les notations, notons $t_i=\alpha, t_{i+1}=\beta$,
on a alors
$$ \int_{\alpha}^{\beta} f(t,y(t)) 
\equiv \sum_{k=0}^N \omega_k f(\alpha_k,y(\alpha_k)))$$
Pour estimer la valeur de $f(\alpha_k,y(\alpha_k))$, il est nécessaire
d'approcher $y(\alpha_k)$ ce qui se fait par une méthode
de Newton-Cotes, en utilisant les estimations des
valeurs des $y(\alpha_j), j<k$. On a 
donc des méthodes de Newton-Cotes avec un sous-ensemble croissant
de points d'interpolation, donc pour chaque valeur de $k$ une
suite de coefficients $\omega_{j,k}, j<k$ correspondant \`a la
m\'ethode de Newton-Cotes utilis\'ee. Il faut aussi indiquer la valeur de
$\alpha_k$ en donnant un coefficient $c_k \in [0,1]$ tel que
$$ \alpha_k = t_i + c_k (t_{i+1}-t_i) = t_i+c_k h$$

En pratique on stocke un tableau dont les lignes donnent $c_k$ et les $c_k\omega_{j,k}, j<k$,
et le calcul de $y(\alpha_k)$ se fait ligne par ligne
$$ y(\alpha_{k}) \approx Y_{k}=y(\alpha_0) +
 h \sum_{j=0}^{k-1} c_k\omega_{j,k} f(\alpha_j,y(\alpha_j)) $$.
Par exemple pour la m\'ethode d'Euler explicite, il y a deux lignes
contenant 0 et un seul coefficient~:
$$ \begin{array}{ccc}
0 &:&  \\
1 &:& 1
\end{array}
$$.
Pour la m\'ethode du point milieu, il y a trois lignes, la deuxi\`ere
ligne exprime comment on estime $y(t_i+h/2)$, la troisi\`eme
$y(t_{i+1})=y(t_i+h)$~:
$$ \begin{array}{cccc}
0 & : &  \\
  \frac12 & : & \frac12 \\
1 & : & 0 & 1
\end{array}
$$
on a donc 
$$y(t_i+\frac12h) \approx Y_1=y(t_i)+\frac12hf(t_i,y(t_i))$$
$$y(t_i+h) \approx Y_2=y(t_i)+hf(t_i+\frac{h}{2},Y_1)=y(t_i)+hf(t_i+\frac{h}{2},y(t_i)+\frac{h}{2}f(t_i,y(t_i)))$$

La suite des temps $\alpha_k$ est croissante, mais pas forcément
de manière stricte, on peut avoir $\alpha_k=\alpha_{k+1}$, la valeur
de $y(\alpha_k)$ n'étant pas estimée par la même méthode de Newton-Cotes
que $y(\alpha_{k+1})$.
La valeur des coefficients est ensuite déterminée pour obtenir un ordre
le plus grand possible pour l'erreur locale (ce qui peut nécessiter
la résolution de systèmes avec pas mal d'inconnues).

Ainsi, la méthode RK4 utilise le tableau suivant
$$
\begin{array}{cccccc}
0 & : & \\
\frac12 & : & \frac12 \\
\frac12 & : & 0 & \frac12 \\
1 & : & 0 & 0 & 1 \\
1 & : & \frac16 & \frac13 & \frac13 & \frac16
\end{array}
$$
Ce qui se traduit par
\begin{eqnarray*}
 Y_1&=&y(t_0)+\frac{h}{2}f(t_0,y_0) \\
Y_2&=&y(t_0)+\frac{h}{2}f(t_0+\frac{h}{2},Y_1) \\
Y_3 &=& y(t_0)+h f(t_0+h,Y_2) \\
Y_4 &=& y(t_0) + \frac{h}{6} \left(f(t_0,y(t_0))+
  2f(t_0+\frac{h}{2},Y_1)+2f(t_0+\frac{h}{2},Y_2)+f(t_0+h,Y_3)\right)
\end{eqnarray*}
Les m\'ethodes de Newton-Cotes utilis\'ees sont les rectangles \`a
gauche puis \`a droite pour estimer le point milieu, et la m\'ethode
de Simpson (en prenant la moyenne des deux estimations pour le
point milieu).
On peut montrer qu'elle est d'ordre 4 (erreur locale en $O(h^5)$)

Les méthodes de résolution numériques implémentées dans Xcas sont
des méthodes explicites de Runge-Kutta emboitées avec pas adaptatif, 
(le pas adaptatif est calcul\'e en estimant l'erreur 
avec 2 méthodes emboitées RK4 et
Prince-Dormand, cf. Hairer).

\section{Quelques r\'ef\'erences}
\begin{itemize}
\item Les polycopi\'es du cours d'Ernst Hairer,
\verb|http://www.unige.ch/%7Ehairer/polycop.html|
\item Analyse num\'erique et \'equations diff\'erentielles, Demailly J.-P., 
Presses Universitaires de Grenoble, 1996
\item Introduction à l'analyse num\'erique matricielle et à
  l'optimisation, Ciarlet P.
\item The Art of Computer Programming, Vol. 2: Seminumerical
  algorithms, Knuth D., Addison-Wesley, 1998
\item Handbook of Mathematical Functions, Abramowitz and Stegun,
disponible en ligne sur \\
\verb|http://www.math.sfu.ca/~cbm/aands/toc.htm|
\item Arithm\'etique flottante,
Rapport de l'INRIA de V. Lef\`evre et P. Zimmermann,
t\'el\'echargeable sur\\
\verb|http://www.inria.fr/rrrt/rr-5105.html|
\item Matrix computations, Golub and Loa, Hopkins University Press, 1989
%\item Gantmacher
%\item Math\'ematiques concr\`etes, illustr\'ees par la TI-92 et la TI-89.
%Lemberg H, et Ferrard J.-M., Springer, 1998
%\item Maths et Maple, J.M. Ferrard, Dunod, 1998
\end{itemize}

\pagebreak

\printindex

\pagebreak

\appendix
\section{D\'eveloppement de Taylor, s\'eries enti\`eres, fonctions usuelles}
R\'esum\'e: S\'eries enti\`eres. Calcul des fonctions
transcendantes usuelles. 

Soit $f$ une fonction ind\'efiniment d\'erivable sur un intervalle $I$ de $\R$
et $x_0 \in I$. On peut alors effectuer le d\'eveloppement de Taylor de $f$
en $x_0$ à l'ordre $n$\index{Taylor}
\[ T_n(f)(x)= f(x_0) + (x-x_0) f'(x_0) + ... + 
(x-x_0)^n \frac{f^{[n]}(x_0)}{n!} \]
et se demander si $T_n(f)$ converge lorsque $n$ tend vers
l'infini, si la limite est \'egale à $f(x)$ et si on peut facilement
majorer la diff\'erence entre $f(x)$ et $T_n(f)(x)$. Si c'est le
cas, on pourra utiliser $T_n(f)(x)$ comme valeur approch\'ee de $f(x)$.

On peut parfois r\'epondre à ces questions simultan\'ement en regardant le
d\'eveloppement de Taylor de $f$ avec reste~: il existe $\theta$ compris
entre $x_0$ et $x$ tel que
\[ R_n(x) := f(x)- T_n(f)(x) = (x-x_0)^{n+1}\frac{f^{[n+1]}(\theta)}{(n+1)!} \]
C'est le cas pour la fonction exponentielle que nous allons
d\'etailler, ainsi que les fonctions sinus et cosinus.

\subsection{La fonction exponentielle}\index{exp}
Soit $f(x)=\exp(x)$ et $x_0=0$, la d\'eriv\'ee $n$-i\`eme de $f$ 
est $\exp(x)$, donc $R_n(x)=\exp(\theta)x^{n+1}/(n+1)!$ avec $\theta$
compris entre 0 et $x$, ainsi si $x$ est positif 
$|R_n(x)| \leq e^x x^{n+1}/(n+1)!$ et si $x$ est n\'egatif,
$|R_n(x)| \leq x^{n+1}/(n+1)!$. Dans les deux cas, la limite de $R_n$
est 0 lorsque $n$ tend vers l'infini, car pour $n \geq 2x$, on a
\[ \frac{x^{n+1}}{(n+1)!} = \frac{x^n}{n!} \frac{x}{n+1}\leq 
\frac{1}{2}\frac{x^n}{n!}\]
on a donc pour tout $x$ r\'eel
\[ e^x = \lim_{n \rightarrow +\infty} T_n(f)(x)
= \lim_{n \rightarrow +\infty} \sum_{k=0}^n \frac{x^k}{k!}
= \sum_{k=0}^\infty \frac{x^k}{k!} \]

Comment en d\'eduire une valeur approch\'ee de $e^x$? Il suffira d'arr\^eter
la sommation lorsque $R:=x^{n+1}/(n+1)!$ si $x<0$ ou lorsque
$R:=e^x x^{n+1}/(n+1)!$ si $x>0$ est inf\'erieur à 
l'erreur absolue souhait\'ee, le plus tôt \'etant le mieux pour des
raisons d'efficacit\'e et pour \'eviter l'accumulation d'erreurs
d'arrondi. 
Si on veut connaitre $e^x$ à une erreur relative $\varepsilon$ donn\'ee
(par exemple $\varepsilon=2^{-53}$ pour stocker le r\'esultat dans un double)
il suffit que $R/e^x < \varepsilon$, donc si $x$ est positif, il suffit
que $x^{n+1}/(n+1)!<\varepsilon$, on peut donc arrêter la sommation
lorsque le terme suivant est plus petit que $\varepsilon$.

On observe que plus $x$ est grand, plus $n$ devra
être grand pour r\'ealiser le test d'arrêt, ce qui est facheux
pour le temps de calcul.
De plus, le r\'esultat final peut être petit alors que les termes
interm\'ediaires calcul\'es dans la somme peuvent être grands, ce qui
provoque une perte de pr\'ecision relative, par exemple si on
veut calculer $e^{-10}$ ou plus g\'en\'eralement l'exponentielle
d'un nombre n\'egatif de grande valeur absolue.

Exercice~: combien de termes faut-il calculer dans le d\'eveloppement
de l'exponentielle de -10 pour que le reste soit plus petit
que $2^{-53}$~? Quel est la valeur du plus grand terme rencontr\'e dans
la suite~? Quelle est la perte de pr\'ecision relative occasionn\'e
par cette m\'ethode de calcul~?

On peut utiliser les propri\'et\'es de la fonction exponentielle
pour \'eviter ce probl\`eme. Pour les nombres n\'egatifs, on peut
utiliser l'\'equation $e^{-x}=1/e^x$ (ne change pas l'erreur relative). 
Pour les grands r\'eels, on peut utiliser $e^{2x}=(e^x)^2$
(multiplie par 2 l'erreur relative).
On peut aussi, si on connait une valeur approch\'ee
de $\ln(2)$, effectuer la division euclidienne de $x$ par $\ln(2)$ 
avec reste sym\'etrique~:
\[ x = a \ln(2) + r, \quad a \in \Z, |r| \leq \frac{ln(2)}{2} \]
puis si $r$ est positif, on somme la s\'erie de $T(f)(r)$, si $r$
est n\'egatif, on calcule $T(f)(-r)$ et on inverse, on applique alors~:
\[ e^x = 2^a e^r \]

Il faut toutefois noter que $\ln(2)$ n'\'etant pas connu exactement,
on commet une erreur d'arrondi absolu sur $r$ d'ordre $a \eta$,
où $\eta$ est l'erreur relative sur $\ln(2)$,
il faut donc ajouter une erreur d'arrondi relative de $x/\ln(2) \eta$
qui peut devenir grande si $x$ est grand. Puis il faut ajouter
la somme des erreurs d'arrondi due au calcul de $e^r$, que l'on
peut minimiser en utilisant la m\'ethode de Horner pour \'evaluer
$T_n(f)(r)$ (car elle commence par sommer les termes de plus haut degr\'e
qui sont justement les plus petits termes de la somme). 
Les coprocesseurs arithm\'etiques qui impl\'ementent la fonction exponentielle
ont un format de repr\'esentation interne des double avec une mantisse
plus grande que celle des double (par exemple 64 bits au lieu de 53),
et une table contenant des constantes dont $\ln(2)$ avec cette pr\'ecision,
le calcul de $e^x$ par cette m\'ethode entraine donc seulement une erreur
relative d'arrondi au plus proche sur le r\'esultat converti en double 
(donc de $2^{-53}$).

Notons que en g\'en\'eral $x$ lui-même
a d\'ejà \'et\'e arrondi ou n'est connu qu'avec une pr\'ecision relative.
Or si $x>0$ est connu avec une erreur relative de $\varepsilon$
(donc une erreur absolue de $\varepsilon |x|$, alors
\[ e^{x+\varepsilon |x|}= e^x e^{\varepsilon |x|} \]
donc on ne peut pas esp\'erer mieux qu'une erreur relative de 
$e^{\varepsilon |x|}-1$ sur l'exponentielle de $x$. Si $\varepsilon x$ est petit
cette erreur relative (impossible à \'eviter, quel que soit
l'algorithme utilis\'e pour calculer l'exponentielle) 
est d'ordre $\varepsilon |x|$. Si $\varepsilon x$ est 
grand alors l'erreur relative devient de l'ordre de 1, et la valeur
de l'exponentielle calcul\'ee peut être tr\`es \'eloign\'ee de la valeur
r\'eelle! Notons que pour les double, il y aura dans ce cas d\'ebordement 
soit vers l'infini soit vers 0
(par exemple si $x$ est sup\'erieur à 709, l'exponentielle renvoie infini).

Exercice~: refaire les mêmes calculs pour les fonction sinus ou cosinus.
On utilise par exemple $\sin(x+\pi)=-sin(x)$, $\sin(-x)=-\sin(x)$,
$\sin(x)=\cos(\pi/2-x)$ pour se ramener au calcul de $\sin(x)$ 
ou de $\cos(x)$ sur $[0,\pi/4]$.\index{sin}\index{cos}
\[ \sin(x)=\sum_{n=0}^\infty (-1)^n \frac{x^{2n+1}}{(2n+1)!},
\quad \cos(x)=\sum_{n=0}^\infty (-1)^n \frac{x^{2n}}{(2n)!} \]

Cette m\'ethode a toutefois ces limites, car il peut devenir impraticable
de calculer la d\'eriv\'ee $n$-i\`eme d'une fonction (par exemple avec $\tan(x)$),
et encore plus de la majorer. D'où l'int\'erêt de d\'evelopper une th\'eorie
des fonctions qui sont \'egales à leur d\'eveloppement de Taylor à l'infini
d'une part, et d'avoir d'autres m\'ethodes pour majorer le reste, nous
pr\'esentons ici le cas des s\'eries altern\'ees.

\subsection{S\'eries enti\`eres.}\index{serie entiere}
Les s\'eries de type prendre la limite lorsque $n$ tend vers
l'infini du d\'eveloppement de Taylor en x=0 sont de la forme
\[ \sum_{n=0}^\infty a_n x^n := \lim_{ k \rightarrow +\infty} 
\sum_{n=0}^k a_n x^n, a_n=\frac{f^{[n]}(0)}{n!}
\]
On peut s'int\'eresser plus g\'en\'eralement à $\sum_{n=0}^\infty a_n x^n$
lorsque $a_n$ est un complexe quelconque, 
c'est ce qu'on appelle une s\'erie enti\`ere, on peut aussi les voir comme
des polynômes g\'en\'eralis\'es. 

S'il existe un point $x_0$ tel que 
$|a_n x_0^n|$ est born\'e (ce sera le cas en particulier 
si la s\'erie converge en $x_0$), alors
\[ |a_n x^n| = |a_n x_0^n| |\frac{x}{x_0}|^n \leq 
M |\frac{x}{x_0}|^n
\]
la s\'erie converge donc en $x$ si $|x|<|x_0|$ et on 
peut majorer le reste de la s\'erie au rang $n$ par 
\[ |R_n| \leq M \frac{ |\frac{x}{x_0}|^{n+1}} {1-|\frac{x}{x_0}|} 
\]
la vitesse de convergence est donc du m\^eme type que pour le
th\'eor\`eme du point fixe (le nombre de termes \`a calculer
pour trouver une valeur approch\'ee avec $k$ d\'ecimales 
d\'epend lin\'eairement $k$, les constantes sont d'autant
plus grandes que $|x|$ est grand).

\begin{theorem}
S'il existe un rang $n_0$, un r\'eel $M>0$ et un complexe $x_0$ tels que 
pour $n>n_0$, on ait~:
\[ |a_n x_0|^n \leq M\]
alors la s\'erie converge pour $|x|<|x_0|$
et pour $n\geq n_0$, on a~:
\begin{equation} \label{eq:maj_serie_entiere}
|R_n| \leq M \frac{ |\frac{x}{x_0}|^{n+1}} {1-|\frac{x}{x_0}|} 
\end{equation}
\end{theorem}

On en d\'eduit qu'il existe un r\'eel
positif $R\geq 0$ \'eventuellement \'egal à $+\infty$ tel que 
la s\'erie converge (la limite de la somme jusqu'\`a l'infini existe) 
lorsque $|x|<R$ et n'existe pas lorsque
$|x|>R$, ce r\'eel est appel\'e {\bf rayon de convergence} de la s\'erie.
Par exemple ce rayon vaut $+\infty$ pour l'exponentielle, le sinus
ou le cosinus. Il
est \'egal à 1 pour la s\'erie g\'eom\'etrique $\sum x^n$ (car elle diverge
si $|x|>1$ et converge si $|x|<1$). 
On ne peut pas dire ce qui se passe g\'en\'eriquement lorsqu'on
est \`a la limite, c'est-\`a-dire lorsque $|x|=R$ (si $R\neq
+\infty$). Mais cela n'a en fait pas trop d'importance en pratique
car m\^eme si la s\'erie converge, elle converge souvent trop lentement
pour donner de bonnes approximations. En fait, la vitesse de
convergence d'une s\'erie enti\`ere de rayon $R\neq +\infty$ est
en gros la m\^eme que celle d'une s\'erie g\'eom\'etrique de raison $|x|/R$.

Lorsque 2 s\'eries ont un rayon de convergence non nul, alors on
peut effectuer leur somme, leur produit comme des polynômes et la
s\'erie somme/produit a un rayon de convergence au moins \'egal au plus
petit des 2 rayons de convergence des arguments. On peut inverser une s\'erie
enti\`ere non nulle en 0 en appliquant 
\[ (1+x)^{-1} = 1-x+x^2-x^3+... \]
et on obtient une s\'erie enti\`ere de rayon de
convergence non nul. On peut aussi composer deux s\'eries enti\`eres
$g$ et $f$ en $g\circ f$ (avec les r\`egles de calcul de composition
des polyn\^omes) si $f(0)=0$. On peut enfin d\'eriver
et int\'egrer une s\'erie enti\`ere terme à terme dans son rayon de convergence.

On dit qu'une fonction est d\'eveloppable en s\'erie enti\`ere en 0 si
elle est \'egale à son d\'eveloppement de Taylor en 0 somm\'e jusqu'en l'infini
dans un disque de centre 0 et de rayon non nul. Les fonctions
exponentielle, sinus, cosinus sont donc d\'eveloppables en s\'erie enti\`ere en 0.
La fonction tangente \'egalement car le d\'enominateur cosinus est non nul en 0,
mais son rayon de convergence n'est pas l'infini et le calcul des $a_n$
est assez complexe.
La fonction $(1+x)^\alpha$ est d\'eveloppable en s\'eries enti\`eres
pour tout $\alpha \in \R$ avec un rayon de convergence 1 (ou l'infini
pour $\alpha $ entier positif). 
\[ (1+x)^\alpha = 1 + \alpha x + \frac{\alpha (\alpha-1)}{2!} x^2 +
... + \frac{\alpha (\alpha-1) ... (\alpha -n +1)}{n!} x^n + ...\]
Pour $\alpha=-1$, c'est la s\'erie 
g\'eom\'etrique de raison $-x$, en effet si $|x|<1$~:
\[ \sum_{n=0}^k (-x)^n = \frac{1-(-x)^{k+1}}{1+x} 
\rightarrow_{k\rightarrow \infty} \frac{1}{1+x}
\]
En int\'egrant par rapport à $x$, on obtient que $\ln(1+x)$ est d\'eveloppable
en s\'erie enti\`ere en 0 de rayon de convergence 1 et
\[ \ln(1+x) = \sum_{n=0}^\infty \frac{(-x)^{n+1}}{n+1} \]
On peut calculer de mani\`ere analogue le d\'eveloppement en s\'erie enti\`ere
de $\arctan(x)$ en iint\'egrant celui de $1/(1+x^2)$, de même pour $\arccos(x)$
et $\arcsin(x)$ en int\'egrant celui de $(1-x^2)^{-1/2}$.\index{atan}
\[ \arctan(x)=\sum_{n=0}^\infty (-1)^{n} \frac{x^{2n+1}}{2n+1},
\]
On peut donc calculer $\ln$, $\arctan$, ... par ces formules, 
mais il faut r\'epondre
à la question où arrête-t-on la somme pour obtenir une pr\'ecision donn\'ee? 
Dans le cas de $\ln(1+x)$,
on pourrait r\'epondre comme avec l'exponentielle en majorant la d\'eriv\'ee
$n+1$-i\`eme, mais ce n'est plus faisable pour $\arctan, \arcsin, \arccos$.
On va donner un autre crit\`ere qui ne n\'ecessite pas
de calculer cette d\'eriv\'ee mais utilise l'alternance des signes
dans la somme.

\subsection{S\'erie altern\'ee}\index{serie alternee}
\begin{theorem}
Soit $S_n= \sum_{k=0}^n (-1)^k u_k$ la somme jusqu'au rang $n$ d'une
s\'erie de r\'eels tels que la suite des $u_k$ d\'ecroit \`a partir
d'un rang $n_0$ et tend vers 0
lorsque $k\rightarrow +\infty$. Alors $S_n$ converge vers une limite
$S$. Si $n\geq n_0$, la limite est comprise entre deux sommes
partielles succesives $S_n$ et $S_{n+1}$ et le reste est major\'e par
la valeur absolue du premier terme non somm\'e~:
\[ |R_n| \leq |u_{n+1}|\]
\end{theorem}
D\'emonstration~:\\
on montre que les suites $v_n=S_{2n}$ et $w_n=S_{2n+1}$ sont
adjacentes. On a 
\[ v_{n+1}-v_n= S_{2n+2}-S_{2n}= (-1)^{2n+2} u_{2n+2} + (-1)^{2n+1}
u_{2n+1} = u_{2n+2}-u_{2n+1} \leq 0\]
donc $v_n$ est d\'ecroissante, de m\^eme $w_n$ est croissante,
et $v_n-w_n=u_{2n+1}$ est positif et tend vers 0. On en d\'eduit que
$v_n$ et $w_n$ convergent vers la m\^eme limite $S$ telle que
$v_n>S>w_n$ et les in\'egalit\'es du th\'eor\`eme s'en d\'eduisent.

{\bf Remarque}\\
lorsqu'on utilise une suite altern\'ee pour
trouver une valeur approch\'ee, il faut que $u_n$ tende assez
vite vers 0, sinon il y aura perte de pr\'ecision sur la mantisse
lorsqu'on effectuera $u_{2n}-u_{2n+1}$. On sommera aussi les termes
par ordre d\'ecroissant pour diminuer les erreurs d'arrondi.

\subsection{La fonction logarithme}\index{ln}
Si nous voulons calculer $\ln(1+x)$ pour $x \in [0,1[$ avec une
pr\'ecision $\varepsilon$, il suffit de calculer
\[ \sum_{k=0}^n (-1)^k \frac{x^{k+1}}{k+1}\]
pour $n$ tel que la valeur absolue du terme suivant soit plus petit 
que $\varepsilon$~:
\[ n \mbox{ tel que } \frac{x^{n+1}}{n+1} < \varepsilon \]
en effet, les signes sont altern\'es et la suite $\frac{x^{k+1}}{k+1}$
d\'ecroit vers 0.

Si la suite d\'ecroit lentement vers 0, cette m\'ethode est
mauvaise num\'eriquement et en temps de calcul
car il y a presque compensation entre
termes successifs donc perte de pr\'ecision sur la mantisse et il
y a beaucoup de termes \`a calculer. C'est le cas pour le logarithme,
si $x$ est voisin de 1, il faut calculer $n$ termes pour avoir une
pr\'ecision en $1/n$, par exemple 1 million de termes pour avoir
une pr\'ecision de $1e-6$ (sans tenir compte des erreurs d'arrondi). 
Si $x$ est proche de $1/2$ il faut de l'ordre
de $-\ln(\varepsilon)/\ln(2)$ termes ce qui est mieux, mais encore
relativement grand (par exemple
50 termes environ pour une pr\'ecision en $1e-16$,
13 termes pour $1e-4$).
On a donc int\'er\^et \`a se
ramener si possible \`a calculer la fonction en un $x$ o\`u la
convergence est plus rapide (donc $|x|$ le plus petit possible).
Par exemple pour le calcul de $\ln(1+x)$ on peut~:
\begin{itemize}
\item utiliser la racine carr\'ee
\[ ln(1+x)= 2 ln(\sqrt{1+x})\]
on observe que~:
\[ X=\sqrt{1+x}-1 = \frac{x}{1+\sqrt{1+x}} \leq \frac{x}{2} \]
il faut toutefois faire attention \`a la perte de pr\'ecision sur
$X$ par rapport \`a $x$ lorsque $x$ est petit.
\item utiliser l'inverse
\[ \ln(1+x)=-\ln(1/(1+x))=-\ln(1 + \frac{-x}{1+x}) \]
lorsque $x$ est proche de 1, $-x/(1+x)$ est proche de $-x/2$, on
a presque divis\'e par 2. Attention toutefois, on se retrouve alors
avec une s\'erie non altern\'ee, mais on peut utiliser 
(\ref{eq:maj_serie_entiere}) pour majorer le reste dans ce cas.
\item trouver une valeur approch\'ee $y_0$ de $\ln(1+x)$ \`a une pr\'ecision
faible, par exemple $1e-4$, et utiliser la m\'ethode de Newton pour
am\'eliorer la pr\'ecision. Soit en effet $y=\ln(1+x)$, alors
$e^y=1+x$, on pose $f(y)=e^y-(1+x)$, on utilise la suite it\'erative
\[ y_{n+1} = y_n - \frac{e^{y_n}-(1+x)}{e^{y_n}}  \]
Comme $y_0$ est proche \`a $1e-4$ de $y$, on peut esp\'erer avoir
une valeur approch\'ee de $y$ \`a $1e-16$ en 2 it\'erations. Notez
que $y$ est proche de $0$, on est dans un domaine o\`u le calcul
de $e^y$ est rapide et pr\'ecis et de plus la m\'ethode de Newton
``corrige'' les erreurs interm\'ediaires.
\end{itemize}

Nous sommes donc en mesure de calculer pr\'ecis\'ement le logarithme
$\ln(1+x)$ pour disons $|x|<1/2$. Pour calculer $ln$ sur $\R^+$,
on se ram\`ene \`a $[1,2]$ en utilisant l'\'ecriture
mantisse-exposant, puis si $x\in[3/2,2]$ on peut en prendre la racine
carr\'ee pour se retrouver dans l'intervalle souhait\'e.
On peut aussi effectuer une division par $\sqrt{2}$.

Remarquons que si $x$ est connu \`a une erreur relative $\varepsilon$
pr\`es, comme
\[ \ln(x(1 \pm \varepsilon))=\ln(x) + \ln(1 \pm \varepsilon) \]
$\ln(x)$ est connu \`a une erreur absolue de 
$|\ln(1 \pm \varepsilon)| \approx \varepsilon$. Si $\ln(x)$ est proche
de 0, on a une grande perte de pr\'ecision relative.

Finalement, nous savons calculer $\ln$ et $\exp$ sous r\'eserve
d'avoir dans une table la valeur de $\ln(2)$. Pour calculer
$\ln(2)$ pr\'ecis\'ement, on peut utiliser
\[ \ln(2)=-ln(1/2)=-ln(1-1/2) \]
et le d\'eveloppement en s\'erie calcul\'e en mode exact avec des
fractions \`a un ordre suffisant, on majore le reste en utilisant 
que le terme g\'en\'eral de la s\'erie $\ln(1+x)$ est born\'e par
$M=1$ en $x=1$, donc d'apr\`es (\ref{eq:maj_serie_entiere})~:
\[ |R_n| \leq \frac{1}{2^n}\]
(on peut m\^eme obtenir $1/(n2^n)$ car on a besoin de $M$ uniquement
pour les termes d'ordre plus grand que $n$, on peut donc prendre $M=1/n$).
Par exemple, pour avoir $\ln(2)$ avec une mantisse de 80 bits,
on effectue une fois pour toutes avec un logiciel
de calcul formel~:\\
\verb|a:=sum((1/2)^k/k,k=1..80)||\\
puis la division en base 2 avec 81 bits de pr\'ecision
\verb|iquo(numer(a)*2^81,denom(a))|

Exercice~: pour les fonctions trigonom\'etriques, il faut une
m\'ethode de calcul de $\pi$. On peut par exemple faire le calcul
de $16 \arctan(1/5)-4\arctan(1/239)$ en utilisant le d\'eveloppement
de la fonction $\arctan$ \`a un ordre suffisant.


\subsection{Autres applications}
On peut calculer certaines int\'egrales de la m\^eme mani\`ere,
par exemple
\[ \int _0^{1/2} \frac{1}{\sqrt{1+x^3}}\]
mais aussi des fonctions d\'efinies par des int\'egrales (cas de nombreuses
fonctions sp\'eciales).

\subsubsection{Exemple~: la fonction d'erreur (error fonction, {\tt erf})}
Cette fonction est d\'efinie à une constante multiplicative pr\`es par~:
\[ f(x)=\int_0^x e^{-t^2} \ dt \]
On peut d\'evelopper en s\'eries enti\`eres l'int\'egrand (rayon
de convergence $+\infty$), puis int\'egrer terme
à terme, on obtient
\[ f(x)= \sum_{n=0}^{+\infty} (-1)^n \frac{x^{2n}}{n! (2n+1)}\]
Ce d\'eveloppement converge tr\`es rapidement pour $|x|\leq 1$.
Par contre, pour $|x|$ grand, il faut calculer beaucoup de termes
avant que le reste soit suffisamment petit pour être n\'egligeable,
et certains termes interm\'ediaires sont grands, ce qui provoque
une perte de pr\'ecision qui peut rendre le r\'esultat calcul\'e
compl\`etement faux. Contrairement à la fonction exponentielle,
il n'y a pas de possibilit\'e de r\'eduire l'argument à une plage
où la s\'erie converge vite. Il faut donc
\begin{itemize}
\item soit utiliser des flottants multipr\'ecision, avec une pr\'ecision
augment\'ee de la quantit\'e n\'ecessaire pour avoir un r\'esultat fiable
\item soit, pour les grandes valeurs de $x$, utiliser un d\'eveloppement
asymptotique (en puissances de $1/x$) de
\[ \int_x^{+\infty} e^{-t^2} \ dt \]
ainsi que 
\[ \int_0^{+\infty} e^{-t^2} \ dt =\frac{\sqrt{\pi }}{2} \]
Le d\'eveloppement asymptotique
s'obtient par exemple en changeant de variable
$u=t^2$ et en effectuant des int\'egrations par parties r\'ep\'et\'ees
en int\'egrant $e^{-u}$ et en d\'erivant $u^{-1/2}$ et ses d\'eriv\'ees
successives. Ce type de d\'eveloppement asymptotique a la propri\'et\'e
inverse du d\'eveloppement en 0: les termes successifs commencent
par d\'ecroitre avant de croitre et de tendre vers l'infini. Il faut
donc arrêter le d\'eveloppement à un rang donn\'e (d\'ependant de $x$)
et il est impossible d'obtenir une pr\'ecision meilleure pour cette
valeur de $x$ par un d\'eveloppement asymptotique (on parle parfois de
d\'eveloppement des astronomes).
\end{itemize}

{\bf Exercice~}: donner une valeur approch\'ee de $f(1)$ à $1e-16$ pr\`es.
Combien de termes faut-il calculer dans la somme pour trouver
une valeur approch\'ee de $f(7)$ à $1e-16$ pr\`es~? Comparer la valeur
de $f(7)$ et la valeur absolue du plus grand terme de la s\'erie,
quelle est la perte de pr\'ecision relative si on effectue les
calculs en virgule flottante~? Combien de chiffres significatifs
faut-il utiliser pour assurer une pr\'ecision finale de 16 chiffres
en base 10~? Calculer le d\'eveloppement asymptotique en l'infini
et d\'eterminer un encadrement de $f(7)$ par ce d\'eveloppement. Combien
de termes faut-il calculer pour d\'eterminer $f(10)$ à $1e-16$ pr\`es
par le d\'eveloppement asymptotique et par le d\'eveloppement en s\'eries~?
Quelle est la meilleure m\'ethode pour calculer $f(10)$~?

\subsubsection{Recherche de solutions d'\'equations diff\'erentielles}
On peut aussi appliquer les techniques ci-dessus pour calculer
des solutions de certaines \'equations diff\'erentielles dont les
solutions ne s'expriment pas \`a l'aide des fonctions usuelles,
on remplace dans l'\'equation la fonction inconnue par son 
d\'eveloppement en s\'eries et on cherche une relation de r\'ecurrence
entre $a_{n+1}$ et $a_n$. Si on arrive \`a montrer par exemple
qu'il y a une solution ayant un d\'eveloppement altern\'ee, 
ou plus g\'en\'eralement,
si on a une majoration $|a_{n+1}/a_n|<C$, alors le reste de la
s\'erie enti\`ere est major\'e par $|a_nx^n|/(1-|Cx|)$ lorsque
$|x|<1/C$, on peut alors calculer des valeurs approch\'ees
de la fonction solution \`a la pr\'ecision souhait\'ee en utilisant
le d\'eveloppement en s\'eries enti\`eres.

\subsubsection{Exemple~: fonctions de Bessel d'ordre entier}
Soit $m$ un entier positif fix\'e, on consid\`ere l'\'equation
diff\'erentielle
\[ x^2 y'{'} + x y' + (x^2-m^2)y=0 \]
dont on cherche une solution s\'erie enti\`ere 
$y=\sum_{k=0}^\infty a_k x^k $. En remplacant dans l'\'equation, si
$x$ est dans le rayon de convergence de la s\'erie (rayon suppos\'e
non nul), on obtient
\[ 
\sum_{k=0}^\infty k(k-1)a_k x^k + \sum_{k=0}^\infty k a_k x^k 
+ \sum_{k=0}^\infty (x^2-m^2) a_k x^k =0
\]
soit encore
\begin{eqnarray*}
0 &=& \sum_{k=0}^\infty (k^2-m^2+x^2) a_k x^k  \\
 &=& -m^2 a_0 + (1-m^2)a_1 x + \sum_{k=2}^\infty [(k^2-m^2) a_k +a_{k-2}]x^k 
\end{eqnarray*}
Par exemple, prenons le cas $m=0$. On a alors $a_0$ quelconque, $a_1$
nul et pour $k\geq 2$
\[ a_k = - \frac{a_{k-2}}{k^2}\]
Donc tous les $a$ d'indice impair sont nuls. Les pairs sont non nuls
si $a_0\neq 0$, et ils sont de signe altern\'e.
Soit $x$ fix\'e, on observe que pour $2k > |x|$,
\[ |a_{2k} x^{2k}| < |a_{2k-2} x^{2k-2}| \]
donc la s\'erie $\sum_{k=0}^\infty a_k x^k$ est altern\'ee \`a partir
du rang partie enti\`ere de $|x|$ plus un. Donc elle converge pour
tout $x$ (le rayon de convergence de $y$ est $+\infty$) 
et le reste de la somme jusqu'\`a l'ordre $2n$ est
inf\'erieur en valeur absolue \`a~:
\[ |R_{2n}(x)| \leq |a_{2n+2} x^{2n+2}| \]
Par exemple, pour avoir une valeur approch\'ee \`a $1e-10$ pr\`es de
$y(x)$ pour $a_0=1$ et $|x|\leq 1$, on calcule $y=\sum_{k=0}^{2n} a_k x^k $,
on s'arr\^ete au rang $n$ tel que 
\[ |a_{2n+2} x^{2n+2}| \leq |a_{2n+2}| \leq 10^{-10} \]
On remarque que~:
\[ a_{2n} = \frac{(-1)^n}{2^2 4^2 ... (2n)^2} = \frac{(-1)^n}{2^{2n} n!^2} \]
donc $n=7$ convient.

Pour $m \neq 0$, on peut faire un raisonnement analogue (les
calculs sont un peu plus compliqu\'es).

On a ainsi trouv\'e une solution $y_0$ de l'\'equation
diff\'erentielle de d\'epart dont on peut facilement calculer
une valeur approch\'ee (aussi facilement que par exemple la fonction sinus
pour $|x| \leq 1$), 
on peut alors trouver toutes les solutions de l'\'equation
diff\'erentielle (en posant $y=y_0 z$ et en cherchant $z$).

{\bf Exercice~:} faire de m\^eme pour les solutions de
$y'{'}-xy=0$ (fonctions de Airy).

\subsection{D\'eveloppements asymptotiques et s\'eries divergentes}
Un d\'eveloppement asymptotique est une g\'en\'eralisation d'un d\'eveloppement de Taylor, par exemple
lorsque le point de d\'eveloppement est en l'infini. De nombreuses fonctions ayant
une limite en l'infini admettent un d\'eveloppement asymptotique en l'infini, mais ces
d\'eveloppements sont souvent des s\'eries qui semblent commencer par converger
mais sont divergentes. Ce type de d\'eveloppement s'av\`ere n\'eanmoins tr\`es utile lorsqu'on
n'a pas besoin d'une trop grande pr\'ecision sur la valeur de la fonction.

Nous allons illustrer ce type de d\'eveloppement sur un exemple, la fonction 
exponentielle int\'egrale, d\'efinie à une constante pr\`es par
\[ f(x)=\int_x^{+\infty} \frac{e^{-t}}{t} \ dt \]
On peut montrer que l'int\'egrale existe bien, car l'int\'egrand est positif et inf\'erieur à $e^{-t}$
(qui admet $-e^{-t}$ comme primitive, cette primitive ayant une limite en $+\infty$).
Pour trouver le d\'eveloppement asymptotique de $f$ en $+\infty$, on effectue des int\'egrations
par parties r\'ep\'et\'ees, en int\'egrant l'exponentielle et en d\'erivant la fraction rationnelle
\begin{eqnarray*}
 f(x)&=&[\frac{-e^{-t}}{t}]_x^{+\infty} - \int_x^{+\infty} \frac{-e^{-t}}{-t^2} \ dt \\
&=& \frac{e^{-x}}{x} - \int_x^{+\infty} \frac{e^{-t}}{t^2} \ dt \\
&=& \frac{e^{-x}}{x} - ([\frac{-e^{-t}}{t^2}]_x^{+\infty} - \int_x^{+\infty} \frac{-2e^{-t}}{-t^3}) \\
&=& \frac{e^{-x}}{x} - \frac{e^{-x}}{x^2} + \int_x^{+\infty} \frac{2e^{-t}}{t^3} \ dt \\
&=& ... \\
&=& e^{-x}\left(\frac{1}{x} - \frac{1}{x^2} + \frac{2}{x^3} + ... + \frac{(-1)^n n!}{x^{n+1}}\right)
- \int_x^{+\infty} \frac{(-1)^n (n+1)!e^{-t}}{t^{n+2}} \ dt \\
&=& S(x) + R(x)
\end{eqnarray*}
où
\begin{equation} \label{eq:Eiinf}
 S(x)=e^{-x}
\left(\frac{1}{x} - \frac{1}{x^2} + \frac{2}{x^3} + ... + \frac{(-1)^n n!}{x^{n+1}}\right), 
\quad R(x)=- \int_x^{+\infty} \frac{(-1)^n (n+1)!e^{-t}}{t^{n+2}} \ dt 
\end{equation}
Le d\'eveloppement en s\'eries est divergent puisque pour $x>0$ fix\'e et $n$ tendant vers l'infini
\[ \lim_{n\rightarrow +\infty} \frac{n!}{x^{n+1}} = +\infty\]
mais si $x$ est grand, au d\'ebut la s\'erie semble converger, de mani\`ere tr\`es rapide~:
\[ \frac{1}{x} >> \frac{1}{x^2} >> \frac{2}{x^3} \]
On peut utiliser $S(x)$ comme valeur approch\'ee de $f(x)$ pour $x$ grand si on sait majorer
$R(x)$ par un nombre suffisamment petit. On a
\[ | R(x) | \leq \int_x^{+\infty} \frac{(n+1)!e^{-t}}{x^{n+2}}
= \frac{(n+1)!e^{-x}}{x^{n+2}} \]
On retrouve une majoration du type de celle des s\'eries altern\'ees, 
l'erreur relative est inf\'erieure
à la valeur absolue du dernier terme somm\'e divis\'e par $e^{-x}/x$. 
Pour $x$ fix\'e assez grand, il 
faut donc trouver un rang $n$, s'il en existe un, 
tel que $(n+1)!/x^{n+1}<\epsilon$ où
$\epsilon$ est la pr\'ecision relative que l'on s'est fix\'ee.
Par exemple, si $x\geq 100$, $n=11$ convient pour 
$\epsilon=12!/100^{12}=5e-16$ (à peu pr\`es
la pr\'ecision relative d'un ``double'').
Ceci permet d'avoir une approximation de la fonction avec une bonne
pr\'ecision et peu de calculs, mais contrairement aux s\'eries enti\`eres,
il n'est pas possible d'am\'eliorer cette pr\'ecision de mani\`ere
arbitraire en poussant le d\'eveloppement plus loin, il y a une
pr\'ecision maximale possible (qui d\'epend de $x$).

Ce type de d\'eveloppement asymptotique peut \^etre effectu\'e pour
d'autres fonctions du m\^eme type, par exemple
\[ \int_x^{+\infty} e^{-t^2} \ dt, \quad \int_x^{+\infty} \frac{\sin(t)}{t} \ dt, \quad ... \]


{\bf Digression: calcul approch\'e de la constante d'Euler $\gamma$}\\
On peut montrer que
\begin{equation} \label{eq:def_gamma}
 \lim_{n\rightarrow +\infty} u_n, \quad u_n=\sum_{k=1}^{n}\frac{1}{k} - \ln(n) 
\end{equation}
existe (par exemple en cherchant un \'equivalent de $u_{n+1}-u_n$ qui vaut 
$\frac{-1}{2n^2}$)
et on d\'efinit $\gamma$ comme sa limite. Malheureusement, la convergence
est tr\`es lente et cette d\'efinition n'est pas applicable pour obtenir la valeur
de $\gamma$ avec une tr\`es grande pr\'ecision.
Il y a un lien entre $\gamma$ et la fonction exponentielle int\'egrale, plus pr\'ecis\'ement
lorsque $x\rightarrow 0$, $f(x)$ admet une singularit\'e en $-\ln(x)$,
plus pr\'ecis\'ement $f(x)+\ln(x)$
admet un d\'eveloppement en s\'eries (de rayon de convergence $+\infty$), car~:
\begin{eqnarray*}
 f(x)+\ln(x)&=&\int_x^{1}\frac{e^{-t}-1}{t} \ dt + \int_1^{+\infty} \frac{e^{-t}}{t} \ dt \\
&=& \int_0^{1}\frac{e^{-t}-1}{t} \ dt + \int_1^{+\infty} \frac{e^{-t}}{t} \ dt
- \int_0^{x} \frac{e^{-t}-1}{t} \ dt
\end{eqnarray*}
Que vaut la constante du membre de droite~:
\[ C=\int_0^{1}(e^{-t}-1)\frac{1}{t} \ dt + \int_1^{+\infty} e^{-t} \frac{1}{t} \ dt \]
Il se trouve que $C=-\gamma$ (voir plus bas une d\'emonstration condens\'ee) et donc~:
\begin{equation} \label{eq:gamma}
 \gamma= \int_0^{x} \frac{1-e^{-t}}{t} \ dt -f(x)-\ln(x)
\end{equation}
Pour obtenir une valeur approch\'ee de $\gamma$, il suffit donc de prendre un $x$ assez grand
pour pouvoir calculer $f(x)$ par son d\'eveloppement asymptotique à la pr\'ecision requise,
puis de calculer l'int\'egrale du membre de droite par le d\'eveloppement en s\'eries en $x=0$
(en utilisant une pr\'ecision interm\'ediaire plus grande puisque ce d\'eveloppement en s\'eries
va sembler diverger au d\'ebut avant de converger pour $n$ suffisamment grand).
Par exemple, on pose $x=13$, on calcule $f(13)$ par (\ref{eq:Eiinf})
avec $n=13$ (qui correspond au moment o\`u le terme g\'en\'eral
de la s\'erie est minimum puisque le rapport de deux termes successifs
est en $n/x$)
et une erreur absolue inf\'erieure \`a $e^{-13} 13!/13^{14}=4e-12$
\begin{center}
$f(13) \approx$ \verb|exp(-13)*sum((-1)^n*n!/13.^(n+1),n=0..13)|
\end{center}
puis on remplace dans (\ref{eq:gamma}), avec 
\[ \int_0^{x} \frac{1-e^{-t}}{t} \ dt = 
\sum_{n=0}^{\infty} (-1)^n \frac{x^{n+1}}{(n+1) (n+1)!}\]
dont on obtient une valeur approch\'ee, 
en faisant la somme jusqu'au rang 49 (pour lequel
le terme g\'en\'eral est de l'ordre de \verb|1e-12|),
le reste de cette somme $R_{50}$ est positif et est inf\'erieur \`a
{\tt (-1)\verb|^|50*13.\verb|^|51/51/51!)} qui est de l'ordre de 
\verb|8e-12|
\begin{center}
\verb|evalf(sum((-1)^n*13^(n+1)/(n+1)/(n+1)!,n=0..49))|
\end{center}
La somme argument de \verb|evalf|
\'etant exacte, il n'y a pas de probl\`emes de perte de pr\'ecision,
on peut aussi faire les calculs interm\'ediaires en arithm\'etique approch\'ee,
on doit alors prendre 4 chiffres significatifs de plus
pour tenir compte de la valeur du plus grand terme
somm\'e dans la s\'erie, terme que l'on d\'etermine par exemple par
\begin{center}
{\tt seq(13.\verb|^|(n+1)/(n+1)/(n+1)!,n=0..20)}
\end{center} 
ce terme vaut \verb|13^11/11/11!| soit 4000 environ)
\begin{center}
\verb|Digits:=16; sum((-1)^n*13.^(n+1)/(n+1)/(n+1)!,n=0..49)|
\end{center}
On obtient finalement comme valeur approch\'ee de $\gamma$
\begin{center}
\verb|-exp(-13)*sum((-1)^n*n!/13.^(n+1),n=0..13)-ln(13)+|\\
\verb|  sum((-1)^n*13^(n+1)/(n+1)/(n+1)!,n=0..49)|
\end{center}
soit \verb|0.577215664897| avec une erreur inf\'erieure \`a \verb|1.2e-11|.
Bien entendu, cette m\'ethode est surtout int\'eressante si on veut calculer
un grand nombre de d\'ecimales de la constante d'Euler, sinon
on peut par exemple appliquer la m\'ethode d'acc\'el\'eration de Richardson \`a
la suite convergente (\ref{eq:def_gamma}) qui d\'efinit $\gamma$
ou d'autres m\'ethodes d'acc\'el\'eration (en transformant par
exemple la s\'erie en s\'erie altern\'ee). On calcule alors
de deux mani\`eres diff\'erentes $f(x)$ pour $x$ plus grand (d\'etermin\'e
par la pr\'ecision qu'on peut obtenir par le d\'eveloppement
aymptotique de $f$).

On peut calculer $\pi$ de la même mani\`ere avec le d\'eveloppement 
en s\'eries et asymptotique
de la fonction sinus int\'egral (on remplace exponentielle par sinus dans
la d\'efinition de $f$) et l'\'egalit\'e (dont un sch\'ema de preuve est aussi
donn\'e plus bas)
\begin{equation} \label{eq:Siinf}
 \int_0^{+\infty} \frac{\sin(t)}{t} \ dt = \frac{\pi}{2}
\end{equation}

{\bf Calcul de $C$ (et preuve de (\ref{eq:Siinf}))}:\\
Pour cela on effectue une int\'egration par parties, cette fois en int\'egrant $1/t$
et en d\'erivant l'exponentielle (moins 1 dans la premi\`ere int\'egrale).
\begin{eqnarray*}
 C&=&\int_0^{1}(e^{-t}-1)\frac{1}{t} \ dt + \int_1^{+\infty} e^{-t} \frac{1}{t} \ dt\\
&=&[(e^{-t}-1)\ln(t)]_0^1 +\int_0^1 \ln(t) e^{-t} \ dt + [e^{-t} \ln(t)]_1^{+\infty}
+\int_1^{+\infty} \ln(t) e^{-t} \ dt \\
&=& \int_0^{+\infty} \ln(t) e^{-t} \ dt
\end{eqnarray*}
Pour calculer cette int\'egrale, on utilise
l'\'egalit\'e (qui se d\'emontre par r\'ecurrence en faisant une 
int\'egration par parties)~:
\[ n!= \int_0^{+\infty}t^n e^{-t} \ dt \]
On va à nouveau int\'egrer par parties,
on int\`egre un facteur multiplicatif 1 
et on d\'erive l'int\'egrand, on simplifie, puis
on int\`egre $t$ et on d\'erive l'autre terme, puis $t^2/2$, etc. 
\begin{eqnarray*}
 C&=&[te^{-t} \ln(t)]_0^{+\infty} - \int_0^{+\infty} t e^{-t}(\frac{1}{t}-\ln(t)) \ dt \\
&=& 0 - \int_0^{+\infty} e^{-t} \ dt + \int_0^{+\infty} t e^{-t} \ln(t) \ dt \\
&=& -1 + [\frac{t^2}{2}e^{-t} \ln(t)]_0^{+\infty} 
- \int_0^{+\infty} \frac{t^2}{2} e^{-t}(\frac{1}{t}-\ln(t)) \ dt \\
&=& -1 - \int_0^{+\infty} \frac{t}{2} e^{-t} +  \int_0^{+\infty} \frac{t^2}{2} e^{-t} \ln(t) \ dt \\
&=& -1 - \frac{1}{2} +  \int_0^{+\infty} \frac{t^2}{2} e^{-t} \ln(t) \ dt \\
&=& ...\\
&=& -1 - \frac{1}{2} - ... -  \frac{1}{n} + \int_0^{+\infty} \frac{t^n}{n!} e^{-t} \ln(t) \ dt \\
&=& -1 - \frac{1}{2} - ... -  \frac{1}{n} + \ln(n) + I_n
\end{eqnarray*}
où
\[ I_n=\int_0^{+\infty} \frac{t^n}{n!} e^{-t} (\ln(t)-\ln(n)) \ dt \]
Pour d\'eterminer $I_n$ on fait le changement de variables $t=nu$
\begin{eqnarray*}
 I_n&=&\int_0^{+\infty} \frac{(nu)^n}{n!} e^{-nu} \ln(u) n\ du \\
&=& \frac{n^{n+1}}{n!} \int_0^{+\infty} e^{n(ln(u)-u)} \ln(u) \ du 
\end{eqnarray*}
Or en faisant le même changement de variables $t=nu$~:
\[ n!= \int_0^{+\infty}t^n e^{-t} \ dt = n^{n+1} \int_0^{+\infty} e^{n(ln(u)-u)} \ du
\]
Donc
\[ I_n= \frac{\int_0^{+\infty} e^{n(ln(u)-u)} \ln(u) \ du}
{\int_0^{+\infty} e^{n(ln(u)-u)} \ du}  \]
Lorsque $n$ tend vers l'infini, on peut montrer que $I_n \rightarrow 0$, en effet les int\'egrales
sont \'equivalentes à leur valeur sur un petit intervalle autour de $u=1$, point où l'argument
de l'exponentielle est maximal, 
et comme l'int\'egrand du num\'erateur a une amplitude $\ln(u)$ qui s'annule en $u=1$, 
il devient n\'egligeable devant le d\'enominateur. Finalement on a bien $C=-\gamma$.

On peut remarquer qu'en faisant le m\^eme calcul que $C$ 
mais en remplacant $e^{-t}$ par $e^{-\alpha t}$ pour $\Re(\alpha)>0$, donne
$\lim I_n=-\ln(\alpha)$ (car le point critique o\`u la d\'eriv\'ee
de la phase s'annule est alors $1/\alpha$). Ceci peut aussi se v\'erifier
pour $\alpha$ r\'eel en faisant le changement de variables $\alpha t=u$
\[ \int_0^{1}(e^{-\alpha t}-1)\frac{1}{t} \ dt + \int_1^{+\infty} e^{-\alpha t} \frac{1}{t} \ dt 
= -\gamma -\ln(\alpha) \]
En faisant tendre $\alpha$ vers $-i$, $-\ln(\alpha)$ 
tend vers $\ln(i)=i\frac{\pi}{2}$ et on obtient
\[ \int_0^{1}(e^{it}-1)\frac{1}{t} \ dt + \int_1^{+\infty} e^{i t} \frac{1}{t} \ dt 
= -\gamma + i \frac{\pi}{2} \]
dont la partie imaginaire nous donne (\ref{eq:Siinf}), et la
partie r\'eelle une autre identit\'e sur $\gamma$ faisant intervenir
la fonction cosinus int\'egral.


\section{La moyenne arithm\'etico-g\'eom\'etrique.}

\subsection{D\'efinition et convergence}
Soient $a$ et $b$ deux r\'eels positifs,
on d\'efinit les 2 suites 
\begin{equation} \label{eq:agm}
 u_0=a, v_0=b, \quad u_{n+1}=\frac{u_n+v_n}{2}, v_{n+1}=\sqrt{u_nv_n} 
\end{equation}
On va montrer que ces 2 suites sont adjacentes et convergent donc vers
une limite commune not\'ee $M(a,b)$ et il se trouve que la convergence
est tr\`es rapide, en raison de l'identit\'e~:
\begin{equation} \label{eq:agm1}
u_{n+1}-v_{n+1}=\frac{1}{2}(\sqrt{u_n}-\sqrt{v_n})^2
=\frac{1}{2(\sqrt{u_n}+\sqrt{v_n})^2}(u_n-v_n)^2
\end{equation}
la convergence est quadratique.

On suppose dans la suite que $a\geq b$ sans changer la g\'en\'eralit\'e puisque \'echanger $a$ et $b$
ne change pas la valeur de $u_n$ et $v_n$ pour $n>0$. On a alors $u_n \geq v_n$ 
(d'apr\`es (\ref{eq:agm1}) pour $n>0$) et $u_{n+1} \leq u_n$ car
\[ u_{n+1}-u_n=\frac{1}{2}(v_n-u_{n}) \leq 0\]
et $v_{n+1}=\sqrt{u_nv_n} \geq \sqrt{v_nv_n}=v_n$. Donc $(u_n)$ est d\'ecroissante 
minor\'ee (par $v_0$), $(v_n)$ est croissante major\'ee (par $u_0$), ces 2 suites sont 
convergentes et comme $u_{n+1}=\frac{u_n+v_n}{2}$, elles convergent vers la même limite 
$l$ qui d\'epend de $a$ et $b$ et que l'on note $M(a,b)$.
On remarque aussi que $M(a,b)=bM(a/b,1)=aM(1,b/a)$. 

Pr\'ecisons maintenant la vitesse de convergence lorsque $a \geq b>0$. 
On va commencer par estimer le nombre
d'it\'erations n\'ecessaires pour que $u_n$ et $v_n$ soient du même ordre de grandeur.
Pour cela, on utilise la majoration
\[ \ln(u_{n+1})-\ln(v_{n+1}) \leq \ln(u_{n})-\ln(v_{n+1}) = \frac{1}{2}
(\ln(u_{n})-\ln(v_{n})) \]
donc
\[ \ln \frac{u_n}{v_n} = \ln(u_n)-\ln(v_n) \leq 
\frac{1}{2^n} (\ln(a)-\ln(b)) = \frac{1}{2^n} \ln \frac{a}{b} \]
Donc si $n \geq \frac{\ln( \ln(a/b)/m)}{\ln(2)}$ alors
$\ln \frac{u_n}{v_n} \leq m$ (par exemple, on peut prendre $m=0.1$ pour 
avoir $u_n/v_n \in [1,e^{0.1}])$. Le nombre minimum d'it\'erations $n_0$ est proportionnel
au log du log du rapport $a/b$.
Ensuite on est ramen\'e à \'etudier la convergence de la suite arithm\'etico-g\'eom\'etrique
de premiers termes $a=u_{n_0}$ et $b=v_{n_0}$ et même en tenant compte
de $M(a,b)=aM(1,b/a)$ à $a=1$ et $b=v_n/u_n$ donc $0\leq a-b \leq 1-e^{-0.1}$.
Alors l'\'equation (\ref{eq:agm1}) entraine 
\[ u_{n+1}-v_{n+1} \leq \frac{1}{8}(u_n-v_n)^2 \]
puis (par r\'ecurrence)
\[ 0 \leq u_n-v_n \leq \frac{1}{8^{2^n-1}}(a-b)^{2^n} \]
Donc comme $M(a,b)$ est compris entre $v_n$ et $u_n$, l'erreur relative sur la limite
commune est inf\'erieure à une pr\'ecision donn\'ee $\epsilon$
au bout d'un nombre d'it\'erations proportionnel au $\ln(\ln(1/\epsilon))$.

Typiquement dans la suite, on souhaitera calculer $M(1,b)$ avec $b$ de l'ordre
de $2^{-n}$ en d\'eterminant $n$ chiffres significatifs,
il faudra alors $O(\ln(n))$ it\'erations pour se ramener à $M(1,b)$ avec $b\in [e^{-0.1},1]$ 
puis $O(\ln(n))$ it\'erations pour avoir la limite avec $n$ chiffres significatifs.

{\bf Le cas complexe}\\
On suppose maintenant que $a, b \in \C$ avec $\Re(a)>0, \Re(b)>0$. On va voir que
la suite arithm\'etico-g\'eom\'etrique converge encore. \\
{\bf \'Etude de l'argument}\\
On voit ais\'ement (par r\'ecurrence)
que $\Re(u_n)>0$ ; de plus $\Re(v_n) > 0$ car par d\'efinition de la racine carr\'ee
$\Re(v_n)\geq 0$ et est de plus non nul car le produit de deux complexes d'arguments dans 
$]-\pi/2,\pi/2[$ ne peut pas être un r\'eel n\'egatif.
On en d\'eduit que
$\arg(u_{n+1})=\arg(u_n+v_n)$ se trouve dans l'intervalle de bornes
$\arg(u_n)$ et $\arg(v_n)$ et que $\arg(v_{n+1})=\frac{1}{2}(\arg(u_n)+\arg(v_n))$
donc
\[ | \arg(u_{n+1}-\arg(v_{n+1}) | \leq \frac{1}{2}|\arg(u_n)-\arg(v_n)| \]
Apr\`es $n$ it\'erations, on a 
\[ |\arg(u_n)-\arg(v_n)| \leq \frac{\pi}{2^n} \]
Apr\`es quelques it\'erations, $u_n$ et $v_n$ seront donc presque align\'es. 
Faisons 4 it\'erations.
On peut factoriser par exemple $v_n$ et on
est ramen\'e à l'\'etude de la suite de termes initiaux $a=u_n/v_n$ d'argument 
$\arg(u_n)-\arg(v_n)$ petit 
(inf\'erieur en valeur absolue à $\pi/16$) et $b=1$. On suppose donc dans la suite que
\[ |\arg(\frac{u_n}{v_n})| \leq \frac{\pi/16}{2^n} \]
{\bf \'Etude du module}\\
On a~:
\[ \frac{u_{n+1}}{v_{n+1}}= \frac{1}{2}\left(\sqrt{\frac{u_{n}}{v_{n}}}+\frac{1}{\sqrt{\frac{u_{n}}{v_{n}}}}\right)  \]
Posons $ \frac{u_{n}}{v_{n}}=\rho_n e^{i\theta_n}$, on a~:
\begin{eqnarray*} 
|\frac{u_{n+1}}{v_{n+1}}| &= & \frac{1}{2}\left|\sqrt{\rho_n} e^{i\theta_n/2}
+ \frac{1}{\sqrt{\rho_n}} e^{-i\theta_n/2} \right| \\
&=& \frac{1}{2} \left| (\sqrt{\rho_n}+ \frac{1}{\sqrt{\rho_n}})\cos\frac{\theta_n}{2}
+ i (\sqrt{\rho_n}- \frac{1}{\sqrt{\rho_n}})\sin\frac{\theta_n}{2} \right| \\
&=& \frac{1}{2} \sqrt{ (\sqrt{\rho_n}+ \frac{1}{\sqrt{\rho_n}})^2\cos^2\frac{\theta_n}{2}
+ (\sqrt{\rho_n}- \frac{1}{\sqrt{\rho_n}})^2\sin^2\frac{\theta_n}{2} } \\
&=& \frac{1}{2} \sqrt{ \rho_n+ \frac{1}{\rho_n} +2\cos \theta_n }
\end{eqnarray*}
Si $\rho$ d\'esigne le max de $\rho_n$ et $1/\rho_n$, on a alors la majoration
\[ |\frac{u_{n+1}}{v_{n+1}}| \leq \frac{1}{2} \sqrt{ \rho + \rho + 2 \rho } 
= \sqrt{\rho} \]
donc en prenant les logarithmes
\begin{equation} \label{eq:lnrhon}
\ln \rho_{n+1} \leq \frac{1}{2}  \ln \rho=\frac{1}{2}  |\ln \rho_n| 
\end{equation}
On rappelle qu'on a la majoration 
\[ |\arg(\frac{u_n}{v_n})| = |\theta_n| \leq \frac{\pi/16}{2^n} \leq \frac{1}{2^{n+1}} \]
qui va nous donner la minoration de $\rho_{n+1}$ 
\begin{eqnarray*}
\rho_{n+1}=|\frac{u_{n+1}}{v_{n+1}}| & = & \frac{1}{2}
\sqrt{ \rho_n+ \frac{1}{\rho_n} +2 - 2 (1-\cos \theta_n) } \\
& = &  \frac{1}{2} \sqrt{ \rho_n+ \frac{1}{\rho_n} +2 - 4 \sin^2 (\frac{\theta_n}{2}) } \\
& \geq &  \frac{1}{2} \sqrt{ \rho_n+ \frac{1}{\rho_n} +2 - \theta_n^2} \\
& \geq &  \frac{1}{2} \sqrt{ \rho_n+ \frac{1}{\rho_n} +2} \times 
\sqrt{1 - \frac{\theta_n^2}{\rho_n+ \frac{1}{\rho_n} +2}} \\
& \geq &  \frac{1}{2} \sqrt{ \frac{1}{\rho} + \frac{1}{\rho} +2\frac{1}{\rho}} \times 
\sqrt{1 - \frac{\theta_n^2}{4}} \\
& \geq & \frac{1}{\sqrt{\rho}} \sqrt{1 - \frac{\theta_n^2}{4}} \\
& \geq & \frac{1}{\sqrt{\rho}} \sqrt{1 - \frac{1} {4 \times 2^{2n+2}}}
\end{eqnarray*}
en prenant les log et en minorant $\ln(1-x)$ par $-2x$
\[ \ln \rho_{n+1} \geq \frac{1}{2} (-|\ln \rho_n|+\ln(1 -\frac{1} {4 \times 2^{2n+2}} ))
\geq -\frac{1}{2} (|\ln \rho_n|+\frac{1} {2^{2n+3}} )  \]
Finalement avec (\ref{eq:lnrhon})
\[ |\ln \rho_{n+1}|
\leq \frac{1}{2} (|\ln \rho_n|+\frac{1}{2^{2n+3}} ) \]
On en d\'eduit
\[ |\ln \rho_n| \leq \frac{1}{2^n} \ln \rho_0 + \frac{1}{2^{n+3}} + ... +
\frac{1}{2^{2n+1}} +  \frac{1}{2^{2n+2}}
= \frac{1}{2^n} \ln \rho_0 + \frac{1}{2^{n+2}} \]
La convergence du $\ln(u_n/v_n)$ vers 0 est donc g\'eom\'etrique, donc $u_n$ et $v_n$ convergent
quadratiquement.

\subsection{Lien avec les int\'egrales elliptiques}
Le calcul de la limite commune des suites $u_n$ et $v_n$ en fonction
de $a$ et $b$ n'est pas trivial
au premier abord. Il est reli\'e aux int\'egrales elliptiques, plus
pr\'ecis\'ement on peut construire une int\'egrale d\'ependant
de deux param\`etres $a$ et $b$ et qui est invariante par
la transformation $u_n,v_n \rightarrow u_{n+1},v_{n+1}$ (\ref{eq:agm})
\[ I(a,b)=\int_{-\infty}^{+\infty}  \frac{dt} {\sqrt{(a^2+t^2)(b^2+t^2)}}
\]
On a en effet
\[ I(\frac{a+b}{2},\sqrt{ab})
= \int_{-\infty}^{+\infty}  \frac{du}{\sqrt{((\frac{a+b}{2})^2+u^2)(ab+u^2)}} \]
On pose alors 
\[ u=\frac{1}{2} (t-\frac{ab}{t}), \quad t>0 \]
o\`u $t \rightarrow u$ est une bijection croissante de $t\in]0,+\infty[$ vers 
$u \in ]-\infty,+\infty[$, donc
\begin{eqnarray*}
I(\frac{a+b}{2},\sqrt{ab})
&=& \int_{0}^{+\infty}  \frac{dt/2(1+ab/t^2)}{\sqrt{((\frac{a+b}{2})^2+1/4(t-ab/t)^2)(ab+1/4(t-ab/t)^2)}}\\
&=& 2 \int_{0}^{+\infty} \frac{dt}{\sqrt{(a^2+t^2)(b^2+t^2)}}
= I(a,b)
\end{eqnarray*}
On note au passage que $I$ est d\'efinie si $a,b \in \C$ v\'erifient $\Re(a)>0, \Re(b)>0$,
on peut montrer que la relation ci-dessus s'\'etend (par holomorphie).

Lorsque $a=b=l$ (par exemple lorsqu'on est \`a la limite), 
le calcul de $I(l,l)$ est explicite
\[ I(l,l)=\int_{-\infty}^{+\infty}  \frac{dt}{(l^2+t^2)} = \frac{\pi}{l}\]
donc
\[ I(a,b)=I(M(a,b),M(a,b))=\frac{\pi}{M(a,b)}\]
On peut transformer $I(a,b)$ en posant $t=bu$
\[ I(a,b)=2\int_{0}^{+\infty}  \frac{du}{\sqrt{(a^2+b^2u^2)(1+u^2)}}
= \frac{2}{a} \int_{0}^{+\infty}  \frac{du}{\sqrt{(1+(b/a)^2u^2)(1+u^2)}} \]
Puis en posant $u=\tan(x)$ ($du=(1+u^2) dx$)
\[ I(a,b)=\frac{2}{a} \int_0^{\frac{\pi}{2}} 
\sqrt{\frac{1+\tan(x)^2}{1+(b/a)^2\tan(x)^2}} \ dx \]
et enfin en posant $\tan^2(x)=\frac{\sin(x)^2}{1-\sin(x)^2}$
\[ I(a,b)= \frac{2}{a} \int_0^{\frac{\pi}{2}}  
\sqrt{ \frac{1}{1-(1-\frac{b^2}{a^2})\sin(x)^2} } \ dx\]
Si on d\'efinit pour $m<1$
\[ K(m)=\int_0^{\frac{\pi}{2}} \frac{dx}{\sqrt{1-m \sin(x)^2}} \]
alors on peut calculer $K$ en fonction de $I$, en posant
$m=1-b^2/a^2$ soit $b^2/a^2=1-m$
\[ K(m)=\frac{a}{2} I(a,a\sqrt{1-m})=\frac{a}{2}\frac{\pi}{M(a,a\sqrt{1-m})}
=\frac{\pi}{2M(1,\sqrt{1-m})} 
\]
d'o\`u l'on d\'eduit la valeur de l'int\'egrale elliptique en fonction
de la moyenne arithm\'etico-g\'eom\'etrique~:
\begin{equation} \label{eq:K}
K(m)=\int_0^{\frac{\pi}{2}} \frac{dx}{\sqrt{1-m \sin(x)^2}}= 
\frac{\pi}{2M(1,\sqrt{1-m})} 
\end{equation}
Dans l'autre sens, pour $x$ et $y$ positifs
\[ K( (\frac{x-y}{x+y})^2 )=  \frac{\pi}{2M(1,\sqrt{1-(\frac{x-y}{x+y})^2})}
=  \frac{\pi}{2M(1,\frac{2}{x+y}\sqrt{xy})}
= \frac{\pi}{2 \frac{2}{x+y} M(\frac{x+y}{2},\sqrt{xy}) }
= \frac{\pi}{4} \frac{x+y}{M(x,y)}
\]
et finalement
\[ M(x,y)=\frac{\pi}{4} \frac{x+y}{ K\left( (\frac{x-y}{x+y}\right)^2 )}\]

\subsection{Application~: calcul efficace du logarithme.}
On peut utiliser la moyenne arithm\'etico-g\'eom\'etrique pour
calculer le logarithme efficacement, pour cela on cherche le d\'eveloppement
asymptotique de $K(m)$ lorsque $m$ tend vers 1. Plus pr\'ecis\'ement,
on va poser $1-m=k^2$ avec $k \in ]0,1]$, donc
\[ K(m)= \int_0^{\frac{\pi}{2}} \frac{dx}{\sqrt{1-(1-k^2) \sin(x)^2}}
=\int_0^{\frac{\pi}{2}} \frac{dy}{\sqrt{1-(1-k^2) \cos(y)^2}}
\]
en posant $y=\pi/2-x$, et
\[ K(m)=\int_0^{\frac{\pi}{2}} \frac{dy}{\sqrt{\sin(y)^2+k^2 \cos(y)^2}}\]
la singularit\'e de l'int\'egrale pour $k$ proche
de 0 apparait lorsque $y$ est proche de 0.
Si on effectue un d\'eveloppement de Taylor en $y=0$, on trouve
\[ \sin(y)^2+k^2 \cos(y)^2 = k^2 + (1-k^2) y^2 + O(y^4)\]
Il est donc naturel de comparer $K(m)$ \`a l'int\'egrale
\[ J=\int_0^{\frac{\pi}{2}} \frac{dy}{\sqrt{k^2 + (1-k^2) y^2}} \]
qui se calcule en faisant par exemple le changement de variables
\[ y=\frac{k}{\sqrt{1-k^2}} \sinh(t)\]
ou directement avec Xcas, 
\begin{center}
\verb|supposons(k>0 && k<1);|\\
\verb|J:=int(1/sqrt(k^2+(1-k^2)*y^2),y,0,pi/2)|
\end{center}
qui donne apr\`es r\'e\'ecriture~:
\begin{equation} \label{eq:J}
 J= \frac{1}{\sqrt{1-k^{2}}}
\left( \ln\left(\frac{\pi}{k}\right) +
\ln\left( \frac{1}{2} \left(\sqrt{ 1-k^{2} +4 \frac{k^{2}}{\pi^2}} 
+\sqrt{1-k^{2}} \right) \right) \right)
\end{equation}
et on peut calculer le d\'eveloppement asymptotique de $J$ en 0
\begin{center}
\verb|series(J,k=0,5,1)|
\end{center}
qui renvoie~:
\[ J =\ln\left(\frac{\pi}{k}\right) +O( \left(\frac{-1}{\ln(k)}\right)^5)\]
on peut alors pr\'eciser ce d\'eveloppement par
\begin{center}
\verb|series(J+ln(k)-ln(pi),k=0,5,1)|
\end{center}
qui renvoie (apr\`es simplifications et où la notation $\tilde{O}$ peut contenir des logarithmes)
\[ \left(\frac{1}{\pi^2} + \frac{\ln(\pi)-\ln(k)-1}{2}\right) k^{2} + 
\tilde{O}(k^4)\]
donc
\begin{equation}
J=-\ln(k)+\ln(\pi)+\left(\frac{1}{\pi^2} + 
\frac{\ln(\pi)-\ln(k)-1}{2}\right) k^{2} + \tilde{O}(k^4)
\end{equation}
Examinons maintenant $K-J$, il n'a plus de singularit\'e en $y=0$, et il admet une limite
lorsque $k \rightarrow 0$, obtenue en remplacant $k$ par 0
\[ (K-J)_{|k=0} = \int_0^{\frac{\pi}{2}} \left(\frac{1}{\sin(y)}-\frac{1}{y}\right)
\ dy = \left[\ln\left(\tan\left(\frac{y}{2}\right)\right) - \ln(y) \right]_0^{\frac{\pi}{2}} =
\ln(\frac{4}{\pi})\]
D'o\`u pour $K$
\[ K_{k \rightarrow 0} = \ln\left(\frac{4}{k}\right) + O( \left(\frac{-1}{\ln(k)}\right)^5)\]
Pour pr\'eciser la partie du d\'eveloppement de $K$ en puissances de $k$, nous allons
majorer $K-J-\ln(4/\pi)$, puis $J-\ln(\pi/k)$.
Posons
\[ A=\sin(y)^2+k^2 \cos(y)^2, \quad B=y^2+(1-y^2)k^2\]
{\bf Majoration de $K-J-\ln(4/\pi)$}\\
L'int\'egrand de la diff\'erence $K-J-\ln(\frac{4}{\pi})$ est
\begin{eqnarray}  
\frac{1}{\sqrt{A}} - \frac{1}{\sqrt{B}} - 
\left( \frac{1}{\sin(y)}-\frac{1}{y} \right)
&= &
\frac{\sqrt{B}-\sqrt{A}}{\sqrt{A} \sqrt{B}} -
\frac{y-\sin(y)}{y\sin(y)} 
 \\
&= &
\frac{B-A}{\sqrt{A} \sqrt{B} (\sqrt{A}+\sqrt{B})} -
\frac{y-\sin(y)}{y\sin(y)} \label{eq:maj0}
 \\
&=& \frac{(y^2-\sin(y)^2)(1-k^2)}{\sqrt{A} \sqrt{B} (\sqrt{A}+\sqrt{B})}
- \frac{y-\sin(y)}{y\sin(y)} \label{eq:maj1}
\end{eqnarray}
Soit
\begin{equation} \label{eq:maj2}
 K-J-\ln(\frac{4}{\pi})= \int_0^{\frac{\pi}{2}} 
\frac{(y-\sin(y))[(1-k^2)y \sin(y)(y+\sin(y))-\sqrt{AB}(\sqrt{A}+\sqrt{B})]}
{\sqrt{A} \sqrt{B} (\sqrt{A}+\sqrt{B})y\sin(y)}
\end{equation}
On d\'ecompose l'int\'egrale en 2 parties $[0,k]$ et $[k,\pi/2]$.
Sur $[0,k]$ on utilise (\ref{eq:maj0}), on majore chaque terme s\'epar\'ement
et on minore $A$ et $B$ par
\[ A=k^2+(1-k^2)\sin(y)^2 \geq k^2, \quad B=k^2+(1-k^2)y^2 \geq k^2\]
Donc
\begin{eqnarray*} 
| \int_0^{k} | &\leq &\int_0^k \frac{|B-A|}{2k^3} \ dy + \int_0^k ( \frac{1}{\sin(y)}-\frac{1}{y} ) 
\ dy \\
&\leq& \int_0^k \frac{y^2-\sin(y)^2}{2k^3} \ dy + \ln (\tan(\frac{k}{2})) -\ln(\frac{k}{2}) \\
&\leq & \frac{\frac{1}{3} k^{3}+\frac{-1}{2} k+\frac{1}{4} \sin(2 k)}{2 k^{3}} 
+ \ln (\sin(\frac{k}{2})) -\ln(\frac{k}{2}) - \ln (\cos(\frac{k}{2}))
\\
&\leq & \frac{\frac{1}{3} k^{3}+\frac{-1}{2} k+\frac{1}{4} (2k-\frac{8k^3}{6}+\frac{32k^5}{5!}}{2 k^{3}} - \ln (\cos(\frac{k}{2})) \\
&\leq & \frac{k^2}{30}-  \ln (1- \frac{1}{2!}\left(\frac{k}{2}\right)^2) \\
&\leq &  \frac{k^2}{30} +\frac{k^2}{4}
\end{eqnarray*}
Sur $[k,\pi/2]$, on utilise (\ref{eq:maj2})
et on minore $A$ et $B$ par
\[ A=\sin(y)^2+k^2 \cos(y)^2 \geq \sin(y)^2, \quad B=y^2+(1-y^2)k^2 \geq y^2\]
on obtient
\[ 
| \int_k^{\frac{\pi}{2}} | \leq  \int_k^{\frac{\pi}{2}}
\frac{(y-\sin(y))|C|}
{y \sin(y) (y+\sin(y))} , 
\]
où~:
\begin{eqnarray*}
C&=&(1-k^2)y \sin(y)(y+\sin(y))-A\sqrt{B}+B\sqrt{A} \\
&=& -A(\sqrt{B}-y)-B(\sqrt{A}-\sin(y))
-Ay-B\sin(y) + (1-k^2)y \sin(y)(y+\sin(y)) \\
&=& -A(\sqrt{B}-y)-B(\sqrt{A}-\sin(y)) - k^2(y+\sin(y))
\end{eqnarray*}
Donc
\begin{eqnarray*}
 |C| &\leq& A(\sqrt{B}-y)+B(\sqrt{A}-\sin(y)) + k^2(y+\sin(y)) \\
&\leq& A \frac{B-y^2}{\sqrt{B}+y}
+ B \frac{A-\sin(y)^2}{\sqrt{A}+\sin(y)} + k^2(y+\sin(y)) \\
&\leq & A \frac{k^2}{2y} + B \frac{k^2}{2\sin(y)} + k^2(y+\sin(y))
\end{eqnarray*}
et
\[ 
| \int_k^{\frac{\pi}{2}} | \leq 
\int_k^{\frac{\pi}{2} }
\frac{(y-\sin(y))k^2(\frac{A}{2y} + \frac{B}{2\sin(y)} + (y+\sin(y))) }
{y \sin(y) (y+\sin(y))}
\]
On peut majorer $y-\sin(y) \leq y^3/6$, donc
\[ 
| \int_k^{\frac{\pi}{2}} | \leq 
\frac{k^2}{6} \int_k^{\frac{\pi}{2}}
 \frac{Ay}{2\sin(y) (\sin(y)+y)} + \frac{By^2}{\sin(y)^2(\sin(y)+y)} + \frac{y^2}{\sin(y)}
\]
On majore enfin $A$ et $B$ par 1, 
\[ | \int_k^{\frac{\pi}{2}} |
\leq \frac{k^2}{6} \int_k^{\frac{\pi}{2}}
\frac{y}{2\sin(y)^2} + \frac{y^2}{\sin(y)}
\]
Le premier morceau se calcule par int\'egration par parties
\begin{eqnarray*}
\frac{k^2}{6} \int_k^{\frac{\pi}{2}}
\frac{y}{2\sin(y)^2}
&=&
\frac{k^2}{6} \left( [-\frac{y}{\tan(y)}]_k^{\pi/2} 
+ \int_k^{\frac{\pi}{2}} \frac{1}{\tan(y)}
\right) \\
&=& \frac{k^2}{6} \left(\frac{k}{\tan(k)}+ [\ln(\sin(y))]_k^{\frac{\pi}{2}} \right)\\
&=& \frac{k^2}{6} \left(\frac{k}{\tan(k)}-\ln(\sin(k)) \right)\\
&\leq &  \frac{k^2}{6}(1-\ln(k))
\end{eqnarray*}
Le deuxi\`eme morceau se majore en minorant $\sin(y)\geq (2y)/\pi$
\[ 
\frac{k^2}{6} \int_k^{\frac{\pi}{2}} \frac{y^2}{\sin(y)}
\leq \frac{k^2}{6} \int_0^{\frac{\pi}{2}} \frac{\pi}{2} y
= \frac{k^2\pi^3}{96} 
\]
Finalement
\[ |K-J-\ln(\frac{4}{\pi})| 
\leq k^2 \left( -\frac{1}{6} \ln(k) + \frac{\pi^3}{96} + \frac{1}{6} + \frac{1}{30}+ 
\frac{1}{4} \right)
\]
où $J$ est donn\'e en (\ref{eq:J}).

{\bf Majoration de $J-ln(\pi/k)$}\\
On a
\[ |J - \ln\left(\frac{\pi}{k}\right)|
= \left| (\frac{1}{\sqrt{1-k^2}}-1) \ln\left(\frac{\pi}{k}\right)
+ \frac{1}{\sqrt{1-k^2}}
\ln\left( \frac{1}{2} \left(\sqrt{ 1-k^{2} +4 \frac{k^{2}}{\pi^2}} 
+\sqrt{1-k^{2}} \right) \right) \right| \]
et on va majorer la valeur absolue de chaque terme de la somme.
Pour $k\leq 1/2$, on a
\[ \frac{1}{\sqrt{1-k^2}}-1=\frac{k^2}{\sqrt{1-k^2}+1-k^2} \leq \frac{k^2}{3/4+\sqrt{3}/2} \]
Pour le second terme, on majore le facteur $\frac{1}{\sqrt{1-k^2}}$ par $\frac{2}{\sqrt{3}}$,
l'argument du logarithme est inf\'erieur à 1 et sup\'erieur à
\[ 
\frac{1}{2}(1 - \frac{k^2}{2} +1- \frac{k^2(1-\frac{4}{\pi^2})}{2})
= 1 - k^2 ( 1-\frac{1}{\pi^2}) > 1-k^2
\]
donc le logarithme en valeur absolue est inf\'erieur à
\[ 2 k^2 \]
donc, pour $k\leq 1/2$,
\[ |J-\ln\left(\frac{\pi}{k}\right)| \leq 
\frac{k^2}{3/4+\sqrt{3}/2} \ln\left(\frac{\pi}{k}\right)
+ k^2 \frac{4}{\sqrt{3}} 
\]
Finalement, pour $k<1/2$
\begin{equation} \label{eq:ln_agm0}
 |K-\ln\left(\frac{4}{k}\right) | 
\leq k^2 \left( \frac{\ln \pi}{3/4+\sqrt{3}/2}  + \frac{4}{\sqrt{3} }
+ \frac{\pi^3}{96} + \frac{9}{20}
- (\frac{1}{3/4+\sqrt{3}/2}+\frac{1}{6}) \ln(k) \right) 
\end{equation}
que l'on peut r\'e\'ecrire
\begin{equation} \label{eq:ln_agm}
|\frac{\pi}{2M(1,k)}-\ln\left(\frac{4}{k}\right) |
\leq  k^2(3.8-0.8\ln(k))
\end{equation}
La formule (\ref{eq:ln_agm}) 
permet de calculer le logarithme d'un r\'eel positif
avec (presque) $n$ bits 
lorsque $k \leq 2^{-n/2}$ (ce \`a quoi on peut toujours se ramener
en calculant le logarithme d'une puissance $2^m$-i\`eme de $x$ ou
le logarithme de $2^{m}x$, en calculant au pr\'ealable $\ln(2)$).
Par exemple, prenons $k=2^{-27}$, on trouve (en 8 it\'erations)
$M(1,2^-{27})=M_1=0.0781441403763$. 
On a, avec une erreur inf\'erieure à $19 \times 2^{-54}=1.1\times 10^{-15}$
\[ 
M(1,2^-{27})=M_1=\frac{\pi}{2\ln(2^{29})}=\frac{\pi}{58\ln(2)},
\] 
On peut donc d\'eduire une valeur approch\'ee de $\pi $ si on connait
la valeur approch\'ee de $\ln(2)$ et r\'eciproquement.
Si on veut calculer les deux simultan\'ement, comme les relations entre $\ln$
et $\pi$ seront des \'equations homog\`enes, on est oblig\'e
d'introduire une autre relation. Par exemple pour calculer une
valeur approch\'ee de $\pi$ on calcule la diff\'erence
$\ln(2^{29}+1)-\ln(2^{29})$ dont on connait le d\'eveloppement au premier
ordre, et on applique la formule de la moyenne arithm\'etico-g\'eom\'etrique.
Il faut faire attention \`a la perte de pr\'ecision lorsqu'on fait
la diff\'erence des deux logarithmes qui sont tr\`es proches, ainsi
on va perdre une trentaine de bits, il faut grosso modo calculer les
moyennes arithm\'etico-g\'eom\'etrique avec
2 fois plus de chiffres significatifs.

L'int\'er\^et de cet algorithme apparait lorsqu'on veut calculer
le logarithme avec beaucoup de pr\'ecision, en raison de la
convergence quadratique de la moyenne arithm\'etico-g\'eom\'etrique
(qui est nettement meilleure que la convergence lin\'eaire
pour les d\'eveloppements en s\'erie, ou logarithmiquement
meilleure pour l'exponentielle), par contre elle n'est pas
performante si on ne veut qu'une dizaine de chiffres significatifs. 
On peut alors calculer les autres
fonctions transcendantes usuelles, telle l'exponentielle,
\`a partir du logarithme, ou les fonctions trigonom\'etriques
inverses (en utilisant des complexes) et directes.

On trouvera dans Brent-Zimmermann quelques consid\'erations permettant
d'am\'eliorer les constantes dans les temps de calcul par rapport
\`a cette m\'ethode (cela n\'ecessite d'introduire des fonctions 
sp\'eciales $\theta$) et d'autres formules pour calculer $\pi$.

\end{giacjshere}
\end{document}

%%% Local Variables: 
%%% mode: latex
%%% TeX-master: t
%%% End: 
\section{Polynômes~: arithm\'etique,  factorisation, 
interpolation}

\subsection{Arithm\'etique des polynomes: B\'ezout et applications}
On consid\`ere les polyn\^omes \`a une variable \`a coefficients
dans $\R$ ou $\C$ ou $\Q$. Les algorithmes de base d\'ej\`a
\'evoqu\'es sont l'\'evaluation en un point (m\'ethode de Horner),
l'addition, la soustraction, la multiplication et la division 
euclidienne de $A$ par $B \neq 0$~:
\[ 
A = B Q + R, \quad \mbox{deg}(R)< \mbox{deg}(B) 
\]

A l'aide de la division euclidienne, on peut calculer le PGCD de
deux polyn\^omes par l'algorithme d'Euclide. Nous allons pr\'esenter
l'algorithme d'Euclide \'etendu (ou de B\'ezout)
\begin{theorem}
\'Etant donn\'es 2 polyn\^omes $A$ et $B$, il existe deux polyn\^omes $U$,
$V$ tels que 
\[ AU + B V =
\mbox{pgcd} (A,B) , \quad \mbox{deg}(U) < \mbox{deg}(B), 
\mbox{deg}(V) < \mbox{deg}(A)
\]
\end{theorem}

Algorithme~: \index{Bezout}\\
On construit en fait 3 suites $(U_n)$, $(V_n)$ et $(R_n)$ telles que~:
\[ AU_n + B V_n = R_n \]
\begin{itemize}
\item on initialise $U_0=1, V_0=0, R_0=A$ et $U_1=0, V_1=1, R_1=B$
\item on calcule les indices $n+2$ en fonction de $n$ et $n+1$
en effectuant la division euclidienne de $R_n$ par $R_{n+1}$
\[ R_n = Q_n R_{n+1} + R_{n+2}, \quad 
U_{n+2}= U_n - Q_n U_{n+1},
V_{n+2} = V_n - Q_n V_{n+1}
\]
\item on s'arr\^ete au dernier reste non nul
\end{itemize}

Exemple~:\\
$A=x^3-1, B=x^2+1$, les rangs 0 et 1 sont donn\'es ci-dessus.
Au rang 2, $Q_0$ est le quotient euclidien de $A$ par $B$ (fonction
\verb|quo|) donc $x$, d'où
\[ U_2=1, V_2= -x, R_2=-x-1\]
Puis on divise $x^2+1$ par $-x-1$, quotient $-x+1$, donc
\[ U_3=x-1, V_3=1+x(-x+1)=1+x-x^2, R_3=2 \]

Preuve de l'algorithme~:\\
On montre facilement par r\'ecurrence que la relation $AU_n + B V_n =
R_n$ est conserv\'ee. Comme $R_n$ est la suite des restes, le dernier
reste non nul est bien le pgcd de $A$ et $B$. 
D'autre part, examinons les degr\'es des $V_k$. Supposons que
deg$(A) \geq $ deg$(B)$ (sinon on \'echange $A$ et $B$).
Au rang $n=0$, $V_0=0$ donc $V_2=-Q_0 V_1$, aux rangs suivants
le degr\'e de $Q_n$ est non nul (car le degr\'e de $R_{n+1}$ est
strictement inf\'erieur au degr\'e de $R_n$)
On montre donc par r\'ecurrence que la suite des degr\'es de $V_n$
est croissante et que~:
\[ \mbox{deg} (V_{n+2}) = \mbox{deg}(Q_n)+\mbox{deg}(V_{n+1}) \] 
Comme deg$(Q_n)$=deg$(R_n)$-deg$(R_{n+1})$, on en d\'eduit que
\[ \mbox{deg}(V_{n+2})+\mbox{deg}(R_{n+1})
= \mbox{deg}(V_{n+1})+\mbox{deg}(R_{n}) = ... =  
\mbox{deg}(V_1)+\mbox{deg}(R_0 ) = \mbox{deg}(A)
\]
Donc si $n+2$ est le rang du dernier reste non nul, $V_{n+2}=V$ et
deg$V$=deg$A$-deg$R_{n+1}$ est donc strictement
inf\'erieur au degr\'e de $A$ (car $R_{n+1}$,
l'avant-dernier reste non nul,
est de degr\'e plus grand ou \'egal \`a 1).
On en d\'eduit enfin que le degr\'e de $U$ est strictement
inf\'erieur au degr\'e de $B$, car $AU=R-BV$, le degr\'e
de $BV$ est strictement inf\'erieur \`a celui de $B$ plus
celui de $A$.

L'identit\'e de B\'ezout permet de r\'esoudre plus g\'en\'eralement
une \'equation du type
\[ Au+Bv=C\]
o\`u $A,B,C$ sont trois polyn\^omes donn\'es, \`a condition que
$C$ soit divisible par le pgcd de $A$ et $B$. 
L'ensemble des solutions s'obtient \`a partir d'une solution
particuli\`ere $U,V$ de B\'ezout, notons $c=C/\mbox{gcd}(A,B)$,
on a alors 
\[ A(cU) + B(cV)=c\ \mbox{gcd}(A,B) = C \]
et l'ensemble des solutions est donn\'e par
$u=cU-PB, v=cV+PA$ o\`u $P$ est un polyn\^ome
quelconque.
Si le degr\'e de $C$ est plus petit que le degr\'e de $A$
plus le degr\'e de $B$, il existe une solution 
``priviligi\'ee'', on prend pour $u$ le reste de la division
euclidienne de $cU$ par $B$, $v$ est alors le reste
de la division euclidienne de $cV$ par $A$ pour des
raisons de degr\'e.

Exemple~: si on veut r\'esoudre
\[ (x^3-1)u+(x^2+1)v=2x^2\]
on multiplie $U=x-1$ et $V=1+x-x^2$ par $x^2$ ce qui donne une solution
\[ u=x^2(x-1), \quad v=x^2(1+x-x^2) \]
l'ensemble des solutions est de la forme
\[ u+P(x^2+1), \quad v-P(x^3-1) \]
et la solution priviligi\'ee (de degr\'es minimaux) est
\[ -x+1=\mbox{rem}(x^2(x-1),x^2+1), \quad
x^2-x+1=\mbox{rem}(x^2(1+x-x^2),x^3-1)\]

L'identit\'e de B\'ezout intervient dans de nombreux probl\`emes
en particulier la d\'ecomposition en \'el\'ements simples d'une fraction
rationnelle. Si le d\'enominateur $D$ d'une fraction se factorise
en produit de 2 facteurs $D=AB$ premiers entre eux, alors
il existe deux polyn\^omes $u$ et $v$ tels que $N=Au+Bv$, donc
\[ \frac{N}{D} = \frac{Au+Bv} {AB} = \frac{u}{B} + \frac{v}{A} \]
Si de plus $N/D$ est une fraction propre (degr\'e de $N$ plus petit
que celui de $D$), alors $u/B$ et $v/A$ sont encore des fractions
propres (en calculant le reste de la division euclidienne pour $u$ et
$v$ comme expliqu\'e ci-dessus).

Par exemple~: 
\[ \frac{2x^2}{(x^3-1)(x^2+1)} = 
\frac{(-x+1)(x^3-1)+(x^2-x+1)(x^2+1)}{(x^3-1)(x^2+1)}
= \frac{-x+1}{x^2+1} + \frac{x^2-x+1}{x^3-1}
\]

Les applications sont diverses, citons
\begin{itemize}
\item le calcul de primitive de fraction rationnelles (et tout
ce qui s'y ram\`ene), par exemple
\[ \int \frac{2x^2}{(x^3-1)(x^2+1)} = 
= \int \frac{-x+1}{x^2+1} + \int \frac{x^2-x+1}{x^3-1}
\]
Puis on fait apparaitre la d\'eriv\'ee du d\'enominateur au num\'erateur
pour \'eliminer les $x$, $2x=(x^2+1)'$
\begin{eqnarray*}
 \int \frac{-x+1}{x^2+1} &= &-\frac{1}{2} \int \frac{(x^2+1)'}{x^2+1}
+ \int  \frac{1}{x^2+1} + \int \frac{x^2-x+1}{x^3-1} \\
&=& -\frac{1}{2} \ln(x^2+1) + \arctan(x)+\int \frac{x^2-x+1}{x^3-1}
\end{eqnarray*}
pour faire le calcul complet, il faut aussi d\'ecomposer
la fraction restante (exercice!)
\item Le calcul de la fonction exponentielle (\`a nouveau).
Au lieu d'utiliser $T$
le d\'eveloppement de Taylor en 0 par exemple \`a l'ordre
10, on cherche une fraction rationnelle $N/D$ ayant le m\^eme
d\'eveloppement de Taylor que l'exponentielle en 0 avec
degr\'e de $N$ et de $D$ major\'es par 5. Pour trouver $N$ et $D$
on multiplie la condition $N/D=T+O(x^{11})$ par $D$ ce qui donne
\[ N=DT+O(x^{11})=DT+Px^{11}\]
on applique l'algorithme de B\'ezout aux polyn\^omes $x^{11}$ et $T$
en s'arr\^etant pr\'ematur\'ement, lorsque le reste est de degr\'e 5,
on montre alors que le reste est $N$ et le coefficient de B\'ezout
de $T$ est $D$. On peut alors montrer que l'approximation
est un peu meilleure, et n\'ecessite moins d'op\'erations
(il y a une certaine sym\'etrie entre les termes de $N$ et $D$).
\item le calcul de transform\'ee de Laplace inverse de fractions
rationnelles, l'id\'ee est la même, sauf qu'on remplace l'int\'egrale
par la transform\'ee de Laplace inverse (et les formules donnant
la transform\'ee inverse de $1/(x-p)$, $1/(x^2+p^2)$, $p/(x^2+p^2)$
respectivement $\exp(px), \sin(xp)/p, \cos(px)$)
(calcul non exigible à l'examen)
\item le calcul du terme d'ordre $n$ du d\'eveloppement de Taylor
en 0 d'une fraction rationnelle. On d\'ecompose, et on se ram\`ene à des
s\'eries dont le terme g\'en\'eral est connu, comme $(a+x)^{-n}$.
Par exemple pour connaitre le d\'eveloppement de $1/(x^2-3x+2)$,
on factorise le d\'enominateur $1/((x-1)(x-2))$, on d\'ecompose
\[ \frac{1}{(x-1)(x-2)} = \frac{-1}{x-1} + \frac{1}{x-2} 
= \frac{1}{1-x} - \frac{1}{2} \frac{1}{1-\frac{x}{2}}\]
et on d\'eveloppe, le terme d'ordre $n$ est donc $1-(1/2)^ {n+1}$.
%\item Le calcul de sommes de s\'eries de certaines fractions rationnelles.
\end{itemize}

Il faut n\'eanmoins savoir factoriser un polyn\^ome, ce dont nous
parlerons dans la section suivante.

Exercice~:
Calculer l'int\'egrale
\[ \int \frac{1}{(x-1)(x^2+1)} \]
en utilisant l'identit\'e de B\'ezout pour d\'ecomposer la fraction rationnelle.
Trouver à l'aide de cette d\'ecomposition le terme d'ordre
$n$ du d\'eveloppement de Taylor de la fraction à int\'egrer, v\'erifier
avec un logiciel de calcul formel que les termes d'ordre 0 à 3 sont
corrects.

Una autre application est l'\'elimination dans les syst\`emes
polynomiaux, par exemple consid\'erons le syst\`eme de 2 \'equations
\`a 2 inconnues (intersection d'une ellipse et d'un cercle)~:
\[ x^2+y^2-9=0, x^2+2y^2-2xy-7=0\]
En calculant les coefficients de B\'ezout des 2 polyn\^omes en $x$
$x^2+y^2-9$ et $x^2+2y^2-2xy-7$ et en multipliant au besoin par
le PPCM (plus grand commun multiple) des d\'enominateurs, on obtient
\`a droite de l'\'equation de B\'ezout un polyn\^ome ne d\'ependant que
de $y$ et qui s'annule aussi aux solutions du syst\`eme, on peut alors
r\'esoudre en $y$ (en factorisant) puis en $x$. Ici par exemple 
ce polynome est $5y^4-32y^2+4$.
Cette m\'ethode se syst\'ematise, le polynome obtenu par \'elimination
d'une variable est appel\'e r\'esultant. 
%Liens: 
%\verb|formation.etud.u-psud.fr/maths/mathsenligne.pdf|\\
%\verb|http://wims.unice.fr/wims/fr_tool~arithmetic~bezout.html|


\subsection{Factorisation des polyn\^omes}
Soit $P$ un polyn\^ome de degr\'e non nul. Factoriser $P$ n'a pas
une signification unique, tout d\'epend d'une part si on veut 
une factorisation exacte ou approch\'ee, et d'autre part quels seront
les types des coefficients de la factorisation (complexes, r\'eels,
entiers).

\subsubsection{Multiplicit\'e des racines.} \index{factorisation}
\index{multiplicite} \index{racine}
On dit que $r$ est une racine de multiplicit\'e $k$ de $P$ si
$P(x)=(x-r)^k Q$ et $Q(r)\neq 0$.

En faisant le d\'eveloppement de Taylor de $P$ en $r$ \`a l'ordre
degr\'e de $P$, on voit que cela \'equivaut \`a~:
\[ P(r)=P'(r)=...=P^{[k-1]}(r)=0, \quad P^{[k]}(r) \neq 0 \]
En particulier si $P(r)=0$, on peut factoriser $P$ par $X-r$.

On peut donc d\'etecter les racines de multiplicit\'e sup\'erieure
\`a 1 en cherchant un facteur commun \`a $P$ et $P'$, en effet $x-r$
divisera $P$ et $P'$. 

\begin{theorem} 
Si $P$ et $P'$ sont premiers entre eux (pgcd = 1), alors les
racines de $P$ sont simples (de multiplicit\'e 1).
\end{theorem}

Il existe un algorithme (d\^u \`a Yun) qui permet d'\'ecrire un
polynome quelconque comme produit de polyn\^omes dont les racines
sont simples en effectuant uniquement des calculs de PGCD de
polynomes.
\index{squarefree}
\begin{verbatim}
yun(P):= { 
  local W,Y,G,res; 
  W:=P;  
  Y:=diff(W,x);  
  res:=NULL;  
  while(true){ 
    if (Y==0) { 
      return res[1..size(res)-1],W;  
    };  
  G:=gcd(Y,W);  
  res:=res,G;  
  W:=normal(W/G);  
  Y:=normal(Y/G-diff(W,x));  
  };  
}
\end{verbatim}
L'instruction \verb|squarefree| ou \'equivalente
de votre logiciel de calcul formel effectue cette d\'ecomposition.

\subsubsection{Factorisation dans $\C$.}
Reste maintenant \`a trouver des racines!
On a le~:
\begin{theorem} (d'Alembert) \index{factorisation}\\
Soit $P$ un polynome de degr\'e non nul, alors $P$ admet au moins
une racine complexe.
\end{theorem}
On peut alors factoriser $P$ par $X-r$ si $r$ est la racine, et 
recommencer avec le quotient, d'o\`u le corollaire.
\begin{theorem}
Soit $P$ un polynome de degr\'e $n$ non nul, alors $P$ admet $n$
racines complexes (compt\'ees avec multiplicit\'e) $x_1,...,x_n$,
on a donc~:
\begin{equation} \label{eq:factorisation}
 P(X)=a_n \prod_{j=1}^n (X-x_j) 
\end{equation}
o\`u $a_n$ est le coefficient dominant de $P$.
\end{theorem}

D\'emonstration du th\'eor\`eme de d'Alembert~:\\
On va montrer que le minimum de la valeur absolue de $P$ est atteint
en un nombre complexe puis que ce minimum est forc\'ement nul.
Soit 
\[ P(x)=a_n x^n + ... + a_0, \quad a_n \neq 0 \]
Lorsque $|x|$ tend vers l'infini, $|P(x)|$ tend vers l'infini, en
effet
\[ P(x)= a_n x^n ( 1 + \frac{a_{n-1}}{a_n} \frac{1}{x} + ... 
+ \frac{a_0}{a_n} \frac{1}{x^n}) \approx_{|x|\rightarrow \infty} a_n x^n \]
plus pr\'ecis\'ement il existe $R>0$ tel que si 
$|x|>R$ alors $|P(x)|>|a_n| |x|^n/2$. Quitte \`a augmenter $R$ on
peut donc supposer que $|P(x)|>|P(0)|$ si $|x|>R$, donc il existe
un complexe $x_0$ qui r\'ealise le minimum de $|P|$ sur $\C$ (ce
minimum est en fait le minimum pour $|x|\leq R$). On va montrer par
l'absurde que ce minimum est nul (donc que $x_0$ est la racine
cherch\'ee). Supposons donc que $P(x_0) \neq 0$. On fait le
d\'eveloppement de Taylor de $P$ en $x_0$ \`a l'ordre $n$=degr\'e de $P$, donc
le d\'eveloppement n'a pas de reste~:
\[ P(x) - P(x_0) = (x-x_0) P'(x_0) + .. + (x-x_0)^n
\frac{P^{[n]}(x_0)}{n!}\]
Comme $P$ n'est pas constant, l'un des termes du membre de droite est
non nul, soit $k$ l'indice du premier terme non nul, on a alors~:
\[ P(x) = P(x_0) + (x-x_0)^k
\frac{P^{[k]}(x_0)}{k!} + o((x-x_0)^k)
\]
Comme $P(x_0) \neq 0$, on peut le factoriser en~:
\[ P(x) = P(x_0)( 1 + (x-x_0)^k \frac{P^{[k]}(x_0)}{P(x_0) k!} +
o((x-x_0)^k)
\]
on pose alors $x=x_0+t w$ o\`u $w$ est une racine $k$-i\`eme (cela
existe dans $\C$) de
\[ \left(\frac{-P^{[k]}(x_0)}{P(x_0) k!} \right)^{-1} \]
on a alors~:
\[ P(x)=P(x_0)(1-t^k+o(t^{k+1}))\]
lorsque $t$ est positif, suffisamment petit, on a $0 < 1-t^k+o(t^{k+1}
< 1$, donc $|P(x)|<|P(x_0)|$, ce qui est absurde ($x_0$ r\'ealisant 
le minimum de $P$ sur $\C$).

{\bf Remarque}~:\\
Si on d\'eveloppe la relation (\ref{eq:factorisation}), on obtient
des relations entre les coefficients du polynome et les racines, par
exemple~:
\[ a_{n-1}=a_n \sum{j=1}^n (-x_j), ...,\quad
a_0 = a_n \prod_{j=1}^n (-x_j), 
 \]

\subsubsection{Factorisation dans $\R$, localisation des racines}
\index{factorisation}
Pour factoriser un polyn\^ome \`a coefficients r\'eels, on commence
par le factoriser dans $\C$. On observe ensuite que si $r$ est
une racine complexe non r\'eelle de $P$, alors son conjugu\'e
l'est aussi (il suffit de prendre le conjugue de la relation $P(r)=0$)
et avec la m\^eme multiplicit\'e (les d\'eriv\'ees successives
de $P$ \'etant aussi \`a coefficients r\'eels). On regroupe alors
les facteurs correspondant \`a des racines complexes conjugu\'ees~:
\[ (X-r)(X-\overline{r}) = X^2 - (r+\overline{r})X+r\overline{r}
= X^2 - 2 \Re(r) X + |r|^2 \]
Finalement, on a le~:
\begin{theorem}
La factorisation d'un polyn\^ome \`a coefficients r\'eels
sur $\R$ donne un produit de facteurs de degr\'e 1 (correspondant
\`a des racines r\'eelles) et de degr\'e 2 (correspondant \`a
des paires de racines complexes conjugu\'ees)
\end{theorem}

Il existe un algorithme utilisant l'algorithme de calcul du PGCD 
de $P$ et $P'$ qui permet de d\'eterminer le nombre de 
racines r\'eelles d'un polyn\^ome $P$ sans racine multiple
sur $\R$ ou dans un intervalle de $R$.
\begin{theorem} \index{Sturm}
On d\'efinit la suite de polyn\^omes $A_0=P, A_1=P', ..., A_k,0$
en prenant l'oppos\'e du reste de la division euclidienne des deux
pr\'ec\'dents~:
\begin{equation} \label{eq:sturm}
 A_{i} = A_{i+1} Q_{i+2} - A_{i+2} 
\end{equation}
Soit $A_k$, le dernier reste non nul, c'est un polyn\^ome constant puisque
$P$ n'a pas de racine multiple. 
On d\'efinit $s(a)$ comme \'etant le nombre de changements de signes
de la suite $A_i(a)$ en ignorant les 0.
Alors le nombre de racines r\'eelles de $A_0=P$ sur l'intervalle
$]a,b]$ est \'egal \`a $s(a)-s(b)$.
\end{theorem}

{\bf Exemple}~:\\
Quel est le nombre de racines r\'eelles de $P=x^3+x+1$
sur $[-2,2]$? sur $[0,2]$?\\
On a donc
\[ A_0=x^3+x+1, \quad A_1=P'=3x^2+1, \quad
A_2=-\mbox{rem}(A_0,A_1,x)=-\frac{2}{3} x-1,
\quad A_3=-\frac{31}{4} \]
En $x=-2$ on obtient la suite $-9,13,1/3,-31/4$ (2 changements de
signe), en $x=2$ on obtient la suite $11,13,-7/3,-31/4$ (1 changement
de signe), il y a donc 1 racine r\'eelle entre -2 et 2. En $x=0$
on obtient la suite $1,1,-1,-31/4$ (1 changement de signe) donc la
racine r\'eelle est entre -2 et 0.

{\bf Preuve}\\
On consid\'ere la suite des signes en un point~: elle ne peut contenir
deux 0 successifs (sinon toute la suite vaudrait 0 en ce point en appliquant
(\ref{eq:sturm}), or $A_k$ est constant non nul). Elle ne peut pas
non plus contenir ...,+,0,+,... ni ...,-,0,-,... 
\`a cause de la convention de signe
sur les restes de (\ref{eq:sturm}). Donc si $b$ est une racine
de $A_i$ pour $0<i<k$, alors en $b$ on a soit ...,-,0,+,... soit
...,+,0,-,... . Regardons le premier cas (le deuxi\`eme cas se traite
de mani\`ere analogue), pour $x$ proche de $b$, on va avoir
...,-,-,+,... ou ...,-,+,+,... dans les 2 cas la contribution au 
nombre de changements de signe est constant (\'egal \`a 1).

Comme $A_k$ est constant, seules les racines de $A_0=P$
sont susceptibles de faire varier $s$. Comme $A_1=P'$, le sens de
variations de $A_0$ au voisinage d'une racine de $A_0$ est d\'etermin\'e
par le signe de $A_1$, donc lorsque $x$ augmente en traversant une
racine $r$ de $P$, il y a deux possibilit\'es soit $P$ est croissant
et on passe de -,+,... \`a +,+,..., soit $P$ est d\'ecroissant et
on passe +,-,... \`a -,-,.... Dans les deux cas, on diminue 
$s$ d'une unit\'e.

{\bf Application}~:\\
Si il n'existe pas de racines r\'eelles dans un intervalle donn\'e,
alors le polynôme garde un signe constant sur cet intervalle,
que l'on peut d\'eterminer en calculant la valeur du polynôme
en un point de cet intervalle. On peut ainsi \'etablir
dans certains cas que la m\'ethode de Newton pour trouver une racine
d'un polynôme convergera.

Par exemple pour le polynôme $P=3x^5-10x^3+30x^2-x-45$, on a
$P'{'}=60(x^3-x+1)$, est positif sur $\R^+$ (exercice~: calculer
la suite de Sturm correspondante pour le v\'erifier). On v\'erifie
que $P(1)<0$ et $P'(1)>0$ donc il existe une racine $r>1$ telle
que $P'(r)>0$, toute valeur de d\'epart de Newton sup\'erieure
à $r$ assure la convergence. 

{\bf Remarque}~:\\
On peut aussi d\'eterminer les racines r\'eelles d'un polyn\^ome
\`a coefficients rationnels
en faisant uniquement des calculs exacts par dichotomie.
Cette m\'ethode de localisation des racines r\'eelles se
g\'en\'eralise d'ailleurs au cas complexe. On peut ainsi d\'eterminer les
racines complexes d'un polyn\^ome \`a coefficients complexes
rationnels de mani\`ere d\'eterministe \`a la pr\'ecision voulue 
(cf. Eisermann).

\subsubsection{Factorisation exacte}
\index{factorisation}
Soit $P$ un polyn\^ome \`a coefficients entiers. Lorsqu'on demande
\`a un logiciel de calcul formel de factoriser $P$, par d\'efaut
il ne calcule pas les racines complexes approch\'ees, mais renvoie
une factorisation {\bf exacte}, sous forme de produit de facteurs
\`a coefficients {\bf entiers}. Les degr\'es des facteurs peuvent
\^etre plus grand que 2. Par exemple $x^4+x+1$ ne peut pas
\^etre factoris\'e en produit de polyn\^omes \`a coefficients entiers
(bien qu'il ait 2 facteurs de degr\'e 2 dans $\R$ et 4 de degr\'e 1
dans $\C$).

\index{racines rationnelles}
Commencons par une m\'ethode simple de calcul des racines rationnelles 
de $P$ (les racines rationnelles correspondent \`a des facteurs entiers de
degr\'e 1 de la forme $qX-p$ de $P$).
Soit $x=p/q$ une
racine rationnelle \'ecrite sous forme de fraction
irr\'eductible de $P=a_n X^n+...+a_0$, on a alors
\[ 0 = P(\frac{p}{q}) = a_n \frac{p^n}{q^n}
+ a_{n-1} \frac{p^{n-1}}{q^{n-1}} + ... + a_0
= \frac{a_n p^n + a_{n-1} p^{n-1}q+...+a_1 p q^{n-1}+ a_0 q^n}{q^n}\]
Donc~:
\[ p(a_n p^{n-1} + a_{n-1} p^{n-1}q+...+a_1 q^{n-1}) = - a_0 q^n \]
et $p$ divise donc $a_0 q^n$. Comme $p/q$ est irr\'eductible,
cela entraine que $p$ divise $a_0$. De m\^eme $q$ divise $a_n$.
Il suffit donc de tester quelles sont les racines de $P$ parmi
toutes les fractions irr\'eductibles
de la forme un diviseur de $a_0$ sur un diviseur de $a_n$ (attention
\`a ne pas oublier les diviseurs n\'egatifs!).

Exemple: racines rationnelles de $2x^2+3x+1=0$. On a $p$ divise $1$
donc vaut 1 ou -1, $q$ divise $2$ donc vaut 1 ou 2. On teste
donc 1, -1, 1/2, -1/2. On obtient ici la factorisation compl\`ete
du polynome (les racines sont -1 et -1/2)
\[ 2x^2+3x+1=2(x+1)(x+1/2) \]

{\bf Remarques}~: 
\begin{itemize}
\item Pour un polynome al\'eatoire, on ne trouvera aucune racine
rationnelle.
\item
Cette m\'ethode n'est pas tr\`es efficace, car factoriser
un entier peut \^etre long, le nombre de tests peut \^etre tr\`es
grand (si $a_n$ et $a_0$ ont beaucoup de facteurs), les logiciels
de calcul formel utilisent des m\'ethodes appel\'ees $p$-adiques pour trouver
les racines rationnelles d'un polynome (on calcule d'abord les racines
de $P$ modulo $p$ puis modulo $p^k$ pour $k$ assez grand).
On pourrait aussi penser à calculer les racines complexes approch\'ees
et voir si en multipliant par $a_n$ on est proche d'un entier,
on testerait alors le rationnel correspondant.
\end{itemize}

Pour d\'eterminer les facteurs \`a coefficients entiers de plus
grand degr\'e, il n'existe pas de m\'ethode aussi simple.
On peut calculer des valeurs approch\'ees des racines complexes
et essayer de cr\'eer des paquets de racines complexes, puis tester
si $a_n\prod_{r \in \mbox{paquet}} (X-r)$ est \`a coefficients entier
(aux erreurs d'arrondi pr\`es). Par exemple si on calcule les
racines complexes approch\'ees de $x^6+2x^3-x^2+1$, on pourra composer 
un facteur de degr\'e 3 \`a coefficients entiers en rassemblant 
les racines de $x^3+x+1$.
Les logiciels de calcul formel utilisent des algorithmes modulaires
et $p$-adiques (consistant \`a factoriser le polynome modulo $p$).


\section{R\'eduction exacte des endomorphismes} \index{diagonalisation}
On calcule le polynome caract\'eristique ou le polynome minimal, 
on le factorise, et on calcule ensuite le noyau de $A-\lambda I$
pour les $\lambda$ racines. Il existe des m\'ethodes \'evitant
le calcul de noyau, m\'ethode de Fadeev-Laguerre-Souriau que
nous ne pr\'esentons pas ici.

\subsubsection{Polynome caract\'eristique} \index{polynome caracteristique}
On peut le calculer en d\'eveloppant le d\'eterminant det$A-\lambda I$, mais
il est plus efficace de le calculer par interpolation.
Soit $A$ une matrice carr\'ee de taille $n$, 
on sait que son polynome caract\'eristique
est un polynome de degr\'e $n$, il suffit
de connaitre sa valeur en $n+1$ points distincts, on calcule
donc $n+1$ d\'eterminants det$A-\lambda I$ en remplaçant $\lambda$ par
sa valeur (il y a plus de d\'eterminants à calculer mais
ce sont des d\'eterminants sans param\`etre $\lambda$ donc beaucoup
plus simple à calculer), ce qui permet de reconstruire le polynome
caract\'eristique par interpolation de Lagrange.

Exercice~: pour \verb|[[1,-1],[2,4]]|, calculer
det$(A-\lambda I$) en $\lambda=0,1,2$ puis le polynome d'interpolation,
v\'erifier que c'est bien le polynome caract\'eristique.

Il faut effectuer $n+1$ calculs de d\'eterminants, ce qui n\'ecessite
$O(n^4)$ op\'erations. Il existe des m\'ethodes plus efficaces, par
exemple le calcul du polynome minimal probabiliste pr\'esent\'e
plus bas ($O(n^3)$ op\'erations).

\subsubsection{Polynome minimal} \index{polynome minimal}
\begin{defn}
Le polynome minimal d'une matrice $A$ est un polynôme $M$ de degr\'e minimal
tel que $M(A)=0$ et de coefficient dominant \'egal à 1. 
Un tel polynome divise tous les polynomes
tels que $P(A)=0$, il divise le polynome caract\'eristique
de $A$ et il a les mêmes racines que le polynome caract\'eristique.
\end{defn}
Preuve:\\
D'abord $M$ divise tous les polynomes
tels que $P(A)=0$, car si $R$ d\'esigne le reste de la division
de $P$ par $M$ alors $R(A)=(P-QM)(A)=P(A)-Q(A)M(A)=0$, donc
$R$ est nul car son degr\'e est plus petit que celui de $M$.

En particulier le polynome minimal divise le polynome caract\'eristique $C$,
car $C(A)=0$ (on peut montrer que $C(A)=0$ en faisant
le produit de la matrice $A-\lambda I$ par sa comatrice,
on obtient le d\'eterminant fois l'identit\'e, soit $C(\lambda)I$. Comme
$C(\lambda)I-C(A)$ peut se factoriser par $\lambda I -A$ en appliquant
(\ref{eq:factor}) à chaque monome de $C$, on
en d\'eduit que $C(A)$ se factorise par $\lambda I -A$, donc $C(A)=0$
en regardant les termes de plus haut degr\'e de ces polynomes en
$\lambda$ à coefficients matriciels).

Montrons enfin que les racines du polynome caract\'eristique sont racines
du polynome minimal. En effet soit $\lambda$ une racine
du polynome caract\'eristique alors $A-\lambda I$ n'est pas inversible.
Or $M(A)-M(\lambda)I$ se factorise par $A-\lambda I$ car 
\begin{equation} \label{eq:factor}
 A^k-\lambda^k I=(A-\lambda I) \sum_{j=0}^{k-1} \lambda^{k-1-j} A^j 
\end{equation}
donc $M(A)-M(\lambda)I$ ne peut pas être inversible. Comme $M(A)=0$
on en d\'eduit que $M(\lambda)I$ n'est pas inversible donc $M(\lambda)=0$,
$\lambda$ est une racine de $M$.
Donc si le polynome caract\'eristique n'a pas de racines multiples,
il est \'egal au polynome minimal.

Pour calculer $M$, on peut chercher une relation de degr\'e minimal entre
les puissances de $A$, en les voyant comme des vecteurs à $n^2$
composantes (ce qui revient à aplatir en un long vecteur
tous les coefficients de la matrice). Cela revient à calculer
le noyau de l'application lin\'eaire dont les colonnes sont les coefficients
des puissances de $A$ (de 0 à $n$), en gardant le premier vecteur
obtenu par l'algorithme calcul du noyau ci-dessus.

Cette m\'ethode est toutefois couteuse, car il faut r\'eduire une matrice
ayant $n^2$ lignes et $n+1$ colonnes. Il existe une autre m\'ethode
moins couteuse et qui marche presque toujours. Elle consiste à
calculer le polynome minimal de $A$ par rapport à un vecteur $v$
c'est-à-dire le polynome de degr\'e minimal (et coefficient dominant
1) tel que $M_v(A)v=0$. Comme $M(A)=0$, on a $M(A)v=0$, donc
$M_v$ divise $M$ qui divise le polynome caract\'eristique. Si par
chance, on trouve que $M_v$ est de degr\'e $n$, alors $M_v$ sera
\'egal à $M$ et au polynome caract\'eristique. On fait donc le calcul
du noyau de l'application lin\'eaire dont les colonnes sont les $A^jv$
pour $j$ variant de 0 à $n$. Si l'on trouve un espace de dimension 1,
alors $M_v$ est de degr\'e $n$ et on a simultan\'ement le polynome
minimal et caract\'eristique avec le polynome correspondant à 
ce vecteur du noyau. Si le degr\'e n'est pas $n$, on peut essayer
un ou quelques autres vecteurs, et faire le PPCM des polynomes
minimaux obtenus. Si on obtient un polynome de degr\'e $n$
on conclut, sinon on peut tester si ce polynome \'evalu\'e en $A$
est nul, ce sera alors le polynome minimal.

Exemple, on reprend la matrice \verb|[[1,-1],[2,4]]|,
et comme vecteur al\'eatoire $v=(1,0)$, on a $Av=(1,-1)$
et $A(Av)=(-1,-5)$. On calcule donc le noyau de la matrice
\verb|[[1,1,-1],[0,-1,-5]]| (on \'ecrit en colonnes $v, Av, A^2v$),
on trouve que $(-6,5,-1)$ engendre le noyau, donc le polynome
minimal relatif au vecteur $v$ est (au signe pr\`es) $-6+5x-x^2$. 
Comme il est de degr\'e maximal 2, c'est le polynome minimal
et caract\'eristique.

