0% ont trouvé ce document utile (0 vote)
351 vues107 pages

Introduction à MATLAB pour débutants

Ce document présente un plan pour une introduction à MATLAB. Le plan contient 8 sections principales sur les généralités de MATLAB, la découverte de l'interface, les vecteurs et matrices, les scripts, les représentations graphiques, les instructions de contrôle, les fonctions et les équations différentielles.

Transféré par

med elhaddad
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
351 vues107 pages

Introduction à MATLAB pour débutants

Ce document présente un plan pour une introduction à MATLAB. Le plan contient 8 sections principales sur les généralités de MATLAB, la découverte de l'interface, les vecteurs et matrices, les scripts, les représentations graphiques, les instructions de contrôle, les fonctions et les équations différentielles.

Transféré par

med elhaddad
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Plan

Introduction à MATLAB

SMA- S5

2023/2024

Pr.: M'hamed ELMASSOUDI

Univeristé Sidi Mohamed Ben Abdellah

Faculté des sciences Dhar El Mahraz, Fès


Plan

1 Généralités

2 Découvrir Matlab

3 Vecteurs et matrices

4 Script

5 Représentations graphiques

6 Instructions de contrôle

7 Fonction

8 Équations diérentielles
Plan

1 Généralités

2 Découvrir Matlab

3 Vecteurs et matrices

4 Script

5 Représentations graphiques

6 Instructions de contrôle

7 Fonction

8 Équations diérentielles
Généralités

Généralités

Objectif

Apprentissage de la programmation avec Matlab.

Connaitre et savoir programmer les méthodes numériques classiques utilisées dans


l'analyse numérique.
Généralités

Généralités

Qu'est-ce que Matlab ?

MATLAB est l'abréviation de MATrix LABoratory. C'est un environnement de


développement dans le domaine du calcul matriciel numérique.

Matlab permet d'eectuer :

des opérations mathématiques,

manipuler les fonctions mathématiques usuelles,

des calculs matriciels,

résolution approchée des équations diérentielles,

calcul des intégrales numériques,

de faire des graphiques 2D et 3D,

etc...
Découvrir Matlab Interface de matlab

Interface de matlab
L'interface Matlab se compose d'une fenêtre principale divisée en quatre sous-fenêtres.
Découvrir Matlab Interface de matlab

Interface de Matlab

1- À gauche, " Current Folder" gère l'emplacement des chiers. Celui-ci sera utile pour
le travail avec les m-les.
2- En haut à droite, " Workspace" permet de gérer les variables utilisées.
Découvrir Matlab Interface de matlab

Interface de matlab

3- En bas à droite,Command History est visible par défaut ; il indique les dernières
commandes eectuées.
4- Au milieu, il y a une grand fenêtre :Command Window. La Command Window est la
fenêtre d'interaction avec Matlab ou la fenêtre principale pour l'exécution des
instructions.
Découvrir Matlab Interface de matlab

On peut utiliser Matlab de deux manières diérentes

en entrant des instructions à la suite du prompteur >>, le logiciel se comporte


comme une très bonne calculatrice graphique ;

en créant des scripts (ou m-les) ou des fonctions (extension .m), on crée des "
programmes " sauvegardables
Découvrir Matlab Premier contact

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 :
>> 5 + 3 >> 5 ∗ 3
ans = ans =
8 15
5-3 >> 5/3
ans = ans =
2 1.6667
Découvrir Matlab Premier contact

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 :
>> 5 + 3 >> 5 ∗ 3
ans = ans =
8 15
5-3 >> 5/3
ans = ans =
2 1.6667
Découvrir Matlab Premier contact

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 :
>> 5 + 3 >> 5 ∗ 3
ans = ans =
8 15
5-3 >> 5/3
ans = ans =
2 1.6667
Découvrir Matlab Premier contact

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 :
>> 5 + 3 >> 5 ∗ 3
ans = ans =
8 15
5-3 >> 5/3
ans = ans =
2 1.6667
Découvrir Matlab Premier contact

Premier contact

▷ 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
▷ Les opérateurs arithmétiques ont la priorité habituelle (cf. calculette).
>> 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'ache pas :
>> (3 + 5 ∗ 2ˆ5)/5;
Découvrir Matlab Premier contact

Les formats d'achage des réels

MATLAB dispose de plusieurs formats d'achage des réels. Le format par défaut est le
format court à 5 chires. Les autres principaux formats sont :

format long : format long à 15 chires.

format short e : format court à 5 chires avec notation en virgule ottante.

format long e : format long à 15 chires avec notation en virgule ottante.

>> pi >> format long >> format short e >> format long e
ans = >> pi pi 3 pi 3
3.1416 ans = ans = ans =
3.14159265358979 3.1006e + 01 31.006
 format short

Découvrir Matlab Les variables

Les variables

▷ L'aectation d'une variable en Matlab se fait au moyen du signe (=).


▷ Le nom d'une variable doit commencer par une lettre (majuscule ou
minuscule, sans accent) puis peut contenir des lettres (même remarque),
des chires et des caractères soulignés (_).
▷ Matlab est  case-sensitive , c'est-à-dire qu'il fait la distinction entre
majuscules et minuscules.

