Arithmétique d'intervalles

De testwiki
Aller à la navigation Aller à la recherche

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. L'arithmétique des intervalles est une branche de l'arithmétique des ordinateurs.

Motivations

Calcul numérique

La représentation concrète d'un nombre réel est en général impossible. Par exemple, écrire Modèle:Math est faux, puisque 1,414 élevé au carré vaut exactement 1,999396 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 Modèle:Unité et non 0, qui est la véritable valeur attendue (Modèle:Math). 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 Modèle:Math puis en déduire Modèle:Math.

Calcul technique

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ésuppose de vérifier si leur dispersion est ou non critique.

Preuve de programmes

Dans la mesure où lorsqu'on travaille en intervalles on sait avec précision les limitations de ce qu'on traite, cette représentation permet d'élargir le domaine des preuves de programmes[1]Modèle:,[2].

Représentation

Dans l'arithmétique des intervalles, un nombre réel Modèle:Mvar est représenté par une paire de nombres flottants Modèle:Math. Dire que Modèle:Mvar est représenté par cette paire signifie que Modèle:Mvar appartient à l'intervalle Modèle:Math, autrement dit que les assertions Modèle:Math et Modèle:Math sont vraies. La notion d'égalité d'un nombre et de sa représentation disparaît, sauf si Modèle:Math.

On appelle largeur de la représentation la quantité Modèle:Math, qui mesure l'incertitude de la représentation.

Opérations

Opérations arithmétiques de base

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

Test si certainement positif ou nul
((xinf,xsup)0):=(xinf0)
Test si certainement strictement positif
((xinf,xsup)>0):=(xinf>0)
Test si certainement négatif ou nul
((xinf,xsup)0):=(xsup0)
Test si certainement strictement négatif
((xinf,xsup)<0):=(xsup<0)
Test si possiblement nul
(0(xinf,xsup)):=(xinf0xsup0)
Changement de signe
(xinf,xsup):=(xsup,xinf)
Addition
(xinf,xsup)+(yinf,ysup):=(xinf+infyinf,xsup+supysup)
Multiplication de nombres certainement positifs ou nuls
(xinf,xsup)*(yinf,ysup):=(xinf*infyinf,xsup*supysup)
Multiplication de nombres certainement négatifs ou nuls
(xinf,xsup)*(yinf,ysup):=((xinf,xsup))*((yinf,ysup)):=(xsup*infysup,xinf*supyinf)
Multiplication d'un nombre Modèle:Mvar possiblement nul par un nombre Modèle:Mvar certainement positif
(xinf,xsup)*(yinf,ysup):=(xinf*infysup,xsup*supysup)
Multiplication de nombres possiblement nuls
(xinf,xsup)*(yinf,ysup):=(min(xinf*infysup,xsup*infyinf),max(xinf*supyinf,xsup*supysup))

Fonctions élémentaires

Évaluation d'une fonction croissante en arithmétique d'intervalles.

L'arithmétique d'intervalle pour être efficace nécessite des propriétés sur les fonctions. En particulier on dispose de propriétés pour les fonctions monotones.

Pour une fonction monotone d'une variable f: sur un intervalle Modèle:Math, si elle est croissante (resp. décroissante) alors pour tout Modèle:Math tels que Modèle:Math, on a Modèle:Math (resp. Modèle:Math). De plus pour tout intervalle Modèle:Math, on peut calculer f([y1,y2])=[min{f(y1),f(y2)},max{f(y1),f(y2)}] On peut donc en tirer des propriétés pour certaines fonctions usuelles :


Plus généralement on peut dire que pour des fonctions monotones par morceaux il suffit de considérer les bornes de l'intervalle Modèle:Math ainsi que les extremum (ou points critiques) de la fonction sur cet intervalle pour obtenir une évaluation de cette fonction en termes d'intervalles.
Pour les fonctions sinus et cosinus, les points critiques sont les points Modèle:Math ou Modèle:Math pour tout entier Modèle:Mvar.

Raffinement de l'intervalle

Il est parfois utile pour gagner en précision dans l'évaluation de fonction, de réécrire l'intervalle de base sous la forme d'une union d'intervalles. Concrètement pour un intervalle Modèle:Math, on le découpe de la manière suivante : [x,y]=i[xi,xi+1] avec Modèle:Math et Modèle:Math.

Extension aux fonctions de plusieurs variables

