9
Programmation en MAPLE HAMMAMI Mohamed Page 1 Fonctions & Procédures en MAPLE I. Les fonctions mathématiques MAPLE permet à l’utilisateur de créer ses propres fonctions au moyen d’une syntaxe inspirée de celles des mathématiques. 1. Définition d’une fonction > Nomf:=variable->expression; Exemple : > f:=x->x+sin(x); := f x x () sin x L’utilisateur accédera aux valeurs d’une fonction en utilisant la syntaxe usuelle des mathématiciens. > f(Pi/2); 1 2 1 > evalf(Pi/2); 1.570796327 > evalf(Pi/2,3); 1.57 2. Notations mathématiques usuelles Notation mathématique Signification Notation MAPLE x y addition x + y x y soustraction x - y x y ou xy multiplication commutative x * y AB multiplication non commutative A . B x y ou x y division x / y y x exponentiation x ^ y ou x ** y ! k factorielle k ! i ou 1 unité imaginaire I ou sqrt(-1) constante mathématique Pi e constante mathématique exp(1) symbole de l’infini infinity

Programmation en MAPLE

Embed Size (px)

DESCRIPTION

informatique Maple

Citation preview

  • Programmation en MAPLE

    HAMMAMI Mohamed Page 1

    Fonctions & Procdures en MAPLE

    I. Les fonctions mathmatiques

    MAPLE permet lutilisateur de crer ses propres fonctions au moyen dune syntaxe inspire

    de celles des mathmatiques.

    1. Dfinition dune fonction

    > Nomf:=variable->expression;

    Exemple :

    > f:=x->x+sin(x); := f x x ( )sin x

    Lutilisateur accdera aux valeurs dune fonction en utilisant la syntaxe usuelle des

    mathmaticiens.

    > f(Pi/2);

    1

    2 1

    > evalf(Pi/2); 1.570796327

    > evalf(Pi/2,3); 1.57

    2. Notations mathmatiques usuelles

    Notation mathmatique Signification Notation MAPLE x y addition x + y x y soustraction x - y

    x y ou xy multiplication commutative x * y

    AB multiplication non commutative A . B

    x y ou x

    y

    division x / y

    yx exponentiation x ^ y ou x ** y

    !k factorielle k !

    i ou 1 unit imaginaire I ou sqrt(-1)

    constante mathmatique Pi

    e constante mathmatique exp(1)

    symbole de linfini infinity

  • Programmation en MAPLE

    HAMMAMI Mohamed Page 2

    3. Fonctions usuelles sous MAPLE

    MAPLE dispose dune librairie de fonctions usuelles prdfinies. En voici un aperu non

    exhaustif

    Lexponentielle exp

    Le logarithme nprien ln ou log

    Le logarithme dcimal log10

    Le logarithme en base b log[b]

    La racine carre sqrt n x pour x et n impair surd(x,n)

    Valeur absolue abs(x)

    Partie entire floor(x)

    Fonctions trigonomtriques cos, sin, tan, cot

    Fonctions hyperboliques cosh, sinh, tanh

    Rciproques des fonctions trigonomtriques arccos, arcsin, arctan

    Rciproques des fonctions hyperboliques arccosh, arcsinh, arctanh

    Fonction scante sec(x)

    Fonction coscante csc(x)

    4. Oprations sur les fonctions

    MAPLE est capable deffectuer les oprations algbriques lmentaires sur les fonctions telles

    que la somme, le produit, etc.

    f + g Somme

    f * g Produit

    f / g Quotient

    f @ g Compose f g

    f @@ n Compose f f (n fois).

    f @@ (-1) Fonction rciproque

    Exemple :

    > f:=cos^2;g:=sin^2;

    := f cos2

    := g sin2

    > h:=f+g;

    := h cos2 sin2

    > h(t);

    ( )cos t 2 ( )sin t 2

    > simplify(%); 1

  • Programmation en MAPLE

    HAMMAMI Mohamed Page 3

    > k:=exp@ln; := k @exp ln

    > k(x); x

    > exp@@(-1); ln

    II. Les procdures avec MAPLE

    1. Description dune procdure Une procdure en MAPLE regroupe un certain nombre dinstructions MAPLE dont

    lexcution peut tre contrle au moyen de tests ou de boucles. Une procdure est nomme et

    sexcute lorsquon lappelle par son nom (comme pour une fonction mathmatique qui est un

    cas particulier dune procdure).

    Toutes les instructions MAPLE peuvent tre utilises au sein dune procdure. Lutilisation de

    tests et de structures itratives permet de raliser des calculs qui ne seraient pas possibles

    autrement avec les instructions prdfinies de MAPLE.

    Au sein dune procdure, on peut provoquer : des entres pour que lutilisateur puisse rentrer des paramtres ncessaires

    lexcution des calculs. des sorties pour afficher les rsultats de la procdure.

    Une procdure communique aussi avec lenvironnement de la feuille de calcul par :

    la liste des paramtres (ou arguments) qui sont joints lappel de la procdure ; ils ne peuvent tre modifis par la procdure.

    lemploi de variables globales, dfinies ailleurs dans la feuille et qui sont utilises et ventuellement modifies par la procdure.

    Une procdure peut par ailleurs possder ses propres variables locales qui sont gres

    indpendamment des variables dfinies ailleurs sur la feuille de calcul (et qui peuvent donc

    porter le mme nom).

    2. Syntaxe dune procdure

    > Nomproc:=proc(arg1::type,arg2::type,...)

    global vg1,vg2,...;

    local vl1,vl2,...;

    ...;

    instructions;

    ...;

    RETURN(res1,res1,...);

    end proc;

  • Programmation en MAPLE

    HAMMAMI Mohamed Page 4

    proc est un mot rserv dfinissant une procdure en MAPLE.

    arg1, arg2, sont les paramtres formels de la procdure. Ce sont des variables

    muettes qui vont servir dcrire la procdure et qui seront remplaces par des variables

    effectives lors de lappel de la procdure.

    local est un mot rserv et vl1, vl2, sont les variables locales utilises dans la

    procdure. Cette ligne est optionnelle. Il est impossible de rappeler en dehors de la procdure

    les valeurs prises par ces variables au sein de la procdure.

    global est un mot rserv et vg1, vg2, sont les variables globales utilises dans la

    procdure. Cette ligne est optionnelle. Les valeurs attribues ces variables peuvent tre

    utilises en dehors de la procdure.

    RETURN est un mot rserv permettant de retourner les sorties de la procdure sous forme

    dune squence. Cette ligne est optionnelle. Par dfaut MAPLE renvoie le dernier calcul

    effectu.

    3. Appel dune procdure

    Une procdure en MAPLE est appele par son nom (Nomproc) comme pour les commandes

    prdfinies de MAPLE, lappel doit se faire avec nouveaux paramtres qui doivent tre

    effectifs.

    > Nomproc(arg1,arg2,...)

    Pour rcuprer la squence des sorties dune procdure MAPLE, pour une ventuelle

    utilisation il faut laffecter en une squence de variables.

    >V1,V2, := Nomproc(arg1,arg2,...)

    Exemples :

    > X:=5;

    := X 5

    > ESSAI1:=proc()#procdure sans paramtres

    local X,Y;

    Y:=3;

    X:=Y+1;

    RETURN(X,Y);

    end proc;

    := ESSAI1 proc() end proclocal ;,X Y ; ; := Y 3 := X Y 1 ( )RETURN ,X Y

    > ESSAI1();X;

    ,4 3

    5

  • Programmation en MAPLE

    HAMMAMI Mohamed Page 5

    Les instructions de la procdure sont traites dans un ordre squentiel. La variable X dfinie

    lextrieur de la procdure nest pas modifie par la procdure bien que cette dernire utilise

    une variable galement nomme X.

    > ESSAI2:=proc(X::integer,Y::integer,n::posint)

    seq(X+Y,k=1..n);

    end proc;

    := ESSAI2 proc( ) end proc, ,::X integer ::Y integer ::n posint ( )seq ,X Y k .. 1 n

    > ESSAI2(8,-3,5);

    , , , ,5 5 5 5 5

    > ESSAI2(8,-3,-3);

    Error, invalid input: ESSAI2 expects its 3rd

    argument, n, to be of type posint, but received -3

    On remarque que par dfaut, MAPLE retourne le rsultat du dernier calcul.

    > f:=x->x^0.6;L:=[1,2,3,4,5,6];

    := f x x.6

    := L [ ], , , , ,1 2 3 4 5 6

    > ESSAI3(L);

    Error, (in ESSAI3) illegal use of a formal parameter

    On remarque que la modification des paramtres passs en entre est strictement interdite. (La

    modification provoque une erreur lors de lappel).

    > L:=ESSAI4(L); := L [ ], , , , ,1. 1.515716567 1.933182045 2.297396710 2.626527804 2.930156052

    Pour modifier la liste, laffectation se fait en dehors de la procdure (lors de lappel).

    Noter que f est dfinie comme tant une variable globale.

    III. Complment de cours (programmation avec MAPLE)

    1. Tests - Comparaisons, oprateurs logiques usuels

    Les oprateurs de comparaisons de MAPLE sont :

    Notation mathmatique Signification Notation MAPLE

    gal =

    diffrent de

    infrieur <

    suprieur >

    infrieur ou gal =

  • Programmation en MAPLE

    HAMMAMI Mohamed Page 6

    Ces oprateurs rpondent true ou false.

    Cependant, un test isol, comme 2 < 5, nest pas valu en MAPLE.

    Pour que lvaluation ait rellement lieu, il faut :

    Soit forcer lvaluation avec evalb.

    Soit quil soit dans une proposition logique, cest--dire avec les oprateurs and, or

    et not.

    Soit que le test se trouve dans une structure conditionnelle.

    > 2 evalb(2 evalb(0.5=1/2);evalb(exp(1/2)=exp(0.5));

    true

    false

    > 2

  • Programmation en MAPLE

    HAMMAMI Mohamed Page 7

    Cela peut en particulier servir pour dfinir les fonctions par morceaux.

    > f:=x->if x>0 then 1 else -1 fi;

    := f proc( ) end procx option ;,operator arrow if then else end if0 x 1 -1

    > plot(f,-2..2,discont=true);

    Noter que la commande piecewise permet aussi de dfinir les fonctions par morceaux.

    > g:=x->piecewise(x>0,x+1,0);

    := g x ( )piecewise , ,0 x x 1 0

    > diff(g(x),x);

    0 x 0

    undefined x 0

    1 0 x

    On dispose galement dune structure conditionnelle multi-cas (imbrique) avec la syntaxe :

    if conditions ; then instructions ;

    elif conditions then instructions ;

    elif conditions then instructions;

    else instructions ; fi ;

  • Programmation en MAPLE

    HAMMAMI Mohamed Page 8

    2. Boucles

    - Boucle non conditionnelle (boucle for)

    Pour un compteur variant entre deux positions, on rpte des instructions.

    for compteur from debut to fin by pas do

    instructions ; od ;

    Le compteur sincrmente avec un pas donn en allant de debut fin.

    > S:=0;

    for i from 2 to 10 by 2 do

    S:=S+i;od:

    S;

    30

    Si on ne prcise pas le pas, il vaut 1, si on ne prcise pas le debut, il vaut 1.

    > for i to 5 do

    print(i);od;

    1

    2

    3

    4

    5

    N.B : si on ne prcise pas la fin, elle vaut (gare aux boucles infinies).

    - Boucles conditionnelle condition dentre

    Tant quune condition (condition dentre) est vrifie, on rpte les instructions.

    while condition do instructions ; od ;

    Exemple :

    Calculer la premire puissance de 2 plus grande que 100.

    > k:=1;

    while 2^k 2^7;

    128

    := S 0

  • Programmation en MAPLE

    HAMMAMI Mohamed Page 9

    - Boucles conditionnelle condition de sortie

    Rpter les instructions jusqu la condition (condition de sortie) soit vrifie.

    do

    instructions ;

    if condition then break fi ; od ;

    N.B : en MAPLE il faut chaque fois tester la condition de sortie et interrompre lexcution

    via la commande break en cas o la condition est vrifie.

    > k:=0;

    do

    k:=k+1;

    if 2^k>100 then break fi;od:

    k;

    := k 0

    7