14.11.2014 Views

Chapitre 1

Chapitre 1

Chapitre 1

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

1 - Les nombres<br />

et généralités sur le fonctionnement de MAPLE<br />

Avertissement<br />

Certains aspects de ce chapitre sont élémentaires et peuvent donner l'impression qu'une lecture rapide est<br />

suffisante. En réalité, on a profité de la simplicité des exemples pour présenter des points très importants<br />

(et pas toujours évidents) du fonctionnement de MAPLE. On pourra effectuer une lecture en plusieurs<br />

temps avec la convention suivante : les paragraphes dont le titre est<br />

- sans mention : doivent être lus en première lecture.<br />

- marqué d'un [*] : peuvent faire l'objet d'une seconde lecture.<br />

- marqué d'un [**] : correspondent à une lecture d'approfondissement.<br />

- marqué d'un [***] : vraiment pour les curieux...<br />

Il est vivement conseillé de lire très attentivement le § 8 et tout particulièrement le § 8.3.1.<br />

Les références renvoyant à des exercices correspondent au fascicule et aux corrections que l'on trouvera<br />

sur le site Internet de ce manuel : http://www.obs.u-bordeaux1.fr/Enseignement/MAPLE<br />

Le manuel concerne les versions 12, 13 et 14 de MAPLE et les fonctionnalités spécifiques aux versions<br />

seront signalées.<br />

Avec la version 13, MAPLE a commencé à traduire en français une petite partie des ses textes et en<br />

particulier ses menus. Dans ce manuel nous donnerons la version anglaise suivie entre crochets de la<br />

traduction francaise comme par exemple File[Fichier]... Cette traduction a été omise pour les cas évidents.<br />

1 Entiers relatifs et rationnels<br />

1.1 Entrées des commandes<br />

Il existe de nombreuses possibilités pour créer et gérer les documents MAPLE (écriture de<br />

texte avec formules, découpage en sections, etc). Pour éviter d'encombrer la lecture dans<br />

l'immédiat, les informations relatives à ce sujet sont reportées au § 8.4. Pour résumer, MAPLE<br />

dispose de deux formats de documents, le "Document Mode" et le "Worksheet Mode" ["Feuille<br />

de travail"]. Le choix par défaut s'effectue au tout premier lancement de MAPLE (après validation<br />

de la licence). Il peut être modifié ultérieurement, parmi d'autres réglages, à l'aide des paramètres<br />

d'initialisation de MAPLE (voir § 8.4.1). Mais il peut aussi se faire à l'aide du menu File[Fichier]<br />

/New[Nouveau]/Document Mode[Mode document] ou Worksheet Mode[Mode feuille de<br />

travail]. Il existe de plus, deux modes d'entrée des commandes décrits ci dessous. Mais il existe<br />

aussi d'autres variantes de présentations et un choix simplifié sera proposé au § 8.4.1 pour guider<br />

l'utilisateur avec un minimum de confusion.<br />

1.1.1 Commandes en mode "Math"<br />

On suppose ici que le document vierge est ouvert en "Document Mode" et le coin supérieur<br />

gauche de la fenêtre du document MAPLE aura l'un de ces deux aspects suivants en fonction de<br />

l'état coché ou non de l'option du menu View[Affichage]/Markers[Balises]<br />

avec un / clignotant dans le rectangle en pointillés ainsi que le bouton-icône "Math" sous la<br />

1


forme<br />

(pour que la fenêtre du menu "Quick Help" n'apparaisse plus à l'ouverture,<br />

voir le menu d'initialisation au § 8.3.7). MAPLE attend une commande de calcul dans un mode<br />

dit "Math" ou "2-D Math Input" ou encore "2-D Math Notation". Ce mode d'entrée des<br />

commandes permet une écriture des expressions avec une présentation très proche de l'écriture<br />

habituelle. La muliplication est introduite au clavier par un astérisque qui s'affichera sous la<br />

forme d'un "$" (on lira cependant les remarques importantes au § 1.1.1.2 à propos de la<br />

multiplication). La commande est ensuite exécutée en appuyant sur Return.<br />

1 C 4$2<br />

9<br />

(1.1.1.1)<br />

K3 C 1 $ 4 K 1 C 8<br />

2<br />

(1.1.1.2)<br />

La division est introduite par le caractère "/" et MAPLE formatera automatiquement et en "direct"<br />

les expressions au cours de leurs constructions. Une puissance est obtenue avec la touche "^" et<br />

la factorielle avec sa notation standard. Pour quitter dans l'expression suivante l'écriture de la<br />

puissance puis du dénominateur et écrire le "+" on utilisera 2 fois la touche "→". De même avec<br />

les autres touches de flèches pour faire circuler le curseur dans la formule. Il est également<br />

possible de composer cette formule en utilisant les modèles de la palette Expression (colonne de<br />

gauche de la fenêtre MAPLE).<br />

Les nombres rationnels sont considérés par MAPLE comme tels s'ils ne sont pas<br />

simplifiables, c'est-à-dire comme des rapports de deux entiers et non comme leurs<br />

approximations décimales. L'évaluation d'un résultat reste sous sa forme rationnelle réduite au<br />

plus petit dénominateur.<br />

1<br />

4 K 2 3 K 1 C 1 7 C 1 3!<br />

47<br />

(1.1.1.3)<br />

84<br />

et par conséquent peut être renvoyé sous la forme d'un entier<br />

15<br />

4<br />

32 C 2 K 3<br />

3!$2 5 C 1 32<br />

2<br />

(1.1.1.4)<br />

Exercice : effectuer les opérations suivantes en écrivant les commandes telles-quelles et<br />

comparer ces résultats qui sont tous les deux... justes. On rappelle que n!! signifie<br />

n n K 2 ...# 6 # 4 # 2 ou n n K 2 ...# 5 # 3 # 1 suivant la parité de n. Donner une écriture<br />

non ambiguë pour le deuxième cas.<br />

2 C 3!!<br />

5<br />

(1.1.1.5)<br />

2 C 3!!<br />

722<br />

(1.1.1.6)<br />

Pour une expression longue MAPLE passe automatiquement à la ligne suivante (césure). On<br />

peut cependant souhaiter, pour une meilleure présentation, effectuer soi-même ces césures. Ainsi<br />

dans l'exemple suivant la première ligne se termine par un Majuscule(Shift)-Return, permettant<br />

le passage à la ligne suivante sans lancer l'exécution. MAPLE attend la suite de l'expression qui<br />

se termine par Return. Des espaces peuvent permettre d'améliorer la lisibilité, mais on devra être<br />

attentif à certaines erreurs et ambiguïtés (voir les remarques ci-dessous à propos de la<br />

multiplication)<br />

2


K 32$2<br />

64K4$8 K 3 C 7 $ 5 K 3 C 2 K 6K4<br />

2<br />

K 121K81<br />

2<br />

C 3<br />

5<br />

2 C 3 2<br />

C 720<br />

5$6<br />

K5<br />

3<br />

(1.1.1.7)<br />

Si la ligne de commande se termine par " : " puis par Return, elle est exécutée mais aucun<br />

résultat n'est affiché. Nous aurons l'occasion de revenir sur l'utilité de cette écriture qui peut<br />

paraître étrange dans ce contexte (voir par exemple § 5.2.2 dans ce chapitre).<br />

1 K 4$2 :<br />

1.1.1.1 Remarques importantes sur la modification et la ré-exécution des commandes<br />

On peut toujours, à l'aide de la souris, positionner le pointeur sur une commande déjà<br />

exécutée, la modifier (ou non) et l'exécuter à nouveau. Il faut alors noter les deux points<br />

suivants:<br />

- L'état de MAPLE n'est pas nécessairement celui qui est affiché par la feuille de<br />

calcul...! Deux exemples d'illustration très simples sont donnés aux § 8.3.1 et § 8.3.2.<br />

- Pour exécuter une commande, le pointeur peut se trouver n'importe où sur la commande<br />

quand on tape Return (sauf sur un label [une étiquette], voir § 1.2). Après la correction d'une<br />

commande il est inutile de perdre son temps à déplacer ce pointeur en fin de ligne avant de<br />

taper Return comme on voit le faire souvent chez les débutants.<br />

1.1.1.2 Remarques à propos de la multiplication<br />

Il est possible, pour des opérations n'impliquant que des nombres, d'utiliser la palette<br />

"Operators" pour remplacer l'astérisque par × ou forcer son écriture avec ∗, etc. On peut<br />

aussi utiliser un ou des espaces entre les deux groupes de parenthèses.<br />

1 C 4)2 C K3 C 1 # 20K1 C 8 C 3 K 1 1 C 7<br />

K5<br />

Néanmoins, un espace (ici après le 2) n'est pas toujours nécessaire... (voir § 8.2)<br />

2 3 C 1<br />

8<br />

(1.1.1.2.1)<br />

(1.1.1.2.2)<br />

ATTENTION : ne rien écrire entre deux facteurs mis entre parenthèses a une autre<br />

signification (voir § 8.2-4 , )<br />

1 C 3 2 C 5<br />

28<br />

(1.1.1.2.3)<br />

1 C 3 2 C 5<br />

4<br />

(1.1.1.2.4)<br />

Si des espaces peuvent être aussi introduits dans les formules pour améliorer la présentation,<br />

ils ne peuvent pas servir pour indiquer une multipication entre deux nombres<br />

4 2<br />

Error, missing operation<br />

4 2<br />

et en conséquence, ne peuvent pas être utilisés pour améliorer la présentation d'un nombre<br />

pour séparer les triades de 0<br />

250 C 3$1 000<br />

Error, missing operation<br />

250 C 3$1 000<br />

La multiplication peut aussi être introduite par un "." entré au clavier. Si cette écriture


alternative n'a pas de conséquence pour le calcul d'une expression avec des nombres, il peut<br />

en être tout autrement avec d'autres types d'objets (voir § 5.9 et Ch. 2, § 2.1).<br />

K3 C 1 . 4K1 C 8<br />

2<br />

(1.1.1.2.5)<br />

Evidemment, cette écriture ne convient pas pour la multiplication de nombres car elle est<br />

utilisée pour l'écriture des décimaux (voir § 5)<br />

1 K 4.2<br />

K3.2<br />

(1.1.1.2.6)<br />

Pour résumer ces remarques, mieux vaut s'en tenir à un usage systématique de la touche<br />

"astérisque" pour désigner la multiplication.<br />

ATTENTION<br />

Le doublement de l'opérateur de multiplication est interprété comme une exponentiation et il<br />

est facile d'introduire cette opération dans une expression par une erreur de frappe<br />

1 C 3 $ 2 C 3<br />

20<br />

1 C 3 2 C 3 1024<br />

1 C 3 $$ 2 C 3<br />

1024 (1.1.1.2.9)<br />

Digression : en typographie on ne dit pas "un espace", mais "une espace". Nous<br />

n'utiliserons pas cette métonymie.<br />

1.1.2 Groupes d'exécution.<br />

En cliquant sur le bouton-icône de la barre d'outils on crée ce que l'on nomme un groupe<br />

d'exécution qui se remarque par un "prompt" > ("une invite" en français) qui attend la<br />

commande. Un "[" extensible à gauche regroupe la commande et son résultat. Le mode d'entrée<br />

par défaut est 2D Math Notation...<br />

O 7 C 3 2<br />

17<br />

(1.1.2.1)<br />

2<br />

Un groupe d'exécution fait clairement ressortir du document le couple commande-résultat et<br />

on l'utilisera désormais systématiquement.<br />

1.1.3 Commandes en mode "Text" [*]<br />

Dit aussi "Input Maple notation" ou "1-D Math Input". On introduit ce mode avec le menu<br />

Insert[Intertion]/Maple Input[Entrée Maple] ou le racourci clavier Ctrl-M sous<br />

Windows/Linux (Cmd-M sous Mac) ou avec le bouton . La différence principale<br />

avec le mode "Math", hormis l'affichage, est que la ligne de commande doit se terminer par un<br />

";" (ou ":") puis par Return qui lance l'exécution (comme pour le mode "Math", si la ligne se<br />

termine par " : " puis par Return, elle est exécutée mais aucun résultat n'est affiché).<br />

O (3*(3+1)^3)/5;<br />

4<br />

(1.1.3.1)


192<br />

(1.1.3.1)<br />

5<br />

Il est fréquent, surtout au début, d'oublier le ; (semicolon) ou le : devant terminer une<br />

commande. MAPLE renvoie un message d'avertissement, mais exécute néanmoins la<br />

commande. Pour effacer ce message, rajouter le ; ou le : à la fin de la commande avant de la<br />

relancer. On répète aussi ce qui a déjà été dit : inutile de déplacer le pointeur en fin de ligne pour<br />

exécuter une commande que l'on vient de corriger.<br />

O (-3+1)*(4-1)+8<br />

Warning, inserted missing semicolon at end of statement<br />

2<br />

Error, control character unexpected<br />

Remarque : le prompt > peut être changé (voir par exemple § 8.3.8).<br />

L'écriture des commandes en mode "Text" est sans doute moins naturelle et moins<br />

esthétique, mais présente l'avantage de montrer précisément les détails des caractères entrés au<br />

clavier pour composer les commandes. Elle est également moins gourmande en mémoire.<br />

Suivant les nécessités des explications on utilisera l'une ou l'autre de ces deux écritures pour la<br />

rédaction de ce manuel. Les deux écritures donnent de toutes façons accès à toutes les<br />

fonctionnalités de MAPLE.<br />

1.2 Numérotation des résultats, dito et commentaires [*]<br />

1.2.1 Numérotation des résultats<br />

Par défaut MAPLE affiche à droite du résultat un numéro, dit Label[Etiquette], sous la<br />

forme (n) ou (n.m.k...). On peut faire référence dans une commande à un résultat déjà calculé en<br />

utilisant ces numéros. Des informations complémentaires sur la gestion de cet affichage sont<br />

données au § 8.4.8.3. L'insertion de ces numéros dans une commande ne se fait pas directement,<br />

mais à l'aide du menu Insert[Intertion]/Label...[Etiquette...] qui ouvre une fenêtre dans laquelle<br />

on donne le numéro. Il est très utile de connaître le raccourci clavier permettant l'insertion d'un<br />

numéro sans utiliser le menu : Ctrl-L (Windows ou Linux) ou Cmd-L (Mac). Pour changer un<br />

numéro, double-cliquer dessus (l'effacer en mode "Text") puis en définir un nouveau avec un<br />

Ctrl/Cmd-L.<br />

A chaque exécution d'une commande, MAPLE re-numérote entièrement la feuille de calcul,<br />

y compris dans les commandes et même dans le texte (à condition que ces numérotations y<br />

soient introduites comme indiqué ci-dessus et non par recopie au clavier). Donc, si on insère ou<br />

si on supprime une ou plusieurs instructions (exécutées) n'importe où dans la feuille, les<br />

numéros seront automatiquement changés partout et feront toujours référence aux bons résultats,<br />

mais attention, si la valeur d'un résultat associé à l'un des labels a été modifié, le nouveau<br />

résultat ne sera recalculé que si la commande est re-exécutée.<br />

Généralement on utilise moins de niveaux de sections et les numéros sont plus simples à<br />

introduire que ceux de ce document. De plus il existe un mode numérotation séquentielle simple<br />

qui ne tient pas compte des numéros de section (voir § 8.4.8.3).<br />

4 2 (1.1.1.2.5) K (1.1.1.7)<br />

O K<br />

9<br />

K4<br />

(1.2.1.1)<br />

Bien entendu ceci, comme tout ce qui suit, est aussi valable pour le mode "1-D Math Imput"<br />

O -4*(2*(1.1.1.2.5)-(1.1.1.7))/9;<br />

K4<br />

(1.2.1.2)<br />

5


"^" est admise<br />

O<br />

O<br />

1.2.2 Dito<br />

Le symbole % ou dito (avec deux t dans MAPLE comme souvent en anglais) désigne le<br />

résultat de la dernière instruction exécutée dans l'ordre chronologique et peut être utilisé dans<br />

une expression. Les exemples et les remarques sont rassemblés au § 1.2.3. Le double symbole<br />

%% et le triple symbole %%% désignent les résultats précédents.<br />

Digression : le caractère typographique % s'appelle "Pourcent". Le mot "dito" est d'origine<br />

commerciale et désigne "ce qui vient d'être cité", évitant ainsi la répétition.<br />

1.2.3 Commentaires sur une ligne de commande<br />

On peut écrire un commentaire à la fin de la ligne de commande (après le : ou le ; ou<br />

directement après la commande en mode "Math") en le faisant précéder du caractère #.<br />

O 2 $% # %=-4<br />

O<br />

O<br />

K8<br />

3*%%; # %%=-4, %=-8<br />

K12<br />

-3*(%%%/2-1)-1; # %=-12, %%=-8 et %%%=-4<br />

8<br />

6<br />

(1.2.3.1)<br />

(1.2.3.2)<br />

(1.2.3.3)<br />

Attention : les symboles dito sont d'un usage très commode, mais doivent être manipulés avec<br />

précautions en raison de leur caractère chronologique. Pour un usage systématique on préférera<br />

la méthode utilisant les numéros des résultats sauf pour des commandes groupées (voir<br />

l'exemple à propos des affichages multiples, § 1.3). Par exemple, le résultat de la commande<br />

suivante peut sembler curieux et on s'attend plutôt à 8/2 = 4. Mais ce que ne peut pas montrer ce<br />

texte, c'est que la commande associée au résultat (1.2.1.1) a été ré-exécutée immédiatement avant<br />

O %/2;<br />

K2<br />

(1.2.3.4)<br />

1.3 Affichages et commandes multiples [*]<br />

On peut construire une série de commandes groupées qui renverront plusieurs résultats : la<br />

première ligne se termine par un Majuscule-Return, permettant le passage à la ligne sans lancer<br />

l'exécution, la deuxième par Return. Chaque expression se termine par un ; ce qui entraînera<br />

l'évaluation de chacune et l'affichage sur des lignes séparées. Les symboles % et %% sont ici non<br />

ambigus puisqu'ils font référence à des résultats qui ne peuvent être que calculés immédiatement<br />

avant (%=32, %%=16). On remarquera aussi que la notation "**" (syntaxe Fortran) à la place de<br />

(1.2.3.1)*(-4) ; (-%+28)**2 ;<br />

-10/(-2); (1/%%)^(-2); # Les parenthèses sont nécessaires<br />

32<br />

16<br />

5<br />

256<br />

En mode "Math" les ";" redeviennent nécessaires pour séparer les commandes<br />

(1.2.3.1)$ K4 ; K% C 28 2 ; K 10 ;<br />

K2<br />

32<br />

16<br />

5<br />

256<br />

1<br />

%%<br />

K2<br />

(1.3.1)<br />

(1.3.2)


Si on termine chaque expression par une virgule et la dernière par point-virgule on obtiendra<br />

aussi des résultats, mais qui s'afficheront sur la même ligne. Cette façon de faire permet<br />

d'économiser de l'espace d'affichage mais ce résultat est une objet MAPLE unique appelé suite<br />

que nous examinerons au chapitre 3, Intervalles, Listes, Suites, Ensembles. On remarquera que le<br />

label (1.3.2) ne fait référence qu'au dernier résultat (256) de la série précédente.<br />

Attention : il ne s'agit pas ici de commandes groupées, mais d'une commande unique construisant<br />

une suite (un seul ;). On ne peut donc pas considérer comme précédemment que les calculs des<br />

expressions sont fait séquentiellement. En conséquence une expression de la suite ne peut pas se<br />

servir d'un de ses éléments précédents dans son calcul. Par exemple % ne fait pas référence à 32<br />

mais au dernier résultat calculé dans le groupe précédent, c'est-à-dire 256. De même %%=5.<br />

O<br />

-(1.3.2)/(-8) , -%/(-2) ,<br />

(-3+1)^2 , (1/%%)^(-2);<br />

32, 128, 4, 25<br />

(1.3.3)<br />

Pour MAPLE cette suite est un "objet" unique et le label fait référence à ce résultat pris comme un<br />

tout.<br />

O 2*((1.3.3)+1);<br />

64, 256, 8, 50 C 2<br />

(1.3.4)<br />

Sa manipulation relève donc de celle des suites (voir chapitre 3) et il est possible de faire référence à<br />

un des résultats en indiquant son numéro d'ordre avec la notation [n]<br />

(1.3.3) 3 C 1<br />

O %%[3]/2 , (1.3.3)[3] ,<br />

2<br />

2, 4,<br />

Il existe encore d'autres façons d'obtenir des affichages multiples que l'on aura l'occasion de<br />

rencontrer (fonction print, Listes, Tableaux...).<br />

7<br />

5<br />

2<br />

(1.3.5)<br />

1.4 Assignation<br />

On peut affecter, on dit aussi assigner, un nombre à un nom en utilisant la notation : =. Cette<br />

commande sera étudiée en détail au Ch. 2, § 1. Les règles de syntaxe définissant les noms sont<br />

décrites au § 8.1.<br />

Attention: le signe = seul a une autre signification sur laquelle nous reviendrons (définition d'une<br />

équation, voir par exemple § 8.2 et plus généralement le chapitre 14)<br />

O n:=2^79-1;<br />

n d 2 79 K 1<br />

n := 604462909807314587353087<br />

n := 604462909807314587353087<br />

(1.4.1)<br />

1.5 Fonctions relatives aux entiers<br />

On peut se poser la question " n est-il premier ? " en utilisant la fonction isprime (comprendre is<br />

prime ? ; cette fonction accepte aussi des arguments permettant de fixer la méthode de calcul et des<br />

options). La réponse false signifiant "faux", la réponse est "non"<br />

O isprime n<br />

false<br />

(1.5.1)<br />

On obtient sa décomposition en facteurs premiers avec la fonction ifactor (integer factorization)<br />

O ifactor n<br />

202029703 1113491139767 2687<br />

(1.5.2)<br />

Autre exemple de fonction sur les nombres entiers: les coefficients du binôme


p n!<br />

C n =<br />

p! n K p !<br />

sont donnés par la fonction binomial(n, p). On peut par exemple vérifier la relation entre les<br />

coefficients du binôme<br />

p C 1<br />

C n C 1 =<br />

p Cn C<br />

p C 1 Cn<br />

en prenant des valeurs particulières pour n et p (MAPLE peut le faire pour n et p quelconques, mais<br />

on sortirait du cadre de ce chapitre)<br />

O<br />

n := 4;<br />

p := 2;<br />

binomial n C 1, p C 1 = binomial n, p C binomial n, p C 1<br />

n := 4<br />

p := 2<br />

10 = 10<br />

(1.5.3)<br />

MAPLE sait aussi calculer avec une arithmétique modulaire<br />

O 7 C 6 mod 5;<br />

3<br />

(1.5.4)<br />

5 C 6<br />

O mod 3;<br />

8<br />

1<br />

(1.5.5)<br />

O 12^(5+2 mod 3)+1 mod 7;<br />

6<br />

(1.5.6)<br />

On ne détaillera pas dans ce manuel toutes les fonctions de MAPLE relatives aux calculs sur les<br />

nombres entiers pas plus que bien d'autres fonctions. Celles-ci peuvent être découvertes dans l'aide<br />

en ligne (help), c'est-à-dire directement à l'aide du logiciel (voir § 2). Il faut aussi savoir que toutes<br />

les fonctions ne sont pas utilisables au moment du lancement de MAPLE. Elles ne le seront qu'après<br />

les avoir rendues accessibles dans des bibliothèques (voir § 8.3.5).<br />

1.6 Elision [**]<br />

Le nombre maximal de chiffres autorisés pour un entier, bien que très grand, est limité et sa<br />

valeur dépend de l'ordinateur utilisé. On peut l'obtenir avec la commande<br />

O kernelopts maxdigits<br />

268435448<br />

(1.6.1)<br />

Ce résultat indique que les entiers peuvent contenir plus de 268 millions de chiffres ! MAPLE est en<br />

effet capable de travailler avec de tels nombres grâce à la librairie d'algorithmes GMP (GNU<br />

Multiple Precision). La valeur maximale d'un entier que peut contenir une mot mémoire simple est<br />

seulement de (ici 2 32 K 2 K 1<br />

1073741823<br />

(1.6.2)<br />

pour une machine 32 bits ; 2 64 K 2 K 1 pour une machine 64 bits)<br />

O kernelopts maximmediate<br />

1073741823<br />

(1.6.3)<br />

On peut également contruire des entiers signés ou non signés sur 8, 16, 32 ou 64 bits à l'aide de la<br />

bibliothèque MTM (boîte à outils MATLAB)<br />

O ?MTM/integer<br />

Si le nombre est très grand MAPLE n'affichera pas tous les chiffres, mais seulement les valeurs<br />

fixées par défaut dans le menu d'initialisation (voir § 8.3.7) Maple 12/Préférences... (Mac) ou<br />

Tools/Options... (Windows ou Linux), onglet Precision sous la forme nm[...d digits...]ijk (voir ci-<br />

8


dessous). Le mécanisme, dit d'élision (en syntaxe française, "l(a)'élision est une élision"), va<br />

s'appliquer dès que le nombre contient un nombre de chiffres plus grand que ("threshold" signifiant<br />

"seuil"). Il s'agit ici de la valeur par défaut.<br />

