TP 1
Exercices d’initiation à Matlab
Exercice 1 : Initiation à MATLAB - Vecteurs et courbes
a) Définir la variable x = π4 , et calculer y1 = sin(x) et y2 = cos(x), puis z = tan(x) à partir de y1
et y2 .
b) Définir la variable x = π6 , π4 , π3 et calculer y1 = sin(x) et y2 = cos(x). Calculer alors tan(x) en
utilisant exclusivement les vecteurs y1 et y2 précédents.
c) Définir la variable x = [0 : 0.1 : 2π]. Combien y a-t-il de valeurs dans ce vecteur ? Afficher la
courbe du sinus. Faire varier le pas. Qu’affiche exactement la commande plot ? (plot, size, length).
Exercice 2 : Initiation à MATLAB - Manipulation de matrices
a) Définir le vecteur V = [0 1 2 3 . . . 49 50]. Quelle est la taille de ce vecteur ? Définir le vecteur
W contenant les cinq premiers éléments de V , et le vecteur X contenant les cinq premiers et les cinq
derniers éléments. Définir ensuite le vecteur Z = [0 2 4 . . . 48 50] à partir de V .
b) Définir la matrice
1 2 3 4 5 6 7 8 9 10
M = 11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
1 2
3 7
Extraire de cette matrice la matrice Q = , la matrice N = 11 12, puis la matrice P =
23 27
21 22
8 9 10
18 19 20. Extraire de la matrice M la matrice R obtenue en prenant dans la matrice M une
28 29 30
colonne sur 2.
c) Définir les matrices M = [2 4 6 8 . . . 100] et N = [−1 − 3 − 5 . . . − 99], puis le vecteur
P = [−1 2 − 3 4 5 8 . . . − 99 100].
d) Définir une matrice M aléatoire à trois lignes et sept colonnes. Combien de nombres dans cette
matrice sont plus grand que 0,5 ? que 0,8 ? Où sont-ils situés ? (rand, nnz, find, sum). Construire
alors la matrice P obtenue à partir de la matrice M en remplaçant tous les nombres de M inférieurs
à 0,4 par 0, et ceux supérieurs à 0,4 par 1. Construire de même la matrice Q obtenue à partir de la
matrice M en remplaçant tous les nombres de M inférieurs à 0,5 par -3 et tous les nombres supérieurs
à 0,5 par 14.
e) Créer un vecteur contenant N valeurs binaires (0 ou 1) tel que 10% de ces valeurs soient des 1.
Exercice 3 : Initiation à MATLAB, fonctions graphiques
Représenter sur une figure à 4 cadrans, les fonctions sinus, exponentielle, logarithme et tangente.
(subplot)
Exercice 4 : Etude de la fonction Sig = exp(−A.t + j.2πf0 .t)
a) Créer le vecteur t = [0 : 0.1 : 100] ; quel est le nombre de points ? Quelle est la place utilisée en
mémoire ? (size, length, whos)
1
b) Tracer la fonction demandée en choisissant A et f0 de façon à observer une dizaine de cycles et
une atténuation d’environ 90%. (plot, real, imag, abs)
c) Représenter sur une figure à 4 cadrans, la partie réelle, la partie imaginaire, le module et la phase
de cette courbe. Mettre les titres et les légendes de chaque graphique. (subplot, title, legend)
d) Représenter cette fonction complexe sous la forme d’une trajectoire 3D à l’aide de la fonction
plot3.
e) Utiliser la fonction graphique rotate3d, pour retrouver les courbes 2D de (c) à partir de la
représentation 3D.
Exercice 5 : Initiation à la programmation sous MATLAB
a) Quel est votre répertoire courant ? Créer un nouveau répertoire Initiation_Matlab et se placer
dedans.
b) Reprendre le problème de l’exercice 3. Ecrire un script de commande qui fixe au départ les
valeurs de A et f0 , puis calcule la fonction et enfin représente en 3D la courbe voulue.
c) Taper clear all puis who. Il n’y a plus de variables locales. Taper le nom de votre fichier de
commande : quelles sont les variables reconnues dans l’espace de travail ?
Exercice 6 : Création d’une fonction
a) Créer, à partir de votre fichier de commande, une fonction qui trace la courbe 3D de l’exercice 3,
en fonction des variables A et f0 passées en paramètres et qui retourne les valeurs prises par la fonction
Sig.
b) Ajouter un "flag" passé à la fonction qui permet de choisir ou non la visualisation de la courbe
(nargin).
Exercice 7 : Recherche d’un élément dans un vecteur
Ecrire une fonction Trouve qui prend en argument un vecteur v et un nombre x, et qui retourne 1 si
x est un élément du vecteur v, et 0 sinon. Deux versions de cette fonction peuvent être implémentées,
une à l’aide d’une boucle for, et d’un test if approprié, l’autre directement avec une comparaison
globale == (et, par exemple, find ou nnz).
Exercice 8 : Matrices et systèmes linéaires
a) Ecrire une fonction, n’utilisant aucune boucle (for, while, ...) qui prend comme paramètre un
entier n et qui construit la matrice suivante (fonctions eye, diag) :
1 1 0 ··· 0
0 1 −1 · · · 0
2
0 0 1 · · · 0
3
.. .. .. .. .
. . . . ..
1
0 0 0 ··· n
b) Avec Matlab, on peut résoudre tout type de système linéaire en l’écrivant préalablement sous
forme matricielle.
(i) Le système linéaire, d’inconnues x, y et z suivant
6x + y − 5z = 10
2x + 2y + 3z = 11
4x − 9y + 7z = 12
2
T
s’écrit sous forme matricielle AX = b, où X = x y z est le vecteur inconnu. Le vecteur X se
calcule alors suivant : AX = b ⇐⇒ X = A−1 b, ou encore, avec Matlab, X = A \ b (voir help slash).
Résoudre le système linéaire précédent.
(ii) Résoudre numériquement le système :
x + 2y + 3z + 4t = 1
2x + 3y + 4z + t = −2
−2x + y − 5z + 2t = 0
8x + y − z + 3t = 1
(iii) Résoudre numériquement le système suivant (moindres carrés) :
x + 3y = 5
−2x + 6y = 7
3x − 4y = 6
6x − 13y = −3
Y. Morel [Link]/Matlab/