Ce chapitre s'inspire de~\cite{jedrzejewski2005introduction} et
de~\cite{bastien2003introduction}.
On y pointe quelques erreurs classiques en calcul numérique.
-
-On peut classer les erreurs en plusieurs groupes:
+On peut classer ces erreurs en plusieurs groupes:
\begin{itemize}
\item les erreurs de calcul en machine: elles sont dues aux arrondis de
calcul pour les nombres flottants, par exemple.
\lstset{language=Java}
\begin{figure}
\begin{scriptsize}
-\begin{minipage}{0.68\textwidth}
+\begin{minipage}{0.65\textwidth}
\begin{lstlisting}
class TestFactorielle{
public static int factorielle(int n){
return r
for j in range(36):
- print j, factorielle(j)
+ print(str(j) + " "
+ + str(factorielle(j)))
\end{lstlisting}
\end{minipage}
\end{scriptsize}
\end{figure}
En Java, on a:
-\begin{eqnarray*}
+$$
+\begin{array}{rcr}
5!&=& 120\\
& \vdots&\\
12! &= & 479001600 \\
&\vdots&\\
34! & = & 0 \\
35! & = & 0
-\end{eqnarray*}
-
+\end{array}
+$$
On remarque que
\begin{itemize}
\item le résultat donné pour 13! est différent de 13 fois le résultat de 12!
\end{itemize}
Par contre en Python 2.7 on a des résultats cohérents:
-\begin{eqnarray*}
+$$
+\begin{array}{rcr}
12! &= &479001600\\
13! & =& 6227020800\\
& \vdots & \\
& \vdots & \\
34!&=& 295232799039604140847618609643520000000 \\
35! & =&10333147966386144929666651337523200000000
-\end{eqnarray*}
+\end{array}
+$$
Les deux langages travaillent pourtant avec des entiers et ne sont donc pas
exposés aux erreurs d'arrondis.
Celui-ci code chaque entier avec 32 bits.
Le bit le plus à gauche est celui de signe. Il reste donc 31 bits.
Cela permet de couvrir tous les entiers de l'intervalle
-$\llbracket -2147483648, 2147483647, \rrbracket$. Le tableau donné à la
-figure~\ref{table:codage:entiers} donne la correspondance entre
+$$\llbracket -2147483648, 2147483647 \rrbracket.$$
+Le tableau~\ref{table:codage:entiers} donne la correspondance entre
certains entiers et le version binaire.
\end{array}
$$
\end{scriptsize}}
-\caption{Correspondance décimaux-binaires}\label{table:codage:entiers}
+\caption{Correspondance entiers-binaires}\label{table:codage:entiers}
\end{table}
\item En pratique quelle va être sa valeur si l'interpréteur fait des
approximations.
\item Cette erreur d'arrondi est-elle effectuée dans le calcul de $x_1$?
-\item Montrer qu'on pourrait calculer la racine $x_2$ avec $x_2= \frac{c}{x_2}$.
-\item Cette nouvelle méthode permet-elle de trouver le signe de $x_2$, et
-est-elle plus précise?
+\item Montrer qu'on pourrait calculer la racine $x_2$ avec $x_2= \frac{c}{x_1}$.
+\item Cette nouvelle méthode permet-elle de trouver le signe de $x_2$?
+Est-elle plus précise?
\end{enumerate}
\end{Exo}
\section{Erreurs sur les données}
Les données provenant de mesures physiques sont souvent entachées d'erreurs.
-Par exemple, un traceur GPS ne peut avoir une précision inférieure à 8m
+Par exemple, un traceur GPS ne peut avoir une précision inférieure à 8m
+
+Ainsi, lorsqu'une méthode de calcul s'applique à des données physiques,
+on doit étudier l'influence des erreurs sur le résultats numérique calculé.
+Si une petite erreur sur les données provoque un changement radical de
+la solution calculée, le problème est dit \emph{mal conditionné}.
+
+
+On cherche par exemple à résoudre le problème à deux équations
+et deux inconnues suivant:
+$$
+\left\{
+ \begin{array}{llllll}
+ 1,2969 x & + & 0,8648 y & = & 0,8642 & L_1\\
+ 0,2161 x & + & 0,1441 y & = & 0,1440 & L_2.
+ \end{array}
+\right.
+$$
+Ce système est équivalent à
+$$
+\left\{
+ \begin{array}{llllll}
+ 1,2969 x & + & 0,8648 y & = & 0,8642 & L_1\\
+ & + & 10^{-8} y & = & -2 \times 10^{-8} & 1,2969.L_2-0,2161.L1
+ \end{array}
+\right.
+$$
+qui a pour unique solution $\left(\begin{array}{r} 2 \\ -2
+ \end{array}
+ \right)$.
+Si on considère maintenant le système légèrement modifié suivant:
+$$
+\left\{
+ \begin{array}{llllll}
+ 1,2969 x & + & 0,8648 y & = & 0,8642 & L_1\\
+ 0,2161 x & + & 0,144 y & = & 0,1440 & L_2
+ \end{array}
+\right.
+$$
+Une valeur approchée à $10^{-5}$ près de l'unique solution de ce système
+serait $\left(\begin{array}{r} 0.66626 \\ 0.00015
+ \end{array}
+ \right)$.
+
+On constate qu'une infime modification du système initial a eu de
+grandes répercutions sur les solutions du système.
+
+
+
+
+
+
+
+
+
+
+
+
+\begin{TP}
+
\begin{Def}[conditionnement]
Soit $A$ une matrice inversible. Le \emph{conditionnement} de $A$, noté
$\textit{cond}(A)$ est défini par
$\textit{cond}(A)$ est proche de 1.
\end{Def}
-
-
-\begin{TP}
On considère les matrices
$$ A = \left(
\begin{array}{llll}
33,1 \\
30,9 \\
\end{array}
-\right)
+\right).
$$
\item Que peut-on en conclure?
\end{enumerate}