SlideShare une entreprise Scribd logo
COURS PROGRAMMATION EN MATLAB
Nejla Hariga épouse Tlatli
Mastère HAAR/INAT
N. TLATLI/INAT Programmation numérique Page 2
COURS PROGRAMMATION EN MATLAB
Plan :
I- Introduction à la résolution des systèmes linéaires Ax=b
a. Cas de l’écoulement souterrain
b. Formulation discrète
c. Méthodes de résolution directes
d. Méthodes de résolution itératives
II- Prise en main de MatLab
III- Les fonctions sous MatLab
IV- Les boucles
V- Les tests
VI- Lecture et écriture au clavier et dans un fichier
VII- Représentation graphique sous Matlab
VIII- Programmation de quelquesalgorithmes
N. TLATLI/INAT Programmation numérique Page 3
I : INTRODUCTION A LA RESOLUTION DES SYSTEMES LINEAIRES
1- Cas de l’écoulement souterrain (problème continu):
L’écoulement d’un fluide incompressible dans un milieu poreux saturé (Ω) est régi par
l’équation aux dérivées partielles suivante :
H
.( H) dansSS K Q
t
∂
= ∇ ∇ + Ω
∂
(1)
Avec H : la charge hydraulique
K : la conductivité hydraulique
Ss : l’emmagasinement spécifique
Q : le terme source
∇: l’opérateur nabla
Il est à noter que cette équation est déduite de l’équation de la conservation de la masse à
laquelle on a ajouté la loi de comportement de Darcy. Cette loi exprime le fait que la vitesse
d’écoulement laminaire du fluide est proportionnelle au gradient de la charge hydraulique :
Hq u K= = − ∇ (2)
Si on se met dans le cas bi-dimentionnel, stationnaire, d’un aquifère homogène et isotrope
d’épaisseur e alors l’équation (1) s’écrit :
2 2
2 2
H H
( ) dansT Q
x y
∂ ∂
+ = − Ω
∂ ∂
(3)
où T=K*e la transmissivité hydraulique.
Pour résoudre l’équation aux dérivée partielle (EDP) (3) on a besoin de la compléter par des
conditions aux limites (CL) sur la : frontière du domaine. On distingue trois types de CL :
- condition de Dirichlet : H=H0
- condition de Neumann : -T.∇H.n = u0
- condition mixte : : -T.∇H.n = α(H-H0) + u0 (α = 0 condition de Neumann, α tend vers
∝ condition Dirichlet)
Considérons par exemple le problème de Dirichlet suivant :
2 2
2 2
H H
dansf
x y
H g sur
 ∂ ∂
+ = Ω
∂ ∂
 = ∂Ω = Γ
(4)
Les cas où on peut exprimer H solution de (4) par une formule intégrale explicite faisant
intervenir les seconds membres f et g, sont assez rares et se limitent à des domaines Ω de
forme très simple. Dans les autres cas on doit chercher une approximation de H en passant
au problème discret. C’est à dire au lieu de chercher la solution H en tout point du domaine Ω,
on la cherche en un nombre fini de points. Ce passage du problème continu au problème
discret s’appelle la discrétisation.
Il existe plusieurs méthodes de discrétisation : la méthode des différences finies, la méthode
des éléments finis, la méthode des volumes finis …
Dans ce qui suit on va utiliser la méthode des différences finies et considérer un domaine Ω
rectangulaire.
N. TLATLI/INAT Programmation numérique Page 4
2- Formulation discrète :
On prend comme domaine Ω le rectangle [0,a]x[0,b] sur lequel on définit un
quadrillage en découpant [0,a] en M points intermédiaires tel que 0=x0<x1<x2<….<xM+1=a et
[0,b] en N points intermédiaires tel que 0=y0<y1<y2<….<yN+1=b. On adoptera un découpage à
pas constant soit : ∆x = a/(M+1) et ∆y = b/(N+1)
Donc xi=i. ∆x et yj=j. ∆y avec i compris entre 0 et (M+1) et j entre 0 et (N+1).
xi0
Yj
xM+1 = a
YN+1 =b
Figure 1 : Maillage
Les points Pij du maillage ont pour coordonnées (xi,yj) et on cherche la solution H du
système (4) en ces points. Pour cela il faut re-écrire le système (4) aux points Pij.
La méthode des différences finies consiste à approcher les dérivées d’une fonction par des
combinaisons des valeurs de cette fonction aux points Pij du maillage :
Soit φ(t) une fonction continue de t qui prend les valeurs φi-1, φi et φi+1 aux points ti-1, ti et ti+1
équidistants et espacés de p= ti-1 - ti, alors d’après la formule de Taylor nous pouvons écrire :
] ]
2
' ''
1( ) ( ) ( ) ( ) avec 0,1
2
i i i i
p
t t p t t pθ θ+φ = φ + φ + φ + ∈
Donc en supposant p assez petit et ''
φ pas trop grand nous pouvons approcher '
φ (ti) par :
' 21( ) ( )
( ) ( )i i
i
t t
t p
p
θ+φ − φ
φ + c’est une approximation centrée avant
Nous pouvons aussi écrire :
' 21( ) ( )
( ) ( )i i
i
t t
t p
p
θ−φ − φ
φ + c’est une approximation centrée arrière
Ou bien :
' 21 1( ) ( )
( ) ( )
2
i i
i
t t
t p
p
θ+ −φ − φ
φ + c’est une approximation centrée
N. TLATLI/INAT Programmation numérique Page 5
Maintenant pour approcher la dérivée seconde de φ aux points ti, nous utilisons des
approximations de φ’ aux points ti+1/2 = (ti+1 - ti)/2 et ti-1/2 = (ti - ti-1)/2 et nous obtenons
successivement les formules de Taylor suivantes :
' 1
1/ 2
' 1 ''
1/ 2 1 1
'' ' '
1/ 2 1/ 2
1/ 2 1/ 2
( ) ( )
( )
( ) ( ) 1 1 1
( ) ( ) ( ) ( )) ( ) ( ))
1
( ) ( ) ( )
i i
i
i i
i i i i i i
i i i
i i
t t
t
p
t t
t t t t t t
p p p p
t t t
t t
+
+
−
− + −
+ −
+ −
φ − φ 
φ 