O interface elisionthreshold<br />

10000<br />

(1.6.4)<br />

Même si les nombres entiers sur lesquels on travaille sont moins grands, l'affichage peut devenir<br />

vite encombrant et on peut diminuer cette valeur. La première des commandes suivantes fixe le<br />

nombre de chiffres à partir duquel le mécanisme s'applique (=40). Les deux autres fixent le nombre<br />

de chiffres ("digits") qui doivent précéder (=3) et suivre (=6). La fonction interface affiche la valeur<br />

existant avant la modification, ce qui est pratique pour mémoriser par assignation (eth:=...) cette<br />

ancienne valeur.<br />

Remarque : ce mécanisme d'affichage est dynamique dans le sens suivant : quand on ouvre une<br />

feuille de calcul enregistrée, les résultats déjà calculés s'affichent avec les valeurs par défaut tant que<br />

les commandes qui fixent les paramètres d'élision ainsi que les commandes de calcul n'ont pas été<br />

exécutées. Si on veut obtenir un affichage immédiat tenant compte de valeurs d'élision définies par<br />

l'utilisateur, il faut, soit fixer avant l'ouverture du document les paramètres de MAPLE dans le menu<br />

d'initialisation comme indiqué ci-dessus, soit introduire les commandes dans le fichier d'initialisation<br />

de MAPLE (voir § 8.3.8) ou plus simplement par initialisation de la feuille de calcul, (voir le<br />

Startup code[Code de démarrage], § 8.4.3-1).<br />

O<br />

O<br />

O<br />

m := 40! K 6 36 ;<br />

m := 815915283247897734335296844797625358725828050944<br />

eth d interface elisionthreshold = 40 :<br />

interface elisiondigitsbefore = 3 :<br />

interface elisiondigitsafter = 6 :<br />

m<br />

2<br />

407[...39 digits...]025472<br />

9<br />

(1.6.5)<br />

(1.6.6)<br />

On "annulera" l'élision en posant un seuil élevé ou comme ici en restituant la valeur par défaut qui a<br />

été mémorisée avec eth (on peut aussi poser infinity qui supprime totalement le mécanisme, mais<br />

une telle nécessité est hautement improbable !).<br />

O interface elisionthreshold = eth :<br />

Malgré le mécanisme d'élision, un nombre peut être estimé trop grand par MAPLE pour être affiché.<br />

C'est le temps de conversion binaire ⇒ décimal qui pose problème.<br />

2 43112609 K 1<br />

...Integer too large for display...<br />

Remarque : l'élision peut aussi s'appliquer sur des expressions mathématiques (voir Ch. 13).<br />

2 Aide MAPLE<br />

(1.6.7)<br />

L'aide en ligne de MAPLE est très développée et peut être obtenue de nombreuses façons (souvent<br />

redondantes) dont :<br />

1) Par commande en faisant précéder le mot clé recherché d'un ? (le ; final n'est pas nécessaire). Par<br />

exemple


O ?binomial<br />

Un double ?? ouvre la fenêtre avec les sections fermées, transformant la page en une table des matières.<br />

On peut ensuite ouvrir les sections de sont choix. Un triple ??? affiche la page avec seule la section des<br />

exemples ouverte (équivalent à la commande > example(binomial))<br />

On peut aussi utiliser la syntaxe<br />

O help binomial<br />

Certaines commandes doivent être combinées pour préciser la demande (on peut utiliser indifféremment<br />

une "," ou un "/")<br />

O ?index / package<br />

O ?index , function<br />

ou faire une recherche dans une bibliothèque particulière (on utilisera le terme de "bibliothèque" ou<br />

indifféremment "librairie" pour traduire le mot "package").<br />

O ?LinearAlgebra/Determinant<br />

2) Le menu Help[Aide]/Maple help[Aide Maple] ou l'icône-bouton ouvre une fenêtre dont<br />

l'utilisation est évidente. On n'oubliera pas d'explorer les différentes Resources : All, Help Pages,<br />

Tasks,..., Manuals (voir ci dessous). On notera que les titres de rubriques sont précédées d'icônes :<br />

indiquant une page d'aide, une page de définition, un document MAPLE (WS pour<br />

WorkSheet) de démonstration, des pages du manuel interne (voir ci dessous) ou pour des<br />

"Tasks template", c'est à dire des pages prédéfinies pour réaliser des calculs classiques et simples. Ces<br />

dernières pages sont accessibles par le menu Tools[Outils]/Tasks[Tâches]/Browse...[Naviguer...] ou<br />

FileFichier]/New[Nouveau]/Templates...[Gabarit de tâches...]<br />

3) A chaque ouverture d'un nouveau document une fenêtre d'aide "rapide" s'ouvre. Pour ne plus faire<br />

apparaître cette fenêtre qui s'ouvre à chaque nouveau document, cliquer sur l'onglet Interface de la<br />

fenêtre d'initialisation (voir le § 8.3.7) et décocher Quick Help popup on new documents[Fenêtre<br />

d'aide rapide lors de nouveaux documents].<br />

4) Quand on tape, en mode "Entrée-Math-1D", les premiers caractères d'un nom, qu'il soit prédéfini<br />

par MAPLE ou créé par l'utilisateur par une assignation, et dès que le nombre de caractères entrés est<br />

suffisant pour lever toute ambiguïté, un mécanisme de complémentation automatique (automatic<br />

completion) affiche un nom complet que l'on valide éventuellement en tapant Return. Pour que ce<br />

mécanisme fonctionne il faut que la case Automatic command completion[Complétage automatique de<br />

commande], onglet Interface dans le menu d'initialisation (voir § 8.3.7) Tools/options (Windows ou<br />

Linux) ou Maple 14/Préférences (Mac) soit cochée.<br />

En mode "Entrée-Math-2D", il faut solliciter l'aide en utilisant la touche "Escape".<br />

O ?worksheet/expressions/completecommand<br />

5) Le menu très important Help/Help on Context. Lorsque le pointeur est positionné sur un mot, par<br />

exemple binomial, l'item du menu se transforme en Help on binomial [Aide sur binomial] et par un<br />

"clic" ouvre la page d'aide correspondante.<br />

6) Les pages d'aide contiennent des hyperliens<br />

- en vert souligné qui renvoient sur des pages d'aide associées par leurs sujets.<br />

- en rouge souligné qui renvoient sur des pages d'un dictionnaire contenant de l'ordre de 5000<br />

références ( ): définitions mathématiques, mathématiciens, etc.<br />

10


7) Pour MAPLE 13/14, les messages d'erreurs (en rose) ou de simple avertissement (en bleu) sont<br />

des hyperlinens qui renvoient vers des pages d'aide sur le site de Maplesoft. Pour l'instant, ces<br />

nouvelles pages d'aide sont souvent sommaires et sont sans doute destinées à être complétées.<br />

O 1 C= 2<br />

Error, invalid sum/difference<br />

1 C= 2<br />

O 1+(-2)<br />

Warning, inserted missing semicolon at end of statement<br />

K1<br />

(2.1)<br />

8) MAPLE contient un manuel utilisateur interne accessible avec la commande<br />

O ?UserManual<br />

mais également par le menu Help/Manuals, Dictionary, and more.../Manuals ou avec la rubrique<br />

Ressource : Manuals dans la page d'aide (voir ci-dessus, 1).<br />

On trouvera une feuille de calcul d'initiation en mode "Document" avec<br />

O ?MaplePortal<br />

ou contenant des exemples traités (souvent avancés) parmi les principaux sujets que l'on peut<br />

rencontrer<br />

O ?examples,index<br />

ou pour un sujet particulier contenu dans ce document, par exemple<br />

O ?examples,BranchCuts<br />

9) Le menu Tools[Outils] propose un certains nombre d'outils pré-développés sous forme de guides<br />

interactifs, de "Maplets" (applets MAPLE) ou de "Tasks template" ["Gabarit de tâche"] déjà cités.<br />

10) Il existe aussi d'autres possibilités par commande qui explore des bibliothèques de propriétés<br />

mathématiques telles MathematicalFunctions ou FunctionAdvisor (voir Ch.13). Dans l'exemple<br />

suivant DE est mis pour Differential Equation, autrement dit on demande quelle est l'équation<br />

différentielle qui a pour solution un sinus hyperbolique, sous-entendu bien sûr que les deux conditions<br />

initiales soient appropriées.<br />

O MathematicalFunctions:-Get definition, sinh<br />

sinh z = 1 (2.2)<br />

2 ez K 1 , with no restrictions on z<br />

z<br />

2 e<br />

O FunctionAdvisor DE, sinh<br />

11<br />

d 2<br />

f z = sinh z ,<br />

(2.3)<br />

dz 2 f z = f z<br />

Ces d'informations peut aussi être donné par le menu Tools[Outils]/Assistants/Special Functions...<br />

ainsi que d'autres outils.<br />

11) On trouvera également des informations sur le site Internet de MAPLE par le menu Help]/On the<br />

Web .<br />

Tout n'a pas été mentionné sur l'aide en ligne dans ce paragraphe, mais envisager une lecture<br />

exhaustive serait une idée déraisonnable. On recommande cependant de compléter ces<br />

informations de base par une exploration des possibilités de l'aide en ligne que l'on trouvera dans<br />

Help/Manuals, Dictionary, and more...[Manuels, Dictionnaire et plus...]/Using the Help System<br />

[Utiliser le système d'aide].


On trouvera des informations complémentaires sur les entiers et les rationnels au Ch. 2, § 2.3.1 et §<br />

2.3.2.<br />

3 Nombres irrationnels<br />

Comme pour les nombres rationnels, les nombres irrationnels sont conservés en tant que tels, c'est-àdire<br />

sous une forme symbolique, s'ils ne sont pas simplifiables. Par exemple, pour une racine carrée<br />

d'un nombre non carré on obtient avec la fonction sqrt (square root) :<br />

O a d sqrt 3 ;<br />

a := 3<br />

(3.1)<br />

Que se soit en mode "Entrée Math 1-D" ou en mode "Entrée Math 2-D" on peut aussi utiliser le gabarit<br />

a de la palette "Expressions" (voir pour plus de détails sur x 1/2 , sqrt x et x , voir Ch. 2, §<br />

2.2.3.1).<br />

O<br />

a d 3<br />

a := 3<br />

Le nom a est ici associé, non pas à une approximation numérique, mais à un nombre symbolique<br />

positif dont le carré vaut 3 exactement par définition.<br />

O a^2;<br />

a 2 3<br />

3<br />

4 Nombres remarquables (π), nombres indéfinis<br />

(3.2)<br />

(3.3)<br />

4.1 Nombres remarquables<br />

MAPLE connaît, au sens de leurs propriétés et pas seulement par leurs approximations<br />

numériques, quelques nombres remarquables comme par exemple Pi = p. Attention: notez la lettre<br />

majuscule P et la minuscule i obligatoires. Sinon, avec la syntaxe pi la lettre p s'affichera aussi<br />

comme résultat, mais désignera un simple nom, pas le nombre. De même PI désigne seulement la<br />

lettre grecque majucule P. Avec cette définition symbolique du nombre, MAPLE peut exprimer<br />

certains résultats classiques de fonctions qui sont, si possible, évaluées automatiquement.<br />

GAMMA est la fonction eulérienne G (voir exercices 2.1 à 2.4). Noter que seuls GAMMA au<br />

clavier et G de la palette "Grecque" sont associés à cette fonction, le nom Gamma étant associé à un<br />

nom symbolique indéfini (§ 8.1/5).<br />

O Pi;<br />

Pi<br />

cos ;<br />

4<br />

GAMMA 1 2<br />

, Gamma<br />

1<br />

2<br />

, G 1 2<br />

1<br />

2<br />

p<br />

p , G 1 2<br />

2<br />

, p<br />

(4.1.1)<br />

12


Sum 1 n! , n = 0 ..N : % = value % e 2<br />

En mode "Entrée Math 2-D", les lettres extraites en cliquant dans les palettes "Symboles courants"<br />

et "Grecque" correspondent prioritairement aux symboles standard des nombres ou des fonctions :<br />

(voir aussi le § 8.1-5). Ici ζ est la fonction Zeta de Riemann<br />

p<br />

O cos , z 2<br />

4<br />

1<br />

2 ,<br />

2<br />

Pour illustrer la remarque sur la syntaxe de p<br />

O<br />

O<br />

O<br />

cos Pi ;<br />

cos pi , cos P<br />

1<br />

6 p2<br />

K1<br />

cos p , cos P<br />

(4.1.2)<br />

(4.1.3)<br />

Certaines valeurs que MAPLE sait calculer (ce n'est pas toujours le cas) ne le sont cependant pas et<br />

il faut forcer l'évaluation (voir convert, <strong>Chapitre</strong> 13, Simplifications, Manipulations...)<br />

cos<br />

p<br />

5<br />

;<br />

convert cos<br />

p<br />

5<br />

, radical<br />

1<br />

cos<br />

5 p<br />

1<br />

4 C 1 4<br />

5<br />

A propos de e<br />

(4.1.4)<br />

La base e des logarithmes népériens n'est pas une constante prédéfinie (elle l'était sous la forme<br />

E avec d'anciennes versions de MAPLE). Elle est seulement exprimée de façon particulière lors<br />

de l'affichage<br />

e 2 ;<br />

N<br />

1<br />

n!<br />

>n = 0<br />

=e<br />

(4.1.5)<br />

Attention: Le symbole e (non italique) affiché ci-dessus n'a aucun rapport avec le nom e d'une<br />

variable entrée au clavier. Ici, e n'est qu'un nom indéfini. On notera que, contrairement au<br />

nombre, la variable s'affiche en italique.<br />

O e , ln e<br />

e, ln e<br />

Cependant, si on utilise la palette "Symboles courants" pour entrer e, on fera bien référence à la<br />

base des logarithmes népériens (voir § 8.1-5). En mode "Entrée Math-1D" cette opération est<br />

convertie automatiquement en exp(1). En mode "Entrée Math-2D", cela donne<br />

O e , ln e<br />

e, 1<br />

13<br />

(4.1.6)


O<br />

(4.1.6)<br />

Malgré ces remarques, le nombre e n'est pas considéré par MAPLE comme une constante<br />

prédéfinie (voir la commande en fin de paragraphe).<br />

MAPLE est capable de reconnaître (quelquefois après simplification) l'équivalence de deux<br />

expressions comme par exemple exp(1/2) et e .<br />

O exp(1/2)-sqrt(exp(1));<br />

0<br />

(4.1.7)<br />

Rappel : pour entrer l'exposant, utiliser la touche "^". Pour sortir du dénominateur 2 puis de<br />

l'exposant, utiliser la touche "→".<br />

1<br />

2<br />

O e K e<br />

0<br />

(4.1.8)<br />

MAPLE ne connaît que deux autres nombres réels remarquables prédéfinis (e n'est pas dans la<br />

liste) et que nous rencontrerons : la constante d'Euler-Mascheroni g (voir exercice 2.2) et la<br />

constante de Catalan (voir exercice 2.7). A condition de prendre certaines précautions, on peut<br />

ajouter des constantes à cette liste (voir Ch. 2, § 3.3.2.3)<br />

O constants<br />

false, g, N, true, Catalan, FAIL, p<br />

On ne peut rien assigner à ces noms qui sont protégés.<br />

O<br />

p d 22 7 ;<br />

g d 3.14<br />

Error, attempting to assign to `Pi` which is protected<br />

Error, attempting to assign to `gamma` which is protected<br />

Exercice : Avec l'aide en ligne, trouver une définition de la constante de Catalan.<br />

4.2 Nombres indéfinis<br />

MAPLE connaît également la notion de nombre indéfini avec le mot clé undefined. La<br />

"constante" ∞ peut s'écrire infinity et<br />

O 0$N ; N K N<br />

O<br />

undefined<br />

undefined<br />

Ce mot clé peut apparaître en de nombreuses circonstances (calcul de limite par exemple) et se<br />

manipule de façon conforme à sa définition.<br />

e undefined ; 1 K undefined<br />

undefined<br />

(4.2.1)<br />

undefined<br />

undefined<br />

La division par 0 provoque une erreur même pour la forme indéterminée 0/0.<br />

0<br />

O<br />

0<br />

Error, numeric exception: division by zero<br />

Il faut noter également que<br />

(4.2.2)<br />

14


O<br />

0 0 1<br />

5 Nombres décimaux<br />

(4.2.3)<br />

Les nombres décimaux sont dits "à virgule flottante" pour exprimer le fait que la virgule décimale<br />

(syntaxe numérique française) de la mantisse peut prendre n'importe quelle place (souvent après le<br />

premier chiffre significatif), la magnitude réelle étant définie par l'exposant. Avec la syntaxe numérique<br />

anglaise le "point" remplace la "virgule" et on parle de "floating point numbers".<br />

Il existe deux formes de décimaux (voir § 5.2.3), mais on ne présentera dans un premier temps que<br />

les "classiques". Ils sont créés de façon standard (avec un point) et ne doivent pas, comme pour les<br />

entiers, contenir d'espaces (les espaces entourant le + de l'addition sont par contre autorisés).<br />

O K1.2 C 0.035<br />

K1.165<br />

Il existe trois façons de définir des nombres avec des puissances de 10, la plus simple utilisant la<br />

notation scientifique (indifféremment e ou E). Dans le deuxième cas le résultat affiché est celui résultant<br />

d'une multiplication ( -13.345 par le rationnel 1/10 27 ). Il en résulte l'apparition de zéros (voir § 5.1 et §<br />

5.2.2)<br />

O K13.345e-27,K13.345$10 K27 , Float K13.345, K27<br />

K1.3345 10 -26 , K1.334500000 10 -26 , K1.3345 10 -26<br />

Attention : on ne devra pas laisser le point décimal seul devant e ou E (voir § 5.9)<br />

O 45.e6;<br />

Error, missing operator or `;`<br />

O 45.e6<br />

Error, incorrect syntax in parse: missing operator or `;` (near<br />

6th character of parsed string)<br />

45.e6<br />

(5.1)<br />

(5.2)<br />

Il faudra écrire (sans caractère d'espacement)<br />

O 45.0e6;<br />

45.0e6<br />

ou plus simplement encore<br />

O 45e6;<br />

45e6<br />

4.50 10 7<br />

4.50 10 7<br />

4.5 10 7<br />

4.5 10 7<br />

On trouvera aussi des informations complémentaires aux § 5.6, 5.7, 5.8 et 5.9 ainsi qu'au Ch. 2, §<br />

2.3.3, § 2.5.5.2.<br />

5.1 Mode de calcul : évaluation décimale implicite.<br />

Le mélange dans une expression de nombres exprimés en notation décimale avec des nombres<br />

entiers ou rationnels entraîne l'évaluation en valeur décimale. Pour la précision des calculs on se<br />

reportera au § 5.2.2<br />

(5.3)<br />

(5.4)<br />

O<br />

0.5 C 1 3 C 1<br />

15<br />

(5.1.1)


1.833333333<br />

alors que<br />

1<br />

O<br />

2 C 1 3 C 1 11<br />

6<br />

Un autre exemple :<br />

O<br />

(5.1.1)<br />

(5.1.2)<br />

O 1. / 7 $10 K10 , 1 / 7 $10 K10 ;<br />

1.428571429 10 -11 1<br />

,<br />

(5.1.3)<br />

70000000000<br />

Lorqu'une fonction est invoquée avec un argument décimal ou un mélange conduisant à un calcul<br />

décimal, la fonction est calculée sous une forme décimale<br />

0.7046880897, e K 7 20<br />

(5.1.4)<br />

Par contre, priorité est toujours donnée aux calculs symboliques et MAPLE ne prendra pas<br />

O<br />

e 0.4 K 3 4<br />

, e<br />

2<br />

5 K 3 4<br />

l'initiative de remplacer p ou<br />

evalf).<br />

De même<br />

1. C 2 , p C 5.3<br />

2 par leurs valeurs décimales approchées (voir § 5.2.1 et la fonction<br />

1. C 2 , p C 5.3<br />

(5.1.5)<br />

O<br />

cos 1. C p 4<br />

, e 1. K 2 cos 1. C 1 4 p , e1. K 2<br />

(5.1.6)<br />

Exercice : Comparer ces trois exemples et expliquer les différences sachant que l'argument est<br />

évalué avant d'appeler la fonction. Le troisième exemple est moins évident car il semble<br />

contradictoire avec ce qui vient d'être dit... (indication : remplacer 5.3 par α en gardant π, puis π par<br />

π/4 en gardant 5.3 et en déduire le résultat).<br />

O<br />

e 1. C 2 , e 1 C 2. , cos p C 5.3<br />

e 1. C 2 , 11.18097376, K0.5543743362<br />

5.2 Evaluation décimale explicite et fonction evalf<br />

16<br />

(5.1.7)<br />

5.2.1 Fonction evalf<br />

MAPLE est avant tout un calculateur symbolique mais on peut toujours obtenir une<br />

approximation décimale d'une expression numérique avec la fonction evalf (contraction de<br />

"Floating-Point Evaluation")<br />

5<br />

O evalf ;<br />

6<br />

evalf 100!<br />

0.8333333333<br />

(5.2.1.1)


9.332621544 10 157<br />

MAPLE ne dit rien sur l'évaluation de exp(1/2). Une évaluation décimale passe par la<br />

fonction evalf<br />

O<br />

O<br />

O<br />

O<br />

1<br />

2 ;<br />

a := e<br />

evalf a ;<br />

evalf<br />

e<br />

Il peut sembler équivalent d'écrire...<br />

evalf<br />

cos<br />

cos evalf<br />

p<br />

4<br />

p<br />

4<br />

;<br />

;<br />

17<br />

1<br />

2<br />

a := e<br />

1.648721271<br />

1.648721271<br />

0.7071067810<br />

0.7071067811<br />

(5.2.1.1)<br />

(5.2.1.2)<br />

(5.2.1.3)<br />

...mais MAPLE reste avant tout un calculateur symbolique et va, dans le premier cas, d'abord<br />

chercher à évaluer la ligne trigonométrique sous une forme symbolique et ensuite seulement<br />

appliquer la fonction evalf, c'est-à-dire calculer :<br />

cos<br />

p<br />

4<br />

;<br />

2<br />

evalf<br />

2<br />

1<br />

2<br />

2<br />

0.7071067810<br />

(5.2.1.4)<br />

Alors que dans le second cas, la valeur décimale de l'argument est d'abord évaluée puis la ligne<br />

trigonométrique calculée en mode décimal.<br />

p<br />

evalf ;<br />

4<br />

cos 0.7853981635<br />

0.7853981635<br />

0.7071067811<br />

(5.2.1.5)<br />

Ce genre de détails doit être présent à l'esprit quand on manipule des calculs lourds. On doit faire<br />

