Dr. M. EL MOUDEN Anne Universitaire 2010-2011 Table des matires Table des matires 1) Introduction ) 2) Arithmtique 3) F ti 3) Fonctions 4) Graphique 4) Graphique 5) Analyse 6) Programmation MAPLE est un langage de manipulation symbolique qui permet: symbolique qui permet: d'accder une large bibliothque de d accder une large bibliothque de fonctions trs bien adaptes, de raliser aussi bien des calculs numriques que des calculs formels. 1. Commandes Maple de base. 1 1 Calculs numriques 1.1 Calculs numriques. 1.2 Calculs sur des nombres "spciaux". 1 3 Quelques fonctions mathmatiques 1.3 Quelques fonctions mathmatiques. 1.4 Calculs symboliques. 2 Reprsentation Graphique 2. Reprsentation Graphique. Au dmarrage d'une session; MAPLE affiche un prompt . L'utilisateur peut alors lui demander d'excuter "quelque chose". Pour cela il doit rentrer au clavier une assertion MAPLE. l fi d h d M l il it la fin de chaque commandes Maple, il y a un soit: Un point-virgule (;) Maple affiche le rsultat du calcul D i t ( ) M l ff t l l l i Deux points (:) Maple effectue le calcul, mais ne l'affiche pas. Si l'on ne mets rien la fin d'une ligne et qu'on la valide (en Si l'on ne mets rien la fin d'une ligne et qu'on la valide (en appuyant sur la touche [entre]), Maple affiche alors un " warning" (attention en anglais) signalant une fin prmature de warning (attention en anglais) signalant une fin prmature de la commande. 1 2 > 1+2; > 1+2: > 3*7*15 > 3 7 15 > : Si l'on appuie sur [entre] la fin d'une ligne, Maple essaie de calculer ce qu'on a crit essaie de calculer ce qu on a crit. On peut cependant crire plusieurs lignes de calcul en appuyant la fin d'une ligne simultanment sur les touches [shift] et [entre] (ce que l'on note dans la littrature par [shift]+[entre]) [shift]+[entre]). > 1+2; 3+4: Rappel du dernier calcul Dans le langage Maple, le caractre pourcent (%) permet de rappeler la valeur du dernier calcul effectu par la machine. Ce n'est pas ncessairement le dernier calcul affich Ce n'est pas ncessairement le dernier calcul affich. De mme, (%%) permet de revenir deux calculs en arrire et De mme, (%%) permet de revenir deux calculs en arrire et (%%%) permet de rappeler 3 calculs.etc Pour indiquer une multiplication ou une division, il faut toujours mettre une toile (*) ou un slash(/) entre les facteurs > (%); 4*8*758*248*1258; (%%%); 8/4; 7/8; Maple calcule la longueur (le nombre de chiffres) du rsultat qu'il calcule, en utilisant la commande : length > length(4*8*758*248*1258); Pour indiquer un factoriel, il faut toujours mettre un point q , j p d'exclamation (!) la fin du nombre: 50! > 50!; > length(%); Une variable muette est donne par une lettre ou un mot > x; fonc; 5*x; fonc; > x; fonc; 5*x; fonc; Ici, si on tape 5x la place de 5 x, Maple va retourner un 'warning' signalant qu'il manque un oprateur ou un un warning signalant qu il manque un oprateur ou un point-virgule. Notez que lorsque Maple affiche un 'warning' le curseur Notez que lorsque Maple affiche un warning , le curseur se place l'endroit o l'erreur t rencontre. > 5x;; Mais x5 "x attache 5" sera considre comme variable (5 jouera le rle d'indice) > x5; > x 5; > 5*x; > 5 x; L'exposant d'une variable peut scrire de deux manire diffrentes: > y:=x**2; z:=y^3; U bl M l t l id Aid li Un problme: Maple est l pour vous aider Aide en ligne. Maple dispose d'une aide en ligne (trs pratique lorsqu'on a oubli comment se servir d'une fonction ou d'une commande) oubli comment se servir d une fonction ou d une commande). Celle-ci s'obtient en tapant un point d'interrogation avant le nom de la fonction. ,Notez qu'il n'y a pas de point-virgule aprs cette commande. > ?sin ou encore ou encore > help(sin) soit encore sur le site web officiel de Maple: http://www.maplesoft.com Attribution des variables Pour attribuer une valeur une variable, on se sert de la commande (:= ) (comme dans le langage Pascal). Par commande (: ) (comme dans le langage Pascal). Par exemple, supposons que l'on veuille donner x la valeur de 5, on procde comme suit : >x:=5; v:=8; Le maple mmorise tout ce qui a t excut. > y; z; > y; z; Jusqu' la fin des calculs, x sera gal 5. Pour supprimer la valeur affecte x, on se sert de la commande unassign(..), valeur affecte x, on se sert de la commande unassign(..), comme dans l'exemple suivant : > unassign('x'); > x; et aussi. > v; y; z; > v; y; z; R-initialisation On r-initialise une feuille de calcul, par la commande restart, pour , p , p supprimer la valeur de x, et aussi de toutes les autres variables. > restart; >> x; y; z; v; Commentaires Commentaires Lorsqu'on veut crire un commentaire dans ses calculs, on crit une dise (#) suivi du commentaire. Tout ce qui sera aprs la dise ne sera pas pris en compte dans l'valuation par Maple de la feuille de calcul > # Ceci est un commentaire : on fait du maple Vive la > # Ceci est un commentaire : on fait du maple Vive la PARESSE. # Suggestion au commentaire : on ne fera plus de CALCUL. gg p # Rponse la suggestion : mon OEIL, tu parles. > sin(x) + cos(y); # Ceci est un autre commentaire. # i ( ) ' t t i l # sin(x); <- c'est un commentaire, a ne sera pas valu. > # ceci est un commentaire; sin(x)+cos(x); x; Calculs numriques Evaluation La commande evalf(...), qui signifie "evaluate foating" permet dvaluer une approximation numrique des calculs effectus. > 5/3; > 5/3; evalf(%); Maple donne les rsultats dans leur forme la plus formelle. p p Pour les calculs numriques on doit donner des instructions tel que evalf(...). 1 /2 3/10 > 1./2+3/10; Cependant, si l'on ajoute un point (.) la fin d'un nombre, Maple pense alors que le nombre en question est un rel (et non Maple pense alors que le nombre en question est un rel (et non plus un entier ou un rationnel) et donnera le rsultat sous forme d'un nombre rel. Lorsqu'on crit 1., cela signifie pour Maple le q , g p p nombre 1.0. > 1 /2+3/10; > 1./2+3/10; > Pi; > evalf(Pi); ( ); > ln(2); > evalf(%); l (2 ) > ln(2.); > exp(1); > evalf(%); > evalf(%); > sin(90.): > sin(180.): ( ) > sin(Pi/2): > sin(Pi): , Remarquer que l'argument l'intrieur d'une parenthse d'une fonction circulaire est en radians fonction circulaire est en radians. > ln(exp(-5)); exp(ln(-5)); exp(ln(-5)); exp(ln(-5.)); Trop de chiffres aprs la virgule Ce n'est pas un problme: Il existe une commande Maple pour fi l b d hiff ffi h il ' it d l d fixer le nombre de chiffre afficher, il s'agit de la commande Digits:=n. Par dfaut, Maple affiche 15 chiffres au total (partie entire et partie dcimale) entire et partie dcimale). > sin(0.2); n:=4; Digits:=n; ; g ; sin(0.2); T l hiff i i t ' ffi h t hiff Tous les chiffres qui viennent aprs s'afficheront n chiffres aprs la virgule > sin(0 2); evalf(% 8); > sin(0.2); evalf(%,8); > 5/7.; Calcul symbolique Pour dvelopper une expression, on utilise la commande expand(...), pp p ( ) Pour la simplifier, on utilise la fonction simplify(...) Pour la factoriser, on utilise la commande factor(...). > (1+x)^2; > (1+x) 2; expand(%); factor(%); simplify(cos(x)^2 + sin(x)^2); > y:=(1+x)*(3-2*x^2); > z:=expand(y); > z:=expand(y); > factor(z); > y:=cos(x)^2+sin(x)^2; > expand(y); factor(y); simplify(y); simplify(y); > y:=(x^2-1)/(x-1); expand(y); p (y); factor(y); simplify(y); Quelques fonctions de base Maple connait un grand nombre de fonctions mathmatiques Maple connait un grand nombre de fonctions mathmatiques de base (certainement beaucoup plus que vous mme en connaissez) et il est possible dvaluer ces fonctions un point ) p p donn. > restart; > restart; x:=Pi; ln(x); exp(x); sin(x); sinh(x); tan(x); Reprsentations graphiques Maple permet galement de tracer n'importe quelle fonction, aussi bien sur le plan que dans l'espace aussi bien sur le plan que dans l espace. Pour commencer, on utilisera l'instruction plot(...). >plot( x^2, x=-5..5); >plot( sin(x^2) x=0 5); >plot( sin(x^2), x=0..5); >plot3d(x*sin(y+x), x=-5..5, y=-5..5); >plot3d(x*sin(y)*exp(-x*y), x=-1..1, y=-1..1); plot3d(x sin(y) exp( x y), x 1..1, y 1..1); Exercices (Srie1) Solutions Solutions Solutions 1. Nombres complexes. 2 Operations d'arithmtiques 2. Operations d arithmtiques. 3. Calculs sur les polynmes. 4 Equations 4. Equations. Nombres complexes Maple sait faire peu prs n'importe quel calcul sur les nombres complexes. p En langage Maple, I (i majuscule) dsigne une racine carr du nombre -1, c'est dire le nombre tel que I 2 = -1. Maple peut dcomposer toujours le rsultat sous la forme habituelle a+ib, dans le cas d'une reprsentation numrique. > i*i; I*I; > i i; I I; > z1:=a+I*b; z2:=c+I*d; > z0:=z1+z2; z3:=z1*z2; z4:=z1/z2; ; ; ; D'autres exemples : > (2+5*I)+(1-I)+5*(3+6*I); (4 6*I) * ( 9*I) (4+6*I) * (7 - 9*I); (1+I)/(3-2*I); (2+8*I)^2; (2+8 I) 2; Maple possde des commandes spcifique aux calculs sur le b l nombres complexes : La plus usuelle est la commande evalc( ) qui simplifie une La plus usuelle est la commande evalc(...), qui simplifie une expression complexe sous la forme a + ib. , ne pas confondre avec la commande evalf(...), qui permet dvaluer une approximation numrique des l l ff t calculs effectu > evalc(z3); evalc(z4); > evalc(z3); evalc(z4); La commande conjugate(...) donnera son conjugu. > z5:=sqrt(3)+I; # Un nombre complexe 6 j t ( 5) # S j z6:=conjugate(z5); # Son conjugu La commande Re(...) donne la partie relle d'une expression complexe. p La commande Im(...) donne la partie imaginaire d'une i expression. > z5:=sqrt(3)+I; # Un nombre complexe > z5:=sqrt(3)+I; # Un nombre complexe rez5:=Re(z5); # Sa partie relle imz5:=Im(z5); # Sa partie imaginaire ( ) p g La commande abs(...) donnera le module d'un complexe. La commande argument(...) donnera son argument. > z5:=sqrt(3)+I; # Un nombre complexe absz5:=abs(z5); # Son module argz5:=argument(z5); # Son argument argz6:=argument(z6); Dautres exemples: > z7:=2^(3-4*I); argument(z7); g ( ) evalf(abs(z7)); evalc(z7); lf(%) evalf(%); > z8:=2*ln(3-4*I); argument(z8); argument(z8); evalf(abs(z8)); evalc(z8); evalf(%); E d' t l Encore d'autres exemples: > evalc(Im((3+5*I)*(7+4*I))); > evalc(Im((3+5 I) (7+4 I))); > evalc(conjugate(exp(2*I))); evalf(%); Reprsentation usuelle et reprsentation polaire Un complexe peut tre galement reprsent de faon polaire, c'est dire sous la forme e (Iu) , o est son module et u son , argument. Pour avoir une telle reprsentation, on utilise la commande polar(, u) > z:=a+b*I; abs(z); argument(z); convert(z,polar); > zp1:=polar(1, Pi/6); # le nombre complexe de module 1 et d'argument Pi/6 l ( 1) evalc(zp1); > zp3:=polar(2 Pi/3); evalc(zp3); > zp3:=polar(2,Pi/3); evalc(zp3); Pour mettre un nombre de la forme a + ib en forme polaire, on utilise la commande convert( polar) utilise la commande convert(..., polar) . > zp2:=convert(sqrt(3)-I,polar); # On met sous forme polaire le p ( q ( ) ,p ); p nombre sqrt(3)-I evalc(zp2); > # On met sous forme polaire le nombre 3-4*I convert(3 4*I polar); convert(3-4 I,polar); > # Rciproquement, pour passer de la forme polaire la forme p q , p p p usuelle, on utilise la commande evalc(...), que nous avons dj vu. l (%) evalc(%); > zp3:=polar(2 Pi/3); evalc(zp3); > zp3:=polar(2,Pi/3); evalc(zp3); Operations d'arithmtiques Maple sait galement faire de nombreuses oprations Maple sait galement faire de nombreuses oprations d'arithmtique. Il peut faire des calculs des pgcd et ppcm, donner ne factorisation d' n nombre en nombres premiers donner une factorisation d'un nombre en nombres premiers, dterminer le n ime nombre premier etc dterminer le n nombre premier, etc.. pgcd, ppcm et factorisation d'entiers Pour le Plus Grand Commun Diviseur (pgcd) de deux, trois, ou plus, nombres entiers se calcule l'aide de la commande i d( ) ( I t G t C Di i ) igcd(...) (pour Integer Greater Common Divisor ). le pgcd se calcule comme suit : i d(616 1834 56) > igcd(616,1834,56); igcd(24,4); igcd(6160 8372 56); igcd(6160,8372,56); Pour le Plus Petit Commun Multiple (ppcm) de deux, trois p (pp ) ou plus, nombres entiers se calcule grce la commande ilcm(...) (pour Integer Less Common Multiple ). le ppcm se calcule comme suit : > ilcm(35,235); il (38 341) ilcm(38,341); ilcm(6,9,18); La commande ifactor(...) permet de factoriser des nombres entiers en facteurs premiers entiers en facteurs premiers. ,Notez que cette commande a un certain nombre d'options qui ,Notez que cette commande a un certain nombre d options qui permettent de choisir la mthode de factorisation. Regardez l'aide-en-ligne ce sujet. Pour factoriser un nombre en nombres premiers : > ifactor(1733398734375000); ifactor(2850375285); > ifactor(1733398734375000); ifactor(2850375285); ifactor(123456789); Nombres premiers Un nombre premier est un nombre entier dont les diviseurs positifs sont 1 et par lui-mme. Par convention: 1 n'est pas premier. p p 24 n'est pas premier car il est divisible (au moins) par 2. 23, par contre, est un nombre premier. La commande ithprime(...) permet d'afficher le i-me nombre premier. , Notez que le premier nombre premier est 2. Pour savoir si un nombre est premier on se sert de la Pour savoir si un nombre est premier, on se sert de la commande isprime(...). P t l l tit b i i d Pour connatre le plus petit nombre premier qui succde un nombre donn, on se sert de la commande nextprime(...). P it l i me b i Pour connaitre le i me nombre premier. > ithprime(1); ithprime(11); ithprime(23); ithprime(31); Pour savoir si un nombre est premier : > isprime(357649); isprime(4); isprime(3807); Pour connatre le plus petit nombre premier qui succde un b d nombre donn : > nextprime(29); nextprime(275); nextprime(8723); Pour connatre le plus petit nombre premier qui prcde un nombre donn : > prevprime(29); prevprime(275); prevprime(8723); > prevprime(7); nextprime(7); Calculs sur les polynmes Le travail le plus simple sur les expressions symboliques concerne: les polynmes. V i i t i b d l l l t i l Voici un certains nombres de calculs lmentaires sur les polynmes : > P1:= 3 * x^2 + 4 * x + 7; # On assigne P1 un polynme > P1:= 3 x 2 + 4 x + 7; # On assigne P1 un polynme. P2:= x^3 - 1; # On assigne P2 un polynme. On calcule le carr de P1: > P1^2; On calcule le rapport de P1 / P2: P1/P2 > P1/P2; On value P1 et P2 respectivement aux points x = 2 et x = - 4 Pour cela on utilise la commande eval( x= ): x 4. Pour cela on utilise la commande eval(..., x=...): > eval(P1, x=2); eval(P2, x=-4); eval(P2/P1, x=-1); De mme on peut dvelopper, factoriser, simplifier et ordonner des polynmes, grce aux commandes expand(...), factor(...), collect(...), simplify(...) et sort(...). La commande expand(...) La commande expand(...) permet de dvelopper un polynme. ( ) y > p1:=(x+1)*(x+2); p2:=(x-y)*(x^2+x*y+y^2); 3 (3* +10)*(7* +6)*( +3) p3:=(3*x+10)*(7*x+6)*(x+3); p1:=expand(p1); p2:=expand(p2); p3:=expand(p3); La commande factor(...) La commande factor(...) permet de factoriser un polynme. > P3:=21*x^3+151*x^2+324*x+180; P3:=factor(P3); P4 14* ^4 23* ^3 347* ^2+575* 75 P4 f t (P4) P4:=14*x^4-23*x^3-347*x^2+575*x-75; P4:=factor(P4); P5:=x^2 - 1; P5:=factor(P5); P6:=x^2 - 2; P6:=factor(P6); P6: x 2 2; P6: factor(P6); La factorisation se fait dans le plus petit corps qui contient les coefficients du polynme. Remarquons la diffrence entre les deux expressions suivantes : > P6:=factor(P6); P7:=x^2 2 ; P7:=factor(P7); > P6:=factor(P6); P7:=x^2 - 2.; P7:=factor(P7); Cette commande permet galement de factoriser un polynme Cette commande permet galement de factoriser un polynme plusieurs variables. > factor(x^3-y^3); La commande collect( ) La commande collect(...) La commande collect(...) permet de grouper les termes d'une expression suivant une variable donne, collect(......, nom de la variable) . > P * ^3 + * ( ^2+1)*(2* 2)+ ^2*( ^2+4* +2)+4 > Po:=a*x^3 +y*x-(x^2+1)*(2*y-2)+x^2*(y ^2+4*y+2)+4; Po:=collect(Po , x); Po:=collect(Po, y); On peut factoriser une expression suivant plusieurs variables, en respectant l'ordre des variables. > collect(Po,[x,y]); collect(Po,[y,x]); > P1:= x*y+x*y^2+a*x*y+y*x^2-a*y*x^2-a*x*y^2+y+x+a*x+a*y; > collect(P1 [ ]) collect(P1 [ ]) > collect(P1,[x,y]); collect(P1,[y,x]); La commande simplify(...) La commande simplify(...) permet de simplifier une expression. ,Attention, cependant, cette commande ne donne pas toujours le rsultat voulu (Maple oublie parfois certaines simplifications le rsultat voulu (Maple oublie parfois certaines simplifications videntes, mais c'est relativement rare). > P1:=x^5-3*x^3-x^4+2*x+4; P2:=x^4+x-2*x^3-2; R:=P1/P2; > R:=simplify(R); La commande sort(...) La commande sort(...) permet de classer les coefficients d'un polynme suivant la valeur dcroissante des puissances. > Pol:=x+x^2 - x^3+7 - x^6 + x^22; P l t(P l) # O t i l l l i bl Pol:=sort(Pol); # On trie le polynme une seule variable. Si l'on a un polynme plusieurs variables on peut bien sr Si l on a un polynme plusieurs variables, on peut bien sr prciser l'ordre dans lequel on veut classer le polynme. > poly2:= x*y^3 - 2*x^2*y^5 + 4*x*y^4 + y^8+x^7; # On trie polynme deux variables. pol 2 sort(pol 2 [ ]) # On trie pol 2 s i ant p is poly2:=sort(poly2,[x,y]); # On trie poly2 suivant x puis y. poly2:=sort(poly2,[y,x]); # On trie poly2 suivant y puis x. La commande normal(...) La commande normal( ) permet de mettre des fractions de La commande normal(...) permet de mettre des fractions de polynmes au mme dnominateur. > ploy1:=1/(1+2*x^2) + 2*x/(1+x) + 3*x^2/(4-x^3) - 2*x^3/(3+x+x^4); # Un polynme plusieurs variables ploy1:=normal(%); > poly2:=y/(1+2*y^2) + 2*x*y/(1+x); # Un polynme plusieurs > poly2:=y/(1+2 y 2) + 2 x y/(1+x); # Un polynme plusieurs variables ploy2:=normal(%); p y ( ); La commande degree(...) La commande degree(...) permet d'obtenir le degr d'un polynme polynme. Si le polynme a plusieurs variables, on peut prciser suivant p y p , p p quelles variable on veut le degr. Si l'on ne prcise pas la variable, on obtient le degr total de l'expression. > P:= 4*x^5 + 3*x^4 - 8*x +2; degree(P); Q:= 4*y^2*x^4 + 12*y^5 + 7*x^2*y^2 + 7; degree(Q); y y y ; g ( ); degree(Q,x); degree(Q,y); La commande coeff(...) La commande coeff(...,x^n) permet d'obtenir la valeur d'un coefficient du terme de degr n du polynme considr. g p y La commande lcoeff(...) permet d'obtenir le coefficient du terme de plus haut degr ("l" inital pour "lead"). > P:= 4*x^5 + 3*x^4 8*x +2; > P:= 4 x 5 + 3 x 4 - 8 x +2; coeff(P, x^4); coeff(P, x^2); lcoeff(P); La commande gcd( ) et lcm( ) La commande gcd(...) et lcm(...) Le Plus Grand Commun Diviseur (pgcd) de deux, trois, ou plus, polynmes se calcule l'aide de la commande gcd(...) (pour Greatest Common Divisor ). Le Plus Petit Commun Multiple (ppcm) de deux, trois ou plus polynmes entiers se calcule grce la commande lcm( ) plus, polynmes entiers se calcule grce la commande lcm(...) (pour Less Common Multiple ). > P:= 1/2*x^3 - 1/2; Q:= x^2 - 1; > gcd(PQ) lcm(PQ) > gcd(P,Q); lcm(P,Q); Equations Equations En Maple, la rsolution des quations se fait avec les En Maple, la rsolution des quations se fait avec les commandes solve(...) (effectivement quand la mthode analytique le permet). Notez que si l'on met l'inconnue entre accolades ({ }), alors Maple prcise de quelle variable on parle par exemple dans Maple prcise de quelle variable on parle par exemple dans l'quation suivant c'est x et non pas y. La prcision des variables est importante dans des expressions thoriques, sinon Maple peut rserver des drles de surprises. . .voir exemple ci dessous: > eqn:= x^2 - y = 0; solve(eqn); ( q ); solve(eqn, x); solve(eqn, y); l ( { }) solve(eqn, {x}); solve(eqn, {y}); > eqn:= x^3 +2*y*x = 0; > eqn:= x 3 +2 y x = 0; solve(eqn); solve(eqn,x); ( q ) > eqn := a * x^2 + b * x + c = 0; solve(eqn); l ( ) solve(eqn,x); > eqn := x^4 - 3 * x^2 + x + 1 = 0; solve(eqn x); solve(eqn,x); > fsolve(eqn,x); > fsolve(eqn,x=0..2); ,Notez que l'expression eqn est dfinie comme une quation et non pas comme une variable. Systmes dquations Systmes d quations Maple ne se limite pas la rsolution des systmes linaires, mais bien au contraire, il peut rsoudre des systmes nettement plus compliqus plus compliqus. > restart; {x+2*y=3, x+y =1 }; ; { y , y }; > solve({x+2*y=3, x+y =1 }, {x,y}); La commande assign(...) et unassign(...) On peut forcer Maple pour qu'il donne une valeur prcise un nom donn, l'aide de la commande assign(...) . , g ( ) > sys3:={u+v=1, 2*u+v=3}; sol3:=solve(sys3,{u,v}); On note que u et v sont encore considr par Maple comme des variable sans valeur prcise des variable, sans valeur prcise > u,v; Si on veut donner u et v les valeurs solution du systme prcdent, on fait comme suit : i ( l3) > assign(sol3); u,v; sys3; sys3; Pour redonner le statut de variable u et v on utilise la commande unassign( ) commande unassign(...) . > unassign('u'); u,v; , ; > unassign('u','v'); u,v; , Note: la commande restart permet de rinitialiser Maple ce , Note: la commande restart permet de rinitialiser Maple, ce qui peut tre utile, parfois. La commande allvalues( ) La commande allvalues() Parfois,.........pour un systme un peu plus complexe......... , p y p p p > sys:={x^2+y=1,x^2-y^2=2}; > solve(sys,{x,y}); La rponse n'est que partielle! plutt que de calculer une solution Maple donne un rsultat en plutt que de calculer une solution, Maple donne un rsultat en RootOf(...) . Si l'on veut toutes les solutions, il suffit de se servir de la commande allvalues(...) . > allvalues(%); # On veut toutes les solutions. Solutions numriques > poly1:=3*x^4-16*x^3-3*x^2+13*x+16; > solve(poly1,x); l 2 23* ^5 105* ^4 10* ^2 17* > poly2:=23*x^5+105*x^4-10*x^2+17*x; > solve(poly2,x); > allvalues(%); # On veut toutes les solutions > allvalues(%); # On veut toutes les solutions. La commande fsolve(...) permet d'obtenir des solutions ( ) p numriques ('f' veut dire 'floating'). P ti i l i l ti (l i d' Pour une quation qui a plusieurs solutions (les racines d'un polynme, par exemple), fsolve(...) ne donnera pas obligatoirement toutes les solutions elle ne donne par dfaut que obligatoirement toutes les solutions, elle ne donne par dfaut que les racines relles. Pour les racines complexes, il faudra utiliser la commande allvalues(...). > fsolve(poly1 {x}); > fsolve(poly1,{x}); > fsolve(poly2,{x}); fsolve(...) a beaucoup d'options. Par exemple, on peut spcifier dans quel intervalle on veut la solution: > fsolve(poly1, x, 2..8); # Ses racines entre 2 et 8. ou bien spcifier que l'on veut les racines complexes: > fsolve(poly2, {x}, complex); # Ses racines complexes. Ell bi ill d ll Elle est bien gentille cette commande; elle me retrouve toutes mes solutions La commande isolve(...) Ces commandes sont utiles lorsqu'on cherches des solutions entires de certaines quations [pour la relation de Bezout, par l + + + d( )] exemple: a 0 n 0 + a 1 n 1 + a 2 n 2 +... = pgcd( n 0 , n 1 ,n 2 , ...)]. La commande isolve(...) permet de donner des solutions La commande isolve(...) permet de donner des solutions entires d'une quation. > isolve({5*x-3*y=4}); # Solutions entires de 5x - 3y = 4 > solve({x+7*y=1,3*x+2*y=2}); Exercices (Srie2) Exercices (Srie2) Solutions Exercice 1. a) > z[1] := 6+I*Pi ; convert(z[1], polar); b) b) > z[2] := (3-6*I)^(3*I); Re(z[2]); Im(z[2]); > argument(z[2]); argument(z[2]); > abs(z[2]); > sqrt(Re(z[2])^2+Im(z[2])^2); simplify(%); c) > z[1] := -1+I ; abs(z[1]); argument(z[1]); > z[2] := 2*I ; abs(z[2]); argument(z[2]); > z[2] := 2*I ; abs(z[2]); argument(z[2]); > z[3] :=z[1]/z[2] ; > convert(z[3],polar); convert(z[3],polar); > z[3]^n ; Exercice 2. a) > x1 :=1049427; x2 :=17493; x3 :=igcd(x1,x2); isprime(x3); > ifactor(x1); ifactor(x2); ifactor(x3); > ifactor(x1); ifactor(x2); ifactor(x3); > x4 :=ilcm(x1,x2); ifactor(x4); # Non demand dans l'exercice b) b) > ithprime(500); c) > x5 := 200! ; ifactor(x5); > x6:=2^49*5^49; # il faut penser aux facteurs premiers de 10. > x5/x6; > x5/x6; Exercice 3. ) a) > p[1] := x^4-1; p[2] := x^3+x^2-5*x-5; > p[1] :=factor(p[1]); p[2] :=factor(p[2]); > p[1] :=factor(p[1]); p[2] :=factor(p[2]); b) > restart;; > poly := (x^2-a)*(x*y+b)*(x^4-y^4)*(3*x+z)*(z-x) ; > poly1 := expand(poly); poly2 := simplify(poly1); l 3 i lif ( l ) l 4 f t ( l ) # N > poly3 := simplify(poly); poly4 := factor(poly); # Non demand dans l'exercice > sort(poly1 x); > sort(poly1,x); > sort(poly1,[x,y]); > sort(poly1,[x,y,z]); (p y ,[ ,y, ]); > sort(poly1,[x,z]); > sort(poly1,[x,z,y]); ff( l ^5) l ff( l ) > coeff(poly, x^5); lcoeff(poly); Exercice 3.(suite) b) > degree(poly); degree(poly x); degree(poly y);degree(poly y); > degree(poly); degree(poly,x); degree(poly,y);degree(poly,y); # non demand dans l'exercice > collect(poly,x); # non demand dans l'exercice (p y, ); > collect(poly,[x,y]); # non demand dans l'exercice > collect(poly,[x,y,z]); # non demand dans l'exercice ll t( l [ ]) # d d d l' i > collect(poly,[x,z]); # non demand dans l'exercice > collect(poly,[x,z,y]); # non demand dans l'exercice Exercice 4. a) > p := a*x^3+b*x^2+c*x+d ; > l ( 0 ) > solve( p=0, x); b) > eq := exp(x)-3*x; > eq : exp(x) 3 x; > solve( eq=0, x); > plot(-LambertW(x), x); > plot(LambertW(-1,x), x=-0.5..0.1); c) > eq1:= x+2*y+3*z+4*t+10 = 41; > eq1:= x+2*y+3*z+4*t+10 = 41; eq2:= 8*x+ 4*z+3*t+4 = 11; eq3:= x+ y+ z+ t+2 = 9; eq3: x y z t 2 9; eq4:= 3*y+4*z-8*t+4 = 125; > solve({eq1,eq2,eq3,eq4}, {x,y,z,t}); > solve({eq1,eq2,eq3}, {x,y,z}); # t sera considr comme un paramtre Exercice 4. (suite) d) > eq1:= x+ y+2*z = 2; eq2:= 2*x+3*y+ z = 4; eq3:= x-y+5*z = 7; > solve({eq1,eq2,eq3},{x,y,z}); e) e) > eq1:= x^2+ y^2 = 3; eq2:= x^2+2*y^2 = 3; > solve({eq1,eq2},{x,y}); ({ q , q },{ ,y}); > allvalues(%); f) > fonc:= tan(x)-x; > solve(fonc); > allvalues(%); > allvalues(%); > fsolve(fonc=0,x); > plot(tan(x)-x,x); p ( ( ) , ); > fsolve(fonc=0,x=1..6); g) f ( i ( )) > fonc:=tan(sin(x)); fsolve(fonc=1,x=-Pi..Pi); 1. Fonctions. 1 1 Fonctions plusieurs variables 1.1 Fonctions plusieurs variables, 1.2 Fonctions composes, 1 3 Suites 1.3 Suites, 2. Limites. 3 Drivs 3. Drivs. 3.1 Drives partielles, 3 2 La commande D 3.2. La commande D, 4. Intgrales. Remarques prliminaires On peut, avec Maple, afficher quelque chose sans le calculer. Il suffit de mettre des apostrophes (') au dbut et la fin de ce qu'on crit. Si l'on veut insrer une espace il faut alors crer une Si l'on veut insrer une espace, il faut alors crer une chaine. Pour ce faire, il faut utiliser les guillemets anglais ("). Par exemple : > 'sin(Pi)' = sin(Pi); "a marche"; Pour plus de dtail utilisez l'aide du Maple Pour plus de dtail, utilisez l aide du Maple > ?' > ?" ? > restart; Fonctions Fonctions Une fonction sous Maple se dfini de la faon suivante : nom de la fonction:= variable(s) > definition de la fonction nom_de_la_fonction:= variable(s)-> definition_de_la_fonction > f := x->f (x) ( ) , Il est possible de dfinir une fonction en utilisant la commande unapply(fonction,variable): > f := unapply(2*exp( x^2) x/2 x); > f := unapply(2 exp(-x^2)-x/2, x); Fonctions usuelles Exemple de fonction sous Maple: > g(x)=2*x^2-3*x+4; > g(x)=2 x 2-3 x+4; > f:=x->2*x^2-3*x+4; L'expression de la fonction: p > 'g(x)'=g(x); > 'f(x)'=f(x); V l d l f ti 2 Valeur de la fonction pour x=2: > 'g(2)'=g(2); # l'criture de g(x) ne dfinie pas une fonction. > 'f(2)'=f(2); > f(2) =f(2); > plot(f(x), x=-5..5); Un autre exemple de fonctions: p > f:=x->x^2; 'f(5)' = f(5); 'f( 1)' f( 1) 'f(y+1)' = f(y+1); Fonctions plusieurs variables Fonctions plusieurs variables Une fonction plusieurs variables est dfini de la mme manire qu'une fonction une seule variable, soit: > f := (x,y) -> sin(x)*cos(y); Sa valeur en un point donn (x,y) du plan est obtenue par: > 'f(x,y)' = f(x,y); f(x,y) f(x,y); 'f(15,2)' = f(15,2); 'f(Pi,7)' = f(Pi,7); 'f(8,Pi/2)' = f(8,Pi/2); Le graphe d'un telle fonction (n'oubliez pas que c'est un Le graphe d un telle fonction (n oubliez pas que c est un graphe en trois dimensions) : > plot3d(f(x,y), x=-5..5, y=-4..4); plot3d(f(x,y), x 5..5, y 4..4); Fonctions composes Maple sait composer des fonctions entres-elles. On se sert de l'oprateur @: ( i @ )( ) > (sin@cos)(x); Un autre exemple plus explicite: Un autre exemple plus explicite: > g := x -> x^n +a; h := y -> ln(y); y (y) 'g(h(x))' = (g@h)(x); 'h(g(x))' = (h@g)(x); On peut galement composer une fonction par elle-mme. On utilise alors l'operateur @@: utilise alors l operateur @@: > 'g(x)' = g(x); '(g@@2)(x)' = (g@@2)(x); '(g@@3)(x)' = (g@@3)(x); '(g@@4)(x)' = (g@@4)(x); U l d f i Un autre exemple de fonction compose: > (sin@arcsin)(x); L'operateur @@(-1) permet galement de dfinir la fonction inverse: > (sin@@(-1))(x); > (sin@@(-2))(x); expand(%); ( @@( 1))( ) > (exp@@(-1))(x); > (exp@@(-2))(x); expand(%); > (ln@@(-1))(x); > (ln@@(-1))(x); k1 := x -> (ln@@(-1))(x); k2 := x -> (ln@@(-2))(x); ( @@( ))( ); 'k1(x)'=k1(x); 'k1(x)'=expand(k1(x)); 'k2(x)'=k2(x); 'k2(x)'=expand(k2(x)); Suites dfinies par des fonctions p Les suites dfinies par des fonctions sont des fonctions "comme les autres", si ce n'est qu'elles sont dfinies dans au lieu de 9. > u := n > 3*ln(n) + 4; > u := n -> 3 ln(n) + 4; Les suites sont en gnrales indexes (u n ), pour indiquer g ( n ), p q l'indice n on utilise l'instruction [n] devant la fonction indexer. > 'u[n]'=u(n); ' [1]' (1) 'u[1]'=u(1); 'u[4]'=u(4); ,Note : Si on dfinie la suite par u 0 et u n =f (u n-1 ) alors on a u n = (f (n) )(u 0 ) n ( )( 0 ) Limites La syntaxe pour calculer la limite de la fonction f au point a La syntaxe pour calculer la limite de la fonction f au point a est de la forme suivante : limit(f(x), x = a) Voici quelques exemples : > limit(sin(x)/x,x=0); ( ( ) , ); > limit(exp(x^2)*(1-erf(x)), x=infinity); > plot(exp(x^2), x=-5..5); l t((1 f( )) 5 5) > plot((1-erf(x)), x=-5..5); > limit((1+x)^(1/x), x=0); > limit((1+x^2+3*x^3)/(2-3*x+x^3) x=infinity); > limit((1+x 2+3 x 3)/(2-3 x+x 3), x=infinity); Si on veut juste crire la limite d'une fonction sans l'valuer, il suffit de mettre une majuscule Limit(f(x) x = a) (L en suffit de mettre une majuscule Limit(f(x), x = a) (L en majuscule). > Limit(sin(x), x=0); Limit(sin(x), x 0); > Limit(sin(x)/x,x=0) =limit(sin(x)/x, x=0); Limit((1+x)^(1/x),x=0) =limit((1+x)^(1/x), x=0); De nombreuses options sont disponibles concernant la direction o vous voulez calculer la limite (si vous voulez calculer l li it h d it l ) la limite gauche ou droite par exemple). Pour ces deux dernires limites on utilise les instructions: limit(f(x), x = a, left) ou limit(f(x), x = a, right) . , Notez que Maple a le courage de vous dire si une limite n'est q p g pas dfinie. > plot(floor(x), x); # Fonction escalier li it(fl ( ) 1) > limit(floor(x), x=1); > limit(floor(x), x=1, right); > limit(floor(x) x=1 left); > limit(floor(x), x=1, left); La notion de la limite est tendue mme pour des fonction plusieurs variables: plusieurs variables: > limit((x^2-y^2)/(x^2+y^2), {x=0, y=0}); > limit(x+1/y, {x=0, y=infinity}); limit(x 1/y, {x 0, y infinity}); > limit(x*y, {x=0, y=infinity}); > limit((sin(x^2)-sin(y^2))/(x-y), {x=0, y=0}); Drives Drive d'une fonction usuelle L d i " di i " ti l t t f it Les drives "ordinaires" ou partiels peuvent tre faite en utilisant la commande diff. La syntaxe de cette commande est : diff(f(x) x ) diff(f(x), x ) pour une drive ordinaire diff(f(x,y,z), x ) o f(x,y,z) est la fonction driver et x la variable par rapport laquelle on drive. , Notez que si vous crivez Diff(f(...), ... ) la place de diff(f(...), ... ) , Maple nvaluera pas la drive (D en majuscule). > Diff(sin(x), x) = diff(sin(x),x); > Diff((1+x^2+4*x^3)/(1+2*x-x^2), x) = diff((1+x^2+4*x^3) /(1 2* ^2) ) /(1+2*x-x^2), x); Les drives multiples peuvent tre values en rptant la variable plusieurs fois: > Diff(sin(x^2), x, x)= diff(sin(x^2), x, x); Ou bien, de manire quivalente en crivant x$n, o n est le , q $ , nombre de fois o l'on drive: Diff( i ( ^2) $2) diff( i ( ^2) $2) > Diff(sin(x^2), x$2)= diff(sin(x^2), x$2); Drives partielles Drives partielles De manire similaire, Maple value les drives partielles , p p d'une fonction plusieurs variables : > 'Diff(cos(x*tan(y)), x)'= diff(cos(x*tan(y)), x); , Notez que l'ordre dans lequel Maple drive les fonctions est de gauche droite (dans l'ordre o vous les crivez) Parfois de gauche droite (dans l ordre o vous les crivez). Parfois (assez rarement), cet ordre peut tre important. > 'Diff(cos(x+y^2), x, y)'= diff(cos(x+y^2), x, y); ( ( y ), , y) ( ( y ), , y); > 'Diff(cos(x+y^2), y, x)'= diff(cos(x+y^2), y, x): > 'Diff((x^2+y^2)*(ln(x)-ln(y)), x$2, y)'= diff((x^2+y^2)* (l ( ) l ( )) $2 ) (ln(x)-ln(y)), x$2, y); > 'Diff((x^2+y^2)*(ln(x)-ln(y)),y,x$2)'= diff((x^2+y^2)* (ln(x)-ln(y)) y x$2): (ln(x)-ln(y)), y, x$2): La commande D Un autre moyen pour driver les fonction est d'utiliser le symbole D qui peut tre appliqu une fonction sans avoir symbole D, qui peut tre appliqu une fonction sans avoir spcifier ses arguments. > D(sin); > unassign('f','g'); D(f@g); D(f*g) D(f*g); > D(exp@cos)(x); diff(exp(cos(x)), x); > D(cos@ln)(x); diff(cos(ln(x)), x); > D(cos@ln)(x); diff(cos(ln(x)), x); > D(exp@cos@ln)(x); diff(exp(cos(ln(x))), x); Cela peut bien sur tre itr en utilisant le symbole @@n (o n est un entier) dans la composition de D. > (D@@2)(sin); > (D@@2)(sin); - sin Ou encore en utilisant l'indexation en i, dans la forme D[i], ce qui donnera une drive partielle par rapport la i me variable: > D[1]((x y) > x^7*y^3); # drive partielle par rapport x > D[1]((x,y)-> x^7*y^3); # drive partielle par rapport x > D[2]((x,y)-> x^7*y^3); # drive partielle par rapport y Pour des drives partielles, on utilise une indexation par rapport l'ordre dont on veut driver les fonctions : > D[1,1]((x,y)-> x^7*y^3); > D[2 2]((x y) > x^7*y^3); > D[2,2]((x,y)-> x^7*y^3); > D[1,2]((x,y)-> x^7*y^3); > D[2,1]((x,y)-> x^7*y^3); [ , ](( ,y) y ); > D[1,2$2]((x,y)-> x^7*y^3); > D[1$2,2]((x,y)-> x^7*y^3); $ $ > D[1$2,2$2]((x,y)-> x^7*y^3); Intgrales Maple sait calculer les intgrales, grce la commande Int. La syntaxe pour les intgrales indfinies (les "primitives") est : int(expr x) int(expr, x) o expr est l'expression que vous intgrez et x la variable par rapport laquelle vous intgrez. rapport laquelle vous intgrez. Pour les intgrales dfinies, la syntaxe est la suivante : int(expr, x=a..b) o expr est l'expression que vous intgrez et a..b l'intervalle sur lequel vous intgrez lequel vous intgrez. ,Note: Comme pour la drive, si on crit Int(expr, x) la place ,Note: Comme pour la drive, si on crit Int(expr, x) la place de int(expr, x), vous aurez la forme non value. > Int( tan(x), x ) = int( tan(x), x ); > Int( (1 x^2)/(1+x^2) x ) = int( (1 x^2)/(1+x^2) x ); > Int( (1-x^2)/(1+x^2), x ) = int( (1-x^2)/(1+x^2), x ); > Int( x^2*exp(-x^2), x ) = int( x^2*exp(-x^2), x ); Voici quelques intgrales dfinies et impropre : > Int( cos(x), x=-Pi/2..Pi/2 ) = int( cos(x), x=-Pi/2..Pi/2 ); > Int( x^2*exp(-x^2), x=0..infinity ) = int( x^2*exp(-x^2), x=0 infinity ); x=0..infinity ); > Int( exp(-x^2), x=0..infinity ) = int( exp(-x^2), x=0..infinity ); Les intgrales multiples sont faites par itration de l'intgrale : I (I (I ( ( ) 0 ) 0 ) 0 1) > Int(Int(Int(exp(-x-y-z),x=0..y), y=0..z), z=0..1) = int(int(int(exp(-x-y-z),x=0..y), y=0..z), z=0..1); Exercices (Srie3) Exercices (Srie3) Solutions Exercice 1. a) Dfinissez la fonction f (x) = sin(x)cos(x) a) Dfinissez la fonction f 1 (x) = sin(x)cos(x). Tracer la fonction entre 0 et . Calculez f 1 (0) et f 1 () Calculez f 1 (0) et f 1 () > f[1]:=x-> sin(x)*cos(x); > plot(f[1](x), x=0..Pi); > f[1](0); f[1](Pi); b) Dfinissez la fonction f (x y) = e (xy) cos(x)sin(y) b) Dfinissez la fonction f 2 (x,y) = e (xy) cos(x)sin(y). Tracer sa courbe reprsentative pour x = .. et y = .. . > f[2]:=(x,y)-> x*exp(-x^2-y^2); # non demand dans l'exercice [ ] ( ,y) p( y ); > plot3d(f[2](x,y), x=-2..2, y=-2..2, color=y); # non demand dans l'exercice > f[2]:= exp(x*y)*cos(x)*sin(y); > plot3d(f[2](x,y), x=-Pi..Pi, y =-Pi..Pi, color=x); Exercice 1.(suite) c) Dfinissez la fonction g(x) =3x/ ln(x). Que vaut e g ? Et g(exp) ? > g:=x->3*x/ln(x); > 'exp(g)'=(exp@g)(x); > exp(g) =(exp@g)(x); > 'g(exp)'=(g@exp)(x); d) Soit la suite u n dfinie par u 0 = 3 et u n = ln(u n1 ) + 5. Calculez les 5 me , 10 me et 100 me termes en fonction de u 0 . Refaites le calcul si u 0 = 10 > u[0] :=3; > u[n] :=n > ln(u[n 1])+5; > u[n] :=n-> ln(u[n-1])+5; > f:=x-> ln(x)+5; > 'u[n]'=(f@@n)(u[0]); u[ ] ( @@ )(u[0]); > 'u[1]'=(f@@1)(u[0]); 'u[2]'=(f@@2)(u[0]); 'u[3]'=(f@@3)(u[0]); > 'u[5]'= evalf((f@@5)(u[0])); 'u[10]'= evalf((f@@10)(u[0])); 'u[100]= evalf((f@@100)(u[0])); Exercice 2. a) Trouvez la limite en + et - de la fonction f 3 = sin(x)cos(x)/x > f[3] :=x-> sin(x)*cos(x)/x; [ ] ( ) ( ) ; > Limit(f[3](x), x=-infinity)= limit(f[3](x), x=-infinity); Limit(f[3](x), x=infinity)= limit(f[3](x), x=infinity); b) Quelle est la limite en 0 de la fonction f 4 = 4cos(x)/(1 x 2 )? > f[4] :=x-> 4*cos(x)/(1-x^2); > f[4] :=x-> 4 cos(x)/(1-x 2); > Limit(f[4](x), x=0)= limit(f[4](x), x=0); c) Quelle est la limite en 1 droite de floor(x)? Quelle est la limite en 1 gauche de cette fonction ? li it(fl ( ) 1) > limit(floor(x), x=1); > limit(floor(x), x=1, right); > limit(floor(x) x=1 left); > limit(floor(x), x=1, left); Exercice 3. ) Q ll l d i d ( )/ ( )? a) Quelle est la drive de u(x)/v(x)? Calculez la drive seconde de ce quotient. > restart; > restart; > Diff((u(x)/v(x)), x)= diff((u(x)/v(x)), x); > Diff((u(x)/v(x)), x$2)= diff((u(x)/v(x)), x$2); (( ( ) ( )), ) (( ( ) ( )), ); b) Donnez toutes les drives partielles d'ordre 1 de f ( ) ( ) ( ) i ( ) f 2 (x, y) = e (xy) cos(x)sin(y). Donnez toutes les drives partielles d'ordre 2 de f 2 . Ecrivez ces formules de deux faons diffrentes Ecrivez ces formules de deux faons diffrentes > f[2] := (x,y) -> exp(x*y)*cos(x)*sin(y); > "premire criture"; p ; > "drives premires"; > Diff(f[2](x,y), x)= diff(f[2](x,y), x); Diff(f[2]( ) ) diff(f[2]( ) ) Diff(f[2](x,y), y)= diff(f[2](x,y), y); Exercice 3.(suite) > "drives secondes"; > Diff(f[2](x y) x$2)=diff(f[2](x y) x$2); > Diff(f[2](x,y), x$2)=diff(f[2](x,y), x$2); Diff(f[2](x,y), y$2)= diff(f[2](x,y), y$2); > Diff(f[2](x,y), x, y)= diff(f[2](x,y), x, y); Diff(f[2](x,y), y, x)= diff(f[2](x,y), y, x); > "seconde criture"; > "drives premires"; > drives premires ; > D[1](f[2]); D[2](f[2]); > "drives secondes"; > D[1$2](f[2]); D[2$2](f[2]); > D[1,2](f[2]); D[2,1](f[2]); Exercice 3 (suite) Exercice 3.(suite) c) Dfinissez la fonction g(x) = x 2 + ln(3x). Puis, en une seule ligne c) Dfinissez la fonction g(x) x ln(3x). Puis, en une seule ligne de commande, tracez sur un mme graphe la fonction g, ainsi que ses deux premires drives, pour x compris entre 0.5 et 2 > g:=x >x^2+ln(3*x); D(g); (D@@2)(g); > g:=x->x^2+ln(3*x); D(g); (D@@2)(g); > plot([g(x),D(g)(x), (D@@2)(g)(x)], x=0.5..2, color=[red,blue,green] ); color [red,blue,green] ); Exercice 4. 2 a) Soit f 5 (x) = e (x 2 ) Calculez l'intgrale de f 5 entre 0 et l'infini. C l l l'i t l d f t + t Calculez l'intgrale de f 5 entre + et -. > f[5] :=x -> exp(-x^2); > 'Int(f[5](x), x=0..infinity)'= Int(f[5](x), x=0..infinity); > Int(f[5](x), x 0..infinity) Int(f[5](x), x 0..infinity); 'Int(f[5](x), x=0..infinity)'= int(f[5](x), x=0..infinity); > Int(f[5](x), x=-infinity..infinity)= int(f[5](x), x=-infinity..infinity); b) Tracez les deux courbes: y = et y=x/2 entre 0 et 16. Calculez les intgrales de ces deux fonctions entre 0 et 16 4x Calculez les intgrales de ces deux fonctions entre 0 et 16. Puis, par un calcul d'intgrale, donnez l'aire entre les deux courbes > plot([sqrt(4*x), x/2], x=0..16, color=[red,blue] ); plot([sqrt(4 x), x/2], x 0..16, color [red,blue] ); > Int(sqrt(4*x), x=0..16)= int(sqrt(4*x), x=0..16); > Int(x/2, x=0..16)= int(x/2, x=0..16); > Int(sqrt(4*x)-x/2, x=0..16)= int(sqrt(4*x)-x/2, x=0..16); Exercice 4. (suite) c) Cherchez une primitive en x de la fonction c) Cherchez une primitive en x de la fonction f 6 (x, y, z) = e (x+y) -3sin(xz) +[ln(z)/x] Calculez une primitive en y et une en z de cette fonction. Calculez une primitive en y et une en z de cette fonction. Vrifiez vos rsultats. > f[6] := (x,y,z) -> exp(x+y)-3*sin(x*z)+ln(z)/x; > 'Int(f[6](x,y,z), x)'= int(f[6](x,y,z), x); diff(%,x); > 'Int(f[6](x y z) y)'= int(f[6](x y z) y); diff(% y); > Int(f[6](x,y,z), y) = int(f[6](x,y,z), y); diff(%,y); > 'Int(f[6](x,y,z), z)'= int(f[6](x,y,z), z); diff(%,z); > 'Int(Int(f[6](x,y,z), x), y)' = int(int(f[6](x,y,z), x),y); diff(%,x,y); ( ( [ ]( ,y, ), ), y) ( ( [ ]( ,y, ), ),y); ( , ,y); > 'Int(Int(Int(f[6](x,y,z), x), y), z)' = int(int(int(f[6](x,y,z),x), y),z); diff(%,x,y,z); 1. Graphiques en deux dimensions 1. Graphiques en deux dimensions 1.1 Introduction aux graphiques 1.2 Package "plots" 2. D'autres type de graphes en 2-d 2.1 Courbes paramtres 2 2 Ch d t 2 d 2.2 Champs de vecteurs en 2-d 2.3 Graphes de courbes dfinies implicitement 2 3 1 Fonctions implicites 2.3.1 Fonctions implicites 2.3.2 Graphes de points 2.4 D'autres systmes de coordonnes y 2.5 Ingalits 2.6 Echelles logarithmiques 3 G hi t i di i 3. Graphiques en trois dimensions 4. Animations. Graphiques en deux dimensions Maple dispose de nombreuses commandes et fonctions pour Maple dispose de nombreuses commandes et fonctions pour tracer des fonctions, des graphiques ou des animations en deux ou trois dimensions. Pour tracer un graphique avec Maple on utilise la syntaxe gnrale suivante : gnrale suivante : plot_type(expression, intervalle, options,..), indiquant le type de graphique que l'on veut tracer, o : de graphique que l on veut tracer, o : -expression est une expression mathmatique ou un ensemble d'expression dfinissant la (les) fonctions tracer d expression dfinissant la (les) fonctions tracer. -intervalle est de la forme x = a..b avec a et b des nombres rels et a < b ou une liste d'intervalles de la mme forme et a < b, ou une liste d intervalles de la mme forme. - option correspond une ou plusieurs spcifications optionnelles qui dterminent l'apparence du graphe (titre optionnelles qui dterminent l'apparence du graphe (titre, chelles, etc.). La commande de base pour tracer un graphique est la commande plot. Cependant, de nombreuses commandes existent pour tracer diffrents type de graphiques. Il existe mme un package (un librairie) pour tracer certains hi C k ' ll l t t i l graphiques. Ce package s'appelle plots, et pour pouvoir le charger en mmoire il faut avoir recours la commande : with (plots): (plots):. Si on charge tout le package en mmoire on peut faire appel la commande en tapant commande Mais si tout le package la commande en tapant commande. Mais si tout le package n'est pas charg on peut toujours crire plots[command] qui donnera le mme rsultat. , Remarquons que si l'on remplace le deux-points final par un point virgule, cd with(plots);, Maple va afficher l'ensemble des nouvelles fonctions et commandes qu'il a charg en mmoire. >?plots # N'oubliez pas que l'aide est toujours l pour vous aider et vous rappeler des diffrentes instructions de base Le type le plus simple de graphiques en deux dimensions est Le type le plus simple de graphiques en deux dimensions est obtenu par une expression de la forme : plot3d (f(x,y), x=a..b, y=c..d, opt1, opt2, ...) p ( ( ,y), , y , p , p , ) o les terme en italiques sont optionnels. f( ) t f ti d d t d l i bl ll t l f(x) est une fonction dpendantes de la variable relle x et le domaine o l'on va tracer la fonction est x=a..b (avec a < b). Nous verrons les options les plus souvent utilises. > ?plot[options] p [ p ] Voici un exemple de la commande plot qui vous donne l t l' ll d' f ti t l i l seulement l'allure d'une fonction courante par exemple exp, sin, ln ... > plot(sin*ln); > plot(sin ln); 1Attention si on introduit la variable x: > plot(sin(x)*ln(x),x); Le Maple est incapable d'valuer les valeurs numriques de la fonction par dfaut de la rgion des valeurs de la variable x; fonction par dfaut de la rgion des valeurs de la variable x; le Maple vous demande de voire la page de l'aide pour le Maple vous demande de voire la page de l aide pour s'assurer de la squence correcte pour tracer les graphiques en deux dimensions. Pour tracer le graphe, on doit introduire l'intervalle d'tude. > plot(sin(x)*ln(x) x= 10 10); > plot(sin(x)*ln(x),x=-10..10); Et un autre graphique avec un titre, et la spcification des caractres et du style de la police utilise. y p > plot(x*sin(x), x=-3*Pi..3*Pi, title="x*sin(x)", titlefont=[HELVETICA, BOLD,18]); Un autre avec des noms aux axes pour cela on introduit l'option labels=[....]: p [ ] > plot(exp(-t^2), t=0..4, labels=[eleves, notes]); Introduction aux graphiques Lorsqu'on essaie de tracer une fonction discontinue, Maple va essayer par dfaut de joindre les points de discontinuits essayer par dfaut de joindre les points de discontinuits. Ce qui peut viter en mettant l'option discont = true, Maple va dterminer les points de discontinuits de l'expression et sparera l'intervalle de dfinition en sous intervalles o la fonction est contin e fonction est continue. Voici l'exemple d'une fonction discontinue : Voici l exemple d une fonction discontinue : > plot(x-floor(x), x=-3..3); > plot(x-floor(x), x=-3..3, discont=true); L'option scaling = constrained permet d'avoir la mme h ll l d d h chelle sur les deux axes du graphe. ,Attention par dfaut ce n'est pas le cas ! ,Attention, par dfaut ce n est pas le cas ! > plot(x-floor(x), x =-3..3, scaling=constrained); > plot(x-floor(x), x=-3..3, discont=true, scaling=constrained); Par dfaut, Maple calcule un minimum de 50 points par graphe, mais dans le cas o il est ncessaire d'augmenter ce nombre de points; pour optimiser, on utilise alors l'option i t numpoints. Considrons l'exemple d'une fonction d'amplitude trs petite Considrons l exemple d une fonction d amplitude trs petite. > plot(x^3*sin(exp(1/x)), x=(.2)..(.3)); > plot (x^3*sin(exp(1/x)),x=(.2)..(.3), numpoints=5); > plot (x^3*sin(exp(1/x)),x=(.2)..(.3), numpoints=500); Spcification d'un graphe Voici deux faon de spcifier la couleur d'un graphe deux dimensions : dimensions : > plot(BesselJ(0,x), x=0..10, color=green); > plot(BesselJ(1,x), x=0..10, color=COLOR(RGB,.8,.4,.4)); > plot([BesselJ(1,x),BesselJ(0,x)],x= 0..10, color= [red,green], st le [line point ]) # on pe t dfinir a ssi le st le de la style = [line, point ]); # on peut dfinir aussi le style de la courbe En utilisant l'option style=point on trace un graphe de faon discrte. Trac de plusieurs fonctions On peut tracer plusieurs graphes sparment l'un de l'autre : > plot(x-x^3/6 x = -1 1); > plot(x x 3/6, x 1..1); > plot(sin(x), x = -1..1); Le Maple peut galement tracer plusieurs courbes la fois avec la commande plot, pour diffrencier entre les graphes: on pe t imposer diffrentes options tels q e la co le r le st le etc peut imposer diffrentes options tels que la couleur, le style, etc. pour chacune des courbes. >plot([sin(x), x-x^3/6, cos(x)], x=-1..1, color=[red, >plot([sin(x), x x 3/6, cos(x)], x 1..1, color [red, blue,green], style= [point,line,patch]); De manire gnrale, plusieurs courbes peuvent tre traces simultanment avec la syntaxe gnrale suivantes : plot([expr1 expr2 exprn] range color=[c1 c2 ] plot([expr1,expr2, ... , exprn], range, color=[c1, c2, ...], style=[s1,s2, ... ], ...) La librairie ou package "plots" Un autre moyen d'afficher plusieurs graphes en mme temps est d'utiliser la commande display. Cette commande fait partie d k l t du package plots. Cette commande peut donc soit tre utilise sous la forme Cette commande peut donc soit tre utilise sous la forme plots[display] soit sous la forme display en chargeant d'abord en mmoire le package en entier, via la commande with(plots). p g (p ) > plot1:=plot(sin(x), x=-Pi..Pi, color=red): plot2:=plot(cos(x), x=-2*Pi..2*Pi, color=green): p p ( ( ), , g ) plot3:=plot( x-x^3/6+x^5/120-x^7/7!+x^9/9!, x=-1..1, color=yellow): # trois graphes (pas affichs). > display([plot1,plot2,plot3]); > plots[display] ([plot1,plot2,plot3]); # Affichage des trois graphes. display([plot1,plot2,plot3]); ETUDE LOCALE DES FONCTIONS NUMRIQUES Dveloppements Pour les dveloppements limits ou de Taylor: l ( ) taylor(expr ,x=a,n) Pour des dveloppements asymptotiques plus gnraux: Pour des dveloppements asymptotiques plus gnraux: series(expr ,x=a ,n) ou asympt(expr , x=a , n). ( p , , ) y p ( p , , ) L'ordre n est facultatif et vaut 6 par dfaut . > 'taylor(sin(x),x)' = taylor(sin(x),x); # x=0 par dfaut >'taylor(x^2/(x^2+1), x=infinity,10)' = taylor(x^2/(x^2+1), x=infinity,10); >'series(exp(x)/x x 9)' =series(exp(x)/x x 9); # a=0 par dfaut > series(exp(x)/x,x,9) =series(exp(x)/x,x,9); # a=0 par dfaut > 'Series(1*x-1/6*x^3+1/120*x^5+O(x^6),x,6)' = series(1* ( ( ), , ) ( x-1/6*x^3+1/120*x^5+O(x^6),x,6); t(l ( 1/ ) 7) # t j l l'i fi i > asympt(ln(x+1/x),x,7); # toujours en plus l'infini > 'series(ln(x+1/x) x 7)' = series(ln(x+1/x) x 7); > series(ln(x+1/x),x,7) = series(ln(x+1/x),x,7); > Sum(x, x=1..4) = sum(x, x=1..4); ( ) ( ) > restart; restart; > Sum(1/k,k=1..n) = sum(1/k,k=1..n); > Sum(1/k,k=1..infinity) = sum(1/k,k=1..infinity); Limit(ln(n), n=infinity)=limit(ln(n),n=infinity); > Limit(Sum(1/k,k=1..n)-ln(n), n=infinity) = limit(sum(1/k,k=1..n)-ln(n), n=infinity); limit(sum(1/k,k 1..n) ln(n), n infinity); > 'gamma' = asympt(Sum(1/k,k=1..n)-ln(n),n,10); # la constante d'Euler gamma > Psi(n+1); gamma; > Psi(n+1); gamma; > evalf(gamma); Affichage du terme principal d'une srie L d l dt t d' ffi h l t i i l d' La commande leadterm permet d'afficher le terme principal d'une srie: > series(sin(x^3)/(2*x),x=0,10); > series(leadterm(sin(x^3)/(2*x)),x=0); ( ( ( ) ( )), ); Conversion en polynme de Taylor p y y Pour convertir un dveloppement en polynme, on utilisera la commande convert(taylor(expr ;x=a,n)) > P:=convert(taylor(exp(x),x=0,5),polynom); ( y ( p( ), , ),p y ); > f := (x^3+x)/(x^2-1); > convert(f, parfrac, x); i (f 4) > s := series(f,x,4); > s:=convert(s, polynom); 's'=s; # Drop the order term; QUATIONS ET SYSTMES DIFFRENTIELS Equations du premier ordre Equations du premier ordre Avec MAPLE; nous pouvons rsoudre directement les ti d t l i li i f t i t t quations de type classique - linaire - avec facteur intgrant - sparable - homogne - rsolue en x - de Bernoulli de Clairaut - de Riccati de Riccati. Pour cela on utilise la commande dsolve(eq,y(x)) o eq dsigne l'expression de l'quation rsoudre dsigne l'expression de l'quation rsoudre. quation y ' + 3 y = exp(-x) >restart: eq:= diff(y(x),x)+3*y(x)=exp(-x); dsolve(eq,y(x)); restart: eq: diff(y(x),x) 3 y(x) exp( x); dsolve(eq,y(x)); Dans la rsolution le terme du type _C1 dsignera la Constante relle arbitraire Constante relle arbitraire. Pour tenir compte et dfinir cette constante, on introduit la condition initiale de la manire suivante : dsolve(eq,y(0)=val, y(x)). > dsolve({eq,y(0)=1.5},y(x)); ,Remarque: Les solutions y(x) ne sont pas directement utilisables pour t l b i t l i l i t reprsenter les courbes intgrales, voir exemple suivant: > plot(y(x),x); Warning unable to evaluate the function to numeric values in Warning, unable to evaluate the function to numeric values in the region; see the plotting command's help page to ensure the calling sequence is correct g q Plotting error, empty plot fff( ) ^2+1 fff(2) > fff(x):=x^2+1; fff(2); > ggg:=x->x^2+1; ggg(2); Reprsentation des courbes intgrales Pour cela on doit assigner la solution y(x) on utilisera la commande assign, puis utiliser la commande l ( ( ) C1 ) i i P d' unapply(y(x),_C1,x) qui, pour une expression P d'une variable libre x ( ou couple de variables libres (x,y)), retourne la fonction qui la variable x (x y) associe P fonction qui la variable x (x,y) associe P. > restart: eq:=diff(y(x),x)+3*y(x)=exp(-x); dsolve(eq,y(x)); q (y( ) ) y( ) p( ) ( q y( )) > assign(dsolve(eq,y(x))); y:=unapply(y(x),_C1,x); E fi bt i l' bl d b d l Enfin pour obtenir l'ensemble des courbes avec des valeurs rgulirement espaces du paramtres , on peut utiliser la commande seq(y(x C1) C1=a b) combine la commande { } commande seq(y(x,_C1),_C1=a..b) combine la commande { }. > seq(y(_C1,x),_C1=-3..3); > plot({seq(y(_C1,x),_C1=-1..1)}, x=-5..5, y=-2..2); On peut prciser des options de rsolution par exemple : series (chercher les solutions sous forme de sries) ( ) > eq:={diff(z(x),x)+z(x)*cos(x)=1,z(0)=1}; d l ( ( )) > dsolve(eq,z(x)); > dsolve(eq,z(x),series); La fonction odeplot(dsn, vars, range, options)(y(x,_C1) du package plots permet de reprsenter les solutions d'une quation p g p p p q diffrentielle. La solution pourra tre visualise graphiquement avec la f ti d l t ( di diff ti l ti l t) d l fonction odeplot (pour ordinary differential equation plot) de la bibliothque graphique plots: Le premier argument est le nom de la procdure Le premier argument est le nom de la procdure, Le deuxime une liste qui donne la ou les reprsentations choisies (f(x) en fonction de x ou x en fonction de f(x)). ( ( ) ( )) Le troisime argument donne l'intervalle des valeurs choisies pour x . > restart; with(plots,odeplot); odeplot D( )( ) ( ) > D(z)(x) = z(x); > dsolve({D(z)(x) = z(x),z(0)=1}, z(x)); > D(z)(x) = z(x); p:= dsolve({D(z)(x) = z(x),z(0)=1}, z(x),type=numeric): p ({ ( )( ) ( ), ( ) }, ( ), yp ) odeplot(p,[x,z(x)], -2..0.5, title="Fonction exponentielle"); D( )( ) ( ) >D(z)(x) = z(x); p:= dsolve({D(z)(x) = z(x),z(0)=1}, z(x),type=numeric): odeplot(p -2 0 5 title="Fonction exponentielle"); odeplot(p,-2..0.5, title= Fonction exponentielle ); Equations du second ordre Avec MAPLE; nous pouvons rsoudre galement les quations de second ordre de type classique - linaire - d'Euler - de Bessel Pour cela on utilise la commande dsolve(eq,y(x)) o eq dsigne l'expression de l'quation rsoudre. g p q Les options de rsolution sont les mmes qu' l'ordre 1. quation y " + y ' + y = t quation y + y + y = t > restart: eq2:=diff(y(t),t$2)+diff(y(t),t)+y(t)=t; > 2 diff( (t) `$`(t 2))+diff( (t) t)+ (t) t > eq2 := diff(y(t), $ (t,2))+diff(y(t),t)+y(t) = t; > dsolve(eq2,y(t)); La mme avec conditions initiales: > dsolve({eq2,y(0)=0,D(y)(0)=-1},y(t)); SYSTMES DIFFRENTIELS Pour cela on utilise la commande dsolve(eq,y(x)) o eq dsigne l'expression de l'quation rsoudre. Exemple: rsoudre x ' =x- 2 y , y ' = 2 x+ 3 y . Reprsenter la solution vrifiant x (0) = 0 et y( 0) = 1 . > restart: sys:=diff(x(t),t)=x(t)-2*y(t), diff(y(t),t)=2*x(t)+3*y(t); > dsolve({sys}, {x(t),y(t)}); > dsolve({sys, x(0)=0, y(0)=1}, {x(t),y(t)}); > q:=dsolve({sys,x(0)=0,y(0)=1},{x(t),y(t)}); > p:=dsolve({sys,x(0)=0,y(0)=1},{x(t),y(t)},numeric): > with(plots): odeplot(p [[t x(t) color=red] [t y(t) color=blue]] > with(plots): odeplot(p,[[t,x(t), color=red],[t,y(t), color=blue]], -1..2); >t^2*diff(y(t),t$2)+2*t*diff(y(t),t)+y(t)=0; (y( ), $ ) (y( ), ) y( ) ; dsolve(t^2*diff(y(t),t$2)+2*t*diff(y(t),t)+y(t)=0,y(t)); Rsolution d'quations aux drives partielles Pour cela on utilise la commande dsolve(eq,y(x)) o eq dsigne l'expression de l'quation rsoudre. > edp:=y*diff(U(x,y),x)+x*diff(U(x,y),y)=0; | | c c | | > pdsolve(edp U(x y)); ( , ) ( , ) 0 y U x y x U x y x y | | c c | | + = | | c c \ . \ . > pdsolve(edp,U(x,y)); 2 2 ( , ) 1( ) U x y F x y = + o _F1 dsigne une fonction arbitraire de classe C1 de la variable ( , ) _ 1( ) U x y F x y + -x^2+y^2 . 1) Dfinir un vecteur, matrice en Maple 2) Oprations sur les vecteurs et matrices: Somme, multiplication, matrice inverse, puissance, p , , p , 3) Etude dune matrice: Trace, rang, valeurs propres, vecteurs propres, transpos, diagonalisation, jordanisation, g , j , 4) Exemple A rendre le 06/06/2011 avant Midi (rapport+cd/usb) TESTS Structures Boolennes Structures Boolennes Ce sont des structures concernant des variables boolennes i t d l i (t ) f (f l ) qui ne prennent que deux valeurs : vrai (true) ou faux (false). L'valuation des Boolens se fait par l'intermdiaire de la commande evalb( ): La fonction evalb permet de tester cette commande evalb(......): La fonction evalb permet de tester cette galit. Les oprations logiques permettant de construire des p g q p expressions boolennes plus labores sont utiliss partir des oprateurs : ngation not(......) , et conjonction (...and...) et di j ti ( ) disjonction (...or...). > evalb (2 = 3); evalb (2 = 3); evalb (2 > 3); > evalb ((2 <=3) or (2 >=3)); > evalb ((2 <=3) or (2 >=3)); > evalb ((2 <=3) and (2 >=3)); > evalb (not ((2 <=3) or (2 >=3))); > evalb (not ((2 <=3) and (2 >=3))); > not (2 =3); evalb (%); Structure de test Un test permet deffectuer des groupes de commandes si certaines conditions sont vrifies ou non. La syntaxe peut se prsenter comme suit if condition then commande effectuer fi commande if condition then commande effectuer fi commande effectuer (else sinon et end if " fin du bloc if ") On comprend aisment l'criture suivante (sachant que if signifie si, then signifie alors, fi signifie passer la syntaxe qui it t i l d ) suit ou terminer la commande.)
if condition then 1 choix de commande effectuer
else 2 choix de commande effectuer fi commande effectuer ( if signifie si, then signifie alors, else signifie sinon. )
if condition then 1 choix de commande effectuer
else 2 choix de commande effectuer fi commande effectuer (if i ifi i th i ifi l l i ifi i ) (if signifie si, then signifie alors, else signifie sinon.) if condition then 1ier choix de commande effectuer if condition then 1ier choix de commande effectuer elif condition then 2ime choix de commande effectuer elif condition then 3ime choix de commande effectuer ......................................................................... ......................................................................... ......................................................................... elif condition then nime choix de commande effectuer else (n+1)ime choix de commande effectuer else (n+1)ime choix de commande effectuer fi commande effectuer (elif est la contraction de else et if) > restart; > restart; > a:=2; if a < 3 then "a est infrieur 3" fi; > a := 4; if a < 3 then "a est infrieur 3" fi; f f f > a := 4; if a < 3 then "a est infrieur 3" fi; if a>3 then "a est suprieur 3" fi; > a := 4; if a < 3 then "a est infrieur 3" else "a est suprieur 3" fi;; > a := 3; if a < 3 then "a est infrieur 3" elif 3 <= a <= 4 then " t i t 3 t 4" l " t i 4" fi "a est comprise entre 3 et 4" else "a est suprieur 4" fi; BOUCLES Boucle for Boucle for Une boucle permet la rptition du calcul d'une expression ou d' it d' i d'une suite d'expressions. Elle commence par le mot cl for suivi du nom de la variable Elle commence par le mot cl for suivi du nom de la variable de comptage ( x ). Celle-ci dbute la boucle avec la valeur qui suit le mot cl from, puis est incrmente de la valeur ( p ) suivant le mot cl by t i t t ' ll t i f i l l l i t l et ceci tant qu'elle reste infrieure ou gale la valeur suivant le mot cl to. , La variable de comptage (p) nest pas muette : elle vaut la dernire valeur calcule avant le test arrtant la boucle. Un groupe 'form d'une expression ou plusieurs expressions ( ensemble d'instructions) est plac entre les mots cls do et end d ( d) t l t ti do (ou od) et spares par la ponctuation ; ou : Ici il n'y a trois expressions: La premire est une liste de deux Ici il n y a trois expressions: La premire est une liste de deux nombres, la deuxime une mise en facteur premiers et la troisime l'affichage d'un symbole non assign. g y g for x from x1 to x2 by p do groupe od : ,Attention les variables x1 et x2 doivent tre de du type numeric mais pas de type constant comme ou Dans ce dernier il faut 2 t mais pas de type constant comme ou . Dans ce dernier il faut utiliser evalf 2 t > type (Pi constant ); type (sqrt(2) constant) ; > type (Pi, constant ); type (sqrt(2) , constant) ; > type (Pi, numeric) ; type (sqrt(2) , numeric) ; > type ("2",'character' ); yp ( , ); > type (2,'character' ); f f / / ( * ) > for x from 0 by 3 / 4 to Pi / 2 do cos (Pi * x) end do; Error, final value in for loop must be numeric or character > for x from 0 by 3 / 4 to evalf (Pi / 2) do cos(Pi * x) end do; > for x from 0 by 3 / 4 to evalf (Pi / 2) do cos(Pi x) end do; Nombres paires comprises entre 6 et 10: p p > for i from 6 by 2 to 10 do print (i) end do; > restart; E l C l l d' it d f t i l Exemple : Calcul d'une suite de factoriel > for i from 0 by 2 to 6 do [i, i!] ; ifactor (i!) ; `-----`; end do; > type (Pi, constant ); type (sqrt(2) , constant) ; > type (Pi, numeric) ; type (sqrt(2) , numeric) ; yp ( , ) ; yp ( q ( ) , ) ; > type ("2",'character' ); > type (2,'character' ); > restart; Exemple : Calcul d'une suite de factoriel Exemple : Calcul d une suite de factoriel > for i from 0 by 2 to 6 do [i, i!] ; ifactor (i!) ; `-----`; end do; > x=1. ; to 4 do ( ( ) ) / ( i ( ) 1) x:=x+(cos(x)-x) / (sin(x)+1) : end do; > x=1. ; to 4 by 0.1 do y x:=x+(cos(x)-x) / (sin(x)+1) : end do; Application une suite du type u[k]:= ln(1+u[k-1]): > u[0]:=1: for k from 1 to 10 do u[k]:= ln(1+u[k-1]); print ('k'= k); od; ,Mot cl NULL; Ce mot cl est un concept informatique plutt p q p que mathmatique. Il ne signifie pas qu'un objet est nul (gal 0), mais qu'il n'existe pas. X NULL ' ' > X:=NULL; 'x'= x; Cration d'une squence des 5 premiers nombres pairs: > L:=[ 0, 1, 2, 3, 4] ; for k in L do k, 2*k od; > L:=[ 0, 1, 2, 3, 4] ; S:=NULL; f k i L d S S 2*k d S for k in L do S:=S, 2*k: od: S ; > restart; > tot := 0; for z in 1, x, y, q 2 , 3 do tot := tot+z end do; tot; > tot := 0; for z in [1, x, y, q 2 , 3] do tot := tot+z end do; tot; Boucle While On peut galement construire des boucles for avec le mot cl while suivi d'une condition logique (expression boolenne) ( =, = , ) <=, >=, <, >). Le mot anglais while signifiant "tant que" la boucle sera Le mot anglais while signifiant tant que , la boucle sera effectue tant que la condition demande est vraie. La boucle while permet darrter en cours de route les itrations ds quune certaine condition est vrifie: cest ce quon ll l t t d t d l b l appelle le test darrt de la boucle. La syntaxe sous Maple est la suivante: La syntaxe sous Maple est la suivante: while condition do groupe od: La somme des nombres impaires compris entre 11 et 100; > tot := 0; for i from 11 by 2 while i<100 do tot:= tot+i tot:= tot+i end do; tot; tot; > k := 1: while k 2 <=50 do while k < 50 do k 2 ; k:=k+1: od; > L:=[ 3, 2, 5,-1, 6,-2] ; nops(L);Somme:=0 : [ ] p ( ) for i while i<=nops(L) and abs(L[i])<=4 do Somme:=Somme+L[i] ; d d end do: L; Somme; > Somme:=0 : for i in [ 3 2 5 -1 6 -2] do for i in [ 3, 2, 5, 1, 6, 2] do if i<=0 then break end if; Somme:=Somme+ln(i) ; d d end do; Somme; > Somme:=0 : for i in [ 3, 2, 5,-1, 6,-2] do if i<=0 then next d if end if; Somme:=Somme+ln(i) ; end do; end do; Somme;