|
Types (semi-) numériques |
|||||||||||||||||||||||||||||||||||||||||||||||||||||
SyntaxeTypes numériquesTypes structurésExpressionsÉvaluationProcédures |
Qu'est-ce qu'un nombre pour Maple ? Comme en maths, cette notion se subdivise en plusieurs catégories. Les correspondances ne sont pas parfaites et il vaut mieux garder à l'esprit quelques différences. Vue d'ensembleLe tableau ci-dessous récapitule ce qui peut être appelé nombre en Maple [1].
Maple associe à chaque donnée un type de base. C'est ce qu'on obtient comme réponse à whattype(donnée). Mais on peut aussi tester une donnée par rapport à un type dérivé [2] par type(donnée , type_dérivé) (qui retourne true ou false). EntiersLe type Maple de base integer correspond à l'ensemble des entiers relatifs (Z) [3].Citons quelques fonctions utiles portant sur les entiers :
FractionsIl s'agit des rationnels non entiers, car le type de base d'une donnée doit être unique et une fraction telle que 6/3 est automatiquement simplifiée à 2 [6].Ceci explique la nécessité du type dérivé rational. On obtient le numérateur d'une fraction avec numer(r) ou la syntaxe plus générale [6] op(1,r). On obtient son dénominateur avec denom(r) ou op(2,r). DécimauxLe type float correspond assez bien aux nombre décimaux mathématiques (ensemble D). Toutefois, on se gardera de confondre 2 (qui n'est pas un float) avec 2.0 (qui en est un).Typiquement, un float est le résultat d'une approximation numérique (evalf). Un tel décimal d s'écrit de manière unique (-)a.10b avec a, b entiers et b maximal. a est la mantisse de d qui s'obtient avec op(1,d) ; a est la mantisse de d qui s'obtient avec op(2,d) . Maple conserve, pour des raisons de compatibilité, la notation désuète Float(a,b) (correspondant à a.10b). Tests de typeDans les procédures où l'on a besoin de savoir à quel type de donnée on a affaire, l'instruction type(...) est utile :Expressions algébriquesLe type dérivé realcons englobe tout ce que Maple est capable d'approximer numériquement.
Dans ce cas, le résultat de le commande whattype est parfois explicite, parfois surprenant. On se reportera à la section "Expressions" pour plus de détails. Attention ! Les données de ce type ne réagissent pas à la relation d'ordre. Il faut les approximer avec evalf avant de pouvoir les faire figurer dans des tests. ComplexesLe type complex n'est pas un type de base, mais un type dérivé.
Les principales fonctions que l'on peut avoir à calculer en un complexe z sont :
Enfin, on peut tester avec complex(sous_type) si un complexe donné présente des parties réelle et imaginaire d'un type particulier. Là encore, on se rappellera que Maple n'effectue pas automatiquement toutes les réductions : Notes[1] D'une manière générale, tout ce que Maple peut approximer (avec evalf). [2] Un type dérivé n'est jamais le résultat de la commande whattype. [3] Maple n'implémente pas la notion d'entier naturel. On peut la tester en vérifiant le type integer et le signe. [4] Maple ignore les notations div et mod, pourtant classiques. [5] Cette disposition constitue ainsi une dérogation à la syntaxe classique des fonctions en Maple. [6] Voir la section "Expressions". |