En général, il est difficile de trouver une description simple de la sortie pour un large spectre de fonctions. En revanche, il est quand même possible d'étendre les fonctions à l'arithmétique d'intervalle. Si f:n est une fonction d'un vecteur réel donnant un réel, alors [f]:[]n[] est appelé l'extension à un intervalle de f si [f]([𝐱]){f(𝐲)|𝐲[𝐱]} La définition donnée ne donne cependant pas un résultat précis. Par exemple, Modèle:Math et Modèle:Math sont toutes les deux, deux extensions à un intervalle possible de la fonction exponentielle. L'extension la plus précise possible est voulue, tout en prenant en compte les coûts de calcul et les imprécisions. Dans ce cas on choisit Modèle:Math de sorte à garder le résultat le plus précis possible.

L'extension naturelle à un intervalle résulte des règles de calcul classiques sur Modèle:Math et des règles de calcul classiques pour l'arithmétique d'intervalles et les fonctions élémentaires.

L'extension du développement de Taylor à un intervalle (de degré Modèle:Mvar) est une fonction Modèle:Mvar Modèle:Math fois différentiable : [f]([𝐱]):=f(𝐲)+i=1k1i!Dif(𝐲)([𝐱]𝐲)i+[r]([𝐱],[𝐱],𝐲)pour tout Modèle:Math, où Dif(𝐲) est la i-ème différentielle de Modèle:Mvar au point Modèle:Math et Modèle:Math est l'extension à un intervalle du reste de Taylor : r(𝐱,ξ,𝐲)=1(k+1)!Dk+1f(ξ)(𝐱𝐲)k+1.

Valeur moyenne d'une forme

Le vecteur Modèle:Mvar fait le lien entre Modèle:Math et Modèle:Math avec Modèle:Math et Modèle:Mvar est protégé par Modèle:Math. D'ordinaire, on choisit Modèle:Math de sorte qu'il soit le milieu de l'intervalle et on utilise l'extension naturel à un intervalle pour évaluer le reste. Le cas spécial de la formule précédente quand Modèle:Math est connu comme la valeur moyenne d'une forme. Pour l'extension d'intervalle du Jacobien Modèle:Math : [f]([𝐱]):=f(𝐲)+[Jf]([𝐱])([𝐱]𝐲) Une fonction non linéaire peut être définie à l'aide de propriétés linéaires.

Arithmétique d'intervalles complexe

Un intervalle peut également être vu comme un ensemble de points à une distance donnée du centre, et cette définition peut être étendue aux nombres complexes. Comme en nombres réels, les calculs en nombres complexes introduisent en général des erreurs de calculs et d'arrondis, dus au fait qu'on les représente avec une précision limitée. On définit donc un type de nombre "intervalle", correspondant à un intervalle mathématique fermé.

Dans le cas d'un entier, par exemple, 18±2, dans le cas d'un réel 3.14±0.01. Le cas des nombres complexes est plus délicat, leur "flou" n'étant pas le même selon qu'on les représente en cartésien (réel et imaginaire) ou en polaire (angle et module). Néanmoins, on peut le majorer.

L'arithmétique d'intervalles peut ainsi être étendue, via des nombres d'intervalle réels ou complexes[3], pour déterminer les zones d'incertitude dans le calcul. Ce qui compte est que le résultat soit garanti se trouver dans la zone d'incertitude d'une part, et pour l'analyste numérique de choisir la méthode de calcul laissant cette zone aussi petite que possible d'autre part.

Les opérations algébriques de base pour les nombres d'intervalles réels (intervalles fermés réels) peuvent être étendues aux nombres complexes. L’arithmétique complexe d’intervalles ressemble à l’arithmétique complexe ordinaire, chaque nombre convoyant son flou avec lui dans les calculs. Ce type d'intervalle est reconnu par des langages comme NARS2000, en nombres entiers dans sa version actuelle (avril 2020) et en flottants de précision arbitraire réels ou complexes dans sa version "alpha".

Il n'existe pas de distributivité entre l'addition et la multiplication de nombres d'intervalles réels ni complexes, en général. Les éléments inverses n'existent pas toujours non plus pour les nombres d'intervalles complexes. Deux autres propriétés utiles de l'arithmétique complexe classique n'existent pas dans l'arithmétique d'intervalle complexe : les propriétés additives et multiplicatives, des conjugués complexes ordinaires, n'existent plus pour les conjugués complexes d'intervalles.

L'arithmétique d'intervalles peut être étendue, de manière analogue, à d'autres systèmes de nombres multidimensionnels tels que les quaternions et les octonions. Cela exige de sacrifier d'autres propriétés utiles de l'arithmétique ordinaire.

