Maple - El Amiri Ahmed, Professeur agrégé en Mathématiques au

publicité
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 
x3
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 x2
> 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);
Téléchargement