Vous êtes sur la page 1sur 13

MAO :Initiation Maple

ENSA Khouribga 1 Professeur : SEHMAOUI


Maple Analyse

1 Rappel :
Simplement une fonction est un objet f qui agit sur des arguments pour renvoyer un rsultat
f (arg
1
,,arg
n
) reprsente limage par f de la squence darguments arg
1
,,arg
n.
Un nombre peut tre considr comme une fonction constante :
> x:=2; x(4), x(2,6);
:= x 2

, 2 2


2 Sommes et produits :
La fonction sum permet de sommer les expressions (expr(i) )pour i variant de i_min au i_max.
La fonction Sum (S en majuscule) permet dobtenir la forme inerte.
>sum(exp(i),i=i_min..i_max) ;
> Sum(k^3,k=1..n)=factor(sum(k^3,k=1..n));
=

= k 1
n
k
3
n
2
( ) + n 1
2
4

On peut approximer la valeur de e par :
> Sum(1/k!,k=0..1000)=evalf(sum(1/k!,k=0..1000));
=

= k 0
1000
1
! k
2.718281828
> Sum(1/k^4,k=1..infinity)=sum(1/k^4,k=1..infinity);
=

= k 1

1
k
4

4
90

La fonction product ralise le produit des expressions (expr(i), i variant de i_min i_max, la
fonction Product (avec P en majuscule) permet de donner la forme inerte.
> product(k^2/(k+1),k=1..20)=product(k^2/(k+1),k=1..20);
=

= k 1
20
k
2
+ k 1
115852476579840000
3 Comment dfinir des fonctions personnalises ? :
Le nombre de fonctions intgres Maple est important, mais on a souvent besoin de dfinir ses
propres fonctions. La syntaxe est :
- pour une fonction dune seule variable :
> f :=var->expr; # (->):les signes moins et suprieur
- pour une fonction de n variables :
> f :=(var
1
,,var
n
)->expr;
MAO :Initiation Maple

ENSA Khouribga 2 Professeur : SEHMAOUI
> f:=x->x^3+5*x+4;
:= f x + + x
3
5 x 4

> f(0), f(1), f(-2);
, , 4 10 -14

> g:=(x,y)->x*y+x-y;
:= g ( ) , x y + x y x y

> g(0,0), g(5,2), g(-4,-8);
, , 0 13 36

> h:=x->x^2+5*x+4;solve(h(x));
:= h x + + x
2
5 x 4

, -1 -4

> factor(h(x));
( ) + x 4 ( ) + x 1

> restart:g:=x->sqrt(x^2);
:= g x x
2

> simplify(g(x),assume=real);
x

> simplify(g(x),assume=positive);
x

3-1: Domaine de dfinition d'une fonction:
La fonction singular permet de dterminer les singularits de certaines fonctions:
singular(1/x);

{ } = x 0

singular(tan(x));
{ } = x + _Z1~
1
2

3-2: La continuit :
La fonction iscont permet d'tudier la continuit de certaines fonctions:
> iscont(1/x,x=-2..2);
false

> iscont( 1/x, x=0..1 );
true

4 Fonctions dfinies par intervalles :
La fonction piecewise permet de dfinir une fonction partir de conditions sur diffrents
intervalles : piecewise(cond1,f1,cond2,f2,,condN,fN,f_autrement)
> f:=x->piecewise(x<0,exp(x),x<=4,x/4+1,2);
MAO :Initiation Maple

ENSA Khouribga 3 Professeur : SEHMAOUI
:= f x
|
\

|
|
piecewise , , , , < x 0 e ee e
x
x 4 +
1
4
x 1 2
> f(-1),f(1),f(3),f(8);
, , , e ee e
( ) -1 5
4
7
4
2
Extrama dune fonction : avec les fonctions minimise et maximize :
> minimize(x^2+x-3),maximize(-x^4+x^2+1);
,
-13
4
5
4

5 Oprateurs sur les fonctions :
* Loprateur @ arrobas permet de composer des fonctions :
> restart:
> f:=x->x^2+x;f(2);
:= f x + x
2
x
6

> g:=x->x^3;g(6);
:= g x x
3

216

> (g@f)(2);# les parenthses sont obligatoires.
216

> (f@g)(2);
72

> (g@f)(z);
( ) + z
2
z
3

> (f@g)(a);
+ a
6
a
3

* On utilise la syntaxe f@@n pour former ... f f f o o o
> restart:
> g:=x->x^3;
:= g x x
3

> h:=x->(g@@3)(x);
:= h g
( ) 3

> h(2);
134217728

6 Drivation.
La fonction diff permet de driver une fonction. (Voir aussi la fonction D).

> restart:
> g:=x->x^8+3*x^5;
MAO :Initiation Maple

ENSA Khouribga 4 Professeur : SEHMAOUI
:= g x + x
8
3 x
5

> diff(g(x),x);
+ 8 x
7
15 x
4

( ) ( ) g
( ) -1
8
> diff(diff(g(x),x),x);
+ 56 x
6
60 x
3

> diff(g(x),x$2);
+ 56 x
6
60 x
3

On Remarque bien que diff(g(x),x$2)= diff(diff(g(x),x),x)
> diff(g(x),x$8);# la drive 8ime
40320

7 Intgration.
La fonction int permet dintgrer une fonction.int(expr,x) et int(expr,x=a..b) ;
> > Int( sin(x), x ); # remarquer le Int avec I en majuscule
d

( (
( ) sin x x
> int( sin(x), x ); # remarquer le int avec i en minuscule
( ) cos x

On peut aussi intgrer entre deux bornes a et b.

> Int( exp(-x^2)*ln(x), x=0..infinity )=int( exp(-x^2)*ln(x), x=0..infinity );
= d

(
(
(
0

e ee e
( ) x
2
( ) ln x x

4
1
2
( ) ln 2
On obtient alors sa valeur approche laide de la fonction evalf :
> Int( exp(-x^2)*ln(x), x=0..infinity )=evalf(int( exp(-x^2)*ln(x), x=0..infinity ));
= d

(
(
(
0

e ee e
( ) x
2
( ) ln x x -0.8700577270

> > Int( cos(x)^2, x=0..Pi/4)=int( cos(x)^2, x=0..Pi/4 );
= d

(
(
0

4
( ) cos x
2
x +
1
4

8


MAO :Initiation Maple

ENSA Khouribga 5 Professeur : SEHMAOUI
Les limites et dveloppements asymptotiques :

1- Limite dune expression, dune suite, dune fonction somme dune srie
Limites : avec la fonction limit(expr,x=a,option)
option=(left = gauche), (right = droite)
> limit(sin(x)/x,x=0);
1

> limit(1/x^3,x=0);
undefined

Utilisation de la forme inerte Limit.
> Limit(1/x^3,x=0,right)=limit(1/x^3,x=0,right);
= lim
+ x 0
1
x
3


> q:=sum((1+i^2)/i^5,i=1..n);
:= q + + +
1
24
( ) , 4 + n 1
1
2
( ) , 2 + n 1 ( ) 5 ( ) 3
> limit(q,n=infinity);
+ ( ) 5 ( ) 3

> evalf(%);
2.238984658


2- Suites rcurrentes
Maple permet de trouver des rcurrences. Ainsi partir lexpression U
n+1
=f(U
n
) Maple peut trouver une
expression de la forme Un=g(n) qui ne ncessite plus le calcul des termes prcdents :
Pour trouver la forme rcurrente en utilise la fonction rsolve :
>rsolve({quations de rcurrences, conditions initiales},f(variable)) ;
> restart:
rsolve({u(n)=u(n+1)-2*u(n-1),u(0)=1,u(1)=2},u(n));
2
n

> restart:
u:=rsolve({u(n)=3*u(n+1)-4*u(n-1),u(0)=1,u(1)=2},u(n),makeproc);

> evalf(u(100));
> evalf(u(30));

> restart:
rsolve({f(n) = -3*f(n-1) - 2*f(n-2), f(1)=1,f(2)=1}, {f});
{ } = ( ) f n + 3 ( ) -1
n
( ) -2
n

> restart:
f:=rsolve({f(n) = -3*f(n-1) - 2*f(n-2), f(1)=1,f(2)=1}, {f},makeproc);
MAO :Initiation Maple

ENSA Khouribga 6 Professeur : SEHMAOUI
f n proc proc proc proc( ) :=
if if if if then then then then else else else else end if end if end if end if < 1 nargs ( ) ' ' procname args ( ) expand + 3 ^ ( ) -1 n ^ ( ) -2 n
end proc end proc end proc end proc

> f(23);
-8388605

3- Dveloppements limits et asymptotiques
Les fonctions :
taylor(expression,var=point,ordre) ;Pour raliser des dveloppements limits ou de Taylor
series(expr,x=a,n) ou asympt(expr,x,n). Pour des dveloppements asymptotiques plus gnraux

Lordre n est facultatif et vaut 6 par dfaut.

le DL de sin(x) au voisinage de zero lordre 8 secrit:
> taylor(sin(x),x=0,8);
+ + x
1
6
x
3
1
120
x
5
1
5040
x
7
( ) O x
8

Pour rutiliser le dveloppement limit, il sera ncessaire de le convertir en polynme en utilisant la
fonction convert :
> P:=convert(taylor(sin(x),x=0),polynom);
:= P + x
1
6
x
3
1
120
x
5


> asympt(x/(1-x-x^2),x);

+ + +
1
x
1
x
2
2
x
3
3
x
4
5
x
5
|
\

|
|
O
1
x
6

> asympt(sum(1/k,k=1..n)-ln(n),n,10);#la constante d'Euler
+ + + +
1
2 n
1
12 n
2
1
120 n
4
1
252 n
6
1
240 n
8
|
\

|
|
O
1
n
10

> gamma=evalf(gamma);
= 0.5772156649


> taylor(sqrt(sin(x)), x=0, 4);
Error, does not have a taylor expansion, try series()

> series(sqrt(sin(x)), x=0, 4);
+ x
x
( ) / 5 2
12
( ) O x
( ) / 9 2

Leadterm donne le terme principal dune srie:
> series(leadterm(sin(x^3)/(2*x)),x=0);
1
2
x
2

MAO :Initiation Maple

ENSA Khouribga 7 Professeur : SEHMAOUI
Rsolution formelle ou numrique dquations et de systmes
dquations.

1- Equation de degr quelconque :
Pour rsoudre lquation de degr n, on utilise la fonction solve :
>solve(a
n
x
n
+a
n-1
x
n-1
+a
1
x+a
0
,x) ;
Pours rsoudre lquation 4x
2
+5x-9=0, on entre:
> solve(4*x^2+5*x-6=0,x);
,
3
4
-2
La commande assume
La commande assume permet de prciser des conditions sur des variables. Par exemple si x est
positif, alors l'quation x
2
=4 a une seule solution x=2.
> solve(sqrt(x^2)=2);
, 2 -2

> assume(x>0);# x est positif
> solve(sqrt(x^2)=2);
2

> x:='x'; #Pour rtablir x comme variable sans valeur.
:= x x

> solve(sqrt(x^2)=2);# deux solutions nouveau.
, 2 -2

Maple peut rsoudre formellement une quation de degr infrieur ou gal trois :
> solve(a*x^2+b*x+c=0,x);
,
+ b b
2
4 a c
2 a
b b
2
4 a c
2 a

Si lquation est dfinie numriquement et ne comporte quune seule variable, on peut ne pas
spcifier expr=0 aussi par rapport quelle variable :
> solve(x^3+2*x^2+x+2=0,x);
, , -2 I I

> solve(x^3+2*x^2+x+2,x);
, , -2 I I

> solve(x^3+2*x^2+x+2);
, , -2 I I

Cherchons maintenant rsoudre lquation : xe
x
-1=0.
> solve(x*exp(x)=1,x);
( ) LambertW 1

> evalf(%);
0.5671432904

MAO :Initiation Maple

ENSA Khouribga 8 Professeur : SEHMAOUI
LambertW(x) est en fait dfinie comme tant lune des solutions de ye
y
=x, il faut alors rsoudre
numriquement lquation.
La rsolution numrique se fait avec la fonction fsolve :
>fsolve(quation,var,option) ;
> fsolve(x*exp(x)=1,x);
0.5671432904

> q := 3*x^4 - 16*x^3 - 3*x^2 + 13*x + 16:
fsolve(q, x);
, 1.324717957 5.333333333

> fsolve(q, x,1..2);
1.324717957

> fsolve(q, x,5..6);
5.333333333

Pour donner Maple le nombre maximum de solutions trouver en utilise la fonction maxsols:
> fsolve(x^5-2*x^4+2*x^3-3*x^2-2*x+2,x);
, , -0.7589676366 0.5934719689 1.911366223

> fsolve(x^5-2*x^4+2*x^3-3*x^2-2*x+2,x,maxsols=1);
-0.7589676366

> fsolve(x^5-2*x^4+2*x^3-3*x^2-2*x+2,x,maxsols=2);
, -0.7589676366 0.5934719689

Pour rsoudre les quations dans Z on utilise la fonction isolve :
> q:=x^3+1/2*x^2-13/2*x+3;
:= q + + x
3
1
2
x
2
13
2
x 3
> isolve(q,x);
, { } = x 2 { } = x -3

> solve(q,x);
, ,
1
2
2 -3
Remarque :
Lors de la rsolution dquations, il arrive que le rsultat soit exprim en utilisant la fonction
RootOf(expr), qui dsigne les racines de expr. Celles-ci ne sont pas toujours exprimables laide
des fonctions usuelles. On peut cependant utiliser
evalf(...) pour voir les racines exprimables ou des valeurs approches de ces racines.
> solve(x-cos(x)=0,x);
( ) RootOf + _Z ( ) cos _Z

> evalf(%);
0.7390851332

2- Systmes dquations :
Maple permet de rsoudre un systme dquations avec la mme fonction solve.
>solve({equa1,equa2,equaN},{var1,var2,varN}) ;
Pour rsoudre le systme :
MAO :Initiation Maple

ENSA Khouribga 9 Professeur : SEHMAOUI
3 1
5 2 0
x y
x y
+ =

+ =


On crit:
> solve({x+3*y=1,5*x+2*y=0},{x,y});
{ } , = y
5
13
= x
-2
13

Lquation peut tre de degr quelconque (ne pas dpasser la capacit du machine).
> solve({x^2+y^2-1=0,x+y+1=0},{x,y});
, { } , = y 0 = x -1 { } , = y -1 = x 0

MAO :Initiation Maple

ENSA Khouribga 10 Professeur : SEHMAOUI
Calcul matriciel : Maple Algbre
1: Dfinition d'une matrice:
La dfinition d'une matrice se fait l'aide de la fonction matrix
> nom:=matrix(n,m);
> A:=matrix(2,3);
:= A ( ) array , , .. 1 2 .. 1 3 [ ]

Utilisez la fonction evalm pour afficher la matrice A dans la forme habituelle
evalm(A);

(
(
(
A
, 1 1
A
, 1 2
A
, 1 3
A
, 2 1
A
, 2 2
A
, 2 3

> B:=matrix(2,3,(i,j)->i+j); # i= nombre de lignes, j=nombrer de colonnes



2 Oprations courantes sur les matrices
Opration Notation
Addition +
Soustraction -
Multiplication &*
Puissance ^ ou **
> A1:=matrix([[1,2,3],[4,5,6],[7,8,9]]);
:= A1

(
(
(
(
(
1 2 3
4 5 6
7 8 9

> B1:=matrix([[0,1,2],[3,1,2],[5,1,0]]);
:= B1

(
(
(
(
(
0 1 2
3 1 2
5 1 0

Somme:
> A1+B1=evalm(A1+B1);
= + A1 B1

(
(
(
(
(
1 3 5
7 6 8
12 9 9

Produit:
> P:=A1&*B1;


> evalm(P);
:= B

(
(
2 3 4
3 4 5
:= P A1 &* B1
MAO :Initiation Maple

ENSA Khouribga 11 Professeur : SEHMAOUI

(
(
(
(
(
21 6 6
45 15 18
69 24 30

> evalm(2*A1);

(
(
(
(
(
2 4 6
8 10 12
14 16 18


Puissance:
> S:=A1^3;
:= S A1
3

> evalm(S);

(
(
(
(
(
468 576 684
1062 1305 1548
1656 2034 2412

3 Fonctions du package linalg
Le package linalg est compos de trs nombreuses fonctions qui permettent des manipulations
volues sur les matrices.
3.1 Oprations lmentaires:
Chargez le package linalg avec l'instruction:
>with(linalg):
On peut utiliser la fonction matadd du package (linalg) pour calculer la somme de deux matrices
matadd(A1,B1);

(
(
(
(
(
1 3 5
7 6 8
12 9 9

On peut utiliser la fonction multiply du package (linalg) pour calculer le produit de deux matrices
> multiply(A1,B1);

(
(
(
(
(
21 6 6
45 15 18
69 24 30

3.2 Oprations sur les matrices:
Fonctions manipulations
trace Calcule la trace de la matrice
det Calcule le dterminant de la matrice
transposee Calcul la transpose de la matrice
inverse Calcule l'inverse de la matrice
rank Calcule le rang de la matrice
gausselim Effectue un pivot de Gauss sur la matrice
eigenvals Calculs les valeurs propres de la matrice
eigenvectors Calcule les vecteurs propres de la matrice
MAO :Initiation Maple

ENSA Khouribga 12 Professeur : SEHMAOUI
charpoly Calcule le polynme caractristique de la matrice>
idm:=Matrix(3,3,shape=identity);
det(x*idm-A)=charpoly(A,x)


> A:=matrix(4,4,(i,j)->i*j-1);
:= A

(
(
(
(
(
(
(
(
0 1 2 3
1 3 5 7
2 5 8 11
3 7 11 15

> B:=matrix(4,4,(i,j)->`if`(i=j,1,0));
:= B

(
(
(
(
(
(
(
(
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1

> with(linalg):
> C:=matrix([[1,3],[-2,4]]);trace(C);
:= C

(
(
1 3
-2 4

5

> det(C);
10

> inverse(C);

(
(
(
(
(
(
(
2
5
-3
10
1
5
1
10

> eigenvectors(C);
,

(
(
, , +
5
2
1
2
I 15 1 { }

(
(
,
3
4
1
4
I 15 1

(
(
, ,
5
2
1
2
I 15 1 { }

(
(
, +
3
4
1
4
I 15 1
> eigenvals(C);
, +
5
2
1
2
I 15
5
2
1
2
I 15
> charpoly(C,x);
+ x
2
5 x 10
> solve(%);
, +
5
2
1
2
I 15
5
2
1
2
I 15
MAO :Initiation Maple

ENSA Khouribga 13 Professeur : SEHMAOUI
XI-Equations diffrentielles


Rsolution dquations diffrentielles linaires du premier ordre :

La rsolution des quations diffrentielles se fait laide de la fonction dsolve :
Soit lquation : xy' + y - 3x
2
= 0
> eq:=x*diff(y(x),x) + y(x) - 3*x^2 = 0;
>
:= eq = + x
|
\

|
|
d
d
x
( ) y x ( ) y x 3 x
2
0
> dsolve(eq);
= ( ) y x
+ x
3
_C1
x

Rsolution dquations diffrentielles du deuxime ordre :
dsolve({equ diff , cond init},{fonctions(variables)}) ;
soit lquation :

>
dsolve({diff(theta(t),t$2)+omega^2*theta(t),D(theta)(0)=0,thet
a(0)=Pi/6},theta(t));
= ( ) t
1
6
( ) cos t