un bilan (à l'aide de tests séparés) de la part de temps occupée par chacun des calculs<br />

symboliques et numériques afin de faire les bons choix.<br />

On se reportera toutefois à la remarque du § 5.2.2 car cette règle d'évaluation préalable des<br />

arguments n'est pas respectée (et à bon escient) dans un cas précis.<br />

Quand evalf est appliquée sur une expression, elle reconstruit cette expression en explorant<br />

tous les coefficients numériques qu'elle transforme en décimaux à l'exception des exposants<br />

purement entiers ou rationnels positifs ou négatifs. On constate que l'exposant -n/2 n'est pas


considéré de ce type (voir § 8.1-8 ; [***] une explication plus détaillée est donnée au Ch. 2, §<br />

2.4.1). Pour le calcul du coefficient de x 2 , voir l'exemple précédent. Pour γ, voir § 4.1.<br />

3<br />

p<br />

O evalf cos x 2 K n 2<br />

C y C z<br />

2 C ln g a<br />

4<br />

0.7071067810 x 2 C y 3 / 2 C z K0.5000000000 n C ln 0.5772156649 a<br />

(5.2.1.6)<br />

La fonction peut s'appliquer sur d'autres type d'objets, comme ici une liste.<br />

O evalf e K2 3 x<br />

, ln , 3 x 2 C 1<br />

2<br />

0.1353352832, ln 1.500000000 x , 3. x 2 C 1.<br />

(5.2.1.7)<br />

On reviendra souvent dans ce manuel sur cette fonction et son utilisation.<br />

5.2.2 Précision des calculs et variable Digits<br />

Le nombre de chiffres significatifs utilisés pour les calculs est fixé par défaut à 10 (voir la<br />

fin de ce paragraphe ainsi que § 8.3.8 et § 8.4.3) par la variable d'environnement prédéfinie<br />

Digits (pour le sens de l'expression "variable d'environnement", voir Ch. 19, Procédures).<br />

O Digits<br />

10<br />

(5.2.2.1)<br />

Le nombre n de chiffres significatifs des calculs de x peut être ponctuellement fixé en utilisant<br />

la syntaxe evalf[n](x). Ceci n'affecte que le calcul demandé et ne modifie pas la valeur de la<br />

variable Digits. L'affichage s'adapte à cette valeur, mais on peut modifier ce comportement (voir<br />

§ 5.8). Notez le "\" à la fin de la première ligne qui indique que l'affichage du nombre se<br />

poursuit.<br />

O<br />

evalf 100<br />

p<br />

2 K 1<br />

0.570796326794896619231321691639751442098584699687552910487472296153\<br />

908203143104499314017412671058534<br />

(5.2.2.2)<br />

O evalf 30 e K3 $ln 2<br />

0.0345097660675301301020324590401<br />

(5.2.2.3)<br />

On peut aussi utiliser l'écriture indicée suivante. Pour écrire en mode indice utiliser la touche "_",<br />

puis "40", puis la touche "→" pour sortir du mode indice.<br />

O evalf 40<br />

e K3 K p<br />

K3.091805585221929295483300967629441107565<br />

(5.2.2.4)<br />

O Digits<br />

10<br />

(5.2.2.5)<br />

Il existe aussi une autre forme, evalf(x,n), utilisée dans les précédentes versions et encore<br />

valable. La forme evalf[n](x) ou evalf n<br />

x est maintenant recommandée.<br />

Attention : conformément aux remarques du § 5.2.1, evalf cherche à évaluer au préalable et<br />

dans la mesure du possible, les arguments pour les simplifier. La conséquence a une importance<br />

capitale<br />

O<br />

evalf 30<br />

1 C 1 3<br />

;<br />

18<br />

(5.2.2.6)


O<br />

evalf 30<br />

1 C 1<br />

3.0<br />

1.33333333333333333333333333333<br />

1.333333333<br />

(5.2.2.6)<br />

On comprend évidemment l'origine de cette différence... Le premier résultat est l'évaluation<br />

décimale de 4/3. Le second à celui obtenu par 1+1/3.0 évalué avec Digits=10, evalf 30<br />

ne pouvant<br />

alors que renvoyer une évaluation identique<br />

O w d 1 C 1<br />

3.0 ;<br />

evalf 30<br />

w<br />

w := 1.333333333<br />

1.333333333<br />

(5.2.2.7)<br />

Exercice : La différence ne saute pas forcément aux yeux si les nombres n'ont pas une<br />

représentation décimale évidente. Quel est le résultat correct ?<br />

O evalf 30<br />

e 1 C 1 3<br />

; evalf 30<br />

e 1 C 1<br />

3.0<br />

3.79366789468317773539630436049<br />

3.79366789341862177071267110950<br />

(5.2.2.8)<br />

On peut aussi changer par assignation la valeur de Digits pour une série de calculs puis<br />

revenir si on le souhaite à la valeur standard. La valeur maximale de Digits est donnée par<br />

O kernelopts maxdigits<br />

268435448<br />

(5.2.2.9)<br />

(valeur pour une machine 32 bits ; 38 654 705 646 pour une machine 64 bits !). Pour travailler<br />

avec une telle précision, MAPLE utilise la librairie d'algorithmes GMP (GNU Multiple<br />

Precision). On notera que certaines des commandes suivantes se terminent par ":". En effet<br />

l'affichage des résultats ne présente aucun intérêt (ou peut même, pour des affichages longs,<br />

encombrer inutilement la lecture)<br />

O Nb_digits := Digits :<br />

Digits := 50 :<br />

1<br />

1<br />

2 , evalf e<br />

2<br />

O<br />

e<br />

; p 5 , evalf p<br />

5<br />

1<br />

2<br />

e , 1.6487212707001281468486507878141635716537761007101<br />

1<br />

p, 0.62831853071795864769252867665590057683943387987502<br />

5<br />

Digits := Nb_digits :<br />

evalf<br />

e<br />

1<br />

2<br />

; evalf p<br />

5<br />

;<br />

1.648721271<br />

0.6283185308<br />

(5.2.2.10)<br />

(5.2.2.11)<br />

ATTENTION<br />

19


Le nombre de chiffres qui définit un nombre, celui qui définit la précision des calculs et<br />

celui qui est utilisé pour l'affichage (§ 5.8), sont distincts.<br />

La valeur de Digits n'intervient que dans le calcul des nombres (affecte seulement GMP), mais<br />

n'effectue pas de troncature sur leurs définitions qui restent préservées. Noter que les 0 décimaux<br />

de fin sont significatifs et préservés<br />

O X d 1.23456789057342980000;<br />

X / 3; # Nombre de chiffres = Digits<br />

e X ;<br />

X<br />

# Nombre de chiffres = Digits<br />

# Nombre de chiffres = celui de la définition<br />

X := 1.23456789057342980000<br />

0.4115226303<br />

3.436893087<br />

1.23456789057342980000<br />

(5.2.2.12)<br />

Le nombre Y est calculé avec 20 chiffres significatifs et, malgré la valeur de Digits égale à 10,<br />

conserve toute sa précision.<br />

5<br />

O Y := evalf 20<br />

;<br />

Digits;<br />

Y<br />

7<br />

Y := 0.71428571428571428571<br />

10<br />

0.71428571428571428571<br />

(5.2.2.13)<br />

Suivant l'option choisie (voir § 5.8), l'affichage peut ne pas refléter la précision des calculs, mais<br />

ce n'est pas le cas par défaut (comme ici).<br />

L'application de evalf sur X produit un nouveau nombre dont la précision résulte de la valeur de<br />

Digits.<br />

O Z d evalf X<br />

Z := 1.234567891<br />

(5.2.2.14)<br />

Cette soustraction produit 0.0 car le calcul est fait avec Digits=10 chiffres et le nombre de<br />

chiffres qui définit X n'y change rien.<br />

O X K Z<br />

0.<br />

(5.2.2.15)<br />

Par contre...<br />

O evalf 20<br />

X K Z<br />

K4.265702000 10 -10<br />

(5.2.2.16)<br />

Exercice : expliquer...<br />

O<br />

A d evalf 18<br />

2<br />

7<br />

B d evalf 18<br />

2<br />

7<br />

;<br />

A := 0.5345224838<br />

B := 0.534522483824848769<br />

20<br />

(5.2.2.17)


O<br />

B K A<br />

0.<br />

(5.2.2.18)<br />

ATTENTION<br />

Que ce soit avec MAPLE ou avec tout autre langage (C, C++, Fortran, Java...), les calculs<br />

numériques décimaux (dits en "virgule flottante") doivent être menés avec la plus grande<br />

prudence (on trouvera des illustrations de ces difficultés au chapitre 4 Vecteurs, Matrices et<br />

Algèbre linéaire § V §§ Erreurs numériques, ou avec les exercices 3.8 et 3.9). L'algèbre<br />

informatique des décimaux, quelque soit le langage, peut même se révéler non commutative<br />

et/ou non distributive !<br />

O<br />

5 evalf<br />

1<br />

7<br />

K evalf<br />

5<br />

7<br />

2. 10 -10 (5.2.2.19)<br />

Augmenter la précision peut ne rien changer quand on s'y prend mal...<br />

O<br />

5 evalf 20<br />

1<br />

7<br />

K evalf 20<br />

5<br />

7<br />

2. 10 -10 (5.2.2.20)<br />

La valeur par défaut de Digits peut aussi être changée à l'aide du menu d'initialisation (voir §<br />

8.3.7) Tools[Outils]/Options (Windows-Linux) ou Maple 14/Préférences (Mac) qui ouvre une<br />

fenêtre d'initialisation. Cliquer ensuite sur l'onglet Precision et affecter la valeur souhaitée à la<br />

rubrique "Round calculation to [Arrondir le calcul à]" (Attention: ne pas confondre avec la<br />

rubrique "Round screen display to[Arrondir l'affichage de l'écran à]"). Pour effectuer le<br />

changement de la valeur de Digits on peut aussi utiliser un fichier d'initialisation de MAPLE,<br />

(voir § 8.3.8) ou plus simplement une modification attachée seulement à la feuille de calcul avec<br />

le Startup code (§ 8.4.3-1).<br />

5.2.3 Fonction evalhf (arithmétique "cablée" ou "hardware") [**]<br />

5.2.3.1 Les décimaux "software" et "hardware"<br />

Il existe deux façons dans MAPLE de définir des nombres décimaux et pour deux raisons<br />

précises.<br />

1) Les nombres décimaux "classiques" sont ceux dont il était question précédemment et<br />

qui sont définis par défaut. Ils ont un nombre de chiffres significatifs qui peut atteindre<br />

268435448 (valeur pour une machine 32 bits ; voir § 5.2.2). L'arithmétique qui gère ces<br />

nombres est traitée par des bibliothèques d'algorithmes (GMP) et, comme on peut s'en<br />

douter, les temps de calcul croissent avec le nombre de chiffres significatifs. C'est le mode de<br />

calcul par défaut des décimaux sous MAPLE. La précision des calculs est définie par la<br />

variable Digits (on rappelle que la précision de la définition des nombres et la précision des<br />

calculs sont des notions distinctes). En raison de cette gestion des calculs par algorithmes on<br />

parle de décimaux et d'arithmétique "émulés" ou "software" ("software floating numbers").<br />

2) Les langages de programmation comme Fortran, C, C++, etc. travaillent (sauf<br />

utilisation de bibliothèques spécialisées telle GMP) avec une précision fixe (6 à 7 chiffres en<br />

simple précision et 15 à 16 chiffres en double précision pour un ordinateur avec mots de 32<br />

21


its). Pour la double précision, les nombres sont stockés selon la norme IEEE sur 64 bits<br />

(signe, mantisse et exposant). Leur arithmétique est traitée par le processeur et son cablage<br />

électronique. C'est en raison de cette gestion que l'on qualifie ces nombres de "hardware<br />

numbers" que l'on peut traduire littéralement par "nombres de quincaillerie"... mais que l'on<br />

traduira plutôt par décimaux et arithmétique "cablés" ou "hardware".<br />

L'inconvénient des nombres "hardware" est que leur précision est fixe. Mais la rapidité<br />

des calculs est beaucoup plus grande et MAPLE permet de définir des nombres de ce type<br />

et de faire des calculs dans ce mode.<br />

Il n'en demeure pas moins, malgré cette possibilité, que l'on travaille avec MAPLE<br />

dans un environement de calcul symbolique qui reste très gourmand en mémoire et en<br />

temps de calcul. MAPLE ne saurait donc remplacer les langages de calcul numériques<br />

pour les très gros volumes de calculs (modélisation). Il faut cependant noter que MAPLE<br />

intègre dans ses algorithmes numériques (résolution de systèmes linéaires, intégrations,<br />

etc.) des méthodes robustes utilisant des bibliothèques numériques éprouvées (NAG).<br />

Remarque : il faut garder à l'esprit, même si cela ne sert à rien dans la pratique, que quelque<br />

soit leur nature, les décimaux (comme d'ailleurs les entiers et tous les concepts virtuels d'un<br />

ordinateur) ne sont au final que des suites de 0 et de 1 (physiquement des suites de deux<br />

tensions électriques). Les deux types de nombres décimaux ne diffèrent que par la façon dont<br />

sont organisées ces suites en mémoire et la façon dont on les traite.<br />

L'affichage de ces deux types de nombres ne permet pas de les distinguer et c'est même<br />

souvent une source de confusion. Aussi, on propose pour les besoins des paragraphes<br />

suivants, de créer une fonction qui permettra de les distinguer (cette écriture ne pourra être<br />

comprise qu'après la lecture du Ch. 2 § 2.1 et § 2.3.3 et du Ch. 7, et on demande au lecteur<br />

de l'admettre telle quelle). D'autres moyens existent et on en présentera deux à la fin du<br />

paragraphe.<br />

O t := x::float/op 0, x<br />

t := x::float/op 0, x<br />

(5.2.3.1.1)<br />

Les décimaux "software" sont créés par défaut avec MAPLE. Ils ont comme<br />

caractéristique rendue par la fonction t le terme "Float", soit implicitement "software Float".<br />

O t 3.5<br />

Float<br />

(5.2.3.1.2)<br />

7<br />

O a d evalf 15<br />

;<br />

2<br />

t a<br />

a := 3.50000000000000<br />

Float<br />

(5.2.3.1.3)<br />

O t 300. , t K0.50<br />

Float, Float<br />

(5.2.3.1.4)<br />

La fonction evalf permet de transformer les autres formes de nombre en décimaux<br />

"software"<br />

O<br />

t evalf 3 , t evalf p ;<br />

t evalf K 3 , t evalf<br />

7<br />

2<br />

Float, Float<br />

22<br />

(5.2.3.1.5)


Float, Float<br />

(5.2.3.1.5)<br />

Pour créer un décimal "hardware" stocké en mémoire sur 64 bits, il faut utiliser<br />

explicitement le constructeur HFloat. La fonction t renvoie alors "HFloat" qui caractérise ces<br />

nombres. On peut constater, en comparant avec (5.2.3.1.3), que l'affichage seul des nombres<br />

a et h ne permet pas de faire la distinction entre les deux types.<br />

O<br />

O<br />

O<br />

O<br />

h d HFloat 3.5 ;<br />

t h<br />

h := 3.50000000000000<br />

HFloat<br />

(5.2.3.1.6)<br />

L'argument de HFloat doit être soit un entier, soit un décimal (ou un complexe sous les<br />

mêmes réserves ; voir § 6).<br />

7<br />

O HFloat<br />

2<br />

Error, invalid argument for HFloat constructor<br />

Il suffit donc d'écrire, par exemple,<br />

7.<br />

O HFloat<br />

2<br />

3.50000000000000<br />

(5.2.3.1.7)<br />

Un décimal de type "hardware" pouvant accepter 16 à 18 chiffres significatifs, on prendra<br />