Utilisation de l'arithmétique d'intervalles

Exemple d'un calcul simple

Avec les définitions données précédemment il est déjà possible de calculer certains intervalles dans lesquels se trouve le résultat de l'évaluation de certaines fonctions.

Par exemple avec la fonction Modèle:Math et Modèle:Math, Modèle:Math et Modèle:Math on obtient : f(a,b,x)=([1,2]×[2,3])+[5,7]=[1×2,2×3]+[5,7]=[7,13] Il est aussi possible de résoudre des équations avec des intervalles. En reprenant la même fonction Modèle:Mvar et les mêmes valeurs pour Modèle:Mvar et Modèle:Mvar on a : f([1,2],[5,7],x)=([1,2]×x)+[5,7]=0[1,2]×x=[7,5]x=[7,5][1,2] Ainsi les valeurs d'annulation possibles de la fonction sont dans l'intervalle [-7, -2.5].

Règle de Karl Nickel

Modèle:Pas clair

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

Par exemple, on considère la fonction Modèle:Mvar définie par Modèle:Math. Les valeurs de cette fonction sur l'intervalle Modèle:Math sont Modèle:Math. Avec les règles de calcul sur les intervalles, on aurait en revanche obtenu Modèle:Math, qui est plus large.

Une autre expression peut être utilisée pour calculer cette valeur :

f(x)=(x+12)214 et on obtient cette fois le résultat premièrement énoncé :

([1,1]+12)214=[12,32]214=[0,94]14=[14,2]

Il peut être montré que le résultat peut être exact si chaque valeur apparaît exactement une fois dans l'expression de la fonction et si Modèle:Mvar est continu dans l'intervalle d'évaluation. Toutefois il n'est pas possible de réécrire toutes les fonctions de cette manière.

Expressions préférables

Lorsque, pour des valeurs isolées, on a Modèle:Math, on trouve souvent en termes d'intervalles que Modèle:Math. Alors, Modèle:Math est dite préférable à ou plus fine que Modèle:Math. Et c'est la forme préférable si elle satisfait la règle de Nickel. En ce sens, on remplacera :

Modèle:Math par Modèle:Math et Modèle:Math par Modèle:Math
Modèle:Math par Modèle:Math. En effet, soit Modèle:Math et Modèle:Math. Avec la première formule, le produit vaut [3 10], la somme [4 ; 7] et leur quotient [0,42 ; 2,5], avec une largeur de 2,08. La seconde formule donne 1/[0,7 1,33] = [0,75 1,43]. Toujours licite, cette seconde valeur a une largeur réduite à 0,68.
Modèle:Math par Modèle:Math ; pour un intervalle [-4 ; 5], la première donne [-20 ; 25] et w = 45, la seconde [0 ; 25] de largeur 25.
Modèle:Math par Modèle:Math.
Modèle:Math par Modèle:Math.

L'avant-dernière formule est typique : la plupart des distributivités classiques entraînent en termes d'intervalles des sous-distributivités, dont chacune fournit une règle d'amélioration.

Notion d'extervalle

Des difficultés introduites par la division peuvent être contournées grâce à la notion d' extervalle, inverse d'un intervalle contenant 0. Pour cela, si Modèle:Math alors Modèle:Math, noté en bref Modèle:Math, avec évidemment Modèle:Math.

Soit à calculer x+5yx+3y=1+2yx+3y=1+2x/y+3 pour x = [10 ; 20] et y =[-2 ; +2].

