Arithmétique par intervalles, résolution de systèmes linéaires et ...

27
Arithmétique par intervalles, résolution de systèmes linéaires et précision Rapport de stage de DEA d’Informatique fondamentale DESSART Nathalie encadré par Nathalie Revol Arénaire/LIP 30 Juin 2004 1

Transcript of Arithmétique par intervalles, résolution de systèmes linéaires et ...

Arithmétique par intervalles,résolution de systèmes linéaires

et précision

Rapport de stage de DEA d’Informatique fondamentaleDESSART Nathalie

� � �� � �� � �� � �� � �� � �

encadré par Nathalie RevolArénaire/LIP

30 Juin 2004

1

Table des matières

1 Introduction 4

2 État de l’art et notions essentielles 52.1 Arithmétiques traditionnelles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2.2 Arithmétique par intervalles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2.2.1 Présentation, points forts et points faibles . . . . . . . . . . . . . . . . . . . 6

2.2.2 Définitions et opérations sur les intervalles . . . . . . . . . . . . . . . . . . 6

3 Résolution de systèmes linéaires 83.1 Quelques notions clés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

3.2 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

3.3 Méthodes pour la résolution de systèmes linéaires . . . . . . . . . . . . . . . . . . . 9

3.3.1 Définitions : algorithmes direct et itératif. . . . . . . . . . . . . . . . . . . . 9

3.3.2 Méthode directe de Gauss . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

3.3.3 Méthode de Gauss-Seidel . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

3.4 Résolution des systèmes linéaires avec intervalles. . . . . . . . . . . . . . . . . . . . 15

3.4.1 Définition de la résolution d’un système linéaire par intervalles . . . . . . . . 15

3.4.2 Systèmes linéaires et intervalles . . . . . . . . . . . . . . . . . . . . . . . . 16

4 Résumé 18

5 Mise en oeuvre et contributions 195.1 Implantations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

5.1.1 Contexte. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

5.1.2 Programmation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

5.2 Raffinement des calculs et précision. . . . . . . . . . . . . . . . . . . . . . . . . . . 21

5.2.1 Précision des nombres flottants. . . . . . . . . . . . . . . . . . . . . . . . . 21

5.2.2 La multi-précision. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

5.3 Adapter dynamiquement la précision . . . . . . . . . . . . . . . . . . . . . . . . . . 22

5.3.1 But recherché . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

5.3.2 Observations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

6 Conclusion 25

A Installation des bibliothèques 26

2

1 Introduction

Le but de ce stage de DEA est de résoudre des systèmes linéaires en utilisant l’arithmétique parintervalles pour obtenir des résultats fiables, et une précision de calcul arbitrairement grande pour ob-tenir des résultats précis.

Le besoin s’est fait sentir d’introduire l’arithmétique par intervalles afin de mener des calculs qui ga-rantissent au mieux les résultats en bornant les erreurs d’arrondis. En effet certains calculs nécessitentune précision et une fiabilité très poussées. L’incident le plus cité dans la littérature est celui du missile"Patriot" qui du fait d’une erreur d’arrondi a causé la mort de 28 soldats américains : "On February25, 1991, a Patriot missile defense system [. . . ] failed to track and intercept an incoming Scud. ThisScud subsequently hit an Army barracks killing 28 Americans" [20]. D’autres exemples existent pourillustrer l’importance de pallier le problème des erreurs d’arrondi et de la nécessité de calculs fiableset précis.

Tout d’abord il a été question de s’immerger dans le monde du calcul par intervalles. Cette étudebibliographique a été suivie de l’implantation de quelques algorithmes basés sur des méthodes exis-tantes de résolution de systèmes linéaires manipulant des matrices d’éléments de types standard etde type intervalle. Au terme de cela, a été menée une réflexion sur le problème d’adaptation de laprécision.

Dans une première partie de ce rapport l’arithmétique par intervalles sera introduite et décrite. Puisnous présenterons deux méthodes existantes de résolution de systèmes linéaires pour l’arithmétiqueflottante. Nous exposerons ces méthodes dans leur adaptation à l’arithmétique par intervalles. Enfinnous verrons les réflexions et mises en oeuvre qui constituent l’objet de ce stage ainsi que les implan-tations effectuées. Ces réflexions se sont basées sur l’idée qu’il faudrait faire évoluer la précision descalculs au fur et à mesure de l’exécution, afin d’obtenir des résultats plus précis lorsque l’on mani-pule des intervalles. Pour cela, il a fallu implanter des méthodes de résolution de systèmes linéaires etd’observer alors quand et comment on pourrait faire varier la précision dans le but de parvenir à avoirun résultat à la fois fiable et précis.

3

2 État de l’art et notions essentielles

2.1 Arithmétiques traditionnelles

Voici quelques arithmétiques traditionnellement utilisées sur ordinateur :

– l’arithmétique flottante : manipule des nombres représentés sous la forme d’un signe, d’unemantisse et d’un exposant. Cette notation permet des calculs simples et rapides du fait d’unereprésentation ”fixe” des nombres et donc d’une implémentation de bas niveau, très efficace.Ces deux critères font d’elle, l’arithmétique la plus adaptée pour les calculs ”énormes”. Cettearithmétique (représentation, arrondis, . . .) a été normalisée dans la norme IEEE-754 [22].Le schéma suivant donne la représentation des nombres en arithmétique flottante.

Exposant Mantissesigne

Le nombre flottant ainsi représenté vaut : signe x mantisse x Bexposant où B est la base utiliséepour représenter les nombres (le plus souvent B = 2).

– l’arithmétique exacte : manipule des entiers et des rationnels et garantit un résultat exact car lesnombres sont représentés de façon exacte. Elle est implantée uniquement en logiciel et est donclente.