▷ Exemples :

>> a = 2021 >> A =′ 11 : 6′ >> A =′ Bonjour ′


a= A= A=
′ ′
2021 11 : 6 Bonjour
Découvrir Matlab Les variables

Pour rappeler des commandes précédentes, il y a deux possibilités :

▷ Utiliser les touches du clavier ↑ ou ↓ et les commandes précédentes


apparaissent dans l'ordre chronologique ;

▷ Taper les premiers caractères de la commande puis utiliser les touches ↑


ou ↓.
▷ Après avoir choisi la commande à rappeler, il est toujours possible de la
modier en se déplaçant avec les touches ← et → et en eectuant la
correction.
Découvrir Matlab Les variables

Fonctions mathématiques

Constante Signication Constante Signication


cos(x) Cosinus abs(x) Valeur absolue
sin(x) Sinus sign(x) Fonction signe
tan(x) Tangent max(x) Maximum d'une valeur
acos(x) Arccos min(x) Minimum d'une valeur
asin(x) Arcsin round(x) Arrondir à l'entier le plus proche
atan(x) Arctg rem(x, y ) Reste après division de x par y
exp(x) Exponentiel
sqrt(x) racine carrée
log (x) Logarithme
log 10(x) Logarithme décimale

>> log 10(10) >> log (exp(1)) >> abs(−12) >> cos(pi)
Exemple :
ans = ans = ans = ans =
1 1 12 −1
Découvrir Matlab Constantes prédénies

Constantes prédénies (Suite)

Constante Signication
ans réponse à une expression sans assignation
realmax plus grand nombre ottant
realmin plus petit nombre ottant positif
pi
√π
i, j −1
inf ∞
NaN Not a Number
... ...
Découvrir Matlab Opérateurs relationnels

Opérateurs relationnels

Les opérateurs comparent deux opérandes de même dimension :

== égal à (x == y)
∼= diérent de (x < y)
> strictement supérieur à (x > y)
>= supérieur ou égal à (x >= y)
< strictement inférieur à (x < y)
<= inférieur ou égal à (x <= y)
Découvrir Matlab Opérateurs relationnels

Opérateurs relationnels

Exemple :
>> 100 > 24
ans =
1
>> 1956 == 3
ans =
0
>> 15∼= 9
ans =
1
>> [2 8 ; 7 3]<= [0 8 ; 7 2]
ans =
0 1
1 0
Découvrir Matlab Opérateurs relationnels

Opérateurs relationnels

Exemple :
>> 100 > 24
ans =
1
>> 1956 == 3
ans =
0
>> 15∼= 9
ans =
1
>> [2 8 ; 7 3]<= [0 8 ; 7 2]
ans =
0 1
1 0
Découvrir Matlab Opérateurs relationnels

Opérateurs relationnels

Exemple :
>> 100 > 24
ans =
1
>> 1956 == 3
ans =
0
>> 15∼= 9
ans =
1
>> [2 8 ; 7 3]<= [0 8 ; 7 2]
ans =
0 1
1 0
Découvrir Matlab Opérateurs relationnels

Opérateurs relationnels

Exemple :
>> 100 > 24
ans =
1
>> 1956 == 3
ans =
0
>> 15∼= 9
ans =
1
>> [2 8 ; 7 3]<= [0 8 ; 7 2]
ans =
0 1
1 0
Découvrir Matlab Opérateurs logiques

Opérateurs logiques

Ces opérateurs eectuent un test logique entre deux variables logiques de même
dimension :

& et (x & y)
| ou (x | y)
∼ non (∼ x)
xor ou exclusif (xxory )
any(x) retourne 1 si un des éléments de x est non nul
all(x) retourne 1 si tous les éléments de x sont nuls

Remarque :

▷ 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.
Découvrir Matlab Commandes Principales

Commandes Principales

▷ 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 n de


notre travail.

▷ clc : Pour eacer 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.
Découvrir Matlab Sauvegarde

Sauvegarde

Matlab ne permet pas de sauvegarder l'historique des commandes exécutées. Il existe


cependant deux solutions pour sauvegarder son travail.

▷ Le Workspace : On peut sauver l'état de la session en cours dans un


chier .mat. Pour cela, dans la fenêtre principale, File→Save Workspace
As, et vous choisissez l'emplacement et le nom de votre chier.
Matlab sauvegarde ainsi le nom et la valeur de chacune des variables. La
prochaine fois que vous utilisez Matlab, au moyen du menu Files→ Open

▷ Les m-les : Il s'agit d'un chier dans lequel on regroupe des


commandes. Files→New→Script
Vecteurs et matrices

Vecteurs et matrices

▷ 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).
Vecteurs et matrices Vecteurs

Vecteurs

hi
On dénit un vecteur à l'aide de la commande .

