Cours Matlab - Partie 1
Cours Matlab - Partie 1
Cours Matlab - Partie 1
Cours : MATLAB
Filière : GEE/GI S5
Pr: M. SAYYOURI
L Graphiques 2D et 3D
Recherche de zéro d’une fonction
A Résolution numériques des équations différentielles
N Initiation à Simulink
Initiation à Stateflow
2
Introduction
Introduction
Matlab (MATrix LABoratory) est l’une des principales plateformes de développement.
Calculs élémentaires
Graphiques 2D et 3D
Matlab est un système interactif de calcul numérique et de visualisation graphique.
Recherche de zéro Il possède un langage de programmation simple et efficace, constitué de :
d’une fonction
➢ de nombreux outils du calcul matriciel,
Résolution numérique
➢ des principaux algorithmes de l’analyse numérique (schémas d’intégration, différentiation...),
d’équations
➢ des outils pour le traitement du signal,
différentielles
Initiation à Simulink
➢ des outils de visualisation en 2D et 3D,
Initiation à Stateflow ➢ l’outil Simulink, pour modéliser et simuler des systèmes en utilisant des schémas-blocs,
➢ des outils pour concevoir des interfaces utilisateur graphiques (GUI pour « Graphical User Interface »)
personnalisées,
➢ la prise en charge d’échange de données et de signaux avec plusieurs type de matériels (oscilloscope,
carte d’acquisition, carte de contrôle, etc.),
➢ l’intégration d’applications externes écrites en C, C++, Fortran, Java, Excel, etc.
➢ la conversion d'applications MATLAB en C et C++ . 3
M.SAYYOURI
Introduction
Introduction
Calculs élémentaires
Graphiques 2D et 3D
fonction
Résolution numérique
d’équations
différentielles
La fenêtre de commande (ou ligne de
Initiation à Simulink
Initiation à Stateflow
commande):
c’est l’outil de base de Matlab. Elle permet entre
autre de faire n’importe quelle opération, de définir
et affecter les variables d’environnement, d’utiliser
les toolboxes via leurs fonctions, …
4
M.SAYYOURI
Introduction
Introduction
Calculs élémentaires
Graphiques 2D et 3D
fonction
Résolution numérique
d’ équations
différentielles
Initiation à Simulink
La fenêtre d’historique de commande :
Initiation à Stateflow permet de répéter les commandes précédentes en
double-cliquant sur la commande concernée dans
cette fenêtre. On peut obtenir le même résultat en
ligne de commande par l’appui répétitif sur la
touche « flèche haut » du pavé numérique.
5
M.SAYYOURI
Introduction
Introduction
Calculs élémentaires
Graphiques 2D et 3D
fonction
Résolution numérique
d’équations
différentielles
La fenêtre d’espace de travail :
Initiation à Simulink
Cette fenêtre permet de visualiser les différentes
Initiation à Stateflow
variables existantes, en affichant leur nom, leur
contenu (ou leur dimension) ainsi que le min et le
max des données qu’elle contient. On peut obtenir
la liste des variables ainsi que leurs dimensions en
ligne de commande en tapant la commande
« whos ».
6
M.SAYYOURI
Introduction
Introduction
Calculs élémentaires
Graphiques 2D et 3D
fonction
Résolution numérique
d’équations
différentielles
7
M.SAYYOURI
Calculs élémentaires
Introduction Matlab comme Calculatrice
Calculs élémentaires
➢ Le symbole [>>] indique à l’utilisateur où il faut rentrer la commande
Graphiques 2D et 3D
➢ Commençons par les operateurs les plus courants : +, -, *, /, ^. Le dernier signifie «puissance».
Recherche de zéro d’une
Les parenthèses s’utilisent de manière classique.
fonction
Résolution numérique
➢ Un dernier point sur les variables :
d’équations
▪ MATLAB fait la différence entre les minuscules et les majuscules.
différentielles
▪ Les noms de variables peuvent avoir une longueur quelconque.
Initiation à Simulink
▪ Les noms de variables doivent commencer par une lettre.
Initiation à Stateflow ➢ Matlab comporte un très grand nombre d’opérateurs, de commandes et de fonctions. On peut
taper à titre d’exemple les commandes suivantes :
• help permet d’obtenir l’aide de l’aide et donne une liste thématique ;
• help nom de fonction donne la définition de la fonction désignée;
• lookfor sujet donne une liste des rubriques de l’aide en ligne en relation avec le sujet
indiqué,
• clear permet d’effacer une partie ou toutes les variables définies jusqu’à Présent,
• who affiche les noms de toutes les variables en cours,
• whos affiche toutes les variables avec les détails..
M.SAYYOURI
Calculs élémentaires
Introduction
Dans Matlab, on trouve des variables prédéfinies :
Calculs élémentaires
• ans qui contient le dernier résultat de calcul
Graphiques 2D et 3D
• i et j qui représentent racine −1 .
Recherche de zéro d’une
• Pi qui représente 𝜋
fonction
• eps qui est un nombre prédéfini.
Résolution numérique
• inf qui représente plus infini
d’équations
• NaN : pas un nombre (not a number)
différentielles
Initiation à Simulink Attention : Ces variables ne sont pas protégées, donc si vous les affectez, elles ne gardent pas leur
Initiation à Stateflow 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 ! !
Toutes les fonctions courantes et moins courantes existent dans Matlab. On retiendra que pour
appliquer une fonction à une valeur, il faut mettre cette dernière entre parenthèses.
Voici une liste non exhaustive :
• Fonctions trigonométriques et inverses : sin, cos, tan, asin, acos, atan
• Fonctions hyperboliques (on rajoute «h») : sinh, cosh, tanh, asinh, acosh, atanh
• Racine, logarithmes et exponentielles : sqrt, log, log10, exp 9
M.SAYYOURI
Calculs élémentaires
Introduction • La notion de fonction est plus générale dans Matlab, et certaines fonctions peuvent avoir
Calculs élémentaires plusieurs entrées (comme besselj par exemple) mais aussi plusieurs sorties.
Graphiques 2D et 3D
Initiation à Simulink On utilise les crochets [ et ] pour définir le début et la fin de la matrice. Ainsi pour définir une variable M
1 2 3
Initiation à Stateflow
contenant la matrice 4 5 6 , on écrira: >> % 3 écriture d'une matrice
7 8 9 >> M=[1 2 3
456
7 8 9]
>> M=[1 2 3; 4 5 6 ; 7 8 9]
>> M=[1, 2 ,3 ; 4, 5, 6 ; 7, 8, 9]
Matlab propose des commandes pour créer certaines matrices particulières très simplement. Pour plus
d’information, lire le help de chaque fonction.
10
M.SAYYOURI
Calculs élémentaires
Introduction
Commande Description
Calculs élémentaires
ones(n,m) Matrice de taille n × m ne contenant que des 1.
Graphiques 2D et 3D
zeros(n,m) Matrice de taille n × m ne contenant que des 0.
Recherche de zéro d’une
eye(n,m) Matrice de taille n × m contenant des 1 sur la première diagonale et des 0 ailleurs.
fonction
diag(v) Matrice diagonale où les éléments de la diagonale sont les composantes du vecteur v.
Résolution numérique
rand(n,m) Matrice de taille n × m contenant des nombres aléatoires
d’équations
différentielles
Matlab dispose également de moyens très simples pour créer des listes. La commande [a:p:b] crée une
liste dont les éléments sont: a, a + p, a + 2*p, . . . , a + n*p, où n ∈ N,
Initiation à Simulink
a+n*p ≤ b < a+(n+1)*p
Initiation à Stateflow
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.
linspace : Un autre cas particulier de [a:p:b] est la fonction linspace(a,b,n). Celle-ci crée une
liste de n éléments uniformément répartis entre a et b. Autrement dit, linspace(a,b,n) est la
même chose que [a: (b−a)/(n−1):b].
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 à la droite de A, et [A ;B] est le tableau obtenu en
collant B au-dessous de A. Comme d’habitude, il faut faire attention aux tailles de A et de11B.
M.SAYYOURI
Calculs élémentaires
Introduction
Opérations avec les matrices
Calculs élémentaires Matlab permet de faire certaines opérations avec des matrices. Dans ce qui suit, A et B sont des tableaux et
Graphiques 2D et 3D c est un scalaire.
Recherche de zéro d’une Commande Description
fonction A+B Addition terme à terme ; A et B doivent avoir le même format.
Résolution numérique
A+c = c+A Addition de c aux éléments de A.
A-B Soustraction terme à terme ; A et B doivent avoir le même format.
différentielles
A-c Soustraction de c aux éléments de A.
Initiation à Simulink A*B Produit matriciel standard ; nb. col. A doit être le même que nb de ligne de B
Initiation à Stateflow A.*B Multiplication terme à terme ; A et B doivent avoir le même format.
Aˆn (n ∈ 𝒁+ ) A * A * . . . * A (n fois) ; A doit être carrée.
𝑏𝑖𝑗
A.ˆB Tableau dont les éléments sont 𝑎𝑖𝑗
A’ Transposition et conjugaison.
B/A Le résultat est un tableau X tel que XA = B. Si A est inversible, alors X = B 𝐴−1 ;
nb. col. A doit être le même que nb. col. B.
A\B Le résultat est un tableau X tel que AX = B. Si A est inversible, alors X = 𝐴−1 B
; nb. Ligne de A doit être le même que nb. Ligne de B.
A./B Division terme à terme des éléments de A par ceux de B ; A et B doivent avoir le
même format.
A.\B Division terme à terme des éléments de B par ceux de A ; A et B doivent avoir le
même format. 12
M.SAYYOURI
Calculs élémentaires
Introduction
Fonctions sur les matrices
Calculs élémentaires
Etant donnée une matrice A, il y a un certain nombre de choses que l’on peut calculer en rapport
Graphiques 2D et 3D
avec A. Nous présentons ici quelques fonctions définies dans Matlab prenant comme paramètre
Recherche de zéro d’une
des tableaux.
fonction Commande Description
Résolution numérique det(A) Renvoie le déterminant de A ; celle-ci doit être carrée.
d’équations trace(A) Renvoie la trace de A.
différentielles rank(A) Renvoie le rang de A
Initiation à Simulink
diag(A) Renvoie la première diagonale de A.
Initiation à Stateflow
norm(v) Renvoie la norme euclidienne de v ; v est un vecteur. Il est aussi possible de
calculer d’autres normes ;
mean(A) Renvoie une liste contenant la moyenne des éléments de chaque colonne.
sum(A) Renvoie une liste contenant la somme des éléments de chaque colonne.
prod(A) Renvoie une liste contenant le produit des éléments de chaque colonne.
max(A) Renvoie une liste contenant la valeur maximale chaque colonne.
min(A) Renvoie une liste contenant la valeur minimale de chaque colonne.
length(A) Renvoie le maximum entre le nombre de lignes et de colonnes
Finalement, on précise que toutes les fonctions mathématiques classiques (cos, sin, log, exp, etc)
s’appliquent également aux tableaux. Le résultat est un tableau où l’on a appliqué terme
13 à terme la
M.SAYYOURI fonction en question.
Exercices d’application
Introduction Exercice 1 2
3
fonction Exercice 2
Résolution numérique
1. Créer le vecteur colonne
d’équations
Initiation à Stateflow
a) Créer un vecteur colonne à 3 éléments, appelé ua; contenant les éléments de la troisième colonne de A:
b) Créer un vecteur colonne à 5 éléments, appelé ub; contenant les éléments de la deuxième ligne de A:
c) Créer un vecteur colonne à 9 éléments, appelé uc; formé par les éléments de la première, de la troisième et
de la cinquième colonne de A:
d) Créer un vecteur colonne à 10 éléments, appelé ud; formé par la première et la deuxième ligne de A:
14
M.SAYYOURI
Programmation sous Matlab
Introduction
Un script Matlab est composé d'une suite d'instructions ou de commandes, toutes séparées par une virgule
Programmation sous
Matlab
(,), un point-virgule (;) ou un retour a la ligne ().
Graphiques 2D et 3D Matlab facilite l’édition d’un nouveau script en utilisant le bouton (New Script) qui fait appel a l’éditeur de
Recherche de zéro d’une
Matlab.
fonction
Résolution numérique
L’éditeur de Matlab crée par défaut un nouveau script sous le nom ‘untitled.m’. Le programmeur peut
d’équations spécifié ultérieurement un nom de son choix en utilisant le bouton (Save).
différentielles
Généralement, le script est sauvegardé dans un fichier avec l’extension ‘.m’ (ex : script1.m) sous le dossier
Initiation à Simulink
Initiation à Stateflow courant. On peut aussi charger un fichier déjà édite en utilisant le bouton (Open).
L’exécution du script se fait a travers l’invite de commande en spécifiant juste le nom du script.
L’exécution peut être effectuée directement depuis l’éditeur en cliquant sur le bouton (Run). Néanmoins,
les sorties des scripts (affichage des résultats) se fait toujours sur la fenêtre des commandes.
15
M.SAYYOURI
Programmation sous Matlab
Introduction
Affichage
Programmation sous
L’affichage des variables se fait simplement par la spécification de leurs noms sans point virgule à la fin de
Matlab
Graphiques 2D et 3D la ligne.
Recherche de zéro d’une La commande disp(X) affiche une variable X (chaine de caractères, entier, …) sur la fenêtre des
fonction
commandes. La commande disp n’accepte qu’un seul type de donnée à la fois.
Résolution numérique
La commande fprintf() accepte tous genre de variable en utilisant leurs formats de types : %d pour les
d’équations
différentielles entiers, %f pour les réels, %s pour les chaines de caractères, %c pour le caractères, … . On peut ajouter un
Initiation à Simulink retour a la ligne via ‘\n’ et une tabulation via ‘\t’.
Initiation à Stateflow
La commande sprintf() sauvegarde tous genre de variables de la même manière que fprintf, mais sans
affichage sur la fenêtre des commandes. sprintf() retourne une chaine de caractères qui peut être affichée
ultérieurement en utilisant la commande disp().
Exercice
1. Écrire un script Matlab eq2degre.m qui permet de résoudre une équation de second degré à une seule
variable ,
2. Écrire un script Matlab qui permet de tester la parité d’un nombre entier naturel donné par l’utilisateur
18
M.SAYYOURI
Programmation sous Matlab
Introduction %équation de second degré
a=input('entrer a: ');
Programmation sous
b=input(' entrer b: ');
Matlab c=input('entrer c : ');
Graphiques 2D et 3D delta=b^2-4*a*c;
if delta > 0
Recherche de zéro d’une
disp('l'‘équation admet deux solutions différentes');
fonction x1=(-b+sqrt(delta))/2*a
Résolution numérique x2=(-b-sqrt(delta))/2*a
elseif delta==0
d’équations
disp('l'‘équation admet une seule solution');
différentielles x2=-b/2*a
Initiation à Simulink else
disp('l'‘équation n''admet pas de solutions');
Initiation à Stateflow
end
entrer a: 1
entrer b: -3
entrer c : 2
l‘équation admet deux solutions différentes
x1 =
2
x2 =
19
1
M.SAYYOURI
Programmation sous Matlab
Introduction On a aussi la possibilité d'utiliser l’instruction switch-case comme pour le langage C :
Programmation sous
Graphiques 2D et 3D
❖ L’instruction for pour les boucles à nombre d’itération connu :
Recherche de zéro d’une for variable = valeur initiale : pas : valeur finale
fonction commandes
Résolution numérique
end ;
d’équations
différentielles
❖ et l’instruction while pour les boucles à condition de continuation.
Initiation à Simulink while condition de continuation
Initiation à Stateflow commandes
end ;
Graphiques 2D et 3D
même nom de la fonction à déclarer:
Recherche de zéro d’une Une fonction est déclarée comme suit :
fonction
function nomdefonction(inpar1, inpar 2, …)
Résolution numérique
% une fonction sans paramètre de sortie.
d’équations
différentielles
function outpar = nomdefonction(inpar1, inpar 2, …)
Initiation à Simulink % une fonction avec un seul paramètre de sortie.
Initiation à Stateflow
function [outpar1, outpar2, …] = nomdefonction(inpar1, inpar 2, …)
% une fonction avec plusieurs paramètres de sortie.
Il faut noter que :
➢ La fonction ne se termine pas par end comme dans les autres langages évolués.
➢ Le point-virgule n’est pas nécessaire à la fin des lignes, sauf si un affichage du résultat de la ligne en
question est requis.
22
M.SAYYOURI
Programmation sous Matlab
Introduction %le factoriel d’un nombre function seconeq(a,b,c); %équation de second degré
function fact(n) delta=b^2-4*a*c;
Programmation sous
s=1; if delta > 0
Matlab disp('l''équation admet deux solutions différentes');
for i=1:n x1=(-b+sqrt(delta))/2
Graphiques 2D et 3D
s=s*i; x2=(-b-sqrt(delta))/2
Recherche de zéro d’une end elseif delta==0
fonction S disp('l''équation admet une seule solution');
>> fact(5) x1=-b/2
Résolution numérique
s = elseif delta<0
d’équations
120 disp('l''équation n’admet pas de seule solution');
end
différentielles
>> seconeq(1,-3,2)
Initiation à Simulink function [s p]=somprod(n); l'équation admet deux solutions différentes
s=0; p=1; x1 =
Initiation à Stateflow
for i=1:n 2
s=s+i; x2 =
p=p*i; 1
End
function [s p]=somprod(n);
>>[s p]=somprod(5)
s=0; p=1;
s = i=1;
15 while i<=n
p = s=s+i; p=p*i; i=i+1;
120 end;
23
M.SAYYOURI
Programmation sous Matlab
Introduction Opérateurs relationnels et logiques
Programmation sous
Des expressions relationnelles et logiques peuvent être utilisées dans MATLAB exactement comme dans les
Matlab
Graphiques 2D et 3D
autres langages de programmation.
Recherche de zéro d’une ➢ Opérateurs relationnels
fonction Les opérateurs relationnels sont : <, <=, >, >=, ==, ~=
Résolution numérique
La comparaison d’égalité se fait à l’aide de [==] et l’inégalité à l’aide de [~=]. Ces opérateurs peuvent être
d’équations
différentielles
utilisés avec des scalaires ou des matrices. Le résultat d'évaluation d'une expression relationnelle est 1 (vrai)
Initiation à Simulink ou 0 (faux).
Initiation à Stateflow ➢ Opérateurs logiques
Les expressions relationnelles peuvent être combinées en utilisant les opérateurs logiques suivants : &, | , ~
qui signifient respectivement "et" (AND), "ou" (OR) et "non" (NOT). Ces opérateurs sont appliqués sur les
matrices élément par élément. Les opérateurs logiques ont une priorité plus faible que les opérateurs
relationnels, qui à leur tour ont une priorité plus faible que les opérateurs arithmétiques.
Calcul polynômial
Introduction
Les polynômes
Calcul polynômial
Définition
Graphiques 2D et 3D • Un polynôme de la forme p ( x) a x a x ... a x a x a est représenté en Matlab par un
n
n
n 1
n 1
2
2
1 0
fonction • Afin d’évaluer un polynôme pour une valeur fixe a, on utilise la commande polyval(P, a).
Résolution numérique Opérations arithmétiques
d’équations
• Matlab fournit deux opérations arithmétiques de multiplication et de division à travers les commande conv
différentielles
et deconv. Il reste au programmeur de programmer les deux autres opérations d’addition et de soustraction.
Initiation à Simulink
• C = conv(A, B) est la convolution des tableaux A et B, c'est à dire les coefficients du produit des deux
Initiation à Stateflow
polynômes.
• [Q, R] = deconv(A, B) est la déconvolution des tableaux A et B ou Q est le quotient de la division et R est le
reste (A = conv(B ,Q) + R).
Exemple
Soient p et q deux polynômes définis par :
P(x)=2x^3-x^2+3x-5 et q(x)=3x^2-5x+3
Calculer p(2) et q(1.5)
Calculer s(x)=p(x)+q(x) ; r(x)=2p(x)-3q(x) ; t(x)=p(x)q(x) ; u(x)=p(x)/q(x)
M.SAYYOURI 26
?
Calcul polynômial
Introduction
Les polynômes
Calcul polynômial
>> p=[2 -1 3 -5], q=[3 -5 3] >> t=conv(p,q)
Graphiques 2D et 3D
p= t=
Recherche de zéro d’une
2 -1 3 -5 6 -13 20 -33 34 -15
fonction
q= >> [u,v]=deconv(p,q)
Résolution numérique 3 -5 3
d’équations >> a=polyval(p,-2) u=
différentielles a= 2/3 7/9
Initiation à Simulink -31
Initiation à Stateflow
>> b=polyval(q,1.5) v=
b= 0 0 44/9 -22/3
9/4
>> s=p+[0 q] >> conv(q,u)+v
s= ans =
2 2 -2 -2 2 -1 3 -5
>> r=2*p-3*[0 q] >> p
r= p=
4 -11 21 -19 2 -1 3 -5
M.SAYYOURI 27
?
Calcul polynômial
Introduction Racines et Interpolations
Calcul polynômial • La commande roots(P) fait extraire les racines d’un polynôme P.
Graphiques 2D et 3D • La commande poly(V) retourne un polynôme depuis ses racines stockées dans le vecteur V.
Recherche de zéro d’une
• La commande Polyfit(X, Y, n) permet d’approximer un polynôme de dégrée n qui passent
fonction
approximativement par les points (X, Y). Cette approximation P(X(i))=Y(i) est au sens des moindres carrées :
Résolution numérique
Calcul polynômial
Introduction Dérivation et Intégration d’un polynôme
Calcul polynômial • La commande polyder(P) retourne la dérivée d’un polynôme P.
Graphiques 2D et 3D • La commande polyint(P) retourne l’intégral d’un polynôme P. Si on veut calculer l’intégral entre deux
Recherche de zéro d’une
point x1 et x2, on utilise la commande polyval pour évaluer l’intégral sur ces deux points puis on applique
fonction
la soustraction.
Résolution numérique
Introduction
Résolution des Systèmes Linéaires
Résolution des Systèmes
• Un système linéaire est un ensemble de n équations à p variables de la forme :
Linéaires
Graphiques 2D et 3D a x a x ... a x
11 1 12 2 1p p
b1
a x a x ... a x b
Recherche de zéro d’une
21 1 22 2 2p p 2
fonction
Résolution numérique
...
d’équations
a x a x ... a x b
différentielles
p 11 1 p 12 2 p 1 p p p
Initiation à Simulink
a x a x ... a x
p1 1 p2 2 pp p
b p
Initiation à Stateflow
Les sont aij appelés les coefficients du système ; les bk sont le second membre du système (ou la partie
gauche).
En calcul matriciel, un système linéaire s’écrit sous la forme: AX = B, ou
• A matrice des coefficients.
• X vecteur colonne des inconnues.
• B vecteur colonne comme second membre. 30
M.SAYYOURI
Résolution des Systèmes Linéaires
?
Introduction Pour les commande A\B et B/A, si la matrice A n’est pas singulière, le
Résolution des Systèmes
>> A=[1 2 1;1 -1 1;2 3 1],B=[1 ;0; 1] résultat est (0/0) pour un nombre infini de solutions, et (k/0, k≠0) pour
A= l’ensemble vide (). Pour les commande inv(A)*B et B*inv(A), si la
Linéaires
1 2 1 matrice A n’est pas singulière, le résultat est toujours (k/0, k≠0).
Graphiques 2D et 3D 1 -1 1
Recherche de zéro d’une 2 3 1 >> A1=[1 2;2 4],B1=[2 ;3] >> A1=[1 2;2 4],B1=[2 ;4]
fonction B= A1 = A1 =
Résolution numérique 1 1 2 1 2
d’équations
0 2 4 2 4
différentielles
1 B1 = B1 =
>> X=A\B 2 2
Initiation à Simulink
X= 3 4
Initiation à Stateflow
-1/3 >> X1=A1\B1 >> X1=inv(A1)*B1
1/3 X1 = X1 =
2/3 1/0 1/0
>> X=inv(A)*B -1/0 1/0
X= >> X1=inv(A1)*B1 >> X1=A1\B1
-1/3 X1 = X1 =
1/3 1/0 0/0
2/3 1/0 0/0
M.SAYYOURI 32
?
M.SAYYOURI 33
?
Initiation à Simulink
[ 3, 2]
>> syms x y z % système à trois inconnues Dom::Interval(-3, 3)
Initiation à Stateflow
>>S=solve(x+y+z-5, x-y-z-1,2*x+y-2*z+1) >> syms x, solve('x^2-9 >=0')
S= ans =
x: [1x1 sym]
y: [1x1 sym] Dom::Interval([3], Inf)
z: [1x1 sym] Dom::Interval(-Inf, [-3])
>> [S.x S.y S.z]
ans =
[ 3, -1, -1]
M.SAYYOURI 34
?
Exercice
La vitesse d’une particule est exprimée par la fonction v(t)=tsin(t/2)
1. Trouver la position de la particule 𝑥(𝑡) sachant que la position initiale est 𝑥(0) = 0
2. Trouver l’accélération de la particule 𝑎(𝑡) 36
M.SAYYOURI
?
Initiation à Stateflow
Exemple
1
2
1
x
k
• Ecrire la commande qui permet de calculer pour |x| < 1
1 x
k 0
fonction
On peut superposer un quadrillage (ou le faire disparaitre) par les commandes: grid (ou grid off)
Résolution numérique On peut aussi mettre un titre, mettre des étiquettes aux axes: title ('graphe de sinus'), xlabel('x'),
d’équations ylabel('sinus(x)')
différentielles
Initiation à Simulink
38
M.SAYYOURI
Graphique 2D
Introduction Afin d'afficher deux ou plusieurs graphes en même temps, une série des coordonnées (x, y) est
Calculs élémentaires introduise a la fonction plot: plot(x1, y1, x2, y2, …) .
Graphiques 2D et 3D La legende (surtout en cas de plusieurs graphes) peut être affichée en utilisant la commande
Recherche de zéro d’une legend(legend1, legend2, …).
fonction La commande legend('show') permet de montrer la légende, par contre la commande
Résolution numérique legend('hide') permet de la cacher.
d’équations
différentielles
Initiation à Simulink
Initiation à Stateflow
>> x = -2*pi : 0.01 : 2*pi ; y = sin(x); z=cos(x);
>> plot(x, y, x, z)
>> legend('sin(x)','cos(x)')
>> legend('hide')
>> legend('show')
>> title ('Graphe de Sinus et cosnus')
>> xlabel('x')
>> ylabel('y')
39
M.SAYYOURI
Graphique 2D
Introduction
La commande plot(x, y, LineSpec) affiche un graphe avec la spécification donnée par LineSpec qui est
Calculs élémentaires
formée au plus de trois valeurs: style de ligne, type de marquer, et la couleur.
Graphiques 2D et 3D Par exemple plot(x, y, '-+b') affiche un graphe bleu de la forme -+-+-+…
Recherche de zéro d’une Noter bien que la spécification 'type de marqueur' est utilisée pour les points choisies (vecteurs x et y), par
fonction contre la spécification 'style de ligne' couvre toute la courbe.
Résolution numérique
Symbole Style de ligne Symbole Type de Marqueur
d’équations
- Ligne solide (par défaut) o Cercle
différentielles
-- La ligne non continue + Signe plus
Initiation à Simulink
: La ligne pointillée * Astérisque
Initiation à Stateflow -. La ligne tiret-point . Point
Symbole Couleur x Croix
y Jaune s Carré
m Magenta d Diamant
c Cyan ^ Triangle vers le haut
r Rouge V Triangle vers le bas
g Vert > Triangle pointant à droite
b Bleu < Triangle pointant à gauche
w Blanc p Pentagramme
k Noir h Hexagramme 40
M.SAYYOURI
Graphique 2D
Introduction
Exemple
Calculs élémentaires
d’équations
>> legend('sin(x)','cos(x)')
différentielles >> plot(x, y, '-ob', x, z, '-.dr')
Initiation à Simulink >> legend('sin(x)','cos(x)')
Initiation à Stateflow >> title('Graphe de Sinus et cosnus')
>> xlabel('x')
>> ylabel('y')
41
M.SAYYOURI
?
Graphique 2D
Introduction Exemples 𝑓 𝑥 = sin 𝑥 𝑠𝑖 𝑥 > 0
Calculs élémentaires Imaginons que l'on veut définir la fonction suivante :ቊ
𝑓 𝑥 = sin 2𝑥 𝑠𝑖 𝑥 < 0
Graphiques 2D et 3D
C'est une fonction définie par morceaux puisque sa valeur dépend d'un test logique définissant, dans cet
Recherche de zéro d’une
exemple, deux domaines de définition.
fonction
Voilà comment définir y en fonction de x:
Résolution numérique
>> x=-4*pi : pi/20 : 4*pi;
d’équations
>> y=sin(x).*(x>0)+sin(2*x).*not(x>0);
différentielles
>> plot(x,y,'-b*')
Initiation à Simulink >> xlabel('x')
Initiation à Stateflow >> ylabel('y')
>> title ('sin(x) et sin(2x)')
x=-4*pi:pi/20:4*pi;
inds1=find(x>0);
x1=x(inds1);
inds2=find(x<=0);
x2=x(inds2);
y1=sin(x1);
y2=sin(2*x2);
y=[y2, y1];
plot(x,y,'-b*') 42
M.SAYYOURI
Graphique 3D
Introduction
Courbes dans un espace 3D
Calculs élémentaires
Comme une courbe en 2D est définie par une liste de doublets (x,y) on peut définir une courbe en 3D par
Graphiques 2D et 3D
une liste de triplets (x,y,z). Puisque l'instruction plot attendait deux arguments, le vecteurs des abscisses, et
Recherche de zéro d’une celui des ordonnées, l'instruction plot3 en attend trois : le vecteur des abscisses Vx, le vecteur des
fonction ordonnées Vy et le vecteur des cotes Vz.
Résolution numérique Syntaxe: plot3(Vx, Vy, Vz) ;
d’équations Voici un exemple de courbe paramétrée tracée dans un espace à trois dimensions :
différentielles
43
M.SAYYOURI
Graphique 3D
Introduction
Tracé d'un nuage de points 3D
Calculs élémentaires
Le principe est le même que pour un nuage 2D: les points possèdent 3 coordonnées (x , y , z) représentés
Graphiques 2D et 3D
par des marqueurs non liés.
Recherche de zéro d’une
fonction T1=ones(1,100);
Résolution numérique % Premier nuage de valeurs
d’équations
A = 0.2 * randn(3,100) + [1*T1 ; 2*T1 ; 1*T1]
différentielles
plot3( A(1, : ) , A(2 , : ) , A(3 , : ) , '.' )
hold on
Initiation à Simulink
% Deuxième nuage de valeurs
Initiation à Stateflow
B = 0.6 * randn(3,100) + [2*T1 ; 3*T1 ; 2*T1] ;
plot3( B(1, : ) , B(2 , : ) , B(3 , : ) ,'+r')
grid on ; axis([0 3 0 4 0 4])
44
M.SAYYOURI
Graphique 3D
Introduction Tracé d'une surface
Calculs élémentaires Une surface est une application de ( x , y) vers z de la forme z= f ( x , y) .
Graphiques 2D et 3D Exemple: le plan est décrit par l'équation z=a x+b y+z0
Recherche de zéro d’une La représentation est calculée pour un maillage des
fonction valeurs de l'espace de départ; le tracé de ce maillage
Résolution numérique forme une grille rectangulaire ou carrée. Chaque point du
d’équations
maillage est caractérisé par le couple des coordonnées
(x , y) .
différentielles
Graphiques 2D et 3D x = -1:0.2:1;
Recherche de zéro d’une y = -2:0.2:2;
fonction
[X,Y] = meshgrid(x,y);
Résolution numérique
Z = Y .^2 + X.^2;
subplot(221)
d’équations
mesh(X, Y, Z);
différentielles
xlabel('x'); ylabel('y'); zlabel('z'); title('mesh’);
Initiation à Simulink
subplot(222)
Initiation à Stateflow meshc(X, Y, Z);
xlabel('x'); ylabel('y');zlabel('z'); title('meshc');
subplot(223)
surf(X, Y, Z);
xlabel('x'); ylabel('y');zlabel('z'); title('surf');
subplot(224)
surfl(X, Y, Z);
xlabel('x'); ylabel('y’); zlabel('z'); title('surfl');
46
M.SAYYOURI
Graphique 3D
Introduction Tracé de courbes de contour
Calculs élémentaires Pour tracer les courbes z=cste d'une surface définie par z=f(x,y) , on peut utiliser la fonction contour.
Graphiques 2D et 3D Elle s'utilise comme les instructions précédentes, mais fournit un graphe 2D dans le plan . Plusieurs paramètres
Recherche de zéro d’une optionnels peuvent être spécifiés, notamment le nombre de courbes de contours à afficher.
fonction x = -1:0.05:1; x = -1:0.05:1; y = -2:0.05:2;
Résolution numérique y = -2:0.05:2; [X,Y] = meshgrid(x,y);
[X,Y] = meshgrid(x,y); Z = Y .^2 + X.^2;
d’équations
Z = Y .^2 + X.^2; ch= contour(X,Y,Z,5);
différentielles
contour(X,Y,Z,5); clabel(ch);
Initiation à Simulink
il est également
Initiation à Stateflow
intéressant d'ajouter
sur le tracé les valeurs
de le long des
différentes lignes de
contour. Pour cela il
faut affecter à une
variable la valeur de
sortie de la commande
contour et utiliser la
fonction clabel
47
M.SAYYOURI