toujours soin de créer un décimal suffisamment précis si nécessaire (pour le cas précédent,<br />

c'était inutile). La valeur de Digits étant égale à 10 par défaut, l'utilisation de evalf seule est en<br />

général insuffisante. On écrira plutôt (voir § 5.2.2).<br />

HFloat evalf 18<br />

5<br />

7<br />

0.714285714285714<br />

que l'on pourra comparer avec<br />

5<br />

O HFloat evalf<br />

7<br />

0.714285714300000<br />

De même pour des nombres symboliques<br />

HFloat 2 ;<br />

HFloat<br />

p<br />

2<br />

HFloat evalf 18<br />

2 ;<br />

HFloat evalf 18<br />

p<br />

2<br />

HFloat 2<br />

HFloat<br />

1<br />

2 p<br />

1.41421356237310<br />

1.57079632679490<br />

23<br />

(5.2.3.1.8)<br />

(5.2.3.1.9)<br />

(5.2.3.1.10)<br />

(5.2.3.1.11)<br />

Mais on pourra aussi utiliser la fonction evalhf (§ 5.2.3.2 ). On remarquera que le nombre de<br />

chiffres affichés n'est pas une indication sur la nature "software" ou "hardware" des<br />

nombres.


Le constructeur HFloat admet des quantités indéfinies (x) comme argument. Il ne peut<br />

bien sûr produire dans ce cas aucun nombre décimal...<br />

O<br />

u := HFloat 2 x<br />

v := HFloat 1.41421356237309505 x<br />

(5.2.3.1.12)<br />

... et se comporte alors comme une fonction dont les arguments suivent les règles d'évaluation<br />

décrites au Ch. 2. En particulier le calcul décimal de l'argument, seulement possible pour v<br />

quand on pose x = 3, se fait dans le mode "software" par défaut avec Digits=10 chiffres,<br />

expliquant la réduction du nombre final de chiffres rendus par HFloat. La raison qui induit ce<br />

mode de calcul est que 1.4142... est, malgré ses 18 chiffres, un nombre de type "software"<br />

(voir § 5.2.3.2).<br />

O x d 3 : u; v; t v<br />

O<br />

u d HFloat 2 x ;<br />

v d HFloat evalf 18<br />

2 x<br />

HFloat 3 2<br />

4.24264068600000<br />

HFloat<br />

24<br />

(5.2.3.1.13)<br />

Il existe d'autres façons que celle utilisée par la fonction t pour distinguer ces nombres.<br />

Par exemple, les commandes suivantes montrent que a est du type sfloat (software float) et<br />

que h est un décimal de type float 8<br />

stocké sur 8 octets (8×8 bits ; hardware float).<br />

a, h;<br />

NumericClass a ;<br />

NumericClass h<br />

3.5, 3.50000000000000<br />

And sfloat, positive, numeric<br />

And float 8<br />

, positive, numeric<br />

(5.2.3.1.14)<br />

On peut aussi utiliser la notion de type décrite au Ch. 2, § 3. On demande si a ou h sont du<br />

type précisé (vrai=true, faux=false).<br />

O type a, sfloat , type h, hfloat ;<br />

type a, hfloat , type h, sfloat<br />

true, true<br />

false, false<br />

(5.2.3.1.15)<br />

Ou encore...<br />

O type h, float 8<br />

true<br />

(5.2.3.1.16)<br />

Mais la réponse peut sembler fausse si on s'en tient à une connaissance superficielle...<br />

O type h, float<br />

(5.2.3.1.17)<br />

true<br />

...car le type float englobe les types sfloat et hfloat.<br />

Des informations complémentaires sont données au Ch. 2, § 2.3.3, § 2.4.1 et § 3.<br />

5.2.3.2 Modes de calcul induit par les décimaux "hardware", fonction evalhf<br />

Rappelons (§ 5.1) que pour qu'un calcul décimal soit déclenché, il suffit qu'une seule des<br />

opérandes soit de cette nature et que les autres nombres ne soient pas symboliques.


22.0<br />

O K p;<br />

7<br />

22<br />

7 K 3.141592654 3.142857143 K p<br />

0.001264489<br />

Le résultat par défaut a la caractéristique des décimaux "software".<br />

O t %<br />

Float<br />

O<br />

(5.2.3.2.1)<br />

(5.2.3.2.2)<br />

Si des opérandes symboliques comme π ou 2 sont présentes, il faudra faire appel à la<br />

fonction evalf pour effectuer le calcul (§ 5.2.1 et § 5.2.2).<br />

p$5<br />

2 $ 2 ;<br />

p$5.0$ 2<br />

2<br />

evalf<br />

;<br />

p$5 2<br />

2<br />

5<br />

2 p 2<br />

2.500000000 p 2<br />

11.10720734<br />

(5.2.3.2.3)<br />

La fonction evalf travaille en mode "software" et le résultat a encore la caractéristique des<br />

décimaux "software".<br />

O t %<br />

Float<br />

(5.2.3.2.4)<br />

Il est cependant possible de demander à ce que ce calcul soit effectué en mode "hardware",<br />

c'est à dire avec une "arithmétique cablée" en utilisant la fonction evalhf. La vitesse<br />

d'exécution est beaucoup plus rapide, mais la précision et fixée à 18 chiffres.<br />

Evidemment cette fonction n'a vraiment un intérêt que pour les gros volumes de<br />

calculs numériques.<br />

O<br />

evalhf(Pi*7/22*sqrt(2));<br />

1.41364457123220744<br />

(5.2.3.2.5)<br />

ATTENTION<br />

Malgré le mode de calcul et les 18 chiffres significatifs, le résultat de evalhf est un<br />

nombre de type "software".<br />

O t(%);<br />

Float (5.2.3.2.6)<br />

L'oubli de cette caractéristique est souvent la source de beaucoup de confusions...<br />

Avec evalhf on ne pourra pas se fier au dernier ou deux derniers chiffres affichés (en raison<br />

des approximations dues aux conversions "représentation binaire" ⇔ "représentation<br />

décimale".<br />

O evalhf(7/3);<br />

25<br />

(5.2.3.2.7)


O<br />

evalf[18](7/3);<br />

ou encore<br />

O evalhf(7/5);<br />

evalf[18](7/5);<br />

2.33333333333333348<br />

2.33333333333333333<br />

1.39999999999999990<br />

1.40000000000000000<br />

(5.2.3.2.7)<br />

(5.2.3.2.8)<br />

On notera aussi que Digits est une variable très particulière relativement à la fonction<br />

evalhf et que le résultat, bien que cohérent, peut surprendre ! Même si le nombre de chiffres<br />

affichés est de 18, MAPLE considère que la précision effective des calculs est de 15 chiffres,<br />

et évidemment quelque soit la valeur de Digits.<br />

O<br />

Digits;<br />

evalhf(Digits); # 10 devient 15.<br />

trunc(evalhf(Digits)); # voir § 5.3<br />

10<br />

15.<br />

15<br />

26<br />

(5.2.3.2.9)<br />

La présence d'un décimal HFloat ("hardware") dans une expression arithmétique entraîne<br />

en général des calculs et un résultat en mode "hardware"...<br />

O a d HFloat 2 ;<br />

t a<br />

a := 2.<br />

HFloat<br />

(5.2.3.2.10)<br />

O 3 a 2 C 1 ;<br />

7<br />

t %<br />

12.4285714285714<br />

HFloat<br />

(5.2.3.2.11)<br />

... sauf si Digits R evalhf Digits , auquel cas les calculs sont faits en mode "software" et le<br />

résultat est forcément en mode "software".<br />

O Digits d 30 :<br />

3 a 2 C 1 ;<br />

7<br />

t % ;<br />

Digits d 10 :<br />

12.4285714285714285714285714286<br />

Float<br />

(5.2.3.2.12)<br />

De même, une fonction est évaluée dans le mode décimal de son argument (si possible ; voir<br />

la fin du paragraphe)...<br />

O<br />

exp a ;<br />

t %<br />

7.38905609893065<br />

HFloat<br />

... avec la même condition sur la prescription du nombre de chiffres significatifs<br />

O Digits d 30 :<br />

(5.2.3.2.13)


O<br />

exp a ;<br />

t % ;<br />

Digits d 10 :<br />

7.38905609893065022723042746058<br />

Float<br />

(5.2.3.2.14)<br />

Cette logique est contrôlée par la variable d'environnement...<br />

O UseHardwareFloats<br />

deduced<br />

(5.2.3.2.15)<br />

... et MAPLE déduit de la précision demandée le mode de calcul qu'il va utiliser. On peut<br />

assigner true ou false à cette variable pour imposer ou empêcher l'un ou l'autre mode, mais<br />

mieux vaut savoir ce que l'on fait !...<br />

Suivant la façon dont sont écrites les expressions, la logique induite des modes de calcul<br />

peut varier. L'expression 3 a 2 C 1 7<br />

comme<br />

O t a ;<br />

3 a 2 C 3 7 ;<br />

est interprétée par MAPLE (voir Ch. 2, § 2.2.2)<br />

t %<br />

HFloat<br />

12.4285714285714<br />

HFloat<br />

et les calculs sont faits en mode "hardware" avec la bonne précision.<br />

(5.2.3.2.16)<br />

O %% K evalf 18<br />

12 C 3 7<br />

0.<br />

(5.2.3.2.17)<br />

Maintenant, par le simple fait d'utiliser le décimal "software" 1.0, on force le calcul de 1.0 a<br />

7<br />

être fait en mode "software" avec seulement Digits=10 chiffres significatifs, occasionnant<br />

une perte de précision :<br />

O 3 a 2 C 1.0 ;<br />

7<br />

t % ;<br />

%% K evalf 18 12 C 3 7<br />

12.4285714287000<br />

HFloat<br />

1.28570931678951 10 -10<br />

L'expression est interprétée comme<br />

O 3 a 2 1.0<br />

C 3$<br />

7<br />

12.4285714287000<br />

On peut décomposer ce calcul en<br />

O<br />

A d 3 HFloat 2 2 ;<br />

t A ;<br />

27<br />

(5.2.3.2.18)<br />

(5.2.3.2.19)


O<br />

puis<br />

O<br />

O<br />

O<br />

B d 3$ 1.0<br />

7 ;<br />

t B<br />

A C B;<br />

t %<br />

A := 12.<br />

HFloat<br />

B := 0.4285714287<br />

Float<br />

12.4285714287000<br />

HFloat<br />

(5.2.3.2.20)<br />

(5.2.3.2.21)<br />

On comprend pourquoi une partie de la précision a été perdue au cours du calcul et l'usage de<br />

evalhf ne résout rien car l'écriture décimale 1.0 force toujours le calcul de la fraction en mode<br />

"software" :<br />

O evalhf 3 a 2 C 1.0 ;<br />

7<br />

12.4285714286999998<br />

(5.2.3.2.22)<br />

Si on veut, on peut pour récupérer la précision, écrire ce qui suit, mais pourquoi faire<br />

compliqué quand on peut écrire simplement 1 (voir (5.2.3.2.11)). L'exemple est seulement à<br />

vocation pédagogique...<br />

O 3 a 2 HFloat 1.0<br />

C<br />

7<br />

12.4285714285714<br />

... sauf si le numérateur doit être un décimal différent d'un entier.<br />

O 3 a 2 HFloat 1.569<br />

C<br />

7<br />

12.6724285714286<br />

(5.2.3.2.23)<br />

(5.2.3.2.24)<br />

Comme pour les décimaux standard (software), MAPLE donne la priorité aux calculs<br />

symboliques (voir (5.1.5) et (5.1.6)).<br />

3 a 2 C 2<br />

7<br />

;<br />

12. C 3 7<br />

2<br />

(5.2.3.2.25)<br />

Une fonction (ici ) est évaluée ci-dessous dans le mode décimal de son argument (sauf<br />

contrôle par UseHardwareFloats). Comme pour 1.0 dans (5.2.3.2.19), 2.0 est calculée<br />

7<br />

en mode "software" avec 10 chiffres significatifs, la somme calculée en mode "hardware"<br />

(celui de a) et le résultat est un décimal "hardware". On a donc encore une perte de précision..<br />

.<br />

3 a 2 C 2.0<br />

7<br />

t % ;<br />

;<br />

28<br />

(5.2.3.2.26)


O<br />

%% K evalf 18 12 C 3 2<br />

7<br />

12.6060915265714<br />

HFloat<br />

K1.59896984541774 10 -10<br />

... et on écrira plutôt...<br />

O<br />

3 a 2 C evalhf 2<br />

7<br />

t % ;<br />

%% K evalf 18 12 C 3 2<br />

7<br />

12.6060915267313<br />

HFloat<br />

0.<br />

... qui est interprétée comme<br />

;<br />

(5.2.3.2.26)<br />

(5.2.3.2.27)<br />

O<br />

3 a 2 C 3 7 evalhf 2 12.6060915267313<br />

(5.2.3.2.28)<br />

Certes le résultat de evalhf est un nombre "software", mais avec la précision suffisante pour<br />

produire un calcul correct en mode "hardware". On peut aussi écrire...<br />

O 3 a 2 evalf 18 2<br />

C<br />

7<br />

12.6060915267313<br />

...mais le calcul précédent est plus rapide.<br />

Exercice : pourquoi obtient-on le même résultat imprécis que pour (5.2.3.2.26) ?<br />

O<br />

O<br />

3 a 2 C evalhf 2<br />

7<br />

;<br />

12.6060915265714<br />

Exercice : Quelle est la raison de cette différence ?<br />

evalhf<br />

evalhf<br />

3<br />

2 p<br />

3<br />

2 p<br />

;<br />

(5.2.3.2.29)<br />

(5.2.3.2.30)<br />

2.09439510239319526<br />

2.094395102<br />

(5.2.3.2.31)<br />

[**]Certaines fonctions de MAPLE ne sont pas (encore) calculables avec evalhf (voir<br />

aussi le § 6 relatif aux nombres complexes)<br />

O<br />

evalf G 2.3 ;<br />

evalf G 1.2, 2.3 ;<br />

evalf BesselJ 1, 2.7<br />

29<br />

(5.2.3.2.32)


O<br />

O<br />

O<br />

O<br />

O<br />

1.166711905<br />

0.1265378441<br />

0.4416013791<br />

O evalhf G 2.3 ;<br />

t % ;<br />

evalhf G 1.2, 2.3 ;<br />

evalhf BesselJ 1, 2.7<br />

1.16671190519816025<br />

Float<br />

Error, unsupported type `complex(float)` in evalhf<br />

Error, unsupported type `('complex')('float')` in evalhf<br />

Le calcul suivant n'est pas de type "hardware", mais "software".<br />

G HFloat 1.2 , HFloat 2.3 ;<br />

t %<br />

0.126537844091784<br />

HFloat<br />

On trouvera la liste des fonctions calculables avec<br />

O ?evalhf/fcnlist<br />

5.3 Décimaux, entiers et rationnels [*]<br />

On obtient respectivement la partie entière et la partie fractionnaire d'un nombre avec les<br />

fonctions trunc et frac<br />

O a := 1.648;<br />

trunc Ka ;<br />

frac Ka<br />

a := 1.648<br />

K1<br />

K0.648<br />

30<br />

(5.2.3.2.32)<br />

(5.2.3.2.33)<br />

Il n'est pas nécessaire de forcer au préalable l'évaluation décimale de l'argument qui peut être un<br />

nombre symbolique. On notera que la priorité est toujours donnée aux expressions exactes<br />

trunc Kp ;<br />

frac Kp<br />

frac 3 2 ;<br />

evalf frac 3 2<br />

L'entier le plus proche est donné par<br />

K3<br />

Kp C 3<br />

3 3 K 4<br />

1.196152424<br />

round Ka , round e , round 3 2<br />

K2, 3, 4<br />

Les entiers immédiatement inférieurs et supérieurs sont respectivement donnés par (ceil pour<br />

"ceiling" = "plafond" et "floor" = "sol")<br />

floor p , ceil p<br />

(5.3.1)<br />

(5.3.2)<br />

(5.3.3)<br />

(5.3.4)<br />

(5.3.5)


O floor Kp , ceil Kp<br />

K4, K3<br />

(5.3.6)<br />

Il est possible de convertir un nombre décimal en nombre rationnel. MAPLE renvoie alors une<br />

fraction réduite au plus petit dénominateur (approximation par fraction continue)<br />

O<br />

r_Pi := convert evalf p , rational ;<br />

ifactor %<br />

3, 4<br />

31<br />

(5.3.5)<br />

r_Pi := 104348<br />

33215<br />

1373<br />

(5.3.7)<br />

73<br />

On peut récupérer le reste de la division de deux entiers avec la fonction irem (–33 = –4×7–5)<br />

O irem 9, 3 , irem K33, 7 , irem 3, 5<br />

0, K5, 3<br />

(5.3.8)<br />

La même fonction permet, en respectant la syntaxe (expliquée au Ch. 2, § 1.1), de récupérer le<br />

quotient avec un troisième argument ( ' est une apostrophe et non un accent grave)<br />

O<br />

irem K33, 7 , 'q1' ;<br />

q1<br />

O irem 3, 5 , 'q2' ;<br />

q2<br />

3<br />

0<br />

Pour des conversion plus spécialisées vers des entiers on se reportera à la bibliothèque<br />

O ?MTM/integer<br />

K5<br />

K4<br />

(5.3.9)<br />

(5.3.10)<br />

5.4 Troncature [**]<br />

Cette gestion concerne aussi, et de façon particulière, les nombres complexes. Le sujet est donc<br />

reporté au § 7.3 avec la fonction fnormal après la présentation des nombres complexes.<br />

5.5 Gestion des erreurs [**]<br />

On peut traiter suivant son choix les "accidents" de calcul comme des divisions par 0, les<br />

dépassement de capacité mémoire, etc. Le sujet dépasse le cadre de ce chapitre et on trouvera<br />

quelques éléments d'information au Ch. 19. On pourra aussi visiter l'aide en ligne, par exemple<br />

O ?NumericEvent<br />

O ?NumericEventHandler<br />

O ?NumericStatus<br />

5.6 Représentations extrêmes ou indéfinies des décimaux [*]<br />

La représentation des nombres décimaux est limitée en magnitude. Ici la valeur vraie est certes<br />

très petite, mais n'est pas nulle. Cependant<br />

O exp(-2.0e10);<br />

e K2.0e10 0.<br />

0.<br />

(5.6.1)


Les valeurs décimales n'étant pas exactes, MAPLE adopte une écriture semblable à celle des limites<br />

en donnant un "signe" au 0 décimal.<br />

O Kexp K2.0e10<br />

K0.<br />

(5.6.2)<br />

Le "signe" du zéro décimal peut dépendre de la façon dont est fixé le calcul des arrondis (§ 5.7)<br />

O 179 K 179.0 ;<br />

Rounding dKinfinity :<br />

179 K 179.0 ;<br />

Rounding d nearest :<br />

Voir aussi l'aide en ligne<br />

O ?DefaultUnderflow<br />

0.<br />

K0.<br />

(5.6.3)<br />

MAPLE crée des nombres décimaux infinis (voir le type extended_numeric au Ch. 2, § 3). Ils<br />

ont la caractéristique Float des nombres décimaux (on rappelle que la fonction t a été construite en<br />

(5.2.3.1.1) et donne le type du nombre).<br />

O<br />

e 1.0 1030 ;<br />

t %<br />

ou encore<br />

O evalf KN ;<br />

t %<br />

Voir aussi l'aide en ligne<br />

O ?DefaultOverflow<br />

Exercice : comparer et expliquer<br />

O Kexp KN , Kexp KFloat N<br />

Float N<br />

Float<br />

KFloat N<br />

Float<br />

0, K0.<br />

(5.6.4)<br />

(5.6.5)<br />

(5.6.6)<br />

MAPLE crée également des décimaux indéfinis (voir le type extended_numeric au Ch. 2, § 3).<br />

Ils ont la caractéristique Float des nombres décimaux<br />

O exp K1.0e29 $exp 1.0e30 ;<br />

t % ;<br />

Float undefined<br />

Float<br />

(5.6.7)<br />

Les décimaux infinis ou indéfinis ne sont évidemment pas représentables en mode décimal mais, par<br />

exemple, un calcul numérique ne sera pas arrêté par un nombre qui prend pour une raison<br />

quelconque une valeur infinie, alors que le résultat final a une valeur finie au sens d'une limite.<br />

O<br />

x d ln 0.0 ;<br />

exp 1 C x<br />

x := KFloat N<br />

0.<br />

32<br />

(5.6.8)


Ces remarques valent pour les décimaux "hardware"<br />

O<br />

O<br />

Ke HFloat K2.0 1010 ;<br />

t %<br />

e HFloat 1.0 1030 ;<br />

K0.<br />

HFloat<br />

(5.6.9)<br />

e HFloat K1.0 1029 e HFloat 1.0 1030 HFloat N<br />

HFloat undefined<br />

Attention : le résultat est ici du type Float et non HFloat ; voir (5.2.3.2.6)<br />

O<br />

evalhf KN ;<br />

t %<br />

KFloat N<br />

Float<br />

(5.6.10)<br />

(5.6.11)<br />

La fonction NextAfter permet de déterminer quel est le nombre décimal représentable le plus<br />

proche d'un nombre donné mais différent pour la précision compatible avec la valeur définie par<br />

Digits. Un deuxième argument, sous la forme d'un nombre sur la droite réelle achevée, indique la<br />

direction vers laquelle le résultat doit être cherché<br />

O NextAfter 0, 1 , NextAfter K1, 0 , NextAfter K1.0,KN<br />

1. 10 -11 , K0.9999999999, K1.000000001<br />

(5.6.12)<br />

Ce deuxième argument n'a pas de valeur précise, sinon sa position relative sur la droite réelle par<br />

rapport au premier argument<br />

O NextAfter K1.0,KN , NextAfter K1.0,K2<br />

K1.000000001, K1.000000001<br />

(5.6.13)<br />

Ainsi NextAfter(1,–∞) et NextAfter(1,2) sont les nombres décimaux les plus proches de 1 tels que la<br />

différence ne soit pas nulle...<br />

O 1 KNextAfter 1,KN , 1 K NextAfter 1, 2<br />

1. 10 -10 , K1. 10 -9<br />

(5.6.14)<br />

... résultat bien entendu fonction de la valeur de Digits<br />

O Digits d 30 :<br />

1 KNextAfter 1,KN , 1KNextAfter 1, 2 ;<br />

Digits d 10 : # Retour à la valeur standard<br />

1. 10 -30 , K1. 10 -29<br />

(5.6.15)<br />

Le plus grand et le plus petit nombre décimal "software" strictement positif que peut représenter<br />

MAPLE en arithmétique émulée sont donnés par<br />

O Maple_floats MAX_FLOAT , Maple_floats MIN_FLOAT<br />

1. 10 2147483646 , 1. 10 -2147483646<br />

(5.6.16)<br />

On trouvera des compléments d'information dans l'aide en ligne<br />

O ?Maple_floats<br />

Pour les nombres "hardware"<br />

O evalhf DBL_MAX , evalhf DBL_MIN ;<br />

33<br />

(5.6.17)


9.9999999000000002 10 307 , 1.00000010000000001 10 -307<br />

On trouvera des compléments d'information dans l'aide en ligne<br />

O ?evalhf/constant<br />

(5.6.17)<br />

5.7 Calculs des arrondis [**]<br />

Les calculs d'arrondis sont contrôlés par la variable d'environnement Rounding. Suivant sa<br />

valeur, l'arrondi est calculé ainsi<br />

- nearest (par défaut) : au plus près (la plus petite distance).<br />

- 0 : vers 0.<br />

- ±∞ : dans la direction correspondante.<br />

Le schéma illustre les significations de ces possibilités :<br />

- en bleu sur l'axe réel, un nombre positif ou négatif<br />

- en rouge, les arrondis possibles.<br />

- en vert les arrondis calculés en fonction de la valeur de Rounding.<br />

0<br />

nearest<br />

0<br />

+ ∞<br />

- ∞<br />

Attention : nearest n'est pas un nom protégé (il devrait l'être ; voir Ch. 2, § 1.4) et est assignable (il<br />

ne devrait pas l'être).<br />

Le rationnel 1/7 est représenté par une suite périodique de décimaux 0.142857 142[857...] dont les<br />

arrondis possibles sont 0.142857 142[9 ou 8]<br />

O Rounding := nearest;<br />

O<br />

O<br />

evalf K 1 , evalf C 1 7<br />

7<br />

Rounding := nearest<br />

K0.1428571429, 0.1428571429<br />

Rounding := 0;<br />

evalf K 1 , evalf C 1 7<br />

7<br />

Rounding := 0<br />

K0.1428571428, 0.1428571428<br />

Rounding := N;<br />

(5.7.1)<br />

(5.7.2)<br />

evalf K 1 7<br />

, evalf C 1 7<br />

Rounding := N<br />

K0.1428571428, 0.1428571429<br />

34<br />

(5.7.3)


O<br />

Rounding := KN;<br />

evalf K 1 , evalf C 1 7<br />

7<br />

Rounding := KN<br />

K0.1428571429, 0.1428571428<br />

On restitue la valeur par défaut<br />

O Rounding d nearest :<br />

5.8 Affichage des nombres décimaux [**]<br />

35<br />

(5.7.4)<br />

5.8.1 Nombre de chiffres significatifs affichés [**]<br />

L'affichage des nombres décimaux est piloté par une variable d'interface displayprecision.<br />

Elle vaut -1 par défaut et permet l'adaptation automatique de l'affichage en fonction de la valeur<br />

des nombres (et pas seulement de Digits qui n'intervient que dans les calculs ; voir § 5.2.2).<br />

O interface displayprecision<br />

K1<br />

(5.8.1.1)<br />

Mais on peut forcer un nombre fixe n 2 0, 100 de chiffres affichés. La fonction interface<br />

(displayprecision=n) renvoie la valeur avant la modification, ce qui permet de la mémoriser<br />

simplement (voir ci-dessous dp:=...)<br />

Pour obtenir l'affichage souhaité on peut aussi modifier avant l'ouverture du document les<br />

paramètres de MAPLE par le menu d'initialisation (onglet Precision, Round screen display to ;<br />

voir § 8.3.7). On peut également introduire les commandes interface dans le fichier<br />

d'initialisation de MAPLE (voir § 8.3.8) ou plus simplement encore dans le Startup code de la<br />

feuille de calcul (voir § 8.4.3).<br />

O dp := interface displayprecision = 5 ;<br />

X := 1.2345678901234567890;<br />

Y := X;<br />

X<br />

Z :=<br />

7. 10 10 dp := K1<br />

X := 1.23457<br />

Y := 1.23457<br />

Z := 1.76367 10 -11<br />

(5.8.1.2)<br />

Cette modification ne concerne que l'affichage et le retour au mode automatique montre bien<br />

que les nombres ne sont pas modifiés. Le nombre Z résulte d'un calcul et ne possède donc que<br />

Digits=10 chiffres significatifs (voir § 5.2.2).<br />

O<br />

interface displayprecision = dp ;<br />

X;<br />

Y;<br />

Z<br />

5<br />

1.2345678901234567890<br />

1.2345678901234567890<br />

1.763668415 10 -11<br />

(5.8.1.3)<br />

Il est déconseillé de faire l'opération dans le sens d'une réduction comme précédemment (=5) et<br />

on préférera toujours choisir displayprecision>Digits...<br />

O Digits;


O<br />

interface displayprecision = 25 :<br />

X;<br />

Z<br />

10<br />

1.2345678901234567890<br />

1.763668415 10 -11<br />

(5.8.1.4)<br />

mais finalement la meilleure solution, sauf besoins particuliers, est encore de conserver le mode<br />

automatique -1<br />

O interface displayprecision = dp :<br />

5.8.2 Affichages spéciaux [***]<br />

Dans le menu général de MAPLE on trouvera aussi, pour des situations particulières, l'item<br />

Format/Numeric Formating... qui ouvre une fenêtre permettant de choisir certains modes<br />

d'affichage des résultats numériques. On notera que<br />

- ces modes d'affichage peuvent s'appliquer aussi aux entiers si la case Apply to Integer<br />

[Appliquer aux entiers] est cochée.<br />

- le séparateur décimal n'est plus "." mais ","<br />

- le mode peut s'appliquer sur un résultat déjà affiché sans avoir à relancer le calcul. On<br />

clique quelque part dans le groupe d'exécution, on fixe avec le menu le mode et l'affichage des<br />

résultats est modifié.<br />

- quand un mode est fixé il se conserve pour les affichages suivants, mais chaque groupe<br />

conserve son mode.<br />

- quand un tel mode est actif, une icône s'affiche à gauche de chaque groupe d'exécution.<br />

Elle n'apparaît que sur la feuille de calcul (si l'option Markers[Balises] dans le menu View<br />

[Affichage] de MAPLE est cochée), mais pas sur le document imprimé, d'où son absence ici.<br />

On en donne seulement trois exemples:<br />

- Fixed, Decimal places = 3, la case Apply to Integer est cochée<br />

O X;<br />

Z;<br />

1234567890<br />

1,235<br />

,000<br />

1234567890,000<br />

(5.8.2.1)<br />

- Scientific, Decimal places = 5, Minimum Exponent Digits = 2, Show + pour les<br />

exposants positifs ou nuls, la case Apply to Integer est décochée.<br />

O<br />

X;<br />

Z;<br />

1234567890<br />

1,23457 # 10 C 00<br />

1,76367 # 10 - 11<br />

1234567890<br />

(5.8.2.2)<br />

- Custom[Personnalisé] avec une chaîne fixant le format. Pour plus d'information sur ce<br />

mode, voir l'aide en ligne<br />

O ?worksheet/expressions/numericformatting<br />

Conseil : il est recommandé d'essayer la chaîne sur une feuille MAPLE séparée si on n'est pas<br />

36


sûr de soi...<br />

Exercice[***] : quelle chaîne peut produire un tel format d'affichage !?<br />

O<br />

e K100.0 , ln 12.56 , 1.0 10 12 ,Kevalf e<br />

Petit, Moyen, Grand, KPetit<br />

1 p<br />

4<br />

(5.8.2.3)<br />

O<br />

O<br />

- None revient à l'affichage standard.<br />

X, Z<br />

1.2345678901234567890, 1.763668415 10 -11<br />

5.9 A propos du point décimal et de l'opérateur "." [**]<br />

On a vu que laisser le point décimal seul devant e ou E engendrait une erreur (voir § 5).<br />

O 2.e6;<br />

Error, missing operator or `;`<br />

O 2.e6<br />

Error, incorrect syntax in parse: missing operator or `;`<br />

(near 5th character of parsed string)<br />

2.e6<br />

La raison vient de ce que "." peut être compris par MAPLE, contrairement à "∗", comme un<br />

opérateur de multiplication non commutatif<br />

O y*x-x*y;<br />

y.x-x.y;<br />

y$x K x$y;<br />

y.xKx.y;<br />

0<br />

y.x K x.y<br />

0<br />

y.x K x.y<br />

(5.9.2)<br />

Lorsqu'il peut exister une ambiguïté le "." doit être obligatoirement précédé d'un espace pour être<br />

compris comme opérateur de multiplication<br />

O 4.5 , 4 .5 , 4 . 5;<br />

4.5, 20, 20<br />

(5.9.3)<br />

O 4.5 , 4 .5 , 4 . 5;<br />

Error, missing operation<br />

4.5 , 4 .5 , 4 . 5;<br />

O 4 . 5<br />

4.5<br />

(5.9.4)<br />

Ici MAPLE comprend "45 × 0.". On se doute qu'une telle faute de frappe peut avoir des<br />

conséquences redoutables dans une expression plus compliquée !<br />

O 45 .0e6;<br />

0.<br />

(5.9.5)<br />

O 45 .0e6<br />

Error, missing operation<br />

45 .0e6<br />

Maintenant MAPLE détecte une erreur<br />

O 45. 0e6;<br />

Error, unexpected real number<br />

37<br />

(5.8.2.4)<br />

(5.9.1)


L'effet peut aussi se produire avec une césure lors d'un retour à la ligne . Dans cet exemple on a fait<br />

suivre le chiffre 1 de Shift-Return, provoquant ainsi une césure volontaire. MAPLE calcule alors<br />

cos(1×0.0).<br />

O<br />

cos(1.0e0); cos(1<br />

.0e0);<br />

0.5403023059<br />

1.<br />

O e ip K 3j C I<br />

K1 K 2 I<br />

Bien sûr, entrer i ou j au clavier ne fonctionne pas<br />

38<br />

(5.9.6)<br />

On ne saurait trop recommander de réserver l'usage de cet opérateur aux seules opérations non<br />

commutatives comme par exemple les produits de matrices (voir Ch. 4, Vecteurs, Matrices et<br />

Algèbre linéaire).<br />

6 Nombres complexes<br />

Les nombres complexes, mis sous une forme algébrique, s'écrivent a C b$I. Le symbole prédéfini I<br />

désigne<br />

K1 (voir Ch. 2, § 2.2.3). Noter la majuscule obligatoire pour I pour une entrée au clavier.<br />

1<br />

2 ;<br />

O sqrt K1 , K1 , K1<br />

z d 3 C 2$I<br />

I, I, I<br />

z := 3 C 2 I<br />

(6.1)<br />

Ce symbole est protégé contre toute assignation. En réalité, MAPLE ne le considère pas comme un<br />

nom, mais comme un nombre (voir également Ch. 2, § 1.4)<br />

O I := 3<br />

Error, illegal use of an object as a name<br />

I := 3<br />

Remarques :<br />

a) Le symbole I peut être introduit dans les commandes avec "i", "j" ou "I" de la palette "Symboles<br />

courants". En réponse le symbole sera néanmoins I. On utilisera souvent dans ce manuel le "i" de la<br />

palette.<br />

(6.2)<br />

O e ip K 3 j C 1<br />

e ip K 3 j C 1<br />

(6.3)<br />

b) [**] La notation I n'est pas figée. On peut la changer en utilisant la commande suivante et en<br />