Exemple :
>> V1=[1 2 3 4 ] % vecteur ligne contenant 1 2 3 4
V1=
1 2 3 4
>> V2=[1 ; 2 ; 3 ; 4 ] % vecteur colonne
V2=
1
2
3
4
N.B : Le signe de pourcentage % permet de mettre ce qui suit sur une ligne en
commentaire (MATALAB n'en tiendra pas compte à l'exécution).
Vecteurs et matrices Vecteurs

Vecteurs

hi
On dénit un vecteur à l'aide de la commande .

Exemple :
>> V1=[1 2 3 4 ] % vecteur ligne contenant 1 2 3 4
V1=
1 2 3 4
>> V2=[1 ; 2 ; 3 ; 4 ] % vecteur colonne
V2=
1
2
3
4
N.B : Le signe de pourcentage % permet de mettre ce qui suit sur une ligne en
commentaire (MATALAB n'en tiendra pas compte à l'exécution).
Vecteurs et matrices Vecteurs

Vecteurs

▷ 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.
Vecteurs et matrices Vecteurs

Vecteurs

▷ 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
a; a + h; a + 2h; ...; a + nh;
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.
Vecteurs et matrices Vecteurs

Vecteurs

Exemple :
>> V3 =[ 1 : 5 ] % Ce vecteur contient les nombres comprises
% entre 1 et 5 avec un pas par défaut égale à 1
V3=
1 2 3 4 5
>> V4 =[ 1 : 2 : 10 ] % on peut changer le pas, On aura donc
% tous les nombres comprises entre 1 et 10
% avec un pas égale à 2
>> z = [10 : 2 : −10]
z =
Empty matrix : 1-by-0
Vecteurs et matrices Matrices

Matrices

▷ Pour créer une matrice comportant plusieurs lignes, séparez les lignes à
l'aide de points-virgules.
>> A=[1 2 3 ; 4 5 6] % matrice de 2 lignes et 3 colonnes
A =
1 2 3
4 5 6

▷ Si le nombre d'éléments dans chaque ligne (ou colonne) n'est pas le


même, Matlab signale une erreur.
Exemple :
>> A = [1 2 3; 4 5]
Error using vertcat
Dimensions of matrices being concatenated are not consistent.
Vecteurs et matrices Matrices

Matrices

Une dernière méthode pour créer des tableaux est la concaténation.


Si A et B sont deux tableaux, alors :

▷ [A B] ou [A, B] est le tableau obtenu en collant B à droite de A.

▷ et [A ; B] est le tableau obtenu en collant B au-dessous de A. ( il faut


faire attention aux tailles de A et de B).
Vecteurs et matrices Matrices

Commandes Principales

Commande Description
ones(i,j) Matrice de i lignes j colonnes contenant des 1
zeros(i,j) Matrice de i lignes j colonnes contenant des 0
eye(i,j) Matrice de i lignes j colonnes avec des 1 sur la diagonale principale
et 0 ailleurs
diag(A) extrait la diagonale de la matrice A
triu(A) renvoie la partie supérieure de la matrice A
tril(A) renvoie la partie inférieure de la matrice A
Vecteurs et matrices Matrices

Commandes Principales

L'élément de ligne i et colonne j de la matrice A est noté A(i,j).


>> A(2, 3)
ans=
6
Pour extraire une ligne (ou une colonne)de la matrice, on utilise la commande A(n, :)
(ou A( :m)).
>> A(2, :)
ans=
4 5 6
>> A(:, 3)
ans=
3
6
Vecteurs et matrices Matrices

Commandes Principales

Commande Description
size(A) La taille de la matrice
A\b résolution du système linéaire Ax = b
cond(A) conditionnement d'une matrice (norme euclidienne)
det(A) déterminant d'une matrice
rank(A) rang d'une matrice
inv(A) inverse d'une matrice
norm(A) norme matricielle ou vectorielle
Vecteurs et matrices Matrices

Commandes Principales

Commande Description

A le transposé de A
A∗B multiplication matricielle
A+B addition matricielle
A−B soustraction matricielle
A. ∗ B multiplication des tableaux A et B terme à terme
A./B division du tableau A par le tableau B terme à terme
Vecteurs et matrices Matrices

Dialogue avec l'utilisateur

La commande disp permet d'acher un tableau de valeurs numériques ou de caractères.


Exemple :

disp(var) ache le contenu de var

disp('Calcul du déterminant de la matrice A') ache la phrase : "Calcul du


déterminant de la matrice A"

