Cours Complet sur MATLAB PDF
Cours Complet sur MATLAB PDF
1.1 Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3.1 Vecteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.3.2 Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.4 Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2
3 TABLE DES MATIÈRES
1.7 Fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Introduction au logiciel
MATLAB
1.1 Généralités
Objectif :
4
5 Chapitre 1. Introduction au logiciel MATLAB
Interface de matlab : L’interface Matlab se compose d’une fenêtre principale divisée en quatre
sous-fenêtres.
` gauche, “Current Folder” gère l’emplacement des fichiers. Celui-ci sera utile pour le
1. A
travail avec les m-files.
3. En bas à droite, “Command History” est visible par défaut ; il indique les dernières
commandes effectuées.
4. Au centre, il y a une grande fenêtre appelée “Command Window” : qui est l’interface
principale d’interaction avec MATLAB, où les instructions sont exécutées.
Premier contact :
— La Command Window est la fenêtre centrale de l’interface, c’est à partir de là que
l’utilisateur pourra lancer les commandes interprétées par Matlab.
— Le symbole >> indique à l’utilisateur où il faut rentrer la commande.
Exemple 1 .
— On peut taper plusieurs commandes Matlab sur une même ligne, en les séparant par une
virgule
>> 1 ∗ 7, 5ˆ10, 8 + 6 ∗ 4ˆ101
>> 13 + 2 ∗ 9ˆ2/3
— Une ligne d’instruction terminée par un point virgule (; ) est exécutée immédiatement
mais le résultat ne s’affiche pas
>> (3 + 5 ∗ 2ˆ5) /5
MATLAB dispose de plusieurs formats d’affichage des réels. Le format par défaut est le format
court à 5 chiffres. Les autres principaux formats sont :
Exemple 2 .
Exemple 3 .
Exemple 4 .
Exemple 5 .
Ces opérateurs effectuent un test logique entre deux variables logiques de même dimension :
Remarques 1.2.1
— Lorsque deux scalaires sont comparés, le résultat est un scalaire qui vaut 1 si la relation est
vrai et 0 si elle est fausse.
— Si deux matrices sont comparées, le résultat est une matrice de même dimension constituée
de 1 et 0, la relation étant testée élément par élément.
— help : Pour plus d’informations sur une commande, on peut utiliser la commande help
suivie du nom de la commande demandée : help < command >.
Exemple : help help
— quit : Cette commande est utilisée pour quitter MATLAB, à la fin de notre travail.
— clc : Pour effacer la fenêtre.
— clear / clear all : Elle réinitialise l’environnement (le “workspace”) en détruisant toutes
les variables actives en mémoire.
— whos / who : L’ensemble des variables actives peut être consulté grâce aux commandes
whos et who.
— Sous Matlab, les scalaires, les vecteurs et les matrices sont tous construit sur une base
de matrice de 2D.
— La structure de données de Matlab est le tableau (Les termes tableau et matrice sont
synonymes).
1.3.1 Vecteurs
Exemple 6 .
— Les tableaux avec une seule ligne sont appelés des vecteurs lignes ou des listes.
— Les tableaux avec une seule colonne sont appelés simplement des vecteurs.
En outre,
— Matlab dispose également de moyens très simples pour créer des listes.
— La commande [a : h : b] (ou a : h : b ou (a : h : b)) crée une liste dont les éléments sont :
où a + nh ≤ b < a + (n + 1) h.
— Le cas particulier [a : b] est un raccourci pour [a : 1 : b] .
— Si les conditions initiales sont erronées, Matlab renvoie un message d’erreur.
Exemple 7 .
1.3.2 Matrices
— Pour créer une matrice comportant plusieurs lignes, séparez les lignes à l’aide de points-
virgules.
— Si le nombre d’éléments dans chaque ligne (ou colonne) n’est pas le même, Matlab signale
une erreur.
Exemple 8 .
Une dernière méthode pour créer des tableaux est la concaténation. Si A et B sont deux tableaux,
alors :
Commandes Principales :
Exemple 9 .
— disp (var) affiche le contenu de variable.
— disp (’Calcul du déterminant de la matrice A’) affiche la phrase : “Calcul du déterminant
de la matrice A”.
— disp ([“Le déterminant de la matrice A vaut”, d = det(A)]).
Exemple 10 .
n = input (’entrez le nombre de simulations’)
disp ([’Vous avez tapé : ’ n])
1.4 Script
Définition 1.4.1 Un script est un ensemble d’instructions identiques à celles que l’on peut employer
directement dans la fenêtre de commandes de MATLAB, et qu’on enregistre dans un fichier avec
une extension de la forme .m et de les faire exécuter par MATLAB.
Exemple 11 .
Remarque 1.4.1
— Ne jamais créer un script ou une fonction ayant le même nom qu’une fonction prédéfinie.
Remarque 1.4.2 Pour exécuter un script, il suffit de taper son nom dans la fenêtre Matlab, sans
préciser l’extension ’.m’.
Exemple 12 .
La fonction which permet de savoir quel est le chemin du script ou de la fonction que MATLAB
trouve en premier.
Exemple 14
— Pour notre ScriptCercle :
Les bibliothèques de Matlab proposent un très grand nombre de fonctions pour la manipulation
d’objets graphiques. Nous ne présentons ici que quelques principes de base, utiles pour la
visualisation de courbes de type 2D ou 3D.
Fonction plot(x,y) :
Etant donné deux vecteurs de même taille, x et y, la fonction plot(x,y) trace le graphe de y
en fonction de x. En fait Matlab relie les points de coordonnées (x (i) , y (i)) pour 1 ≤ i ≤
length (x).
En prenant un grand nombre de points dans le vecteur x et en définissant ensuite y = f (x)
pour une certaine fonction f , la fonction plot(x,y) (ou plot(x,f (x))) nous donnera le graphe de
la fonction f .
Exemple 15 Traçons la fonction sinus dans l’intervalle [−π; π] avec un pas de 0, 01.
La fonction plot permet aussi le tracé de courbes planes définies sous la forme :
x = f (t)
y = g (t)
Exemple 16 .
´
Fonction inline : Etait utilisée pour définir des fonctions simples de manière concise directement
dans le code, sans créer un fichier séparé.
Admettons qu’on veux définir une nouvelle fonction qu’on appelle f définie mathématiquement
par :
f (x) = sin (x) − x cos (x) .
On écrira :
Command plot :On peut spécifier à MATLAB quelle doit être la couleur d’une courbe, quel
doit-être le style de trait et/ou quel doit être le symbole à chaque point (xi , yi ). Pour cela on
donne un troisième paramètre d’entrée à la commande plot qui est une chaı̂ne de 3 caractères
de la forme ’cst’ avec :
Syntaxe : plot(x,y,’cst’).
Remarque 1.5.1 Lorsque on utilise seulement un style de marqueurs, MATLAB ne trace plus de
segments de droite entre les points successifs, mais seulement les points eux-même.
Dans une figure, il est préférable de mettre une description textuelle aidant à comprendre la
signification des axes et de connaı̂tre le but ou l’intérêt de la visualisation concernée.
Les labels des axes :
Exemple 17 .
L’idée générale est de découper la fenêtre graphique en zones, et d’afficher un graphe dans
chacune des zones. On utilise l’instruction subplot en lui spécifiant le nombre de zones sur la
hauteur, le nombre de zones sur la largeur, et le numéro de la zone que l’on considère (et dans
laquelle on va tracer une courbe) : subplot(NbZonesHauteur,NbZonesLargeur,NumeroZone)
où NbZonesHauteur représente le nombre de zones sur la hauteur, NbZonesLargeur le nombre
de zones sur la largeur, et NumeroZone le numéro de la zone à laquelle on s’intéresse.
Les virgules peuvent être omises. Les pavés sont numérotés dans le sens de la lecture d’un texte,
de gauche à droite et de haut en bas :
Exemple 18 .
Il est possible de tracer des graphiques de différentes natures dans une même fenêtre graphique.
Par défaut, les fonctions de tracé effacent systématiquement le graphique précédent. Cependant,
il peut être utile de conserver le graphique existant et d’y superposer un nouveau tracé. Pour
ce faire, on utilise la commande hold.
— hold on : Cette commande permet de superposer plusieurs tracés sur une même figure
sans effacer les tracés précédents.
— hold off : Cette commande désactive le maintien des graphiques, c’est-à-dire que lorsque
vous tracez un nouveau graphique, il efface le graphique précédent.
Exemple 19 .
Remarque 1.5.2 On peut représenter plusieurs courbes sur la même figure de la manière suivante :
plot(x, y1 , x, y2 , ..., x, yn ).
Exemple 20 .
Pour représenter deux courbes ayant des ordonnées très différentes (i.e. avec des ordres de
grandeurs très différents), on utilise la fonction plotyy qui gère de manière automatique et
indépendante les échelles des ordonnées des deux tracés.
Exemple 21 On veut représenter deux courbes dans le même domaine de définition, mais ayant
des amplitudes très différentes :
On peut définir une courbe en 3D par une liste de triplets (x; y; z) et en utilisant l’instruction
plot3 avec trois arguments :
• Vx : le vecteur des abscisses.
• Vy : le vecteur des ordonnées.
• Vz : le vecteur des cotes.
Syntaxe :
plot3(V x, V y, V z).
Exemple 22 .
• La commande grid on dans MATLAB est utilisée pour afficher une grille sur un graphique. La
grille aide à mieux visualiser et interpréter les données en fournissant des lignes de référence
horizontales et verticales (ou dans le cas de tracés 3D, des lignes sur tous les axes). Cela facilite
la lecture des valeurs sur les axes et l’observation des tendances dans les graphiques.
Remarque 1.5.3 On peut aussi tracer plusieurs courbes en 3D à l’aide de la commande suivante :
plot3(x1 , y1 , z1 , x2 , y2 , z2 , ..., xn , yn , zn ).
Exemple 23 .
Les instructions de contrôle sous MATLAB sont très proches de celles existant dans d’autres
langages de programmation.
Ces instructions sont :
— Boucle FOR : parcours d’un intervalle.
— Boucle WHILE : tant que . . . faire.
— L’instruction conditionnée IF.
Remarque 1.6.1 Les structures de contrôle forment des blocs, délimités par :
— un mot clé spécifique donnant le sens de la structure de contrôle (exemple for, if, switch),
— et le mot clé end.
— Boucle itérative :
• La boucle for k = 1 : n parcourt tous les entiers de 1 à n.
• À chaque itération, la variable nfac est multipliée par la valeur courante de k, ce qui
construit progressivement le produit de tous les nombres de 1 à n.
— expression logique : est une expression dont le résultat peut être vrai ou faux.
— séquence d’instructions : est le traitement à effectuer tant que expression logique est
vraie.
Interprétation : Tant que l’expression logique est vraie, la séquence d’instructions est exécutée
sous forme de boucle. Lorsque l’expression logique devient fausse, l’exécution passe à l’instruction
qui suit immédiatement la fin de la boucle (end).
if expression logique
séquence d’instructions
.
.
.
end
— expression logique : est une expression dont le résultat peut être vrai ou faux.
— séquence d’instructions : est le traitement à effectuer si expression logique est vraie.
Interprétation :
la séquence d’instructions n’est exécutée que si le résultat de l’évaluation de l’expression
logique est vraie. Dans le cas contraire on exécute l’instruction qui suit le mot clé end.
if expression logique
séquence d’instructions 1
else
séquence d’instructions 2
...
end
Interprétation :
Si expression logique est vraie la séquence d’instructions 1 est exécutée, sinon c’est la séquence
d’instructions 2 qui est exécutée. Le déroulement du programme reprend ensuite à la première
instruction suivant le mot clé end.
Exemple 26 .
if expression logique 1
séquence d’instructions 1
elseif expression logique 2
séquence d’instructions 2
.
.
.
elseif expression logique n
séquence d’instructions n
else
séquence d’instructions par défaut
end
Interprétation :
— Si expression logique 1 est vraie la séquence d’instructions 1 est exécutée et le programme
reprend ensuite à la première instruction suivant le mot clé end.
— Sinon si expression logique 2 est vraie la séquence d’instructions 2 est exécutée et le
programme reprend ensuite à la première instruction suivant le mot clé end, etc.
…
— Si aucune des expressions logiques 1 à n n’est vraie alors séquence d’instructions par
défaut est exécutée.
Exemple 27 .
• L’instruction switch La commande switch est une autre forme d’instruction conditionnelle.
Elle peut souvent être utilisée à la place d’une instruction if imbriqué ou if-elseif.
Syntaxe :
switch expression
case valeur1,
instructions1…
case valeur2,
instructions2…
.
.
.
otherwise
instructions ….
end
Interprétation :
— L’expression testée, expression, doit être un scalaire ou une chaı̂ne de caractère.
— valeur1, …valeuri,…, valeurN, sont des constantes numérique ou des constantes chaı̂ne
de caractères.
— séquence d’instructions i est la séquence d’instructions à exécuter si le contenu de la
variable expression est égal à la constante valeuri (expression==valeuri).
— Une fois qu’un bloc instructions i est exécuté, le flux d’exécution sort de la structure et
reprend après le end.
— Si aucun case vérifie l’égalité, le bloc qui suit otherwise est exécuté.
Exemple 28 .
Pour provoquer interruption d’une boucle de contrôle, on utilise l’une des deux instructions
suivantes :
1.7 Fonction
— Pour définir une fonction sous Matlab, on écrit la définition de la fonction dans un fichier
avec une extension .m (fonction M-File).
— le nom du fichier sans suffixe doit être exactement le nom de la fonction (apparaissant
après le mot-clé function).
— On l’exécute en tapant le nom de la fonction avec entre parenthèses la liste des arguments.
où
Exemple 29 .
Exemple 30 .
Lorsque le corps de la fonction se résume à une expression relativement simple, on peut créer
la fonction directement dans l’espace de travail courant, sans utiliser un m-file auxiliaire,
La syntaxe des fonctions Inline est simple :
— Il est préférable que les fonctions soient vectorisées, comme c’est le cas pour les fonctions
prédéfinies. Pour cela, il est nécessaire d’utiliser uniquement des opérateurs pointés dans
l’expression définissant la fonction.
— La déclaration des variables peut être optionnelle dans la définition des fonctions inline,
MATLAB réalisant une déclaration implicite de celles-ci. Toutefois, cette facilité peut
engendrer des ambiguı̈tés dans le cas de fonctions comportant plusieurs variables, et il
est donc déconseillé de l’utiliser dans de tels cas.
Exemple 31 .
Ce troisième mode de définition de fonctions utilise, comme pour les fonctions inline, l’espace
de travail courant. Bien que la syntaxe minimale soit peu explicite, les fonctions définies de
cette manière sont généralement plus efficaces que les fonctions inline.
Syntaxe :
Exemple 32 .
Tracer l’allures d’une fonction avec fplot la fonction fplot permet de tracer une fonction
entre deux bornes, sans définir un ensemble d’abscisses.
Syntaxe : fplot(f,xinterval)
Exemple 33 .
Remarque 1.7.1
— Lors de la définition d’une fonction, il est important de bien choisir l’ordre des variables
de sortie, par ordre d’importance. Il est ainsi toujours possible de récupérer les premières
variables de sortie, en ignorant les suivantes.
— Lorsque l’on définit une fonction dans un fichier, il est préférable de mettre un ( ;) à la
fin de chaque commande constituant la fonction. Ainsi, on évitera l’affichage de résultats
intermédiaires. Attention cependant à ne pas en mettre sur la première ligne.
— Pour quitter une fonction, on utilise l’instruction return.
Matlab possède plusieurs solveurs approchés pour les équations différentielles du type
y 0 (t) = f (t, y (t)) ,
t∈R
y (t ) = y
0 0
Le solveur choisi, par exemple ode45, ode23, ode113, ode15s, ode23s, ode23t, ou ode23tb, résout
le problème de Cauchy ci-dessus en utilisant une méthode et une précision choisies par l’utilisateur.
La syntaxe de base :
[T , Y ] = solver (odefun,tspan,y0).
— odefun : fonction au second membre du système f (t, y) .
— tspan : [t0 , t1 , ..., tf ] temps où on veut calculer la solution y.
— y0 : Condition initiale y (t0 ) (vecteur colonne n composantes).
— T : En sortie les temps où est calculée la solution.
— Y : Les valeurs de la solution aux temps T .
Les principales fonctions de MATLAB qui permettent la résolution des équations différentielles
sont :
— ode23 : Méthode de Runge-Kutta dite d’ordre 2,3.
— ode45 : Méthode de Runge-Kutta dite d’ordre 4,5 (la plus utilisée).
Réformation du problème : Pour résoudre une équation à l’aide des solveurs ode, il faut
l’exprimer sous une forme vectorielle. Pour cela :
dn y dy d2 y dn−1 y
=f t, y, , 2 , ..., n−1
dtn dt dt dt
dy d2 y d(n−1) y
y1 = y, y2 = , y3 = 2 , ..., yn = (n−1) .
dt dt d t
et on obtient :
ẏ1 = y2
ẏ2 = y3
..
.
ẏn = f (t, y1 , y2 , ..., yn )
Problème :
..
.
ẏn = fn (t, y1 , y2 , ..., yn )
Méthode :
— Les yi et les ẏi sont regroupés dans des vecteurs, ce qui fait que la forme de cette fonction
est exploitable quel que soit le nombre d’équations du système différentiel.
— La dernière ligne est nécessaire car la fonction doit renvoyer un vecteur colonne et non
un vecteur ligne.
Pour résoudre cette équation différentielle, il faut appeler un solveur et lui transmettre au
minimum :
— le nom de la fonction.
— les bornes d’intégration (tmin et tmax ).
— les conditions initiales.
Le solveur fournit en sortie un vecteur colonne représentant les instants d’intégration t, et une
matrice dont la première colonne représente les y1 calculés à ces instants, la deuxième les y2 ,…
et la nième les yn .
L’appel du solveur prend donc en général la forme suivante :
Les lignes yi = ... servent à extraire les différentes fonctions yi dans des colonnes simples.
Nous avons utilisé ici ode45 qui est un Runge-Kutta-Merson imbriqué d’ordre 4 et 5.