Maple

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
Page d'aide sur l'homonymie Pour les articles homonymes, voir Maple (homonymie).
Wiktionnaire Cet article a pour sujet le logiciel de calcul formel Maple. Pour une définition du mot « maple », voir l’article maple du Wiktionnaire.
Maple
Image illustrative de l'article Maple
Logo

Développeur Waterloo Maple Inc. (Maplesoft)
Dernière version 18 (mars 2014)
Environnement Multi-plate-forme
Type Logiciel de calcul formel
Licence Propriétaire
Site web www.maplesoft.com/products/maple/

Maple est un logiciel propriétaire de calcul formel développé depuis les années 1980 et aujourd'hui édité par la société canadienne Maplesoft. La dernière version est la version 18.

Les objets de base du calcul sont les expressions mathématiques, représentées sous forme de graphes orientés acycliques. Maple fournit un langage de programmation spécifique, inspiré d'Algol, qui est à la fois le langage d'utilisation interactive et celui dans lequel est écrite la plus grande partie de la bibliothèque mathématique du logiciel.

Histoire[modifier | modifier le code]

Maple a été initialement développé au sein du Symbolic Computation Group de l'université de Waterloo en Ontario (Canada) à partir de décembre 1980[1]. La première version publique date de 1985 (version 3.3).

Maple a été utilisé dans un nombre d'applications remarquables des sciences et des mathématiques allant de la démonstration du dernier théorème de Fermat en théorie des nombres, à des problèmes de la relativité générale et de la mécanique quantique. Celles-ci sont présentées dans un numéro spécial d'un bulletin d'information créé par les développeurs de Maple appelé MapleTech[2].

Fonctionnalités[modifier | modifier le code]

Le logiciel permet aussi bien de travailler sur des quantités numériques (entières, réelles, complexes) qu'avec des polynômes, fonctions, séries. Maple réalise des dérivations, intégrations, résolutions de systèmes d'équations linéaires, inversions de matrices, développements asymptotiques et résolutions d'équations différentielles sous forme symbolique, c'est-à-dire en gardant des inconnues dans la résolution. Le système Maple offre aussi de nombreuses fonctionnalités en théorie des nombres et en combinatoire.

Maple est un système interprété. Dans son utilisation la plus courante, l'utilisateur entre une ligne de commande écrite dans un langage spécifique, et le système retourne un résultat. Par exemple, la commande suivante calcule la solution de l'équation différentielle du second ordre y'' - 3y = x vérifiant les conditions initiales y(0) = 1 et y'(0) = 2 :

dsolve({diff(y(x),x,x)-3*y(x)=x,y(0)=1,D(y)(0)=2},y(x));

Il est également possible d'écrire, dans le même langage, des programmes qui ne seront pas compilés, mais interprétés à leur appel, et d'enrichir ainsi le système avec de nouvelles commandes.

Au-delà des fonctionnalités de calcul formel et de programmation à proprement parler, Maple permet par exemple de copier et coller dans un traitement de texte les formules mathématiques issues des calculs, de tracer des courbes et surfaces, ou encore de générer des programmes numériques en langage C. Il offre un mode console et un mode graphique. Il est disponible sur la majorité des systèmes d'exploitation (GNU/Linux, Macintosh, Windows).

Modèle de calcul et langage[modifier | modifier le code]

Expressions[modifier | modifier le code]

La structure de donnée fondamentale manipulée par Maple est l'expression.

Dans la pratique courante, lorsque l’on utilise une expression mathématique telle que \sin(\pi/3 + x), on a en tête une fonction (\sin) et un réel \pi dont on connaît de nombreuses propriétés, ainsi qu’une variable x. Du point de vue du système, en revanche, il s’agit d’une expression, formée en l'occurrence d'une fonction nommée \sin appliquée à une somme de deux termes, à savoir une variable nommée x et le quotient d’une autre variable \pi par l’entier 3. Pour toutes les opérations mathématiques que l’utilisateur souhaite réaliser sur cette expression, le système ne dispose que de cette information syntaxique. Ainsi, 0 et 1-\exp(1)\exp(-1) sont deux objets identiques d'un point de vue mathématique, mais très différents comme expressions Maple. Des questions centrales comme celle de la simplification, sont liées à cette distinction entre la vision syntaxique du système et la vision mathématique de l'utilisateur.

Une expression comme le produit

x^2\exp\left(\frac32\right)\sin\left(\frac\pi 3-\frac1x\right)