disp(['Le déterminant de la matrice A vaut d=', num2str(det(A)), 'et la trace de A


vaut' , num2str(trace(A))])

Exemples :
> x = [1 2 3 4];
> x
x =
1 2 3 4
> disp(x)
1 2 3 4
Vecteurs et matrices Matrices

Dialogue avec l'utilisateur

La commande input permet de demander à l'utilisateur d'un programme de fournir des


données.
La syntaxe est var = input('une phrase').
ache la chaîne de caractère "une phrase" et donne la main à l'utilisateur pour qu'il
entre la valeur de la variable var.
Exemple :
n=input(' entrez le nombre d itérations')
disp([' Vous avez tap'é : ' n])
Vecteurs et matrices Matrices

Dialogue avec l'utilisateur

La fonction fprintf permet d'écrire des informations sur l'écran ou dans un chier.
La syntaxe pour l'écran est la suivante :
Description :
fprintf('texteMessage')
fprintf('formattexte',listdesVariables)
Exemples :
x=5, y = sqrt(x)
fprintf('La racine de %d vaut %f \n',x,y ) ;
Vecteurs et matrices Matrices

Dialogue avec l'utilisateur

Spécication Description
%d décimal, utilisé en général pour les nombres entiers
%e Notation exponentielle. ex : 3.1415e+00)
%f notation en virgule xe
%s chaîne de caractères
Script

Script

▷ On peut enregistrer une séquence d'instructions dans un chier (appelé


un M-le ) et de les faire exécuter par MATLAB.

▷ Un tel chier doit obligatoirement avoir une extension de la forme .m


(d'où le nom M-le).

▷ On distingue deux types de M-le, les chiers de scripts et les chiers de


fonctions.

Conseil :
▷ Ne jamais créer un script ou une fonction ayant le même nom qu'une
fonction prédénie !

▷ En cas de doute, vériez que le nom que vous voulez donner à votre
script n'est pas déjà utilisé : pour cela, rechercher l'aide avec help, si elle
existe, c'est qu'une fonction de ce nom existe déjà !
Script

Script
Dénition : 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 chier avec une extension de la forme .m et de les faire exécuter par MATLAB.
Exemple de script :
Script

Remarque :
▷ Puisqu'un script partage les mêmes variables que l'invite de commande,
il est d'usage de commencer par faire le ménage : clear all.

▷ Pour exécuter un script, il sut de taper son nom dans la fenêtre


Matlab, sans préciser l'extension '.m'.

Exemple :
>> script1111
il va acher la gure qui contient un cercle.
Script

Auto-documentation de scripts ou de fonctions


Il est également possible d'auto-documenter ses chiers de commandes.
Pour cela, il sut de mettre une série de lignes de commentaires au début du
chier de commandes, avant toute autre commande.
Ces lignes de commentaires s'acheront à l'appel de la commande help.
Exemple :
Dans script1111.m, on a déni des commentaires comme auto-
documentation de ce script. On peut donc appeler cette aide par la commande help :
Script

Script
Fonction which

La fonction which permet de savoir quel est le chemin du script ou de la fonction que
MATLAB trouve en premier.
Par exemple, pour notre script1111.m :
>> which('script1111')
D : \SMA − S 5 \ ELMASSOUDI \ COURS
ou pour la fonction prédénie 'log ' :
>> which('log')
built-in
(C : \ProgramFiles \ MATLAB − R 2019a \ toolbox \ matlab \ elfun \ @double \ log )
Représentations graphiques

Représentations graphiques

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.
Représentations graphiques Courbes dans le plan (2D)

Courbes dans le plan (2D)

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énissant 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.
Représentations graphiques Courbes dans le plan (2D)

Exemple

Traçons la fonction sinus dans l'intervalle [−π, π] avec un pas de 0.01.


 x = -pi : 0.01 : pi ;
 y = sin(x) ;
 plot(x,y)

Courbe simple avec la commande plot


Représentations graphiques Courbes paramétrées

Courbes paramétrées

La fonction plot permet aussi le tracé de courbes planes dénies sous la forme :

x = f (t)
avec t ∈ [t0 , t1 ] Pour cela :
y = g (t)
on crée un vecteur t correspondant à une subdivision de l'intervalle [t0 , t1 ]
on crée deux vecteurs x et y en appliquant respectivement les fonctions f et g à t

on trace le graphe avec plot(x,y).


Représentations graphiques Courbes paramétrées

Courbes paramétrées

 t=0 : 2*pi/100 : 2 * pi ;
 plot(cos(t), sin(t))
Représentations graphiques Courbes paramétrées

Autres méthode de tracé de données en 2D


fonction inline

Admettons que je veux dénir une nouvelle fonction que j'appelle f dénie
mathématiquement par :
f (x) = sin(x) − xcos(x)
On écrira
f = inline('sin(x)-x.*cos(x)', 'x')
plot(x ; f(x)) ;
f = inline('sin(x)-a.*cos(x)', 'x','a')
Il va acher
f(x,a) = sin(x)-a.*cos(x)
f(1,2)
Représentations graphiques Command plot

Command plot

On peut spécier à 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 :

c : désigne la couleur du trait.

s : le symbole du point.

t : le type de trait.

Syntaxe : plot(x,y,'cst').
Représentations graphiques Command plot

Command plot
Représentations graphiques Command plot

Exemple :

 plot(x, x.ˆ2, 'r +')

Remarque : 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.
Représentations graphiques Améliorer la lisibilité d'une gure

Légender une gure

Dans une gure, il est préférable de mettre une description textuelle aidant à comprendre
la signication des axes et de connaître le but ou l'intérêt de la visualisation concernée.
Les labels des axes :
◦ title('titre') : titre pour le graphique
◦ xlabel('titre') : légende pour l'axe des abscisses
⋄ ylabel('titre') : légende pour l'axe des ordonnées
⋄ legend('titre1','titre2',...) : légende pour chaque courbe du graphique
⋄ text(x,y,'texte') : texte explicatif à la position (x ; y)
⋄ gtext('texte') : texte positionné à l'aide de la souris
axis([xmin xmax ymin ymax]) : pour dénir les échelles des axes
• grid : quadrillage du graphique
• grid o : sans quadrillage
Représentations graphiques Améliorer la lisibilité d'une gure

Exemple :

>> plot(x, x.ˆ2, 'r +'), xlabel(' abscisse x'), ylabel(' Ordonnée A'), title(' la fonction
carrée'), grid
Représentations graphiques Tracer plusieurs courbes

Acher plusieurs graphiques : subplot

L'idée générale est de découper la fenêtre graphique en zones, et d'acher un


graphe dans chacune des zones. On utilise l'instruction subplot en lui spéciant 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 :
Représentations graphiques Tracer plusieurs courbes

Exemple

V1=[0 :0.01 :2*pi] ;


V2=sin(V1) ;
V3=cos(V1) ;
V4=exp(V1) ;
V5=-sin(V1) ;
Le code pour acher les courbes V2,3,4 et 5 sur la même gure mais chacun sur une
zone propre à lui est le suivant :
subplot(2,2,1), plot(V1,V2)
subplot(2,2,2), plot(V1,V3)
subplot(2,2,3), plot(V1,V4)
subplot(2,2,4), plot(V1,V5)
Représentations graphiques Tracer plusieurs courbes

Exemple
Représentations graphiques Tracer plusieurs courbes

Superposition de graphiques

Il est possible de tracer des graphiques de natures diérentes, dans une même fenêtre
graphique.
Par défaut, les fonctions de tracés eacent systématiquement le graphique précédent. Il
est parfois utile de le conserver et de venir le surcharger avec le nouveau graphique. Pour
cela on utilise la commande hold.

Pour démarrer le mode surcharge, tapez hold on

pour revenir en mode normal, hold o.


Représentations graphiques Tracer plusieurs courbes

Superposition de graphiques
Tracer avec la commande hold
Exemple :
x = −pi : pi/2 : pi;
subplot(1,3,1)
plot(x; exp(−x.2 )); 1 1 1
subplot(1,3,2)
bar (x; exp(−x.2 );′ g ′ );
0.9 0.9 0.9

subplot(1,3,3) 0.8 0.8 0.8

plot(x; exp(−x.2 )); 0.7 0.7 0.7


hold on;
bar (x; exp(−x.2 );′ g ′ ); 0.6 0.6 0.6

hold off ; 0.5 0.5 0.5

0.4 0.4 0.4

0.3 0.3 0.3

0.2 0.2 0.2

0.1 0.1 0.1

0 0 0
-2 0 2 -2 0 2 -2 0 2
Représentations graphiques Tracer plusieurs courbes

Exemple

Par défaut la fenêtre graphique est eacée avant chaque commande plot. Pour
superposer des courbes par des appels successifs à cette fonction, il faut auparavant
avoir utilisé la commande hold on.
Exemple :

3
cos(x)
2.5 sin(x)
exp(-x)

hold on 2

x=-1 :0.1 :1 1.5

plot(x,cos(x),'o-r') 1

plot(x,sin(x),'x-b')
0.5
plot(x,exp(-x),'*-g')
0
legend('cos(x)','sin(x)','exp(-x)')
-0.5
hold o
-1
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1
Représentations graphiques Tracer plusieurs courbes

Exemple

On peut représenter plusieurs courbes sur la même gure de la manière suivante :

plot(x 1, y 1, x 2, y 2, ..., xn, yn)

Exemple 1 :
plot(x,cos(x),x,sin(x),x,exp(-x))
% Matlab va automatiquement utiliser des couleurs diérentes pour chaque courbe

Exemple 2 :
plot(x,cos(x),'o-r',x,sin(x),'x-b',x,exp(-x),'*-g')
% pour spécier le type de symbole et la couleur à utiliser pour chaque courbe
legend('cos(x)','sin(x)','exp(-x)')
% pour rajouter une légende
Représentations graphiques Tracer plusieurs courbes

Fonction plotyy

Pour représenter deux courbes ayant des ordonnées très diérentes (i.e. avec des ordres
de grandeurs très dié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 :
On veut représenter deux courbes dans le même domaine de dénition, mais ayant des
amplitudes très diérentes, :
108
1 5

0.8 4.5

0.6 4

x = 0 : 0.01 : 20 ; 0.4 3.5

y1 = sin(x) ; 0.2 3

y2 = exp( x) ; 0 2.5

-0.2 2
plotyy(x,y1,x,y2) ;
-0.4 1.5

-0.6 1

-0.8 0.5

-1 0
0 2 4 6 8 10 12 14 16 18 20
Représentations graphiques Tracer plusieurs courbes

Création d'une fenêtre graphique

Si vous venez d'eectuer un tracé, et que vous souhaitez appeler une autre
fonction de tracé, tout en conservant intacte la fenêtre graphique précédente, il est
possible d'en créer une nouvelle par la fonction gure.

Si la fonction gure est appelée sans argument, MATLAB crée une nouvelle fenêtre
graphique, en incrémentant le numéro de cette fenêtre. Il est possible de créer une
fenêtre spécique en précisant son numéro, comme argument de la fonction.

Toute fonction graphique utilisée après un appel de la fonction gure, produira un


tracé dans la nouvelle fenêtre graphique, sans modier celles déjà présentes.

Exemple : x = −pi : pi/20 : pi;


plot(x, exp(−x.ˆ2));
figure;
plot(x, cos(x));
figure(10);
plot(x, x. ∗ sin(x));
Représentations graphiques Courbes dans l'espace (3D)

Courbes dans l'espace (3D)

On peut dénir 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(Vx,Vy,Vz) ;
Représentations graphiques Courbes dans l'espace (3D)

Exemple
Exemple :
Voici un exemple de courbe paramétrée tracée dans un espace à trois dimensions :
t = -2 * pi : 2 * pi/100 :2 * pi ;
plot3(exp(-t/10).* sin(t),exp(-t/10).*cos(t),exp(-t)) ;
grid ;

Exemple 2 :
t = 0 :pi/50 :10*pi ;
st = sin(t) ;
ct = cos(t) ;
plot3(st,ct,t)
Instructions de contrôle

Instructions de contrôle

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

▷ Choix ventilé, l'instruction switch

Remarque :
Les structures de contrôle forment des blocs, délimités par :

▷ un mot clé spécique donnant le sens de la structure de


contrôle(exemple for, if, switch),

▷ et le mot clé end.


Instructions de contrôle Boucle FOR : parcours d'un intervalle

Boucle FOR : parcours d'un intervalle

Syntaxe :

for indice=borne-inf : borne-sup


séquence d'instructions
.
.
.
end
Instructions de contrôle Boucle FOR : parcours d'un intervalle

Boucle FOR : parcours d'un intervalle

Exemple :
Calculer n! avec la boucle for :
n = 5;
nfac = 1 ;
for k = 1 :n
nfac = nfac*k ;
end
nfac =120
Instructions de contrôle Boucle WHILE : tant que . . . faire

Boucle WHILE : tant que . . . faire

Syntaxe :

while 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 à eectuer tant que expression logique est vraie.
Interprétation :
Tant que expression logique est vraie le traitement séquence d'instructions est exécuté
sous forme d'une boucle. Lorsque expression logique devient faux, on passe à
l'instruction qui suit immédiatement l'instruction de n de boucle (end).
Instructions de contrôle Boucle WHILE : tant que . . . faire

Boucle WHILE : tant que . . . faire

Exemple :
Calculer n! avec la boucle while :
n = 5;
k = 1 ; nfac = 1 ;
while k <= n
nfac = nfac*k ;
k = k+1 ;
end
nfac =
120
Instructions de contrôle L'instruction conditionnée IF

L'instruction conditionnée IF

Syntaxe :

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 à eectuer 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.
Instructions de contrôle L'instruction conditionnée IF

L'instruction conditionnée IF

Il existe une séquence conditionnée sous forme d'alternatives :


Syntaxe 2 :

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.
Instructions de contrôle L'instruction conditionnée IF

L'instruction conditionnée IF

Exemple :
x=input('Donner une valeur de x : x=') ;
if x >= 0
disp('x est un nombre positif ') ;
else
disp('x est un nombre strictement négatif ') ;
end
Instructions de contrôle L'instruction conditionnée IF

L'instruction conditionnée IF

Il existe une séquence conditionnée sous forme d'alternatives :


Syntaxe 3 :

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
Instructions de contrôle L'instruction conditionnée IF

L'instruction conditionnée IF

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.
Instructions de contrôle L'instruction conditionnée IF

L'instruction conditionnée IF

Exemple :
n=input('Donner une valeur ') ;
if n == 1
A = ones(n)
elseif n == 2
A = magic(n)
elseif n == 3 | n == 4
A = rand(n)
else
error('numero d'exemple non prevu ...') ;
end

% A = magic(n) renvoie une matrice n2 construite à partir des entiers 1 à n2 avec des
sommes de ligne et de colonne égales.
% A = rand(n) renvoie une matrice n-par-n de nombres aléatoires.
Instructions de contrôle L'instruction switch

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 ...
case valeur3,
instructions3 ...
...
otherwise
instructions ...
end
Instructions de contrôle L'instruction switch

L'instruction switch

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 ux d'exécution sort de
la structure et reprend après le end.

▷ Si aucun case vérie l'égalité, le bloc qui suit otherwise est exécuté.
Instructions de contrôle L'instruction switch

L'instruction switch

Exemple :

x=input('Donner une valeur de x : x=') ;


a=2 ;b=5 ;
switch x
case 0,
resultat= a+b ;
case 1,
resultat= a*b ;
case 2,
resultat= a/b ;
case 3,
b
resultat=a ;
otherwise
resultat=0
end
Instructions de contrôle Interruption d'une boucle de contrôle

Interruption d'une boucle de contrôle

Pour provoquer interruption d'une boucle de contrôle, on utilise l'une des deux
instructions suivantes :

▷ continue : Pour interrompre l'exécution du bloc d'instructions en cours


d'exécution, et passer à l'itération suivante de la boucle for ou while.

▷ break : Pour interrompre l'exécution du bloc d'instructions en cours


d'exécution, et sortir totalement de la boucle for ou while, en ignorant
les itérations suivantes.
Fonction

fonction

Pour dénir une fonction sous Matlab, on écrit la dénition de la fonction dans un
chier avec une extension .m (fonction M-File).

Le nom du chier sans suxe 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.
Fonction

fonction

On dénit la fonction nomfonction de la manière suivante :

function [varS1 , ..., varSm ] =nomfonction(varE1 , ..., varEn )


séquence d'instructions

varS1 , ..., varSm sont les variables de sortie de la fonction ;

varE1 , ..., varEn sont les variables d'entrée de la fonction ;

séquence d'instructions est le corps de la fonction.


Fonction

Exemple de fonction
Méthode de dichotomie

function x = racine(a,b)
fa = f(a) ; fb = f(b) ;
if (fa * fb > 0)
x = -Inf ;
return ;
else
while (b-a) >1.e-5
x=(a+b)/2 ; fx=f(x) ;
if (sign(fx) == sign(fa))
a=x ; fa=fx ;
else
b=x ; fb=fx ;
end
end
end
x;
function y=f(x) % denition de f(x) (fonction locale)
y = x+3 ;
Remarque : Pour exécuter cette fonction on tape par exemple racine(-5,2).
Fonction Fonctions inline

Fonctions inline

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-le
auxiliaire .
La syntaxe des fonctions inline est simple :

nom-de-fonction = inline ('expression ', 'var1','var2', ...)

* L'expression mathématique qui constitue le corps de la fonction ainsi que les variables
sont considérées par MATLAB comme des chaines de caractères et doivent donc être
tapées entre apostrophes.
* Il est préférable que les fonctions soient vectorisées comme le sont les fonctions
prédénies. Il faut alors n'utiliser que des opérateurs pointés dans l'expression dénissant
la fonction.
* La déclaration des variables peut être optionnelle dans la dénition des fonctions
Inline, MATLAB eectuant une déclaration implicite de celles-ci. Cette facilité, source
d'ambiguïtés dans le cas de fonctions de plusieurs variables n'est pas à recommander
dans ce cas.
Fonction Fonctions inline

Fonctions Inline

Exemple :
>> f = inline ('x . ˆ 2 + x .* y', 'x', 'y')
f =
Inline fonction :
f (x, y ) = x . ˆ 2 + x . * y
>> f (1, 2)
ans =
3.0000
>> f ([1 6], [2 1])
ans =
3.0000 42.0000
Fonction Fonctions anonymes

Fonctions anonymes

Ce troisième mode de dénition de fonctions utilise comme pour les fonctions Inline
l'espace de travail courant. La syntaxe minimale est peu explicite, mais les fonctions
ainsi dénies seraient plus ecaces que fonctions Inline.
Syntaxe :

nom-de-fonction = @(var1, var2, ...) expression

* Contrairement aux fonctions Inline l'expression mathématique qui constitue le corps de


la fonction ainsi que les variables ne doivent pas être tapées entre apostrophes.
* Il est préférable que les fonctions soient vectorisées comme le sont les fonctions
prédénies. Il faut alors n'utiliser que des opérateurs pointés dans l'expression dénissant
la fonction.
Fonction Fonctions anonymes

Exemple :

>> g = @(x, y) x.ˆ2 + x.* y


g =
@(x, y) x.ˆ2 + x.* y
>> g(1, 2)
ans =
3.0000
>> g ([1 0], [2 1])
ans =
3.0000 0.0000
Fonction Fonctions anonymes

Tracer l'allures d'une fonction avec fplot

la fonction fplot permet de tracer une fonction entre deux bornes, sans dénir un
ensemble d'abscisses.
Syntaxe : fplot(f,xinterval)
Exemple :
>> g = @(x) x.ˆ2 + x
g =
@(x) x.ˆ2 + x
fplot(g,[-1,2])
Fonction Fonctions anonymes

Remarque et conseil :

Lors de la dénition 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énit une fonction dans un chier, il est préférable de mettre un ( ;)
à la n de chaque commande constituant la fonction. Ainsi, on évitera l'achage
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.


Fonction Fonctions anonymes

fonction
Structuration des programmes

Un programme peut être constitué d'un simple script MATLAB, mais pour résoudre des
problèmes complexes, ou nécessitant beaucoup de traitements, il est très souvent utile,
de structurer le programme en :

un script principal, qui joue le rôle de point d'entrée du programme ;

un ensemble de fonctions, qui sont appelées soit par le script principal, soit par les
fonctions elles-mêmes.
Fonction Fonctions anonymes

Structuration des programmes


Équations diérentielles

Équations diérentielles

Matlab possède plusieurs solveurs approchés pour les équations diérentielles du type

y ′ (t) = f (t, y (t)), t ∈ IR,




y (t0 ) = y0
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 : [t 0, t 1, ..., tf ] temps où on veut calculer la solution y.

y0 : Condition initiale y (t 0) (vecteur colonne n composantes).

T : En sortie les temps où est calculée la solution.

Y : Les valeurs de la solution aux temps T.


Équations diérentielles

Solveur ode45, ode23

Les principales fonctions de MATLAB qui permettent la résolution des équations


dié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).


Équations diérentielles

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 :
- On peut écrire une équation diérentielle quelconque

d ny dy d 2 y d n−1 y
 
=f t, y , , 2 , . . . , n−1
dt n dt dt dt
sous la forme d'un système d'équation diérentielles du premier ordre en faisant le
changement de variable suivant :

dy d 2y d (n−1) y
y1 = y , y2 = , y3 = , . . . , y =
dt 2 dt (n−1)
n
dt
et on obtient 

 ẏ1 = y2
ẏ2 = y3




.


 .
.




ẏn = f (t, y1 , y2 ; ..., yn )

Équations diérentielles

Problème

On cherche à résoudre un système d'équations diérentielles ordinaires (EDO, en anglais


ODE) du premier ordre :



 ẏ1 = f1 (t, y1 , y2 , ..., yn )
ẏ2 = f2 (t, y1 , y2 , ..., yn )




.


 .
.




ẏn = fn (t, y1 , y2 ; ..., yn )

avec les conditions initiales y1 (0) = y10 , ... ,yn (0) = yn0 .
Équations diérentielles

Méthode

La dénition d'un système repose sur la dénition de n fonctions de n+1 variables. Ces
fonctions devront être programmées dans une fonction MATLAB sous la forme
canonique suivante :
function ypoint = f (y, t)
ypoint(1) = une expression de y(1),y(2)...y(n) et t.
...
ypoint(n) = une expression de y(1),y(2)...y(n) et t.
ypoint = ypoint( :) ;
end
▷ 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 diérentiel.
▷ La dernière ligne est nécessaire car la fonction doit renvoyer un vecteur colonne et non
un vecteur ligne.
Équations diérentielles

Méthode

Pour résoudre cette équation dié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.
Équations diérentielles

Méthode

L'appel du solveur prend donc en général la forme suivante :


[t, y ] = ode 45(′ f ′ , [tmin tmax], [y 10 y 20 ... yn0]) ;
y1 = y( :,1) ;
y2 = y( :,2) ;
...
yn = y( :,n) ;
plot(t,y1, t,y2) % par exemple on trace y1(t) et y2(t)
plot(y1,y2) % ou bien y2(y1) (plan de phase pour les oscillateurs)
Les lignes yi = ... servent à extraire les diérentes fonctions yi dans des colonnes simples.
Nous avons utilisé ici ode45 qui est un Runge-Kutta-Merson imbriqué d'ordre 4 et 5.
Équations diérentielles

Exemple

On considère l'équation diérentielle du second ordre

y ′′ (t) = −ty ′ (t) − y (t); t ∈ [0, 1] avec y (0) = 1, y ′ (0) = 0

2
▷ La solution exacte est y (t) = e −t /2 .
▷ Transformer cette équation en un système

Y ′ (t) = A(t)Y (t)


  
y (t)
où Y (t) =
Y (0) = η y ′ (t)
avec
A = [0 1; −1 − t] et Y (0) = η = [1; 0]
Équations diérentielles

Programme

function [T,Y] = call-fonction()


tspan = [0 1] ;
y 10 = 1;
y 20 = 0;
[T , Y ] = ode 45(@secondmembre, tspan, [y 10 y 20]);
plot(T,Y( :,1),'o')
end
function dydt=secondmembre(t,y)
dydt=ones(2,1)
dydt(1)=y(2) ;
dydt(2) = −t ∗ y (2) − y (1);
end
Équations diérentielles

exemple

Résoudre l'équation suivante

Y ′ (t) = −y (t) + t + 1


Y (0) = 0.3 et t ∈ [0; 0.4]


Équations diérentielles

Programme
clc, clear all, close all
f = @(t, y ) − y + t + 1;
y 0 = 1;
h = 0.001;
a = 0; b = 0.4;
h = 0.01 ;
N = floor ((b − a)/h);
t = [a : h : b];
[t 45, y 45] = ode 45(f , t, y 0);
hold on
plot(t 45, y 45)
yex = t + exp(−t);
plot(t, yex)
y = zeros(1, N + 1);
y (1) = y 0;
fori = 1 : N
y (i + 1) = y (i) + h ∗ f (t(i), y (i));
end
yeul = y ;
plot(t, yex,′ y ′ );
legend(′ e ′ ,′ d ′ ,′ r ′ )

Vous aimerez peut-être aussi