choisissant une autre lettre (ici i) ou un nom quelconque valide comme par exemple j ou Img (éviter Im<br />

qui est le nom de la fonction d'extraction de la partie imaginaire). La réponse qu'afficherait la commande<br />

suivante correspondrait au symbole utilisé avant le changement (ici I).<br />

> interface(imaginaryunit=i)<br />

Le nom i deviendrait protégé et on ne pourrait plus lui assigner une valeur (i.e. i:=2 deviendrait interdit ;<br />

voir aussi Ch. 2 § 4) ou l'utiliser pour indexer une boucle. Réciproquement I deviendrait un nom<br />

ordinaire. Ce changement ne vaudrait que pour la session en cours ou serait annulé après un ordre<br />

restart (voir § 8.3.4, § 8.3.8 et § 8.4.3).<br />

Si la partie réelle ou complexe est sous la forme décimale, les deux parties sont automatiquement<br />

converties dans ce mode. Ici l'expression e ip /2 est évaluée symboliquement et vaut donc exactement


K1/2, mais elle est ensuite convertie en K0.50... en raison de la présence du décimal 3.0. Inversement<br />

pour Y.<br />

O<br />

X d 3.0 C<br />

Y d 3 2<br />

C 1.$ i;<br />

X<br />

e i$p<br />

2 $ I;<br />

:= 3.0 K 0.5000000000 I<br />

Y := 1.500000000 C 1. I<br />

(6.4)<br />

Les décimaux d'un nombre complexe peuvent aussi être du type "hardware floating number" décrits<br />

au § 5.2.3.1.<br />

O<br />

X := HFloat 3.0 C eip<br />

2 $i ;<br />

type X, complex sfloat ; # voir Ch. 2, § 3.xxx<br />

type X, complex hfloat<br />

X := 3. K 0.500000000000000 I<br />

false<br />

true<br />

Les restrictions sont les mêmes que pour les décimaux réels.<br />

3<br />

O HFloat<br />

2 C 2 I<br />

Error, invalid argument for HFloat constructor<br />

et il suffit donc d'écrire, par exemple,<br />

Les arguments et les images des fonctions numériques de MAPLE ne sont pas restreintes aux<br />

réels (se reporter sinon à la bibliothèque RealDomain, § 8.3.5-d). On peut demander d'évaluer une<br />

expression complexe sous sa forme algébrique a + b*I avec la fonction evalc (evaluate as complex)<br />

39<br />

(6.5)<br />

3.<br />

O HFloat<br />

2 C 2 I 1.50000000000000 C 2. I<br />

(6.6)<br />

On sera aussi attentif à utiliser une précision suffisante pour les nombres introduits comme argument de<br />

HFloat (§ 5.2.3.1, § 5.2.3.2).<br />

Un nombre qui possède une partie imaginaire décimale nulle reste sous sa forme complexe, mais<br />

on pourra utiliser simplify pour éliminer ce terme. Ce comportement est délibéré et n'est pas une<br />

anomalie de fonctionnement (homogénéité des types pour les calculs numériques). Mieux, il n'est en<br />

général pas souhaitable de faire cette simplification tant que des calculs numériques sont en cours (voir<br />

la fonction fnormal au § 7.3 et l'exercice 3.3.1 à propos de la matrice des vecteurs propres ; voir aussi<br />

au Ch. 2, § 3.3.2.4 le type embedded_real).<br />

O<br />

X := 3 C 0. I;<br />

Y := 3. C 0 I;<br />

X K Y;<br />

simplify X<br />

X := 3. C 0. I<br />

Y := 3.<br />

0. C 0. I<br />

3.<br />

(6.7)


O z; c :=Ke z ; # ou c dQ exp z<br />

3 C 2 I<br />

c := Ke 3 C 2 I<br />

O evalc c ;<br />

evalc ln z<br />

Ke 3 cos 2 K I e 3 sin 2<br />

1<br />

2 ln 13 C I arctan 2 3<br />

1<br />

O Q d evalc<br />

K2 C I<br />

Q := 1 K4 C 2 5 5 K 1 10<br />

10 I 4 C 2 5 5<br />

On peut également demander une approximation décimale<br />

O evalf Q<br />

0.1536450380 K 0.6508508258 I<br />

Bien sûr, une représentation algébrique symbolique n'est pas toujours possible<br />

O ?evalc/functions<br />

mais une représentation décimale peut être calculée avec le nombre de chiffres significatifs souhaités.<br />

O<br />

evalc z z C 1 ;<br />

evalf 20<br />

z z C 1<br />

z 4 C 2 I<br />

0.99793259523003576331 K 0.071461016424093086313 I<br />

(6.8)<br />

(6.9)<br />

(6.10)<br />

(6.11)<br />

(6.12)<br />

Important<br />

Quand evalc rencontre des variables indéfinies (ici u et v) il les considère toujours comme des<br />

quantités réelles<br />

O evalc cos u C I$v<br />

cos u cosh v K I sin u sinh v (6.13)<br />

On peut extraire les parties réelles et imaginaires avec<br />

O Re c , Im e Kz2 Ke 3 cos 2 , Ke K5 sin 12<br />

On pourra aussi utiliser les symboles de la palette "Symboles courants"<br />

(6.14)<br />

O R c , I e Kz2 Ke 3 cos 2 , Ke K5 sin 12<br />

(6.15)<br />

Contrairement à evalc, R et I ne considèrent pas par défaut les variables inconnues comme réelles<br />

O R cos u C I$v , I cos u C I$v<br />

R cos u C I v , I cos u C I v<br />

(6.16)<br />

Exercice : interpréter ces deux résultats<br />

O<br />

I 1 C I e Kt2<br />

40<br />

(6.17)


R e Kt2<br />

(6.17)<br />

O<br />

R 1 C I e Kt2<br />

1 K I e Kt2<br />

(6.18)<br />

Exercice : comparer avec (6.16) et expliquer<br />

O evalc R cos u C I$v , evalc I cos u C I$v<br />

cos u cosh v , Ksin u sinh v<br />

O<br />

On peut aussi chercher la représentation polaire d'un nombre<br />

polar c ; polar s ; polar Q<br />

polar e 3 , 2 K p<br />

polar s , argument s<br />

1<br />

polar<br />

5 53 / 4 4 C 2 5<br />

, Karctan<br />

K4 C 2 5<br />

dans laquelle on reconnaît le module (valeur absolue) et l'argument<br />

O abs c , argument c ;<br />

abs s , argument s ;<br />

abs Q , argument Q ;<br />

(6.19)<br />

(6.20)<br />

e 3 , 2 K p<br />

s , argument s<br />

La valeur absolue peut aussi s'écrire<br />

O c , K2<br />

1<br />

5 53 / 4 , Karctan<br />

e 3 , 2<br />

4 C 2 5<br />

K4 C 2 5<br />

(6.21)<br />

(6.22)<br />

O<br />

On peut donc construire un complexe sous forme algébrique à partir de cette représentation polaire<br />

W := evalc polar x C y,<br />

p<br />

4<br />

W := 1 x C y 2 C 1 (6.23)<br />

2<br />

2 I x C y 2<br />

Attention : dire que x C y est le module de W n'est pas exact. Il faut pour cela faire l'hypothèse que<br />

x R 0 et y R 0 et MAPLE ne s'y trompe pas !<br />

O W<br />

1<br />

x C y 2 C 1 (6.24)<br />

2<br />

2 I x C y 2<br />

Il est possible de faire ce genre d'hypothèses (voir Ch. 13 ; "assuming"="en supposant que")<br />

O W assuming x R 0, y R 0<br />

x C y<br />

(6.25)<br />

Pour obtenir une expression conjuguée on écrira<br />

41


O conjugate c<br />

Ke 3 K 2 I<br />

On peut aussi écrire, en utilisant dans la palette "Accents" le gabarit A (voir § 8.1/10)<br />

O c<br />

Ke 3 K 2 I<br />

O x K y C 1 $c<br />

Ke 3 K 2 I 1 C x K y<br />

(6.26)<br />

(6.27)<br />

(6.28)<br />

Exercice = ici encore, il ne faut pas oublier que MAPLE fait, par defaut (§ 8.3.5), l'hypothèse que les<br />

nombres ∈ C. Expliquer la diférence entre les résultats :<br />

O<br />

O<br />

O<br />

O<br />

W<br />

1<br />

x C y 2 C 1 2<br />

2 I x C y 2<br />

W assuming x T real, y T real<br />

1<br />

x C y 2 K 1 2<br />

2 I x C y 2<br />

(6.29)<br />

(6.30)<br />

On retrouve, comme pour les réels, les mêmes règles générales d'évaluation des expressions quand<br />

les décimaux sont mélangés aux entiers et aux rationnels.<br />

3<br />

O 1 C 2$I K sin<br />

2 C 2.0$I K2.752771340 C 1.743446044 I<br />

(6.31)<br />

Pour le traitement des petites valeurs résiduelles dans un calcul voir la fonction fnormal au § 7.3<br />

e KI p ;<br />

E := e K1.0 I p<br />

evalc E ;<br />

evalf E<br />

K1<br />

E := e K1.0 I p<br />

K1<br />

K1. C 4.102067615 10 -10 I<br />

(6.32)<br />

(6.33)<br />

O<br />

Le "signe" d'un nombre est donné par la fonction signum définie par signum x = x x<br />

x réels la réponse ne peut être que ±1<br />

O signum K3 , signum 3K p , signum K3.256e3<br />

K1, 1, K1<br />

Pour les complexes, il va bien sûr différemment en raison de la définition de la fonction<br />

x dK1 C I$ 2 ;<br />

x ;<br />

signum x<br />

x := K1 C I 2<br />

3<br />

. Pour les<br />

(6.34)<br />

42 (6.35)


1<br />

K1 C I 2 3<br />

(6.35)<br />

3<br />

Il existe aussi une fonction, csgn, qui détermine un signe ±1 en fonction de la localisation de l'affixe du<br />

nombre dans le plan complexe. La valeur +1 est attribuée pour les complexes dont la partie réelle est<br />

strictement positive et –1 réciproquement. Pour les imaginaire purs, le signe est simplement celui du<br />

nombre<br />

Q1<br />

I(x)<br />

+1<br />

csgn x<br />

Q1<br />

+1<br />

R(x)<br />

O<br />

(6.36)<br />

0, 0<br />

(6.42)<br />

Il est également possible de fixer ponctuellement cette valeur sans changer la valeur de _Envsignum0 et<br />

en utilisant une syntaxe à trois arguments, le premier étant obligatoirement mis à 0<br />

O<br />

csgn K3 , csgn ln 3<br />

K1, 1<br />

O csgn 1K2$I , csgn K1 C 2 I<br />

1, K1<br />

(6.37)<br />

O csgn 2$ I , csgn K3$ I<br />

1, K1<br />

(6.38)<br />

Aussi bien pour signum que pour csgn, la valeur en 0 est définie par la variable d'environnement<br />

_Envsignum0. Elle est non assignée par défaut<br />

O _Envsignum0<br />

_Envsignum0<br />

(6.39)<br />

et le "signe" prend alors la valeur 0<br />

O signum 0 , csgn 0<br />

0, 0<br />

(6.40)<br />

Pour convenance ou pour l'homogénéité de certains calculs, on peut vouloir choisir la valeur prise en 0<br />

en assignant une valeur quelconque à cette variable<br />

O _Envsignum0 dK1 :<br />

signum 0 , csgn 0<br />

K1, K1<br />

(6.41)<br />

Pour revenir à la valeur par défaut, il suffira de "désassigner" cette variable (voir Ch. 2, § 1.2)<br />

O _Envsignum0 d'_Envsignum0':<br />

signum 0 , csgn 0<br />

csgn 0, cos<br />

p<br />

2<br />

,C 1 , csgn 0, sin p ,K1 , csgn 0, cos<br />

signum 0, sin p ,C 1 , signum 0, cos<br />

p<br />

2<br />

p<br />

2<br />

,K1 , signum 0, cos<br />

, 0 ;<br />

p<br />

2<br />

, 0 ;<br />

43<br />

(6.43)


1, K1, 0<br />

1, K1, 0<br />

(6.43)<br />

Les fonctions signum et csgn sont formellement dérivables et prennent la notation suivante (la dérivée<br />

n-ième se ramème à la dérivée première)<br />

d<br />

O<br />

d t csgn t , d 2<br />

d t 2 signum t , csgn 3, t<br />

csgn 1, t , signum 1, t , csgn 1, t<br />

(6.44)<br />

Par extention de la notation, à la valeur 0 correspond la fonction elle-même, d'où l'origine de la notation<br />

à trois arguments qui permet de lever toute ambiguïté.<br />

O csgn 0, t , signum 0, t<br />

csgn t , signum t<br />

(6.45)<br />

On trouvera des informations complémentaires sur les nombres complexes au Ch. 2, § 2.3.4.<br />

7 Divers<br />

7.1 Autres fonctionalités de MAPLE à propos des nombres<br />

MAPLE révèle encore de nombreuses ressources que l'on ne pourra pas toutes présenter!<br />

O convert MDXV, arabic<br />

1515<br />

(7.1.1)<br />

O convert 3.265, binary , convert 207, octal<br />

11.01000011, 317<br />

(7.1.2)<br />

Corps p-adiques Q p<br />

(décomposition canonique de Hensel de K3 en diadique ; attention : Digitsp)<br />

O Digitsp d 8 : padic evalp K3, 2<br />

1 C 2 2 C 2 3 C 2 4 C 2 5 C 2 6 C 2 7 C 2 8 C O 2 9<br />

Nombres de Bernoulli, d'Euler, de Mersenne, de Bell, pseudo-aléatoires...<br />

O bernoulli 2 5 , euler 10 , numtheory mersenne 7 , combinat bell 5 , rand<br />

K 7709321041217 , K50521, 524287, 52, 395718860534<br />

510<br />

Pour plus d'informations sur les calculs avec unités physiques (voir Ch. 13).<br />

O simplify 3.0 mile 2 2<br />

C 4.5 ft K 2 m<br />

2<br />

2787.465291 m<br />

(7.1.5)<br />

MAPLE possède une vaste base de donnée de constantes physico-chimiques (m e<br />

désigne ici la<br />

masse de l'électron ; voir Ch. 13)<br />

O m e<br />

:= evalf ScientificConstants:-Constant 'm e<br />

', system = CGS, units<br />

m e<br />

:= 9.109381882 10 -28<br />

ainsi que bien d'autres possibilités...<br />

O Sockets:-Address "www.obs.u-bordeaux1.fr"<br />

"147.210.44.105"<br />

O cat `En l'an de grâce ` ,<br />

convert parse StringTools:-FormatTime "%Y" , roman ,<br />

", le logiciel MAPLE 14..."<br />

En l'an de grâce MMXI, le logiciel MAPLE 14...<br />

44<br />

g<br />

(7.1.3)<br />

(7.1.4)<br />

(7.1.6)<br />

(7.1.7)<br />

(7.1.8)


O<br />

3 p Ke<br />

On complètera ces informations très succintes avec l'aide en ligne.<br />

O ?identify<br />

(7.2.1)<br />

1<br />

(7.2.2)<br />

3 C 2 p<br />

Ce résultat conforte notre intuition et tend à montrer que nos calculs pourraient peut-être avoir un<br />

résultat symbolique exact, ce qui reste à vérifier.<br />

Attention à un mythe très répandu parmi certains étudiants: tout problème<br />

mathématique formulé exactement n'a pas nécessairement, si elle existe, sa (ou toutes ses) solution<br />

exprimable exactement en termes de combinaisons de symboles connus (entiers, rationnels,<br />

radicaux, constantes spéciales connues, valeurs de fonctions élémentaires ou spéciales, etc. comme<br />

ci-dessus). Par exemple la solution d'une équation aussi simple que cos x = x est réputée pour ne<br />

pas être exprimable exactement... Seule une forme numérique, aussi précise que l'on souhaite, peut<br />

être obtenue : x = 0.7390851332... (voir Ch. 14). Nombre d'intégrales, de solutions d'équations<br />

différentielles, etc. ne peuvent être calculées que numériquement.<br />

Si le résultat renvoyé est le nombre lui-même, aucune identification n'a été obtenue. Mais une<br />

réponse négative n'est pas absolue<br />

O identify 2.599079725<br />

2.599079725<br />

(7.2.3)<br />

Il existe en effet une infinité de combinaisons possibles et il peut être nécessaire d'aider identify en<br />

lui communiquant notre intuition.<br />

O<br />

restart # voir § 8.3.4<br />

7.2 Identification des nombres décimaux [*]<br />

Supposons qu'après de laborieux calculs numériques d'intégrales, de résolutions d'équations ou<br />

autres, nous ayons obtenu la valeur suivante<br />

O x := 3.878241035<br />

x := 3.878241035<br />

On suspecte néanmoins que tous nos calculs pourraient avoir pour résultat une valeur symbolique<br />

exacte qu'on a pas sû calculer. La fonction identify peut nous donner une indication sur la validité<br />

de notre intuition. Evidemment cette identification n'a de sens que dans la limite de la précision du<br />

nombre décimal proposé (voir exercice 6.6 ou la fin de 6.7.4).<br />

O identify x<br />

identify 2.599079725, BasisSumConst = 1, p, p , ln 2 ,e, ln p<br />

(7.2.4)<br />

7.3 Fonction fnormal : troncature des nombres décimaux et<br />

complexes et valeurs assimilables à 0 [**]<br />

Cette fonction trouve ses applications notamment avec les calculs numériques (voir par exemple<br />

l'exercice 3.3). Appliquée sur un nombre x, fnormal(x,n,ϵ) effectue une troncature de x pour<br />

conserver n chiffres significatifs avec calcul de l'arrondi sur le dernier chiffre (calculé suivant la<br />

valeur de Rounding, voir § 5.7).<br />

O x d 1.234567890123456789e-10;<br />

y d fnormal x, 6, 1e-11 # Pour e = 1e-11, voir 7.3.3<br />

x := 1.234567890123456789 10 -10<br />

45<br />

(7.3.1)


y := 1.23457 10 -10<br />

Ceci est indépendant de la valeur de Digits (voir § 5.2.2)<br />

O Digits;<br />

x, y;<br />

O<br />

x<br />

2 , y<br />

2<br />

10<br />

1.234567890123456789 10 -10 , 1.23457 10 -10<br />

6.172839450 10 -11 , 6.172850000 10 -11<br />

Si |x| < ϵ (e doit toujours être > 0) , fnormal renvoie la valeur 0 (pour –0., voir § 5.6).<br />

fnormal x, 6, 1. 10 -10 ,<br />

x<br />

fnormal<br />

2 , 6, 1. 10-10 ,<br />

(7.3.1)<br />

(7.3.2)<br />

fnormal K x 2 , 6, 1. 10-10 1.23457 10 -10 , 0., K0.<br />

Si l'argument ϵ est absent le mécanisme s'applique néanmoins pour e = 10 Kn C 2 .<br />

O fnormal x, 12 , #` ` 0 e = 10^ K12 C 2 = 10^ K10<br />

fnormal x, 11 #` ` 0 e = 10^ K11 C 2 = 10^ K9<br />

1.23456789012 10 -10 , 0.<br />

Si seul x est présent, alors n = Digits et e = 10 KDigits C 2 .<br />

O fnormal x , #` ` 0 e = 10^ KDigits C 2 = 10^ K8<br />

fnormal 10$x ,<br />

fnormal 100$x<br />

0., 0., 1.234567890 10 -8<br />

(7.3.3)<br />

(7.3.4)<br />

(7.3.5)<br />

Appliquée à une expression, la fonction agit sur tous les nombres (non symboliques).<br />

O<br />

a d p$ 1.23456789012356e-2 C 1.2345e-4$i $t C<br />

exp K0.1234567890123e-4$ p 5 $t 2 ;<br />

fnormal a, 3, 1e-5 ;<br />

a := 0.0123456789012356 C 0.00012345 I p t C e K0.00001234567890123 p5 / 2 t 2<br />

0.0123 C 0.000123 I p t C e K0.0000123 p5 / 2 t 2<br />

(7.3.6)<br />

Attention : il faut rester prudent car cette opération peut changer une expression, soit en supprimant<br />

des termes, soit en changeant leur nature.<br />

O fnormal a, 6<br />

0.0123457 C 0.00012345 I p t C 1.<br />

(7.3.7)<br />

Exercice : comparer avec le résultat précédent et expliquer...<br />

O fnormal evalf a , 6<br />

K0.000215968 t2<br />

0.0387851 C 0.000387830 I t C e<br />

(7.3.8)<br />

46


Un nombre complexe pour lequel la partie imaginaire est considérée comme nulle par fnormal<br />

conserve sa forme complexe A+0.*I (voir § 6).<br />

O fnormal a, 5<br />

0.012346 C 0. I p t C 1.<br />

(7.3.9)<br />

8 A propos du fonctionnement de MAPLE<br />

8.1 Syntaxe des noms et des expressions<br />

1) Les noms dans MAPLE créés par l'utilisateur (noms de variables, d'expressions, de<br />

fonctions, etc.) doivent commencer par une lettre, mais peuvent contenir des chiffres ainsi que le<br />

caractère de soulignement "_" (voir aussi l'alinéa 9 de ce paragraphe). En mode "Entrée Math 2_D"<br />

on obtiendra "_" en composant successivement "\" puis "_", le caractère "_" utilisé seul provoquant<br />

une écriture en indice (voir alinéa 6 dans ce paragraphe).<br />

2) En mode "Entrée Math 1_D" les caractères d'espacement sont autorisés pour séparer les<br />

éléments d'une commande afin d'améliorer la présentation, mais ils ne sont pas admis dans l'écriture<br />

d'un nombre ou d'un nom (voir cependant Ch. 18, le § Symboles et chaînes de caractères). En<br />

mode "Entrée Math 2_D" la règle est la même, sauf que les produits, tel a x, peuvent s'écrire avec la<br />

touche "*" ou la touche "espace". Ne rien écrire entre a et x revient à créer le nom ax et ne pas<br />

insérer d'espace (ou "*") entre b et x 2 revient à créer le nom bx élevé au carré.<br />

3) MAPLE fait la distinction entre majuscules et minuscules (on dit en termes de typographie<br />

"sensible à la casse"). Ainsi le nom a_1b est différent de A_1b ou de a_1B. On pourra même<br />

rencontrer une distinction entre écriture "droite" et "italique". Par exemple i (ou j ou I) pris dans la<br />

palette "Symboles courants" (voir alinéa 10) se distingue de i écrit au clavier : le premier correspond<br />

au symbole des imaginaires et s'affichera I dans les résultats, le second est un simple nom qui<br />

restera sous la forme i. On rappelle que pour entrer le symbole des imaginaires au clavier on utilise<br />

le I majuscule (§ )<br />

4) On peut aussi créer des noms commençant par un "_", mais ceci est très vivement déconseillé<br />

car MAPLE génère lui-même de tels noms de façon automatique (constantes d'intégration d'une<br />

équation différentielle par exemple) ou sont réservés à des noms particuliers comme ceux des<br />

variables d'environnement (_Envxxx). Même si généralement MAPLE l'en protège, l'utilisateur qui<br />

utiliserait cette syntaxe sans précaution risque de subir les conséquences d'interférences difficiles,<br />

voire très difficiles à détecter dans certains cas.<br />

5) S'ils sont correctement orthographiés, les noms de variables grecs tels alpha, beta, theta, phi,<br />

rho, etc. seront affichés avec l'alphabet grec. Si seule la première lettre est une majuscule la lettre<br />

grecque sera majuscule à l'exception de Pi qui s'affichera π et désignera le nombre lui même alors<br />

que pi ne désignera que la lettre mais s'affichera de façon identique (§ 4.1). Ceci explique<br />

pourquoi PiK pi 0 p K p s 0. Pour écrire Π écrire PI.<br />

O restart<br />

O alpha K beta K PiC pi;<br />

cos Pi , cos pi ;<br />

PsiK Phi K PI;<br />

a K b K p C p<br />

47<br />

(8.1.1)


O<br />

O<br />

48<br />

(8.1.1)<br />

O<br />

K1<br />

(8.1.2)<br />

On pourra aussi utiliser la palette de l'alphabet grec ("Grecque" dans la colonne latérale de la fenêtre<br />

MAPLE ; voir alinéa 10) de ce paragraphe).<br />

O<br />

e ip<br />

a K b K 4;<br />

Y K F K P<br />

K1, cos p<br />

Y K F K P<br />

a K b K 4<br />

Y K F K P<br />

Attention : au nom phi correspond f et non ϕ. Les lettres f et ϕ correspondent à des noms<br />

différents.<br />

O f K f;<br />

f K 4<br />

0<br />

f K 4<br />

De même avec ϵ et ε, ρ et ϱ, θ et ϑ et σ et ς<br />

e K e ;<br />

r K 9 ;<br />

q K w ;<br />

s K 2<br />

e K e<br />

r K 9<br />

q K w<br />

s K 2<br />

(8.1.3)<br />

(8.1.4)<br />

(8.1.5)<br />

[***] Il est possible, en utilisant une construction façon HTML, de créer en mode "Math 1-D" ces<br />

caractères, mais leur utilisation devient vite pénible... Néanmoins, en mode programmation cela peut<br />

s'avérer utile, voire nécessaire dans les zones d'édition de code. Pour l'utilisation de l'écriture `...`,<br />

voir alinéa 9.<br />

O<br />

phi;<br />

`&varphi;`;<br />

f<br />

4<br />

(8.1.6)<br />

O `&vartheta;` - theta;<br />

w K q<br />

(8.1.7)<br />

Attention : certaines lettres grecques majuscules peuvent produire un affichage ambigu (les lettres<br />

grecques ne sont pas affichées en italique). La première lettre de la première commande est "α<br />

majuscule" prise dans la palette "Grecque" et la deuxième, entrée au clavier, est un A majuscule. La<br />

deuxième commande est "Omicron – O" alors que la troisième est "O – O"<br />

A K A;<br />

O K O;<br />

O K O<br />

A K A<br />

O K O<br />

(8.1.8)


0<br />

En mode "Entrée Math 1-D" la transcription des symboles usuels pris dans les palettes sera<br />

automatique (p donnera Pi et e donnera exp(1)). En mode "Entrée Math 2-D" on pourra<br />

rencontrer quelques ambiguïtés et il faut savoir que les lettres puisées dans ces palettes font<br />

référence prioritairement aux notations standard utilisées pour désigner les constantes ou les<br />

fonctions habituelles<br />

O<br />

O<br />