– l’arithmétique multi-précision : il s’agit d’une arithmétique flottante dans laquelle on peut spé-cifier une précision plus grande que celle disponible en machine. Cette précision peut-être sta-tique ou dynamique. Elle est statique si elle est choisie au départ et n’évolue pas par la suite etdynamique si elle évolue au cours de l’exécution du programme.

Le choix de l’utilisation d’une arithmétique particulière se fait en tenant compte du type de pro-blème que l’on a à résoudre. On peut vouloir prendre en compte des incertitudes de mesures, ouvouloir un résultat exact, ou bien encore effectuer des calculs avec une grande précision.

L’arihtmétique par intervalles, elle, plutôt que de fournir un résultat précis, veut garantir la fiabilitéde ce dernier. Son introduction permettrait de fiabiliser davantage certains calculs devant l’être, commepar exemple la trajectoire d’un missile, et de plus majorer les incorrections dues aux erreurs d’arrondis.

4

2.2 Arithmétique par intervalles

2.2.1 Présentation, points forts et points faibles

Introduite par R.Moore (1959), l’arithmétique par intervalles, comme son nom le suggère, fait in-tervenir des intervalles et non plus les types standard. L’idée est d’une part de garantir les résultats encalculant un intervalle dans lequel se trouve le résultat effectif. D’autre part, on cherche à fournir unencadrement satisfaisant de la solution et à avoir un résultat suffisamment précis. On cherche à bornerles erreurs d’arrondi dues principalement dans notre cas à l’arithmétique flottante, à la manipulationde données de grande taille et à un nombre important de calculs effectués sur ces données.L’arithmétique par intervalles a été introduite pour fournir une alternative aux arithmétiques exis-tantes. En effet, seule l’arithmétique exacte répond à un besoin de fiabilité mais elle est lente et nepermet pas d’évaluer les fonctions mathématiques (sin, exp . . .) même si elle permet de les manipuler.

Cette arithmétique permet de manipuler des volumes relativement importants de données maisconstitue surtout une arithmétique dont l’axe central est de garantir la fiabilité des résultats quandbien même ceux-ci ne s’avèrent pas précis. Le principal point faible de l’arithmétique par intervallesest cet encadrement que l’on obtient de la solution. En effet on peut obtenir un intervalle beaucouptrop large qui entraîne une grande imprécision sur le résultat. Les calculs doivent donc être menés detelle sorte que l’encadrement obtenu soit de largeur raisonnable.

L’arithmétique par intervalles est présente très tôt dans la littérature [15][16][17][18][19]. Brian Hayespropose dans [7] un historique de l’arithmétique par intervalles.

Dans la partie suivante nous définirons ce qu’est un intervalle et verrons quelques-unes des opé-rations disponibles sur les intervalles et utiles par la suite.

2.2.2 Définitions et opérations sur les intervalles

Un intervalle X = [ x¯,x ] est défini comme suit : x

¯et x sont les extrémités de X et X={x ∈ R/ x

¯≤ x ≤ x }.

Le tableau 1 énumère différentes notions liées à celle d’intervalle.

description représentation valeurmilieu de l’intervalle X mid(X) (x

¯+x)/2

largeur de X w(X) x-x¯rayon de X rad(X) w(X)/2

mignitude de X mig(X) min{| x |/x ∈ X}distance de Hausdorff entre 2 intervalles d(X,Y) max{| x

¯-y¯|,| x-y |}

TAB. 1 – Notions liées aux intervalles.

5

Aux notions présentées dans le tableau ci-dessus viennent s’ajouter les opérations usuelles. Cesopérations sont énumérées de façon sélective et non exhaustive dans le tableau 2. La définition d’uneopération est la suivante si X et Y sont deux intervalles :

X�Y= { X � Y \ x ∈ X , y ∈ Y }

TAB. 2 – Définition des opérations sur les intervalles.description symbole valeur

addition X+Y [(x¯+y

¯),(x+y)]

soustraction X-Y [(x¯-y),(x-y

¯)]

multiplication X*Y [min(x¯*y

¯,x¯*y,x*y

¯,x*y),max(x

¯*y

¯,x¯*y,x*y

¯,x*y)]

division X/Y [min(x¯/y¯,x¯/y,x/y

¯,x/y),max(x

¯/y¯,x¯/y,x/y

¯,x/y)] et 0 /∈ Y

valeur absolue |X| min{| x |/x ∈ X}carré X2 [x2,x

¯2] si X ≤ 0,[x

¯2,x2] si X ≥ 0 et [0,max(x

¯2,x2)] si 0 ∈ X

Les fonctions élémentaires sont disponibles pour les intervalles comme par exemple, le sinus oule cosinus, l’exponentielle et le logarithme népérien.

Une autre définition est qu’un intervalle X est positif (respectivement négatif) si et seulement si :∀x ∈ X, x > 0 (respectivement ∀x ∈ X , x < 0).

Notons que certaines propriétés des opérations, vraies dans le cadre de l’arithmétique exacte, ne lesont plus dans le cadre de l’arithmétique par intervalles. Par exemple si X, Y et Z sont des intervalles.

X*(Y+Z) ⊂ XY + XZmais il n’y a pas nécessairement égalité.

Il n’y a plus distributivité mais sous-distributivité de la multiplication par rapport à l’addition.

Le problème qui nous intéresse est la résolution de systèmes linéaires. Nous verrons dans la sectionsuivante quelques méthodes existantes pour la résolution des systèmes linéaires. Les méthodes pré-sentées, celle de Gauss et celle de Gauss-Seidel, sont celles qui ont été implantées dans les différentsalgorithmes réalisés.

6

3 Résolution de systèmes linéaires

3.1 Quelques notions clés

Voici quelques types de matrices utilisées par la suite :

– matrice diagonale dominante : matrice M vérifiant⇒ |Mii | >∑

