next up previous contents index
suivant: III.D.2.2 Programmation de I2. monter: III.D.2 Algorithmes conditionnels de programmation. précédent: III.D.2 Algorithmes conditionnels de programmation.   Table des matières   Index


III.D.2.1 Programmation de I1.

Rappelons que I1 est donné par

(III.D.9) \begin{displaymath}
I_1(\alpha) = L e^{i{{\mathbf k}}\vec{G}} \frac{\displaystyle \sin{\alpha}}{\displaystyle \alpha} \
\end{displaymath}

Cette fonction dont le domaine de définition est ${\mathbb{C}}-\{0\}$ admet une limite pour $\alpha$ tendant vers 0,

\begin{displaymath}
L e^{i{{\mathbf k}}\vec{G}} \ ,
\end{displaymath}

ce qui permet de donner un sens à I1(0). En revanche, un ordinateur, quel qu'il soit, ne peut calculer I1(0) par la formule (III.D.9) puisque la division par zéro est interdite. La notion de limite, ou de prolongement par continuité, est une notion formelle que le calculateur ignore. En revanche, pour tous les autres décimaux (qui sont en nombre fini) connus par la machine, on pourra calculer la fonction I1. En effet, il existe un nombre, que l'on note $\epsilon$, qui est le plus petit réel (en fait décimal) strictement positif de la machine. Pour ce nombre, et tous les nombres dont la valeur absolue est supérieure, le calculateur peut effectuer la division. La fonction $\sin{\alpha}$ est approchée par son développement limité à un ordre qui dépend du calculateur. Par exemple, $\sin{\alpha}$ sera approché par la fonction polynômiale

\begin{displaymath}
\sin{\alpha} \approx \alpha -\frac{\alpha^3}{6} \ .
\end{displaymath}

Pour $\alpha=\epsilon$, le nombre $\epsilon^3/6$ n'existe pas dans la machine puisqu'il est compris entre $\epsilon$ et 0 (pour $\epsilon \le \sqrt{6}$, ce qui est évidemment le cas, le contraire ne se conçoit pas). Pour $\epsilon$ assez petit, le calculateur remplacera $\epsilon^3/6$ par sa valeur approchée la plus proche, soit 0. On aura doncIII.D1

\begin{displaymath}
\sin{\epsilon} = \epsilon \ .
\end{displaymath}

La division de $\epsilon$ par $\epsilon$ rend alors 1 le nombre entier naturel représenté par le décimal $1,00\ldots 0$ ou en binaire par la mantisse $0 \ldots 01$ et l'exposant $0 \ldots 0$ (le nombre de zéros dépend de la précision du calculateur, ou mode de représentation des réels). Nous en tirons les conclusions suivantes: Cherchons à prolonger notre raisonnement sur le calcul de $I_1(\epsilon)$ à des nombres plus grands. La question est de savoir à partir de quel nombre $\epsilon_1$ la calculateur fera la différence entre 1 et le sinus cardinal de $\epsilon_1$. En informatique, on définit un nombre, que nous noterons pm, appelé la ``précision machine'' qui est le plus grand réel positif tel que le test ``le réel 1 plus la précision machine est égal au réel 1'' soit vrai. On peut aussi le définir par le plus petit réel positif tel que le test ``le réel 1 plus la précision machine est égal au réel 1'' soit faux. La différence entre ces deux définitions est $\epsilon$ et évidemment (pour tout calculateur à exposant) $\epsilon$ est très petit devant pm. Nous cherchons donc $\epsilon_1$ le plus grand réel positif tel que

\begin{displaymath}
\vert I_1(\epsilon_1)-L e^{i{{\mathbf k}}\vec{G}}\vert \le p_m \times L e^{i{{\mathbf k}}\vec{G}} \ .
\end{displaymath}

Toujours dans le cas où la fonction sinus est connue par son développement à l'ordre 4 (ou 5), $\epsilon_1$ vérifie

\begin{displaymath}
\epsilon_1^2/6 = p_m \ .
\end{displaymath}

Lorsque le calculateur approche la fonction sinus à un ordre plus élevé et que la précision machine est assez petite devant 1, on peut toujours approcher $\epsilon_1$ par $\sqrt{6p_m}$. Par exemple, à l'ordre 6, on aura

\begin{displaymath}
\epsilon_1^2/6 + \epsilon_1^4/120 = p_m \ ,
\end{displaymath}

approximativement vérifié par $\epsilon_1=\sqrt{6p_m}$ à 0,3 pm2 (près), donc à 0,3 pm par rapport à pm (en erreur relative). Cette différence (par définition de pm) n'est pas représentée par la machine (donne le même nombre $\epsilon_1$). Nous proposons donc l'algorithme de calcul suivant: La fonction $I_1(\alpha)$ est ainsi calculée à la précision $p_m \times L e^{i{{\mathbf k}}\vec{G}}$ en un nombre minimal d'opérations. L'erreur relative sur I1 est donc de l'ordre de la précision machine, précision maximale inhérente au calculateur.


next up previous contents index
suivant: III.D.2.2 Programmation de I2. monter: III.D.2 Algorithmes conditionnels de programmation. précédent: III.D.2 Algorithmes conditionnels de programmation.   Table des matières   Index
Cessenat Olivier 2007-04-21