Matlab/simulink
Filière : Master : Automatique et Energies Renouvelables (MAER)
Année universitaire 2023/2024
Prof. Selma SEFRITI
PLAN
• Initialisation à l’environnement MATLAB (Introduction, Aspects élémentaires, les
commentaires, les vecteurs et matrices, les M-Files ou scripts, les fonctions, les
boucles et contrôle, les graphismes, etc.);
• Ecrire les programmes suivants pour:
• Résoudre des systèmes d’équations linéaires et non-linéaires
• Minimiser d’une fonction à plusieurs variables sans contrainte
• Minimiser d’une fonction à plusieurs variables avec contraintes (inégalités et
égalités)
• Simulation d'un modèle à partir d'un script MATLAB
Chapitre 1 : Introduction à
Matlab
Présentation du logiciel:
➢L’utilisation de logiciel de calcul est devenue absolument indispensable depuis les
années 70 dans le domaine scientifique.
➢MATLAB pour MATtrix LABoratory, est une application qui a été conçue afin de fournir
un environnement de calcul matriciel simple, efficace et interactif.
➢Matlab est un logiciel de calcul matriciel.
➢Matlab est souvent utilisé pour une analyse efficace des données et pour les simulations
numériques des systèmes physiques
➢Matlab est un interpréteur de commandes : les instructions sont interprétées et
exécutées ligne par ligne (pas de compilation avant de les exécuter).
• Éléments principaux :
- Commande Commande Window : écriture des commandes puis affichage
des résultats.
- Commande History : conserve une trace de toutes les opérations
effectuées.
- Workspace : contient la liste des variables connues par Matlab.
- Current Floder : chemin des dossiers.
* Interface Matlab : peut changer légèrement selon la version utilisée, mais
les points centraux sont identiques.
Arborescence du
dossier en cours Éditeur de commandes
(pour taper les
instructions)
Liste des variables déjà
définie
Historique des dernières
commandes
Modes de fonctionnement :
▪ mode interactif: MATLAB exécute les instructions au fur et à mesure
qu'elles sont données par l'usager.
▪ mode exécutif: MATLAB exécute ligne par ligne un fichier ".m"
(programme en langage MATLAB)
▪ Richesse de Matlab : L’utilisation de boites à outils (toolboxes).
Les commandes de base en Matlab
1. Les variables dans Matlab
▪ Les variables utilisées par matlab sont des types :
• réel;
• complexe;
• chaîne de caractères;
• Logique
▪ On ne peut pas déclarer le type d’une variable, il est établi
automatiquement à partir des valeurs affectées à cette variable
Exemples:
>> x = 17;
>> y = 4 + 3i;
>> z = "BONJOUR";
>> who
Your variables are: x y z
>> whos
Name Size Bytes Class Attributes
x 1x1 8 double
Y 1x1 16 double complex
z 1x7 14 char
Les commandes de base en Matlab
1. Les variables dans Matlab
Pour afficher la valeur contenue dans une variable on utilise le mot
disp ou bien on peut écrire directement le nom de la variable
>>disp(x)
17
>> x
x=17
Les commandes de base en Matlab
1. Les variables dans Matlab
Pour initialiser une variable avec une valeur entrée au clavier par
l´utilisateur, on utilisera la fonction input:
k=input('entrez une valeur');
entrez une valeur 4
>> k
4
Les commandes de base en Matlab
2. Les opérations de base
Matrices
Déclarer des matrices dans Matlab
Pour déclarer une matrice dans une variable A on énumère entre
crochets ses éléments (sépares par espaces), et on utilise un point
virgule pour passer d´une ligne à l´autre
Accéder aux élément des matrices
>> A(nligne,ncolonne)
Taille d´une matrice : T= size (A)
Opérations de base sur les matrices
Exemple: Résolution d’un système d’équation linéaire
2x+y=-5
4x-3y+2z=0
x+ 2y-z =1
Ecriture sous forme matricielle : AX=B
2 1 0 𝑥 −5
4 −3 2 𝑦 = 0
1 2 −1 𝑧 1
• La manipulation dans Matlab commence donc par la
définition des matrice
• Si A est une matrice inversible alors le système admet une
solution unique qui s´exprime par
𝑋 = 𝐴−1 𝐵
Matlab propose des fonctions permettant de générer de nouvelles matrices
L’opérateur « : » permet de récupérer des ensembles de lignes
et/ou colonnes d’une matrice, et former une sous-matrice.
Les fonctions usuelles liées à l’utilisation des matrices.
« size(M) » renvoie les dimensions de la matrice.
« max(M) » renvoie un vecteur-ligne contenant les valeurs
maximales associées à chaque colonne.
« min(M) » renvoie un vecteur-ligne contenant les valeurs
minimales associées à chaque colonne.
« rank(M) » renvoie le rang de la matrice.
« det(M) » renvoie le déterminant de la matrice.
• « diag(M) » extrait la diagonale de la matrice.
• « eig(M) » renvoie un vecteur contenant les valeurs propres de la
matrice
Les structures de contrôle
Les structures de contrôle permettent
• le contrôle de l'exécution des commandes.
• une exécution conditionnelle de lignes de commandes.
Les structures de contrôle forment des blocs:
délimités par un mot clé spécifique et le mot clé end.
Instructions conditionnelles if
La syntaxe est la suivante :
if condition logique
instructions
elseif condition logique
instructions
...
else
instructions
end
Instructions conditionnelles switch
switch comporte différents blocs d'instructions qui seront exécutés de manière
conditionnelle.
le critère de choix est la valeur d'une expression (ou d'une variable).
Cette valeur, que l'on appelle cas (case), permet la sélection du bloc à exécuter.
La syntaxe est la suivante :
switch expression du choix
case expression du cas
instructions
...
case expression du cas
instructions
...
otherwise
instructions
end
Exemple
heure = input('Quelle heure est-il ?\n’, ’s’);
switch heure
case {'0','1','2','3','4','5','6','7','8','9','10','11','12'}
disp(' C''est le matin ');
case {'13','14','15','16','17','18','19','20','21','22','23','24'}
disp(' C''est l''après-midi ');
otherwise
disp(' Ce n''est pas possible...');
end
Boucles for
Une boucle est une structure qui permet d'exécuter un certain nombre
de fois un même bloc d'instructions.
Syntaxe
for variable = valeur début:pas:valeur fin
instructions
end
Exemple 1:
for s = 1.0: -0.25: 0.0
disp(s)
End
Exemple 2: Ecrire un programme qui permet de calculer à l’aide d’une boucle
for, la factorielle d’un nombre entier N. Avec , N étant un nombre saisi par
l’utilisateur
Fn=1;
N =input('entrez N');
for i=2:N
Fn=Fn*i;
end
fact=Fn
Boucles while
La boucle while est une boucle qui exécute un bloc d'instructions tant qu'une
condition logique est vraie.
while condition logique
instructions
end
NB: L'instruction tic lance le chronomètre, toc l'arrête et donne le temps
écoulé
Les polynômes avec MATLAB
Les polynômes sont traités comme des vecteurs de coefficients dans
Matlab. Par exemple, l’équation polynomiale:
P 𝑥 = 𝑥 4 − 𝑥 3 − 7𝑥 2 + 𝑥 + 5
Sera représentée par le vecteur v=[1 -1 -7 1 5]
• Racines d’un polynôme roots : x=roots(v)
Exemple: le système décrit par G(s) est-il stable?
𝑠 3 +3𝑠 2 +5𝑠+7
G(s)=
𝑠 4 +4𝑠 3 +6𝑠 2 +8𝑠+2
• Calculer les pôles de G(s) à l’aide de Matlab?
• Définition d’un polynôme à partir de ses racines : poly(x)
retourne les coefficients du polynôme dont les racines
sont ranges dans le tableau x ; les coefficients sont
rangés suivant les puissances décroissantes.
• Evaluation d’un polynôme polyval : z =polyval (P,0)
retourne l’évaluation du polynôme P au point 0.
Définition d'une fonction
Les fonctions sont des scripts MATLAB particuliers.
La structure d'une fonction comporte nécessairement :
•le mot réservé function ;
•le nom de la fonction, par exemple fonction1 ;
•un ensemble de paramètres d'entrée e1, e2, ..., en ;
•un ensemble de paramètres de sortie s1, s2, ..., sn ;
•le mot réservé end.
Exercice: Définir une fonction qui permet de calculer le
déterminant d’une matrice carrée d’ordre 2 ou 3
function det=determinant23(A)
% determinant23 calcule le determinant d’une matrice carrée
% d’ordre 2 ou 3
[n,m]=size(A);
if n==m
if n==2
det = A(1 ,1)*A(2,2)-A(2 ,1)*A(1 ,2);
elseif n == 3
det = A(1 ,1)* determinant23(A([2 ,3] ,[2 ,3])) -...
A(1,2)* determinant23(A([2,3],[1,3]))+...
A(1 ,3)* determinant23(A([2 ,3] ,[1 ,2]));
%l’utilisation des trois points . . . %Pour indiquer que l’instruction se poursuit à
ligne suivante
else
disp('Seulement des matrices 2x2 ou 3x3 ');
end
else
disp(' Seulement des matrices carrées ');
end
Exercice: écrire une fonction qui permet de calculer les
6 premiers termes d’une suite de Fibonnacci
f(i)=f(i-1)+f(i-2)
Avec f(1)=0 et f(2)=1 .
Exercie: d’écrire une fonction pour approcher le nombre d’or
α = 1.6180339887 .... Celui-ci est la limite pour k → ∞ du
quotient fk/fk−1 de deux termes consécutifs de la suite de
Fibonacci. On itère par exemple jusqu’à ce que la différence
entre deux quotients consécutifs soit inférieure à 10−4 :
function [golden,k]= fibonacci0
f(1) = 0; f(2) = 1;
goldenold = 0; golden = f(k)/f(k-1);
kmax = 100; if abs(golden - goldenold) < tol
tol = 1.e-04; return
for k = 3:kmax End
f(k) = f(k-1) + f(k-2); goldenold = golden;
end
return
Chapitre 2: Résoudre un système des équations
non-linéaires
I. Résolution d’une équation non-linéaires
1. Introduction: pour la résolution d’une équation non linéaires 𝑓 ∶ 𝑅 𝑛 → 𝑅 𝑛
Cad pour une fonction donnée, la recherche d’un point:
𝑥 ∈ 𝑅𝑛 tel que: f(x)=0, il n’y a pas en générale un algorithme
fini pour trouver cette solution. On est oblige d’utiliser des
méthodes itératives.
2. Méthode de Bissection
Cette méthode repose sur le constat que si :
• f(x) est continue sur un intervalle [a, b] ;
• et le produit f(a).f(b) est négatif,
Alors la fonction f s’annule au moins une fois sur l’intervalle [a, b].
La méthode est décrite par les étapes suivantes :
Etape 1: on recherche dans un premier temps a et b>a tels que f(a)f(b)<0
Etape 2:Calculer la valeur de la fonction en c = (a + b)/2 ;
a) Si f(c) = 0 ; on s’arrête
b) Sinon on retient comme nouvel intervalle :
➢[a,c] si f(a)*f(c)<0
➢[c,b] si f(c)*f(b)<0
Etape 3:Répéter les étapes 2, (a) et (b) jusqu’à l’obtention de la précision
désirée, c’est à dire jusqu’à ce que : f(c) = 0 ou bien |f(c)| < tol , avec tol :la
précision désirée.
Le programme Matlab de la méthode de Bissection est :
function c=Bissection(a,b)
c=(a+b)/2 if f(c)*f(b)<0
a=c;
tol=1e-6;
end
while abs(f(c)) > tol c=(a+b)/2;
if f(a)*f(c)<0 end
b=c; c
end
Exercice 1:
La fonction f(x)=𝑥 3 − 𝑥 2 − 1 a une racine dans l’intervalle [1, 2].
calculer cette racine par la méthode de Bissection avec une tolérance
10−4 .
Solution:
• Le programme Matlab permettant de calculer la racine c est le suivant :
function c=Bissection(a,b)
c=(a+b)/2
tol=1e-4; a=c;
while abs(c^3-c^2-1) > tol end
if (a^3-a^2-1)*(c^3-c^2-1)<0 c=(a+b)/2;
b=c; end
end fc=c^3-c^2-1;
if (c^3-c^2-1)*(b^3-b^2-1)<0
Exercice 2:
Soit la fonction f(x) = cosh x+ cos x−3 .
1) Trouver un sous intervalle qui contient le zéro de f dans
l’intervalle [−3, 3].
2) Calculer cette racine par la méthode de Bissection avec
une tolérance de e-10.
function [c ,i]=Bissection(a,b)
c=(a+b)/2
tol=1e-10;
i=0;
while abs(cosh(c)+cos(c)-3) > tol
if (cosh(a)+cos(a)-3)*(cosh(c)+cos(c)-3)<0
b=c;
end
if (cosh(c)+cos(c)-3)*(cosh(b)+cos(b)-3)<0
a=c;
end
c=(a+b)/2;
i=i+1;
end
fc=cosh(c)+cos(c)-3;
end
3) Méthode de Newton
La méthode de Newton permet d’approcher par itérations la
valeur de la racine x qui annulera la fonction f(x) au moyen de
la relation suivante:
𝑓(𝑥𝑛 )
𝑥𝑛+1 = 𝑥𝑛 −
𝑓′(𝑥𝑛 )
Tel que : 𝑓′(𝑥𝑛 ) ≠ 0
NB: La méthode de Newton ne nécessite pas de connaître un
encadrement initial de la racine cherchée. Il suffit de connaître
une valeur approchée de cette racine, et cette valeur initiale
x0 est utilisée pour calculer les autres valeurs par une suite
d’itérations.
La fonction Matlab correspondante à la méthode de
Newton :
function x=Newton(x0)
tol=1e-10;
x=x0;
while abs(f(x))>tol
xi=x;
x=xi-(f(xi)/derf(xi));
iter=iter+1;
end
Exercice: soit la fonction 𝑓 𝑥 = 𝑒 𝑥 − 2cos(𝑥)
1)Déterminer la valeur initiale x0 telque f(x0) est
proche de zéro
2) Appliquer la méthode de Newton pour trouver la
racine de la fonction f
Solution:
function [x,fx,iter]=Newton(x0)
tol=1e-10;
iter=0;
x=x0;
while abs(exp(x)-2*cos(x))>tol
xi=x;
x=xi-(exp(xi)-2*cos(xi))/( exp(xi)+2*sin(xi));
iter=iter+1;
end
fx=exp(x)-2*cos(x);
end
II. Résoudre un système des équations non-linéaires
La méthode de Newton pour la résolution d’un système d’équations
non linéaires est une généralisation de l’algorithme de Newton pour
la recherche du zéro d’une fonction unidimensionnelle.
Présentation de la méthode
• Considérons un système d’équations non linéaires de la forme
où f1,...,fn sont des fonctions non linéaires. En posant f = [f1,...,fn]’ et x =
[x1,...,xn]’ , le système peut s’écrire sous la forme compact:
f(x)=0
Exemple 1 : On considéré le système non linéaire
qu’on peut écrire sous la forme
• Pour étendre la méthode de Newton au cas d’un système, on
remplace la dérivée de la fonction scalaire f par la matrice
jacobienne Jf de la fonction vectorielle f dont les coefficients
sont, par définition,
• Cette équation représente la procédure de Newton Méthode de
résolution de systèmes algébriques non linéaires.
Avec k = 1, 2, . . . , n représente l’itération x ∈ 𝑅𝑛 .
les étapes de la méthode de Newton
Étape 3 :
calculez
Étape 4 :
On arrête le calcul quand la norme euclidienne de la différence entre deux itérées
successives est plus petite que tol ou quand le nombre maximal d’itérations nmax
est atteint
résoudre le système non linéaire suivant:
f=inline('x^2+y^2-1')
g=inline('x^2-y^2+1/2')
fx=inline( '2*x')
fy=inline( '2*y')
gx=inline( '2*x')
gy=inline( '-2*y')
tol=1e-4; itermax=100; x(1)=0.75;y(1)=0.75; dx=1;k=1;
while abs(dx)>tol
J=[fx(x(k)),fy(y(k));gx(x(k)),gy(y(k))];
F=[f(x(k),y(k));g(x(k),y(k))];
X=[x(k);y(k)]-inv(J)*F;
x(k+1)=X(1);y(k+1)=X(2);
dx=abs(max([x(k+1)-x(k),y(k+1)-y(k)]));
k=k+1;
if k>itermax
break;
end
end
➢ La fonction fsolve permet de Résoudre un système non
linéaire
f=@(x)[x(1)^2+x(2)^2-1;x(1)^2-x(2)^2+1/2];
>> fsolve(f,[0.75 0.75])
➢ La fonction fzero permet de résoudre une fonction non
linéaire
f=@(x)[cosh(x)+cos(x)-3]
fzero(f,1)
Exemple 2 : résoudre le système non linéaire
suivant:
Condition initiale (𝑥10 , 𝑥20 , 𝑥30 ) =(0.75,-0.75,0.75)
Chapitre 3: Simulink
Introduction
• Simulink est une plate-forme de simulation multi-domaine et de modélisation
de systèmes dynamiques.
• Il fournit un environnement graphique et un ensemble de bibliothèques
contenant des blocs de modélisation qui permettent le design précis, la
simulation, l’implémentation et le contrôle de systèmes de communications et
de traitement du signal.
• Simulink est intégré à MATLAB, fournissant ainsi un accès immédiat aux
nombreux outils de développement algorithmique, de visualisation et d’analyse
des données de MATLAB.
• POUR DÉMARRER SIMULINK:
Dans la fenêtre Commande de MATLAB, taper simulink. La fenêtre
Simulink va s'ouvrir ou bien de cliquer sur l’icône
Créer votre nouveau modèle : file/new/model
Le gestionnaire de librairies de Simulink s’ouvre
• la fenêtre Simulink Library Browser qui permet l’accès à la Bibliothèque Simulink
ainsi qu’à d’autres bibliothèques (control system, par exemple).
QUELQUES BIBLIOTHEQUES :
Bibliothèque Source:
Les blocs sont utilisés pour générer des signaux, ils possèdent une ou plusieurs sorties et aucune
entrée
✓ Step : génère un échelon d’amplitude réglable
✓ Ramp : génère une rampe de pente réglable.
✓ Sine Wave : génère une sinusoïde d’amplitude, pulsation et déphasage réglables
✓ Constant : délivre un signal constant dans le temps et de niveau réglable.
QUELQUES BIBLIOTHEQUES :
Bibliothèque Sinks :
Les blocs sont utilisés pour l’affichage des signaux, ils possèdent une ou
plusieurs entrées.
✓ Scope : permet l’affichage des signaux générés par une simulation dans
une fenêtre spécifique différente des fenêtres Matlab .On peut changer
les paramètres tels que l’échelle des temps, des ordonnées, le nombre de
points à afficher par courbe. On peut zoomer, sauvegarder, imprimer.
✓XY Graph : permet le tracé de deux signaux en mode XY
QUELQUES BIBLIOTHEQUES :
Bibliothèque Continuons :
✓ Transfer Fcn : Simule la fonction de transfert d’un système à temps continu. Le
numérateur et le dénominateur sont entrés par l’utilisateur au niveau de la boite
de dialogue du bloc (entrés dans l’ordre décroissant des puissances de la variable
de Laplace).
✓ State-Space : Simule le comportement d’un système à temps continu représenté
dans l’espace d’état.
✓Integrator : Simule la fonction de transfert d’un intégrateur pur.
✓Derivative : Simule la fonction de transfert d’un dérivateur pur.
✓Transport Delay : Simule un retard pur.
QUELQUES BIBLIOTHEQUES :
Bibliothèque Math Opérations :
• Les blocs réalisent une fonction mathématique appliquée aux signaux
entrants.
✓Abs : la sortie de ce bloc est la valeur absolue de l’entrée.
✓Gain : la sortie est un signal d’entrée multiplié par un gain entré par
l’utilisateur.
✓Sum : la sortie est la somme des entrées associées à un signe + à
laquelle on soustrait les entrées associées à un signe -
CONSTRUCTION D'UN DIAGRAMME SIMULINK
• Dans une fenêtre de travail Untitled (sans titre), on va construire le
nouveau schéma.
• Pour copier un bloc d’une bibliothèque Simulink dans la fenêtre de
travail, on le sélectionne en cliquant dessus avec le bouton gauche de
la souris. Tout en maintenant le bouton gauche enfoncé, on se déplace
avec la souris jusqu’à la fenêtre de travail Simulink. On relâche le
bouton de la souris à l’endroit où l’on souhaite positionner son bloc.
Exemple : On souhaite analyser la réponse indicielle d’un
système du premier ordre :
𝑘
𝐹 𝑝 =
1 + 𝜏𝑝
avec 𝑘 = 5 et 𝜏 = 2𝑠.
NB: Pour paramétrer un bloc Simulink, on procède toujours de la même
façon : on ouvre la boite de dialogue du bloc en double cliquant sur le
bloc concerné puis on renseigne les différents champs de la boite de
dialogue.
bloc fonction de transfert
▪ Sélectionner la palette « Continuous » de la librairie « Simulink
», puis cliquer sur le bloc « Transfer Fcn », et le glisser dans la
fenêtre Modèle.
▪ Puis, double-cliquer sur ce dernier afin d'ouvrir la fenêtre permettant de
renseigner sa fonction de transfert. Les coefficients du polynôme au
numérateur ou au dénominateur doivent être renseignés entre
crochets, dans l'ordre décroissants des puissances de p (s dans
Simulink) et séparés par des espaces.
• Le bloc Step : il y a quatre lignes à modifier. Pour un échelon unité
continu à partir de l’origine des temps, on aura
• Une fois le diagramme terminé, on peut l'enregistrer dans un fichier:
dans le menu File, choisir Save As et donner un nom (*.mdl)