j 6=i |Mij | (i ∈ {1 . . . n})

exemple : M =

4 1 1 11 5 1 11 1 7 32 1 1 6

– matrice creuse : matrice M comportant une majorité de 0

– matrice triangulaire supérieure : matrice M vérifiant⇒Mij = 0 ∀ j < i

– matrice triangulaire inférieure : matrice M vérifiant⇒Mij = 0 ∀i < j

exemples : TS =

1 2 3 40 5 6 70 0 8 90 0 0 10

TI =

11 0 0 012 13 0 014 15 16 017 18 19 20

3.2 Définition

Un système linéaire ”carré” de dimension n est un ensemble de n équations à n inconnues :

S :

2x +3y −z = −1x −2y +z = 2−x +y −2z = 0.

Le système S peut être alors écrit matriciellement sous la forme Ax = b avec :

A =

a11 . . . . . . an1

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .a1n . . . . . . ann

b =

b1...bn

7

pour notre exemple :

AS =

2 3 −11 −2 1−1 1 −2

bS =

−1

20

Il s’agit alors de résoudre A.x=b avec x le vecteur solution :

x =

x1

.

.xn

Il existe de nombreuses méthodes pour la résolution des systèmes linéaires, citons : la méthode deJacobi, les méthodes de relaxation, la méthode de Gauss ou bien encore la méthode de Gauss-Seidel,les méthodes de Krylov, GMRES . . .Ces dernières méthodes sont basées sur des orthogonalisations,qui ne peuvent pas être utilisées en arithmétique par intervalles et ne seront donc pas considérées.Dans la section suivante les méthodes de Gauss et de Gauss-Seidel seront présentées.

3.3 Méthodes pour la résolution de systèmes linéaires

3.3.1 Définitions : algorithmes direct et itératif.

Il est nécessaire de définir le type d’algorithme que l’on est amené à utiliser. Dans [3] les défini-tions suivantes ont été données :

– Un algorithme direct est un algorithme qui, si l’arithmétique de la machine utilisée était exacte,donnerait la solution du problème discret en un nombre fini d’étapes. Lorsqu’on utilise unalgorithme direct, il n’y a pas d’erreur de méthode : les seules erreurs qui apparaissent sontdes erreurs d’arrondi.

– Un algorithme itératif construit une suite d’approximations qui converge vers un résultat cher-ché. On arrête le calcul lorsque l’on estime qu’une certaine précision est atteinte - cette esti-mation est souvent délicate - ou lorsque le nombre d’itérations effectuées dépasse une certainelimite, ou encore si la suite d’approximations ne converge pas.

8

Le choix du type d’algorithme dépend de ce que l’on veut résoudre tout autant que le type d’arith-métique car suivant certains critères, tels que la structure de la matrice de départ, l’un ou l’autre typed’algorithme est plus adéquat.

Voyons maintenant deux méthodes de résolution de systèmes linéaires et leurs caractéristiques.

3.3.2 Méthode directe de Gauss

L’algorithme de Gauss, le plus connu, est un algorithme direct. Ici, une inconnue est exprimée enfonction des autres, et, par substitution on détermine la valeur de chacune d’entre elles. La méthodede Gauss, ou méthode du pivot de Gauss, a pour point central le choix du pivot qui ne doit pas êtrenul. Ce choix peut être :

– partiel si on cherche le pivot seulement dans la ligne ou la colonne courante ; dans ce cas leséchanges s’appliquent soit aux lignes soit aux colonnes (nécessite n2 opérations)

– total si on cherche le pivot parmi tous les éléments restants ; dans ce cas on permute lignes etcolonnes (nécessite n3 opérations)

Le méthode du pivot partiel est plus souvent implémentée car elle met en jeu un nombre de calculsplus petit et sa stabilité numérique est souvent satisfaisante.

Dans tous les cas il est plus judicieux de prendre le pivot le plus grand en terme de valeur absolue afinde minimiser les erreurs d’arrondi.

Le choix du pivot se traduit par l’application d’opérations (permutations) sur les lignes, les colonnesou les deux à la fois.

Soit :

A =

a11 . . . . . . an1

a12 a22 . . . . . .. . . . . . . . . . . .a1n a2n . . . ann

Les opérations permises sont les suivantes, avec Li la ieme ligne de A et α un réel :

Li ← Li + αLj , α ∈ <

Pour simplifier les calculs, on cherche à remplacer le système de départ par un système équivalentplus simple à résoudre. L’ idée est de calculer la décomposition LU de la matrice A, c’est-à-dire d’ob-tenir deux matrices, l’une triangulaire supérieure (U), l’autre triangulaire inférieure (L) telles que leur

9

produit L x U soit égal à A. Il reste à résoudre deux systèmes linéaires, l’un inférieur et l’autre supé-rieur, ce qui est facile.

Les différentes étapes sont explicitées ci-dessous.

Étape 1 : calculer la décomposition LU de la matrice A, à l’étape k

On cherche à calculer :

la matrice L (triangulaire inférieure) et la matrice U (triangulaire inférieure)

1 0 0 0 . . . 0l21 1 0 0 . . . 0. . . . . . 1 0 . . . 0. . . . . . . . . 1 . . . . . .. . . . . . . . . . . . 1 . . .l1n . . . . . . . . . ln−1,n 1

u11 u12 . . . . . . . . . u1n

0 u22 u23 u24 . . . u2n

0 0 uii . . . . . . . . .0 . . . 0 ujj . . . . . .0 . . . . . . . . . un−1,n−1 un−1,n

0 . . . . . . . . . 0 unn

telles que A= L*U. En effectuant le produit de L et U, l’équation aij =∑n

k=0 lik ∗ ukj ∀i, j sedécompose comme suit de par la structure particulière des matrices L et U.

aij =