cos p , cos Pi , cos pi # voir § 4.1<br />

K1, K1, cos p<br />

G 1 , GAMMA 1 1<br />

, Gamma<br />

2<br />

2<br />

2<br />

# voir § 4.1<br />

(8.1.8)<br />

(8.1.9)<br />

p , p , G 1 (8.1.10)<br />

2<br />

Ici le premier e est puisé dans la palette "Symboles courants" alors que le deuxième est entré au<br />

clavier et ne fait référence qu'à un nom<br />

O evalf e , evalf e<br />

2.718281828, e<br />

De même la fonction exponentielle peut s'écrire de façon équivalente sous les deux formes, e étant<br />

pris dans la palette.<br />

O exp x , e x<br />

e x , e x<br />

Ici Zeta désigne la fonction de Riemann alors que zeta est indéfinie<br />

O Zeta 2 , zeta 2<br />

1<br />

6 p2 , z 2<br />

A la lettre prise dans la palette correspond la fonction<br />

O z 2<br />

1<br />

6 p2<br />

(8.1.11)<br />

(8.1.12)<br />

(8.1.13)<br />

(8.1.14)<br />

6) [*] En mode "Entrée Maple 1-D" on peut créer des noms indicées à l'aide de crochets.<br />

Cependant cette écriture représente une opération particulière et réclame quelques précautions (voir a<br />

et Ch. 3, 4 et 5).<br />

O<br />

Phi[mu+j]:=rho*alpha[mu]*cos(theta[mu+j]);<br />

F µ C j<br />

:= r a µ<br />

cos q µ C j<br />

(8.1.15)<br />

En mode "Entrée Maple 2-D" les noms indicées peuvent prendre deux significations distinctes :<br />

a) Les nom indicées en tant que composantes d'un objet comme une suite, un vecteur, une<br />

matrice, une table, etc. Pour obtenir cette écriture indicée on pourra utiliser soit les crochets (comme<br />

ci-dessus), soit le gabarit a n<br />

de la palette "Expressions" (attention : pas le gabarit a )<br />

), soit faire<br />

précéder l'écriture des indices par le caractère "_" (voir § 8.1/1). Pour sortir du mode indice on<br />

utilisera la touche "→" (pour le mode exposant, utiliser "^").<br />

O<br />

L i C j<br />

d re q cos f i , j<br />

L i C j<br />

:= r e q cos f i, j<br />

(8.1.16)<br />

Par exemple, considérons une suite s. On pourra extraire les éléments de cette suite avec cette<br />

49


écriture indicée<br />

O<br />

s d a, 0, Z, 1, x 2 C 1;<br />

s 2<br />

, s 5<br />

s := a, 0, Z, 1, x 2 C 1<br />

ou bien avec des crochets<br />

O s 1 , s 3<br />

O<br />

O<br />

O<br />

O<br />

second (b).<br />

O k B<br />

d 1.3806504e-23;<br />

O<br />

0, x 2 C 1<br />

(8.1.17)<br />

a, Z<br />

(8.1.18)<br />

Cette écriture réclame quelques précautions en raison d'un conflit entre la notion de nom de variable<br />

libre et nom de table (voir Ch. 5). En effet, l'assignation à un nom indicé, tel L i C j<br />

:=... (ou<br />

Phi mu C j :=), a créé automatiquement une table de nom Λ contenant un seul élément L i C j<br />

. De<br />

même les deux assignations suivantes créent une table de nom l à deux éléments l 0<br />

et l max<br />

:<br />

l 0<br />

d 2 : l max<br />

d 5 :<br />

l 0<br />

, l max<br />

2, 5<br />

eval l ;<br />

eval L<br />

table 0 = 2, max = 5<br />

(8.1.19)<br />

table i C j = r e q cos f i, j<br />

(8.1.20)<br />

Mais une assignation à λ entraîne automatiquement la destruction de la table et λ redevient un nom<br />

de variable ordinaire.<br />

l d 3;<br />

l 0<br />

, l max<br />

l := 3<br />

3 0<br />

, 3 max<br />

b) Les noms pour lesquels l'indice a une fonction purement mnémotechnique (B dans<br />

l'exemple suivant évoque "Boltzmann"). L'indice n'est plus une "variable" susceptible de prendre<br />

plusieurs "valeurs" (noms, nombres, expressions) comme précédemment. Pour obtenir cette<br />

écriture on utilisera le gabarit a )<br />

de la palette "Expressions" ou son "raccourci clavier" (pas le<br />

gabarit a n<br />

).<br />

Attention : les deux écritures peuvent s'afficher de façon strictement identique (avec ou non des<br />

couleurs différentes), mais n'ont aucun rapport entre elles : ici k B<br />

est du premier type (a) et k B<br />

du<br />

k B<br />

:= 1.3806504 10 -23<br />

k B<br />

, k B<br />

k B<br />

, 1.3806504 10 -23<br />

(8.1.21)<br />

(8.1.22)<br />

(8.1.23)<br />

Ceci remédie au problème posé par l'écriture a). Si on assigne une valeur à k B<br />

ou à k, l'assignation à<br />

50


k B<br />

n'est plus affectée. Bien que très pratique, voire indispensable dans certaines circonstances (voir<br />

la notion de table au Ch. 5), cette écriture peut être source de confusions. En reprenant la séquence<br />

décrite en a) on pourra comparer les deux comportements. Les assignations µ 0<br />

d 2 et<br />

µ max<br />

d 5 ne créent plus une table de nom µ :<br />

O<br />

O<br />

µ 0<br />

d 2 : µ max<br />

d 5 :<br />

µ 0<br />

, µ max<br />

;<br />

µ d 3;<br />

µ 0<br />

, µ max<br />

2, 5<br />

µ := 3<br />

2, 5<br />

51<br />

(8.1.24)<br />

Ces deux formes de noms indicés n'ont pas le même type (Ch.2, § 3.3.1). En mode "Entrée Maple 1<br />

-D" présenté au début du paragraphe, la variable indicée est du type (a).<br />

7) Un grand nombre de noms sont prédéfinis et protégés contre les assignations (certains,<br />

comme Digits, sont prédéfinis, sans être pour autant protégés). Ici γ est la constante d'Euler-<br />

Mascheroni (voir exercices 2.2) et O (O majuscule entrée au clavier) est réservée pour la syntaxe<br />

des développements en séries (Ch. 11).<br />

p d 3;<br />

z d 1;<br />

g := 3;<br />

O := 1<br />

Error, attempting to assign to `Pi` which is protected<br />

Error, attempting to assign to `Zeta` which is protected<br />

Error, attempting to assign to `gamma` which is protected<br />

Error, attempting to assign to `O` which is protected<br />

Néanmoins... : Ο (omicron majuscule) est ici pris dans la palette "Grecque"<br />

O<br />

Omicron d 1<br />

O d 1<br />

O := 1<br />

O := 1<br />

(8.1.25)<br />

Beaucoup de noms sont aussi réservés par les fonctions (Si = Sinus intégral, Int = Intégrale, D<br />

opérateur de dérivation des fonctions).<br />

O<br />

cos := 3;<br />

Si := 4;<br />

Int := 0;<br />

D := 0<br />

Error, attempting to assign to `cos` which is protected<br />

Error, attempting to assign to `Si` which is protected<br />

Error, attempting to assign to `Int` which is protected<br />

Error, attempting to assign to `D` which is protected<br />

O ?functions/index<br />

Attention : on peut par contre écrire cos(0):=0, ce qui conduirait à des calculs aberrants. Cette<br />

possibilité est délibérée mais évidemment pour des raisons utiles en choisissant un autre exemple !


(voir Ch. 7, § Table remember).<br />

Certains sont des mots réservés, comme ceux utilisés en programmation. Par exemple une boucle de<br />

calcul utilise les mots clé for... from... to... by... do... end do. Comme le dit le message d'erreur,<br />

l'analyseur syntaxique n'attend pas d'assignation après ce mot (la lettre grecque τ s'écrit "tau")<br />

O to:=0;<br />

Error, `:=` unexpected<br />

O tod 0<br />

Error, invalid to part<br />

tod 0<br />

O ?keyword<br />

Enfin il existe des mots clé, comme les noms des types (environ 200 mots) (Ch. 2, § 3.3.1) qui sont<br />

protégés.<br />

O name d 3 ; integer dK3<br />

Error, attempting to assign to `name` which is protected<br />

Error, attempting to assign to `integer` which is protected<br />

O ?type<br />

8) Dans l'écriture habituelle des expressions mathématiques il existe une habitude consacrée par<br />

l'usage qui veut que l'on désigne plutôt par a, b, c, etc. les coefficients d'une formule, par m, n, etc.<br />

des entiers et par x, y, z, u, v, etc. les variables. Quand on lit une expression comme a x n C b x C c<br />

on l'interprètera intuitivement, si aucune information n'est fournie, comme un polynôme de degré n<br />

de la variable x dont les coefficients sont a, b, c, alors que x y n C z y C u sera plutôt vue comme un<br />

polynome de degré n+1 des variables x, y, z et u. Evidemment il n'existe aucune règle de ce genre<br />

avec MAPLE pour qui les deux expressions sont strictement de même nature et ne seront même pas<br />

vues comme des polynômes puisque n n'est pas considéré a priori comme un entier positif ou nul.<br />

On s'apercevra de temps en temps qu'il n'est pas toujours facile de se débarrasser de ses réflexes...<br />

9) [**] Il est possible de créer des noms composés en entourant une suite de caractères par deux<br />

accents graves ` (sur un clavier français on obtient généralement ce caractère seul en apuyant sur la<br />

touche correspondante puis sur "espace"). On constate sur l'exemple suivant que l'on peut ainsi<br />

construire toutes sortes de noms en s'affranchissant des contraintes imposées par l'écriture standard.<br />

O `1Ker a C 2Kieme b` d 4;<br />

p<br />

cos<br />

`1-er a C 2-ieme b`<br />

1-er a C 2-ieme b := 4<br />

1<br />

2<br />

(8.1.26)<br />

2<br />

Cependant cette écriture peut rapidement devenir très lourde ou même confuse comme le montre cet<br />

exemple caricatural...<br />

O<br />

`1` d 2 :<br />

`1C1` = `1` C `1`<br />

1C1 = 4<br />

Un nom créé avec les conventions standard et mis entre ` est identique au nom standard.<br />

O<br />

`Xyz1` d 3;<br />

Xyz1, `Xyz1`<br />

(8.1.27)<br />

52<br />

(8.1.28)


O<br />

Xyz1 := 3<br />

3, 3<br />

53<br />

(8.1.28)<br />

MAPLE utilise cette écriture pour nommer certains objets comme par exemple les fonctions<br />

arithmétiques de sommation, produit ou exponentiation qui peuvent servir à construire des<br />

expressions (voir Ch. 2, § 2.1/1&2&3)<br />

O `C` 1, 2 , `*` 2, x,K1 , `^` 3, n<br />

3, K2 x, 3 n<br />

(8.1.29)<br />

Les commandes suivantes montrent que, comme xYz, `+` est bien un nom (voir la notion de type au<br />

Ch. 2, § 3)<br />

O<br />

type xYz, name , type `C`, name<br />

true, true<br />

alors que le symbole + seul, vu comme un opérateur, provoque une erreur de syntaxe<br />

O type C, name<br />

Error, invalid sum/difference<br />

type C, name<br />

(8.1.30)<br />

