Académique Documents
Professionnel Documents
Culture Documents
UE Méthodologique : INFORMATIQUE 3
Support de cours et Travaux pratiques
1
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3) 2021/2022
I/ Introduction
MatLab est un système interactif de programmation scientifique, pour le calcul
numérique et la visualisation graphique. Développé à l'origine pour le calcul matriciel
(MatLab = Matrix Laboratoryl), il offre aujourd'hui bien d'autres possibilités. Il
contient des bibliothèques spécialisées (toolbox) qui répondent à des besoins
spécifiques : analyse numérique, traitement du signal, traitement d'image, etc.
(http://www.mathworks.com)
tout simplement cliquez sur l’icône sur le bureau. Une fenêtre appelée
MATLAB, s’ouvre :
2 3
La fenêtre MATLAB
Elle contient :
2
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3) 2021/2022
Exemple
>> x = 2
>> x = 2;
- L'exécution peut être arrêtée par l'utilisation des touches Ctrl et C en même
temps.
- Pour rappeler des commandes précédentes, 2 possibilités :
3
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3) 2021/2022
- Pour libérer de l'espace mémoire on peut éliminer une variable par clear
nom_de_la_variable ou bien clear all pour libérer tout l'espace mémoire.
Exemple
>> clear x
>> who
>> clear all
>> who
Remarque :
Exemple
4
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3) 2021/2022
>> 3+5*2^5/5
>> (3+5*2^5)/5
>> (3+5*2^5)/5 ;
>> x = 4
>> y = x^5
>> y/x
>> z = 3*ans, ans, z = 4*z
Pour les autres opérations sur les complexes voir l’aide en ligne ou le résumé des
commandes de MatLab fournis à part.
== : égal à (x == y)
> : strictement plus grand que (x > y)
< : strictement plus petit que (x < y)
>= : plus grand ou égal à (x >= y)
5
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3) 2021/2022
>>a&c
>>a&b
>>b&d
>>b&a
>>a|c
>>a|b
>>b|d
>>b|a
>> ~a
>> ~b
>> ~b|a
>> ~(b|a)
6
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3) 2021/2022
Attention : ces variables ne sont pas protégées, donc si vous les affectez, elles ne
gardent pas leur valeur. C’est souvent le problème pour i et j que l’on utilise souvent
spontanément comme indices de boucles, de telle sorte qu’on ne peut plus ensuite
définir de complexe.
7
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3) 2021/2022
Exercice 01
1. Tapez x=16 et y=x-3 sur une seule ligne avec affichage des résultats.
2. Tapez z=x+y sans afficher le résultat.
3. Tapez z1=z+1+2+3+4+5+6+…
+7+8+9+10, affichez le résultat.
4. Tapez x1=0 et x2=1/x1 ensuite x3=x1*x2/2 avec affichage des résultats,
commenter.
5. Affichez les détails des variables actives.
6. Effacez les variables x1 et x2 puis affichez les variables actives.
Exercice 02
Exercice 03
Tout polynôme peut s'écrire sous la forme d'un vecteur ligne contenant les
coefficients du polynôme rangés par puissance décroissante.
polyval(P,3)
root(P)
8
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3) 2021/2022
I/ LES VECTEURS
I.1/ Définir un vecteur
On définit un vecteur ligne en donnant la liste de ses éléments entre crochets [ ].
Les éléments sont séparés au choix par des espaces ou par des virgules. On définit un
vecteur colonne en donnant la liste de ses éléments séparés au choix par des points
virgules ( ; ) ou par des retours chariots (touche Entrée).
I.2/ Opérations portant sur les vecteurs
Une particularité de MATLAB est de permettre d'effectuer des opérations de
manière globale sur les éléments d'un vecteur de type réel ou complexe sans avoir à
manipuler directement ses éléments :
Si K est une variable scalaire et X un vecteur, K*X multiplie tous les éléments
de X par K.
Si X et Y sont des vecteurs de longueur identique, Z =X ± Y définit le vecteur Z
dont les éléments sont Z(i) =X(i) ± Y(i).
Le produit des éléments des 2 vecteurs X et Y s'obtient par: Z=X.*Y
Le quotient est donné par Z=X./Y
Exemple
>> X= [1 2 3];
>> K=5;
>> K*X
ans = 5 10 15
>> Y= [4 5 6];
>> Z=X+Y
Z= 5 7 9
>> Z=X-Y
Z = -3 -3 -3
>> Z=X.*Y
Z = 4 10 18
>> Z=X./Y
Z = 0.2500 0.4000 0.5000
9
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3) 2021/2022
>> x = 1.1:0.4:2
x = 1.1000 1.5000 1.9000
Remarques
On peut obtenir la longueur d’un vecteur donné (cad le nombre d'éléments d'un
vecteur) grâce à la commande length.
La commande linspace permet de définir un vecteur x de longueur N dont les
composantes forment une suite arithmétique de premier terme a et de dernier
terme b (donc de pas h=(b-a)/(N-1)). Les composantes du vecteur sont donc
linéairement espacées.
10
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3) 2021/2022
Les commandes ones, zeros et rand permettent de définir des vecteurs dont les éléments
ont respectivement pour valeurs 0, 1 et des nombres générés de manière aléatoire.
ones(1,n) : vecteur ligne de longueur n dont tous les éléments valent 1
ones(m,1) : vecteur colonne de longueur m dont tous les éléments valent 1
zeros(1,n) : vecteur ligne de longueur n dont tous les éléments valent 0
zeros(m,1) : vecteur colonne de longueur m dont tous les éléments valent 0
rand(1,n) : vecteur ligne de longueur n dont les éléments sont générés de manière
aléatoire entre 0 et 1
rand(m,1) : vecteur colonne de longueur m dont les éléments sont générés de manière
aléatoire entre 0 et 1
11
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3) 2021/2022
Cette matrice peut être écrite en MATLAB avec une des syntaxes suivantes :
>> 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 = [1,2,3,4
5,6,7,8
9,10,11,12] ;
>> A=[[1;5;9] , [2;6;10] , [3;7;11] , [4;8;12]] ;
Remarques
Le nombre d’éléments dans chaque ligne (nombre de colonnes) doit être identique
dans toutes les lignes de la matrice, sinon une erreur sera signalée par MATLAB. Par
exemple :
>> X = [1 2 ; 4 5 6]
Error using vertcat
Une matrice peut être générée par des vecteurs comme le montre les exemples
suivants :
12
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3) 2021/2022
Exemple
>> A = magic(5)
13
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3) 2021/2022
A=
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
------------------------------------------------------------------------------------------
>> A(1,:)
ans =
17 24 1 8 15
-----------------------------------------------------------------------------------------
>> A(:,2)
ans =
24
5
6
12
18
----------------------------------------------------------------------------------------
>> A(:,:)
ans =
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
Exemples
14
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3) 2021/2022
-----------------------------------------------------------------------------------------------
>> A(2,3) % l’élément sur la 2ème ligne à la 3ème colonne
ans =
7
---------------------------------------------------------------------------------------------
>> A(1,:) % tous les éléments de la 1ère ligne
ans = 1 2 3 4
>> A(:,2) % tous les éléments de la 2ème colonne
ans = 2
6
10
-------------------------------------------------------------------------------------------------
>> A(2:3,:) % tous les éléments de la 2ème et la 3ème ligne
ans = 5 6 7 8
9 10 11 12
-------------------------------------------------------------------------------------------------
>> A(1:2,3:4) % La sous matrice supérieure droite
ans = 3 4
7 8
-------------------------------------------------------------------------------------------------
>> A([1,3],[2,4]) % la sous matrice : lignes(1,3) et colonnes (2,4)
ans = 2 4
10 12
-------------------------------------------------------------------------------------------------
>> A(:,3) = [ ] % Supprimer la troisième colonne
A= 1 2 4
5 6 8
9 10 12
--------------------------------------------------------------------------------------------------
>> A(2,:) = [ ] % Supprimer la deuxième ligne
A= 1 2 4
9 10 12
----------------------------------------------------------------------------------------------------
15
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3) 2021/2022
16
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3) 2021/2022
------------------------------------------------------------------------------------------
>> zeros(2)
ans = 0 0
00
------------------------------------------------------------------------------------------
Exercice
Comment échanger les colonnes 2 et 3 de la matrice A, avec A =magic(5) ?
Solution proposée
>> A= magic(5) ; v = A(:,2) ; A(:,2) = A(:,3); A(:,3) = v;
A=
17 1 24 8 15
23 7 5 14 16
4 13 6 20 22
10 19 12 21 3
11 25 18 2 9
Il existe des commandes MATLAB permettant de manipuler globalement des matrices.
La commande diag permet d'extraire la diagonale d'une matrice.
Si A est une matrice, v=diag(A) est le vecteur composé des éléments diagonaux
de A.
Exemple
>> A=eye(3)
A= 1 0 0
0 1 0
0 0 1
>> diag(A)
ans = 1
1
1
On dispose également de la commande tril permet d'obtenir la partie triangulaire
inférieure ( l pour lower) d'une matrice. La commande triu permet d'obtenir la
partie triangulaire supérieure (u pour upper) d'une matrice.
Exemple
>> A = [2 1 1 ; -1 2 1 ; -1 -1 2]
17
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3) 2021/2022
A= 2 1 1
-1 2 1
-1 -1 2
------------------------------------------------------------------------------------------
>> tril(A)
ans =
2 0 0
-1 2 0
-1 -1 2
>> triu(A)
ans =
2 1 1
0 2 1
0 0 2
II.4/ Autres fonctions
Exemple
>> A = [3 1 2; -1 4 1; -2 -1 7]
>> det(A)
ans =
110
-----------------------------------------------------------------------------------------
>> inv(A)
ans =
0.2636 -0.0818 -0.0636
0.0455 0.2273 -0.0455
0.0818 0.0091 0.1182
-----------------------------------------------------------------------------------------
18
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3) 2021/2022
>> A'
ans =
3 -1 -2
1 4 -1
2 1 7
-----------------------------------------------------------------------------------------
>> nnz(A)
ans =
9
L’opération Signification
+ L’addition
- La soustraction
.* La multiplication élément par élément
./ La division élément par élément
.\ La division inverse élément par élément
.^ La puissance élément par élément
* La multiplication matricielle
/ La division matricielle (A/B) = (A*B-1)
Les opérations élément par éléments sur les matrices sont les mêmes que ceux pour les
vecteurs (la seule condition nécessaire pour faire une opération élément par élément est
que les deux matrices aient les mêmes dimensions).
19
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3) 2021/2022
( ) ( ) ( )
EXERCICE 3
Soit M, la matrice définie par :
La sous matrice M1
Ecrire un script MATLAB qui permet d’extraire :
L’élément situé dans la troisième ligne et la quatrième colonne.
Le vecteur L3 contenant tous les éléments de la troisième ligne.
Le vecteur C4 contenant tous les éléments de la quatrième colonne.
La sous matrice M1 de la matrice M, constituée à partir de l’intersection de la
deuxième et la troisième colonne avec la deuxième et la troisième ligne.
20
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3) 2021/2022
Introduction
Une des forces de MATLAB est de permettre la représentation graphique sous forme de
courbes ou d'images, des différents objets manipulés.
>> figure % crée une fenêtre graphique qui devient la figure par défaut
>> figure(n) % crée une fenêtre graphique numéro n qui devient la fenêtre active.
La commande close permet de fermer la fenêtre graphique active. On ferme une fenêtre
graphique précédemment ouverte en exécutant la commande close (n), où n désigne le
numéro de la figure. Il est également possible de fermer toutes les fenêtres graphiques en
tapant close all.
2. Graphisme 2D
21
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3) 2021/2022
Style de trait
Exemple
>> plot(x,y);
>> hold on;
>> plot(x,z);
22
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3) 2021/2022
La seule différence est que cette fois, les deux graphes sont tracés avec la même couleur. hold
on gère le graphique courant de façon que les commandes graphiques à suivre vont s’ajouter
à ce graphique. hold off est la valeur par défaut : dans ce cas une nouvelle commande plot
effacera le graphique existant.
A/ Légendes
B/ Titre
C’est l’instruction title à laquelle il faut fournir une chaine de caractères. Le titre apparait en
haut de la fenêtre graphique :
>> plot(x,cos(3*x),x,sin(2*x))
>> title(’Fonctions cos 3x et sin 2x’);
C/ Labels
Il s’agit d’afficher quelque chose sous les abscisses et à côté de l’axe des ordonnées :
>> plot(x,cos(3*x),x,sin(2*x))
23
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3) 2021/2022
D/ Changement de l'échelle
Les axes sont définis automatiquement ; on peut choisir les bornes des coordonnées du graphe
à l’aide de la fonction axis. Essayez par exemple :
On peut aussi écrire un texte donné à une position précise sur la figure grâce à la
commande text. La syntaxe est : text(posx,posy,' un texte ') où posx et posy sont les
coordonnées du point (dans le système associé au dessin).
Exemple
La commande gtext permet quant à elle de placer le texte à une position choisie sur la figure
à l'aide de la souris. La syntaxe est gtext(' un texte '). Une mire, que l'on déplace en utilisant la
souris, apparaît. Il suffit d'un << clic-souris >> pour que le texte apparaisse à la position
sélectionnée.
Exemple
24
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3) 2021/2022
>> plot(y,z);
25
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3) 2021/2022
nomf est soit le nom d'une fonction MATLAB incorporée, soit une expression définissant
une fonction de la variable x, soit le nom d'une fonction utilisateur.
[xmin , xmax] est l'intervalle pour lequel est tracé le graphe de la fonction.
Exemple
subplot (Nbre pavés sur hauteur, Nbre pavés sur largeur, Numéro pavé)
La virgule peut être omise. Les pavés sont numérotés dans le sens de la lecture d’un texte de
gauche à droite et de haut en bas :
subplot(2,3,4);
Une fois que l’on a tapé une commande subplot, toutes les commandes graphiques suivantes
seront exécutées dans le pavé spécifié.
26
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3) 2021/2022
Exemple 1
Exemple 2
27
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3) 2021/2022
3. Graphisme 3D
Une courbe en 2D est définie par une liste de doublets (x, y) et une courbe en 3D par une liste
de triplets (x, y, z). Puisque l’instruction plot attendait deux arguments, un pour les x, un pour
les y, l’instruction plot3 en attend trois : les x, les y et les z.
>> a = pi*[-4:0.04:4];
>> r = linspace(1,6,201);
>> x = r.*(1+cos(a));
>> y = r.*sin(a);
>> z = r;
>> plot3(x,y,z,’k*’);
>> grid;
28
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3) 2021/2022
En utilisant le même vecteur x = [0 pi/12 2pi/12 … 2pi], tracer sur un même graphique les
trois courbes y1 = cos(x), y2 = cos(x - 0.5) et y3 = cos(x -1), de telle sorte que la courbe 1 soit
une ligne continue rouge, la courbe 2 des cercles bleus, et la courbe 3 des pointillés noirs.
Soit le vecteur x = [0 pi/10 2pi/10 …. 2pi], définir y1=sin(x) et y2=cos(x), puis utiliser
l’instruction subplot pour tracer sur une même figure les deux graphes des fonctions sinus et
cosinus ; l’un en dessous de l’autre.
Tracer une courbe en 3D définit par x=cos(t), y =sin(t) et z =t2 en utilisant plot3 ; avec
t=[0 pi/20….20pi].
29
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3) 2021/2022
Les m-files permettent d’enregistrer les scripts sous forme de fichiers texte et servent
en particulier à définir de nouvelles fonctions (une grande partie des fonctions
prédéfinies de MATLAB sont stockées sous forme de m-files dans la toolbox matlab).
Les m-files peuvent être crées par n’importe quel éditeur. Dans les versions récentes
de MATLAB il existe un petit éditeur intégré que l’on peut appeler à partir du menu
file ou à partir de la barre de menu de la fenêtre de commande.
% script - essai. m
a = .5;
b = pi;
c=a*b
Pour exécuter le script contenu dans un m-file, il suffit de taper le nom de ce m-file
dans la fenêtre de commande suivi de < entrer >
>> essai
La fonction input permet la saisie d’une valeur depuis le clavier. Plus précisément :
Cette ligne d'instruction affiche message et affecte à la variable str la valeur entrée au
clavier considérée alors comme une chaîne de caractères.
30
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3) 2021/2022
Exemple
1er cas: La valeur d’une variable est très simplement affichée en faisant évaluer une
expression réduite à la variable elle-même.
Exemple
>> a = [1 2] ;
>> a
Exemple
Exemple
>> a = [1 2; 3 4] ;
>> disp (a)
>> disp ([ ’ordre de la matrice a : ’ num2str(size(a,1))] );
4. Structures algorithmiques
Il existe deux structures possibles permettant de réaliser des tests sur les données.
La structure if permet de tester la valeur d'une variable et d'effectuer différents
traitement suivant les cas testés.
La structure switch permet de choisir entre différents cas, et de faire correspondre un
traitement adapté à chacun des cas reconnus.
La structure if est indispensable à la programmation. Elle est présente dans tous les
langages, mais utilise des syntaxes un peu différentes. En langage Matlab, elle est
déclarée de la manière suivante:
31
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3) 2021/2022
Seul le if ...end est obligatoire, else et elseif sont facultatifs et permettent d'effectuer
des tests supplémentaires.
Le script suivant vous donne un exemple d'utilisation de la fonction if sous Matlab.
Exemple
La deuxième structure permet le choix entre différents cas. Le seul test effectué dans
cette structure est donc un test d'égalité. Cette structure est déclarée par :
32
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3) 2021/2022
Le test d'égalité est donc effectué par la fonction par rapport à chaque cas (case).
otherwise est une alternative lorsque la variable testée n'a pas d'égal parmi les
différents cas.
Exemple
switch jour
case 'lundi'
Jr = 5;
case 'mardi'
Jr = 4;
case 'mercredi'
Jr = 3;
case 'jeudi'
Jr = 2;
case 'vendredi'
Jr = 1;
otherwise
Jr = 0;
end
disp([ 'Encore ' num2str(Jr) ' jours avant le weekend' ])
5. Structures itératives
Il existe deux grands types de boucles : les boucles de type for dont on connaît le
nombre d'itérations et les boucles de type while dont le nombre d'itérations peut
évoluer à l'intérieur de la boucle.
Exemple
for x = 1 :2:10
v(x) = x*x ;
end
disp(v)
33
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3) 2021/2022
for (L = 1 : 3)
for ( k = 1 : 3)
A(L,k) = L^2 + k^2 ;
end
end
disp (A)
Exemple
n = 1;
while (2^n <= 100)
n = n + 1;
end
disp (n-1)
34
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3) 2021/2022
Exercice 1
Ecrire un script MATLAB qui affecte à une variable R la valeur 20 puis affecte
aux trois variables D, P et S respectivement les valeurs du diamètre, du périmètre et
de la surface d’un cercle dont le rayon est R. On affichera à l’écran le contenu de ces
différentes variables selon le format suivant :
Un cercle de rayon R a pour diamètre D, pour circonférence P et pour surface S.
Exercice 2 (Utiliser la structure if ……..end)
Ecrire un script permettant de résoudre une équation du second degré : ax2+bx+c=0.
Ce script devra demander à l’utilisateur les valeurs de a, b et c ; puis donner le
résultat.
Exercice 3
Exercice 4
- Ecrire un script qui permet de calculer N ! en utilisant la boucle while.
- Ecrire un script qui permet de calculer N ! en utilisant la boucle for.
35