Arithmétique d'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 calcul consistant à manipuler des intervalles, par opposition à des nombres (par exemple entiers ou flottants), dans le but d'obtenir des résultats plus rigoureux. Cette approche permet de borner les erreurs d'arrondi ou de méthode et ainsi de développer des méthodes numériques qui fournissent des résultats fiables.

Motivations[modifier | modifier le code]

Calcul numérique[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,999 396 et non 2. Dans un ordinateur, 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 des opérations mathématiques associées. Par exemple, avec un processeur utilisant la norme IEEE 754, le calcul « sin(cos-1(-1)) » donne 1,224 61×10-16 et non 0. Plus problématique, l'évaluation de « sin(cos-1(-1)) = 0 » renvoie faux.

L'arithmétique des intervalles est une méthode qui permet d'encadrer avec certitude le résultat des opérations que l'on effectue. Par exemple on pourra écrire 2 \in [2,2] puis en déduire \sqrt{2} \in [1,414 ; 1,415].

Calcul technique[modifier | modifier le code]

La conception ou la vérification d'un système peut mener à des calculs avec des valeurs bornées plutôt que connues exactement. Ainsi l'utilisation de composants connus à 1%, 5% voire 20% près suppose de vérifier si leur dispersion est ou non critique.

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}}.

On appelle largeur de la représentation la quantité w(x)=x_{\mathrm{sup}}-x_{\mathrm{inf}}, qui mesure l'incertitude de la représentation.

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)

Principes de calcul[modifier | modifier le code]

La définition de la soustraction est simple, mais pose un problème. A priori, x - x = 0 mais x - y ≠ 0 si x et y ont par hasard les mêmes bornes sans être corrélés.

On rencontre rapidement d'autres problèmes avec la division, l'élévation à une puissance entière

Règle de Karl Nickel[modifier | modifier le code]

L'évaluation directe d'une expression n'est exacte en calcul d'intervalles que si chaque variable n'a qu'une occurrence, ces variables étant indépendantes.

En conséquence, l'évaluation de la valeur en intervalles d'une expression sera éventuellement précédée d'une mise en forme, recourant s'il le faut à l'historique de calcul, en vue d'obtenir une expression équivalente à l'expression donnée mais conforme à la règle ci-dessus.

En ce sens, on remplacera x.y/(x+y) par 1/(1/x + 1/y). En effet, soit x = [1 2] et y = [3 5]. Avec la première formule, le produit vaut [3 10], la somme [4 7] et le quotient [0,42 2,5], avec une largeur de 2,08. La seconde formule donne 1/[0,7 1,33] = [0,75 1,43]. Incluse dans la première, cette seconde valeur a une largeur réduite de 0,68. La seconde formule, conforme à la règle ci-dessus, fournit seule la valeur exacte cherchée.

De même on remplacera (x+y).(x-y) par {\textstyle x^2-y^2} . Avec les valeurs ci-dessus, la première formule donnerait [-28 -4], contre [-24 -5] pour la seconde.

Observer la règle indiquée reste critique, toute évaluation trop large nuisant à l'intérêt du résultat.

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.

Voir aussi[modifier | modifier le code]