Professional Documents
Culture Documents
Cycles préparatoires
Des études d’ingénieur
Deuxième année
Janvier 2005
________________________________________________________________________ 1
SOMMAIRE
Séance Eléments de contenu
Séance 1 Notes de cours, complément d’exercices,…..
Séance 2 Fonctions réelles à 1 seule variable
Domaine de définition
Continuité
Dérivées
Primitives et intégrales
Asymptotes
Courbe des fonctions
Exercices d'application
Séance 3 Fonctions réelles à 2 variables et développement limités
Domaine de définition
Dérivées partielles
Courbes
Développements limités
Exercices d'application
Séance 4 Polynômes et fractions rationnelles à une et plusieurs variables
Factorisation
Simplification
Développement
Tri
Arrangement
Substitution
Exercices d'application
Nombre complexe
Définition
Formes cartésienne et polaire
Evaluation dans C
Nombre conjugué, argument, module
Séance 5 Résolution des équations à variables complexes
Exercices d'application
Fonctions complexes
Domaine de définition
Images, zéros et points fixes d'une fonction complexe
Transformation géométrique dans le plan complexe
Exercices d'application
Séance 6 Algèbre linéaire : utilisation des fonctions prédéfinies Maple et programmation
Calcul matriciel
Déclaration des matrices et des vecteurs
Opérations sur les matrices: addition, multiplication par un scalaire et produit de deux matrices
Inverse, Puissance
Valeurs propres et Vecteurs propres
Trace, Noyau, Déterminant
Exercices d'application
Séance 7 Algèbre linéaire : utilisation des fonctions prédéfinies Maple et programmation (suite)
Polynômes caractéristiques
Résolution de système
Exercices d'application
________________________________________________________________________ 2
Rapport général sur les équations différentielles premier et second ordre
Exercices d'application
Systèmes différentiels
Exemple de solution
Exercices d'application
Séance 10 Révision générale : résolution de problèmes et leur programmation
Remarque : ces problèmes peuvent être choisis parmi les exercices et problèmes proposés dans le paragraphe
complément d’exercices du support « NOTE DE COURS DE MAPLE TRAVAUX PRATIQUES avec exercices
corrigés » ou autres.
Séance 11 Révision générale : résolution de problèmes et leur programmation (suite)
________________________________________________________________________ 3
Séance 1 [1]
Notes de cours et complément d’exercices
La programmation en MAPLE nécessite la connaissance de quelques notions de base. Outre les
premières fonctionnalités de MAPLE, déjà acquises par les étudiants et rappelées par l’enseignant , nous
présentons à travers ces brèves notes de cours le minimum d’outils de programmation à retenir. Ces rappels
renferment trois parties sous forme de paragraphes. Le paragraphe 1 contient les fonctions d’entrées sorties. Le
paragraphe 2 s’intéresse aux structures de contrôle ( if simple et en alternative, les boucles et ses variétés). Les
fonctions et les procédures font l’objet du paragraphe 3. Au paragraphe 4, nous rappelons les notions
d’ensemble, de table et de tableaux.
Remarque : la version minimale conseillée est la version Maple 5, la version 7 sur CD est mise à la disposition
des enseignants à la DGET (ISET Rades).
Par ailleurs, il est conseillé d’adopter l’ordre d’apparition des séances, mais sans obligation.
________________________________________________________________________ 4
elif signifie "autrement si" . La dernière instruction à exécuter doit être précédée de else
Exemple 1: résolution de l'équation du premier degré.
Modifiez les valeurs de a et de b , puis validez les lignes suivantes:
> a:=7:b:=3:
> if a<>0 then print(`Une solution : x `=-b/a)
elif b=0 then print(`Tout x est solution`)
else print(`Pas de solution`)
end if;
♦ La boucle while
Exécute une suite d'instructions, tant que la condition est vraie.
while condition do ... end do;
Exemple 2: calcul de la somme des 100 premiers entiers naturels
> somme:=0:k:=-1:
while k<100 do k:=k+1:somme:=somme+k end do:
`somme `=somme;
♦ La boucle for
Exécute une boucle pour une variable allant d'une valeur initiale à une valeur finale,
avec un pas donné.
for variable from initiale to finale by pas do ... end do;
from , by peuvent être omises ou écrites dans un ordre quelconque. Si l'on omet from , initiale vaut 1. Si l'on
omet by , pas vaut 1.
Exemple 3: calcul de la somme des 100 premiers entiers naturels
> somme:=0:
for k from 0 to 100 do somme:=somme+k end do:
`somme `=somme;
Exemple 4: calcul de la somme des entiers impairs inférieurs à 100
Ici, on omet from donc la première valeur de k est 1. La dernière valeur prise par k sera 99.
> somme:=0:
for k to 100 by 2 do somme:=somme+k end do:
`somme `=somme;
for variable in expression do .. end do;
Exemple 5: donner les nombres premiers de la liste [31,39,47,105]
> for k in [31,39,47,105] do
if isprime(k) then print(k,`est premier`) end if
end do;
§3LES FONCTIONS ET PROCEDURES
♦ Les fonctions
Pour définir une fonction , on peut utiliser les syntaxes :
nom := var -> expr; pour une fonction d'une variable var
nom := (var1,var2,...,varN) -> expr; pour une fonction de N variables var1,var2,...,varN.
Exemples :
> f:=x->exp(x)-x;
> f:=(x,y,z,t)->x^2-3*y+4*z-t;
On peut effectuer la composition des fonctions à l’aide de l'opérateur @ , l'opérateur de composition itérée @@
> (f@g)(a);(g@f)(a); f@@N correspond à f o f o . . . o f (N fois)
♦ Les procédures
Un programme MAPLE peut être organisé en sous-programmes appelées procédures .
Une procédure, de type procedure , est définie par le mot-clé proc et peut être assignée à un nom de variable.
Pour définir une procédure intitulée nom , on utilisera la syntaxe suivante:
nom := proc (paramètres_formels)
global variables_globales; (la ligne global est optionnelle)
local variables_locales; (la ligne local est optionnelle)
________________________________________________________________________ 5
La procédure intitulée maxi calcule le plus grand de 2 entiers positifs.
Elle comporte 2 paramètres formels u et v . Leur type peut être omis, mais si on le veut le préciser,
bien noter la syntaxe u :: posint , v :: posint pour signifier que u et v sont de type posint .
Elle ne comporte ni variables globales, ni variables locales, mais une chaîne de description
de la procédure et une option de copyright.
> maxi:=proc(u::posint,v::posint)
description "calcule le plus grand de 2 entiers positifs";
option `Copyright (c) 2001 A.Le Stang`;
if u<v then v else u end if;
end proc;
> maxi(5,9);
Une variable locale est une variable qui n'est reconnue qu'à l'intérieur de la procédure,
contrairement à une variable globale accessible en dehors de la procédure.
Remarque importante:
Un paramètre formel passé à une procédure ne peut être modifié à l'intérieur de cette procédure
Exemple 8: Diviser un entier positif x par 2 tant qu'il est pair.
> div:=proc(x::posint)
while type(x,even) do x:=x/2 end do;
end proc;
> div(48);
Error, (in div) illegal use of a formal parameter
La tentative d'affecter au paramètre formel x sa valeur divisée par 2 provoque une erreur.
On peut modifier la procédure de la manière suivante:
> div:=proc(x::posint)
local y;
y:=x;
while type(y,even) do y:=y/2 end do;
y
end proc;
> div(48); On obtient en effet successivement : 48,24,12,6,3.
> div(45);
return met fin à la procédure en donnant un résultat.
next permet de passer à la valeur suivante dans une itération.
break permet de sortir de la structure de contr ô le en cours.
Récursivité:
Une procédure qui fait référence à elle même dans sa définition est une procédure
récursive .
Exemple 10: factorielle de n
> factorielle := proc(n::nonnegint)
if n>0 then n*factorielle(n-1) else 1 end if;
end proc;
> factorielle(12);
Fonction error:
La fonction error permet de définir des messages d'erreur personnalisés.
Exemple 11: racine carrée de x
> racine := proc (x)
if x<0 then error "invalide x: %1", x else simplify(x^(1/2)) end if
end proc;
> racine(144);
Complément d’exercices
Les exercices proposés sont traités par Maple , il est conseillé d’être présenté à l’aide
d’algorithmes simples (vus en 1ère année) . Le corrigé se trouve à la fin de ce document.
Exercice 1.2
Soient X,Y,Z trois entiers, tels que X<Y<Z et N un entier quelconque. Ecrire une suite
d’instruction Maple qui permet d’afficher dans l’ordre les trois petites valeurs parmi les
quatre.
Exercice 2.2
Ecrire une procédure calculant le plus grand de 3 entiers naturels non nuls a,b,c.
Exercice 2.3
Ecrire une procédure second_degré(a,b,c) qui résout l’équation du second degré à coefficients
réels : en distinguant 3 cas selon le signe du discriminant.
Exercice 1.3
Un tableau carré T à n lignes et n colonnes étant donné,
________________________________________________________________________ 7
1) Ecrire une procédure diagonale1(T,n) qui calcule la somme des éléments de T situés
sur la première diagonale.
2) Ecrire une procédure diagonale2(T,n) qui calcule la somme des éléments de T situés
sur la seconde diagonale.
Exercice 2.3
Ecrire une procédure transfert qui transforme une matrice M à deux dimensions dans un
vecteur à une dimension ( en utilisant rowdim(matrice) et coldiml(matrice))
Exemple :
a b c d
M = e f g h se transforme en V = [a b c d e f g h i j k l ]
i j k l
Exercice 3.3
Ecrire une procédure permettant de :
Trier un tableau T de n éléments par :
1) Ordre décroissant.
2) Ordre croissant.
Problème 1
Considérons le tableau à deux dimensions, contenant pour chaque étudiant de la classe, ses
moyennes dans chacune des 10 matières qui lui sont enseignées. Chaque étudiant reçoit
obligatoirement un enseignement pour chacune des 10 matières. Les noms des étudiants et
ceux de chacune des 10 matières sont stockés dans des tableaux à une dimension.
Illustration :
________________________________________________________________________ 8
Corrigé
Exercice 1.2
Exemple pour X=2, Y=5,Z=9, N=7
> restart:X:=2:Y:=5:Z:=9:N:=12:
if N<X then Z:=Y:Y:=X:X:=N
elif N<Y then Z:=Y:Y:=N
elif N<Z then Z:=N fi:print(X,Y,Z);
2, 5, 7
Exercice 2.2
> max3:=proc(a::posint,b::posint,c::posint)
local max2;
max2:=proc(x::posint,y::posint)
if x>y then x else y end if;
end proc;
max2(a,max2(b,c));
end proc;
________________________________________________________________________ 9
second_degre := proc (a , b , c)
local δ ;
if a = 0 then error "a doit être non nul"
else
δ := b ^2 − 4×a ×c;
if δ < 0 then print( `pas de solution` )
elif δ = 0 then print( `racine double `, x = −1/2×b /a )
else print( `2 racines distinctes `, x = 1/2×( −b − sqrt ( δ ) )/a ,
x = 1/2×( −b + sqrt ( δ ) )/a )
end if
end if
end proc
> second_degre(1,7,2);
7 1 7 1
2 racines distinctes , x = − − 41 , x = − + 41
2 2 2 2
Exercice 1.3
> restart;
> diagonale2:=proc(T,n)
local i,s;
s:=0:
for i from 1 to n do
s:=s+T[i,n+1-i]
end do:
print(s):
end proc;
diagonale2 := proc (T , n )
local i, s;
s := 0 ; for i to n do s := s + T [ i, n + 1 − i ] end do ; print( s )
end proc
> a:=array([[1,1,5],[0,2,0],[0,4,3]]);
1 1 5
a := 0 2 0
0 4 3
> diagonale2(a,3);
7
Exercice 2.3
> restart:
> with(linalg):
transfert:=proc(M)
local i,j,k,L,C,V;
k:=1:
V:=vector(rowdim(M)*coldim(M));
for i from 1 to rowdim(M) do
for j from 1 to coldim(M) do
V[k]:=M[i,j];k:=k+1:
od;
________________________________________________________________________ 10
od;
print(V);end;
transfert := proc (M )
local i, j, k, L , C , V ;
k := 1;
V := vector ( rowdim( M )×coldim( M ) ) ;
for i to rowdim( M ) do end proc
for j to coldim( M ) do V [ k ] := M [ i, j ] ; k := k + 1 end do
end do ;
print( V )
> M:=matrix(2,3,[a,b,c,c,d,e]);
M :=
a b c
c d e
> transfert(M);
[ a , b , c, c, d , e ]
Exercice 3.3
> #tri décroissant
restart;
> n:=5;
for i from 1 to n do
x[i]:=readstat("x="):
end do:
maxo:=x[k]: j:=k:
for i from k+1 to n do
if(x[i]>maxo) then
maxo:=x[i]:
j:=i:
end if:
end do:
s:=x[j]: x[j]:=x[k]: x[k]:=s:
end do:
for i from 1 to n do
x[i]:=x[i]
end do;
n := 5
x=-1;
x=2;
x=14;
x=124;
x=-154;
x1 := 124
________________________________________________________________________ 11
x2 := 14
x3 := 2
x4 := -1
x5 := -154
Problème 1
Méthode
Nous ultrasons deux indices : indele, correspondant à l’indice ligne de l’étudiant, et indmat
correspondant à l’indice colonne des moyennes par matière.
Pour effectuer la moyenne générale de l’étudiant, nous additionnons les moyennes une à une
et nous divisons cette somme par 10 , nous cumulons ces moyennes générales pour obtenir la
moyenne de la classe.
Algorithme relevé
Var
mat(1 :10), nom(1 :32) : tableau de chaîne de caractères
moyenne(1 :32,1 :10) : tableau de réels
indele, indmat : entiers
moyegen, moycla : réels
début
(* saisie des différents tableau*)
POUR inmat ← 1 à 10
Ecrire (`` entrer le nom de la matière numéro : ``, inmat)
Lire(mat(indmat)
FPOUR
POUR indele ← 1 à 32
Ecrire(``entrer le nom de l’étudiant numéro : ``, indele)
Lire(nom(indele)
POUR indmat ← 1 à 10
Ecrire(`` entrer sa moyenne obtenue en ``,mat(indmat))
Lire(moyenne(indele,indmat))
FPOUR
FPOUR
moycla ← 0
(*répétitive principale*)
POUR indele de 1 à 32
moygen ← 0
POUR indmat de 1 à 10
Moygen ← moyge,+moyenne(indele,indmat)
FPOUR
moycla ← moycla+moygen
FPOUR
Ecrire(``moyenne générale de la classe ``,moycla/32
Fin algorithme.
________________________________________________________________________ 12
Séance 2 [3]
________________________________________________________________________ 13
diff(f(x),x$n) ; => dériver > diff(f(x), x$2);
l'expression f(x) n fois par 1
2
x + 1
rapport à x −2 + 2
x 3
Remarque : $ est l'opérateur de x
répétition.
Déterminer la > int(f(x), x) ; > Int(f(x),x) = int(f(x),x) ;
primitive de ⌠ 2
l’expression f(x) x + 1 1 2
d x = x + ln( x )
x 2
⌡
Intégrer l'expression > int(f(x), x=a..b) ; > Int (f(x),x = 1 .. 2) = int (f(x),x =
f(x) entre a et b Remarque : Int(f(x), x=a..b) est la 1 .. 2) ;
forme inerte de int. 2
⌠ 2
x + 1 3
d x = + ln( 2 )
x 2
⌡
1
Déterminer un > asympt(f(x),x) ; > asympt(f(x),x) ;
développement 1
x+
asymptotique x
Déterminer un > taylor(f(x), x=a, ordre) ; > taylor(f(x), x=0, 2);
développement limité Error, does not have a taylor expansion,
en a try series()
> series(f(x), x=a, ordre) ; > series(f(x),x=0, 2) ;
Remarque : l’ordre est égal à 6 -1
par défaut (variable globale x + x
Order)
Calculer la limite en > limit(f(x),x=a,dir) >
a Remarque : dir (optionel) est la Limit(f(x),x=0,left)=limit(f(x),x=0,
direction = left, right, real, left);
complex. 2
x + 1
Limit est la forme inerte. lim = −∞
x
x → 0-
Représenter > plot(f, H,V), plot3d(f, H,V), > plot(g, H,V), plot3d(g, H,V)
graphiquement. etc.
Pour représenter H et V étant les axes
simultanément Remarque : pour l’utilisation de
plusieurs fonctions il ces fonctions, consulter l’aide.
faut les encadrer par
des crochets :[ ]
II) Exercices à résoudre
Exercice N°1
a) Ecrire la commande Maple qui affecte à P l'expression e1/x(x(x+2))1/2 en utilisant les
fonctions exp, sqrt et *.
b) Convertir l’expression P en une fonction f (en utilisant unapply).
c) Cette fonction présente des branches infinies, déterminer les expressions affines associées à
ces asymptotes en utilisant la fonction limit.
Rappel : Si une courbe d’équation y= f(x) est asymptote à la droite d’équation y = ax+b, alors
f( x )
a= lim b= lim f( x ) − a x
x
x→ ∞ et x→ ∞
________________________________________________________________________ 14
d) Représenter la courbe avec ses asymptotes pour x compris entre -5 et 5.
e) Ecrire une même commande Maple qui calcule et factorise l’expression de la dérivée de f à
l'aide de D et factor.
f) Ecrire une même commande Maple pour calculer et factoriser l’expression de la dérivée de
f à l'aide de diff et factor.
g) Ecrire une même commande Maple pour calculer et de factoriser la dérivée seconde de f
avec diff et factor.
Exercice N°2
Etudier la fonction définie par :
2
x − 1
f( x ) =
x ln ( x )
Cette étude consiste à :
Définir la fonction ;
Calculer la fonction f en certains points (positifs et négatifs);
Déterminer le domaine de définition ;
Tracer le courbe sur l’intervalle [0, +∞ [ ;
Etudier le comportement de la fonction ;
- en 0 et +∞ ;
- au point 1. Déterminer dans ce cas, la tangente au point d’abscisse 1.
Etudier les variations de la fonction f.
________________________________________________________________________ 15
Séance 3 [3]
Fonctions réelles à deux variables
________________________________________________________________________ 16
Intégrer > int(g(x,y), x=a..b) ; ou > Int(x*sin(y),y = 0 .. x) = int(x*sin(y),y = 0
l'expression int(g(x,y), y=a..b) ; .. x) ;
entre a et b > Int(g(x,y), x=a..b) ; ou x
⌠
Int(g(x,y), y=a..b) ; => forme x sin( y ) dy = − x cos ( x ) + x
⌡
inerte 0
Développement > asympt(g(x,y),x) ; > asympt(g(x,y),x);
asymptotique > asympt(g(x,y),y) ; x sin( y )
Développement > taylor(g(x,y), x=a, ordre) ; > taylor(g(x,y),x=0, 4);
limité en a > taylor(g(x,y), y=a, ordre) ; sin( y ) x
Remarque : l’ordre est égal à > taylor(g(x,y),y=0, 4);
6 par défaut (variable globale 1 3 4
xy− x y + O( y )
Order) 6
Calcul de limite > limit(g(x,y),x=a,dir) ; >
en a > limit(g(x,y),y=a,dir) ; Limit(g(x,y),x=0,left)=limit(g(x,y),x=0,left);
Remarque : dir (optionel) est lim x sin( y ) = 0
la direction = left, right, real, x → 0-
complex.
Limit est la forme inerte.
Représentation > plot3d(g, H,V) > plot3d(g(x,y),x=-1..1,y=-1..1);
graphique H et V étant les axes >plot3d(g(x,y),x=-1..1,y=-1..1,
Remarque : pour l’utilisation coords=spherical,style=patch);
de cette fonction, consulter
l’aide.
________________________________________________________________________ 17
Séance 4 [4]
Polynômes et fractions rationnelles
Pour les exemples suivants, on suppose que P est le polynôme défini comme suit :
>P :=(x^2+x+2)^5 ;
5
P := ( x2 + x + 2 )
Fonction Rôle Exemple
expand Développer un polynôme >expand(P) ;
.................................................................
sort Ordonner un polynôme dans l’ordre >sort(expand(P)) ;
décroissant de la puissance de ses termes ………………………………………
> sort(x^2-y^2*x^3+x^2*y^4+y+x , x);
………………………………………….
> sort(x^2-y^2*x^3+x^2*y^4+y+x , y);
…………………………………………
factor Factoriser un polynôme ou une fraction >factor(x^2-1) ;
…………………………………………
simplify Simplifier un polynôme ou une fraction >simplify((x^3+1)/(x+1)^2) ;
………………………………………
degree Donner le degré d’un polynôme >degree(P) ;
ldegree Donner le plus petit degré d’un polynôme >ldegree(P) ;
lcoeff Donner le coefficient du plus grand terme >lcoeff(P) ;
d’un polynôme
tcoeff Donner le coefficient du plus petit terme d’un >tcoeff(P) ;
polynôme
coeff Donner le coefficient d’un terme quelconque >coeff(P,x^2) = coeff(P, x, 2) ;
d’un polynôme .................................................................
gcd Donner le plus grand commun diviseur de > gcd(x^2-y^2,x^3-y^3);
deux polynômes …………………………………………
> gcd(6,-8, a , b);a ;b ;
…………………………………………
lcm Donner le plus petit commun multiple de > lcm(x^2-y^2,x^3-y^3);
deux polynômes
collect Grouper les coefficients d’un même terme Q :=a*ln(x)-ln(x)*x-x ; collect(Q,x) ;
…………………………………………
…………………………………………
divide Vérifier si deux polynômes sont divisibles >divide(x^3-y^3,x-y) ;
>divide(x^3-y^3,x-y , quotient) ,
quotient ;
…………………………………………
quo Donner le quotient de la division de deux >quo(x^3+x+1,x^2+x+1, x) ;
polynômes …………………………………………
>quo(x^3+x+1,x^2+x+1, x , reste) ,
reste ;
…………………………………………
rem Donner le reste de la division de deux >rem(x^3+x+1,x^2+x+1, x) ;
polynômes …………………………………………
________________________________________________________________________ 18
>rem(x^3+x+1,x^2+x+1, x , quotient) ,
quotient ;
normal Mettre une fraction sous sa forme normalisée >normal((x^2-y^2)/(x-y)^3) ;
…………………………………………
eval Evaluer un polynôme pour une valeur donnée >eval(P,x=1) ;
de sa variable .................................................................
>eval(x^2-y^2,{x=0,y=1}) ;
.................................................................
subs Substituer une expression par une autre dans >subs(x^2=y , y=z , x^2+2*y) =
un polynôme subs(y=z , subs(x^2=y , x^2+2*y));
…………………………………………
> subs(y=z , x^2=y , x^2+2*y) ;
…………………………………………
solve Résoudre des équations ou des inéquations > solve(x-2*y=0)=solve(x-2*y);
>solve({x+2*y=3,-x^2+2*y=1},{x,y})
= solve({x+2*y=3,-x^2+2*y=1});
…………………………………………
nops Nombre des opérandes d’une expression >nops(P) ;
op Liste des opérandes d’une expression >op(P) ;
>op(n,P) ;#l’opérande du rang n dans P
>op(1..2,P) ; #liste des opérandes allant
du rang 1 au rang 2
> Convert(F,parfrac,x) ; décomposer la fraction F en éléments simples
exple : > convert ((x^5+1) / (x^4-x^2), parfrac, x) ;
EXERCICE 1 :
EXERCICE 2 :
6 x2 + 18 x − 24
On considère la fraction rationnelle F définie par F :=
x2 + 2
1. Définir F
2. Factoriser le numérateur de F
3. Trouver les racines du dénominateur de F et le factoriser
4. Décomposer F en éléments simples
Exercice 3 :
Trouver un polynôme P tel que
P2 = x8 – 2x6 – 3 x4- 4x2 + 4
Exercice 4 :
x6
Soit la fraction rationnelle F définie par : F := 2
( x2 + 1 ) ( x + 1 )2
La décomposition de F en éléments simples dans R s’écrit :
________________________________________________________________________ 19
bx+c dx+e f g
G := a + + + +
x2 + 1 2 x + 1 ( x + 1 )2
( x2 + 1 )
On réduit les fractions composantes de G au même dénominateur et on identifie les
numérateurs de F et de G. En déduire les valeurs de a, b, c, d, e, f, g.
Correction :
Exercice 1 :
> restart;F:=(6*x^2+18*x-24)/(x^2+2);
6 x 2 + 18 x − 24
F :=
x2 + 2
> factor(numer(F));
6 (x + 4) (x − 1)
> solve(denom(F));
I 2 , −I 2
> factor(denom(F),{I,sqrt(2)});
−( −x + I 2 ) ( x + I 2 )
> convert(F,parfrac,x);
−36 + 18 x
6+
x2 + 2
Exercice 2 :
> restart;P:=sum(a[i]*x^i,i=0..4);
P := a0 + a1 x + a2 x2 + a3 x3 + a4 x4
> E:=expand(P^2)-(x**8+2*x**6-3*x**4-4*x**2+4);
2 2 2 2 2
E := a0 + a1 x2 + a2 x4 + a3 x6 + a4 x8 + 2 a1 x3 a2 + 2 a1 x4 a3 + 2 a1 x5 a4 + 2 a2 x5 a3
+ 2 a2 x6 a4 + 2 a3 x7 a4 + 2 a0 a1 x + 2 a0 a2 x2 + 2 a0 a3 x3 + 2 a0 a4 x4 − x8 − 2 x6
+ 3 x4 + 4 x2 − 4
> solve({seq(coeff(E,x,k),k=0..8)});
{ a1 = 0, a0 = -2, a3 = 0, a2 = 1, a4 = 1 }, { a1 = 0, a3 = 0, a2 = -1, a0 = 2, a4 = -1 }
> assign(%);P;
2 − x2 − x4
Exercice 3 :
> restart;F:=x^6/((x^2+1)^2*(x+1)^2);
x6
F := 2
( x2 + 1 ) ( x + 1 )2
> G:= a + (b*x+c)/(x^2+1) + (d*x+e)/(x^2+1)^2 + f/(x+1) + g/(x+1)^2;denom(G);
bx+c dx+e f g
G := a + + + +
x +1
2 2 x + 1 ( x + 1 )2
( x2 + 1 )
________________________________________________________________________ 20
2
( x2 + 1 ) ( x + 1 )2
> N:=convert(numer(G),polynom)-x**6;
N := g + a + c + b x + d x + 2 b x2 + 2 c x3 + 2 c x + d x3 + c x4 + 2 b x4 + b x5 + a x6 + 2 a x5
+ 3 a x4 + 4 a x3 + 3 a x2 + 2 a x + 2 b x3 + 2 c x2 − x6 + e + f + f x4 + 2 f x2 + f x + g x 4
+ 2 g x2 + 2 f x3 + f x5 + 2 d x2 + e x 2 + 2 e x
> V:=expand((a*((x**2+1)**2)*((x+1)**2))+ (b*x+c)*((x**2+1)*((x+1)**2)) +
(d*x+e)*(x+1)^2 + f*(x+1)*(x**2+1)**2 + g*(x^2+1)^2)-x**6;
V := g + a + c + b x + d x + 2 b x2 + 2 c x3 + 2 c x + d x3 + c x4 + 2 b x4 + b x5 + a x6 + 2 a x5
+ 3 a x4 + 4 a x3 + 3 a x2 + 2 a x + 2 b x3 + 2 c x2 − x6 + e + f + f x4 + 2 f x2 + f x + g x 4
+ 2 g x2 + 2 f x3 + f x5 + 2 d x2 + e x 2 + 2 e x
> N-V;
0
> solve({seq(coeff(N,x,K)=0,K=0..degree(N))},{a,b,c,d,e,f,g});
-1 1 1
{ a = 1, c = , b = -1, d = , e = 0, g = , f = -1 }
4 2 4
> assign(%);F=G;
1 1 1
6 −x − x
x 4 2 1 4
=1+ + − +
2
x +1
2 2 x + 1 ( x + 1 )2
( x2 + 1 ) ( x + 1 ) 2 ( x2 + 1 )
________________________________________________________________________ 21
Séance 5 [2]
I. Rappel de cours :
Un nombre complexe s’écrit de différentes formes:
- une forme cartésienne : a+I.b
- une forme trigonométrique : r ( cos( θ ) + I sin( θ ) )
(I θ)
- une forme exponentielle: r e
- une forme polaire : ( r, θ )
Remarque : le complexe I doit s’écrire en majuscule
Exemples :
>2–3*I;
2–3I
>( 4-2*I )*( 1-I ) ;
6-2I
> ( x- ( 1 - I ) * y )+(y + 2 * x * I) ;
x + ( 1-I ) y +y + 2 I x
Plusieurs fonctions de manipulation des nombres complexes sont fournies par MAPLE, parmi
lesquelles, on peut citer :
________________________________________________________________________ 22
II. Exercices d’application :
Exercice1 :
Donner la forme cartésienne des nombres complexes suivants :
a. (1-i )n b. (-1-i )7 c. -2*(cos π /4 -i sin π /4 ) d. -7+2 i
3*(cos π /6 + i sin π /6) 5+4i
Exercice 2 :
Convertir la forme cartésienne des nombres suivants en forme polaire :
a. −6 + 6 I 3 c. -7 + 24 I e. π
4 3
b. −1 + I 3 d. 5 + 5 I
Exercice 3 :
Trouver le modules modules des nombres complexes suivants :
5 + 11 I 3 72 65
a. b. + I c. 648 − 648 I 3
7−4I 3 97 97
Exercice 4 :
Résoudre les équations à variables complexes :
a. x − x ( 1 + a + I a ) + a x ( 1 + I + I a ) − I a = 0
3 2 2
b. ( 1 − I ) z = ( 1 + I ) z + 4
2+I 1−2I
c.
• x −I=0
6
Exercice 6:
z+2I
Soit f une fonction définie sur C par f(z)=
z−2I
a. Déterminer le domaine de définition de f
b. Trouver l’image de (1+i)3 par la fonction f. Donner sa forme cartésienne et sa forme polaire
c. Déterminer les points fixes relatifs à f
d. Résoudre l’équation f(z)=0
e. Représenter sur le plan complexe la courbe de f telle z varie entre (-1-2 i) et (1+ i ).
________________________________________________________________________ 23
Correction
________________________________________________________________________ 24
t := − + 5 + I 2 5 + 5 −I , − − 5 + I 2 5 − 5 −I ,
1 1 1 1 1 1
4 4 4 4 4 4
1 1
5 − I 2 5 − 5 −I , − +
1 1 1
5 − I 2 5 + 5 −I ,
1
− −
4 4 4 4 4 4
1 1 1 1
2 − I 2, − 2+ I 2
2 2 2 2
> for i from 1 to 6 do
print("les coordonnées polaires de la racine n°",i," sont: ");
print("module="),evalf(sqrt(Re(evalc(t[i]))^2+Im(evalc(t[i]))^2));
print("argument="),argument(evalc(t[i]));
od;
"les coordonnées polaires de la racine n°", 1, " sont: "
"module="
1.000000000
"argument="
1 5 + 5 + 1 − 1 5 2
4 8 8
arctan
1 5 − 1 2 + 1 5 + 5
8 8 4
"les coordonnées polaires de la racine n°", 2, " sont: "
"module="
.9999999999
"argument="
1 5 − 5 + 1 + 1 5 2
4 8 8
arctan +π
− 1 − 1 5 2 + 1 5 − 5
8 8 4
"les coordonnées polaires de la racine n°", 3, " sont: "
"module="
.9999999999
"argument="
1 5 − 5 + 1 + 1 5 2
−
4 8 8
arctan +π
− 1 − 1 5 2 − 1 5 − 5
8 8 4
"les coordonnées polaires de la racine n°", 4, " sont: "
"module="
1.000000000
"argument="
________________________________________________________________________ 25
1 5 + 5 + 1 − 1 5 2
−
4 8 8
arctan −π
1 5 − 1 2 − 1 5 + 5
8 8 4
"les coordonnées polaires de la racine n°", 5, " sont: "
"module="
1.
"argument="
1
− π
4
"les coordonnées polaires de la racine n°", 6, " sont: "
"module="
1.
"argument="
3
π
4
> for i from 1 to 6 do
polar(evalc(t[i]));
od;
2 2
1 1 1 1 1 1
polar 5 − 2 + 5 + 5 + 5 + 5 + − 5 2 ,
8 8 4 4 8 8
1 5 + 5 + 1 − 1 5 2
4 8 8
arctan
1 5 − 1 2 + 1 5 + 5
8 8 4
2 2
− 1 − 1 5 2 + 1 5 − 5 + 1 5 − 5 + 1 + 1 5 2 ,
polar 8 8 4 8 8
4
1 5 − 5 + 1 + 1 5 2
4 8 8
+ π
arctan
− 1 − 1 5 2 + 1 5 − 5
8 8 4
________________________________________________________________________ 26
2 2
− 1 − 1 5 2 − 1 5 − 5 + − 1 5 − 5 + 1 + 1 5 2 ,
polar 8 8 4 8 8
4
1 5 − 5 + 1 + 1 5 2
−
4 8 8
+ π
arctan
− 1 − 1 5 2 − 1 5 − 5
8 8 4
2 2
1 5 − 1 2 − 1 5 + 5 + − 1 5 + 5 + 1 − 1 5 2 ,
polar 8
8 4 4
8 8
1 5 + 5 + 1 − 1 5 2
−
4 8 8
arctan − π
1 5 − 1 2 − 1 5 + 5
8 8 4
polar 1, − π
1
4
polar 1, π
3
4
Exercice 5: montrer que si z = a+bi (a,bappartiennent à IR) satisfait l'équation z^2+z+1 = 0
alors le conjugué de z satisfait aussi cette équation
> restart;
z:=a+b*I;tab:=solve(z**2+z+1=0);
z := a + I b
1 1 1 1
tab := { b = b, a = − − I b + I 3 }, { b = b, a = − − I b − I 3 }
2 2 2 2
> assign(tab[1]);
x:=evalc(conjugate(z));
1 1
x := − − I 3
2 2
> a:='a';b:='b';assign(tab[2]);
y:=evalc(conjugate(z));
a := a
b := b
1 1
y := − + I 3
2 2
> evalc(x**2+x+1);
0
> evalc(y**2+y+1);
0
Exercice 6: étude de fonctions complexes
> restart;f:=z->(z+2*I)/(z-2*I);
z+2I
f := z →
z−2I
> singular(f(z));
________________________________________________________________________ 27
{z = 2 I}
> c:=f((1+I)^3);polar(c);
c := 1 − 2 I
polar( 5 , −arctan( 2 ) )
> solve(f(z)=z);
1 1 1 1
+I− -3 + 12 I , + I + -3 + 12 I
2 2 2 2
> solve(f(z)=0);
-2 I
> with(plots):conformal(f(z),z=-1-2*I..1+I);
________________________________________________________________________ 28
Séance 6 [5]
Algèbre linéaire :
Partie A : Fonctions prédéfinies
Pour charger un package, il faut utiliser la commande (with). Comme pour tout, pour utiliser
les fonctions relatives à l'algèbre linéaire il faut charger la bibliothèque linalg "linear algebra"
par la commande with(linalg);
N.B : A chaque restart il faudra recharger la bibliothèque.
Déclaration Utilisation
>with(linalg) :
Chargement de la Ainsi, avec cette commande, les
bibliothèque d’algèbre >with(nom_du_package); différentes fonctions prédéfinies pour
linéaire la manipulation des matrices et
vecteurs sont chargées.
1°>M 1:=matrix(nbl,nbc,[liste des
éléments de ma matrice]) ;
M1:=matrix(3,3,[1,2,7,8,0,1,-5,6,2]);
2°>M2 :=matrix([[éléments ligne
[ 1 2 7]
1],[ éléments linne 2],[ éléments
[ 8 0 1]
ligne 3]]) ;
[-5 6 2]
3°>f :=(i,j)->i+j-1 ;
>M2:=matrix([[1,0,-1], [2,0,1 ],
M3 :=matrix(nbl,nbc,f) ;
[1,0,-2]]);
(où nbl, nbc et f désignent
[1 0 -1]
respectivement le nombre de ligne,
[2 0 1]
le nombre de colonnes, et une
[1 0 -2]
fonction à deux variables (i et j)
>> f:=(i,j)->i+j-1;
désignant l’indice ligne et l’indice
Entrée d’une > M3:=matrix(3,3,f);
colonne
matrice: [1 2 3]
Il existe différentes 4°>Matrice à coefficients
[2 3 4]
manières pour indéterminés
[3 4 5]
déclarer une matrice, >M4:=matrix (nbl,nbc,[]);
>M4:=matrix(3,2,[]);
nous présentons les #[] désigne la liste vide
[m[1, 1] m[1, 2] ]
principales: 5°>matrice diagonale
[m[2, 1] m[2, 2] ]
>M5 :=diag(éléments en diagonale)
[m[3, 1] m[3, 2] ]
>M5:=diag(3,2,1);#matrice diagonale
[3 0 0]
[0 2 0]
[0 0 1]
Remarque
ou encore
> M1; # en tapant la lettre
>M51:=diag(2$3);
seulement la matrice ne s'affiche
[2 0 0]
pas, il faut utiliser la commande
[0 2 0]
evalm
[0 0 2]
> evalm(M1);
________________________________________________________________________ 29
matrice ligne
Opérations
élémentaires sur les
matrices
1.Somme de deux >matadd(M1,M2);
matrices. >matadd(M1,M2); [ 2 2 6]
# deux possibilités >evalm(M1&+M2); [10 0 2]
[-4 6 0]
>multiply(M2,M1);
[ 6 -4 5]
[-3 10 16]
[11 -10 3]
>transpose(M1) ;
[1 8 -5]
Transposée d’une
>transpose(matrice) ; [2 0 6]
matrice
[7 1 2]
>inverse(M1) ;
>inverse(matrice) ; # si la matrice
[-1/48 19/144 1/144 ]
Inverse d’une est inversible det(m)<>0 et la
[-7/96 37/288 55/288]
matrice matrice m est carré
[ 1/6 -1 /18 -1 /18 ]
.
Soit la matrice N
>N:=matrix(3,3,[18,42,12,3,-,6,-9,-
Rang d’une matrice >rank(matrice); 21,-6]);
>rank(N) ;
2
Trace d’une >trace(N) ;
>trace(matrice) ;
matrice 3
________________________________________________________________________ 30
Noyau d’une >kernel(N) ;
>kernel(matrice) ;
matrice {[-5, 1, 4]}
Image d’une >colspace(N) ;
>colspace(matrice) ;
matrice {([0, 1, 0]), ([1, 0, -1/2])}
Valeurs propres >eigenvals(N);
>eigenvals(matrice) ;
d’une matrice 0, -9, 12
>eigenvects(matrice) ;
cette commande retourne une liste >eigenvects(N) ;
Vecteurs propres qui représente la valeur propre, sa [-9, 1, {[-2, 1, 1]}], [0, 1, {[-5, 1,
d’une matrice multiplicité et enfin une base du 4]}], [12, 1, {[-2, 0, 1]}]
sous espace propre associé.
Polynôme >charpoly(N,x) ;
>charpoly(matrice,variable) ;
caractéristique x3 - 3 x 2 - 108 x
Soit la matrice suivante :
>N:=matrix([[18,42,12],[3,-9,6], [-9,-
Réduction de >matrice_résultat :=jordan(matrice, 21,-6]]);
Jordan ‘matrice_de _passage’) ; > N1:=jordan(N,'P');
Maple peut calculer
la forme réduite de [-9 0 0]
Jordan. On peut de N1 := [ 0 12 0]
plus récupérer la Remarque [0 0 0]
matrice de passage. N’oubliez pas les cotes pour la >evalm(P);
matrice de passage [2/3 2 -5/3]
[-1/3 0 1/3 ]
[-1/3 -1 4/3 ]
________________________________________________________________________ 31
7- Donner les valeurs propres, les vecteurs propres puis le polynôme caractéristique de
A.
Correction
Exercice 1
> A1:=matrix(4,4,[0,1,1,1,1,0,-1,-1,1,-1,0,-1,1,-1,-1,0]);
> A2:=matrix([[1,0,1,0],[0,0,0,0],[1,0,0,1],[0,1,0,0]]);
> scalarmul(A1,3);
> matadd(A1,A2) ;
> multiply(A1,A2);
> multiply(A2,A1);
>matadd(A1,A2,2,3); #matadd(m,m1,u,v) où u et v désignent deux scalaires retourne la
matrice résultat u*m+v*m1
>inverse(A1) ;
>transpose(A2) ;
[0 1 1 1]
[1 0 -1 -1] [1 0 1 0]
[0 0 0 0]
A1:= [1 -1 0 -1]
A2 := [1 0 0 1]
[1 -1 -1 0]
[0 1 0 0]
3A1 A1+A2
[0 3 3 3] [1 1 2 1]
[3 0 -3 -3] [1 0 -1 -1]
[3 -3 0 -3] [2 -1 0 0]
A1*A2 [3 -3 -3 0] [1 0 -1 0]
[1 1 0 1]
[0 -1 1 -1]
[1 -1 1 0]
[0 0 1 -1]
A2*A1
[1 0 1 0]
[0 0 0 0]
[1 0 0 1]
[1 0 -1 -1]
2A1+3A2
[3 2 5 2]
[2 0 -2 -2]
[5 -2 0 1]
[2 1 -2 0]
(A1)-1
[2/3 1/3 1/3 1/3 ]
[1/3 2/3 -1/3 -1/3]
[1/3 -1/3 2/3 -1/3]
[1/3 -1/3 -1/3 2/3 ]
t
(A2)
[1 0 1 0]
[0 0 0 1]
[1 0 0 0]
[0 0 1 0]
________________________________________________________________________ 32
Exercice 2
1) A:=matrix(3,3,[1,-1,2,-2,1,0,1,1,3]);
2)> TA:=transpose(M);
[ 1 -1 2]
A := [-2 1 0]
[ 1 1 3]
[ 1 -2 1]
TA := [-1 1 1]
[ 2 0 3]
3)>evalm(A&*TA&*A); ou encore >multiply(A,TA,A);
[ 18 -3 30]
[-14 7 -9]
[ 19 4 45]
4)> det(A);
-9
> inverse(A);
[-1/3 -5/9 2/9]
[-2/3 -1/9 4/9]
[1/3 2/9 1/9]
5) > rank(A); kernel(A); trace(A); colspace(A);
3
{}
5
{[0, 0, 1], [0, 1, 0], [1, 0, 0]}
________________________________________________________________________ 33
Séance 7 [5]
Partie C : Exercices appliqués aux mathématiques
Remarque : l’enseignant peut traiter un ou plusieurs exercices de la partie I et un ou
plusieurs exercices de la partie II.
________________________________________________________________________ 34
[ 0 0 174]
________________________________________________________________________ 35
Partie II : Programmation
Exercice 1
Ecrivez un programme calculant la multiplication de deux matrices C=AxB. Utiliser la
p
formule mathématique C ij = ∑ Aij Bkj .
k =1
Correction
Présentation de la méthode
Le but de cet exercice de programmation est d’écrire une procédure capable de calculer la
multiplication de deux matrices (sans utiliser la fonction &*…).
Vous aurez besoin de deux instructions.
• rowdim(matrice) : renvoie le nombre de lignes de matrice :
• coldim(matrice) : renvoie le nombre de colonnes de matrice.
1. paramètres et algorithmes.
Les paramètres de la procédure sont A et B, les deux matrices que l’on veut multiplier.
Rappelons ici la définition de la multiplication matricielle. Si C=AB( A matrice mp, B
matrice pn, on a :
p
C ij = ∑ Aij Bkj (1)
k =1
Notre programme va don être assez simple. On sait que la matrice C va être une matrice
mn ( m lignes, n colonne). Il va falloir calculer la valeur de tous les coefficients de cette
matrice en utilisant la formule (1).
2. procédure
> with(linalg):
multmat:=proc(A,B)
local C,i,j,k:
C:=matrix(rowdim(A),coldim(B));
for i from 1 to rowdim(C) do
for j from 1 to coldim(C) do
C[i,j]:=0;
for k from 1 to coldim(A) do
C[i,j]:=C[i,j]+A[i,k]*B[k,j]
od;
od;
od;
RETURN(C);end;
________________________________________________________________________ 36
multmat := proc (A, B )
local C , i, j, k;
C := matrix( rowdim( A ), coldim( B ) ) ;
for i to rowdim( C ) do for j to coldim( C ) do
C[ i, j ] := 0;
for k to coldim( A ) do C[ i, j ] := C [ i, j ] + A[ i, k ]×B [ k, j ] end do
end do
end do ;
RETURN ( C )
end proc
Utilisation et commentaire de la procédure
> A:=matrix(3,2,[1,2,1,4,2,3]);
>B:=matrix(2,2,[1,2,4,2]);C:=multmat(A,B);print(C);
1 2
A := 1 4
2 9 6
3 B :=
1 2
C := C
17 10
4 2
14
10
Exercice 2
Ecrivez des programmes parmi le complément d’exercices de la séance 1 ou autres, en
utilisant les instructions de structures conditionnelles, de structure répétitives, matrices et
vecteurs, etc.
Exercice 3
Programmation Maple de la solution d’un
système linéaire (méthode de Gauss) [6] et [7]
1. Problème [6]
Le but de ce TP est d’appliquer une méthode itérative celle de Gauss pour la résolution des
systèmes d'équations linéaires. On supposera que dans ce cas on dispose d'autant d'équations
que d'inconnues. On examinera par la suite le cas où cette condition n'est pas satisfaite.
Considérons le système d'équations linéaires suivant que l'on cherche à résoudre :
a11x1+a12x2+...+a1nxn = b1
a21x1+a22x2+...+a2nxn = b2
(1)
.
an1x1+an2x2+...+annxn = bn
________________________________________________________________________ 37
Ce système peut aussi s'écrire :
A.x = b (2)
2. Méthode de Gauss
La méthode de Gauss est basée sur le constat suivant : le système linéaire reste invariant pour
les trois opérations suivantes effectuées dans n'importe quel ordre et un nombre de fois
indéterminé :
Exposé de la méthode
En combinant les opérations précédentes, on peut transformer la matrice A en une matrice
triangulaire supérieure par le processus itératif suivant :
a1i
ai,j(1) = aij−ai1 i≥2 j≥1 (4)
a11
b1
bi(1) = bi−ai1 i≥2 (5)
a11
On répète l'étape précédente en supposant cette fois-ci a22(1) ≠ 0. On garde alors les deux
premières lignes inchangées et on retranche (ai1(1)/a22(1))×(2ème ligne) à la ième ligne (i = 3,...,n).
En tout le processus est effectué (n−1) fois. La matrice A devient alors triangulaire supérieure.
________________________________________________________________________ 38
.
0+0+...+unnxn = cn
Soit A(1) = A et b(1) = b. Supposons a11(1) non nul, ce qu'il est toujours possible d'obtenir par un
éventuel échange de lignes. Dans le tableau (A(1) | b(1)), on effectue une combinaison linéaire
et
4. Algorithme
________________________________________________________________________ 39
2e étape: résolution du système triangulaire A(n) x = b(n).
5. Exemple
et
1e étape: triangularisation de A
---------------------------------------
________________________________________________________________________ 40
---------------------------------------
---------------------------------------
_____________________________________________________________________
6. Travail demandé
1. Ecrire une procédure Saisie (N) qui permet de saisir une matrice carré A et un
vecteur b d’ordres N (N <=Nmax) ?
2. Ecrire une procédure PIVOGauss (A1, b1, N) qui applique les transformations
nécessaires à la matrice A1 et au vecteur B1 de façon que A1 devienne une
matrice triangulaire ?
3. Ecrire une procédure Remontée (A2, b2, x, N) qui résout un système linéaire
triangulaire de N équations ? A2x = b2 et affiche le résultat ?
4. Ecrire un algorithme MethodeGAUSS appelant les procédures citées ci-dessus et
qui permet de résoudre le système Ax = b ?
5. Donner le code Maple correspondant aux différentes procédures ?
6. Application : Résoudre le système Ax = b avec :
________________________________________________________________________ 41
et
Correction
________________________________________________________________________ 42
A1[j,m] A1[j,m] + p * A1[i,m]
fin Pour
A1[j,i] 0
fin Pour
fin si
i i+1
fin tant que
fin Procédure PIVOGauss
{ afficher le résultat }
Pour i 1 jusqu’à N faire
écrire (x[i])
fin Pour
Fin Procédure Remontée
4. Algorithme MethodeGauss
Constante Nmax = 100
var
A : tableau [1..Nmax, 1..Nmax] de réels
b : tableau[1..Nmax] de réels
x : tableau [1..Nmax] de réels
N : réel
OK : logique
Début
écrire (« donner la dimension de la matrice A »)
Saisie (N)
PIVOGauss (A, b, N, OK)
Si (OK) alors
Remontée (A, b, x, N)
sinon
écrire (« pivot nul dans ! pas de solutions »)
fin si
Fin MethodeGauss
________________________________________________________________________ 43
Programmation avec Maple de la méthode de GAUSS [7]
Enoncé :
Soient les deux matrices A et B suivantes, il s’agit de résoudre le système linéaire A.X = B
par la méthode de GAUSS.
2 0 4 -4 -4
4 2 -1 -1 1
A := B :=
6 0 1 -3 -3
4 -4 4 3 -1
Principe de résolution :
1. Créer la matrice C concaténation des deux matrices A et B
Correction :
> som:=proc(M,i,j,a,n)
local k;
for k from 1 to n do
M[j,k]:= M[j,k]+a*M[i,k];
od;
return(evalm(M));
end proc;
som := proc (M, i, j, a, n)
local k;
for k to n do M[ j, k ] := M[ j, k ] + a×M[ i, k ] end do ; return evalm( M )
end proc
> M:=matrix(3,3,[1,-2,0,1,3,-2,4,1,0]);
1 -2 0
M := 1 3 -2
4 1 0
> som(M,2,1,-1,3);
________________________________________________________________________ 44
0 -5 2
1 3 -2
4 1 0
> permut:=proc(M,i,j,n)
local k,x;
for k to n do
x:= M[i,k];
M[i,k]:=M[j,k];
M[j,k]:=x;
od;
return(evalm(M));
end proc;
permut := proc (M, i, j, n)
local k, x;
for k to n do x := M[ i, k ] ; M[ i, k ] := M[ j, k ] ; M[ j, k ] := x end do ;
return evalm( M )
end proc
> permut(M,1,2,3);
1 3 -2
0 -5 2
4 1 0
> N:=matrix(3,1,[2,0,-3]);
2
N := 0
-3
> with (linalg):
> C:=augment(M,N);
1 3 -2 2
C := 0 -5 2 0
4 1 0 -3
> elim:=proc(M,N,n)
local i,j,k,C,a;
C:=augment(M,N);
for i to n-1 do
for j from i+1 to n do
a:=-C[j,i]/C[i,i];
som(C,i,j,a,n+1);
od;
od;
return(evalm(C));
end proc;
________________________________________________________________________ 45
elim := proc (M, N, n)
local i, j, k, C, a;
C := augment( M, N ) ;
for i to n − 1 do
for j from i + 1 to n do a := −C[ j, i ]/C[ i, i ] ; som( C, i, j, a, n + 1 ) end do
end do ;
return evalm( C )
end proc
> elim(M,N,3);
1 3 -2 2
0 -5 2 0
0 18
0 -11
5
> A:=matrix(4,4,[2,0,4,-4,4,2,-1,-1,6,0,1,-3,4,-4,4,3]);
2 0 4 -4
4 2 -1 -1
A :=
6 0 1 -3
4 -4 4 3
> B:=matrix(4,1,[-4,1,-3,-1]);
-4
1
B :=
-3
-1
> E:=elim(A,B,4);
Z:=delcols(E,5..5);
T:=delcols(E,1..4);
2 0 4 -4 -4
0 2 -9 7 9
E :=
0 0 -11 9 9
0 0 7 7
0
2 0 4 -4
0 2 -9 7
Z :=
0 0 -11 9
0 0 7
0
-4
9
T :=
9
7
> back:=proc(A,B,n)
local i, C;
C:=matrix(n,1);
C[n,1]:=B[n,1]/A[n,n];
________________________________________________________________________ 46
for i from n-1 by -1 to 1 do
C[i,1]:=(B[i,1]-sum(A[i,k]*C[k,1],k=i+1..n))/A[i,i];
od;
return(evalm(C));
end proc;
back := proc (A, B, n)
local i, C;
C := matrix( n, 1 ) ;
C[ n, 1 ] := B[ n, 1 ]/A[ n, n ] ;
for i from n − 1 by -1 to 1 do
C[ i, 1 ] := ( B[ i, 1 ] − sum( A[ i, k ]×C[ k, 1 ], k = i + 1 .. n ) )/A[ i, i ]
end do ;
return evalm( C )
end proc
> back(Z,T,4);
0
1
0
1
________________________________________________________________________ 47
Séance 8 [4]
Suites Numériques
(Terme général, Suite Récurrente, Somme, Produit, Convergence)
I. Rappel de cours :
Exercice II :
On considère la suite U(n)n∈IN telle que :
________________________________________________________________________ 48
n
S= ∑ U( k ) = 1 - 1/3 + 1/5 - 1/7 + 1/9 + …
k=0
Exercice III :
Soient U(n)n∈IN et V(n)n∈IN* deux suites réelles ayant les formes récurrentes suivantes :
U0 = 1 V1 = 1 / 2
Exercice IV :
On considère la suite U(n)n∈IN* définie comme suit :
U1 = 7
Un+1 = 1/6 Un + 5
1. Définir la suite U
2. Montrer que U converge vers 6
3. Pour tout n IN, on pose :
Vn = Un – a avec a : un réel
Déterminer a pour que la suite V soit une suite géométrique de raison 1/6.
Exercice V :
Soient les deux suites récurrentes suivantes :
U0 = -1 V0 = 1
Un = 2 Vn + 5 Vn = 2 Un-1 +3
2. Calculer les valeurs des i èmes termes des suites U et V lorsque i=3, 4, 5 et ce en
utilisant :
a. les fonctions prédéfinies pour répondre à cette question
b. la programmation
________________________________________________________________________ 49
3
2. Calculer la somme S suivante : S= ∑ ( U( k ) − V( k ) ) , en utilisant
k=0
Correction
EXERCICE I :
> restart;
> u:=unapply(c*n+1,n);
u := n → c n + 1
> solve(sum(u(k),k=0..5)=16,{c});
assign(%);
2
{c = }
3
> u(2);u(3);u(4);
Product(u(k),k=0..5)=evalf(product(u(k),k=0..5));
7
3
3
11
3
5
∏ 3 k + 1 = 185.3703704
2
k=0
EXERCICE II:
> restart;
u:=unapply((-1)^n/(1+2*n),n);
( -1 )n
u := n →
1+2n
> evalf(u(7),2);evalf(u(10),2);evalf(u(12),2);
-.067
.048
.040
> Digits:=7;
> Sum(u(k),k=0..4)=evalf(sum(u(k),k=0..4));
Limit(sum(u(k),k=0..n),n=0)=limit(sum(u(k),k=0..n),n=0);
Digits := 7
________________________________________________________________________ 50
4
( -1 )k
∑ 1 + 2 k = .8349206
k=0
(n + 1) 3 5 1 3 1
( -1 ) + n Ψ + n − Ψ + n
1
lim π −
1 2 4 2 4 2 = 1
n→0 4 2 3+2n
> Product(u(k),k=0..4)=evalf(product(u(k),k=0..4));
4
( -1 ) k
∏ 1 + 2 k = .001058201
k=0
> limit(u(n),n=infinity);
0
>
EXERCICE III:
> restart;
> rsolve({u(n)=((n/2)*u(n-1)+n)/n,u(0)=1},u);
n
1
− + 2
2
> u:=unapply(%,n);u(n-1);
n
1
u := n → − + 2
2
(n − 1)
−
1
+2
2
> v:=unapply(simplify((n/2)*%),n);
1 ( −n + 1 )
v := n → − n ( 2 − 2)
2
> s:=sum(u(k),k=0..n);
>
(n + 1)
s := 2
1
+2n
2
> evalf(product(v(k),k=1..3));
1.968750000
> limit(u(n),n=infinity);
2
> limit(v(n),n=infinity);
∞
EXERCICE IV :
> restart;r:=rsolve({U(n+1)=(1/6)*U(n)+5,U(1)=7},U);
n
1
r := 6 + 6
6
> U:=unapply(r,n);
n
1
U := n → 6 + 6
6
> limit(U(k),k=infinity);
________________________________________________________________________ 51
6
> V:=unapply(U(n)-a,n);
n
V := n → 6 + 6 − a
1
6
>
> simplify(solve({V(n)/V(n-1)=1/6},{a}));
{a = 6}
> assign(%);V(1);
1
EXERCICE V :
1.a/
> restart;a:=rsolve({u(n)=4*u(n-1)+11,u(0)=-1},u);
8 11
a := 4 n −
3 3
> u:=unapply(a,n);
v:=unapply(2*u(n-1)+3,n);
8 n 11
u := n → 4 −
3 3
16 ( n − 1 ) 13
v := n → 4 −
3 3
> seq(u(i),i=3..5);seq(v(i),i=3..5);
167, 679, 2727
81, 337, 1361
1.b/
> U:=proc(n) option remember;
if n=0 then -1 else 2*V(n)+5 fi;
end;
U(3),U(4),U(5);
V(3),V(4),V(5);
U := proc (n) option remember; if n = 0 then -1 else 2×V( n ) + 5 end if end proc
V := proc (n) option remember; if n = 0 then 1 else 2×U( n − 1 ) + 3 end if end proc
167, 679, 2727
81, 337, 1361
2.a/
> Sum(u(k)-v(k),k=0..3)=-1-1+evalf(sum(u(k)-v(k),k=1..3));
3
∑ 3 4k + 3 − 3 4 = 112.
8 2 16 ( k − 1 )
k=0
2.b/
________________________________________________________________________ 52
> S:=U(0)-V(0);
for i from 1 to 3 do
S:=S+U(i)-V(i);
od;
evalf(S);
S := -2
S := 4
S := 26
S := 112
112.
3.a/ > Product(u(k)/v(k),k=0..3)=(-
1/1)*(evalf(product(u(k)/v(k),k=
1..3)));
8 k 11
3 4 −
3 3
∏ 16 ( k − 1 ) 13 = -33.10893246
k=0 4 −
3 3
3.b/
> P:=U(0)/V(0);
for i from 1 to 3 do
P:=P*(U(i)/V(i));
od;
evalf(P);
P := -1
P := -7
-273
P :=
17
-15197
P :=
459
-33.10893246
4/ > if limit (u(n),n=infinity)=infinity then print("la suite U
est divergente") else print("la suite U est convergente") fi;
________________________________________________________________________ 53
Séance 9 [8]
Introduction
La résolution des équations différentielles avec Maple se fait à l’aide de la fonction dsolve :
Cette fonction nécessite au moins deux arguments :
Le premier des deux est un ensemble contenant les équations et, s’il y a lieu, les conditions
initiales. Le second est un ensemble contenant les noms des fonctions inconnues. (sous la
forme y(x) pour une fonction y dont x est la variable).
Ces ensembles sont donc délimités par des accolades mais, comme souvent avec Maple, si
l’un de ces ensembles se réduit à un élément, il n’est pas nécessaire de mettre d’accolades.
Certaines équations différentielles qui ne peuvent être résolues formellement, peuvent être
résolues numériquement en introduisant numeric dans la ligne de commande dsolve. Une
représentation de la fonction peut alors être obtenue à l’aide de la fonction odeplot qui fait
partie du package plots :
> odeplot(fonction, [var1, var2], min1..max1, option) ;
________________________________________________________________________ 54
1/ Equation différentielle de premier ordre
La forme générale d’une équation différentielle est : a*y’(x)+b*y(x)+c=0
En Maple, la fonction inconnue doit s’écrire y(x), sa dérivée peut s’écrire diff(y(x),x) ou
D(y)(x), mais si on utilise une condition initiale portant sur la dérivée, elle doit
impérativement être écrite avec l’opérateur D.
Soit l’équation :
La résolution est :
Attention :
Bien mettre y(x) pour préciser la fonction recherchée et non pas y ce qui conduirait à un
message d’erreur.
Si on veut obtenir le résultat de y(x) sous forme d’une expression, on peut utiliser la
commande subs :
La fonction dsolve ne retourne pas toujours, comme dans l’exemple précédent, une forme
explicite des solutions d’une équation différentielle. Avec l’option explicit, la fonction dsolve
retourne, si possible, une équation explicite de la courbe intégrale.
________________________________________________________________________ 55
b/ Résolution avec condition initiale
Pour tenir compte des conditions initiales, le premier argument de la fonction dsolve
contiendra, dans un ensemble, en plus de l’équation, l’ensemble de ces conditions.
Exemple :
Prenons l’exemple de l’équation du mouvement du pendule pesant (on se rappelle que cette
équation s’écrit pour de petits mouvements θ&&( t ) + ω 2θ ( t ) = 0 )
Notons que si l’on omet les conditions initiales, Maple introduit ses propres constantes :
________________________________________________________________________ 56
Maple retourne un ensemble de deux équations et introduit les constantes qui lui sont
nécessaires en utilisant des identificateurs commençant par le caractère souligné.
Le même système mais avec conditions initiales :
Lorsque l’on demande la résolution d’un système, il faut donner autant de fonctions
inconnues que d’équations sinon on obtient un message d’erreur.
Maple reste sans réponse. Il faut donc résoudre numériquement en rajoutant l’argument
numérique à la fonction dsolve. Attention, ici des conditions initiales numériques sont
nécessaires :
Maple nous montre que la solution est une procédure. Pour l’exécuter :
Maple retourne sous forme de liste la valeur de la variable et la valeur prise par la fonction.
Il est impossible de représenter directement cette fonction. Il faut nécessairement avoir
recours à la fonction odeplot qui fait partie du package plots.
________________________________________________________________________ 57
EXERCICES
Exercice 1
On considère l'équation suivante : xy'+y=1/(1-x) (1)
Exercice 3
Résoudre l’équation différentielle suivante :
________________________________________________________________________ 58
x'(t)=-y(t)+z(t)
y'(t)=x(t)-z(t)
z'(t)=-x(t)+y(t)
dsolve donne une solution générale de l'équation, mais sans préciser l'intervalle sur lequel elle
est valide. On constate de plus que Maple n'a pas choisi l'expression la plus simple: ln(1-x)
serait plus approprié,et permettrait de se passer des complexes.
> dsolve({eq,y(-1)=a},y(x));
> f:=(ln(1-x)+c)/x;
> limit(f,x=0,left);
> c:=0;
> limit(f,x=0);
> plot(f,x=-5..1);
Exercice 2
Pour représenter les solutions, il suffit de donner une valeur initiale à notre fonction. Pour
cela, nous créons une séquence qui va contenir les équations des courbes à tracer puis les
représenter.
________________________________________________________________________ 59
Exercice 3
> restart :
> eq :=diff (y(x),x$2)-3*diff(y(x),x)+2*y(x)=x-1 ;
> dsolve({eq, D(y)(0)=5,y(0)=1}, y(x)) ;
> A := rhs(") ;
>plot(A,x=0..10) ;
Exercice 4
> eq1:=4*x*diff(y(x),x$2)+diff(y(x),x)=0 ;
> sol1:=dsolve(eq1,y(x)) ;
> restart : readlib(isolate) ;
> eq2 :=5*diff(y(x),x)-y(x)*sin(x)+y(x)^4*sin(2*x)=0 ;
> sol2 :=dsolve(eq2,y(x)) ;
> sol2 :=isolate(sol2,y(x)) ;
> allvalues(sol2) ;
> restart :
> eq1 :=diff(x(t),t)=x(t)+2*y(t)-z(t) ;
> eq2 := diff(y(t),t)=2*x(t)+4*y(t)-2*z(t) ;
> eq3 := diff(z(t),t)=-x(t)-2*y(t)+z(t) ;
> dsolve({eq1,eq2,eq3},{x(t),y(t),z(t)} );
Exercice 5
> restart :
On commence par définir les trois équations du système.
> eq1:=diff(x(t),t)=-y(t)+z(t):
eq2:=diff(y(t),t)=x(t)-z(t):
eq3:=diff(z(t),t)=-x(t)+y(t):
Le cas général: dsolve convient parfaitement.
> dsolve({eq1,eq2,eq3},{x(t),y(t),z(t)});
Pour la solution vérifiant les conditions initiales indiquées dans l'énoncé, il suffit d'ajouter les
dites C.I. dans l'ensemble d'équations fourni en argument à dsolve.
________________________________________________________________________ 60
> sol:=dsolve({eq1,eq2,eq3,x(0)=0,y(0)=0,z(0)=3},{x(t),y(t),z(t)});
plot3d étant fait pour tracer des surfaces, il lui faut deux paramètres indépendant. Cela dit, les
solutions ne dépendent pas de s, paramètre un peu inutile...
> plot3d(subs(sol,[x(t),y(t),z(t)]),t=0..2*Pi,s=0..1);
> expr:=diff(x(t),t)+diff(y(t),t)+diff(z(t),t):
Pour x, y et z solutions de l'équation différentielle, expr est nulle, donc la somme des trois
composantes est constante: on a bien une équation de plan.
> expr1:=subs({eq1,eq2,eq3},expr);
________________________________________________________________________ 61
Séance 10 et Séance 11
Remarque : les problèmes de révision peuvent être choisis parmi les exercices et problèmes
proposés dans les paragraphes complément d’exercices du support « NOTE DE COURS DE
MAPLE, TRAVAUX PRATIQUES avec exercices corrigés » ou autres.
________________________________________________________________________ 62
Séances 12 [9]
Application aux systèmes linéaires :
ELECTROCINETIQUE
1- Position du problème
Soit le circuit électrique suivant :
R1 = 5 kOm
N I3
I1
I2
E =6 V
I II R3 = 5 kOm
I
R = 10 kOm
2
A B
M
On se propose de calculer les intensités des courants qui parcourent les différentes branches
du circuit.
2- Système d’équations
En appliquant la loi des mailles, pour les mailles I et II, et la loi des noeux, pour la
noeux N, on obtient le système d’équations algébriques suivant :
R1 I 1 + R 2 I 2 = E
R 2 I 2 − R3 I 3 = 0 A
I1 − I 2 − I 3 = 0
Ce système peut se réécrire sous forme matricielle. Soit :
R1 R 2 0 I 1 E
0 R −R I = 0
1 − 12 − 13 I 2 0 B
3
ZONE MAPLE
> syst:={eq1,eq2,eq3};
> solution:=solve(syst,{I1,I2,I3});
> R1:=5;R2:=10;R3:=5;E:=6;evalf(solution,3);
________________________________________________________________________ 64
Appelle de la procédure
> courant(6.,5.,10.,5.);
________________________________________________________________________ 65
Séance 13 [9]
PENDULE SIMPLE
1. Position du problème.
Soit un pendule simple constitué d’un fil inextensible et sans masse de longueur l auquel est
suspendue une masse ponctuelle m. La position de la masse est repérée par l’angle θ que fait
le fil avec la verticale.
A l’instant t = 0, le pendule est lancé depuis sa position d’équilibre θ0 = 0 à la vitesse initiale
θ&0 = v (en rad.s-1 ).
On cherche à déterminer les variations de θ en fonction du temps t pour différentes valeurs de
v.
c) Interprétation physique.
On remarque l’existence d’une vitesse seuil qui fait passer d’une solution périodique
(oscillations) à une solution où q est strictement croissante (tour complet).
Donner, à l’aide des graphes obtenus, un encadrement de vseuil .
Monter par le calcul que la valeur cherchée est vseuil = 2 g = 6,28 m.s-1 et conclure.
II. ZONE MAPLE
1. Equation différentielle.
> restart:g:=9.81:
> eq:=diff(diff(theta(t),t),t)+g*sin(theta(t))=0;
2. Résolution directe.
> syst:={eq,D(theta)(0)=v,theta(0)=0};
>dsolve(syst,theta(t));
________________________________________________________________________ 66
Remarquez ici que Maple ne donne pas une solution de l'équation. En gros, il donne la
solution comme étant l'intégrale de l'équation différentielle et ceci et évident. En faite quant
Maple ne parvient pas à résoudre une équation analytiquement il retourne la démarche à
suivre pour la résoudre.
Essayant maintenant de simplifier le problème en considérant que l'angle θ est suffisamment
faible pour avoir sin(θ)= θ. Il vient que :
> eq:=diff(diff(theta(t),t),t)+g*theta(t)=0;
Résolution directe.
> syst:={eq,D(theta)(0)=1,theta(0)=0};
> sol1:=dsolve(syst,theta(t));
> assign(sol1):plot(theta(t),t=1..10);
________________________________________________________________________ 67
Essayant maintenant de maître un facteur de frottement visqueux (µ*v) dans l'équation.
Physiquement, ceci veut dire avoir une oscillation amortie de la pendule
> restart:eq2:=diff(diff(theta1(t),t),t)+mu*diff(theta1(t),t)+g*theta1(t)=0;
> syst2:={eq2,D(theta1)(0)=1,theta1(0)=0};
> sol2:=dsolve(syst2,theta1(t));
> mu:=1:g:=9.81:
> assign(sol2):plot(theta1(t),t=1..10);
________________________________________________________________________ 68
> display([seq(dessin[i],i=1..10)]);
En comptant ci dessus les valeurs de v dans le sens décroissant, on détermine la vitesse limite
comprise entre 6 et 7 m.s-1, ce qui est conforme à la valeur attendue : v = 6,28 m.s-1 .
________________________________________________________________________ 69
Références
[1] B.BEN BEYA, M.BRICHNI Faculté des Sciences de Tunis (Bibiographie :1. Maple V en
classes prépas, Philippe RAMBACH, ellipses. 2. Algorithmes cours et exercices résolus, S.
Boutin et S. Tormento, Réal. 3. Jack-Michel Cornil.Philippe Testud Maple introduction
raisonnée à l’usage de l’étudiant, de l’ingénieur et du chercheur Springer, 4. Cours
d’algorithmique (classe de 1ère année MP et PC, institut préparatoire aux études d’ingénieur
de Tunis).
[2] HAMMAMI Mohamed IPEI El Manar
[3] HAMMAMI Leila IPEIN
[4] CHAABENE Sinda IPEI El Manar
[5] DARRAGI Soumeya IPEST
[6] MAHJOUBI Med Ali IPEI Monastir
[7] NIGROU Meriem IPEIM Manar
[8] ELLOUMI Mourad IPEIS
[9] ZIDI Zouheir ISSAT Gabès
Ce document a été élaboré par une commission constituée de représentants de tous les
établissements des cycles préparatoires aux études d’ingénieur et dont la coordination a été
assurée par Monsieur Kamel BEN RHOUMA (ENSI).
________________________________________________________________________ 70