Section : Domaines
Précédent : Domaines
Suivant : Domaines ``informatiques''

Domaines ``mathématiques''

Un exemple de tel domaine prédéfini en MuPAD est Dom::Rational. Chaque domaine mathématique appartient à un certain nombre de ``catégories'', chacune représentant des propriétés mathématiques. Un certain nombre d'axiomes sont également supposés valides.

Q:=Dom::Rational:
Q(3/4);
Q(sqrt(2));
Q::allCategories(Q);
Q::allAxioms(Q);
Un domaine peut également dépendre d'un paramètre comme Dom::IntegerMod(23) ; on parle alors d'un domaine paramétré. Une commande très utile est hasProp, qui permet de tester si un domaine vérifie une propriété (i.e. catégorie) donnée. On peut bien sûr empiler les définitions de domaines.
Z23:=Dom::IntegerMod(23):
Z24:=Dom::IntegerMod(24):
Z23::hasProp(Z23, Cat::Field);
Z24::hasProp(Z23, Cat::Field);
F:=Dom::AlgebraicExtension(Z23, x^5+x+1);
L'utilisateur peut lui-même créer de nouveaux domaines mathématiques, à partir des catégories et axiomes prédéfinis, ou en créant de nouvelles catégories au besoin : sous xMuPAD dans la documentation hypertexte, cliquer sur le bouton Load file puis sélectionner le document dom-pack.

Par exemple pour résoudre le système $\{x+2y=1, 3x+4y=2\}$ modulo $5$, on écrira :

F5:=Dom::IntegerMod(5):
A:=Dom::Matrix(F5)([[1,2],[3,4]]):
b:=Dom::Matrix(F5)([[1],[2]]):
linalg::linearSolve(A,b);
L'avantage d'utiliser des domaines mathématiques est double : d'une part tous les calculs sont faits automatiquement dans ce domaine (par exemple modulo $5$ pour les calculs ci-dessus), d'autre part cela permet d'assurer que les calculs sont valides mathématiquement, par exemple le domaine des coefficients d'une matrice doit être au moins un anneau.