φ − φ   
φ ⇒ φ (φ − φ − (φ − φ  
 

 φ φ − φ  − 
d’où :
[ ]'' 2
1 12
1
( ) ( ) 2 ( ) ( ) ( )i i i it t t t p
p
θ+ −φ φ − φ + φ +
Appliquons maintenant cette formule afin d’approximer la première équation du système (4)
aux points Pij à l’intérieur du rectangle :
2 2
1, 1, , 1 , 12 2 2 2
H H 1 1
( H) ( ) 2 H 2 Hij ij i j ij i j i j ij i j
x y x y
+ − + −
∂ ∂
   ∆ = + Η − Η + + Η − Η +   ∂ ∂ ∆ ∆
Cette formule porte le nom de schéma à 5 points car ( H)ij∆ s’exprime en fonction de la
valeur de H en 5 points : Pi+1j Pi-1j Pij Pij-1 Pij+1
Donc le système discret (4) s’écrit:
1, 1, , 1 , 12 2
1 1
2 H 2 H 1 i Met 1 j N
¨ pour (i = 0 ou M +1)et (j = 0ou N +1)
i j ij i j i j ij i j ij
ij ij
f
x y
H g
+ − + −
−
   Η − Η + − Η − Η + = ∀    ∆ ∆
 =
≤ ≤ ≤ ≤
(5)
En conclusion, il s’agit de résoudre un système linéaire de MxN équations à MxN
inconnues.
Pour écrire ce système d’équations sous forme matricielle, nous devons ranger les inconnues
Hij à l’intérieur du domaine Ω dans un vecteur H de longueur MxN, pour cela il faut
numéroter les points Pij.
Il existe plusieurs manières de numéroter, par exemple nous pouvons numéroter les points par
ordre de j croissant et pour chaque j par ordre de i croissant, ce qui donne :
N. TLATLI/INAT Programmation numérique Page 6
Hi,N+1
0 Hi,0
H0,j
b
a
Pij
HM+1,j
Figure 2 : Maillage avec numérotation des points
Ainsi le point Pij aura le numéro : i+(j-1)M
Cette numérotation induit de façon naturelle une décomposition du vecteur H en N blocs de
dimension M, correspondant chacun aux points d’une même ligne du maillage :
H=[(H11,H21,H31,…,HM1), (H12,H22,H32,…,HM2),… (H1N,H2N,H3N,…,HMN)]
à cette décomposition de H correspond une décomposition de la matrice A du système
linéaire, du problème (5), en NxN blocs :
11 12
21 22 23
32 33 34
1
... .... ...
NN NN
A A
A A A
A A A A
A A−
 
 
 
 =
 
 
  
Où les blocs Akl sont des matrices de dimension (MxM).
Les Akl non nulles sont définies par :
, 1 , 1 2
,
1
( )
0 ... 0
... 0
0 0
... .... ...
k k k k M
k k
A A I
y
A
β α
α β α
α β α
α β
− +
−
= =
∆
 
 
 
 =
 
 
  
avec IM la matrice identité de dimension M et 2 2 2
1 2 2
et
( ) ( ) ( )x x y
α β
−
= = +
∆ ∆ ∆
Dans le cas d’un maillage uniforme tel que ∆x=∆y=p alors :
N. TLATLI/INAT Programmation numérique Page 7
, 2
4 1 0 ... 0
1 4 1 ... 0
1
0 1 4 1 0
... .... ...
1 4
k kA
p
− 
 − − 
 = − −
 
 
 − 
Quant au vecteur second membre du système linéaire c’est la somme des vecteurs f et g
contenant respectivement les fij aux points internes au domaine voisins des frontières et les gij
intervenant aux points situés sur le bord du domaine.
On a :
1,1 0,1 1,0 1, 0,N 1,N+12 2 2 2
,1 i,0 , i,N+12 2
,1 M+1,1 M,0 , M+1,N M,N+12 2 2 2
1, 0,j , M+1,j2 2
1 1 1 1
H H et H H
( ) ( ) ( ) ( )
1 1
H et H 2 1
( ) ( )
1 1 1 1
H H et H H
( ) ( ) ( ) ( )
1 1
H et H 2 1
( ) ( )
N
i i N
M M N
j M j
g g
x y x y
g g i M
y y
g g
x y x y
g g j N
x x
= + = +
∆ ∆ ∆ ∆
= = ∀ ≤ ≤ −
∆ ∆
= + = +
∆ ∆ ∆ ∆
= = ∀ ≤ ≤ −
∆ ∆
, 0 pour tousles autresi jg =
On aura alors à résoudre AH = F
3- Méthodes de résolution des systèmes linéaires :
On distingue deux classes de méthodes pour résoudre les systèmes matriciels de la
forme Ax=b : les méthodes directes et les méthodes itératives
3-1 Les méthodes directes : Se sont les méthodes qui aboutissent à la solution en un nombre
fini d'opérations. Pour cela elles modifient la structure initiale de la matrice pour la mettre
sous forme de produit de matrices ‘faciles’ à utiliser comme les matrices triangulaires ou
orthogonales. Dans ce qui suit nous présenteront 2 méthodes assez répandues :
a- Factorisation de Cholesky :
Théorème : Soit A une matrice symétrique positive définie positive, alors il existe une unique
matrice L triangulaire inférieure à diagonale réelle positive telle que A=LLT
.
Il est à noter qu’il existe plusieurs algorithmes pour la méthode de Cholesky, nous
présenterons deux d’entre-elles.
N. TLATLI/INAT Programmation numérique Page 8
Algorithme du Left-Looking :
(1,1) (1,1)
1
( : 2 : ,1) ( : 2 : ,1)
(1,1)
2 :
( : , ) ( : , )
1: 1
( : , ) ( : , ) ( , )* ( : , )
( , ) ( , )
1
( 1: , ) ( 1: , )
( , )
L A
L i n A i n
L
do k n
L k n k A k n k
do j k
L k n k L k n k L k j L k n j
enddo
L k k A k k
L k n k L k n k
L k k
enddo
=
=
=
 =
 = −
  = − 
 


=

 + = +




Dans cet algorithme la mise à jour d’une colonne est retardée au plus tard possible. En effet
une colonne de la matrice A n’est considérée que lorsque toutes les précédentes de L ont été
constituées. C’est le Cholesky left-looking.
Algorithme du Right-Looking :
_ inf( )
(1,1) (1,1)
1
( : 2 : ,1) ( : 2 : ,1)
(1,1)
1: 1
1:
( : , ) ( : , ) ( , )* ( : , )
( 1, 1) ( 1, 1)
1
( 2 : , 1) ( 2 : , 1)
( 1, 1)
L Triangle A
L L
L i n L i n
L
do j n
do k j n
L k n k L k n k L k j L k n j
enddo
L j j L j j
L j n j L j n j
L j j
enddo
=
=
=
= −

= +
 = −



 + + = + +

 + + = + +
 + +


Dés qu’une colonne de L est prête elle ‘corrige’ toutes les colonnes suivantes.
b- Factorisation QR
Théorème : Soit A ∈ ℜnxm
de plein rang, (les vecteurs colonnes ai de A forment un système
libre de ℜn
), avec n>=m
N. TLATLI/INAT Programmation numérique Page 9
Alors il existe un unique couple (Q,R) : Q ∈ ℜnxm
et R ∈ ℜmxm
avec
QT
Q = Im et R est triangulaire supérieure à diagonale positive
telle que A = Q.R
Algorithme de Gram-Schmidt Classique:
1 1 1
1 1
1 1
,
1
,
1
,
,
¨
1
1 :
1 : 1
1
T
j i j i
i
i i j i j
j
i i i
i i
i i
r a
q a
r
d o i m
d o j i
r q a
e n d d o
w a r q
r w
q w
r
e n d d o
−
=
=
=
=

= −
 =
 

 = −


=

 =



∑
Dans le cas où les vecteurs colonnes ai de A = (a1, a2, … am) sont presque liés ou bien sont de
normes très proches, le comportement numérique de l’algorithme de Gram-Schmidt classique
est très mauvais. On adopte alors l’algorithme de Gram-Schmidt modifié :
Algorithme de Gram-Schmidt Modifié:
,
,
,
,
1
,
1
1 :
1
1 :
i i i
i i
i i
T
i j i j
j j i j i
i
i i j i j
j
d o i m
r a
q a
r
d o j i m
r q a
a a r q
e n d d o
w a r q
e n d d o
−
=
=

=

=

 = +
 =
 = −



 = −




∑
Dans cet algorithme, dés qu’un vecteur qi vient d’être calculé n retire aux aj suivants (j>i) sa
contribution.
N. TLATLI/INAT Programmation numérique Page 10
3-2 Les méthodes itératives : Une méthode itérative engendre une suite de vecteurs qui doit
tendre vers la solution.
On définit :
x la solution recherchée du système Ax=b
r=b-Ax le résidus associé à x
e=x-x l’erreur associée à x
r=b-Ax = Ax-Ax = A(x-x) = Ae
a- Les méthodes itératives linéaires : Ces méthodes sont basées sur une décomposition de
la matrice A de la forme :
A=M-N avec M une matrice inversible
Nous cherchons alors une suite (xk) qui converge vers x solution de Ax=b.
L’itération définie à partir de x0 est :
1
1
1
1
1
1
1
1
1 1
( )
inversible
d'autrepart
( )
( ) ( )
k k
k k k k
k k k
k k k
k k k
k
k k
k k k k
x x b
x x b x b x
x x r
x x r
x x b x x
x x
x x x x
e e e e
+
+
+
−
+
+
+
−
+ +
= + ⇒  
= + = + − ⇒
= + ⇒
 = + 
= + = +
= + − ⇒
− = − ⇒
 = ⇒ =    
M N
M M - A M A
M M M
M
M N N A
N M N
M N
M N M N
Notons par D la matrice contenant la diagonale de A et des zéros ailleurs, U la matrice
triangulaire supérieure formée par les termes de A situés au-dessus de la diagonale et L la
matrice triangulaire inférieure formée par les termes de A situés au-dessous de la diagonale.
Alors soient les différentes méthodes itératives linéaires suivantes :
Méthode de Jacobi : M=D et N=-(L+U)
Méthode de Gauss-Seidel : M=D+L et N=-U
Dans les méthodes de Jacobi et de Gauss-Seidel, le passage d’un vecteur xk de la suite au
suivant se fait en corrigeant successivement une composante de ce vecteur. Ces corrections
s’effectuent en annulant une composante du résidu.
b- Les méthodes du gradient :
Se sont des méthodes de descente dont le principe est de déterminer un vecteur pk et un
scalaire αk tels que : xk+1 = xk + pk αk
avec l’objectif de minimiser une fonctionnelle.
Dans le cas de la méthode du Gradient Conjugué, il faut que la matrice A soit
symétrique, définie positive. Dans ce cas, la solution x est celle qui réalise le minimum de la
fonctionnelle J définie par : J (x)=(Ax/x) -2(b/x)
En effet J est quadratique, définie positive, elle admet donc un unique minimum obtenu en
annulant son gradient ∇J.
Or ∇J = 2(Ax-b) = -2r(x) = 2(b-Ax) = 2(A(x-x).
N. TLATLI/INAT Programmation numérique Page 11
Algorithme du Gradient Conjugué :
0
0 0
0 0
2
1
1
1 2
2
1 1
* :
* :
0 '
k
k T
k k
k k k k
k k k k
k
k
k
k k k k
Initialisation
Choisir x
Calculer r b x
poser p r
Itérations
k jusqu àconvergence do
r
p p
x x p
r r p
r
r
p r p
enddo
α
α
α
β
β
+
+
+
+ +
= −
=
 =


=

= +

= −

 =


= −

A
A
A
N. TLATLI/INAT Programmation numérique Page 12
II : PRISE EN MAIN DE MATLAB
1-Introduction :
MatLab est un logiciel de calcul interactif. Il permet de réaliser des simulations
numériques basées sur des algorithmes d’analyse numérique. Il peut être utilisé pour la
résolution d’équations différentielles, d’équations aux dérivées partielles, de systèmes
linéaires …
MatLab pour ‘Matrix Laboratory’ est un logiciel conçu pour fournir un environnement de
calcul numérique de haut niveau. Il est particulièrement performant pour le calcul matriciel
car sa structure de données interne est basée sur les matrices. Il dispose également de grandes
capacités graphiques.
Son fonctionnement repose sur un langage de programmation interprété qui permet un
développement très rapide. Pour des applications nécessitant un temps de calcul élevé, un
langage compilé tel que C++ ou Fortran est mieux adapté.
L’interface MatLab se compose d’une fenêtre principale divisée en 3 sous-fenêtres :
a- En haut à gauche : il y’a une fenêtre contenant 2 onglets : Launch Pad et workspace.
L’onglet Launch Pad est visible par défaut, il s’agit d’une interface pour obtenir des
informations et des démonstrations sur les composantes de MatLab. Le Workspace
permet de gérer les variables misent en jeux par l’utilisateur.
b- En bas à gauche : il y’a une fenêtre contenant 2 onglets : Command History et Current
Directory. L’onglet Command History est visible par défaut, il indique les dernières
commandes effectuées par l’utilisateur. Le Current Directory gère l’emplacement des
fichiers.
c- Sur la droite il y’a une grande fenêtre Command Window qui est la fenêtre d’interface
avec MatLab.
La principale caractéristique de la fenêtre de commande sont les caractères >> en début de
ligne constituant le prompt de MatLab. C’est après ces caractères que l’utilisateur peut taper
les commandes qui seront exécutées par le logiciel après avoir tapé sur la touche entrer.
Le résultat de l’exécution s’inscrit alors dans la fenêtre ou bien est représenté graphiquement
dans une nouvelle fenêtre spécifique.
Pour entrer une suite complexe d’instructions, on les tape au préalable dans un fichier en
utilisant l’éditeur intégré. Ce fichier est appelé Script. Une fois le script enregistré on peut
l’exécuter en tapant son nom dans la fenêtre de commande.
Il est à noter que le historique des instructions entrées depuis le début de la session sur la ligne
de commande est accessible par la touche ↑.
Si nous voulons que MatLab ignore complètement ce que nous tapons cad ne l’exécute pas et
ne l’affiche pas, il faut le faire précéder par le caractère %. Ceci est utile pour commenter les
scripts.
Utilisation de l’aide en ligne : L’apprentissage du bon maniement de l’aide du logiciel
est indispensable. Etant le grand nombre d’instructions utilisables, il est hors de question de
mémoriser chacune d’elles avec la syntaxe correspondante. L’aide en ligne permet de
retrouver toutes les informations utiles, elle est activée en allant dans le menu Help →
MatLab.
Une nouvelle fenêtre partagée en 2 s’ouvre : à droite est affichée l’aide demandée, sur la
gauche les différentes manières de faire la demande d’aide :
N. TLATLI/INAT Programmation numérique Page 13
- Contents : la table de matière de l’aide. En cliquant sur un chapitre de l’arborescence,
son contenu est affiché dans la fenêtre de droite.
- Index : L’indexe de l’aide en ligne, qui répertorie toutes les commandes MatLab et
permet d’accéder à leur mode d’emploi spécifique.
- Search : un moteur de recherche dans lequel on peut taper le nom de la commande si
on la connait
- Favorites : donne la liste des chapitres stockés dans les favoris. Pour ajouter un
chapitre dans cette liste, il faut se positionner dessus à partir de contents et cliquer sur
le bouton de droite de la souris
Une aide importante se présente sous la forme de programmes de démonstration, auxquels on
peut y accéder à partir de Contents → Begin, puis en cliquant sur demos dans la sous-fenêtre
de droite ou bien en tapant demos directement dans la fenêtre de commande.
2- Types de données :
Plusieurs types de données sont disponibles dans MatLab. Les types traditionnels que
l’on retrouve dans tous les langages de programmation : les types numériques (single, double,
…), caractère char, les tableaux de réels, les types composés : cell, structure, ainsi que les
types définis par l’utilisateur comme les fonctions inline.
Cependant le type privilégié de MatLab est celui des tableaux à une ou deux dimensions qui
correspondent aux vecteurs et aux matrices.
a- Vecteurs : Pour définir un vecteur, la syntaxe est l’une des suivantes :
>> v=[2 ;3 ;4] ou bien [2 ↵↵↵↵ 3 ↵↵↵↵ 4] %vecteur colonne
>> v=[2 ,3 ,4] ou bien [2 3 4] %vecteur ligne
Les opérations possibles entre les vecteurs sont celles classiques :+, -. En plus dans
MatLab existe les ‘point opérations’ qui se font terme par terme : .+, .-, .*, ./, .^
Un message d’erreur est affiché si une opération impossible est tentée, comme
l’addition de 2 vecteurs de taille différente.
Pour aller vite on peut définir un vecteur par :
v= début :pas :fin.
v=linspace(10
v=ones(1,taille de v) % vecteur contenant des 1
v=zeros(1,taille de v) % vecteur contenant des 0
b- Matrices : Les matrices suivent la même syntaxe que les vecteurs à savoir les
composants des lignes séparées par des virgules ou des blancs et chaque colonne est
séparée de l’autre par un point-virgule ou un retour en ligne.
size(A) = [nb de lignes, nb de colonnes]
det(A) : déterminant de A
inv(A) : inverse de A
AB : inv(A)*B
A/B : A*inv(B)
eye(
diag
N. TLATLI/INAT Programmation numérique Page 14
III : LES FONCTIONS DEFINIES PAR L’UTILISATEUR
Les fonctions sont des enchaînements de commandes MatLab regroupées sous un nom
permettant de commander leur exécution.
On peut mettre dans une fonction un groupe de commandes destiné à être exécuté plusieurs
fois au cours du calcul avec éventuellement des valeurs de paramètres différents.
La fonction peut être aussi chargée de réaliser un calcul avec un certain algorithme qui
pourrait être éventuellement remplacé par un autre plus rapide ou plus précis, en changeant
simplement le nom de la fonction dans le programme appelant.
Enfin dés que le programme principal est long et compliqué, il est souhaitable de le découper
en fonctions correspondant à des étapes différentes, et ce afin d’améliorer la lisibilité et la
compréhension du programme.
a- M-files function : Dés que la fonction nécessite plusieurs instructions, il vaut mieux la
définir dans un fichier à part à l’aide de l’éditeur de texte de MatLab. De manière
générale la syntaxe de définition d’une fonction externe est :
function [y1,y2,…,ym] = nom_de_la_fonction(x1,x2,…,xn)
Le passage des arguments d’entrée, (x1,x2,…,xn), de la fonction se fait par valeur, donc
même si ces paramètres sont changés dans la fonction leur valeur ne sera pas changée
dans le programme appelant.
Si une des variables de la procédure n’est pas définie à l’intérieur de celle-ci elle doit
obligatoirement être fournie en argument d’entrée.
La récupération des valeurs calculées par la fonction se fait par les paramètres de
sortie yi.
Le nom du fichier contenant la fonction doit être le même que celui de la fonction.
On peut mettre plusieurs fonctions dans un même M-file, mais seule la fonction
portant le même nom que le fichier peut être appelée à partir de la fenêtre de
commande ou par une autre fonction ou par un autre script. Les autres fonctions
éventuellement stockées dans le fichier peuvent s’appeler entre elles mais ne sont pas
visibles de l’extérieur.
b- Fonctions inline : Une fonction ne comportant qu’un petit nombre d’instructions peut
être définie directement dans la fenêtre de commande de la manière suivante :
nom_de_la_fonction = inline(‘instruction MatLab’)
Les arguments d’appel de la fonction sont généralement fournis à l’appel dans l’ordre
d’apparition dans la définition de la fonction.
Comme on peut spécifier ces arguments explicitement dans la définition de la
fonction :
nom_de_la_fonction = inline(‘instruction MatLab’, ‘x1’,’x2’,…,’xn’)
Dans le tableau suivant, nous présentons quelques commandes de contrôle valables dans les
fonctions :
N. TLATLI/INAT Programmation numérique Page 15
INSTRUCTION DESCRIPTION
nargin Nombre d’arguments d’entrée d’une fonction
nargout Nombre d’arguments de sortie d’une fonction
error Interrompt l’exécution d’une fonction, affiche un message
d’erreur et retourne dans le programme appelant
warning Affiche un message d’avertissement mais ne retourne pas
dans le programme appelant
pause Interrompt l’exécution jusqu’à ce que l’utilisateur tape sur ↵
Pause(n) Interrompt l’exécution pendant n secondes
Pause off Indique que les pauses rencontrés doivent être ignorées, ce
qui permet de faire tourner des script requérant normalement
l’intervention de l’utilisateur.
break Sort d’une boucle ou arrête l’exécution du programme
return Retourne dans le programme appelant sans aller à la fin de
la fonction.
N. TLATLI/INAT Programmation numérique Page 16
IV : LES BOUCLES
On distingue deux manières d’écrire une boucle sous MatLab :
a- Les boucles while
b- Les boucles for
La boucle for parcourt un vecteur d’indices et effectue à chaque pas toutes les instructions
délimitées par for et end :
compteur= début:pas:fin
instructions
− −

− −
− −
for
end
La boucle for peut parcourir un vecteur (ou une matrice) en prenant comme valeur à chaque
pas les éléments (ou les colonnes) successifs.
Les bornes ne sont pas nécessairement des entiers et le pas peut être négatif.
La boucle while effectue aussi une suite de commandes mais jusqu’à ce qu’une condition
n’est plus satisfaite.
co n d itio n vraie
i n stru ctio n s
− − 

− − 
− − 
w h ile
en d
On peut imbriquer les boucles les unes dans les autres et les interrompre par la commande
break.
N. TLATLI/INAT Programmation numérique Page 17
V : LES TESTS IF
Un test est une alternative entre deux commandes MatLab, ou groupes de commandes,
sélectionnées selon le résultat d’un opérateur logique.
Sachant que les résultats d’une opération logique est une variable logique ou booléenne qui
vaut 1 ou Vrai et 0 ou Faux.
Le tableau ci-dessous liste les différents opérateurs logiques :
Expression
Française
Expression
MatLab
et &
ou |
non ~
égale ==
différent ~=
+ petit que <
+ grand que >
+ petit ou égal que <=
+ grand ou égal que >=
MatLab dispose du classique if … else, agrémenté du elseif. La syntaxe étant la
suivante :
(expression logique)
instructions
− −

− −
− −
if
end
ou bien
(expression logique)
traitement
traitement
− −

− −
− −
− −

− −
− −
if
1
else
2
end
N. TLATLI/INAT Programmation numérique Page 18
(expression logique )
traitement
(expression logique )
traitement
(expression logique )
traitement
...
(expression logique( ))
traitement
− −

− −
− −
− −

− −
− −
− −

− −
− −
− −

− −
− −
if 1
1
elseif 2
2
elseif 3
3
elseif n -1
(n -1)
e (expression logique( ))
traitement
− −

− −
− −
lse n
(n)
end
On a aussi la possibilité d’utiliser la commande switch … case, qui prend la syntaxe
suivante :
N. TLATLI/INAT Programmation numérique Page 19
VI : LECTURE ET ECRITURE AU CLAVIER ET DANS UN FICHIER
Durant un traitement numérique, on peut avoir à lire des données alphanumériques à
partir d’un fichier, comme on peut vouloir sauvegarder le résultat d’un calcul pour s’en servir
ultérieurement. Pour cela on utilisera les commandes suivantes :
dlmread(‘nom_fichier’,’délimiteur’) : lit les données numériques du fichier nom_fichier,
chaque nombre étant séparé du suivant par le caractère délimiteur ou par un retour à la ligne.
Sachant que la virgule et l’espace sont les délimiteurs par défaut.
dlmwrite(‘nom_fichier’,M,’délimiteur’) : écrit M dans le fichier nom_fichier.
textread(’nom_fichier’,’format’) : lit les variables avec le format spécifié, jusqu’à épuisement
du fichier. Il est à noter que le nombre de variables à lire et le nombre de données dans le
fichier doivent correspondre.
Un format est une chaîne de caractères spécifiant en lecture :e type de données à lire. Nous
distinguons :
‘%d’ type entier
‘%f’ type réel
‘%c’ type caractère
fid=open(‘nom_fichier’) : ouvre le fichier nom_fichier
[A,count] = fscanf(fid,format,size) : lit le fichier ouvert par open avec le format spécifié. On
peut éventuellement spécifier le nombre maximal des données à lire avec le paramètre size et
le paramètre de sortie count renvoie le nombre de données effectivement lues.
fprintf(‘format’, données) : sert à afficher des données à l’écran avec un format spécifié.
Exemple : fprintf(‘a=%f et b=%d’, a, b) résultat : a=1.5 et b=1
Le tableau suivant récapitule ces différentes commandes :
dlmread(‘nom’,’delimiteur’ Lecture du fichier nom
dlmwrite(‘nom’,M,’delimiteur’) Ecriture de M à partir du fichier M
textread(‘nom’,’format’) Lecture du fichier nom
fid=open(‘nom’) Ouvre le fichier nom
[A,count]=fscanf(fid,’format’) Lecture du fichier ouvert par open
fprint(fid,’format’,données) Ecriture des données dans le fichier ouvert par open
fprintf(‘format’,données) Ecriture à l’écran
N. TLATLI/INAT Programmation numérique Page 20
VII : REPRESENTATION GRAPHIQUE SOUS MATLAB
Dans toutes les représentations graphiques, MatLab se base sur des données discrètes
rangées dans des matrices ou des vecteu rs colonnes. Par exemple, pour tracer la courbe
y=f(x) ou la surface 2D z=f(x,y), les données doivent être des vecteurs pour x et y, ou des
matrices pour z, aux dimensions compatibles.
On utilise alors l’instruction de dessin correspondante : plot(x,y) qu’on complète par des
arguments optionnels tels que la couleur, le type de trait, l’échelle des axes, la légende …
La visualisation du résultat s’effectue alors dans une fenêtre graphique avec possibilité de
zoom, de rotation, de modifications, d’impression, …
Les principales commandes concernant les graphiques d’une manière générale, sont :
figure, subplot, hold on, xlabel, grid on, title, …
Pour plus d’informations, il faut consulter le help.
1- Graphique 2D :
Les principales fonctions pour les graphiques 2D sont :
plot, plotyy, loglog, semilogx, semilogy, …
Pour plus d’informations, il faut consulter le help.
Exercice : Cherchez dans l’aide de Matlab les commandes permettant de :
- Sauvegarder des figures,
- Ajouter une légende à une figure,
- Modifier la police dans une figure,
- Modifier les longueurs des axes et ajouter des labels à ces axes.
Exercice : Représentez graphiquement la fonction f définie par : f(x)=cos2
(x) x ᴄ [0,5]
- Pour tracer, on utilisera 6 points, puis 26 point et enfin 301 points équidistants dans
l’intervalle [0,5}
- Représentez sur une même figure les fonctions : f(x)=cos2
(x), g(x)=cos(2x) et
h(x)=cox(x2
) pour x ᴄ [0,5]
Pour cela on utilisera des symboles différents et on mettra une légende
Exercice : Plusieurs sous-figures sur une même figure :
- Déclarer les vecteurs : X = [0, π/10,2π/10,3π/10 ,.., 2π], Y1 = sin(X) et Y2=cos(X)
- Utiliser la commande subplot(2,1,1) et subplot(2,1,2) pour tracer sur une même figure
les sous-figures représentant Y1(X) et Y2(X) l’une au-dessous de l’autre.
2- Courbes en coordonnées polaires :
Les courbes en coordonnées polaires sont obtenues par la commande polar.
Exercice : Tracer la courbe r=2+2cos(θ) θ ᴄ [π,π]
3- Histogrammes et diagrammes :
Les histogrammes sont obtenus par la commande hist.
Exercice : Tester les commandes bar, stairs, stem
4- Graphique 3D :
Les principales fonctions pour les graphiques 3D sont :
plot3, mesh, meshgrid, surf, surfc, ezmesh, ezmeshc, ezsurf, ezsurfc, sphere, cylinder,..
Pour plus d’informations, il faut consulter le help.

Contenu connexe

Tendances

Examen principal - Fondement Multimedia - correction
Examen principal - Fondement Multimedia - correctionExamen principal - Fondement Multimedia - correction
Examen principal - Fondement Multimedia - correction
Ines Ouaz
 
Cubatures rendements
Cubatures   rendementsCubatures   rendements
Cubatures rendements
Abdoul Fatré Kienou
 
Les transistors
Les transistorsLes transistors
Les transistors
zakariaa meach
 
Codage de l'information
Codage de l'informationCodage de l'information
Codage de l'information
Peronnin Eric
 
5.5 Clustering
5.5 Clustering5.5 Clustering
5.5 Clustering
Boris Guarisma
 
Ch4 circuitscombinatoires
Ch4 circuitscombinatoiresCh4 circuitscombinatoires
Ch4 circuitscombinatoires
mickel iron
 
Smart grids
Smart gridsSmart grids
Smart grids
Zouhair Boufakri
 
structure-des-circuits-de-commande-et-de-puissance
structure-des-circuits-de-commande-et-de-puissancestructure-des-circuits-de-commande-et-de-puissance
structure-des-circuits-de-commande-et-de-puissance
morin moli
 
Cour traitement du signal.pdf
Cour traitement du signal.pdfCour traitement du signal.pdf
Cour traitement du signal.pdf
stock8602
 
Excel métré pour voirie - calcul détaillé - télécharger l'excel : http://bit....
Excel métré pour voirie - calcul détaillé - télécharger l'excel : http://bit....Excel métré pour voirie - calcul détaillé - télécharger l'excel : http://bit....
Excel métré pour voirie - calcul détaillé - télécharger l'excel : http://bit....
Hani sami joga
 
Postes de transformation client hta - conception et réalisation
Postes de transformation client hta - conception et réalisationPostes de transformation client hta - conception et réalisation
Postes de transformation client hta - conception et réalisation
Aminoxa Wydadya
 
Application de la théorie de graphe au problème de flot maximum
Application de la théorie de graphe au problème de flot maximumApplication de la théorie de graphe au problème de flot maximum
Application de la théorie de graphe au problème de flot maximum
chagra bassem
 
chap2 outil_mathematiques
chap2 outil_mathematiqueschap2 outil_mathematiques
chap2 outil_mathematiques
BAKKOURY Jamila
 
Matériel hta
Matériel htaMatériel hta
Matériel hta
Ben Hichem
 
Lecture5 Signal and Systems
Lecture5 Signal and SystemsLecture5 Signal and Systems
Lecture5 Signal and Systems
babak danyal
 
Ener1 - CM4 - Distribution électrique
Ener1 - CM4 - Distribution électriqueEner1 - CM4 - Distribution électrique
Ener1 - CM4 - Distribution électrique
Pierre Maréchal
 
7 grafcet avec saut d'étape perceuse
7  grafcet avec saut d'étape perceuse7  grafcet avec saut d'étape perceuse
7 grafcet avec saut d'étape perceuse
omar bllaouhamou
 
Appareillage_industriel_ppt
Appareillage_industriel_pptAppareillage_industriel_ppt
Appareillage_industriel_ppt
MohammedTAOUSSI4
 
Le réseau Moyenne Tension MALT
Le réseau Moyenne Tension MALTLe réseau Moyenne Tension MALT
Le réseau Moyenne Tension MALT
Hamza BARAKET
 
Chiali
ChialiChiali
Chiali
hakimkada
 

Tendances (20)

Examen principal - Fondement Multimedia - correction
Examen principal - Fondement Multimedia - correctionExamen principal - Fondement Multimedia - correction
Examen principal - Fondement Multimedia - correction
 
Cubatures rendements
Cubatures   rendementsCubatures   rendements
Cubatures rendements
 
Les transistors
Les transistorsLes transistors
Les transistors
 
Codage de l'information
Codage de l'informationCodage de l'information
Codage de l'information
 
5.5 Clustering
5.5 Clustering5.5 Clustering
5.5 Clustering
 
Ch4 circuitscombinatoires
Ch4 circuitscombinatoiresCh4 circuitscombinatoires
Ch4 circuitscombinatoires
 
Smart grids
Smart gridsSmart grids
Smart grids
 
structure-des-circuits-de-commande-et-de-puissance
structure-des-circuits-de-commande-et-de-puissancestructure-des-circuits-de-commande-et-de-puissance
structure-des-circuits-de-commande-et-de-puissance
 
Cour traitement du signal.pdf
Cour traitement du signal.pdfCour traitement du signal.pdf
Cour traitement du signal.pdf
 
Excel métré pour voirie - calcul détaillé - télécharger l'excel : http://bit....
Excel métré pour voirie - calcul détaillé - télécharger l'excel : http://bit....Excel métré pour voirie - calcul détaillé - télécharger l'excel : http://bit....
Excel métré pour voirie - calcul détaillé - télécharger l'excel : http://bit....
 
Postes de transformation client hta - conception et réalisation
Postes de transformation client hta - conception et réalisationPostes de transformation client hta - conception et réalisation
Postes de transformation client hta - conception et réalisation
 
Application de la théorie de graphe au problème de flot maximum
Application de la théorie de graphe au problème de flot maximumApplication de la théorie de graphe au problème de flot maximum
Application de la théorie de graphe au problème de flot maximum
 
chap2 outil_mathematiques
chap2 outil_mathematiqueschap2 outil_mathematiques
chap2 outil_mathematiques
 
Matériel hta
Matériel htaMatériel hta
Matériel hta
 
Lecture5 Signal and Systems
Lecture5 Signal and SystemsLecture5 Signal and Systems
Lecture5 Signal and Systems
 
Ener1 - CM4 - Distribution électrique
Ener1 - CM4 - Distribution électriqueEner1 - CM4 - Distribution électrique
Ener1 - CM4 - Distribution électrique
 
7 grafcet avec saut d'étape perceuse
7  grafcet avec saut d'étape perceuse7  grafcet avec saut d'étape perceuse
7 grafcet avec saut d'étape perceuse
 
Appareillage_industriel_ppt
Appareillage_industriel_pptAppareillage_industriel_ppt
Appareillage_industriel_ppt
 
Le réseau Moyenne Tension MALT
Le réseau Moyenne Tension MALTLe réseau Moyenne Tension MALT
Le réseau Moyenne Tension MALT
 
Chiali
ChialiChiali
Chiali
 

En vedette

Cours analyse-num source1
Cours analyse-num source1Cours analyse-num source1
Cours analyse-num source1
Lacina Zina
 
Analyse Numérique Chapitre 2: Systèmes d'Équations Linéaires.
Analyse Numérique Chapitre 2: Systèmes d'Équations Linéaires.Analyse Numérique Chapitre 2: Systèmes d'Équations Linéaires.
Analyse Numérique Chapitre 2: Systèmes d'Équations Linéaires.
bilal001
 
matlab tutorial _ tugas
matlab tutorial _ tugasmatlab tutorial _ tugas
matlab tutorial _ tugas
zn Yedhi
 
Rechrches operationnele exam 2016 +corr
Rechrches operationnele exam 2016 +corrRechrches operationnele exam 2016 +corr
Rechrches operationnele exam 2016 +corr
jamal yasser
 
RECHERCHE OPERATIONNELLE S5 WWW.COURS-ECONOMIE.COM
RECHERCHE OPERATIONNELLE S5 WWW.COURS-ECONOMIE.COMRECHERCHE OPERATIONNELLE S5 WWW.COURS-ECONOMIE.COM
RECHERCHE OPERATIONNELLE S5 WWW.COURS-ECONOMIE.COM
jamal yasser
 
Cours signaux et systemes
Cours signaux et systemesCours signaux et systemes
Cours signaux et systemes
Foulah Mustapha
 
Hec ras
Hec rasHec ras
Hec ras
Karan Tyagi
 
Traitement d'image
Traitement d'imageTraitement d'image
Traitement d'image
Anissa Teyeb
 
TPs-TDs : Travaux Pratiques & Dérigés (version 2014-2017) Génie Electrique/Ex...
TPs-TDs : Travaux Pratiques & Dérigés (version 2014-2017) Génie Electrique/Ex...TPs-TDs : Travaux Pratiques & Dérigés (version 2014-2017) Génie Electrique/Ex...
TPs-TDs : Travaux Pratiques & Dérigés (version 2014-2017) Génie Electrique/Ex...
Mohammed TAMALI
 
chap3 numerisation_des_signaux
chap3 numerisation_des_signauxchap3 numerisation_des_signaux
chap3 numerisation_des_signaux
BAKKOURY Jamila
 
Automatique systémes linéaires et non linéaires 2
Automatique   systémes linéaires et non linéaires 2Automatique   systémes linéaires et non linéaires 2
Automatique systémes linéaires et non linéaires 2
badr zaimi
 
Experimental comparison of quadrature formulas convergence
Experimental comparison of quadrature formulas convergenceExperimental comparison of quadrature formulas convergence
Experimental comparison of quadrature formulas convergence
Mamy Ramamonjisoa
 
Traitement des images avec matlab
Traitement des images avec matlabTraitement des images avec matlab
Traitement des images avec matlab
omar bllaouhamou
 
Implémentation de l’algorithme du Simplexe En Java
Implémentation de l’algorithme du Simplexe En JavaImplémentation de l’algorithme du Simplexe En Java
Implémentation de l’algorithme du Simplexe En Java
Rached Krim
 
Nr 15 cle2134cd
Nr 15 cle2134cdNr 15 cle2134cd
Nr 15 cle2134cd
Sanae Jeffali
 
Ctn 762-guide hec-ras-h2009
Ctn 762-guide hec-ras-h2009Ctn 762-guide hec-ras-h2009
Ctn 762-guide hec-ras-h2009
Sanae Jeffali
 
PFE régulateur de vitesse d'un moteur DC
PFE régulateur de vitesse d'un moteur DCPFE régulateur de vitesse d'un moteur DC
PFE régulateur de vitesse d'un moteur DC
Mohamed Arhoujdam
 
Introduction to Go programming
Introduction to Go programmingIntroduction to Go programming
Introduction to Go programming
Exotel
 

En vedette (20)

Cours analyse-num source1
Cours analyse-num source1Cours analyse-num source1
Cours analyse-num source1
 
Analyse Numérique Chapitre 2: Systèmes d'Équations Linéaires.
Analyse Numérique Chapitre 2: Systèmes d'Équations Linéaires.Analyse Numérique Chapitre 2: Systèmes d'Équations Linéaires.
Analyse Numérique Chapitre 2: Systèmes d'Équations Linéaires.
 
matlab tutorial _ tugas
matlab tutorial _ tugasmatlab tutorial _ tugas
matlab tutorial _ tugas
 
Rechrches operationnele exam 2016 +corr
Rechrches operationnele exam 2016 +corrRechrches operationnele exam 2016 +corr
Rechrches operationnele exam 2016 +corr
 
RECHERCHE OPERATIONNELLE S5 WWW.COURS-ECONOMIE.COM
RECHERCHE OPERATIONNELLE S5 WWW.COURS-ECONOMIE.COMRECHERCHE OPERATIONNELLE S5 WWW.COURS-ECONOMIE.COM
RECHERCHE OPERATIONNELLE S5 WWW.COURS-ECONOMIE.COM
 
Traitement de signal
Traitement de signalTraitement de signal
Traitement de signal
 
0 c2 2013
0 c2 20130 c2 2013
0 c2 2013
 
Cours signaux et systemes
Cours signaux et systemesCours signaux et systemes
Cours signaux et systemes
 
Hec ras
Hec rasHec ras
Hec ras
 
Traitement d'image
Traitement d'imageTraitement d'image
Traitement d'image
 
TPs-TDs : Travaux Pratiques & Dérigés (version 2014-2017) Génie Electrique/Ex...
TPs-TDs : Travaux Pratiques & Dérigés (version 2014-2017) Génie Electrique/Ex...TPs-TDs : Travaux Pratiques & Dérigés (version 2014-2017) Génie Electrique/Ex...
TPs-TDs : Travaux Pratiques & Dérigés (version 2014-2017) Génie Electrique/Ex...
 
chap3 numerisation_des_signaux
chap3 numerisation_des_signauxchap3 numerisation_des_signaux
chap3 numerisation_des_signaux
 
Automatique systémes linéaires et non linéaires 2
Automatique   systémes linéaires et non linéaires 2Automatique   systémes linéaires et non linéaires 2
Automatique systémes linéaires et non linéaires 2
 
Experimental comparison of quadrature formulas convergence
Experimental comparison of quadrature formulas convergenceExperimental comparison of quadrature formulas convergence
Experimental comparison of quadrature formulas convergence
 
Traitement des images avec matlab
Traitement des images avec matlabTraitement des images avec matlab
Traitement des images avec matlab
 
Implémentation de l’algorithme du Simplexe En Java
Implémentation de l’algorithme du Simplexe En JavaImplémentation de l’algorithme du Simplexe En Java
Implémentation de l’algorithme du Simplexe En Java
 
Nr 15 cle2134cd
Nr 15 cle2134cdNr 15 cle2134cd
Nr 15 cle2134cd
 
Ctn 762-guide hec-ras-h2009
Ctn 762-guide hec-ras-h2009Ctn 762-guide hec-ras-h2009
Ctn 762-guide hec-ras-h2009
 
PFE régulateur de vitesse d'un moteur DC
PFE régulateur de vitesse d'un moteur DCPFE régulateur de vitesse d'un moteur DC
PFE régulateur de vitesse d'un moteur DC
 
Introduction to Go programming
Introduction to Go programmingIntroduction to Go programming
Introduction to Go programming
 

Similaire à Cours programmation en matlab2 (1)

Les Filtres Numeriques
Les Filtres NumeriquesLes Filtres Numeriques
Les Filtres Numeriques
SAHELAicha
 
Discrimination et régression pour des dérivées : un résultat de consistance p...
Discrimination et régression pour des dérivées : un résultat de consistance p...Discrimination et régression pour des dérivées : un résultat de consistance p...
Discrimination et régression pour des dérivées : un résultat de consistance p...
tuxette
 
Ts exam-h2014-correction
Ts exam-h2014-correctionTs exam-h2014-correction
Ts exam-h2014-correction
Daha Ahmed
 
Omp math nombres-complexes
Omp math nombres-complexesOmp math nombres-complexes
Omp math nombres-complexes
Ahmed Ali
 
Cours series fourier
Cours series fourierCours series fourier
Cours series fourier
ismailkziadi
 
Cours series fourier
Cours series fourierCours series fourier
Cours series fourier
Mehdi Maroun
 
SYStèmes d'équations linéaires
SYStèmes d'équations linéairesSYStèmes d'équations linéaires
SYStèmes d'équations linéaires
sarah Benmerzouk
 
Cours rep etat
Cours rep etatCours rep etat
Cours rep etat
Lin Pepin
 
Chapitre 6 hachage statique
Chapitre 6 hachage statiqueChapitre 6 hachage statique
Chapitre 6 hachage statique
Sana Aroussi
 
124776153 td-automatique-1 a-jmd-2011
124776153 td-automatique-1 a-jmd-2011124776153 td-automatique-1 a-jmd-2011
124776153 td-automatique-1 a-jmd-2011
sunprass
 
Signaux et systèmes
Signaux et systèmesSignaux et systèmes
Signaux et systèmes
manahil2012
 
Calcul scientifique IVP
Calcul scientifique IVPCalcul scientifique IVP
Calcul scientifique IVP
Mouhamed Ndao
 
Algebre1 s1 par www.etudecours.com
Algebre1 s1 par www.etudecours.comAlgebre1 s1 par www.etudecours.com
Algebre1 s1 par www.etudecours.com
etude cours
 
transparents-Algo-complexite.pdf
transparents-Algo-complexite.pdftransparents-Algo-complexite.pdf
transparents-Algo-complexite.pdf
abdallahyoubiidrissi1
 
T. Masrour - cours dynamique des systèmes - vibrations - chapitre1-1ddl chapi...
T. Masrour - cours dynamique des systèmes - vibrations - chapitre1-1ddl chapi...T. Masrour - cours dynamique des systèmes - vibrations - chapitre1-1ddl chapi...
T. Masrour - cours dynamique des systèmes - vibrations - chapitre1-1ddl chapi...
tawfik-masrour
 
Sol td 1 edo
Sol td 1 edoSol td 1 edo
Sol td 1 edo
zouhairdiab
 
Sol td 1 edo
Sol td 1 edoSol td 1 edo
Devoir Math Bac 2011_La Correction
Devoir Math Bac 2011_La CorrectionDevoir Math Bac 2011_La Correction
Devoir Math Bac 2011_La Correction
Achraf Frouja
 
CAPES maths 2019 composition 2
CAPES maths 2019 composition 2CAPES maths 2019 composition 2
CAPES maths 2019 composition 2
Dany-Jack Mercier
 

Similaire à Cours programmation en matlab2 (1) (20)

Video
VideoVideo
Video
 
Les Filtres Numeriques
Les Filtres NumeriquesLes Filtres Numeriques
Les Filtres Numeriques
 
Discrimination et régression pour des dérivées : un résultat de consistance p...
Discrimination et régression pour des dérivées : un résultat de consistance p...Discrimination et régression pour des dérivées : un résultat de consistance p...
Discrimination et régression pour des dérivées : un résultat de consistance p...
 
Ts exam-h2014-correction
Ts exam-h2014-correctionTs exam-h2014-correction
Ts exam-h2014-correction
 
Omp math nombres-complexes
Omp math nombres-complexesOmp math nombres-complexes
Omp math nombres-complexes
 
Cours series fourier
Cours series fourierCours series fourier
Cours series fourier
 
Cours series fourier
Cours series fourierCours series fourier
Cours series fourier
 
SYStèmes d'équations linéaires
SYStèmes d'équations linéairesSYStèmes d'équations linéaires
SYStèmes d'équations linéaires
 
Cours rep etat
Cours rep etatCours rep etat
Cours rep etat
 
Chapitre 6 hachage statique
Chapitre 6 hachage statiqueChapitre 6 hachage statique
Chapitre 6 hachage statique
 
124776153 td-automatique-1 a-jmd-2011
124776153 td-automatique-1 a-jmd-2011124776153 td-automatique-1 a-jmd-2011
124776153 td-automatique-1 a-jmd-2011
 
Signaux et systèmes
Signaux et systèmesSignaux et systèmes
Signaux et systèmes
 
Calcul scientifique IVP
Calcul scientifique IVPCalcul scientifique IVP
Calcul scientifique IVP
 
Algebre1 s1 par www.etudecours.com
Algebre1 s1 par www.etudecours.comAlgebre1 s1 par www.etudecours.com
Algebre1 s1 par www.etudecours.com
 
transparents-Algo-complexite.pdf
transparents-Algo-complexite.pdftransparents-Algo-complexite.pdf
transparents-Algo-complexite.pdf
 
T. Masrour - cours dynamique des systèmes - vibrations - chapitre1-1ddl chapi...
T. Masrour - cours dynamique des systèmes - vibrations - chapitre1-1ddl chapi...T. Masrour - cours dynamique des systèmes - vibrations - chapitre1-1ddl chapi...
T. Masrour - cours dynamique des systèmes - vibrations - chapitre1-1ddl chapi...
 
Sol td 1 edo
Sol td 1 edoSol td 1 edo
Sol td 1 edo
 
Sol td 1 edo
Sol td 1 edoSol td 1 edo
Sol td 1 edo
 
Devoir Math Bac 2011_La Correction
Devoir Math Bac 2011_La CorrectionDevoir Math Bac 2011_La Correction
Devoir Math Bac 2011_La Correction
 
CAPES maths 2019 composition 2
CAPES maths 2019 composition 2CAPES maths 2019 composition 2
CAPES maths 2019 composition 2
 

Dernier

Etude de la faisabilité de la climatisation solaire pour l’habitat individuel...
Etude de la faisabilité de la climatisation solaire pour l’habitat individuel...Etude de la faisabilité de la climatisation solaire pour l’habitat individuel...
Etude de la faisabilité de la climatisation solaire pour l’habitat individuel...
iheberry
 
cours-sur-les-stations-de-pompageen génie civil.pdf
cours-sur-les-stations-de-pompageen génie civil.pdfcours-sur-les-stations-de-pompageen génie civil.pdf
cours-sur-les-stations-de-pompageen génie civil.pdf
afigloria194
 
Note agro-climatique et prairies n°5 - Juillet 2024
Note agro-climatique et prairies n°5 - Juillet 2024Note agro-climatique et prairies n°5 - Juillet 2024
Note agro-climatique et prairies n°5 - Juillet 2024
idelewebmestre
 
Theorie du trafic on telecommunication network
Theorie du trafic on telecommunication networkTheorie du trafic on telecommunication network
Theorie du trafic on telecommunication network
MahamaneAliSalatou
 
Webinaire BL 28_06_03_Transmissibilité.pdf
Webinaire BL 28_06_03_Transmissibilité.pdfWebinaire BL 28_06_03_Transmissibilité.pdf
Webinaire BL 28_06_03_Transmissibilité.pdf
Institut de l'Elevage - Idele
 
Webinaire BL 28_06_01_robots de traite.pdf
Webinaire BL 28_06_01_robots de traite.pdfWebinaire BL 28_06_01_robots de traite.pdf
Webinaire BL 28_06_01_robots de traite.pdf
Institut de l'Elevage - Idele
 
Webinaire BL 28_06_02_Consommation Energie.pdf
Webinaire BL 28_06_02_Consommation Energie.pdfWebinaire BL 28_06_02_Consommation Energie.pdf
Webinaire BL 28_06_02_Consommation Energie.pdf
Institut de l'Elevage - Idele
 

Dernier (7)

Etude de la faisabilité de la climatisation solaire pour l’habitat individuel...
Etude de la faisabilité de la climatisation solaire pour l’habitat individuel...Etude de la faisabilité de la climatisation solaire pour l’habitat individuel...
Etude de la faisabilité de la climatisation solaire pour l’habitat individuel...
 
cours-sur-les-stations-de-pompageen génie civil.pdf
cours-sur-les-stations-de-pompageen génie civil.pdfcours-sur-les-stations-de-pompageen génie civil.pdf
cours-sur-les-stations-de-pompageen génie civil.pdf
 
Note agro-climatique et prairies n°5 - Juillet 2024
Note agro-climatique et prairies n°5 - Juillet 2024Note agro-climatique et prairies n°5 - Juillet 2024
Note agro-climatique et prairies n°5 - Juillet 2024
 
Theorie du trafic on telecommunication network
Theorie du trafic on telecommunication networkTheorie du trafic on telecommunication network
Theorie du trafic on telecommunication network
 
Webinaire BL 28_06_03_Transmissibilité.pdf
Webinaire BL 28_06_03_Transmissibilité.pdfWebinaire BL 28_06_03_Transmissibilité.pdf
Webinaire BL 28_06_03_Transmissibilité.pdf
 
Webinaire BL 28_06_01_robots de traite.pdf
Webinaire BL 28_06_01_robots de traite.pdfWebinaire BL 28_06_01_robots de traite.pdf
Webinaire BL 28_06_01_robots de traite.pdf
 
Webinaire BL 28_06_02_Consommation Energie.pdf
Webinaire BL 28_06_02_Consommation Energie.pdfWebinaire BL 28_06_02_Consommation Energie.pdf
Webinaire BL 28_06_02_Consommation Energie.pdf
 

Cours programmation en matlab2 (1)

  • 1. COURS PROGRAMMATION EN MATLAB Nejla Hariga épouse Tlatli Mastère HAAR/INAT
  • 2. N. TLATLI/INAT Programmation numérique Page 2 COURS PROGRAMMATION EN MATLAB Plan : I- Introduction à la résolution des systèmes linéaires Ax=b a. Cas de l’écoulement souterrain b. Formulation discrète c. Méthodes de résolution directes d. Méthodes de résolution itératives II- Prise en main de MatLab III- Les fonctions sous MatLab IV- Les boucles V- Les tests VI- Lecture et écriture au clavier et dans un fichier VII- Représentation graphique sous Matlab VIII- Programmation de quelquesalgorithmes
  • 3. N. TLATLI/INAT Programmation numérique Page 3 I : INTRODUCTION A LA RESOLUTION DES SYSTEMES LINEAIRES 1- Cas de l’écoulement souterrain (problème continu): L’écoulement d’un fluide incompressible dans un milieu poreux saturé (Ω) est régi par l’équation aux dérivées partielles suivante : H .( H) dansSS K Q t ∂ = ∇ ∇ + Ω ∂ (1) Avec H : la charge hydraulique K : la conductivité hydraulique Ss : l’emmagasinement spécifique Q : le terme source ∇: l’opérateur nabla Il est à noter que cette équation est déduite de l’équation de la conservation de la masse à laquelle on a ajouté la loi de comportement de Darcy. Cette loi exprime le fait que la vitesse d’écoulement laminaire du fluide est proportionnelle au gradient de la charge hydraulique : Hq u K= = − ∇ (2) Si on se met dans le cas bi-dimentionnel, stationnaire, d’un aquifère homogène et isotrope d’épaisseur e alors l’équation (1) s’écrit : 2 2 2 2 H H ( ) dansT Q x y ∂ ∂ + = − Ω ∂ ∂ (3) où T=K*e la transmissivité hydraulique. Pour résoudre l’équation aux dérivée partielle (EDP) (3) on a besoin de la compléter par des conditions aux limites (CL) sur la : frontière du domaine. On distingue trois types de CL : - condition de Dirichlet : H=H0 - condition de Neumann : -T.∇H.n = u0 - condition mixte : : -T.∇H.n = α(H-H0) + u0 (α = 0 condition de Neumann, α tend vers ∝ condition Dirichlet) Considérons par exemple le problème de Dirichlet suivant : 2 2 2 2 H H dansf x y H g sur  ∂ ∂ + = Ω ∂ ∂  = ∂Ω = Γ (4) Les cas où on peut exprimer H solution de (4) par une formule intégrale explicite faisant intervenir les seconds membres f et g, sont assez rares et se limitent à des domaines Ω de forme très simple. Dans les autres cas on doit chercher une approximation de H en passant au problème discret. C’est à dire au lieu de chercher la solution H en tout point du domaine Ω, on la cherche en un nombre fini de points. Ce passage du problème continu au problème discret s’appelle la discrétisation. Il existe plusieurs méthodes de discrétisation : la méthode des différences finies, la méthode des éléments finis, la méthode des volumes finis … Dans ce qui suit on va utiliser la méthode des différences finies et considérer un domaine Ω rectangulaire.
  • 4. N. TLATLI/INAT Programmation numérique Page 4 2- Formulation discrète : On prend comme domaine Ω le rectangle [0,a]x[0,b] sur lequel on définit un quadrillage en découpant [0,a] en M points intermédiaires tel que 0=x0<x1<x2<….<xM+1=a et [0,b] en N points intermédiaires tel que 0=y0<y1<y2<….<yN+1=b. On adoptera un découpage à pas constant soit : ∆x = a/(M+1) et ∆y = b/(N+1) Donc xi=i. ∆x et yj=j. ∆y avec i compris entre 0 et (M+1) et j entre 0 et (N+1). xi0 Yj xM+1 = a YN+1 =b Figure 1 : Maillage Les points Pij du maillage ont pour coordonnées (xi,yj) et on cherche la solution H du système (4) en ces points. Pour cela il faut re-écrire le système (4) aux points Pij. La méthode des différences finies consiste à approcher les dérivées d’une fonction par des combinaisons des valeurs de cette fonction aux points Pij du maillage : Soit φ(t) une fonction continue de t qui prend les valeurs φi-1, φi et φi+1 aux points ti-1, ti et ti+1 équidistants et espacés de p= ti-1 - ti, alors d’après la formule de Taylor nous pouvons écrire : ] ] 2 ' '' 1( ) ( ) ( ) ( ) avec 0,1 2 i i i i p t t p t t pθ θ+φ = φ + φ + φ + ∈ Donc en supposant p assez petit et '' φ pas trop grand nous pouvons approcher ' φ (ti) par : ' 21( ) ( ) ( ) ( )i i i t t t p p θ+φ − φ φ + c’est une approximation centrée avant Nous pouvons aussi écrire : ' 21( ) ( ) ( ) ( )i i i t t t p p θ−φ − φ φ + c’est une approximation centrée arrière Ou bien : ' 21 1( ) ( ) ( ) ( ) 2 i i i t t t p p θ+ −φ − φ φ + c’est une approximation centrée
  • 5. N. TLATLI/INAT Programmation numérique Page 5 Maintenant pour approcher la dérivée seconde de φ aux points ti, nous utilisons des approximations de φ’ aux points ti+1/2 = (ti+1 - ti)/2 et ti-1/2 = (ti - ti-1)/2 et nous obtenons successivement les formules de Taylor suivantes : ' 1 1/ 2 ' 1 '' 1/ 2 1 1 '' ' ' 1/ 2 1/ 2 1/ 2 1/ 2 ( ) ( ) ( ) ( ) ( ) 1 1 1 ( ) ( ) ( ) ( )) ( ) ( )) 1 ( ) ( ) ( ) i i i i i i i i i i i i i i i i t t t p t t t t t t t t p p p p t t t t t + + − − + − + − + − φ − φ  φ   φ − φ    φ ⇒ φ (φ − φ − (φ − φ       φ φ − φ  −  d’où : [ ]'' 2 1 12 1 ( ) ( ) 2 ( ) ( ) ( )i i i it t t t p p θ+ −φ φ − φ + φ + Appliquons maintenant cette formule afin d’approximer la première équation du système (4) aux points Pij à l’intérieur du rectangle : 2 2 1, 1, , 1 , 12 2 2 2 H H 1 1 ( H) ( ) 2 H 2 Hij ij i j ij i j i j ij i j x y x y + − + − ∂ ∂    ∆ = + Η − Η + + Η − Η +   ∂ ∂ ∆ ∆ Cette formule porte le nom de schéma à 5 points car ( H)ij∆ s’exprime en fonction de la valeur de H en 5 points : Pi+1j Pi-1j Pij Pij-1 Pij+1 Donc le système discret (4) s’écrit: 1, 1, , 1 , 12 2 1 1 2 H 2 H 1 i Met 1 j N ¨ pour (i = 0 ou M +1)et (j = 0ou N +1) i j ij i j i j ij i j ij ij ij f x y H g + − + − −    Η − Η + − Η − Η + = ∀    ∆ ∆  = ≤ ≤ ≤ ≤ (5) En conclusion, il s’agit de résoudre un système linéaire de MxN équations à MxN inconnues. Pour écrire ce système d’équations sous forme matricielle, nous devons ranger les inconnues Hij à l’intérieur du domaine Ω dans un vecteur H de longueur MxN, pour cela il faut numéroter les points Pij. Il existe plusieurs manières de numéroter, par exemple nous pouvons numéroter les points par ordre de j croissant et pour chaque j par ordre de i croissant, ce qui donne :
  • 6. N. TLATLI/INAT Programmation numérique Page 6 Hi,N+1 0 Hi,0 H0,j b a Pij HM+1,j Figure 2 : Maillage avec numérotation des points Ainsi le point Pij aura le numéro : i+(j-1)M Cette numérotation induit de façon naturelle une décomposition du vecteur H en N blocs de dimension M, correspondant chacun aux points d’une même ligne du maillage : H=[(H11,H21,H31,…,HM1), (H12,H22,H32,…,HM2),… (H1N,H2N,H3N,…,HMN)] à cette décomposition de H correspond une décomposition de la matrice A du système linéaire, du problème (5), en NxN blocs : 11 12 21 22 23 32 33 34 1 ... .... ... NN NN A A A A A A A A A A A−        =        Où les blocs Akl sont des matrices de dimension (MxM). Les Akl non nulles sont définies par : , 1 , 1 2 , 1 ( ) 0 ... 0 ... 0 0 0 ... .... ... k k k k M k k A A I y A β α α β α α β α α β − + − = = ∆        =        avec IM la matrice identité de dimension M et 2 2 2 1 2 2 et ( ) ( ) ( )x x y α β − = = + ∆ ∆ ∆ Dans le cas d’un maillage uniforme tel que ∆x=∆y=p alors :
  • 7. N. TLATLI/INAT Programmation numérique Page 7 , 2 4 1 0 ... 0 1 4 1 ... 0 1 0 1 4 1 0 ... .... ... 1 4 k kA p −   − −   = − −      −  Quant au vecteur second membre du système linéaire c’est la somme des vecteurs f et g contenant respectivement les fij aux points internes au domaine voisins des frontières et les gij intervenant aux points situés sur le bord du domaine. On a : 1,1 0,1 1,0 1, 0,N 1,N+12 2 2 2 ,1 i,0 , i,N+12 2 ,1 M+1,1 M,0 , M+1,N M,N+12 2 2 2 1, 0,j , M+1,j2 2 1 1 1 1 H H et H H ( ) ( ) ( ) ( ) 1 1 H et H 2 1 ( ) ( ) 1 1 1 1 H H et H H ( ) ( ) ( ) ( ) 1 1 H et H 2 1 ( ) ( ) N i i N M M N j M j g g x y x y g g i M y y g g x y x y g g j N x x = + = + ∆ ∆ ∆ ∆ = = ∀ ≤ ≤ − ∆ ∆ = + = + ∆ ∆ ∆ ∆ = = ∀ ≤ ≤ − ∆ ∆ , 0 pour tousles autresi jg = On aura alors à résoudre AH = F 3- Méthodes de résolution des systèmes linéaires : On distingue deux classes de méthodes pour résoudre les systèmes matriciels de la forme Ax=b : les méthodes directes et les méthodes itératives 3-1 Les méthodes directes : Se sont les méthodes qui aboutissent à la solution en un nombre fini d'opérations. Pour cela elles modifient la structure initiale de la matrice pour la mettre sous forme de produit de matrices ‘faciles’ à utiliser comme les matrices triangulaires ou orthogonales. Dans ce qui suit nous présenteront 2 méthodes assez répandues : a- Factorisation de Cholesky : Théorème : Soit A une matrice symétrique positive définie positive, alors il existe une unique matrice L triangulaire inférieure à diagonale réelle positive telle que A=LLT . Il est à noter qu’il existe plusieurs algorithmes pour la méthode de Cholesky, nous présenterons deux d’entre-elles.
  • 8. N. TLATLI/INAT Programmation numérique Page 8 Algorithme du Left-Looking : (1,1) (1,1) 1 ( : 2 : ,1) ( : 2 : ,1) (1,1) 2 : ( : , ) ( : , ) 1: 1 ( : , ) ( : , ) ( , )* ( : , ) ( , ) ( , ) 1 ( 1: , ) ( 1: , ) ( , ) L A L i n A i n L do k n L k n k A k n k do j k L k n k L k n k L k j L k n j enddo L k k A k k L k n k L k n k L k k enddo = = =  =  = −   = −      =   + = +     Dans cet algorithme la mise à jour d’une colonne est retardée au plus tard possible. En effet une colonne de la matrice A n’est considérée que lorsque toutes les précédentes de L ont été constituées. C’est le Cholesky left-looking. Algorithme du Right-Looking : _ inf( ) (1,1) (1,1) 1 ( : 2 : ,1) ( : 2 : ,1) (1,1) 1: 1 1: ( : , ) ( : , ) ( , )* ( : , ) ( 1, 1) ( 1, 1) 1 ( 2 : , 1) ( 2 : , 1) ( 1, 1) L Triangle A L L L i n L i n L do j n do k j n L k n k L k n k L k j L k n j enddo L j j L j j L j n j L j n j L j j enddo = = = = −  = +  = −     + + = + +   + + = + +  + +   Dés qu’une colonne de L est prête elle ‘corrige’ toutes les colonnes suivantes. b- Factorisation QR Théorème : Soit A ∈ ℜnxm de plein rang, (les vecteurs colonnes ai de A forment un système libre de ℜn ), avec n>=m
  • 9. N. TLATLI/INAT Programmation numérique Page 9 Alors il existe un unique couple (Q,R) : Q ∈ ℜnxm et R ∈ ℜmxm avec QT Q = Im et R est triangulaire supérieure à diagonale positive telle que A = Q.R Algorithme de Gram-Schmidt Classique: 1 1 1 1 1 1 1 , 1 , 1 , , ¨ 1 1 : 1 : 1 1 T j i j i i i i j i j j i i i i i i i r a q a r d o i m d o j i r q a e n d d o w a r q r w q w r e n d d o − = = = =  = −  =     = −   =   =    ∑ Dans le cas où les vecteurs colonnes ai de A = (a1, a2, … am) sont presque liés ou bien sont de normes très proches, le comportement numérique de l’algorithme de Gram-Schmidt classique est très mauvais. On adopte alors l’algorithme de Gram-Schmidt modifié : Algorithme de Gram-Schmidt Modifié: , , , , 1 , 1 1 : 1 1 : i i i i i i i T i j i j j j i j i i i i j i j j d o i m r a q a r d o j i m r q a a a r q e n d d o w a r q e n d d o − = =  =  =   = +  =  = −     = −     ∑ Dans cet algorithme, dés qu’un vecteur qi vient d’être calculé n retire aux aj suivants (j>i) sa contribution.
  • 10. N. TLATLI/INAT Programmation numérique Page 10 3-2 Les méthodes itératives : Une méthode itérative engendre une suite de vecteurs qui doit tendre vers la solution. On définit : x la solution recherchée du système Ax=b r=b-Ax le résidus associé à x e=x-x l’erreur associée à x r=b-Ax = Ax-Ax = A(x-x) = Ae a- Les méthodes itératives linéaires : Ces méthodes sont basées sur une décomposition de la matrice A de la forme : A=M-N avec M une matrice inversible Nous cherchons alors une suite (xk) qui converge vers x solution de Ax=b. L’itération définie à partir de x0 est : 1 1 1 1 1 1 1 1 1 1 ( ) inversible d'autrepart ( ) ( ) ( ) k k k k k k k k k k k k k k k k k k k k k k x x b x x b x b x x x r x x r x x b x x x x x x x x e e e e + + + − + + + − + + = + ⇒   = + = + − ⇒ = + ⇒  = +  = + = + = + − ⇒ − = − ⇒  = ⇒ =     M N M M - A M A M M M M M N N A N M N M N M N M N Notons par D la matrice contenant la diagonale de A et des zéros ailleurs, U la matrice triangulaire supérieure formée par les termes de A situés au-dessus de la diagonale et L la matrice triangulaire inférieure formée par les termes de A situés au-dessous de la diagonale. Alors soient les différentes méthodes itératives linéaires suivantes : Méthode de Jacobi : M=D et N=-(L+U) Méthode de Gauss-Seidel : M=D+L et N=-U Dans les méthodes de Jacobi et de Gauss-Seidel, le passage d’un vecteur xk de la suite au suivant se fait en corrigeant successivement une composante de ce vecteur. Ces corrections s’effectuent en annulant une composante du résidu. b- Les méthodes du gradient : Se sont des méthodes de descente dont le principe est de déterminer un vecteur pk et un scalaire αk tels que : xk+1 = xk + pk αk avec l’objectif de minimiser une fonctionnelle. Dans le cas de la méthode du Gradient Conjugué, il faut que la matrice A soit symétrique, définie positive. Dans ce cas, la solution x est celle qui réalise le minimum de la fonctionnelle J définie par : J (x)=(Ax/x) -2(b/x) En effet J est quadratique, définie positive, elle admet donc un unique minimum obtenu en annulant son gradient ∇J. Or ∇J = 2(Ax-b) = -2r(x) = 2(b-Ax) = 2(A(x-x).
  • 11. N. TLATLI/INAT Programmation numérique Page 11 Algorithme du Gradient Conjugué : 0 0 0 0 0 2 1 1 1 2 2 1 1 * : * : 0 ' k k T k k k k k k k k k k k k k k k k k Initialisation Choisir x Calculer r b x poser p r Itérations k jusqu àconvergence do r p p x x p r r p r r p r p enddo α α α β β + + + + + = − =  =   =  = +  = −   =   = −  A A A
  • 12. N. TLATLI/INAT Programmation numérique Page 12 II : PRISE EN MAIN DE MATLAB 1-Introduction : MatLab est un logiciel de calcul interactif. Il permet de réaliser des simulations numériques basées sur des algorithmes d’analyse numérique. Il peut être utilisé pour la résolution d’équations différentielles, d’équations aux dérivées partielles, de systèmes linéaires … MatLab pour ‘Matrix Laboratory’ est un logiciel conçu pour fournir un environnement de calcul numérique de haut niveau. Il est particulièrement performant pour le calcul matriciel car sa structure de données interne est basée sur les matrices. Il dispose également de grandes capacités graphiques. Son fonctionnement repose sur un langage de programmation interprété qui permet un développement très rapide. Pour des applications nécessitant un temps de calcul élevé, un langage compilé tel que C++ ou Fortran est mieux adapté. L’interface MatLab se compose d’une fenêtre principale divisée en 3 sous-fenêtres : a- En haut à gauche : il y’a une fenêtre contenant 2 onglets : Launch Pad et workspace. L’onglet Launch Pad est visible par défaut, il s’agit d’une interface pour obtenir des informations et des démonstrations sur les composantes de MatLab. Le Workspace permet de gérer les variables misent en jeux par l’utilisateur. b- En bas à gauche : il y’a une fenêtre contenant 2 onglets : Command History et Current Directory. L’onglet Command History est visible par défaut, il indique les dernières commandes effectuées par l’utilisateur. Le Current Directory gère l’emplacement des fichiers. c- Sur la droite il y’a une grande fenêtre Command Window qui est la fenêtre d’interface avec MatLab. La principale caractéristique de la fenêtre de commande sont les caractères >> en début de ligne constituant le prompt de MatLab. C’est après ces caractères que l’utilisateur peut taper les commandes qui seront exécutées par le logiciel après avoir tapé sur la touche entrer. Le résultat de l’exécution s’inscrit alors dans la fenêtre ou bien est représenté graphiquement dans une nouvelle fenêtre spécifique. Pour entrer une suite complexe d’instructions, on les tape au préalable dans un fichier en utilisant l’éditeur intégré. Ce fichier est appelé Script. Une fois le script enregistré on peut l’exécuter en tapant son nom dans la fenêtre de commande. Il est à noter que le historique des instructions entrées depuis le début de la session sur la ligne de commande est accessible par la touche ↑. Si nous voulons que MatLab ignore complètement ce que nous tapons cad ne l’exécute pas et ne l’affiche pas, il faut le faire précéder par le caractère %. Ceci est utile pour commenter les scripts. Utilisation de l’aide en ligne : L’apprentissage du bon maniement de l’aide du logiciel est indispensable. Etant le grand nombre d’instructions utilisables, il est hors de question de mémoriser chacune d’elles avec la syntaxe correspondante. L’aide en ligne permet de retrouver toutes les informations utiles, elle est activée en allant dans le menu Help → MatLab. Une nouvelle fenêtre partagée en 2 s’ouvre : à droite est affichée l’aide demandée, sur la gauche les différentes manières de faire la demande d’aide :
  • 13. N. TLATLI/INAT Programmation numérique Page 13 - Contents : la table de matière de l’aide. En cliquant sur un chapitre de l’arborescence, son contenu est affiché dans la fenêtre de droite. - Index : L’indexe de l’aide en ligne, qui répertorie toutes les commandes MatLab et permet d’accéder à leur mode d’emploi spécifique. - Search : un moteur de recherche dans lequel on peut taper le nom de la commande si on la connait - Favorites : donne la liste des chapitres stockés dans les favoris. Pour ajouter un chapitre dans cette liste, il faut se positionner dessus à partir de contents et cliquer sur le bouton de droite de la souris Une aide importante se présente sous la forme de programmes de démonstration, auxquels on peut y accéder à partir de Contents → Begin, puis en cliquant sur demos dans la sous-fenêtre de droite ou bien en tapant demos directement dans la fenêtre de commande. 2- Types de données : Plusieurs types de données sont disponibles dans MatLab. Les types traditionnels que l’on retrouve dans tous les langages de programmation : les types numériques (single, double, …), caractère char, les tableaux de réels, les types composés : cell, structure, ainsi que les types définis par l’utilisateur comme les fonctions inline. Cependant le type privilégié de MatLab est celui des tableaux à une ou deux dimensions qui correspondent aux vecteurs et aux matrices. a- Vecteurs : Pour définir un vecteur, la syntaxe est l’une des suivantes : >> v=[2 ;3 ;4] ou bien [2 ↵↵↵↵ 3 ↵↵↵↵ 4] %vecteur colonne >> v=[2 ,3 ,4] ou bien [2 3 4] %vecteur ligne Les opérations possibles entre les vecteurs sont celles classiques :+, -. En plus dans MatLab existe les ‘point opérations’ qui se font terme par terme : .+, .-, .*, ./, .^ Un message d’erreur est affiché si une opération impossible est tentée, comme l’addition de 2 vecteurs de taille différente. Pour aller vite on peut définir un vecteur par : v= début :pas :fin. v=linspace(10 v=ones(1,taille de v) % vecteur contenant des 1 v=zeros(1,taille de v) % vecteur contenant des 0 b- Matrices : Les matrices suivent la même syntaxe que les vecteurs à savoir les composants des lignes séparées par des virgules ou des blancs et chaque colonne est séparée de l’autre par un point-virgule ou un retour en ligne. size(A) = [nb de lignes, nb de colonnes] det(A) : déterminant de A inv(A) : inverse de A AB : inv(A)*B A/B : A*inv(B) eye( diag
  • 14. N. TLATLI/INAT Programmation numérique Page 14 III : LES FONCTIONS DEFINIES PAR L’UTILISATEUR Les fonctions sont des enchaînements de commandes MatLab regroupées sous un nom permettant de commander leur exécution. On peut mettre dans une fonction un groupe de commandes destiné à être exécuté plusieurs fois au cours du calcul avec éventuellement des valeurs de paramètres différents. La fonction peut être aussi chargée de réaliser un calcul avec un certain algorithme qui pourrait être éventuellement remplacé par un autre plus rapide ou plus précis, en changeant simplement le nom de la fonction dans le programme appelant. Enfin dés que le programme principal est long et compliqué, il est souhaitable de le découper en fonctions correspondant à des étapes différentes, et ce afin d’améliorer la lisibilité et la compréhension du programme. a- M-files function : Dés que la fonction nécessite plusieurs instructions, il vaut mieux la définir dans un fichier à part à l’aide de l’éditeur de texte de MatLab. De manière générale la syntaxe de définition d’une fonction externe est : function [y1,y2,…,ym] = nom_de_la_fonction(x1,x2,…,xn) Le passage des arguments d’entrée, (x1,x2,…,xn), de la fonction se fait par valeur, donc même si ces paramètres sont changés dans la fonction leur valeur ne sera pas changée dans le programme appelant. Si une des variables de la procédure n’est pas définie à l’intérieur de celle-ci elle doit obligatoirement être fournie en argument d’entrée. La récupération des valeurs calculées par la fonction se fait par les paramètres de sortie yi. Le nom du fichier contenant la fonction doit être le même que celui de la fonction. On peut mettre plusieurs fonctions dans un même M-file, mais seule la fonction portant le même nom que le fichier peut être appelée à partir de la fenêtre de commande ou par une autre fonction ou par un autre script. Les autres fonctions éventuellement stockées dans le fichier peuvent s’appeler entre elles mais ne sont pas visibles de l’extérieur. b- Fonctions inline : Une fonction ne comportant qu’un petit nombre d’instructions peut être définie directement dans la fenêtre de commande de la manière suivante : nom_de_la_fonction = inline(‘instruction MatLab’) Les arguments d’appel de la fonction sont généralement fournis à l’appel dans l’ordre d’apparition dans la définition de la fonction. Comme on peut spécifier ces arguments explicitement dans la définition de la fonction : nom_de_la_fonction = inline(‘instruction MatLab’, ‘x1’,’x2’,…,’xn’) Dans le tableau suivant, nous présentons quelques commandes de contrôle valables dans les fonctions :
  • 15. N. TLATLI/INAT Programmation numérique Page 15 INSTRUCTION DESCRIPTION nargin Nombre d’arguments d’entrée d’une fonction nargout Nombre d’arguments de sortie d’une fonction error Interrompt l’exécution d’une fonction, affiche un message d’erreur et retourne dans le programme appelant warning Affiche un message d’avertissement mais ne retourne pas dans le programme appelant pause Interrompt l’exécution jusqu’à ce que l’utilisateur tape sur ↵ Pause(n) Interrompt l’exécution pendant n secondes Pause off Indique que les pauses rencontrés doivent être ignorées, ce qui permet de faire tourner des script requérant normalement l’intervention de l’utilisateur. break Sort d’une boucle ou arrête l’exécution du programme return Retourne dans le programme appelant sans aller à la fin de la fonction.
  • 16. N. TLATLI/INAT Programmation numérique Page 16 IV : LES BOUCLES On distingue deux manières d’écrire une boucle sous MatLab : a- Les boucles while b- Les boucles for La boucle for parcourt un vecteur d’indices et effectue à chaque pas toutes les instructions délimitées par for et end : compteur= début:pas:fin instructions − −  − − − − for end La boucle for peut parcourir un vecteur (ou une matrice) en prenant comme valeur à chaque pas les éléments (ou les colonnes) successifs. Les bornes ne sont pas nécessairement des entiers et le pas peut être négatif. La boucle while effectue aussi une suite de commandes mais jusqu’à ce qu’une condition n’est plus satisfaite. co n d itio n vraie i n stru ctio n s − −   − −  − −  w h ile en d On peut imbriquer les boucles les unes dans les autres et les interrompre par la commande break.
  • 17. N. TLATLI/INAT Programmation numérique Page 17 V : LES TESTS IF Un test est une alternative entre deux commandes MatLab, ou groupes de commandes, sélectionnées selon le résultat d’un opérateur logique. Sachant que les résultats d’une opération logique est une variable logique ou booléenne qui vaut 1 ou Vrai et 0 ou Faux. Le tableau ci-dessous liste les différents opérateurs logiques : Expression Française Expression MatLab et & ou | non ~ égale == différent ~= + petit que < + grand que > + petit ou égal que <= + grand ou égal que >= MatLab dispose du classique if … else, agrémenté du elseif. La syntaxe étant la suivante : (expression logique) instructions − −  − − − − if end ou bien (expression logique) traitement traitement − −  − − − − − −  − − − − if 1 else 2 end
  • 18. N. TLATLI/INAT Programmation numérique Page 18 (expression logique ) traitement (expression logique ) traitement (expression logique ) traitement ... (expression logique( )) traitement − −  − − − − − −  − − − − − −  − − − − − −  − − − − if 1 1 elseif 2 2 elseif 3 3 elseif n -1 (n -1) e (expression logique( )) traitement − −  − − − − lse n (n) end On a aussi la possibilité d’utiliser la commande switch … case, qui prend la syntaxe suivante :
  • 19. N. TLATLI/INAT Programmation numérique Page 19 VI : LECTURE ET ECRITURE AU CLAVIER ET DANS UN FICHIER Durant un traitement numérique, on peut avoir à lire des données alphanumériques à partir d’un fichier, comme on peut vouloir sauvegarder le résultat d’un calcul pour s’en servir ultérieurement. Pour cela on utilisera les commandes suivantes : dlmread(‘nom_fichier’,’délimiteur’) : lit les données numériques du fichier nom_fichier, chaque nombre étant séparé du suivant par le caractère délimiteur ou par un retour à la ligne. Sachant que la virgule et l’espace sont les délimiteurs par défaut. dlmwrite(‘nom_fichier’,M,’délimiteur’) : écrit M dans le fichier nom_fichier. textread(’nom_fichier’,’format’) : lit les variables avec le format spécifié, jusqu’à épuisement du fichier. Il est à noter que le nombre de variables à lire et le nombre de données dans le fichier doivent correspondre. Un format est une chaîne de caractères spécifiant en lecture :e type de données à lire. Nous distinguons : ‘%d’ type entier ‘%f’ type réel ‘%c’ type caractère fid=open(‘nom_fichier’) : ouvre le fichier nom_fichier [A,count] = fscanf(fid,format,size) : lit le fichier ouvert par open avec le format spécifié. On peut éventuellement spécifier le nombre maximal des données à lire avec le paramètre size et le paramètre de sortie count renvoie le nombre de données effectivement lues. fprintf(‘format’, données) : sert à afficher des données à l’écran avec un format spécifié. Exemple : fprintf(‘a=%f et b=%d’, a, b) résultat : a=1.5 et b=1 Le tableau suivant récapitule ces différentes commandes : dlmread(‘nom’,’delimiteur’ Lecture du fichier nom dlmwrite(‘nom’,M,’delimiteur’) Ecriture de M à partir du fichier M textread(‘nom’,’format’) Lecture du fichier nom fid=open(‘nom’) Ouvre le fichier nom [A,count]=fscanf(fid,’format’) Lecture du fichier ouvert par open fprint(fid,’format’,données) Ecriture des données dans le fichier ouvert par open fprintf(‘format’,données) Ecriture à l’écran
  • 20. N. TLATLI/INAT Programmation numérique Page 20 VII : REPRESENTATION GRAPHIQUE SOUS MATLAB Dans toutes les représentations graphiques, MatLab se base sur des données discrètes rangées dans des matrices ou des vecteu rs colonnes. Par exemple, pour tracer la courbe y=f(x) ou la surface 2D z=f(x,y), les données doivent être des vecteurs pour x et y, ou des matrices pour z, aux dimensions compatibles. On utilise alors l’instruction de dessin correspondante : plot(x,y) qu’on complète par des arguments optionnels tels que la couleur, le type de trait, l’échelle des axes, la légende … La visualisation du résultat s’effectue alors dans une fenêtre graphique avec possibilité de zoom, de rotation, de modifications, d’impression, … Les principales commandes concernant les graphiques d’une manière générale, sont : figure, subplot, hold on, xlabel, grid on, title, … Pour plus d’informations, il faut consulter le help. 1- Graphique 2D : Les principales fonctions pour les graphiques 2D sont : plot, plotyy, loglog, semilogx, semilogy, … Pour plus d’informations, il faut consulter le help. Exercice : Cherchez dans l’aide de Matlab les commandes permettant de : - Sauvegarder des figures, - Ajouter une légende à une figure, - Modifier la police dans une figure, - Modifier les longueurs des axes et ajouter des labels à ces axes. Exercice : Représentez graphiquement la fonction f définie par : f(x)=cos2 (x) x ᴄ [0,5] - Pour tracer, on utilisera 6 points, puis 26 point et enfin 301 points équidistants dans l’intervalle [0,5} - Représentez sur une même figure les fonctions : f(x)=cos2 (x), g(x)=cos(2x) et h(x)=cox(x2 ) pour x ᴄ [0,5] Pour cela on utilisera des symboles différents et on mettra une légende Exercice : Plusieurs sous-figures sur une même figure : - Déclarer les vecteurs : X = [0, π/10,2π/10,3π/10 ,.., 2π], Y1 = sin(X) et Y2=cos(X) - Utiliser la commande subplot(2,1,1) et subplot(2,1,2) pour tracer sur une même figure les sous-figures représentant Y1(X) et Y2(X) l’une au-dessous de l’autre. 2- Courbes en coordonnées polaires : Les courbes en coordonnées polaires sont obtenues par la commande polar. Exercice : Tracer la courbe r=2+2cos(θ) θ ᴄ [π,π] 3- Histogrammes et diagrammes : Les histogrammes sont obtenus par la commande hist. Exercice : Tester les commandes bar, stairs, stem 4- Graphique 3D : Les principales fonctions pour les graphiques 3D sont : plot3, mesh, meshgrid, surf, surfc, ezmesh, ezmeshc, ezsurf, ezsurfc, sphere, cylinder,.. Pour plus d’informations, il faut consulter le help.