Cours Sur Matlab 09 - 10

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 28

‫جـامعـة محمـد األول‬

‫ وجـدة‬- ‫كليـة العـلـوم‬


Université Mohammed Premier
Faculté des Sciences Oujda

INITIATION A MATLAB
FILIERE G.I.
QUATRIEME ANNEE
ANNEE UNIVERSITAIRE 2024-2025

1
Table des matières

1 Introduction…………………………………………………...
5 3
2 Présentation générale………………….……………….……. 3
3 Utilisation de Matlab……………………………….….……. 4
3.1 Démarrage et arrêt de Matlab………….…...…………….…… 4
3.2 Utilisation de l’aide ………………………………………….…. 4

4 Variables, constantes et leurs formats………………...……. 6


4.1 Variables sous Matlab…………………………………….……. 6
4.2 Les constantes…………………………………………….……... 6
4.3 Format de représentation des nombres……………………..… 7
5 Matrices sous Matlab…………………………………...…… 8
5.1 Création en ligne de matrices………………………………...… 8
5.2 Concaténation de matrices…………………………………..…. 9
5.3 Utilisation de raccourcis pour la création de matrices…….…. 9
5.4 Accès aux matrices…………………………………………..….. 10
5.5 Opérations algébriques sur les matrices……………….…….... 11
5.6 Autres opérations sur les matrices………………………...…… 13
6 Polynômes……………………………………………..……… 16
6.1 Polynômes et racines………………………………….…….…... 16
6.2 Evaluation…………………………………………….………….. 17
6.3 Opérations sur les polynômes…………………..….………...…. 18
7 Programmation sous Matlab……………………………..…. 19
7.1 Opérateurs logiques……………………………..…………...….. 19
7.2 Syntaxe de branchement…………………………...……..…….. 19
7.3 Lecture et écriture………………………………...……..….…… 21
7.3.1 Lecture……………………………………………………………..……….. 21
7.3.2 Ecriture………………………………………………………………………. 22
7.4 Scripts et fonctions…………………………………….……..….. 21
7.4.1 Fonctions…………………………………………………………...…………… 22
7.4.2 Scripts……………………………………………………………..……………. 22

8 Représentation graphique sous Matlab…………………….. 25


8.1 Graphes 2D………………………………………...…………….. 25
8.2 Graphes 3D……………………………………..………………... 28

