Document disponible sur : www.elamiriahmed.com Maple: Sup- Spé Résumé evalf (expr) , convertit une expression en nombre réel approché. exemples : > ln(5) ; > evalf ( ln(5 ) ; > ln(5.) ; > evalf ( ln(5) , 20 ) ; # on précise le nombre de chiffres significatifs souhaités >Pi ; > evalf ( Pi ) ; > sin ( Pi/12 ) ; > evalf(sin ( Pi/12 )) ; Remarque : evalf ( % ) ; # évalue le dernier calcul . > Pi ; > evalf(%); Quelques fonctions mathématiques prédéfinies dans Maple : racine carrée ( attention !! c’est dans C ) : sqrt , Exemples : > sqrt(2); > evalf(%) ; ième racine n root , Exemples : > root(x,3); > root(x,2); > root(27,3); exponentielle : exp , Exemples : > exp(0); > exp(1); > exp(1.); logarithme népérien : ln , Exemples : > ln(1); > ln(2); > evalf(%); > exp(ln(4)); 1/9 Document disponible sur : www.elamiriahmed.com valeur absolue dans R, module dans C : abs , Exemples : > abs(-2); > abs(1-5); > abs(1+I); fonctions trigonométriques : sin , cos , tan, Exemples : > sin(Pi/2); > cos(Pi/2); > sin(Pi/4); > cos(Pi/4); > tan(Pi/4); > tan(Pi/2); fonctions trigonométriques réciproques arcsin, arccos, arctan, Exemples : > arcsin(1); > arcsin(sqrt(2)/2); > arccos(0); > arccos(1); > arccos(-1); fonctions hyperboliques sinh , cosh , tanh , Exemples : > sinh(0); > sinh(1); > sinh(1.); > (exp(1)-exp(-1))/2; evalf(%); > cosh(0); fonctions hyperboliques réciproques arcsinh, arccosh, arctanh, Exemples : > arcsinh(0); > arccosh(1); > arccosh(0); > arcsinh(1); Quelques constantes prédéfinies : Remarque : attention aux majuscules et minuscules ! 1) : pour Maple c’est « Pi », mais pas « pi ». 2) Le complexe i tel que i 2 1 : c’est I en Maple. 3) le réel e : c’est exp ( 1 ) . 4) L’infini (c’est-à-dire ) : c’est « infinity ». > infinity ; 2/9 Document disponible sur : www.elamiriahmed.com Valeurs logiques :( true et false) : Exemples : > isprime(39);# test de primalité du nombbre 39 > isprime(41);# notons que “prime” est “premier” en anglais. > isprime(1);# 1 est par definition composé(c-à-d non premier) Digits : Nombre total de chiffres significatifs pour les valeurs décimales approchées, et il vaut 10 par défaut. Exemple : > evalf(Pi); > evalf(sqrt(2)); > Digits:=40: > evalf(Pi); > evalf(sqrt(2)); Nombres complexes : > ( 1 + 4 * I ) ^3 ; # évaluation automatique sous la forme algébrique a + b I > ( 1 + sqrt ( 2 ) * I ) ^7 ; > evalc ( % ) ; Sommes et produits : Pour le calcul des sommes, on dispose de deux fonctions Sum et sum. La première est inerte et affiche simplement la somme à calculer, la seconde effectue le calcul (si possible !). > Sum ( k , k = 1 .. n ) ; > sum ( k , k = 1 .. n ) ; > Sum ( k , k = 1 .. n ) = factor(sum ( k , k = 1 ..n ) ); > Sum ( k^2 , k = 1 .. n ) = sum ( k^2 , k = 1 ..n ) ; > Sum ( k^2 , k = 1 .. n ) = factor(sum ( k^2 , k = 1 ..n )) ; > Sum ( k^3 , k = 1 .. n ) = sum ( k^3 , k = 1 ..n ) ; > Sum ( k^3 , k = 1 .. n ) = factor(sum ( k^3 , k = 1 ..n ) ) ; > Product ( 1 + 1/k , k = 1 .. n ) ; # produit inerte > product ( 1 + 1/k , k = 1 .. n ) ;# montrer le résultat > simplify ( % ) ; Etude de fonctions : CALCUL DE LIMITES : limit ( expr , var = L ) ; renvoie la limite de l’expression en var lorsque var tend vers L. Exemples : > limit ( sin ( x )/x , x = 0 ) ; > limit(x*ln(x),x=0) ; > limit ( exp ( x ) , x = infinity ) ; > limit ( exp ( x ) , x = - infinity ) ; > limit ( 1/x, x=0 , right ) ; # limite à droite > limit ( 1/x, x=0 , left ) ; Exercice : Calculer grâce à Maple les limites suivantes : 1) lim x x x 1 x x 1 ; 2) lim( 2x) tan x . x 3/9 2 sin 2 x x2 1 x 2 ; 4) lim . x 0 x x3 1 x CALCUL DE DERIVEES DE FONCTIONS : diff ( expr , var ) ; dérive une expression formelle par rapport à une variable . Exemples : > diff(exp(x),x) ; > diff(ln(x),x) ; > diff ( y * x^2 + ln ( x ) , x ) ;# dérivées partielles par rapport à x >diff ( y * x^2 + ln ( x ) , y ) ; # dérivées partielles par rapport à y > diff ( ln ( x ) , x$3 ) ; # dérivée troisième de ln ( x ) Document disponible sur : www.elamiriahmed.com 3) lim Exercice : 1) Grâce à Maple, dériver les fonctions suivantes : x3 2 x 1 2 , g ( x) sin(3 x)(cos x 1) , h( x) ( x 2) ln x 1 . f ( x) 2 4x 2 3 2) Calculer via Maple les dérivées : cos (4) x, sin (4) x , x 2 1 (2) 3 , x 2 1 . (3) CALCUL DE PRIMITIVES : int ( expr , var ) ; renvoie une primitive d’une expression formelle par rapport à une variable (lorsque Maple sait en trouver) ; Remarque : Int ( expr , var ) ; donne la forme inerte : Exemples : > int(1/x ,x) ; > Int(1/x ,x) ; > Int(ln(x),x)=int(ln(x) ,x) ;# facile à calculer par une intégration par parties. > int(exp(-x^2),x); # dans ce cas, Maple ne connaît pas de primitive CALCUL D’INTEGRALES : int ( expr , var = a .. b ) ; calcule l’intégrale définie de a à b. Exemples : > int(1/x,x=2..3) ; > int ( exp ( x ) * cos ( x ) , x = 0 .. Pi ) ; # à calculer par intégration par parties Remarque : Int ( expr , var = a..b ) ; donne la forme inerte : > Int ( sqrt ( sin ( x )^2 ) , x = 0 .. Pi/2 ) = int ( sqrt ( sin ( x ) ^2 ) , x = 0 .. Pi/2 ) ; > Int(exp(-x^2),x=0..1) ; > Int(exp(-x^2),x=0..1) = int(exp(-x^2),x=0..1) ;# on n’a pas de valeur exact ! Valeur approchée d’une intégrale : Exemple : > int(exp(-x^2),x=0..1) ; > evalf(%) ; Tracé d’une courbe : plot ( f(x) , x = a .. b ,y= c..d , options) ; où l’expression dépend d’une seule variable x, représente la courbe y = f( x ) entre x = a et x = b : NB : Faire d'abord appel au package with(plots): Exemples > plot ( sin ( x ) , x = -Pi .. Pi ) ; > plot ( sin ( x ) , x = 0 .. 2 * Pi , scaling = constrained ) ; # repère orthonormé 4/9 Document disponible sur : www.elamiriahmed.com Tracé simultané de plusieurs courbes > F:=plot(cos(x),x=-Pi..Pi,y=-Pi..Pi): G:=plot(tan(x),x=-Pi..Pi,y=-Pi..Pi,color=green): display({F,G}); Equations et système d’équations solve ( expr=expr, var ) résout, si possible, équations et inéquations : > solve ( x^2 + 6 * x – 1 =0, x ) ; > solve ( x^5 + x – 4 = 0 , x ) ; # !!! SYSTEMES : > solve ( { x + y = 1 , 2 * x + y = 3 } , { x , y } ) ; fsolve ( expr = expr , var ) (f comme float) permet d’obtenir une valeur numérique approchée des solutions d’une équation : > fsolve ( x * exp ( x^2 ) = 1 , x ) ; > fsolve ( x^5 + x - 4 = 0 , x ) ; # recherche toutes les racines réelles > fsolve ( x^5 + x - 4 = 0 , x , complex ) ; # recherche toutes les racines complexes L’opérateur D ( fct ) renvoie la fonction dérivée de fct qui est une fonction : Exemples : > f := D ( tan ) ; > f(0) ;f(Pi/4) ; > restart : > f := x -> exp ( x^2 ) ; > g := D ( f ) ; >g(x); > h := (D @@ 3 ) (f) ; # donne la fonction dérivée troisième de f EQUATIONS DIFFERENTIELLES Maple utilise la commande suivante : dsolve ( eq , y ( t ) ) ; où eq est une équation différentielle formelle dépendant de la fonction y(t) et y(t) la fonction inconnue. Exemple 1 : Résolvons l’équation différentielle y '(t ) y (t ) t . > dsolve(diff(y(t),t)+y(t)=t,y(t)); On peut procéder également comme suit: > eq := diff ( y ( t ) , t ) + y ( t ) = t ; > dsolve ( eq , y ( t ) ) ; Exemple 2 : Résolvons l’équation différentielle y ''(t ) 4 y (t ) sin t . > dsolve(diff(y(t),t$2)-4*y(t)=sin(t),y(t)); > eq := diff(y(t),t$2)-4*y(t)=sin(t) ; # ou bien > dsolve ( eq , y ( t ) ) ; Résolution d’une équation différentielle avec données initiales : « Problème de Cauchy » Par exemple, pour une équation d’ordre 1, si on précise y(0), la solution est entièrement déterminée. Exemple : Résolvons l’équation différentielle suivante : y '(t ) y (t ) t 2 , y (0) 1 > dsolve ( { diff ( y ( t ) , t ) - y ( t ) = t^2 , y ( 0 ) = 1 } , y ( t ) ) ; Ou bien : > eq := diff ( y ( t ) , t ) - y ( t ) = t^2 ; > dsolve ( { eq , y ( 0 ) = 1 } , y ( t ) ) ; Exemple : Résolvons l’équa diff : y ''(t ) y '(t ) y (t ) 0 , y (0) 0, y '(0) 1 > eq := diff ( y ( t ) , t $ 2 ) + diff ( y ( t ) , t ) + y ( t ) =0 ; > dsolve ( { eq , y ( 0 ) = 0 , D ( y ) ( 0 ) = 1 } , y ( t ) ) ; R/R :On a utilisé l’opérateur de dérivation : D ( y ) représente la fonction y ’ et D(y)(0), y ’(0). 5/9 Document disponible sur : www.elamiriahmed.com MATRICES : Définition d’une matrice ou d’un vecteur : Vecteurs : Ils sont affichés en ligne, mais on peut les considérer comme des matrices de n lignes et une colonne et les utiliser pour la multiplication par une matrice (voir plus loin). > v := vector ( 3 , [ a , b , c ] ) ; Matrice : Définition directe des éléments de la matrice : > A := matrix ( 3 , 3 , [ 0 , 1 , -1 , -3 , 4 , -3 , -1 , 1 , 0 ] ) ; # dimensions puis éléments de chaque ligne de la matrice On accède au coefficient de la matrice Ai , j avec A [ i , j ]. Le nombre de lignes s’obtient par rowdim(A) et le nombre de colonnes par coldim(A). rowdim(A) ; coldim(A) ; Matrice à termes tous égaux : > J := matrix ( 3 , 3 , 1 ) ; Matrice définie par une fonction : > F := matrix ( 3 , 3 , ( i , j ) -> i + j ) ; Matrice identité I n : utilisation de la fonction diag : > diag ( 1 , 2 , 3 ) ; # matrice diagonale > diag ( 1 $ 5 ) ; # matrice unité d’ordre 5 Etude d'une matrice : > rank ( A ) ; # rang de la matrice A > trace ( A ) ; # trace de A > transpose(A) ;# la transposée de A > inverse ( A ) ; # inverse d'une matrice carrée inversible > evalm(A^(-1)) ; # autre façon de calculer l’inverse d’une matrice > det ( A ) ; # déterminant > kernel ( A ) ; # vecteurs formant une base du noyau de A Rappel : Le noyau de A est défini par : ker(A)={X / AX=0} . > colspace(A,'dim') retourne une base de l’espace vectoriel engendré par les vecteurs colonnes de la matrice.Dim est optionnel et contient la dimension de cet espace vectoriel. > charmat(A,lambda) > charpoly(A,lambda). (càd: une base de Im(A) ) retourne la matrice caractéristique M de A.Elle est telle que M=lambda*I-A.Rem: det(M) donne le polynôme caractéristique.C’est équivalent à charpoly(A,lambda). polynome charactéristique de A > eigenvals(A) donne les valeurs propres de la matrice A.Ce sont aussi les solutions du polynôme caractéristique précédent. > eigenvects(A) retourne les vecteurs propres de la matrice A > basis(v) trouve une vase de l’espace vectoriel engendré par l’ensemble de vecteurs v. > GramSchmidt(v) transforme un ensemble v de vecteurs linéairement indépendants en un ensemble de vecteurs orthogonaux deux à deux. 6/9 Document disponible sur : www.elamiriahmed.com > dotprod(u,v,'orthogonal') produit scalaire de u par v. > crossprod(u,v) produit vectoriel de u par v. > norm(v) calcule la norme du vecteur - possibilité d’options-. Opérations sur les matrices : On utilise les notations habituelles + et - sauf pour le produit de deux matrices qui se note « &* » ou multiply . > A := matrix ( 3 , 3 , [ 0 , 1 , -1 , -3 , 4 , -3 , -1 , 1 , 0 ] ) ; > 3 * A ; # multiplication par un scalaire > evalm(3 * A) ; il faut écrire evalm pour que la matrice s’affiche > A+A ; > evalm(A+A) ; il faut écrire evalm pour que la matrice s’affiche > B := matrix ( 3 , 3 , [ 3 , 2 , -1 , -3 , 4 , 0 , 1 , 1 , 0 ] ) ; >A&*B ; > evalm(A&*B) ;# il faut écrire evalm pour que la matrice s’affiche > evalm(B&*A) ;# le produit matriciel n’est pas commutatif en fait ! > multiply ( B,A ) ; # autre façon de faire un produit de deux matrices > A^3 ;# puissance d’une matrice > evalm ( A^3 ) ; # il faut écrire evalm pour que la matrice s’affiche > v :=vector(3,[1,0,-2]) ; > A&*v ; evalm(A&*v) ;# Multiplication d’un vecteur par une matrice : Résolution des systèmes linéaires matriciellement : La fonction linsolve permet de résoudre le système d’écriture matricielle : « AX=b ». Exemple : > A := matrix(2,2,[1,2,1,3]); > b := vector( [1,-2]); > linsolve(A, b); Remarque: la function linsolve permet encore de résoudre des equations matricielles du type “AX=B”, où A et B sont des matrices.( si de telles solutions existent). Exemple: > A := matrix([[5,7],[10,14]]); > B := matrix([[3,0],[6,0]]); > linsolve(A, B); COURBES PARAMETREES PLANES > with(plots): En Coord. Catésiennes > plot([t/(1+t^4),t^3/(1+t^4),t=-10..10]); > plot([cos(t)^3,sin(t)^3,t=-3.14..3.14]); > plot([cos(3*t),sin(2*t),t=-3.14..3.14]); En Coord. Polaires > plot([1+cos(t),t,t=-3.14..3.14],coords=polar); > plot([cos(t)^2,t,t=-3.14..3.14],coords=polar); > plot([cos(3*t),t,t=-3.14..3.14],coords=polar); Manipulation d’expressions : Exemples : + expand (expr) développe une expression formelle : > expand ( (x+1) ^5 + (y-3)^4 ) ; expand ( cos (a+b) ) ; expand ( cos ( 4 * x ) ) ; > expand ( ( m + 2 ) ! / ( m – 1 ) ! ) ; # simplification d’un quotient de factorielles + factor( expr ) factorise un polynôme à une ou plusieurs variables > factor ( x^3 – 1 ) ; # factorisation dans Q 7/9 pgcd, ppcm, division euclidienne, nombres premiers Le pgcd (resp ppcm) de deux entiers a et b se calcule avec la commande igcd(a,b) (resp. ilcm(a,b). Exemples : > igcd(36,24); > ilcm(36,24); Remarque: igcd : “greatest common divisor of integers” ilcm : “least common multiple of integer” Dans la division euclidienne d’un entire a par un entier b, le reste et le quotient s’obtiennent avec : iquo(a,b) et irem(a,b). Exemples : > iquo(36,24); > irem(36,24); Remarque: irem –“ integer remainder” iquo – “integer quotient” Pour tester si un entier n est premier ou pas, on utilise la commande isprime(n) ; s’il est entier on reçoit true, sinon false. Pour l’obtention du premier nombre premier après n , on utilise nextprime(n). -ifactor(n) décompose n en facteurs premiers -ifactors(n) donne la liste des facteurs premiers de n. -ithprime(n) retourne le nième nombre premier,le premier étant 2 -prevprime(n) retourne le plus grand nombre premier strictement inférieur à n Exemples : > isprime(10001); > nextprime(10001); > isprime(10007); Calcul arithmétique polynomial : pgcd, ppcm, division euclidienne Le pgcd (resp. ppcm) de deux polynomes P et Q se calcule avec la commande gcd(P,Q) (resp. lcm(P,Q). Exemples : > P:=X^4-1; > Q:=X^6-1; > gcd(P,Q); > lcm(P,Q); > expand(%); Remarque: gcd – “greatest common divisor of polynomials” lcm –“ least common multiple of polynomials” Dans la division euclidienne d’un polynome P par un entier Q, le reste et le quotient s’obtiennent avec : quo(P,Q,X) et rem(P,Q,X). 8/9 Document disponible sur : www.elamiriahmed.com Calcul arithmétique des entiers : Somme d’une série 1 : n 1 n ( n 1) > sum(1/(n*(n+1)),n=1..infinity); NB : cette somme est calculable à la main après décomposition en 1 ( voir chap. sur les fractions rationnelles). éléments simples de n(n 1) 1 Pour le calcul de la somme 2 : n 1 n > sum(1/n^2,n=1..infinity); 2 NB: En spé (series de Fourier), on trouve . 6 1 Pour : 3 , c’est la fameuse fonction zeta de Riemann, encore reconnue par Maple ! n 1 n > sum(1/n^3,n=1..infinity); Pour le calcul de la somme Développements limités et asymptotiques Le DL de sin x au voisinage de 0 à l’ordre 4 : 1 x x2 > series(sin(x)/(1-x-x^2), x=0,4); NB: Maple parle de grand O pas petit o. x 1 au voisinage de 1 à l’ordre 3 : Le DL de 2 x x 1 > series((x+1)/(x^2+x-1),x=1,3); x3 x 1 Le développement asymptotique à l’ordre 3 (càd au voisinage de ) de 2 : x x2 > series((x^3+x-1)/(x^2+x+2),x=infinity,3); NB: Déduire l’équation de l’asymptote ainsi que sa position par rapport à la courbe au voisinage de . Fin 9/9 Document disponible sur : www.elamiriahmed.com Exemples : > P:=X^3-2*X+1; > Q:=X^2-X-2; > quo(P,Q,X); > rem(P,Q,X);