est vue comme un arbre. Ici, la racine de l'arbre est étiquetée par l'opérateur de multiplication *. Ses trois fils sont les (étiquettes des) racines des arbres qui représentent les trois facteurs x^2, \exp(3/2) et \sin(\pi/3-1/x), à savoir ^, exp et sin. Les nœuds de l'arbre, comme la racine, représentent des opérations ou des fonctions, et les feuilles représentent soit des rationnels, soit des indéterminées~($x$, $\pi$).

Les objets Maple sont (sauf exception) représentés avec partage maximal, c'est-à-dire que deux objets identiques sont représentées par le même objet en mémoire. En particulier, les arbres d'expressions sont stockés comme des graphes orientés acycliques. Concrètement, tous les objets (ou presque) construits au cours d'une session Maple sont stockés dans une table de hachage globale. Ceci s'applique non seulement aux objets nommés, mais aussi aux expressions et sous-expressions qui interviennent durant le calcul. Chaque sous-objet nouvellement créé est comparé aux éléments déjà présents dans la table. Si l'objet est nouveau, il est conservé et ajouté à la table. Si au contraire un objet identique a déjà été utilisé, l'ancien objet est immédiatement utilisé à la place. Ceci garantit l'existence d'une seule copie de chaque expression en mémoire.

Les procédures Maple travaillent sur des expressions représentées par de tels arbres et les opérations de base consistent à analyser ces arbres pour en déterminer les composants, à extraire ces composants et à les utiliser pour construire de nouveaux arbres. Les arbres qui se trouvent sous la racine sont les opérandes de l'expression et peuvent être isolés par la procédure op, leur nombre étant renvoyé par la commande nops. L'ordre des opérandes d'un opérateur commutatif peut changer d'une session à l'autre. La procédure has détermine si une expression apparaît comme sous-expression d'une autre. Elle permet par exemple de déterminer qu'une expression est indépendante d'une variable donnée.

Parmi les procédures de base qui construisent de nouveaux objets à partir d'expressions existantes, citons eval, subs, convert, select et remove. Notamment, la façon naturelle de calculer la valeur d'une fonction pour une valeur donnée de ses variables consiste à évaluer l'expression qui représente la fonction à l'aide de eval. Une procédure de plus bas niveau que eval est subs, qui effectue une simple substitution. Le logiciel applique les règles de simplification automatique, mais n'évalue pas le résultat de la substitution.

Ces procédures ne modifient pas leur argument — la plupart des objets Maple ne peuvent pas être modifiés — mais en créent des copies altérées. Grâce au partage maximal, cette copie n'entraîne pas une trop grande consommation de mémoire.

Variables et indéterminées[modifier | modifier le code]

Une différence notable entre le langage Maple et les langages de programmation traditionnels réside dans l'évaluation des variables non affectées. Dans la plupart des langages, cette évaluation est une erreur, alors que Maple renvoie le nom de la variable, qui peut être utilisé comme nom de variable dans une expression. Ce mécanisme permet de traiter les indéterminées mathématiques comme des variables informatiques.

L'affectation se visualise comme la création d'une flèche de la variable vers la valeur. Par exemple, la suite d'affectations x:=y; y:=z; crée une structure de la forme xyz. L'évaluation consiste alors à suivre ces flèches pour obtenir une valeur. Ainsi, après les affectations précédentes, x et y s'évaluent toutes deux en z.

Notes et références[modifier | modifier le code]

  1. On the design and performance of the Maple system, Proceedings of the 1984 MACSYMA Users' Conference, 199-219
  2. MapleTech Special Issue (numéro spécial) Birkhäuser-Boston, (1994)

Voir aussi[modifier | modifier le code]

Sur les autres projets Wikimedia :

Bibliographie[modifier | modifier le code]

  • (en) Bruce W. Char, Keith O. Geddes, W. Morven Gentleman et Gaston H. Gonnet, « The design of Maple: a Compact, Portable, and Powerful Computer Algebra System », dans J. A. van Hulzen (éd.), Computer Algebra : EUROCAL’83, European Computer Algebra Conference London, England, March 28–30, 1983 Proceedings, Springer,‎ 1983 (lire en ligne)
  • Rapport technique : https://cs.uwaterloo.ca/research/tr/1982/CS-82-40.pdf

Articles connexes[modifier | modifier le code]

Lien externe[modifier | modifier le code]

(en) Site officiel