Alors inv(y)=1/2][1/2;x/y=[10 20]*1/2][1/2=5][5;x/y+3=2][8;2x/y+3=2*[1/2 1/8]=[1 1/4];1+2yx+3y=[0 5/4] qui est bien la valeur cherchée.

En pratique

Tout calcul en intervalles doit être précédé d'une inspection voire d'une mise en forme, recourant s'il le faut à l'historique de calcul, en vue de n'utiliser que des formes préférables conformes à la règle ci-dessus.

Recherche de zéros sur un axe

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 Modèle:Math, avec Modèle:Mvar continue entre les bornes Modèle:Math et Modèle:Math.

  • Si l'intervalle Modèle:Math ne contient pas zéro, alors on est certain qu'il n'y a pas de racine entre Modèle:Math et Modèle:Math.
  • Si aucun des deux intervalles Modèle:Math et Modèle:Math ne contient zéro et qu'ils sont de signes différents, alors il y a au moins un zéro entre Modèle:Math et Modèle:Math.
  • Dans les autres cas, ou pour raffiner la recherche, on introduit une borne intermédiaire et on recommence.

Histoire

L'arithmétique d'intervalles n'est pas une théorie complètement nouvelle en mathématiques ; elle est apparue plusieurs fois sous différents noms au cours de l'histoire. Par exemple Archimède avait déjà calculé des bornes supérieures et inférieures pour π au Modèle:-s- : Modèle:Math. Le calcul avec des intervalles n'a jamais été vraiment aussi populaire que d'autres techniques numériques, mais il n'a jamais non plus été oublié.

Les règles de l'arithmétique d'intervalles ont été publiées en 1931 par Rosalind Cicely Young, une doctorante à Université de Cambridge. D'autres travaux ont été publiés par la suite, dans un livre d'algèbre linéaire en 1951 par Paul Dwyer (Université du Michigan), et permettent d'améliorer la fiabilité de systèmes numériques. Les intervalles étaient utilisés pour mesurer les erreurs d'arrondis dues aux nombres flottants. Un article sur l'algèbre d'intervalles en analyse numérique a été publié par Teruo Sunaga en 1958[4].

La naissance de l'arithmétique d'intervalles moderne est marquée par le livre Interval Anallysis de Ramon E. Moore en 1966. Il a l'idée au printemps 1958, et une année plus tard il publie un article sur l'arithmétique d'intervalles. Son mérite est, à partir d'un principe simple, de donner une méthode générale pour calculer les erreurs de calculs, et pas seulement celles résultant des arrondis.

Indépendamment en 1956, Mieczyslaw Warmus suggère une forme pour le calcul avec des intervalles bien que ce soit Moore qui ait trouvé les premières applications non-triviales.

Dans les vingt années suivantes, des chercheurs allemands ont réalisé des travaux novateurs dans le domaine. Parmi eux Götz Alef et Ulrich Kulisch à l'Université de Karlsruhe. Par exemple, Karl Nickel a exploré de meilleures implémentations, tandis qu'Arnold Neumaier, entre autres, devait améliorer les procédures de confinement de l'ensemble de solutions de systèmes d'équations. Dans les années 1960, Eldon R. Hansen a travaillé sur des extensions de l'arithmétique d'intervalles pour les équations linéaires, puis a apporté des contributions majeures à l'optimisation globale, y compris ce que l'on appelle maintenant la méthode de Hansen, un des algorithmes d'intervalle les plus largement utilisés. Les méthodes classiques dans ce domaine ont souvent des difficultés pour déterminer la plus grande (ou la plus petite) valeur locale, mais elles ne peuvent que trouver un optimum local et échouent à trouver de meilleures valeurs; Helmut Ratschek et Jon George Rokne ont mis au point des méthodes de Séparation et évaluation, qui jusque-là ne s'appliquaient qu'aux entiers, en utilisant des intervalles pour fournir des applications aux valeurs continues.

En 1988, Rudolf Lohner a développé un logiciel en Fortran pour des problèmes de solutions fiables avec valeur initiale en utilisant des équations différentielles ordinaires[5].

La revue Reliable Computing (à l'origine Interval Computations), publiée depuis les années 1990, est consacrée à la fiabilité des calculs assistés par ordinateur. En tant que rédacteur en chef, R. Baker Kearfott, en plus de ses travaux sur l'optimisation globale, a largement contribué à l'unification de la notation et de la terminologie utilisées en arithmétique d'intervalles.

Au cours des dernières années, les travaux portés par l’INRIA à Sophia Antipolis ont porté en particulier sur l’estimation des images préalables de fonctions paramétrées et sur la théorie du contrôle robuste.

Certains langages comme APL dans son implémentation NARS2000 permettent les calculs en arithmétique d'intervalles, y compris avec des matrices de nombres hypercomplexes[6].

IEEE Std 1788-2015 – standard IEEE pour l'arithmétique d'intervalles

Une norme pour l'arithmétique d'intervalles a été approuvée en juin 2015[7]. Deux implémentations de référence sont disponibles gratuitement[8]. Celles-ci ont été développées par des membres du groupe de travail de la norme: la bibliothèque libieeep1788[9] pour C ++ et le paquet d'intervalle pour GNU Octave[10].

Un sous-ensemble minimal de la norme, IEEE Std 1788.1-2017, a été approuvé en décembre 2017 et publié en février 2018. Il devrait être plus facile à mettre en œuvre[11].

Notes et références

Modèle:Références

Voir aussi

Modèle:Palette Modèle:Portail