∑k<ik=0 lik ∗ ukj si i < j car lij=0

∑k<jk=0 lik ∗ ukj si i > j car uij=0

∑k<ik=0 lik ∗ uki si i=j.

Ce qui mène à :

aij =∑k<min(i,j)

k=0 lik ∗ ukj ∀i, j

Ceci permet de calculer les matrices L et U en initialisant la matrice LU à l’identité.La matrice LU stocke en fait les deux matrices L et U dans une seule et même matrice comme suit :la matrice U est stockée dans la partie triangulaire supérieure et la matrice L est stockée dans la partietriangulaire inférieure. La diagonale de L n’étant composée que de 1 n’est pas stockée explicitement.

10

LU =

u11 u12 . . . . . . . . . u1n

l21 u22 u23 u11 . . . u2n

. . . l32 uii . . . . . . . . .

. . . . . . . . . . . . . . . . . .ln−1,1 . . . . . . ln−1,n−2 un−1,n−1 un−1,n

ln1 . . . . . . . . . ln,n−1 unn

Étape 2 : pivotage et résolution de Ly=b puis Ux=y

La résolution du système linéaire Ax = b se ramène maintenant à la résolution des systèmes Ly=bet Ux=y, qui se fait par une descente puis une remontée puisque :

. résout Ly=b : résout Ux=y :

. y1=b1 xn=bn

. pour j=2 à n pour j=n-1 à 1

. yj = bj -∑j−1

k=1 lj,kyk xj = (bj -∑n

k=j+1 uj,k)/uij

Exemple de résolution par la méthode de Gauss (avec pivot partiel)

Soit les matrices A et b suivantes :

A =

6 1 12 9 11 0 3

b =

211

La décomposition LU de A est :

L =

1 0 00, 333333 1 00, 166667 −0, 0192308 1

U =

6 1 10 8, 66667 0, 6666670 0 2, 84615

et on trouve :

x =

0.2905410.02027030.236486

11

La méthode du pivot de Gauss que nous venons de parcourir nécessite une quantité de calculs del’ordre de O(n3). Un des inconvénients de cette méthode est que la mémoire requise pour stocker L etU peut être bien supérieure à celle requise pour stocker A, car L et U peuvent ne pas être creuses oul’être beaucoup moins que A. Dans le cas de matrices creuses d’autres méthodes sont mieux adaptées.La section suivante présente une méthode itérative, ne modifiant pas la structure de la matrice : laméthode de Gauss-Seidel.

3.3.3 Méthode de Gauss-Seidel

Les méthodes itératives sont préférées aux méthodes directes dans le cas de matrices creuses. Laméthode de Gauss-Seidel que nous allons présenter n’est pas la plus performante en arithmétiqueusuelle, mais elle est la meilleure méthode de type relaxation en arithmétique par intervalles.La matrice de départ A est décomposée suivant le schéma : A= D-E-F, où D est la matrice diagonaleconstituée des aii ∀i, E la matrice triangulaire inférieure constituée des -aij / i > j, et F la matricetriangulaire supérieure constituée des aij / i < j.

��������������������������������������������������������������������������������������������������������������������������������������������������������������������������

������������������������������������������������������������������������������������������������������������������������������������������������������

��������������������������������������������������������������������������������������������������������������������������������������������������������������������������

������������������������������������������������������������������������������������������������������������������������������������������������������

���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

E

FDA =

Le système Ax=b s’écrit sous la forme : (D-E)x=b+F.x, ce qui permet de définir la méthode deGauss-Seidel.

Le principe de l’algorithme de Gauss-Seidel est de partir d’un vecteur x0 dont les composantes x0i

sont choisies de façon arbitraire et de chercher à affiner, au fur et à mesure des itérations ce vecteur dedépart. Notons xij la jeme composante de x à l’itération i.

Le vecteur x évolue de la façon suivante :

x1

x11 = 1

A11(b1 −A12x

02 − ...−A1nx

0n)

x12 = 1

A22(b2 −A21x

11 −A23x

03 − ...−A2nx

0n)

. . .

. . .x1n = 1

Ann(bn −An1x

1n − ...−An,n−1x

1n−1)

12

Et plus généralement, à l’étape j on a :

xji = 1Aii

( bi - Ai1 xj1 - ... - Ai,i−1 x

ji−1 - Ai,i+1 x

j−1i+1 - ... - Ain x

j−1n )

ce qui s’écrit aussi :

xji = 1Aii

(bi -∑i−1

k=1Aikxjk -∑n

k=i+1 Aikxj−1k )

Soit (si x est mis à jour dans un même vecteur) :

xi = 1Aii

(bi −∑n

k=0Aikxk), k 6= i

La convergence est alors plus rapide comparativement à la méthode de Jacobi (on parle d’itérationssimultanées contrairement à ici ou l’on parle d’itérations successives) non décrite ici mais qui estsimilaire à la différence que, à une itération i ce ne sont que les composantes du vecteur x à l’étapeprécédente qui sont utilisées.

13

On détermine une condition d’arrêt :

– nombre maximal d’itérations.

– convergence absolue : |xn+1 − xn| ≺ ε ; si la distance entre deux itérations successives estinférieure à un seuil Sinf fixé. On continue la boucle jusqu’à ce que d’une itération à l’autre leschangements soient très proches de 0.

– convergence relative : |xn+1 − xn| ≺ κ|xn| , si la distance entre deux itérations (k et k+1)successives, est inférieure à un seuil Sr fixé relativement à xk.

– divergence, si la distance de Hausdorff entre deux itérés est supérieure à un seuil Ssup fixé.

La condition d’arrêt est vérifiée lorsque l’un des critères est vérifié. Les deux méthodes présentéesci-dessus ont été adaptées pour le calcul par intervalles notamment par Moore en 1959 et par Hansenen 1965. Nous avons choisi d’implémenter l’une et l’autre, par là on a à notre disposition une méthodeitérative et une méthode directe.

