|
Expressions et fonctions |
||||||||||||||||||||||||||||||||||||||||
SyntaxeTypes numériquesTypes structurésExpressionsExpressionsFonctionsÉvaluationProcédures |
Pour un système de calcul formel comme Maple, la question de la représentation des expressions symboliques est cruciale.ExpressionsCelles-ci doivent être représentées en interne de façon unique et non ambiguë, p. ex. afin de pouvoir juger de leur égalité.À cet effet, Maple doit effectuer automatiquement certains regroupements. Substitutions automatiquesVoici quelques remplacements que Maple effectue systématiquement [1].
Ordre de calculMaple respecte généralement les conventions algébriques usuelles. On aura donc, du plus au moins prioritaire :
À niveau de priorité égal, les calculs sont faits de gauche à droite. Une exception notable est a^b^c, qui déclenche une erreur [3]. Le type d'une expression est celui de son opérateur de plus bas niveau . Conventions d'affichageParfois la représentation interne d'une expression n'est pas celle que Maple affiche :
Représentation arborescente...Considérons l'expression cos(a + b) = cos(a) cos(b) – sin(a) sin(b).Nous disons que Maple la représente sous la forme d'un arbre : L'instruction op, qui sert à extraire les opérandes de toutes les expressions Maple, va nous aider à l'explorer. Sa syntaxe générale est :
Si l'on extrait ses opérandes successifs... ... on se rend compte de deux choses :
SubstitutionL'instruction subs permet d'effectuer un remplacement dans une expression, selon la syntaxe :
Attention, subs n'agit que sur les opérandes de l'expression (résultats de op). Pour un examen plus détaillé (et plus mathématique) de l'expression, on pourra utiliser algsubs. Dans l'exemple ci-dessus, "x+y" n'est effectivement présent qu'une fois dans la représentation de l'expression (x+y)/(x+y+z) [4]. Seul algsubs peut détecter le "x+y" dans "x+y+z". Plus de détails sur subs à la section "Évaluation". FonctionsDans tout système de calcul formel, la différence entre fonction et expression est cruciale.
La commande fondamentale unapply fonctionne ainsi :
Par exemple : Attention, g := x - > %, bien que tentant, n'aurait pas marché. En effet, dès que le symbole "- >" apparaît, il initie la définition d'une fonction (g). Dès lors, le caractère "%" désigne le dernier résultat calculé dans le cours de la définition de g. Il ne "sort" pas de cette dernière, et ne peut donc convenir pour faire référence à un résultat extérieur à g. Opérations sur les fonctionsMaple permet d'opérer directement sur les fonctions. Résumons les correspondances avec la notation mathématique :
Maple permet enfin d'utiliser des fonctions "anonymes" : (x - > 1/(1 + x^2)) (1) est correct. Cela peut servir à l'occasion, pour une fonction utilisée seulement ponctuellement. Fonctions d'ordre supérieurMaple est assez pauvre en cette catégorie de "fonctions sur les fonctions". Citons
(isprime(n) est true ou false selon la primalité de l'entier n.) Notes[1] Il est pratiquement impossible d'empêcher Maple d'effectuer ces regroupements. [2] Cette disposition est indispensable pour pouvoir mettre en place des (in)équations. [3] Mathématiquement, cela aurait un sens (a^(b^c)) contraire à la convention "de gauche à droite" de Maple. [4] En effet, l'opérande au dénominateur est x+y+z. [5] Noter l'analogie avec la notation x ** n -- pour itérer la multiplication. |