2
1. Introduction
MATLAB (MATrix LABoratory) a été développé en C par la société Mathworks
(http://www.mathworks.com/) pour faire du calcul matriciel élémentaire. Au fil du temps,
MATLAB s’est développé pour devenir un outil puissant pour la programmation et la
visualisation numérique. Il présente l’avantage :
- d’être simple à utiliser : ne nécessite pas une compilation et les variables utilisées sont
déclarées implicitement,
- de contenir une très riche bibliothèque de fonctions dans divers domaines (analyse
numérique, statistique, représentation graphique, …),
- de posséder une interface graphique maniable.
Actuellement, MATLAB est utilisé dans beaucoup de domaines tels que :
- l’algèbre matricielle : résolution numérique des systèmes linéaires et non linéaires ; le
calcul numérique des valeurs et des vecteurs propres des matrices ; …,
- la résolution numérique des équations aux dérivées partielles,
- le traitement du signal et de l’image.
MATLAB peut être utilisé soit en mode en ligne en exécutant des commandes dans une
fenêtre dite d’exécution, soit en mode programmation en utilisant un éditeur pour écrire dans des
fichiers (appelés scripts) un ensemble de commandes. Le mode en ligne permet d’obtenir des
résultats simples et le mode programmation permet de développer des applications très
complexes.

2. Présentation générale
MATLAB est composé de plusieurs modules. Parmi eux on cite :
- matlab : le module de base,
- image : le module de traitement d’images,
- signal : le module de traitement des signaux,
- …..

Le module de base matlab se compose de :


- l’élément de l’environnement de travail appelé général,
- plusieurs éléments du langage matriciel tes que :
1. ops : opérateurs et caractères spéciaux,
2. lang : construction du langage de programmation,
3. datatypes : types de données,
4. ….
- des éléments pour les graphiques tels que :
1. graph2d : graphiques bidimensionnels,
2. graph3d : graphiques tridimensionnels,
3. ….

3
- la bibliothèque de fonctions mathématiques :
1. elmat : matrices élémentaires et manipulation de matrices,
2. matfun : fonctions matricielles, algèbre numérique linéaire,
3. elfun : fonctions mathématiques élémentaires,
4. spcfun : fonctions mathématiques spécialisées,
5. ….

3. Utilisation de Matlab
3.1 Démarrage et arrêt de Matlab
Pour démarrer Matlab il suffit de cliquer deux fois sur la commande Matlab, ainsi la fenêtre
d’exécution s’ouvre (la présence au début de la ligne du symbole >> indique qu’on est dans
l’environnement Matlab (voir figure 1).

Figure1

Pour quitter Matlab, il suffit de sélectionner dans le menu file la commande Exit Matlab ou tout
simplement taper la commande quit ou exit dans la fenêtre d’exécution (>>quit ou >>exit). On peut aussi
quitter Matlab en cliquant sur la croix se trouvant en haut à droite de la fenêtre.
3.2 Utilisation de l’aide
On peut obtenir de l’aide de plusieurs manières.
- help : permet d’obtenir de l’information sur une commande. Pour cela, il suffit de taper
help suivit du nom de la commande. En tapant par exemple >>help exp nous obtenons
toutes les informations sur la fonction exponentielle comme indiqué ci-dessous :
>> help exp
EXP Exponential.
EXP(X) is the exponential of the elements of X, e to the X.
For complex Z=X+i*Y, EXP(Z) = EXP(X)*(COS(Y)+i*SIN(Y)).
See also expm1, log, log10, expm, expint.

4
Overloaded functions or methods (ones with the same name in other
directories)
help fints/exp.m
help xregcovariance/exp.m
help sym/exp.m
Reference page in Help browser
doc exp
- lookfor : si au lieu du nom de la commande on ne dispose que d’un mot-clé, on tape
lookfor suivit du mot-clé pour obtenir toute information ayant un lien avec ce mot-clé.
Ainsi, si on exécute la commande >>lookfor Newton, on obtient toutes les informations
ayant un lien avec le mot Newton comme illustré ci-dessous :
>> lookfor Newton
GNNEW Computes The Gauss-Newton search direction
gnnew_f.m: %GNNEW Computes The Gauss-Newton search direction
gnnew_fp.m: %GNNEW Computes The Gauss-Newton search direction
PREDOPT Executes the Predictive Controller Approximation based on Gauss
Newton.
TRAINBFGC BFGS quasi-Newton backpropagation for use with the NN model
reference adaptive controller.
NND9NM Newton's method demonstration.
TRAINBFG BFGS quasi-Newton backpropagation.
- helpwin : en tapant cette commande une fenêtre regroupant la liste de toutes les
commandes s’ouvre (voir figure 2).

Figure 2
- helpdesk : cette commande permet d’ouvrir un browser où l’on peut rechercher des
informations (moteur de recherche, guide, index, …).

5
4. Variables, constantes et leurs formats
4.1 Variables sous Matlab
Il n’existe sous Matlab qu’un seul type de données qui est le type matrice (matrix). Ainsi, un
nombre est une matrice 11 et une courbe 2D sera tracée à l’aide de deux vecteurs de même
dimension. Il n’est donc pas utile de déclarer le type des variables qu’on manipule. Les noms de
variables sont composés de lettres et de chiffres. Matlab fait la distinction entre minuscules et
majuscules.
Exemples : les instructions suivantes déclarent les variables lors de leur affectation.

>> a=1.34 % a est un réel


a=
1.3400

>> b=2e+03 % b est un réel


b=
2000

>> c=[1,2,3] % c est un vecteur ligne


c= % ‘,’ sert à séparer les éléments d’une ligne
1 2 3

>> d=[1;2;3] % d est un vecteur colonne


d = % ‘ ; ’ s ert à s ép a r er l es él ém ent s d’ un e c ol o nne
1
2
3

>> e=[1, 2;3, 4] % e est une matrice carrée


e=
1 2
3 4
Remarque : les instructions suivies d’un point virgule seront exécutées mais les résultats ne
seront pas affichés.
4.2 Les constantes
Plusieurs constantes sont prédéfinies sous Matlab. Parmi les plus utilisées on cite :
- pi = 3.14159….
- realmin = 2.2251e-308 est le plus petit nombre flottant.
- realmax = 1.7977e+308 est le plus grand nombre flottant.
- eps = 2.2204e-16 est la distance entre deux réels informatiques consécutifs.
- i = j est le nombre complexe égal à 1 .

6
4.3 Format de représentation des nombres
Sous Matlab un nombre peut avoir plusieurs formats d’affichage. Les différents formats
utilisés sont :
- short : un réel est représenté avec 4 chiffres après la virgule (c’est le format par défaut).
- long : un réel est représenté avec 14 chiffres après la virgule.
- short e : un réel est représenté en notation scientifique avec 4 chiffres après la virgule.
- long e : un réel est représenté en notation scientifique avec 14 chiffres après la virgule.
- rat : un réel est représenté sous forme rationnel (a/b).
Exemples : on donne les différentes représentations du nombre  . Pour cela il suffit comme le
monte les exemples ci-dessous de taper format suivit du nom du format désiré puis de taper pi.
>> pi
ans =
3.1416 % par défaut le format est short.

>> format long


>> pi
ans =
3.14159265358979

>> format short e


>> pi
ans =
3.1416e+000

>> format long e

>> pi
ans =
3.141592653589793e+000

>> format rat

>> pi
ans =
355/113
Remarque : Matlab met à la disposition de ses utilisateurs des fonctions permettant d’avoir des
informations sur les variables utilisées. En effet, la commande
- who : renvoie le nom des variables en cours.
- whos : affiche le nom des variables en cours avec des informations sur leur taille, leur
classe et le nombre de bytes occupées.
- clear var : permet d’effacer la variable var de la mémoire.
- clear all : efface toutes les variables de la mémoire.
- clc : nettoie la fenêtre d’exécution.

7
5. Matrices sous Matlab
5.1 Création en ligne de matrices
Les matrices sont crées sans déclaration de leur type ou de leur dimension. En effet, pour
créer une matrice il suffit de :
- ouvrir par ‘[‘,
- séparer les coefficients d’une ligne par une virgule ou un espace,
- séparer deux lignes par un point virgule ou en exécutant la commande entrée,
- fermer par ‘]’.
Exemple : dans l’exemple ci-dessous on va créer la même matrice de plusieurs manières :
>> A=[1 2 3;4 5 6]
A=
1 2 3
4 5 6
>> A=[1, 2, 3;4, 5, 6]
A=
1 2 3
4 5 6
>> A=[1 2 3
4 5 6]
A=
1 2 3
4 5 6
>> A=[1, 2, 3
4, 5, 6]
A=
1 2 3
4 5 6
De même, un vecteur ligne ou colonne peut être créé de plusieurs manières.
>> b=[5 6 7]
b=
5 6 7

>> b=[5, 6, 7]
b=
5 6 7

>> c=[8;9]
c=
8
9
>> c=[8
9]
c=
8
9

8
5.2 Concaténation de matrices

Sous Matlab, il est possible de concaténer (rassembler) deux matrices pour avoir une seule
matrice à condition de respecter les dimensions. En effet, il est possible de concaténer dans
l’exemple précédent le vecteur b avec la matrice A en tant que ligne mais pas en tant que
colonne.

>> [A ;b]
ans =
1 2 3
4 5 6
5 6 7

>> [A, b]
??? Error using ==> horzcat
All matrices on a row in the bracketed expression must have the same number of rows.

Alors qu’il est possible de concaténer le vecteur c avec la matrice A en tant que colonne mais pas
en tant que ligne.

>> [A c]
ans =
1 2 3 8
4 5 6 9

>> [A ; c]
??? Error using ==> vertcat
All rows in the bracketed expression must have the same number of columns.

5.3 Utilisation de raccourcis pour la création de matrices

On peut se servir de raccourcis pour créer des matrices.


- L’instruction >>[n :k:m] (ou >>(n :k:m) ou >>n :k:m) permet de créer le vecteur ligne
(n,n+k, n+2k, n+3k, …, n+hk) où l’entier h vérifie n+hk ≤ m < n+(h+1)k. En
l’absence de l’entier k, il est pris égal à 1 par défaut.

Exemple :
>> d=[1:2:10]
d=
1 3 5 7 9

>> g=[1:2:10;-2:3:12]
g=
1 3 5 7 9
-2 1 4 7 10

>> f=[-4:1]
f=
-4 -3 -2 -1 0 1

9
- Des matrices particulières peuvent être crées à l’aide des instructions suivantes :
 eye(n) = crée la matrice identité de taille n.
 zeros(n,m) = crée la matrice de taille nm dont les éléments sont tous égaux à 0.
Si n=m alors on peut se limiter à la déclaration zeros(n).
 ones(n,m) = crée la matrice de taille nm dont les éléments sont tous égaux à 1.
Si n=m alors on peut se limiter à la déclaration ones(n).
Exemple :
>> A=eye(3)
A=
1 0 0
0 1 0
0 0 1
>> B=zeros(2,3)
B=
0 0 0
0 0 0
>> C=zeros(2)
C=
0 0
0 0
>> E=ones(3,2)
E=
1 1
1 1
1 1
>> F=ones(3)
F=
1 1 1
1 1 1
1 1 1
5.4 Accès aux matrices
On peut accéder à des informations sur une matrice A en utilisant l’une des instructions
suivantes :
- A(i,j) = renvoie le coefficient Aij de la ième ligne et la jème colonne de A.
- A(i1:i2, j1 :j2) = renvoie le sous bloc de A formé par les lignes entre i1 et i2 et les
colonnes entre j1 et j2.
- A(i1:i2, :) = renvoie les lignes entre i1 et i2 de A. Si i1 = i2 alors on peut se limiter à la
déclaration de A(i1, : ).
- A( : ,j1 :j2) = renvoie les colonnes entre j1 et j2 de A. Si j1 = j2 alors on peut se limiter
à la déclaration de A ( :,j1).
- A(k) = renvoie le kème élément de A. Il est à noter que Matlab ordonne les coefficients
d’une matrice de haut en bat et de gauche à droite.

11
Exemple :
>> A=[1 2 3;4 5 6;7 8 9;10 11 12]
A=
1 2 3
4 5 6
7 8 9
10 11 12
>> A(2,3)
ans =
6
>>A(2:4,2:3)
ans =
5 6
8 9
11 12
>> A(2:3,:)
ans =
4 5 6
7 8 9
>> A(:,1:2)
ans =
1 2
4 5
7 8
10 11
>> A(:,2)
ans =
2
5
8
11
>> A(8)
ans =
11
5.5 Opérations algébriques sur les matrices
Etant donné deux matrices A et B, les opérations algébriques ci-dessous peuvent être
appliquées sur ces matrices dès que leur tailles le permettent.
- C = A+B : est la matrice somme de A et B (Cij = Aij+ Bij).
- D = A*B : est la matrice produit de A et B ( C ij   Aik Bkj ).
k

- E = A.*B : est la matrice produit élément par élément (Eij = AijBij).


- F = A\B : est la matrice A-1B (c’est la solution du système linéaire A*F=B).
- G = A/B : est la matrice AB-1 (c’est la solution du système linéaire G*B=A).

11
- H = A./B : est la matrice quotient élément par élément (Hij = Aij /Bij).
- J = A^n : est la matrice puissance An.
- K = A.^n : est la matrice puissance élément par élément (Kij = Aijn).

Exemple :

>> A1=[1,2;3,4]
A1 =
1 2
3 4
>> A2=[-1 0;1 2]
A2 =
-1 0
1 2
>> B1=[1,0,3;-1,1,1]
B1 =
1 0 3
-1 1 1
>> B2=[0;-1]
B2 =
0
-1
>> C=A1+A2
C=
0 2
4 6
>> D=A1*B1
D=
-1 2 5
-1 4 13
>> E=A1.*A2
E=
-1 0
3 8
>> F=A1\B2
F=
-1.0000
0.5000
>> G=A1/A2
G=
0 1
-1 2

12
>> H=A1./A2
Warning: Divide by zero.
H=
-1 Inf
3 2

>> J=A1^2
J=
7 10
15 22

>> K=A1.^2
K=
1 4
9 16
5.6 Autres opérations sur les matrices
Nous donnons ci-dessous les principales opérations qu’on peut effectuer sur les matrices.
Etant donnée une matrice A, un vecteur v et une fonction f (telle que la fonction cosinus,
tangente ou exponentielle), on a :
- size(A) = la taille de la matrice A.
- length(A) = le maximum entre le nombre de colonnes et le nombre de lignes de la
matrice A.
- A’ = la matrice conjuguée de A ( c’est la matrice transposée de A si A est réelle).
- det(A) = le déterminant de la matrice A.
- trace(A) = la trace de la matrice A.
- rank(A) = le rang de la matrice A.
- inv(A) = la matrice inverse de A. On peut aussi déclarer A^-1.
- poly(A) = la liste des coefficients du polynôme caractéristique de A.
- V=eig(A) : V est le vecteur formé des valeurs propres de la matrice A.
- [U,V]=eig(A) : V est la matrice diagonale dont les éléments de la diagonale sont les
valeurs propres de la matrice A, et U est la matrice dont les colonnes sont les vecteurs
propres associés.
- norm(A) = la norme euclidienne de la matrice A.
- diag(A) = extrait la diagonale de la matrice A.
- diag(v) = renvoie la matrice diagonale dont les éléments de la diagonale sont ceux du
vecteur v.
- diag(v,1) = renvoie la matrice dont les éléments de la diagonale secondaire au dessus de
la diagonale principale sont ceux du vecteur v.
- diag(v,-1) = renvoie la matrice dont les éléments de la diagonale secondaire au dessous de
la diagonale principale sont ceux du vecteur v.
- triu(A) = renvoie la partie supérieure de la matrice A.
- tril(A) = renvoie la partie inférieure de la matrice A.

13
- sum(A) = le vecteur formé par la somme des éléments de chaque colonne de A.
- prod(A) = le vecteur formé par le produit des éléments de chaque colonne de A.
- max(A) = le vecteur formé par la valeur maximale de chaque colonne de A.
- min(A) = le vecteur formé par la valeur minimale de chaque colonne de A.
- f(A) = la matrice formée par les f(Aij).

Exemple :

>> A=[1 0;2 2]


A=
1 0
2 2

>> size(A)
ans =
2 2

>> length(A)
ans =
2

>> A'
ans =
1 2
0 2

>> det(A)
ans =
2

>> trace(A)
ans =
3

>> rank(A)
ans =
2

>> inv(A)
ans =
1.0000 0
-1.0000 0.5000

>> A^-1
ans =
1.0000 0
-1.0000 0.5000

14
>> poly(A)
ans =
1 -3 2 % ainsi PA(x) = x2-3x+2

>> eig(A)
ans =
2
1

>> [U,V]=eig(A)
U=
0 0.4472
1.0000 -0.8944
V=
2 0
0 1

>> norm(A)
ans =
2.9208

>> diag(A)
ans =
1
2

>> v=[1 -4]


v=
1 -4

>> diag(v)
ans =
1 0
0 -4

>> diag(v,1)
ans =
0 1 0
0 0 -4
0 0 0

>> diag(v,-1)
ans =
0 0 0
1 0 0
0 -4 0

>> triu(A)
ans =
1 0

15
0 2

>> tril(A)
ans =
1 0
2 2

>> sum(A)
ans =
3 2

>> prod(A)
ans =
2 0

>> max(A)
ans =
2 2

>> min(A)
ans =
1 0

>> exp(A)
ans =
2.7183 1.0000
7.3891 7.3891

>> sin(A)
ans =
0.8415 0
0.9093 0.9093

6 Polynômes
Les polynômes sont traités comme des vecteurs de coefficients dans Matlab. Ainsi
l’expression polynomiale y(x)=2x3 +6x2+12 sera représentée par le vecteur y = [2 6 0 12].

6.1 Polynômes et racines


Il est possible de trouver avec Matlab
 les racines du polynôme, étant donné qu'on connaît l'équation.
 l'équation polynomiale en connaissant les racines.
En effet,
 roots(p) : calcul les racines du polynôme p.
 si A est une matrice
poly(A) : calcule le polynôme caractéristique de la matrice A.
 Si A est un vecteur
poly(A) : calcule le polynômes dont les racines sont les composantes de A.

16
Exemple :

>> p=[1 -2 -1 2]
p=
1 -2 -1 2

>> roots(p)
ans =
-1.0000
2.0000
1.0000

>> A=[1 2 3;-1 0 5;2 -2 4]


A=
1 2 3
-1 0 5
2 -2 4

>> poly(A)
ans =
1.0000 -5.0000 10.0000 -44.0000 % ainsi pA(x) =x3-5x2+10x-44

>> A=[-1 2 1]
A=
-1 2 1

>> poly(A)
ans =
1 -2 -1 2

6.2 Evaluation
Pour évaluer la valeur d’un polynôme en plusieurs points, on utilise les
commandes suivantes :
 polyval(p,a) : évalue la valeur du polynôme p en chaque coefficient de a.
 polyvalm(p,A) : calcule pour la matrice carrée A la valeur du polynôme matricielle.

Exemple :

>> p=[-1 2 -4 3]
p=
-1 2 -4 3
>> polyval(p,0)
ans =
3
>> polyval(p,1)
ans =
0

17
>> A=[1 2 3;-1 0 5;2 -2 4]
A=
1 2 3
-1 0 5
2 -2 4

>> polyvalm(p,A)
ans =
-50 24 -57
-33 -5 -21
-24 0 -53

6.3 Opérations sur les polynômes


Etant donné deux polynômes p et q, on a :
 conv(p,q) : produit des polynômes p et q.
 deconv(p,q) : le polynôme obtenu de la division de p par q.
 [h,r]=deconv(p,q) : h est le polynôme obtenu de la division de p par q et r est le reste de
la division.
 polyder(p) : calcule les coefficients du polynôme dérivé p’ de p

Exemple :

>> p=[-1 2 -4 3]
p=
-1 2 -4 3

>> q=[1 0 2]
q=
1 0 2

>> conv(p,q)
ans =
-1 2 -6 7 -8 6

>> deconv(p,q)
ans =
-1 2

>> [h,r]=deconv(p,q)
h=
-1 2
r=
0 0 -2 -1

>> polyder(p)
ans =
-3 4 -4

18
7 Programmation sous Matlab
Comme pour la plus part des logiciels de programmation, Matlab utilise une syntaxe dont
nous allons donner les éléments les plus utilisés.

7.1 Opérateurs logiques


Nous donnons ci-dessous les principaux opérateurs logiques utiles pour la programmation.
- == : égal à,
- ~= : différent de,
- < : strictement inférieur à,
- <= : inférieur ou égal à,
- > : strictement supérieur à,
- >= : supérieur ou égal à,
- & : et logique,
- | : ou logique,
- ~ : non logique,
- xor : ou exclusif logique.
7.2 Syntaxe de branchement
 Instruction conditionnelle if : permet d’exécuter un groupe d’instructions si la
condition après l’instruction if est vraie. La syntaxe est la suivante :
If (condition logique1)
Instructions 1
elseif (condition logique 2)
Instructions 2

else
Instructions p
end
On peut omettre les parenthèses autour des conditions logiques.
Exemple : Etant donnée l’équation ax2 + bx + c = 0, le nombre de racines réelles dépend du
signe de delta=b2 – 4ac.

>> a=1;b=1;c=-2;
>> delta=b^2-4*a*c;
>> if (delta < 0)
('pas de solutions réelles')
elseif (delta==0)
('une solution réelle double')
else
('deux solutions réelles distinctes')
end

19
ans =
deux solutions distinctes

>> a=1;b=1;c=2;
>> delta=b^2-4*a*c;
>> ans =
pas de solutions réelles
 La boucle for : permet de répéter un certain nombre de fois fixé à l’avance une
instruction structurée. Sa syntaxe est la suivante :
for variable = valeur de début : pas : valeur de fin
instructions ;
end

Exemple : calculer la tangente des entiers entre 1 et 5.


>> for i=1:5
x(i)=tan(i)
end
x=
1.5574 -2.1850 -0.1425 1.1578 -3.3805
 La boucle répétitive while : est utilisée lorsqu’on répète une instruction structurée sans
s a v o i r à l ’ a v a n c e q u a n d o n d o i t a r r ê t e r . La s yn t a x e e s t l a s u i v a n t e :
while (condition logique)
instructions ;
end
 l’instruction break : permet d’arrêter l’exécution à l’intérieur des boucles for et while.

Exemple : Etant donné les trente premiers entiers placés d’une manière aléatoire dans un
vecteur v, on chercher la position du nombre 10 dans ce vecteur.
>> x=randperm(30) % génère une permutation aléatoire des 30 premiers
entiers
x = 5 30 24 14 18 3 26 28 1 22 11 20 2 25 6
4 17 12 29 7 21 10 9 13 27 19 16 15 23 8
>> i=length(x); while x(i)~=10 % i est la taille du vecteur x
i=i-1;
end; i
i=
22

21
7.3 Lecture et écriture
En mode programmation, toute instruction non terminée par un `;` génère l’affichage
d’un résultat lors de l’exécution du programme dans la fenêtre d’exécution. L’affichage d’un
résultat ne doit se faire que pour les résultats finaux ou pour détecter des erreurs. Ainsi, il faut
prendre garde de taper le `;` à la fin de chaque instruction.

7.3.1 Lecture
Il est possible de lire de deux manières les données nécessaires pour l’exécution. Soit en
demandant à l’utilisateur de fournir les données pendant l’exécution en utilisant la commande
input, soit en lisant ces données dans un fichier de données en utilisant la commande fscanf. La
syntaxe de la commande input est la suivante :
data=input(‘donner la valeurde data’) ;
En ce qui concerne la commande fscanf, vous pouvez exécuter dans la fenêtre
d’exécution la commande help fscanf pour avoir les informations concernant son utilisation.

7.3.2 Ecriture
La commande standard d’écriture dans la fenêtre d’exécution est fprintf . Elle a la
syntaxe suivante :
fprintf(format,var1,var2,…)
où format est une chaîne de caractères décrivant le format d’écriture des variables var1, vra2, …
qu’on voudrait afficher. Les types de formats les plus utilisés sont :
- %d : entier %3d : entier de taille 3, par exemple 854
- %f : réel %3.2f : réel de taille 3 avec 2 chiffres après la
virgule, par exemple 21.22
- %e : exponentiel %10.3e : nombre de la forme 1.231e+04
- %s : chaîne de caractères

On pourra utiliser l’opérateur \n pour passer à la ligne et %% pour écrire %.


Exemple :
>> fprintf('(1/e^10) vaut %10.6f \n', exp(1)^-10);
(1/e^10) vaut 0.000045

>> fprintf('(1/e^10) vaut %10.5e \n', exp(1)^-10);


(1/e^10) vaut 4.53999e-005

>> fprintf('je veut afficher %% \n');


je veut afficher %

7.4 Scripts et fonctions


Il existe sous Matlab plusieurs fonctions prédéfinies. Cependant, il est possible de créer sa
propre fonction en écrivant à l’aide d’un éditeur intégré une suite de commandes. Le fichier
regroupant ces commandes est par la suite sauvé sous un nom suivit de l’extension .m (m-files),
puis exécuté dans la fenêtre d’exécution en tapant le nom du fichier sans l’extension .m. Il est à
signaler que ces fichiers sont exécutés séquentiellement. Il existe deux types de fichiers : les
fonctions et les scripts.

21
7.4.1 Fonctions
Une fonction est une suite de commandes dont la syntaxe de la première commande a la
forme suivante :
function [S1,S2,…] = nom_fonction (E1,E2,..)
Le reste des instructions constituent celles qui seront exécutées lors de l’appel de la fonction dans
la fenêtre d’exécution. Les variables S1, S2, … sont les arguments de sortie et les variables E1,
E2, .. sont les arguments d’entrée. Pour exécuter cette fonction, il suffit de taper dans la fenêtre
d’exécution son nom suivit des valeurs des entrées E1, E2,…. La touche % permet d’ajouter des
commentaires et les instructions se trouvant sur la même ligne après cette touche sont ignorées
pendant l’exécution.
Exemple : Nous donnons ci-dessous une fonction qui calcule le carré d’une matrice de taille n et
dont tous les coefficients sont égaux à 1.
function [B] = carre_un(n)
B=ones(n) ; % crée la martice des 1 de taille n
B=B^2 ; % calcule le carrée de B
Si on sauve cette fonction sous le nom carre_un, alors en tapant dans la fenêtre
d’exécution l’instruction suivante :
>> carre_un(3)
on obtient
ans =
3 3 3
3 3 3
3 3 3

On peut écrire cette fonction d’une manière différente. En effet, la fonction ci-dessous permet de
calculer ces matrices.
function [B] = carre_un
n=input(‘donner la valeur de n :’)
B=ones(n) ; % crée la martice des 1 de taille n
B=B^2 ; % calcule le carrée de B
7.4.2 Scripts
Un script est une suite de commandes qui peuvent faire appel à des fonctions définies
précédemment. Il permet d’écrire des programmes d’une manière lisible en les découpant en des
parties indépendantes sous formes de fonctions puis réunir ces fonctions dans un script.

Exemple : Pour résoudre dans R l’équation de deuxième degré ax2 + bx + c = 0, on peut


distinguer trois étapes.
- Première étape : lire les entrées a, b et c.
- Deuxième étape : résoudre l’équation en étudiant son discriminant.
- Troisième étape : écrire les résultats.
Dans la suite, nous allons donner trois fonctions correspondantes à ces trois étapes, puis
réunir ces fonctions dans un script.

22
% Cette fonction permet de lire les valeurs des coefficients a, b et c.
function [a,b,c] = lire
fprintf('entrer les valeurs des coefficients a, b et c \n');
a=input('a= ');
b=input('b= ');
c=input('c= ');

% Cette fonction donne le nombre de solutions de l’équation et leur valeur à partir des
% coefficients a, b et c.

function [nbre_solu,x]=resoudre(a,b,c)
if (a==0)
if(b==0)
if(c==0)
nbre_solu=100; % tout réel est solution
x=[];
else
nbre_solu=-1;
x=[]; % pas de solution
end
else
nbre_solu=1; % une solution unique
x=-c/b;
end
else
delta=b^2-4*a*c;
if (delta > 0)
nbre_solu=2; % deux solutions distinctes
x(1)=(-b-sqrt(delta))/2*a;
x(2)=(-b+sqrt(delta))/2*a;
elseif (delta == 0)
nbre_solu=1;
x(1)=-b/2*a;
x(2)=x(1); % une solution double
else
nbre_solu=0;
x=[]; % pas de solution réelle
end
end

23
% Cette fonction permet d’afficher les résultats selon les différents cas.

function ecrire=ercrire(nbre_solu,x)
if (nbre_solu==-1)
fprintf('pas de solution \n')
elseif (nbre_solu==0)
fprintf('pas de solution réelle \n')
elseif (nbre_solu==100)
fprintf('tout réel est solution \n')
elseif (nbre_solu==1)
fprintf('une seule solution réelle : ')
fprintf('x = %f \n' , x(1))
elseif (nbre_solu==2)
fprintf('deux solutions réelles distinctes : \n')
fprintf('x(1) = %f \n' , x(1))
fprintf('x(2) = %f \n' , x(2))
end
% Ce script permet de donner les solutions à partir des coefficients a, b et c
% en utilisant les fonctions définies ci-dessus.

[a,b,c]=lire;
[nbre_solu,x]=resoudre(a,b,c) ;
ercrire(nbre_solu,x)

En sauvant ces fonctions et ce script respectivement sous les noms ecrire, resoudre, lire
et principal, puis en tapant le nom du script principal dans la fenêtre d’exécution, on obtient :

>> principal
entrer les valeurs des coefficients a, b et c
a= 2
b= 1
c= 1
pas de solution réelle

>> principal
entrer les valeurs des coefficients a, b et c
a= 1
b= -2
c= 1
une seule solution réelle : x = 1.000000
>> principal

entrer les valeurs des coefficients a, b et c


a= 1
b= 5
c= 2

24
deux solutions réelles distinctes :
x1 = -4.561553
x2 = -0.438447

8 Représentation graphique sous Matlab


Matlab possède une interface graphique complète permettant d’avoir des graphes en 2D
(dimension 2) et en 3D (dimension 3). Nous allons présenter ci-dessous ses principales
fonctionnalités graphiques.

8.1 Graphes 2D
- plot : cette commande permet de donner les graphes des fonctions en deux
dimensions. Sa syntaxe est :
plot(x,y)
où x est le vecteur des abscisses et y est le vecteur des ordonnés (donc y(i) est l’image de
x(i)). Naturellement, les vecteurs x et y sont de même taille.

Il faut signaler que Matlab attribut par défaut aux graphes la couleur bleu. Si on désire
changer la couleur de la courbe, il suffit de spécifier la couleur désirée entre deux quottes. De
même, on peut modifier le style des points ou celui du trait en précisant entre deux quottes les
choix désirés. Dans le tableau ci-dessous, nous donnons les principaux codes relatifs aux choix
des couleurs, des styles de points et ceux des traits.

Code couleur associée code style de points Code style de trait


associé associé
B bleue (blue) . point : Pointillé
L
G a verte (green) o cercle -. tirés-points
K noire (black) x croit - Tirés
s
R y rouge (red) * étoile -- long tirés
W blanche (white) s carrée (square)
L
Y a jaune (yellow) d diamant

syntaxe suivante donne un exemple :


plot(x,y,’r :’) % la courbe de couleur rouge sera tracée en pointillés.
- title : cette commande permet de donner un titre au graphe. Sa syntaxe est :
title(‘le titre désiré’)

Exemple : On désire tracer la courbe de la fonction xcos(x) sur l’intervalle [0,20] en utilisant 101
points uniformément répartis sur [0,20]. Alors en exécutant les instructions suivantes :
x=0 : 20/100 : 20 ; % partition de l’intervalle [0,20] en 101 points.
y=x.*cos(x);
plot(x,y,’k :’);
title(‘Graphe de la fonction xcos(x) sur l’intervalle [0,20]’).

25
On obtient la figure suivante :
Graphe de la fonction xcos(x) sur l’intervalle [0,20]
20

15

10

-5

-10

-15

-20
0 2 4 6 8 10 12 14 16 18 20

- hold on : cette commande permet de superposer les courbes de plusieurs fonctions sur
le même graphe. Pour désactiver ce mode, il faut taper l’instruction hold off. Sa
syntaxe est la suivante :
plot(x,y)
hold on
plot(x,z)
hold on

hold off

On peut superposer plusieurs figures sur le même graphe sans utiliser l’instruction
hold on. En effet, l’instruction
plot(x,y,x,z,x,t) ;
permet de tracer les courbes des fonctions y(x), z(x) et t(x) sur le même graphe.

- legend : elle est utile pour distinguer les différentes figures superposées sur le même
graphe. Pour cela, il faut indiquer une chaîne de caractères associée à chaque fonction
comme le montre la syntaxe suivante :
legend(‘'la fonction y','la fonction z','la fonction t');
Cette instruction va donner lieu à l’affichage d’un cadre spécifiant le style de chacune
des trois fonctions y, z et t.
- xlabel : permet d’afficher un titre pour l’axe des x.
- ylabel : permet d’afficher un titre pour l’axe des y.

Exemple : On désire superposer les graphes des fonctions y(x)=xcos(x), z(x)=x et t(x) = -x sur
l’intervalle [0,20]. Pour cela, nous allons utiliser une partition uniforme de l’intervalle [0,20]
formée par 101 points. Ainsi, en exécutant l’un des deux scripts équivalents suivants :

26
x=0:0.2:20;
y=x.*cos(x);
plot(x,y,x,-x,x,x);
legend('y=xcos(x)','y=-x','y=x');
title('graphes des fonctions y(x)=xsin(x), z(x)=x etty(x)=-x');
xlabel('axe des x');
ylabel('axe des y');
ou bien
x=0:0.2:20;
y=x.*cos(x);
plot(x,y);
hold on;
plot(x,x,':');
hold on;
plot(x,-x,'-.');
hold on
legend('y=xcos(x)','y=x','y=-x');
title('graphes des fonctions y(x)=xsin(x), z(x)=x et t(x)=-x');
xlabel('axe des x');
ylabel('axe des y');

on obtient la figure suivante :

graphes des fonctions y(x)=xcos(x), z(x)=x et t(x)=-x


20
la fonction y
15 la fonction z
la fonction t
10

5
axe des y

-5

-10

-15

-20
0 2 4 6 8 10 12 14 16 18 20
axe des x

27
8.2 Graphes 3D
- meshgrid : génère à partir de deux subdivisions x et y une grille rectangulaire dont les
sommets sont les points (xi,yj) où x=(xi)i et y(yj)j.
- surf : cette commande permet de donner les graphes des fonctions en dimension 3D.
Sa syntaxe est :
surf(x,y,z)
où (x,y) est la subdivision et z est la matrice formée des images des points (xi,yj).

Exemple : On désire tracer la surface définie par la fonction z(x,y)=xcos(xy) sur le domaine
rectangulaire I= [-2,1][0,3]. Pour cela, nous allons utiliser une partition rectangulaire du
domaine I avec un pas égal à 0.05 pour l’axe des x et égal à 0.1 pour l’axe des y. Ainsi, en
exécutant le script suivant :

[x,y]=meshgrid(-2:0.05:2,0:0.1:4);
z=x.*cos(x.*y);
surf(x,y,z)
title('graphe de la fonction z(x,y)=xcos(xy)');
xlabel('axe des x');
ylabel('axe des y');
zlabel('axe des z');

on obtient la figure suivante :

graphe de la fonction z(x,y)=xcos(xy)

1
axe des z

-1

-2
4
3 2
2 1
0
1 -1
0 -2
axe des y axe des x

28

Vous aimerez peut-être aussi