Nous verrons dans la section suivante l’adaptation de ces deux méthodes dans le cadre de l’arith-métique par intervalles.

3.4 Résolution des systèmes linéaires avec intervalles.

3.4.1 Définition de la résolution d’un système linéaire par intervalles

Dans le cadre de la résolution de systèmes linéaires par l’arithmétique par intervalles, on utiliserala méthode du pré-traitement, dans le but de parvenir à un système équivalent à celui de départ, maisplus simple à résoudre de par ses caractéristiques.

Pré-traitement du système.

Manipuler des intervalles s’avère plus coriace que de manipuler les types standard. En 1965 EldonHansen a alors introduit une nouvelle idée qui permettrait d’améliorer les calculs effectués sur des in-tervalles. Ainsi il suggère l’utilisation d’une matrice de pré-traitement afin de transformer le systèmeen un système dont la matrice est proche de l’identité et donc pour lequel les méthodes fonctionnentmieux (convergence plus rapide). Le système est alors simplifié. L’algorithme proposé par Hansen estprésenté ci-dessous.

14

Pour résoudre le système AIx = bI , les étapes sont les suivantes :

– calculer Ac la matrice centre de la matrice intervalle AI

– poser B l’inverse de Ac, ce calcul est possible car le système mis en jeu est petit, ce qui permetune inversion numérique.

– poser M I = BAI et rI = BbI

– résoudre alors le nouveau système : M Ix = rI

On dit alors que le système AIx = bI a été pré-multiplié par la matrice B = (Ac)−1.

Prenons un exemple.

Soit AI et bI les matrices d’intervalles :

AI =

([0, 6] [0, 2][1, 1] [0, 2]

)bI =

([1, 2][0, 1]

)

La matrice centre de A = {aij} est la matrice Ac = {acij / acij = mid(aij)}.

Soit :

Ac =

(3 11 1

)B = 〈Ac〉−1 =

(12 −1

2−1

232

)

d’où :

M I =

([−1/2, 5/2] [−1, 1][−3/2, 3/2] [−1, 3]

)rI =

([1/2,−3/2][−1/2, 1]

)

On obtient alors un système un peu moins complexe à résoudre avec des matrices simplifiées. Eneffet une condition suffisante de convergence de Gauss-Seidel sur les matrices usuelles est qu’ellessoient à diagonale dominante. Comme M I contient l’identité, on espère qu’elle est à diagonale domi-nante et donc qu’il y aura convergence. Les algorithmes classiques de résolution de systèmes linéairessont alors appliqués au nouveau système M Ix = rI .

3.4.2 Systèmes linéaires et intervalles

Pour résoudre un système linéaire mettant en jeu des matrices d’intervalles on cherche à trou-ver le plus petit vecteur intervalle contenant l’ensemble des vecteurs x tels qu’ il existe une matriceponctuelle A ∈ A et B ∈ b et que l’on ait l’égalité Ax = B. Soit :

∑∃∃A,B = Int {x / ∃ A ∈ A,∃ B ∈ b, Ax =B}

15

Exemple

soit A =

[3, 9] [0, 2] [1, 1][0, 1] [3, 3] [0, 0][1, 1] [1, 1] [6, 6]

et b =

[1, 2][0, 1][0, 0]

Le vecteur t suivant est une solution de Ax=b car on a At = B avec A ⊂ A et B ⊂ b.

t =

1/32/3−1/3

avec A =

2 1 13 0 01 1 6

et B =

210

Tandis que la solution de ce système est :

x =

[1.477527228102461e − 2, 1.014146341463416][−3.000000000000004e − 1, 5.917073170731713e − 1][−2.109339678762643e − 1, 8.898274836406920e − 2]

16

Méthodes de Gauss et de Gauss-Seidel

La méthode de Gauss reste inchangée dans le cas de matrices d’intervalles : la seuledifférence est que le pivot de Gauss n’est plus le plus grand mais plutôt celui qui est le pluséloigné de 0, autrement dit celui qui a la plus grande mignitude.

La méthode de Gauss-Seidel suit elle aussi le même principe dans le cadre de l’arithmétiquepar intervalles. Il est nécessaire de vérifier que les éléments diagonaux de A ne contiennentpas zéro. Le critère d’arrêt est également conservé. La distance utilisée est maintenant ladistance de Hausdorff (définie en section 2.2.2).

4 Résumé

Nous avons vu dans cette première partie l’arithmétique par intervalles qui a été introduitepour satisfaire au besoin de calcul garanti même si les résultats ne sont pas d’une très fineprécision.

Les systèmes linéaires ont été présentés ainsi que deux méthodes de résolution qui sont laméthode de Gauss et celle de Gauss-Seidel.Nous avons vu que ces méthodes s’adaptent parfaitement au calcul par intervalles en suivantla même philosophie, mais qu’un pré-traitement peut s’avérer utile.

L’idée maintenant est d’effectivement pouvoir obtenir des résultats cohérents et de voir enquoi la précision choisie au départ, voire l’évolution de cette précision en cours de traitement,peut constituer un choix décisif pour garantir un résultat correct et précis.

17

5 Mise en oeuvre et contributions

5.1 Implantations.

5.1.1 Contexte.

Plusieurs bibliothèques ont été nécessaires à la réalisation des programmes implantés.

Tout d’abord GMP et MPFR sont deux bibliothèques écrites en C. Elles mettent à dispo-sition une arithmétique en précision arbitraire (GMP) sur des nombres flottants représentésde façon fiable (MPFR).

