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

Private GIT Repository
j
[cours-mesi.git] / pbnum.tex
index 58b3a0a92ff38b1b9b5f9e74c328cec1de5073e0..613c6a6238f2363442cd094473b653236ae77c33 100644 (file)
--- a/pbnum.tex
+++ b/pbnum.tex
@@ -1,8 +1,7 @@
 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.
@@ -39,7 +38,7 @@ permettant d'évaluer la fonction factorielle.
 \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){
@@ -67,7 +66,8 @@ def factorielle(n):
     return r
 
 for j in range(36):
-    print j, factorielle(j)
+    print(str(j) + " " 
+          + str(factorielle(j)))
 \end{lstlisting}
 \end{minipage}
 \end{scriptsize}
@@ -75,7 +75,8 @@ for j in range(36):
 \end{figure}
 
 En Java, on a:
-\begin{eqnarray*}
+$$
+\begin{array}{rcr}
 5!&=& 120\\
 & \vdots&\\
 12! &= & 479001600 \\
@@ -87,8 +88,8 @@ En Java, on a:
  &\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!
@@ -98,7 +99,8 @@ On remarque que
 \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 & \\
@@ -106,7 +108,8 @@ Par contre en Python 2.7 on a des résultats cohérents:
  & \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.
@@ -115,8 +118,8 @@ Expliquons l'erreur d'interprétation du langage java.
 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. 
 
 
@@ -139,7 +142,7 @@ $$
 \end{array}
 $$
 \end{scriptsize}}
-\caption{Correspondance décimaux-binaires}\label{table:codage:entiers}
+\caption{Correspondance entiers-binaires}\label{table:codage:entiers}
 \end{table}
 
 
@@ -211,9 +214,9 @@ numériquement de $b^2$.
 \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}
 
@@ -227,9 +230,68 @@ aux questions précédentes en effectuant les calculs en java.
 \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 
@@ -240,9 +302,6 @@ Une matrice $A$ est dite bien conditionnée si son conditionnement
 $\textit{cond}(A)$ est proche de 1.
 \end{Def}
 
-
-
-\begin{TP}
 On considère les matrices 
 $$ A = \left( 
 \begin{array}{llll}
@@ -318,7 +377,7 @@ B' = \left(
 33,1 \\
 30,9 \\
 \end{array}
-\right)  
+\right).  
 $$ 
 \item Que peut-on en conclure?
 \end{enumerate}