Il existe également un "nom vide" défini par deux caractères ` accolés et dit "empty symbol" dont<br />

on trouvera une utilisation au Ch. 2 § 2.4.1/3 à partir de l'exemple de la fonction ifactor. Il est<br />

évidemment vivement déconseillé de l'utiliser sans raison valable (ou de même avec des noms<br />

construits avec des blancs) sous peine de voir s'afficher des bizarreries... (le calcul suivant est<br />

néanmoins juste ; c'est l'affichage qui prête à confusion ! )<br />

O<br />

`` d 3 : ` ` d 4 :<br />

' 2$`` C 3$` ` ' = 2$`` C 3$` `<br />

2 C 3 ` ` = 18<br />

z , `` z # voir en § 8.2/4 pour l'explication de ce curieux résultat<br />

z, 3<br />

(8.1.31)<br />

(8.1.32)<br />

10) Gestions des palettes d'édition. MAPLE dispose de palettes d'édition permettant<br />

d'introduire, dans du texte ou dans des commandes, toutes sortes de caractères en usage en<br />

mathématique ainsi que des gabarits de formules et des termes composés. Il faut savoir que :<br />

a) toutes les palettes ne sont pas affichées par défaut. Pour afficher (ou retirer) une palette il<br />

suffit d'un "clic droit" sur une zone quelconque de la palette qui ne soit pas un élément de celle-ci<br />

puis de choisir "Afficher la palette" qui fait apparaître leur liste complète sur laquelle on fait sa<br />

sélection.<br />

b) les palettes sont déplaçables par un "glisser-déposer" du titre et peuvent être disposées de<br />

part et d'autre de la feuille MAPLE. Elles peuvent être ouvertes ou fermées et/ou totalement<br />

masquées (voir le petits triangles en haut des barres verticales de séparation) ainsi que<br />

redimensionnées.<br />

c) il existe une palette "Favoris" qui peut être remplie par l'utilisateur à sa convenance. Un clic<br />

droit sur un élément choisi et un menu s'ouvre pour demander si on désire le recopier dans la palette<br />

"Favoris".<br />

Des informations supplémentaires (convertion de chaînes de caractères en noms, concaténation<br />

de noms, etc.) seront données au Ch. 18.<br />

8.2 Les "fausses" erreurs de syntaxe<br />

L'analyseur syntaxique de MAPLE détecte certaines erreurs dans la frappe d'une commande


comme par exemple l'oubli ou le surnombre de parenthèses ouvrantes ou fermantes. Il peut<br />

cependant être utile d'être capable de distinguer les erreurs de syntaxes des erreurs de cohérences<br />

(voir Ch.2 , § 1.7). Mais il existe des erreurs assez fréquentes qui ne peuvent pas être détectées car<br />

ce sont des erreurs pour l'utilisateur, mais pas pour MAPLE qui est un calculateur symbolique. En<br />

voici quatre exemples.<br />

1) On a déjà rencontré l'opérateur d'assignation := (§ 1.4). Si l'utilisateur écrit par exemple<br />

O x_min = 2<br />

x_min = 2<br />

(8.2.1)<br />

il aura peut-être voulu assigner le nombre 2 au nom x_min. Il a écrit en réalité une équation dont la<br />

syntaxe est parfaitement correcte (voir Ch. 14). Aucune erreur ne peut donc être signalée et aucune<br />

assignation n'est effectuée.<br />

O x_min<br />

x_min<br />

(8.2.2)<br />

2) On peut faire une erreur dans l'orthographe d'un nom. Par exemple on attend a:=2, mais<br />

O x1 := 1 :<br />

a := X1 C 1<br />

a := X1 C 1<br />

(8.2.3)<br />

Il ne peut pas y avoir d'erreur détectée car X1 est différent de x1. Le nom X1 est alors compris<br />

comme un nouveau nom symbolique de valeur indéfinie.<br />

3) De même, lorsque le nom d'une fonction est mal orthographié, MAPLE se contente de le<br />

renvoyer à l'identique. Il considère cette fonction comme symbolique et non définie et par<br />

conséquent ne signale aucune erreur, ce qui est un comportement normal et même indispensable<br />

pour un calculateur symbolique. Par exemple on obtiendra :<br />

O<br />

3! cosinus p<br />

3<br />

Alors que l'on attend<br />

C 2<br />

2 cosinus p C 2<br />

54<br />

(8.2.4)<br />

3! cos p<br />

O<br />

C 2<br />

3<br />

0<br />

(8.2.5)<br />

Cette erreur est assez fréquente pour des fonctions moins habituelles. Elle est source de confusions,<br />

l'utilisateur non averti cherchant l'erreur ailleurs ou pensant qu'il ne sait pas se servir de la fonction.<br />

Un exemple fréquent est celui des calculs de limites avec la fonction de MAPLE qui s'écrit limit et<br />

non lim comme habituellement : lim e t = 1<br />

t / 0<br />

O lim exp t , t = 0 ;<br />

limit exp t , t = 0<br />

lim e t , t = 0<br />

1<br />

(8.2.6)<br />

Encore une variante avec un L majuscule dont on trouvera l'explication et l'utilité au Ch. 9 : la<br />

fonction est bien comprise, mais aucun calcul n'est effectué<br />

O Limit exp t , t = 0<br />

lim<br />

t/0 et<br />

(8.2.7)


Ceci est aussi vrai pour une fonction dont la syntaxe est correcte mais qui n'est pas automatiquement<br />

accessible par MAPLE au moment de son lancement (voir § 8.3.5).<br />

4) Le terme a x, avec un espace entre a et x, désigne le produit de a par x (voir § 1.1.1.2), alors<br />

que le terme ax désigne un nouveau nom. Si l'erreur saute ici aux yeux, elle peut être beaucoup<br />

moins visible dans une formule complexe.<br />

O<br />

a d 2;<br />

a x;<br />

ax<br />

a := 2<br />

2 x<br />

ax<br />

(8.2.8)<br />

On évitera ce genre d'erreur en utilisant systématiquement la touche "*" (et non "." qui a une autre<br />

signification ; voir § 1.1.1.2) et qui s'affiche sous la forme<br />

O a$x<br />

2 x<br />

(8.2.9)<br />

En mode "Entrée Math 1-D" il n'y a aucune ambiguïté possible<br />

O a*x; ax;<br />

2 x<br />

ax<br />

(8.2.10)<br />

O a x;<br />

Error, missing operator or `;`<br />

Par contre, en mode "Entrée Math 2-D" on peut ne rien écrire entre 3 et x pour écrire 3x. En effet, un<br />

nom de variable ne pouvant pas commencer par un chiffre, il n'y a aucune ambiguïté.<br />

O 3x<br />

3 x<br />

(8.2.11)<br />

Certaines "erreurs" relèvent d'une interprétation, disons... plus subtile. On a ici oublié l'astérisque de<br />

multiplication (commande en mode "Entrée Math-1D") comme on le fait avec une écriture standard<br />

et le résultat est manifestement faux.<br />

O 1+5(3+2);<br />

6<br />

(8.2.12)<br />

En fait, l'expression 5(3+2) est interprétée comme une fonction constante de valeur 5 et d'argument<br />

3+2. D'ailleurs...<br />

O 1+5(x);<br />

6<br />

(8.2.13)<br />

O 1+(1+4)(x);<br />

(8.2.14)<br />

6<br />

Ceci est délibéré et n'est pas considéré par MAPLE comme une erreur.<br />

Par contre l'interprétation est un peu différente en mode "2-D Math Input" [Intertion/Math 2-D]<br />

O 1 C 5 3 C 2<br />

26<br />

O 1 C 5 t<br />

1 C 5 t<br />

Encore que...<br />

O 1 C 4 C 1 3 C 2<br />

6<br />

55<br />

(8.2.15)<br />

(8.2.16)<br />

(8.2.17)


O 1 C 4 C 1 t<br />

6<br />

Comme indiqué au § 1.1.1, un espace entre les parenthèses (ou un point ou un astérisque)<br />

transforme cette interprétation de type "fonction" en un produit.<br />

O 1 C 4 C 1 t<br />

1 C 5 t<br />

Il devrait être possible d'améliorer les choses...!<br />

(8.2.18)<br />

(8.2.19)<br />

Pensez toujours à vérifier la syntaxe de vos commandes et assurez-vous que les fonctions<br />

utilisées sont bien connues de MAPLE (voir § 2-3) avant de vous poser des questions inutiles !<br />

Exercice : interpréter et corriger<br />

4! cos pi<br />

O<br />

C 2<br />

3<br />

8 cos p C 2<br />

(8.2.20)<br />

Exercice : sans rien savoir du calcul des limites, déterminer l'origine de ce message d'erreur et<br />

modifier la commande en conséquence (utiliser le gabarit x<br />

lim / a<br />

f de la palette "Expressions" pour<br />

entrer la formule). Indication : voir § 8.1/7.<br />

O lim<br />

g / 0<br />

eKg $ sin g<br />

g<br />

Error, (in limit) invalid limiting point<br />

8.3 Etats de MAPLE<br />

Au lancement, le programme MAPLE se charge dans la mémoire de la machine : c'est ce qui va<br />

réaliser les opérations de calcul. En même temps une zone mémoire, extensible au fur et à mesure<br />

des besoins, va être créée pour stocker l'environnement propre à l'utilisateur (noms des variables,<br />

expressions, valeurs numériques etc.) pendant la période d'utilisation (appelée session): c'est ce<br />

qu'on appelle le noyau (kernel) ou le serveur.<br />

ATTENTION<br />

L'aspect de la feuille de calcul et l'état interne du noyau de MAPLE sont deux choses distinctes<br />

comme on va le voir sur deux exemples simples. C'est un point capital à comprendre !<br />

8.3.1 Modification et ré-exécution d'une commande<br />

On peut « cliquer » sur une commande déjà calculée, la modifier et presser sur Return pour<br />

l'exécuter à nouveau. Il faut alors faire très attention au fait que les résultats affichés ne sont plus<br />

nécessairement corrects car ceux des autres commandes ne sont pas modifiés en conséquence.<br />

Supposons une feuille de calculs dont les résultats devraient paraître normaux à l'utilisateur (dans<br />

le cas contraire on lui suggère de faire autre chose que d'apprendre à utiliser MAPLE...;-)<br />

O ...<br />

O a := 1<br />

a := 1<br />

(8.3.1.1)<br />

O ...<br />

56


O a C 1<br />

2<br />

(8.3.1.2)<br />

O ...<br />

Maintenant on clique sur la commande > a := 1 , on la modifie en écrivant > a := 2 puis on<br />

l'exécute. La feuille de calcul aura alors l'aspect suivant<br />

O ...<br />

O a := 2<br />

a := 2<br />

(8.3.1.3)<br />

O ...<br />

O a C 1<br />

2<br />

(8.3.1.4)<br />

Tant que la commande > a + 1 n'aura pas été ré-exécutée le résultat affiché ne sera pas modifié.<br />

Si vous sauvez la feuille de calcul telle quelle ou si vous l'imprimez, un doute risque de germer<br />

dans votre esprit : "MAPLE sait-il réellement faire des calculs ?". Cet exemple de principe est<br />

trivial, mais il est loin d'en être toujours ainsi.<br />

L'utilisation du dito (%, %% ou %%%) peut conduire aux mêmes types d'ambiguïtés car ce<br />

symbole désigne le résultat de la dernière opération effectuée chronologiquement et non<br />

nécessairement le résultat de la commande située sur la ligne précédente, ce que l'on a<br />

généralement tendance à penser en lisant les feuilles de calculs (voir § 1.2.3, le résultat (1.2.3.4)).<br />

8.3.2 Ouverture d'une feuille de calcul enregistrée<br />

Lorsque l'on ouvre une feuille de calculs enregistrée, celle-ci s'affiche à l'écran, mais le noyau<br />

(ou kernel, moteur, serveur] de MAPLE est vide. Pour retrouver l'intégralité du noyau il faut<br />

ré-exécuter la totalité des commandes. Ainsi, supposons que la feuille de calcul que l'on vient<br />

de charger se résume à la seule ligne<br />

> a := 2<br />

a:=2<br />

><br />

En entrant directement la commande a + 1 sur le prompt final libre on obtiendra<br />

> a := 2<br />

a:=2<br />

> a C 1<br />

a+1<br />

car 2 n'aura pas été automatiquement assigné à la variable a au chargement de la feuille de calcul.<br />

Pour obtenir 3 il faudra d'abord ré-exécuter : a := 2<br />

Pour exécuter la totalité d'une feuille de calcul on pourra utiliser Edit/Execute/Worksheet<br />

[Edition/Exécuter/Feuille de travail] ou le bouton icône de la barre d'outils (attention : lire<br />

§ 8.3.4).<br />

8.3.3 Arrêt d'un calcul<br />

Pour arrêter un calcul en cours que l'on croit erroné ou qui paraît anormalement long,<br />

utiliser le bouton icône de la barre d'outils. L'effet n'est pas nécessairement immédiat (voire<br />

même interminablement long à venir...!).<br />

8.3.4 L'ordre restart.<br />

Cette commande réinitialise le noyau. On peut recommander d'entrer systématiquement (bien<br />

57


que ce ne soit pas une nécessité absolue), l'ordre restart comme première commande de la<br />

feuille de calcul. Compte tenu de ce qui a été dit précédemment on peut comprendre qu'elle<br />

puisse être placée et exécutée n'importe où dans la feuille et les commandes ré-exécutées à partir<br />

du début. Mais vous risquez alors de repasser sur l'ordre restart par inadvertance et ainsi vider<br />

malencontreusement le noyau [le moteur, le serveur] (ceci est particulièrement vrai si on exécute<br />

la totalité de la feuille par le menu Edit/Execute/Worksheet [Edition/Exécuter/Feuille de<br />

travail] ou avec le bouton icône de la barre d'outils).<br />

On peut par contre introduire autant d'ordres restart que l'on souhaite dans une feuille de<br />

calcul pour séparer des calculs indépendants (voir la fin du § 7.1).<br />

Il est également possible d'effectuer cette action avec le bouton-icône<br />

58<br />

de la barre d'outils.<br />

Si plusieurs feuilles de calculs sont ouvertes simultanément, l'ordre restart s'applique à la<br />

feuille (au serveur) le contenant ainsi qu'aux serveurs qui lui sont reliés et seulement à eux<br />

(voir § 8.3.6).<br />

8.3.5 Accès aux fonctions des bibliothèques (packages)<br />

Certaines fonctions appartiennent à des bibliothèques qui ne sont pas automatiquement<br />

accessibles au lancement ou après un ordre restart (sauf utilisation d'un fichier d'initialisation,<br />

voir § 8.3.8 ou § 8.4.3-1). Pour pouvoir accéder à ces fonctions, on utilisera soit<br />

a) la syntaxe dite « longue » qui permet d'utiliser ponctuellement une fonction dans une<br />

instruction sans avoir un accès permanent aux fonctions de la bibliothèque. Elle peut prendre<br />

deux formes<br />

• Bibliothèque:-Fonction(arguments). Cette écriture correspond aux<br />

bibliothèques récentes de MAPLE (bibliothèques de modules, voir Ch. 19).<br />

• Bibliothèque[Fonction](arguments). Identique à la précédente et pour<br />

toutes les bibliothèques, les anciennes(construites par tables) et les nouvelles(construites par<br />

modules).<br />

b) avec l'opérateur with<br />

• qui donne un accès permanent à toute la bibliothèque.<br />

> with(Bibliothèque):<br />

• qui donne un accès permanent seulement à une ou plusieurs fonctions de cette<br />

bibliothèque<br />

> with(Bibliothèque,Fonction_1,Fonction_2,...):<br />

On trouvera de nombreux exemples d'utilisation aussi bien dans ce manuel que dans les<br />

exercices (par exemple, chapitre 4 Vecteurs, Matrices,... , § IV Algèbre Linéaire : bibliothèque,<br />

LinearAlgebra §§ Accès aux fonctions de LinearAlgebra). La forme "longue" est celle qui doit<br />

être utilisée dans les procédures (voir Ch. 19).<br />

c) avec le menu Tools/Load Package [Outils/Charger un package], on pourra aussi accéder<br />

et charger certaines bibliothèques, mais pas toutes...<br />

La liste de toutes les bibliothèques pourra être obtenue avec<br />

O ?index/package<br />

ou avec le menu Tools/Load Package/List All Packages... [Outils/Charger un package/Lister<br />

tous les Packages...]. On notera également que certaines bibliothèques (comme linalg), bien que<br />

toujours présentes pour des raisons de compatibilité, sont déclarées obsolètes et remplacées par<br />

de nouvelles (LinearAlgebra).<br />

d) Les noms de certaines fonctions des bibliothèques peuvent être identiques à ceux définis<br />

par défaut, c'est-à-dire à ceux des fonctions dites "de niveau supérieur" ("top level"). Ceci peut


provoquer une difficulté d'accès. Prenons par exemple le calcul du logarithme népérien de –2<br />

O ln K2<br />

ln 2 C I p<br />

(8.3.5.1)<br />

Le calcul par défaut est effectué dans le corps des complexes. On veut restreindre ce calcul aux<br />

nombres réels grâce à la librairie (construite par modules) RealDomain<br />

O RealDomain:-ln K2<br />

undefined<br />

(8.3.5.2)<br />

Si l'on redéfinit la fonction avec with pour alléger l'écriture<br />

O with RealDomain, ln<br />

ln<br />

(8.3.5.3)<br />

la fonction ln par défaut devient celle définie par RealDomain et<br />

O ln K2<br />

undefined<br />

(8.3.5.4)<br />

Pour accéder maintenant à la fonction "top level" on devra écrire<br />

O :-ln K2<br />

ln 2 C I p<br />

(8.3.5.5)<br />

On peut supprimer l'accès par défaut aux noms de RealDomain en utilisant<br />

O unwith RealDomain :<br />

et on revient à la situation initiale (on pourra aussi utiliser le menu [Tools-Outils/Unload-<br />

Décharger un package...])<br />

O ln K2<br />

ln 2 C I p<br />

(8.3.5.6)<br />

Attention : Ce qui vient d'être dit ne vaut que pour les bibliothèques construites par modules.<br />

Pour les autres (celles construites par tables) seul un ordre restart peut résoudre le conflit.<br />

Toutes les bibliothèques de MAPLE devraient être, à terme, transformées progressivement en<br />

bibliothèques de modules avec l'évolution du logiciel.<br />

Pour connaître les librairies en cours d'utilisation on écrira (ici la liste [ ] est vide puisqu'il n'y en<br />

a plus)<br />

O packages<br />

(8.3.5.7)<br />

[**] Pour savoir si une librairie est construite par modules on écrira (la librairie intrans contient<br />

des transformations intégrales : Fourier, Laplace, Mellin, etc ; voir le chapitre 10 ; elle est encore<br />

construite par table). La fonction type sera définie au Ch. 2, § 3.<br />

O<br />

type RealDomain, '`module`' ;<br />

type intrans, '`module`'<br />

true<br />

false<br />

59<br />

(8.3.5.8)<br />

8.3.6 Gestion des serveurs [noyaux, moteurs, kernels] [*]<br />

On peut ouvrir plusieurs feuilles de calcul simultanément avec le menu File/New<br />

[Ficher/Nouveau] (voir § 8.4.7). Chaque feuille possède son propre serveur (noyau, moteur,<br />

kernel), mais on pourra gérer leurs dépendances. On utilisera pour cela le menu Tools/Options..<br />

. (Windows-Linux) ou MAPLE 12/Preference... (Mac OS). L'onglet General propose deux


options et pour pouvoir choisir on doit connaître les significations suivantes:<br />

• New engine for each document [Nouveau moteur pour chaque document] : les<br />

serveurs sont indépendants. Si on entre > a:=2; dans une feuille de calcul, on obtiendra a+1 en<br />

exécutant > a+1; dans une autre car les deux a s'ignorent et sont considérés comme des objets<br />

différents.<br />

• Shared one engine among all documents [Partager un seul moteur parmi tous les<br />

documents] : tous les serveurs partagent les données. Si on entre > a:=2; dans une feuille de<br />

calcul, on obtiendra 3 en exécutant > a+1; dans une autre.<br />

• On notera également l'option donnant la possibilité de poser la question (Ask each time<br />

[Demander chaque fois]) à chaque ouverture d'un nouveau document. On devra préciser dans<br />

une fenêtre à chaque ouverture le numéro du serveur (noyau) avec lequel il partage les données.<br />

Les numéros des serveurs sont indiqués soit en bas à droite de la fenêtre MAPLE, soit dans la<br />

barre de titre de fenêtre. Pour le cas ou l'on ne veut pas de partage, sélectionner (create new<br />

engine).<br />

Sauvegarder avec le bouton Apply Globally ou Apply to Session (voir § 8.3.7).<br />

8.3.7 Initialisation de MAPLE par menu [**]<br />

On a souvent mentionné dans ce chapitre la possibilité de paramétrer MAPLE au moment de<br />

son lancement ou après un ordre restart à l'aide du menu Tools/Options [Outils options]<br />

(Windows-Linux) ou Maple 12/Préférences (Mac) qui ouvre une fenêtre d'initialisation. On ne<br />

résumera pas ici toutes les possibilités et le lecteur se reportera aux divers paragraphes de ce<br />

chapitre qui y font mention. On rappelle seulement que les paramètres ainsi définis ne seront<br />

sauvegardés que pour la session en cours avec le bouton Apply to Session (i.e. : jusqu'à la<br />

fermeture de MAPLE) ou de façon permanente avec Apply Globally.<br />

Pour ne plus faire apparaître la fenêtre d'aide rapide qui s'ouvre à chaque nouveau document,<br />

cliquer sur l'onglet Interface de la fenêtre d'initialisation (des préférences) et décocher Quick<br />

Help popup on new documents[Fenêtre d'aide rapide lors de nouveaux documents]<br />

8.3.8 Initialisation de MAPLE par fichier [**]<br />

Remarque : il faut savoir que l'on peut aussi initialiser individuellement les feuilles de calcul de<br />

façon similaire sans avoir à initialiser globalement MAPLE de la façon décrite ici (voir § 8.4.3-1)<br />

.<br />

On peut prédéfinir l'état initial de MAPLE (au lancement et valable pour chaque ouverture<br />

d'un nouveau document et/ou chaque ordre restart) et réaliser des options que ne permet pas le<br />

menu précédent en plaçant dans le répertoire d'entrée de l'utilisateur un fichier contenant des<br />

ordres d'initialisation.<br />

Attention : le fichier doit être en ASCII simple sans formatage (format "texte", pas de formats<br />

du genre .doc ou .rtf). On utilisera donc pour le créer un éditeur capable d'enregister un mode<br />

texte seul (avec Word sous Windows utiliser le format Texte brut puis MS-Dos, sous Mac le<br />

format Texte seulement).<br />

Le nom du fichier dépend du système d'exploitation : maple.ini sous Windows et<br />

.mapleinit sous Mac ou Linux. Le répertoire dans lequel doit être sauvegardé ce fichier sera<br />

obtenu avec la commande<br />

O kernelopts homedir<br />

Pour plus de détails, on se reportera à l'aide en ligne<br />

O ?worksheet,reference,initialization<br />

Un tel fichier contiendra simplement des ordres MAPLE valides qui seront exécutés de façon<br />

60


automatique à chaque ouverture de document. Suivant la ponctuation finale (; ou : ) les résultats<br />

d'exécution apparaîtront ou non. On montre un exemple de contenu de ce type de fichier dont<br />

l'exécution se fera sans affichage en raison de la terminaison par : de tous les ordres.<br />

Digits:=6: e:=exp(1): protect('e'):<br />

with(LinearAlgebra,LinearSolve): # voir § 8.3.5<br />

interface(imaginaryunit=j):<br />

interface(prompt="$:"):<br />

On demande donc avec ce fichier<br />

• de travailler avec 6 chiffres significatifs par défaut (valeur qui peut aussi être aussi<br />

définie avec la fenêtre d'initialisation, onglet Precision/Round calculation to[Arrondir le calcul<br />

à])<br />

• d'assigner la base des logarithmes népériens au nom e et de protéger ce nom contre toute<br />

autre assignation (voir Ch. 2)<br />

• de pouvoir accéder automatiquement au solveur de systèmes linéaires LinearSolve de la<br />

bibliothèque LinearAlgebra, (ce qui n'est pas le cas par défaut ; voir § 8.3.5)<br />

• de fixer la syntaxe des nombres complexes comme a+j*b et non a+I*b (voir § 6)<br />

• que le "prompt" des groupes d'exécution (l'invite) ne soit plus > , mais $:<br />

8.3.9 Interopérabilité [***]<br />

Les langages de programmation C, Java et Visual Basic peuvent appeler des applications<br />

MAPLE grâce à des API.<br />

O ?OpenMaple<br />

Inversement MAPLE peut accéder à des routines écrites en C, Fortran ou Java<br />

O ?ExternalCalling<br />

MAPLE peut aussi interagir avec MATLAB<br />

O ?Matlab<br />

ou communiquer avec des bases de données (SQL via JDBC).<br />

O ?Database<br />

MAPLE peut également utiliser directement la librairie de calculs numériques NAG<br />

O ?NAG<br />

8.3.10 Perte de connexion au noyau<br />

MAPLE peut perdre sa connexion au noyau, soit par interdiction d'utiliser un port de<br />

communication, soit par un défaut de fonctionnement. Dans ce second cas, il s'agit généralement<br />

soit d'une pile de récursion trop grande (à l'utilisateur de gérer le problème), soit d'un défaut<br />

interne d'adressage mémoire (rarissime ; voir cependant Ch. 2, § 2.4.1/1). L'utilisateur peut, s'il<br />

peut systématiquement reproduire le défaut, faire un signalement à Maplesoft en fournissant la<br />

feuille de calcul en cause. Dans tous les cas une fenêtre s'affiche donnant un diagnostic et la<br />

marche à suivre.<br />

Il est important de noter que cette perte de connexion n'empêche pas la sauvegarde du<br />

travail en cours avant de quitter MAPLE et de le relancer.<br />

61


8.4 Gestion des feuilles de calcul<br />

8.4.1 "Document mode" et "Worksheet mode"[Feuille de travail]<br />

Comme indiqué dans l'introduction, MAPLE propose deux formes de présentation des<br />

feuilles de calcul : le "Document mode" et le "Worksheet mode" (voir § 8.4.8.1 pour quelques<br />

détails caractéristiques). On pourrait dire de façon simplifiée que le mode "Worksheet" est plutôt<br />

orienté vers un "document de travail" et le mode "Document" vers un "document scientifique"<br />

avec une présentation plus habituelle des commandes de calculs. Ce mode "Document" semble<br />

être celui que tente de promouvoir Maplesoft, mais le mode "Worksheet" présente aussi des<br />

avantages de simplicité et de clarté d'utilisation pour un travail courant ainsi que des ressources<br />

mémoire moins importantes.<br />

Le mode par défaut du document ouvert (lancement de MAPLE ou utilisation du boutonicône<br />

de la barre d'outils pour ouvrir un nouveau document) est défini par le choix effectué<br />

dans le menu d'initialisation (voir ci dessous). Mais il est toujours possible, à l'aide du menu File<br />

(Fichier)/New[Nouveau]/Worksheet ou Document Mode, de faire un choix différent.<br />

Pour le travail courant on conseillera plutôt le "Worksheet mode" avec entrée des<br />

commandes en mode 1D (dit "Maple Notation" ou "1-D Math Input" ; caractères rouges, voir<br />

ci-dessous). C'est le mode traditionnel de MAPLE. Il présente aussi l'avantage d'enchaîner<br />

naturellement les commandes de calcul : quand une commande est exécutée le curseur saute<br />

automatiquement sur la commande suivante. On choisira le "Document mode" pour l'édition<br />

de documents scientifiques et dynamiques (c'est celui des feuilles de ce manuel).<br />

Pour obtenir par défaut l'ouverture d'un nouveau document dans l'un de ces deux modes, on<br />

ouvrira la fenêtre des réglages d'initialisation avec Tools/Options... (Windows-Linux) ou<br />

MAPLE 12/Préférences... (Mac OS). Cliquer ensuite sur l'onglet Interface puis sélectionner<br />

Document ou Worksheet [Feuille de travail] dans la rubrique Default format for new<br />

worksheet [Format par défaut pour les nouvelles feuilles de travail]. Valider la commande en<br />

cliquant sur Apply Globally (définition permanente) ou Apply to Session.<br />

[**] Pour que l'entrée des commandes dans une feuille au format Worksheet (ou dans<br />

d'éventuels groupes d'exécution introduits dans une feuille en mode Document) se fasse par<br />

défaut en mode caractères (dit "1D Math Input" ou "Maple Notation", en caractères rouges)<br />

ouvrir la fenêtre des réglages d'initialisation, cliquer sur l'onglet Display [Affichage] et<br />

sélectionner Maple Notation dans la rubrique Input Display [Affichage de l'entrée]. On<br />

62


appelle qu'il sera toujours possible d'entrer ou de convertir une commande en mode 2D-Math<br />

(écriture standard) par basculement (voir § 8.4.8.1).<br />

[**] Il existe aussi plusieurs types de formats d'écriture pour l'affichage des résultats. On<br />

pourra les expérimenter avec l'onglet Display [Affichage], option Output display [Affichage de<br />

la sortie] de la fenêtre d'initialisation ou encore avec la commande interface(prettyprint=n).<br />

Voici trois exemples sachant que le mode par défaut est n=3. Noter que restart ne réinitialise<br />

pas la valeur par défaut et que la commande interface(prettyprint=n) renvoie la valeur qui<br />

précède le changement (voir un exemple similaire au § 5.8.1).<br />

1) 2D-Math Notation.<br />

O<br />

Int x$sin x 2 , x = 0 ..p : % = value %<br />

0<br />

p<br />

x sin x 2<br />

dx = 1 2 K 1 2<br />

2) Character Notation (la valeur rendue/affichée par interface est la valeur précédente, ce<br />

qui facilite une mise en mémoire simultanée au changement)<br />

O pty d interface prettyprint = 1 ;<br />

Int x$sin x 2 , x = 0 ..p : % = value %<br />

pty := 3<br />

/Pi<br />

| / 2\ 1 1 / 2\<br />

| x sin\x / dx = - - - cos\Pi /<br />

| 2 2<br />

/0<br />

On revient à la valeur par défaut (n=3) avec la valeur mise en mémoire dans pty<br />

O interface prettyprint = pty ;<br />

Int x$sin x 2 , x = 0 ..p : % = value %<br />

0<br />

63<br />

cos p2<br />

3) Maple Notation<br />

O interface prettyprint = 0 :<br />

Int x$sin x 2 , x = 0 ..p : % = value %<br />

Int(x*sin(x^2), x = 0 .. Pi) = 1/2-(1/2)*cos(Pi^2)<br />

0<br />

p<br />

x sin x 2<br />

dx = 1 2 K 1 2<br />

cos p2<br />

(8.4.1.1)<br />

(8.4.1.2)<br />

Certes les modes CharacterNotation ou Maple Notation sont moins esthétiques, mais sont<br />

aussi beaucoup moins gourmands en mémoire. Ils permettent également d'autres options comme<br />

l'étiquetage (voir la commane interface(labelling=true/false) très utile pour afficher des<br />

expressions longues et encombrantes. Par ailleurs ils sont quelquefois indispensables (écriture<br />

dans un fichier) et/ou sont basculés automatiquement par MAPLE (voir § 8.4.5).<br />

8.4.2 Enregistrement et sauvegarde des documents<br />

L'enregistrement des documents se fait de façon habituelle par Fichier(File)/Save<br />

[Enregistrer] ou Save As... Noter sur Mac une notation qui peut prêter à confusion : l'option<br />

Save As... sert à enregistrer une feuille sous un autre nom, mais le menu mentionne Save As<br />

Worksheet... Le mot Worksheet signifie en fait "Standard Worksheet" et ne signifie pas que l'on<br />

sauvera une feuille MAPLE écrite en mode "Document" dans le mode "Worksheet" (voir §<br />

8.4.1), mais simplement dans le mode en cours.


MAPLE dispose d'un mécanisme de sauvegarde automatique des documents qui se lance de<br />

façon périodique et discrète pendant le travail. L'accès à MAPLE est néanmoins interrompu<br />

durant cette opération et la mention "Autosaving Worksheet..." ["Enregistrement automatique de<br />

la feuille de travail..."] s'affiche dans le coin en bas à gauche de la fenêtre). Un document portant<br />

le nom XYZ.mw est alors automatiquement enregistré sous le nom XYZ_MAS.bak (Maple<br />

Auto Saving bakup) dans le même répertoire et est périodiquement remis à jour. Ce fichier<br />

disparaît dès que l'on provoque une sauvegarde volontaire. Pour que ce mécanisme fonctionne il<br />

faut que dans la fenêtre d'initialisation (voir § 8.3.7), onglet General, la case Auto save every<br />

[Sauvegarde automatique à chaque] soit cochée et la période de sauvegarde automatique fixée.<br />

En cas d'anomalie de fonctionnement de l'ordinateur interrompant inopinément le<br />

fonctionnement de MAPLE sans enregistrement effectué, relancer MAPLE en cliquant sur le<br />

document XYZ.mw. Pour restituer la dernière sauvegarde automatique qui précéde la panne,<br />

sélectionner Fichier(File)/Open Recent/Restore Backup [Fichier/Ouvrir les récents/Restituer<br />

la sauvegarde].<br />

Recommandation : dès que l'on ouvre un nouveau document, le sauver, même vide ou avec<br />

son ordre restart en tête (voir § 8.3.4), en lui donnant un nom. On pourra ensuite sauver<br />

régulièrement le document en cours de construction par une simple pression sur le boutonicône<br />

de la barre d'outils et éviter ainsi la perte partielle du travail en cas d'anomalie de<br />

fonctionnement de l'ordinateur. En matière de sauvegarde, aucune précaution n'est superflue...<br />

8.4.3 Initialisation des feuilles de calcul, groupes autoexécutables [**]<br />

1) Initialisation des feuilles de calcul. Une feuille de calcul peut contenir un groupe "caché"<br />

de commandes, dit Startup code [Code de démarrage], qui seront exécutées lors de son<br />

ouverture ou après un ordre restart. Contrairement à l'initialisation vue au § 8.3.8 qui s'applique<br />

au logiciel MAPLE dans sa globalité et si plusieurs feuilles sont ouvertes simultanément, le<br />

Startup code ne vaut que pour la feuille en question (attention néanmoins aux moteurs partagés ;<br />

voir § 8.3.6). Pour éditer ou modifier ces commandes et/ou procédures, il suffit de cliquer sur le<br />

bouton-icône de la barre d'outils ou d'utiliser le menu Edit [Edition]/Startup Code [Code de<br />

démarrage] et d'écrire dans la fenêtre qui s'ouvre. Cette édition est passive puisqu'un Return ne<br />

déclenche ni une exécution de l'ordre donné, ni une analyse syntaxique des erreurs. Pour obtenir<br />

cette dernière on utilisera le bouton "Syntax" ou le menu Syntax/Check syntax now [Vérifier la<br />

syntaxe maintenant]. Cette opération sera systématiquement effectuée avant la sauvegarde si<br />

l'option Syntax/Check syntax before saving [avant d'enregistrer] est cochée (le défaut). Les<br />

ordres de l'exemple du § 8.3.8 pourraient être introduits comme Startup code. Après avoir<br />

sauvegardé avec le bouton "Save" ["Enregistrer"] ou le menu File/Save [Fichier/Enregistrer],<br />

lancer un ordre restart ou réouvrir la feuille, autoriser si nécessaire (voir ci-dessous) l'exécution<br />

du Startup code et vérifier que tout est conforme (en exécutant par exemple ln(e) ou un evalf<br />

pour vérifier la valeur de Digits d'après l'exemple donné au § 8.3.8). A la différence de<br />

l'exécution du fichier du § 8.3.8, l'exécution est ici toujours transparente quelque soient les<br />

terminaisons des ordres (";" ou ":"). Pour ne pas enregistrer les modifications faites, fermer<br />

directement la fenêtre ou utiliser le menu File/Exit. Pour supprimer le Startup code, vider son<br />

contenu et sauvegarder.<br />

Si un Startup code est présent, les roues de l'icône se remplissent et deviennent .<br />

O ?worksheet,documenting,startupcode<br />

Si on souhaite une exécution automatique du Startup code sans demande d'autorisation<br />

préalable, on fixera dans la fenêtre d'initialisation de MAPLE (voir § 8.3.7), onglet Security,<br />

l'option Autoexecute security level [Niveau de sécurité de l'auto-exécution] à Don't warm<br />

64


efore autoexecution [Ne pas avertir avant l'auto-exécution].<br />

ATTENTION : certains ordres de MAPLE, tels system ou ssystem (exécution d'une<br />

commande du système d'exploitation), mkdir (création d'un répertoire), rmdir (effacement d'un<br />

répertoire vide) ou fremove (effacement d'un fichier), ainsi que les outils de la bibliothèque<br />

FileTools peuvent être directement exécutés par le Startup code et sont potentiellement<br />

dangereux s'ils sont utilisés de façon maladroite ou malveillante. Egalement, ces commandes<br />

pourraient être introduites dans des procédures définies par le Startup code et exécutées<br />

ultérieurement dans la feuille de calcul à l'insu de l'utilisateur. Aussi, avant d'ouvrir un<br />

document d'origine douteuse, il est préférable de configurer MAPLE en mode sécurisé (i.e.<br />

l'état de configuration par défaut : Autoexecute security level [Niveau de sécurité de l'auto<br />

exécution] mis à Warm once for each Worksheet [Feuille de travail] dans les préférences ;<br />

voir § 8.3.7), de répondre "non" à l'autorisation d'exécution du Startup code s'il existe et de<br />

vérifier son contenu. Le menu d'initialisation permet également d'activer un mécanisme de<br />

contrôle (cocher la case Enable engine security) qui permet à l'utilisateur de contrôler les actions<br />

de MAPLE, en particulier celles de lecture/écriture des fichiers de l'ordinateur.<br />

2) Groupes autoexécutables. Les feuilles de calcul peuvent également contenir des<br />

commandes ou groupes de commandes (voir § 1.3) qui seront visibles et exécutables<br />

automatiquement à l'ouverture du document ou après un ordre restart. Pour rendre<br />

autoexécutable une commande ou un groupe de commandes, il suffit de cliquer dessus puis<br />

d'activer le menu Format/Autoexecute/Set [Auto-exécution/Fixer]. Si l'option View/Markers<br />

[Affichage/Balises] est cochée, une icône apparaît à gauche indiquant que le groupe est<br />

autoexécutable. Pour annuler cet état on utilisera de même Format/Autoexecute/Clear [Vider].<br />

Le contrôle d'autorisation d'exécution se définit comme pour les ordres du Startup Code.<br />

8.4.4 Sauvetage d'un document corrompu [**]<br />

Il est possible, lors de manipulations peu orthodoxes, que la feuille de calcul enregistrée soit<br />

corrompue (c'est heureusement rarissime). On est catastrophé de voir qu'à l'ouverture du<br />

document une partie semble manquer de façon incompréhensible. Elle est en réalité probablement<br />

présente, mais ne peut être lue car un "groupe" corrompu bloque la lecture. Il est néanmoins<br />

possible de tenter une manoeuvre de récupération.<br />

ATTENTION : L'opération n'est pas forcément évidente et on travaillera toujours avec une<br />

copie du document corrompu.<br />

Les documents MAPLE sont au format XML et par conséquent peuvent être lus avec<br />

n'importe quel éditeur. XML est un langage à balises (dites aussi étiquettes, tags,...)<br />

reconnaissables par leurs formes classiques .... Les curieux pourront visiter l'aide<br />

en ligne, mais sans que ce soit indispensable...!<br />

O ?Worksheet<br />

ou<br />

O ?XMLTools<br />

Si on ouvre un document MAPLE avec un éditeur on voit, après un long préambule définissant<br />

les caractéristiques générales du document, apparaître les groupes générés par l'utilisateur entre<br />

les tags .... Par exemple :<br />

<br />

<br />

... (long préambule)<br />

<br />

<br />

65


...<br />

<br />

<br />

...<br />

display="LUklbXJvd0c2Iy9JK...<br />

<br />

<br />

<br />

...<br />

<br />

...<br />

<br />

Dans les zones "Input" des documents au format "2-D Math Input" et dans les zones "Output"<br />

en général, les suites de caractères du genre display="LUklbXJ..." sont des codages qui ne<br />

sont interprétables que par MAPLE et qui sont utilisés pour dessiner les expressions en mode<br />

2D. Il est néanmoins possible de repérer le groupe corrompu par le (ou les) texte de la<br />

commande qui apparaît en clair d'une façon ou d'une autre dans la zone Input. En mode "2-D<br />

Math Input", c'est un peu plus difficile car une commande telle a d 1 s'écrit input-equation=<br />

"`:=`(a, 1)". Le groupe corrompu est certainement celui qui suit le dernier qui s'affiche quand<br />

on ouvre la feuille. Il suffit de l'effacer en supprimant les lignes correspondantes<br />

<br />

...<br />

<br />

d'enregistrer la feuille en mode texte (pas de formats du type .rtf ou .doc) puis de l'ouvrir à<br />

nouveau avec MAPLE. On devrait retrouver l'intégralité du document à l'exception bien sûr du<br />

groupe supprimé. La méthode devra être adaptée pour les feuilles au format "Document".<br />

8.4.5 Exportation des documents [**]<br />

Les feuilles de calculs peuvent être exportées dans divers formats comme HTML ou LaTeX<br />

avec le menu Fichier(File)/Export As [Exporter en]. Nous ne détaillerons pas ces procédures et<br />

nous renvoyons le lecteur sur l'aide en ligne de MAPLE. Pour la création d'un pdf, utiliser une<br />

option d'impression (§ 8.4.6).<br />

O ?worksheet/managing/export<br />

Les feuilles de calcul peuvent être présentées comme des diapositives plein écran (à la façon<br />

PowerPoint, Keynote ou Impress) avec le menu View/Slideshow[Diaporama].<br />

Noter aussi la commande suivante qui compose une expression LaTeX en basculant<br />

automatiquement le format d'écriture du résulat (voir la fin de § 8.4.1). Un simple copier-coller<br />

du résultat sera alors possible pour une insertion dans un document LaTeX.<br />

O latex Int sin x 2 $x, x = 0 ..Pi<br />

\int _{0}^{\pi }\!x\sin \left( {x}^{2} \right) {dx}<br />

Cette insertion directe dans un document est possible en donnant en deuxième argument le nom<br />

du fichier (voir Ch. 20).<br />

Il existe également la possibilité de coder automatiquement des expressions dans un langage<br />

comme C, Fortran, Java, Matlab ou VisualBasic (le transcodage Fortran de MAPLE, bien que<br />

correct, est désuet par rapport à la norme actuelle de ce langage). Voir aussi le § 8.3.9.<br />

O CodeGeneration:-Java s_x = sin x 2 C 1 $x, z = s_x K 3<br />

s_x = Math.sin((double) (x * x + 1)) * (double) x;<br />

z = s_x - 0.3e1;<br />

8.4.6 Impression des documents. Numérotation des pages<br />

66


L'impression des feuilles de calcul se fait simplement à l'aide du menu Fichier(File)/Print<br />

Néanmoins, le passage à l'impression peut être source de difficultés en raison de l'absence de<br />

relation entre la largeur de la mise en page à l'écran de la feuille de calcul et celle de la feuille<br />

papier. Lors d'une impression, MAPLE opère des modifications de mise en page et des<br />

compressions automatiques des graphiques qui ne sont pas effectuées sur les légendes, textes et<br />

expressions mathématiques (par exemple § 8.4.8.4-7-c). Ceci provoque des modifications<br />

d'aspect, voire des troncatures, peu esthétiques. On ne peut que recommander, avant tout travail<br />

nécessitant une mise en page précise, de déterminer empiriquement une largeur virtuelle à l'écran<br />

de la feuille de calcul qui soit proche de la largeur réelle imprimée sur le papier afin d'éviter au<br />

maximum les mauvaises surprises au moment de l'impression. Pour obtenir ce résultat on peut<br />

proposer la recette suivante :<br />

1) Ecrire un texte d'au moins dix à quinze lignes sur la feuille de calcul (en mode "Text") et<br />

dans lequel on n'introduira pas de retour à la ligne (utiliser un copier-coller d'un texte quelconque<br />

et supprimer éventuellement les retours à la ligne non automatiques).<br />

2) S'assurer de la justification à gauche ( dans la barre d'outils).<br />

3) Effectuer une prévisualisation ou imprimer le texte ou créer un pdf.<br />

4) Vérifier que l'option Markers [Balises] du menu View [Affichage] n'est pas cochée.<br />

5) Ajuster à l'écran la largeur de la fenêtre MAPLE de façon à ce que les mêmes mots du<br />

texte terminent toutes les lignes dans la page à l'écran et la page imprimée. Plus le nombre de<br />

lignes est important, plus la relation de la largeur de mise en page sera précise par effet<br />

statistique. Normalement MAPLE conserve la taille de la fenêtre ainsi définie d'un lancement à<br />

l'autre.<br />

Il est possible d'insérer des sauts de page avec le menu Insert/Page Break [Intertion/Page<br />

suivante].<br />

Pour numéroter les pages imprimées, on utilisera le menu View/Header Footer...<br />

[Affichage/En-tête et bas de page...] qui permet aussi de choisir différents formats avec la<br />

possiblité d'inclure des dates, des logos, etc. La numérotation n'est effective que lors d'une<br />

prévisualisation, de la création d'un fichier pdf ou d'une impression.<br />

8.4.7 Ouvertures simultannées de plusieurs feuilles de calculs [*]<br />

On peut ouvrir plusieurs feuilles de calcul simultanément (File[Fichier]/New[Nouveau]) et<br />

chacune dans le mode souhaité (Document ou Worksheet ; voir § 8.4.1). On notera les deux<br />

points suivants:<br />

- L'affichage peut apparaître soit dans des fenêtres MAPLE séparées (New Window<br />

[Nouvelle fenêtre]), soit dans la même fenêtre avec un sélection des feuilles par onglet (New<br />

Tab [Nouvel onglet]). Pour obtenir un de ces choix (mis par défaut) on ouvrira la fenêtre des<br />

réglages d'initialisation (voir § 8.3.7), on cliquera sur l'onglet Interface puis on choisira à la<br />

rubrique Open worksheets in : [Ouvrir une feuille de calcul dans :], soit New Window soit<br />

New Tab.<br />

- La gestion de la dépendance entre les données des feuilles de calcul (des noyaux, des<br />

serveurs, des moteurs) ainsi ouvertes sera gérée suivant la méthode décrite au § 8.3.6.<br />

8.4.8 Structures et éléments des feuilles de calculs<br />

8.4.8.1 Document blocks et Execution groups, Math et Texte<br />

On lira au préalable le § 8.4.1. Une feuille de calcul en mode Document est essentiellement<br />

structurée en "documents blocks" marqués à gauche (si l'option du menu View/Markers<br />

[Affichage/Balises] est cochée) par les symboles et et une feuille de calcul en mode<br />

67


Worksheet, en "groupes d'exécution" marqués par un prompt > et un crochet extensible à<br />

gauche [. Les deux modes ont en commun le langage XML (voir § 8.4.4) et en réalité ne<br />

s'excluent pas l'un l'autre car les éléments standard de l'un peuvent être introduits dans l'autre.<br />

On a vu avec la structure de ce chapitre que l'on pouvait introduire des "groupes<br />

d'exécutions" dans un mode Document, mais on peut aussi introduire des "documents<br />

blocks" dans un mode Worksheet avec le menu Format/Create Document Block. On peut<br />

aussi, pour écrire du texte utiliser le menu Insert/Paragraph/Before-After Cursor<br />

[Insertion/Groupe d'exécution/Avant-Après le curseur] (voir aussi le bouton-icône de<br />

la barre d'outils), etc. On notera toutefois que trop de mélange peut rendre la gestion d'un<br />

document confuse et difficile.<br />

Un Return crée un nouveau block ou un nouveau groupe d'exécution alors qu'un Shift-<br />

Return fait seulement passer à la ligne. On rappelle que l'on peut passer du mode "Math" au<br />

mode "Text"<br />

- à l'aide du bouton et bien sûr réciproquement avec .<br />

- à l'aide de la touche F5 (fn-F5 pour certains claviers).<br />

- à l'aide du menu Edit/Switch to Text Mode (et réciproquement, l'item changeant<br />

automatiquement de nom, avec Edit/Switch to Math Mode).<br />

- on peut convertir une commande écrite en "1-D Math Input" (caractères rouges) en<br />

mode "Math" avec Format/Convert To [Convertir en]/2-D Math Input (attention : ne pas<br />

choisir l'option "2-D Math"-"tout court" pour convertir une commande). On peut bien sûr<br />

faire l'opération réciproque avec Format/Convert To/1-D Math Input.<br />

- on peut convertir une formule incluse dans un texte et écrite en mode "Text" vers le<br />

mode "Math" (par exemple sin(Pi*x)/(Pi*x) / sin p x ) en sélectionnant le texte de la<br />

p x<br />

formule puis en utilisant le menu Format/Convert To [Convertir en]/2-D Math [Math 2-D]<br />

("tout court" et non 2-D Math Input [Entrée Math 2-D] réservé à l'entrée des commandes).<br />

Pour effacer un élément (paragraphe de texte, commande, résultat...) on clique sur cet<br />

élément puis on utilisera le menu Edit/Delete Element [Edition/Supprimer l'élément] ou son<br />

raccourci clavier associé que l'on pourra lire sur le menu (à droite). Si le block ou le groupe<br />

est vide il sera effacé.<br />

On a renoncé à présenter toutes les fonctionnalités de ces deux modes en raison de leur<br />

trop grand nombre. Signalons simplement les actions par menus contextuels en mode<br />

Document : un clic droit sur une expression entrée en mode "Math" permet d'accéder à de<br />

nombreuses opérations de base que MAPLE peut effectuer. Par exemple, après avoir entré<br />

l'expression à gauche (en mode Math), un clic droit dessus (Ctrl-clic sur un Mac non équipé<br />

d'une souris trois boutons) ouvre un menu ou on a choisi Differentiate/x [Dériver/x] ”<br />

(MAPLE reconnaît les variables libres x et y ; en Maple 12 : "w.r.t." = "with respect to" =<br />

"par rapport à").<br />

dériver par rapport à x<br />

2$cos x 2 C sin x<br />

K2 sin x 2 C sin x 2 x C cos x<br />

Attention : certaines des opérations du menu n'affiche rien en mode de sortie "Notation<br />

MAPLE" ou "Notation de Caractère" (voir § 8.4.1).<br />

Il pourra de même, avec un clic droit sur le résultat, faire une autre opération, comme par<br />

exemple un tracé. Si on modifie l'expression initiale, on pourra ré-exécuter la commande en<br />

cliquant sur le bouton-icône de la barre d'outils. On notera aussi la fonction Explore de ce<br />

menu contextuel. On pourra reproduire l'exemple suivant : après avoir entré l'expression sur<br />

laquelle on effectuera un clic droit, on choisit Explore dans le menu et on coche "skip"<br />

68


(sauter) pour x (expliquer pourquoi après avoir essayé).<br />

factor 1 C x a<br />

Un peu d'expérimentation empirique pour dégrossir le terrain peut être une bonne méthode<br />

pour débuter, mais elle devra être suivie d'une lecture attentive de l'aide en ligne pour éviter de<br />

manquer les nombreuses fonctionnalités disponibles. Pour une première présentation<br />

générale on recommande la lecture de<br />

O ?MaplePortal<br />

ou de<br />

O ?UserManual<br />

8.4.8.2 Division en sections et sous-sections<br />

Quelque soit le format de la feuille de calcul (Document ou Worksheet), il est possible,<br />

comme il a été fait pour ce manuel, de la découper en Sections et Sous-sections avec le menu<br />

Insert Section et Insert Subsection ( ). Ceci est très utile pour s'obliger à structurer un<br />

document correctement. De plus, chacune des sections peut-être ouverte ou fermée ( )<br />

masquant ainsi son contenu et ne laissant apparaître que son titre. Il suffit de cliquer sur le<br />

triangle ou sur la barre latérale. On pourra aussi utiliser les boutons-icônes de la<br />

barre d'outils pour gérer ces divisions.<br />

Les numérotations qui apparaissent sur les sections de ce manuel ne sont pas<br />

automatiques et ont été introduites au clavier.<br />

8.4.8.3 Numérotation des résultats des commandes<br />

La numérotation des résultats introduite au § 1.2.1 est une option dont on choisit le défaut<br />

dans la fenêtre d'initialisation (voir § 8.3.7), onglet Display [Affichage], option Show<br />

equation labels [Afficher les étiquettes des équations]. En fait, quelque soit le choix par<br />

défaut, il est toujours possible de le modifier avec le menu Format/Labels [Etiquettes].<br />

L'option Label Display... [Affichage des étiquettes...] de cet item permet d'introduire un<br />

préfixe à la numérotation (par exemple "Ch I-" pour désigner le chapitre I) et d'activer soit<br />

une numérotation incrémentale simple, soit une numérotation qui prend en compte le<br />

découpage des sections/sous-sections (comme dans ce dodument).<br />

On peut également supprimer la numérotation automatique et l'introduire à la demande sur<br />

quelques résultats avec le menu Format/Labels et avec l'option Execution Group (l'option<br />

Worksheet numérotant tous les résultats).<br />

8.4.8.4 Autres éléments des feuilles de calculs<br />

Les feuilles de calcul peuvent contenir divers autres types d'objets. Ne perdant pas de vue<br />

que MAPLE est avant tout destiné à faire des calcul, on se contentera de très brèves<br />

descriptions...<br />

1. Des listes numérotées automatiques comme celle-ci ou à puces (,) introduite par les<br />

boutons-icônes de la barre d'outils.<br />

2. Des représentations graphiques des fonctions mathématiques en 2D ou 3D. Ce sujet, en<br />

raison de son importance, fait l'objet des deux chapitres 16 et 17.<br />

69


3. Des interfaces graphiques. On en trouve de trois sortes<br />

a) Les composantes graphiques (Components [Composantes]) qui permettent la<br />

construction d'applications (Ch. 19) par insertion dans la feuille de calcul (modes Worsheet<br />

ou Document) d'objets graphiques (voir l'exemple ci-dessous et la palette<br />

"Components[Composantes]" dans la colonne gauche de la fenêtre MAPLE) associés à des<br />

actions programmées. Pour la disposition en deux colonnes des éléments de cet exemple, voir<br />

le § 8.4.8.4-7.c.<br />

--------------------------------------------------------------------------------------------------------<br />

--------------------------------------------------------------------------------------------------------<br />

b) Des fenêtres réservées à l'édition de procédures, dites Code Edit Region [Région<br />

d'édition de codes] (voir chapitre 19). Elles sont insérées avec le menu Insert/Code Edit<br />

Region [Insertion/Région d'édition de code]. Ces zones peuvent être fermées pour masquer<br />

le texte (voir l'icône ci-dessous) avec le menu View/Collapse Code Edit Region ou ouvertes<br />

pour la lecture et l'édition avec View/Expand Code Edit Region [Affichage/Réduire-<br />

Développer la région d'édition de codes]. Ces deux actions sont aussi accessibles par un<br />

menu contextuel ouvert avec un "clic droit". Les dimensions en pixels de la fenêtre peuvent<br />

être fixées avec ce menu contextuel Component Properties... [Propriétés des composantes]<br />

Ma_procedure<br />

:=proc(x)<br />

x+1:<br />

end proc:<br />

La même fenêtre, mais fermée<br />

Ma_procedure<br />

c) Les Maplets : se sont des applications présentées dans des fenêtres indépendantes et<br />

écrites dans un langage spécifique à MAPLE (Ch. 19).<br />

70


4. Des schémas introduits par le menu Insert/Canvas (voir par exemple le § 5.7). Les<br />

possibilités de dessin sont assez restreintes mais on peut y introduire aisément des formules<br />

mathématiques. Pour plus de détails sur l'utilisation de ces outils on se reportera à l'annexe 1<br />

du chapitre 16. Il est aussi possible de créer des graphiques ayant pour base une<br />

représentation graphique mentionné ci-dessus en 2. (voir un exemple à la fin de ce<br />

paragraphe) ou un graphique importé puis complété (voir 5.).<br />

La taille des mailles de la grille de dessin peuvent être fixée avec le bouton-icône<br />

qui apparaît quand on clique dans le cadre du dessin. Pour faire disparaître la grille<br />

(comme ci-dessous) il suffit, toujours avec ce bouton, de lui donner la même couleur (Line)<br />

que celle du fond (Canvas).<br />

E<br />

f est injective<br />

F<br />

c x, y 2 E 2 ,<br />

x s y 0 f x s f y<br />

5. Des images ou des graphiques créés avec d'autres logiciels et importés avec le menu<br />

Insert/Image...<br />

Bonjour de<br />

Les images sont sommairement éditables (voir Annexe 1, Ch. 16) dans le sens où l'on<br />

peut, après importation, leur superposer des éléments de dessin MAPLE comme, par<br />

exemple, l'ajout du texte "Bonjour de" sur l'image ci-dessus.<br />

Les formats acceptés sont (pas de format eps)<br />

- jpe, jpeg, jpg (Joint Photographic Experts Group)<br />

- gif (Graphics Interchange Format)<br />

- png (Portable Network Graphics)<br />

71


- tiff, tif, jfx (Tagged Image File Format)<br />

- pnm (Portable aNyMap)<br />

- bmp (Bitmap Graphics)<br />

- fpx (Kodak FlashPiX bitmap image).<br />

ATTENTION : MAPLE effectue un codage des images ("lisible" en ASCII ; voir<br />

éventuellement § 8.4.4) et toutes les informations qui les définissent seront incluses dans la<br />

feuille de calcul. Il en résulte qu'il faut être très attentif à ne pas insérer des images de grandes<br />

tailles ou à haute définition, sous peine de voir le fichier de la feuille de calcul prendre une<br />

taille ingérable et des temps de sauvegarde et d'auto-sauvegarde (voir § 8.4.2) très longs... !<br />

Pour pallier les carences des outils de dessin de MAPLE, il est aussi possible d'importer<br />

des graphiques construits avec un autre logiciel (ci-dessous xfig) et utiliser, par<br />

superposition, les possibilités graphiques de MAPLE et surtout l'écriture mathématique (voir<br />

chapitre 16) qui est souvent absente des logiciels de dessin.<br />

C<br />

f z dz = 0<br />

C<br />

W<br />

6. Des feuilles de tableur avec le menu Insert/Spreadsheet... La gestion se fait par le menu<br />

Spreadsheet et/ou par un clic droit sur la feuille de tableur et qui fait apparaître un menu<br />

contextuel. L'exemple montre des calculs symboliques, mais les tableurs gèrent, bien entendu,<br />

aussi les calculs numériques. On peut voir en D1 un exemple de construction avec une<br />

référence à la cellule A1 et notée ~A1 (l'expression est une intégration double, voir chapitre<br />

10). La colonne D peut ensuite être remplie automatiquement (menu Spreadsheet/Fill<br />

[Feuille de calcul/Remplir]) pour établir les mêmes calculs pour tous les A i<br />

.<br />

On se reportera pour tous les détails à l'aide en ligne<br />

72


O<br />

?SpreadSheet<br />

7. Des tables que l'on introduit avec le menu Insert/Table... et que l'on gère simplement avec<br />

le menu Table. Pour tous les détails on se reportera à l'aide en ligne<br />

O ?worksheet/documenting/table<br />

Attention : > ? table renvoie à un autre concept (voir Ch. 5).<br />

Fonctions<br />

x n , n sK1<br />

1<br />

x<br />

Primitives<br />

x n C 1<br />

n C 1 C Cte<br />

ln x C Cte<br />

... ...<br />

Remarques à propos des tables :<br />

a) On peut agir à l'intérieur de chaque cellule comme dans une feuille de calcul (les<br />

cellules sont ouvertes dans le mode Document ou Worksheet, le même que celui de la feuille<br />

de calcul) On peut introduire tout type d'élément dans les cellules : des blocks, des groupes,<br />

des graphiques, des tracés de courbes, images, etc., y compris d'autres tables.<br />

b) Les encadrés que l'on trouve dans le texte de ce manuel ne sont que des tables à une<br />

colonne et une ligne...<br />

c) Une table peut aussi permettre d'effectuer des mises en forme de textes, d'illustrations<br />

ou d'applications à interface graphique (§ 8.4.8.4-3a). La première partie du texte sur<br />

l'intégration ci-dessous qui accole du texte (colonne de gauche) avec un graphique est<br />

obtenue avec une table à une ligne et deux colonnes pour laquelle, à l'aide du menu<br />

Table/Properties... [Propriétés...], on a supprimé les bordures intérieures et extérieures<br />

(Exterior Borders et Interior Borders mis à None). Le dessin a pour base une commande<br />

plot pour tracer la courbe (options color=black, axes=none ; voir Ch. 16) introduite dans la<br />

case de droite. Cette commande a été masquée en décochant l'option Show input [Afficher<br />

l'entrée] toujours dans la fenêtre du menu Table/Properties... Le graphique a ensuite été<br />

illustré avec les outils de dessin comme indiqué au Ch. 16, Annexe 1. Les intégrales et les<br />

formules ont été écrites en utilisant les gabarits de la palette Expression et la lettre A avec la<br />

palette "Script" .<br />

Si la feuille doit être imprimée, il est recommandé de suivre la recette de mise en page<br />

indiquée au § 8.4.6.<br />

_____________________________________________________________________<br />

Ce texte est une illustration de la dernière des remarques faites à propos des tables<br />

(§ 8.4.8.4-7.c)<br />

L'intégrale d'une fonction f est une<br />

mesure algébrique de l'aire située entre<br />

la courbe représentative de la fonction<br />

Intégrale : aire algébrique et aire géométrique<br />

73


et l'axe des abscisses. Avec les<br />

notations du dessin ci-contre on écrit,<br />

en utilisant la relation de Chasles<br />

f<br />

O<br />

a<br />

a<br />

b<br />

f<br />

x dx = A C<br />

K A K<br />

A +<br />

c A -<br />

b<br />

x<br />

a<br />

b<br />

f x dx =<br />

a<br />

c<br />

f<br />

x dx C<br />

c<br />

b<br />

f<br />

x dx<br />

Chacune des intégrales est une mesure<br />

algébrique de l'aire correspondante<br />

a<br />

c<br />

f x dx = A C<br />

O 0 et<br />

c<br />

b<br />

f x dx = A K<br />

! 0<br />

Si l'on souhaite calculer l'aire géométrique entre a et b on écrira donc, toujours avec le schéma de principe<br />

du dessin ci dessus<br />

c<br />

b<br />

A = f x dxK f x dx<br />

a<br />

c<br />

_____________________________________________________________________<br />

74

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!