Arithmétique des intervalles

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

En mathématiques et en informatique, l'arithmétique des intervalles est une méthode de calculs permettant de garantir la relation d'égalité.

Motivations[modifier | modifier le code]

La représentation concrète d'un nombre réel est en général impossible. Par exemple, écrire \sqrt{2} = 1.414 est faux, puisque 1.414 élevé au carré vaut exactement 1.999396 et non 2. Dans un calculateur, les nombres flottants ne sont que des approximations des nombres réels, et les opérations arithmétiques ne sont en général que des approximations inexactes des opérations mathématiques associées. Par exemple, avec un processeur à la norme IEEE 754, le calcul \sin\left(\cos^{-1}\left(-1.0\right)\right) donne 1.22461e-16 et non 0. Plus grave, l'évaluation de \sin\left(\cos^{-1}\left(-1.0\right)\right) == 0 renvoie faux.

L'arithmétique des intervalles est une méthode qui permet de réaliser des opérations dont le résultat est toujours certain. Par exemple on pourra écrire 2 \in [2,2] puis calculer la formule vraie \sqrt{2} \in [1.414,1.415].

Représentation[modifier | modifier le code]

Dans l'arithmétique des intervalles, un nombre réel x est représenté par une paire de nombres flottants \left(x_{\mathrm{inf}}, x_{\mathrm{sup}}\right). Dire que x est représenté par cette paire signifie que x appartient à l'intervalle \left[x_{\mathrm{inf}}, x_{\mathrm{sup}}\right], autrement dit que les assertions x_{\mathrm{inf}} \le x et x \le x_{\mathrm{sup}} sont vraies. La notion d'égalité d'un nombre et de sa représentation disparaît, sauf si x_{\mathrm{inf}} = x_{\mathrm{sup}}.

Opérations de base[modifier | modifier le code]

Les opérateurs de base mettent en jeu au minimum les opérateurs arithmétiques flottants suivants, définis dans la norme IEEE 754

  • changement de signe (vers -\infty) : -
  • addition avec arrondi par défaut (vers -\infty) : +_{\mathrm{\inf}}
  • addition avec arrondi par excès (vers +\infty) : +_{\mathrm{\sup}}
  • multiplication avec arrondi par défaut (vers -\infty) : *_{\mathrm{\inf}}
  • multiplication avec arrondi par excès (vers +\infty) : *_{\mathrm{\sup}}
  • division avec arrondi par défaut (vers -\infty) : /_{\mathrm{\inf}}
  • division avec arrondi par excès (vers +\infty) : /_{\mathrm{\sup}}
Test si certainement positif ou nul

\left(\left(x_{\mathrm{inf}}, x_{\mathrm{sup}}\right) \ge 0\right) := \left(x_{\mathrm{inf}} \ge 0\right)

Test si certainement strictement positif

\left(\left(x_{\mathrm{inf}}, x_{\mathrm{sup}}\right) > 0\right) := \left(x_{\mathrm{inf}} > 0\right)

Test si certainement négatif ou nul

\left(\left(x_{\mathrm{inf}}, x_{\mathrm{sup}}\right) \le 0\right) := \left(x_{\mathrm{sup}} \le 0\right)

Test si certainement strictement négatif

\left(\left(x_{\mathrm{inf}}, x_{\mathrm{sup}}\right) < 0\right) := \left(x_{\mathrm{sup}} < 0\right)

Test si possiblement nul

\left(0 \in \left(x_{\mathrm{inf}}, x_{\mathrm{sup}}\right)\right) := \left(x_{\mathrm{inf}} \le 0 \and x_{\mathrm{sup}} \ge 0\right)

Changement de signe

- \left(x_{\mathrm{inf}}, x_{\mathrm{sup}}\right) := \left(-x_{\mathrm{sup}}, -x_{\mathrm{inf}}\right)

Addition

\left(x_{\mathrm{inf}}, x_{\mathrm{sup}}\right) + \left(y_{\mathrm{inf}}, y_{\mathrm{sup}}\right)
:= \left(x_{\mathrm{inf}} +_{\mathrm{inf}} y_{\mathrm{inf}}, x_{\mathrm{sup}} +_{\mathrm{sup}} y_{\mathrm{sup}}\right)

Multiplication de nombres certainement positifs ou nuls

\left(x_{\mathrm{inf}}, x_{\mathrm{sup}}\right) * \left(y_{\mathrm{inf}}, y_{\mathrm{sup}}\right)
:= \left(x_{\mathrm{inf}} *_{\mathrm{inf}} y_{\mathrm{inf}}, x_{\mathrm{sup}} *_{\mathrm{sup}} y_{\mathrm{sup}}\right)

Multiplication de nombres certainement négatifs ou nuls

\left(x_{\mathrm{inf}}, x_{\mathrm{sup}}\right) * \left(y_{\mathrm{inf}}, y_{\mathrm{sup}}\right)
:= \left(-\left(x_{\mathrm{inf}}, x_{\mathrm{sup}}\right)\right) * \left(-\left(y_{\mathrm{inf}}, y_{\mathrm{sup}}\right)\right)
:= \left(x_{\mathrm{sup}} *_{\mathrm{inf}} y_{\mathrm{sup}}, x_{\mathrm{inf}} *_{\mathrm{sup}} y_{\mathrm{inf}}\right)

Multiplication d'un nombre x possiblement nul par un nombre y certainement positif

\left(x_{\mathrm{inf}}, x_{\mathrm{sup}}\right) * \left(y_{\mathrm{inf}}, y_{\mathrm{sup}}\right)
:= \left(x_{\mathrm{inf}} *_{\mathrm{inf}} y_{\mathrm{sup}}, x_{\mathrm{sup}} *_{\mathrm{sup}} y_{\mathrm{sup}}\right)

Multiplication de nombres possiblement nuls

\left(x_{\mathrm{inf}}, x_{\mathrm{sup}}\right) * \left(y_{\mathrm{inf}}, y_{\mathrm{sup}}\right)
:= \left(
\min\left(
x_{\mathrm{inf}} *_{\mathrm{inf}} y_{\mathrm{sup}},
x_{\mathrm{sup}} *_{\mathrm{inf}} y_{\mathrm{inf}}
\right), 
\max\left(
x_{\mathrm{inf}} *_{\mathrm{sup}} y_{\mathrm{inf}},
x_{\mathrm{sup}} *_{\mathrm{sup}} y_{\mathrm{sup}}
\right)
\right)

Recherche de zéros sur un axe[modifier | modifier le code]

La recherche des zéros d'une fonction présente avec l'arithmétique ordinaire une difficulté particulière lorsque le nombre de zéros entre deux bornes n'est pas connu. L'arithmétique des intervalles permet d'encapsuler avec certitude les solutions.

Soit à résoudre f(x) = 0, avec f continue entre les bornes x_\mathrm{min} et x_\mathrm{max}.

  • Si l'intervalle f\left(\left(x_\mathrm{min}, x_\mathrm{max}\right)\right) ne contient pas zéro, alors on est certain qu'il n'y a pas de racine entre x_\mathrm{min} et x_\mathrm{max}.
  • Si aucun des deux intervalles f\left(\left(x_\mathrm{min}, x_\mathrm{min}\right)\right) et f\left(\left(x_\mathrm{max}, x_\mathrm{max}\right)\right) ne contient zéro et qu'ils sont de signes différents, alors il y a au moins un zéro entre x_\mathrm{min} et x_\mathrm{max}.
  • Dans les autres cas, ou pour raffiner la recherche, on introduit une borne intermédiaire et on recommence.