Nathalie Revol a fourni une bibliothèque pour le calcul par intervalles en précision arbi-traire écrite en C (MPFI) ainsi que des interfaces C++ à MPFR (MPFR++) et MPFI (MPFI++).La bibliothèque MPFI permet de représenter les nombres sous forme d’intervalles dont lesextrémités sont de type MPFR. Elle permet donc d’obtenir des arrondis exacts et de plus ellepermet l’utilisation des nombres en précision arbitraire.

De plus la bibliothèque LINBOX a été utilisée pour les déclarations et manipulations dematrices car fournissant un type ”matrix” avec un type d’élément générique.Le choix de la bibliothèque LINBOX a été motivé par le fait que c’est une bibliothèque moinslourde et plus performante (pas d’itérateur . . .) que la bibliothèque STL. De plus, cette implé-mentation s’inscrit dans le cadre du projet Roxane dont l’objectif est de mettre en place unsupport logiciel complet pour la résolution symbolique ou numérique de problèmes arithmé-tiques. Ce support aurait pour caractéristiques d’être réutilisable et efficace. Pour cela diverstravaux réalisés dans plusieurs universités ou laboratoires sont mis en commun.

Ainsi on a pour la première fois fait interopérer la bibliothèque pour l’arithmétique parintervalles en précision arbitraire MPFI et la bibliothèque pour les calculs en algèbre linéaireLINBOX.

Les méthodes de résolution de systèmes linéaires vues dans la partie précédente ont étéécrites pour les calculs sur les types standard (flottants machine et flottants MPFR) et égale-ment pour les calculs sur les intervalles, ainsi que toutes les fonctions annexes participant àcette résolution.

Le logiciel INTLAB [10] (extension de MATLAB) a été utilisé pour la comparaison desrésultats, la méthode de Gauss étant disponible. Les courbes ont été tracées à l’aide de Gnu-plot. INTLAB constitue une extension du logiciel MATLAB pour les calculs par intervalles.INTLAB met, entre autres, à disposition un type pour définir des matrices à coefficients in-tervalles et des opérations sur ces matrices.

18

5.1.2 Programmation.

L’organigramme et le tableau suivants présentent respectivement la hiérarchie des bi-bliothèques utilisées et des programmes implantés et de façon plus détaillée le contenu desprogrammes.

Hiérarchie des programmes et bibliothèques

��������������

������������������������������

����������������������������������������

����������������������������������������

������������������������������������

������������������������������������

����������������������������������������

��������������������������������

������������������������������������

����������������������������������������

��������������������������������������

������������������������������������

������������������������������������

����������������������������������������

������������������������������������

!!!!!!!!!!!!!!!!!!!!!!

""""""""""""""""""##################

inverse_double.c inverse_mpfr++.c sys_lin_mpfi.c

donnees.c

all GMP (.h/.c)

all MPFR (.h/.c)

float_alg_lin.h

MPFI++.h/.c

inter_alg_lin.h

sys_lin_mpfr++.csys_lin_double.c

MPFR++.h/.c all MPFI(.h/.c)

$%$%$%$$%$%$%$$%$%$%$&%&%&&%&%&&%&%&

'%'%''%'%''%'%''%'%'

(%(%((%(%((%(%((%(%(

)%)%))%)%)*%*%**%*%*

bibliothèques laissées intactes

bibliothèques modifiées

programmes implémentés

programme descriptionfloat_alg_lin.h toutes les fonctions nécessaires aux calculs sur ”double” ou ”MPFR” (initialisation, multiplication et

addition de matrices, méthode de Gauss, méthode de Gauss-Seidel...)

inter_alg_lin.h toutes les fonctions nécessaires aux calculs sur ”intervalles” (initialisation, multiplication et addition dematrices, méthode de Gauss, méthode de Gauss-Seidel...)

donnees .c toutes les fonctions nécessaires à la sauvegarde des données pour la transmission vers INTLAB ouGnuplot

inverse_double.c inverse une matrice de ”double” par la méthode de Gauss

inverse_MPFR.c inverse une matrice ”de MPFR” (”MpfrClass”) par la méthode de Gauss

sys_lin_double.c résout un système linéaire de matrice ”double”par la méthode de Gauss et par la méthode de Gauss-Seidel

sys_lin_MPFR++.c résout un système linéaire de matrice ”MPFR” (”MpfrClass”) ’par la méthode de Gauss et par la mé-thode de Gauss-Seidel

sys_lin_mpfi.c résout un système linéaire de matrice intervalle (”MPFIClass”) ’par la méthode de Gauss et par laméthode de Gauss-Seidel

TAB. 3 – Programmes implémentés (1600 lignes de codes).

19

5.2 Raffinement des calculs et précision.

5.2.1 Précision des nombres flottants.

Il existe différents types de précision. Pour ces différents types de précision il y variationde la taille de la mantisse et de l’exposant (cf. &2.1) :

– la précision simple : mantisse de 24 bits et exposant de 8 bits– la double précision : mantisse de 53 bits et exposant de 11 bits– la précision étendue : mantisse de 64 bits et exposant de 15 bits– la multi-précision qui permet de spécifier une précision au choix et que nous verrons

plus bas.

On peut alors opter pour une précision fixée au départ ou pour une précision que l’onpourrait faire évoluer en cours d’exécution. Nous verrons que l’arithmétique en précisionarbitraire permet une certaine souplesse en ce qui concerne la manipulation de la précision etcomment on pourrait mettre à profit cette souplesse.

5.2.2 La multi-précision.

Le calcul multi-précision permet de manipuler des nombres avec une précision plus im-portante que celles disponibles en machine. Si l’on a suffisamment de temps et de mémoireà disposition, on peut fixer une précision aussi grande que l’on veut. Face à des calculs enprécision fixée, la précision arbitraire engendre un surcoût important en temps d’exécutionet occupation mémoire. Dans le cas de l’arithmétique flottante machine on a une représenta-tion fixe des nombres et comme nous l’avons vu précédemment une implémentation de basniveau qui est donc efficace. Ici, il est nécessaire de mettre en place des moyens d’effectuerles calculs en précision plus grande.

L’arithmétique par intervalles en précision arbitraire permet d’obtenir des résultats plusprécis car il est possible d’adapter la précision en cours d’exécution afin de raffiner les calculs.En effet, nous verrons que l’idée est de voir quand et comment faire évoluer la précision afinde raffiner les résultats.

20

5.3 Adapter dynamiquement la précision

5.3.1 But recherché

L’idée est de savoir quand et comment ”jouer” sur la précision afin que le résultat obtenuse rapproche au mieux de la solution escomptée. Il existe déjà de nombreuses façon de ma-nipuler la précision au fur et à mesure des calculs ou avant que ceux-ci ne débutent.

Dans le cadre de ce stage l’idée a été de de pouvoir fixer une précision avant exécutionet pouvoir la modifier en cours d’exécution en déterminant le moment le plus judicieux pouraugmenter la précision et la façon de l’augmenter afin de parvenir à un résultat plus fin.

De façon intuitive, la fonction de variation de la précision dépendrait des données sui-vantes : la taille de la matrice, la précision de départ et de l’évolution dans les calculs. Pluson se rapproche de la solution plus on souhaiterait des calculs avec une précision grande. Encommencerait alors avec une précision peu élevée que l’on ferait croître au fur et à mesuredes calculs.

La taille de la matrice jouerait un rôle dans le sens où l’on est plus susceptible d’obtenirdes intervalles trop larges avec des dimensions plus grandes.

Cependant l’utilisation de matrices de grande taille se limite à ce que l’ordinateur permetde gérer. Dans notre cas les matrices les plus grandes que l’on a pu manipuler sont des ma-trices de tailles 50x50 avec une précision allant de 53 à 3000 (car la puissance de la machinene permettait ni une taille, ni une précision plus élevée) sur une machine de 2 Ghz et de 256Mo de mémoire.La précision de départ limite aussi la précision des données et par conséquent celles desrésultats. Enfin, dans la plupart des cas, on s’attend à une erreur linéaire en le nombre d’opé-rations effectuées. Ceci n’est bien sûr qu’une remarque empirique. La largeur des donnéesest également directement liée à celle des résultats.

5.3.2 Observations

Intuitivement, l’idée première est que le raffinement du résultat devrait se voir améliorési la précision utilisée pour effectuer les calculs est grande.Cette intuition ne s’est pas révélée juste dans la pratique. En résolvant un système par laméthode de Gauss-Seidel et en effectuant les calculs en précision 53,100,1000 et 3000, lamesure de la distance de Hausdorff entre l’itération k-1 et l’itération k de x donne des courbessimilaires (pour des matrices diagonales dominantes).

Le même ensemble de courbes est obtenu si on ne pré-traite pas le système ou si la

21

1e-35

1e-30

1e-25

1e-20

1e-15

1e-10

1e-05

1

0 5 10 15 20 25 30 35 40

dist

ance

de

Hau

ssdo

rf d(

k-1,

k)

k (nombre d’iterations)

Variation de la distance de Hausdorff (matrice 50x50)

prec=53prec=100

prec=1000prec=3000

FIG. 1 – Courbe 1.

matrice de départ est générée de façon totalement aléatoire (tout en prenant soin à ce que leséléments diagonaux soient non nuls). De plus dans le cas de matrices quelconques on peutavoir divergence de la méthode comme le montre la figure ci-dessous qui constitue une partiede la courbe complète (la divergence étant très rapide on atteint rapidement des valeurs trèsgrandes de l’ordre de 101000).

1e+30

1e+35

1e+40

1e+45

1e+50

1e+55

1e+60

1e+65

0.8 1 1.2 1.4 1.6 1.8 2

dist

ance

de

Hau

ssdo

rf d(

k-1,

k)

k (nombre d’iterations)

Variation de la distance de Hausdorff (matrice 50x50)

prec=53prec=100

prec=1000prec=3000

FIG. 2 – Courbe 2.

22

Pour tenter d’améliorer les observations, l’idée a été de définir une fonction random quipermettrait de définir un intervalle en fonction de son centre et son rayon. Il suffit alors dede tirer aléatoirement un centre et un rayon pour chaque composante de la matrice, celapermet d’avoir des intervalles moins grands en choisissant un domaine de définition pour lafonction random qui permet de borner le rayon. Ce choix a été fait pour contrôler la largeurdes matrices en entrée et donc la largeur des résultats.

Dans cette configuration il n’ y a pas de changements par rapport à la première courbe. Larayon fixé pour les intervalles étaient de 10−3. Il est a noter que les courbes 2 et 3 ont pu êtreobtenues en utilisant comme critère d’arrêt, le nombre d’itérations alors que pour la courbe 1,le critère d’arrêt était la convergence absolue. Ce choix a été fait car il y avait une convergence(divergence) très rapide et donc peu d’itérations.

1e-38

1e-36

1e-34

1e-32

1e-30

1e-28

1e-26

1e-24

1e-22

1e-20

1e-18

1 1.5 2 2.5 3

dist

ance

de

Hau

ssdo

rf d(

k-1,

k)

k (nombre d’iterations)

Variation de la distance de Hausdorff (matrice 50x50)

prec=53prec=1000prec=3000prec=5000

FIG. 3 – Courbe 3.

Les matrices utilisées étaient à diagonale dominante, il est fort possible alors qu’ellespermettent une converge trop rapide, en d’autres termes, si les calculs s’avèrent d’ores etdéjà corrects du fait de la structure particulière des matrices, ils ne permettent donc pas demettre en évidence l’impact qu’aurait la précision sur les résultats obtenus.Une autre idée serait de voir jusqu’à quel moment il n’est pas utile d’augmenter la précision,puisque les courbes sont confondues, et d’augmenter cette précision au moment où on détecteque la courbe est stationnaire.

23

6 Conclusion

Ce stage a permis une découverte et une immersion dans l’arithmétique par intervallesen précision arbitraire. Cette arithmétique semble avoir un avenir prometteur du fait qu’elletend à allier fiabilité et précision des calculs.La programmation a représenté une partie conséquente du stage du fait des difficultés à faireinteropérer différentes bibliothèques.

L’arithmétique par intervalles comme nous l’avons vu a été introduite pour pouvoir ga-rantir des calculs menant à des résultats fiables mais qui peuvent être imprécis. L’utilisationde la multi-précision permettrait d’apporter aux calculs la précision qu’ils n’auraient pas,manque de précision due à un sur-encadrement.

Deux méthodes de résolution de systèmes linéaires ont été implantées, les méthodes deGauss et de Gauss-Seidel. Sur la base de ces implantations, on a cherché à voir en quoi lechoix de la précision pourrait influer sur le raffinement des résultats. Des résultats concluantsn’ont pas pu être mis en exergue.

Les résultats attendus n’ont pas été obtenus. En effet, on a pas pu vérifier le fait que plusla précision est grande et plus les résultats sont précis. Partant de là il aurait fallu trouvercomment la faire évoluer au mieux.

Je tiens à remercier mon maître de stage Nathalie Revol pour sa patience, ainsi quel’équipe Arénaire.

24

A Installation des bibliothèques

� Installer GMP [21] version (4.x)

CXX=g++-3.0 CC=gcc-3.0 ./configure –prefix=rep_gmp –enable-cxxmake ; make check ; make install

� Installer MPFR [13] (version 2.0)

CXX=g++-3.0 CC=gcc-3.0 ./prepare –prefix=rep_MPFR –with-gmp=rep_gmpmake libMPFR.a ; (make check) ; (make install)

� Installer MPFI [12]

CXX=g++-3.0 CC=gcc-3.0 ./configure –prefix=rep_mpfi –with-gmp-dir=rep_gmp–with-MPFR-incpath=rep_MPFR_include –with-MPFR-libpath=rep_MPFR_lib

make ; make check ; make install

� Installer LINBOX [11]

tar xfz linbox.tar./autogen.sh –prefix="rep_install" –with-gmp="rep_gmp"

make ; make install

� Installer MPFR++ et MPFI++[12]

make

25

Références

[1] Eldon Hansen Global optimization using interval analysis, Dekker 1992

[2] Michael Wolfe Interval mathematics algebraic equations optimization,Journal of Computationaland Applied Mathematics, volume 124, pages 263-280, Decembre 2000

[3] Marc Daumas et Jean-Michel MullerQualité des calculs sur ordinateurs : vers des arithmétiques plus fiables, MASSON 1997

[4] Goetz Alefeld et Guenter MayerInterval analysis : theory and applications Journal of computational and applied mathematics,numéro 121, pages 421-464, 2000

[5] Arnold Neumaier Interval methods for systems of equations, Cambridge University Press 1990

[6] Arnold Neumaier A simple derivation of the Hansen-Blieck-Rohn-Ning-Kearfott enclosure forlinear interval equations, Reliable Computing, volume 5, pages 131-136, 1999

[7] Brian HayesA lucid interval, American Scientist volume 91, numéro 6, pages 484-488 November-December2003

[8] Gareth I. HargreavesInterval Analysis in MATLAB( http://www.maths.man.ac.uk/~hargreaves/), MScthesis University of Manchester 2002

[9] Siegfried Rump Fast and parallel interval arithmetic, BIT volume 39, numéro 3, pages 534-554,1999 http://www.ti3.tu-harburg.de/~rump/intlab/

[10] Siegfried Rump INTLAB- Interval Laboratory, Developments in reliable computing, Ti-bor Csendes editor, Kluwer pages 77-104, 1999 http://www.ti3.tu-harburg.de/~rump/intlab/

[11] Project LinBox http://www.linalg.org/

[12] Page personnelle de Nathalie Revol (MPFI,MPFI++,MPFR++) http://perso.ens-lyon.fr/nathalie.revol/software.html

[13] MPFR http://www.MPFR.org/

[14] Projet Roxane http://www-sop.inria.fr/galaad/logiciels/roxane/

[15] Moore, Ramon E. 1966. Interval Analysis. Englewood Cliffs,N.J. : Prentice-Hall.

[16] Moore, Ramon E. 1979. Methods and Applications of Interval Analysis. Philadelphia : Societyfor Industrial and Applied Mathematics.

[17] Warmus, M. 1956. Calculus of approximations. , M. 1956. Calculus of approximations. Also athttp://www.cs.utep.edu/interval-comp/warmus.pdf

[18] Sunaga, Teruo. 1958. Theory of interval algebra and its application to numerical analysis. InRAAG Memoirs, Ggujutsu Bunken Fukuy-kai. Tokyo, Vol. 2, pp. 29 46. Also at http://www.cs.utep.edu/interval-comp/sunaga.pdf

[19] Young, Rosalind Cecily. 1931. The algebra of many-valued quantities. Mathematische Annalen104 :260 290. Also at http://www.cs.utep.edu/interval-comp/young.pdf

[20] Federation of American Scientists Space policy project, Special weapons monitor, General Ac-counting Office " Report on Patriot Missile Software Problem", 1992, http://www.fas.org/spp/starwars/gao/im92026.htm

26

[21] GMP web pages http://www.swox.com/gmp/

[22] American National Standards Institute and Institute of Electrical and Electronic Engineers IEEEstandard for binary floating-point arithmetic. ANSI/IEEE Standard 754-1985 1985

27