Vous êtes sur la page 1sur 109

UNIVERSITÉ CHOUAIB DOUKKALI

Ecole Nationale des Sciences Appliquées d’El Jadida-ENSAJ

Cours : MATLAB
Filière : GEE/GI S5
mhamed.sayyouri@usmba.ac.ma
Pr: M. SAYYOURI

Année universitaire 2017-2018


1
PLAN
Evaluation:
 Introduction
❖ Examen : 100%
 Calculs élémentaires
P  Programmation sous Matlab

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 à SimScape

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 à SimScape ➢ 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

Recherche de zéro d’une

fonction

Résolution numérique

d’équations

différentielles
La fenêtre de commande (ou ligne de
Initiation à Simulink

Initiation à SimScape
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

Recherche de zéro d’une

fonction

Résolution numérique

d’ équations

différentielles

Initiation à Simulink
La fenêtre d’historique de commande :
Initiation à SimScape 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

Recherche de zéro d’une

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 à SimScape
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

Recherche de zéro d’une

fonction

Résolution numérique

d’équations

différentielles

Initiation à Simulink La fenêtre de répertoire courant :


Initiation à SimScape Cette fenêtre permet de visualiser le répertoire
de travail dans lequel vous êtes. C’est ici que
sont chargés / enregistrés les scripts, les modèles
ou les données.

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 à SimScape ➢ 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
i et j qui représentent racine −1 .
Graphiques 2D et 3D

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 à SimScape 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

Recherche de zéro d’une


 Dans Matlab, toutes les variables représentent des matrices. On peut considérer donc qu’il y a un seul type
principal de données : le type matrice.
fonction
 Les éléments d’une matrice peuvent être :
Résolution numérique
➢ des nombres (réels ou complexes),
d’équations
➢ ou des caractères.
différentielles

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 à SimScape
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 à SimScape
 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 à SimScape 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 à SimScape
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

   , 1  2i  (1  3i )
2 1.25 2
Calculs élémentaires 1. Calculer sous Matlab 11 , e , 9 , ln(5) , log (5)10
, sin( ) , 1
4  2 
Graphiques 2D et 3D
2. Afficher les résultats précédents sous format long , long e , short e, bank, et rational.
Recherche de zéro d’une

fonction Exercice 2
Résolution numérique
1. Créer le vecteur colonne
d’équations

différentielles 2. Saisir la matrice


Initiation à Simulink

Initiation à SimScape

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 à SimScape 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 à SimScape
 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().

Introduction des données à partir du clavier :


 La commande input(msg) fait introduire une valeur à partir du clavier en affichant d’abord un message msg.
16
M.SAYYOURI
Programmation sous Matlab
Introduction
clear all
clc;
Programmation sous % lecture de deux valeurs
Matlab a = input ('Entrer la valeur de a : ');
b = input ('Entrer la valeur de b : ');
Graphiques 2D et 3D
% somme
Recherche de zéro d’une c = a + b;
% affichage
fonction
fprintf('%f + %f = %f \n', a, b, c);
Résolution numérique % introduction d'un vecteur
d’équations
vec = input('entrer un vecteur de 5 éléments : ');
% introduction d'une matrice
différentielles mat = input('entrer une matrice de 3x3 éléments : ');
Initiation à Simulink vec
mat
Initiation à SimScape

Entrer la valeur de a : -2.5


Entrer la valeur de b : 3.18
-2.500000 + 3.180000 = 0.680000
entrer un vecteur de 5 éléments : zeros(1,5)
entrer une matrice de 3x3 éléments : randi(3,3)
vec =
0 0 0 0 0
mat =
3 3 1
3 2 2 17
M.SAYYOURI 1 1 3
Programmation sous Matlab
Introduction Les instructions d’alternative (IF et SWITCH):
Programmation sous  Comme dans la majorité des langages de programmation, Matlab permet d’utiliser l’instruction if selon
Matlab la syntaxe suivante :
Graphiques 2D et 3D
if condition
Commandes
Recherche de zéro d’une
elseif condition
fonction
Commandes
Résolution numérique

d’équations
else
différentielles Commandes
Initiation à Simulink end ;
Initiation à SimScape  Les segments de elseif est else sont optionnels, par contre la parution de if et end est obligatoire

 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 à SimScape
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

Matlab switch expression % variable (comme a) ou % lecture d'un entier


Graphiques 2D et 3D expression de variables (a+b, f(a), …) a = input('Entrer un entier entre 1 et 5:');
case cas1 % valeur 1 de l’expression switch a
Recherche de zéro d’une
case 1
commandes
fonction disp('UN');
Résolution numérique
case cas2 % valeur 2 de l’expression case 2
commandes disp('DEUX');
d’équations
… case 3
différentielles
otherwise % autre valeurs de l’expression disp('TROIS');
Initiation à Simulink
commandes case 4
Initiation à SimScape end ; disp('QUATRE');
case 5
disp('CINQ');
Exemple otherwise
Écrire un script Matlab qui demande un disp('cet entier n''est pas entre 1 et 5');
nombre compris entre 1 et 5 à l’utilisateur et end;
le convertit en lettre .
Entrer un entier entre 1 et 5 : 3
TROIS
Entrer un entier entre 1 et 5 : 8
20
M.SAYYOURI cet entier n'est pas entre 1 et 5
Programmation sous Matlab
Introduction Les boucles:
 En Matlab, on utilise deux formes de boucle:
Programmation sous

Matlab

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 à SimScape commandes
end ;

% affichage des nombres naturels % avec la boucle while


%impairs et inférieurs à 10 i = 1;
% avec la boucle for while i <= 10
for i = 1:2:10 disp(i);
disp(i); i = i + 2;
end; end; 21
M.SAYYOURI
Programmation sous Matlab
Introduction
Les fonctions
Programmation sous
 Les fonctions peuvent être déclarées directement dans un fichier script qui doit obligatoirement porter le
Matlab

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 à SimScape
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 à SimScape
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 à SimScape ➢ 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.

!! Il est conseillé d'utiliser les parenthèses afin d'éviter toute ambiguïté.


M.SAYYOURI 24
Programmation sous Matlab
Introduction >> a=(1<=5) >> A=[1 2 3 4]
Programmation sous a= A=
1 2 3 4
Matlab 1
>> B=[4 2 5 4]
Graphiques 2D et 3D >> b=(5==12/3) B=
Recherche de zéro d’une b= 4 2 5 4
fonction 0 >> A==B
Résolution numérique >> c=(a | b) ans =
0 1 0 1
d’équations c=
>> A<B
différentielles 1 ans =
Initiation à Simulink >> d= (a & b) | c 1 0 1 0
Initiation à SimScape d= >> A~=B
1 ans =
1 0 1 0
>> f=(~a)&(~b)
>> ~(A<B)
f= ans =
0 0 1 0 1
x=(a~=b) >> A~=B
x= ans =
0 1 1 0
1
M.SAYYOURI 25
?

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

Recherche de zéro d’une vecteur ligne [a , a ,..., a , a , a ] (ou vecteur colonne) .


n n 1 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 à SimScape
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 à SimScape
>> 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

d’équations p1=[1 -5 6] >> x=[0 1 4]; y=[0 2 3];


différentielles p1 = >> p11=polyfit(x,y,2)
Initiation à Simulink 1 -5 6 p11 =
Initiation à SimScape >> a=roots(p1) -0.4167 2.4167 -0.0000
a= >> p12=polyfit(x,y,1)
3 p12 =
2 0.6538 0.5769
>> poly(a) >> polyval(p11,4)
ans = ans =
1 -5 6 3
>> poly([1 1 1]) >> polyval(p12,4)
ans = ans =
1 -3 3 -1 3.1923
M.SAYYOURI 28
?

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

d’équations >> p=[1 1 1 1]; % p(x)=x^3+x^2+x+1


différentielles >> der_p=polyder(p)
Initiation à Simulink der_p =
Initiation à SimScape 3 2 1 %p’(x)=3x^2+2x+1
>> der_p=polyder(polyder(p))
der_p =
6 2 %p’’(x)=6x+1
>> int_p=polyint(p)
int_p =
1/4 1/3 1/2 1 0 %intégral de p(x)=1/4x^4+1/3x^3+1/2x^2+x+0
>> int_p12=polyval(int_p,2)-polyval(int_p,1)
int_p12 =
103/12
M.SAYYOURI 29
?

Résolution des Systèmes Linéaires


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 à SimScape

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  Résolution d’un système linéaire
Résolution des Systèmes ➢ Matlab fournie plusieurs techniques afin de résoudre un système linéaire. Néanmoins, il reste a
Linéaires
l’utilisateur de vérifier la compatibilité du système linéaire (s’il existe solution).
Graphiques 2D et 3D
➢ Par exemple, si le déterminant de A est non-nul alors le système accepte une solution. Par contre, si le
Recherche de zéro d’une déterminant est nul le système peut accepter un nombre infini de solution ou un ensemble vide des
fonction solutions.
Résolution numérique ➢ La commande X = A\B fait résoudre le système linéaire AX = B (noter l’antislash).
d’équations ➢ La commande X = B/A fait résoudre le système linéaire XA = B (noter le slash).
différentielles On peut calculer directement l’inverse de A en le multipliant par B. Il faut noter que la multiplication
Initiation à Simulink
matricielle n’est pas commutative !
Initiation à SimScape
➢ La commande X = inv(A)*B fait résoudre le système linéaire AX = B.
➢ La commande X = B*inv(A) fait résoudre le système linéaire XA = B.
Exemple
Résoudre le système suivants:
x  2 y  z  1  1 2 1 x   1 
  1 1 1 y    0 
x  y  z  0     
2 x  3 y  z  1  2 3 1 z  1 
M.SAYYOURI       31
?

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 à SimScape
-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
?

Calcul symbolique Matlab


Introduction
 Résolutions des équations et des inéquations, linéaires et non-linéaires
Calcul symbolique
Matlab utilise la commande solve afin de résoudre les équations et les inéquations, les systèmes linéaires et
Matlab
non linéaires.
Graphiques 2D et 3D

Recherche de zéro d’une


➢ Tout d’abord, il est nécessaire de déclarer des variables symboliques des équations (ou inéquations, …)
fonction
en utilisant la commande syms.
Résolution numérique ➢ Il faut noter que solve retourne des solutions sous forme symbolique ou formelle au lieu de numérique
d’équations (racine de 2 a la forme numérique de 1.4142 et la forme formelle 2^(1/2)).
différentielles >> sqrt(sym(2)) >> syms x %équation de 2 >> syms a b x inéquation de 2 degré
Initiation à Simulink ans = degré >> solve(a*x+b,x)
Initiation à SimScape 2^(1/2) >> solve(x^2-3*x+2) ans =
>> a=sym(1)/sym(3) ans =
a= 1 -b/a
1/3 2 >> syms a b c x
>> b=sym(2)/sym(5) >> syms x, solve(x^2+x+1) >> solve(a*x^2+b*x+c, x)
b =2/5 ans = ans =
>> c=a+b - 1/2 - (3^(1/2)*i)/2 -(b + (b^2 - 4*a*c)^(1/2))/(2*a)
c =11/15 - 1/2 + (3^(1/2)*i)/2 -(b - (b^2 - 4*a*c)^(1/2))/(2*a)

M.SAYYOURI 33
?

Calcul symbolique sous Matlab


Introduction La commande solve permet aussi de résoudre une inéquation ou un système linéaire ou non linéaire des
Calcul symbolique inéquations.
Matlab
>> syms x y % système à deux inconnues >> syms x % inéquation de 2 degré
Graphiques 2D et 3D
>> S = solve(x+y-5, x-y-1) >>solve('x^2-9 <=0')
Recherche de zéro d’une
S= ans =
fonction x: [1x1 sym]
Résolution numérique y: [1x1 sym] Dom::Interval([-3], [3])
d’équations >> [S.x S.y] >> syms x, solve('x^2-9 <0')
ans = ans =
différentielles

Initiation à Simulink
[ 3, 2]
>> syms x y z % système à trois inconnues Dom::Interval(-3, 3)
Initiation à SimScape
>>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
?

Calcul symbolique sous Matlab


Introduction La boîte à outils de Calcul symbolique permet de calculer la dérivé , l’intégral et les limites d’une fonction.
Calcul symbolique
 Calcul de la dérivée d’une fonction
Matlab
diff(f) calcule la dérivée de f par rapport à x :
Graphiques 2D et 3D

Recherche de zéro d’une


Pour calculer la dérivée seconde : diff(f,2) ou bien diff(f,x,2)
fonction La fonction diff peut également agir sur une matrice. Dans ce cas la dérivation est effectuée sur chaque
Résolution numérique élément de la matrice,
d’équations
>> syms a b x >> A=[cos(3*x) sin(2*x); tan(x) 1]
différentielles
>> f=a*cos(x)+b A=
Initiation à Simulink
[ cos(3*x), sin(2*x)]
f=
Initiation à SimScape [ tan(x), 1]
b + a*cos(x) >> diff(A)
>> diff(f) ans =
ans = [ -3*sin(3*x), 2*cos(2*x)]
-a*sin(x) [ tan(x)^2 + 1, 0]
>> diff(A,2)
>> diff(x^3+2*x^2+3*x+1,x)
ans =
ans = [ -9*cos(3*x), -4*sin(2*x)]
3*x^2 + 4*x + 3 [ 2*tan(x)*(tan(x)^2 + 1), 0]
M.SAYYOURI 35
?

Calcul symbolique sous Matlab


Introduction  Calcul de l’intégral d’une fonction
Calcul symbolique
Si f est une expression symbolique, alors int(f)tente de trouver une autre expression symbolique F telle que
Matlab
diff(F)=f , c’est-à-dire que int(f) donne l’intégrale indéfinie de f si elle existe.
Graphiques 2D et 3D

Recherche de zéro d’une >> syms x >> syms a b w t


fonction >> int(x^3+x+1) >> f=a*cos(w*t+b)
Résolution numérique ans = f=
d’équations
(x*(x^3 + 2*x + 4))/4 a*cos(b + t*w)
>> int(x^3+x+1,0,1) >> int(f,t)
différentielles
ans = ans =
Initiation à Simulink
7/4 (a*sin(b + t*w))/w
Initiation à SimScape
>> int(log(x)) >> int(f,t,0,pi)
ans = ans =
x*(log(x) – 1 (a*(sin(b + pi*w) - sin(b)))/w

 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
?

Calcul symbolique sous Matlab


Introduction  Calcul des limites d’une fonction
Calcul symbolique Les commandes syms a x, limit( f(x),x,a) permettent le calcul de la limite de f en a
Matlab
>> syms x >> syms n x >> syms x >> syms x
Graphiques 2D et 3D
>> limit(sin(x)/x,x,0) >> limit((1+x/n)^n,n,inf) >> limit(log(x)/x,x,inf) >> limit(x*log(x),x,0)
Recherche de zéro d’une
ans ans = ans = ans =
fonction 1 exp(x) 0 0
Résolution numérique

d’équations  Calcul des sommes


différentielles
On peut calculer des sommes symboliques quand elles existent en utilisant la commande symsum
Initiation à Simulink

Initiation à SimScape
Exemple
1 

2

• Ecrire la commande qui permet de calculer   2


k
k 0
6
1 

x 
k
• Ecrire la commande qui permet de calculer pour |x| < 1
1 x
k 0

>> syms k n >> syms k x


>> symsum(1/k^2,1,inf) >> symsum(x^k,k,0,inf)
ans = ans =
pi^2/6 piecewise([1 <= x, Inf], [abs(x) < 1, -1/(x - 1)])
M.SAYYOURI 37
Graphique 2D
Introduction
 Les possibilités graphiques de Matlab sont innombrables. Pour créer le graphe de la fonction sinus par
Calculs élémentaires
exemple, nous commençons par définir deux vecteurs: x = -2*pi : pi/4 : 2*Pi ; y = sin(x);
Graphiques 2D et 3D
 Ensuite nous construisons le graphe au moyen de la commande: plot(x , y)
Recherche de zéro d’une

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

Initiation à SimScape >> x = -2*pi : 0.01 : 2*pi ;


>> y = sin(x);
>> plot(x, y)
>> grid % afficher la grille
>> % afficher le titre et les étiquettes
>> title ('Graphe de Sinus')
>> xlabel('x')
>> ylabel('y=sinus(x)')

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 à SimScape
>> 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 à SimScape -. 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

Graphiques 2D et 3D >> x = -2*pi : 0.1 : 2*pi ;


Recherche de zéro d’une
>> y = sin(x);
fonction
>> z=cos(x);
Résolution numérique

d’équations
>> legend('sin(x)','cos(x)')
différentielles >> plot(x, y, '-ob', x, z, '-.dr')
Initiation à Simulink >> legend('sin(x)','cos(x)')
Initiation à SimScape >> 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 à SimScape >> 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

Initiation à Simulink  x=sin(t)e-t/10



Initiation à SimScape
 y=cos(t)e
-t/10
t  [-2π,2π]
 z=e-t

t = -2*pi:2*pi/100:2*pi;
plot3(exp(-t/10).*sin(t), exp(-t/10).*cos(t), exp(-t));
grid;

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 à SimScape
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

Initiation à Simulink Exemple de plan


Initiation à SimScape
a = 1.5 ; b = .7 ; z0 = 2 ;
x = [ -5 : .5 : 5 ]; y = [ -7 : .3 : 7 ];
[X Y]=meshgrid(x,y)
Z=a*X+b*Y+z0 ;
surf(Z)

Les fonctions les plus courantes sont :


mesh, qui trace une série de lignes entre les points de la surface en mode «lignes cachées» ;
meshc, qui fonctionne comme mesh mais en ajoutant les courbes de niveau dans le plan ;
surf, qui «peint» la surface avec une couleur variant selon la cote ;
surfl, qui «peint» la surface comme si elle était éclairée ;
surfc, qui fonctionne comme mesh mais en ajoutant les courbes de niveau dans le plan 45
M.SAYYOURI
Graphique 3D
Introduction Exemple : Tracer la représentation graphique de la fonction f(x,y)=x^2+y^2 sur [-1 1] x [-2 2]
Calculs élémentaires

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 à SimScape 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 à SimScape
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
Recherche de zéro d’une fonction
Introduction  Introduction
Calculs élémentaires
▪ Il existe toute une panoplie de méthodes numériques (dichotomie, point fixe, Newton, Lagrange)
Graphiques 2D et 3D
conduisant à chercher numériquement les zéros de fonction 𝑓(𝑥) = 0 d’une variable réelle.
Recherche de zéro d’une
▪ La majorité de ces méthodes sont itératives.
fonction
▪ Elles calculent des approximations successives 𝑥1, 𝑥2, 𝑥3, ... de la véritable racine 𝑥* de l’équation
Résolution numérique
𝑓(𝑥)=0, à partir d’une valeur initiale 𝑥0 plus au moins bien choisie. Ce qui les distingue, entre autre, c’est
d’équations
leur vitesse de convergence et leur robustesse.
différentielles

Initiation à Simulink
 Méthode de Newton
Le but dans cette section, est la programmation, sous Matlab, de la méthode itérative de Newton. Afin
Initiation à SimScape
d’appréhender cette dernière, soit la figure ci-dessous :
Géométriquement, la solution approchée 𝑥𝑛+1 n’est autre que le
point d’intersection de l’axe des abscisses et la tangente, au point
(𝑥𝑛, 𝑓(𝑥𝑛)), d’équation D : 𝑦 = 𝑓′(𝑥𝑛) × (𝑥𝑛 − 𝑥𝑛+1) + 𝑓(𝑥𝑛).
Notons que 𝑥* est la véritable racine de l’équation 𝑓(𝑥) = 0, dont
on cherche à approcher. À partir de la figure ci-dessus, on a :

48
M.SAYYOURI
Recherche de zéro d’une fonction
Introduction
Or on sait que :
Calculs élémentaires

Graphiques 2D et 3D

Recherche de zéro d’une À partir des deux équations précédentes on obtient ainsi le schéma numérique de la méthode de Newton,
fonction soit :
Résolution numérique

d’équations

différentielles ▪ on constate que la méthode de Newton nécessite à chaque itération l’évaluation de deux fonctions, à
Initiation à Simulink savoir 𝑓 et de sa dérivée. Néanmoins, cet effort est compensé par une vitesse de convergence accrue,
Initiation à SimScape puisque cette méthode est d’ordre deux. Cet accroissement de la vitesse de convergence est
conditionné par le choix de la valeur initiale qui doit être la proche possible du zéro recherché.
▪ On rappelle que le vecteur erreur 𝑒𝑛 est calculé à partir de : 𝑒𝑛 = |𝑥𝑛 − 𝑥𝑎𝑝𝑝|. Avec, 𝑥𝑎𝑝𝑝 est la solution
approchée, de la valeur exacte, déterminée avec une tolérance fixée préalablement. 𝑛, étant le nombre
d’itérations.
▪ l’estimation de l’erreur sert à comparer la vitesse de convergence pour des méthodes numériques
différentes. Sur le plan pratique, l’erreur est représentée graphiquement en traçant 𝑒𝑛+1 en fonction de 𝑒𝑛
avec une échelle logarithmique. Ainsi, l’ordre noté 𝑝, d’une méthode numérique s’obtient à partir de :

49
M.SAYYOURI
Recherche de zéro d’une fonction
Introduction Ainsi l’ordre, 𝑝, est quantifié via la pente de l’équation ci-dessus. On en déduira que :
Calculs élémentaires ▪ Si 𝑝 = 1 ⇒ 𝑥𝑛 converge linéairement vers la solution approchée. Dans ce cas on gagne la même quantité
Graphiques 2D et 3D de précision à chaque itération.
Recherche de zéro d’une
▪ Si 𝑝 = 2 ⇒ 𝑥𝑛 converge quadratiquement vers la solution approchée. Dans ce cas on gagne le double de
fonction
précision à chaque itération.
▪ Si 𝑝 = 3 ⇒ 𝑥𝑛 converge cubiquement vers la solution approchée. Dans ce cas on gagne le triple de
Résolution numérique
précision à chaque itération.
d’équations

différentielles Nmax=100; x=-0.5; it=1; tol=10^-5; n=1; verif=tol+1/2;


while (n<=Nmax & verif>tol)
Initiation à Simulink
if dfx(x)~=0
Initiation à SimScape xn=x-(fx(x)/dfx(x));
verif=abs(fx(x)/dfx(x));
x=xn
elseif dfx(x)==0
disp('pas de solution')
end
if(it==Nmax & verif >tol)
disp('La méthode de newton ne converge pas pour la tolérance considérée')
end
it=it+1;
end 50
M.SAYYOURI
Recherche de zéro d’une fonction
Introduction

Calculs élémentaires
Exercice
Graphiques 2D et 3D Nous allons résoudre l’équation : 𝑓(𝑥) = 𝑥+𝑒𝑥𝑝(𝑥)+1. Nous choisissons 𝑥0 = −1/2 comme valeur initiale.
Recherche de zéro d’une
A. Écrire un code Matlab, portant sur l’implémentation de la méthode de Newton, en suivant les étapes
fonction

Résolution numérique
suivantes :
d’équations 1. Faire un test si 𝑓’(𝑥) = 0 ⇒ arrêt du programme.
2. Le critère d’arrêt est : |𝑥𝑛+1 − 𝑥𝑛| < 𝜀, 𝑥𝑛 étant la solution approchée et 𝜀, la tolérance considérée.
différentielles

Initiation à Simulink

Initiation à SimScape
3. Afficher la solution approchée 𝑥𝑛.
4. Afficher le nombre d’itérations conduisant à la solution approchée.
5. Afficher sur le même graphe, la fonction 𝑓(𝑥), la solution approchée 𝑥𝑛 et la droite tangente au point
(𝑥𝑛, 𝑓(𝑥𝑛)).
B. Appliquez le même algorithme pour résoudre l’équation : 𝑓(𝑥) = 8𝑥^3 − 12𝑥^2 + 1

51
M.SAYYOURI
Recherche de zéro d’une fonction
Introduction clear all; close all; clc ;
Calculs élémentaires Nmax=100; x=-1/2; it=0; tol=1e-04;
verif=tol+1/2;
Graphiques 2D et 3D

Recherche de zéro d’une


while(it<Nmax & verif>=tol)
fonction fx =inline('x+exp(x)+1’);
Résolution numérique dfx=inline('1+exp(x)’);
fx=feval(fx,x);
d’équations
dfx=feval(dfx,x);
différentielles
if dfx~=0
Initiation à Simulink xn=x-(fx/dfx);
Initiation à SimScape verif=abs(fx/dfx);
x=xn;
elseif dfx==0
disp('PAS DE SOLUTION,LA DERIVEE EST NULLE’)
end
if(it==Nmax & verif >tol)
disp('LA METHODE DE NEWTON NE CONVERGE PAS POUR LA TOLERANCE CONSIDEREE’)
end
it=it+1;
end
52
M.SAYYOURI
Recherche de zéro d’une fonction
Introduction disp(strcat('CONVERGENCE, LA SOLUTION APPROCHEE EST xn = ',num2str(xn)))
Calculs élémentaires disp(strcat('LE NOMBRE D''ITERATION EST= ',num2str(it)))
Graphiques 2D et 3D
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Recherche de zéro d’une
xi=linspace(-12/2,6/2,1000);
fonction fx=inline('xi+exp(xi)+1');
Résolution numérique fxi=feval(fx,xi);
dfx=inline('1+exp(x)');
d’équations
droite=dfx(xn)*(xi-xn)+fx(xn);
différentielles
figure('color',[1 1 1]);plot(xi,fxi,'LineWidth',2)
Initiation à Simulink hold on; plot(xi,droite,'r','LineWidth',1)
Initiation à SimScape hold on
plot(x,fx(x),'kx','MarkerSize',12,'LineWidth',2)
hold on
plot(x,fx(x),'ko','MarkerSize',12,'LineWidth',2)
xlabel('x','fontweight','b','fontsize',12,'LineWidth',1)
ylabel('f(x)','fontweight','b','fontsize',12,'LineWidth',1)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
text('Interpreter','latex','String','f(x)=x+exp(x)+1','Position',[-10/2
20/2],'FontSize',15)
text(xn,2*xn,['xn=',num2str(xn)],'Position',[-3 2],'BackgroundColor',[1
53
1 1]);
M.SAYYOURI
Recherche de zéro d’une fonction
Introduction
Exercice :
Calculs élémentaires 1. En utilisant la méthode de Newton, trouver les racines des fonctions:
Graphiques 2D et 3D

Recherche de zéro d’une

fonction

Résolution numérique

d’équations

différentielles
2. Tracer, sur la même figure, la fonction et sa racine approchée.
Initiation à Simulink

Initiation à SimScape Mini projets


Recherche de zéro d’une fonction par la :
1. Méthode du point fixe
2. Méthode de dichotomie
3. Méthode de fausse position (ou de Lagrange)
4. Méthode de la sécante
54
M.SAYYOURI
Résolution numérique d’équations différentielles
Introduction
 Rappel sur les équations différentielles
Calculs élémentaires

Graphiques 2D et 3D ❖ Définition et généralités


Recherche de zéro d’une
Une équation différentielle ordinaire (ODE, ordinary differential equation) est une équation reliant une
fonction

Résolution numérique fonction d’une variable réelle et ses dérivées. Dans sa forme la plus générale, elle s’écrit f(y, y’, t) = 0
d’équations
où y est la fonction inconnue, y’ sa dérivée et t la variable réelle. Cette formulation est extrêmement
différentielles

Initiation à Simulink
générale et peut poser de grosses difficultés mathématiques. Dans tout ce qui suit, on se limitera aux
Initiation à SimScape
équations différentielles ordinaires explicites, c’est à dire de la forme y’= f(y, t)

❖ Conditions initiales et théorème de Cauchy-Lipschitz


Une équation différentielle admet généralement une infinité de solution, mais un problème physique, par
exemple la chute d’une pierre, n’a qu’une seule solution : celle qu’on mesure. Pour trouver la solution
physique du problème considéré, il faut fixer une condition initiale, c’est à dire un couple (t0, y0)
tel que y(t0) = y0.
55
M.SAYYOURI
Résolution numérique d’équations différentielles
Introduction
On appelle problème de Cauchy la donnée d’une équation différentielle et d’une condition initiale. Le
Calculs élémentaires

Graphiques 2D et 3D
théorème de Cauchy-Lipschitz assure alors que si la fonction f est suffisamment régulière, il existe une
Recherche de zéro d’une unique solution au problème de Cauchy. On considèrera que cette condition de régularité est toujours
fonction
respectée par la suite.
Résolution numérique

d’équations
Exemple : le problème de Cauchy y’ = y, y(0) = 1 admet une unique solution, la fonction exponentielle.
différentielles
❖ Résolution d’une équation différentielle
Initiation à Simulink

Initiation à SimScape
Dans la grande majorité des cas, on ne connaît pas de solution exacte à une équation différentielle : les
solutions analytiques sont des exceptions.
On sait qu’une solution exacte existe, mais on ne peut pas en dire plus. À défaut d’une solution exacte, on
peut résoudre numériquement une équation différentielle, c’est à dire obtenir une valeur numérique
approchée y(t) pour un ensemble de temps discrets.
L’objectif est que lorsque le pas de temps diminue, la solution approchée converge vers la solution
exacte. 56
M.SAYYOURI
Résolution numérique d’équations différentielles
Introduction
 Méthodes numériques
Calculs élémentaires Nous allons détailler quelques méthodes numériques permettant de résoudre l’équation différentielle
Graphiques 2D et 3D
dy
Recherche de zéro d’une  f ( y, t ), y (t0 )  y0
fonction dt
❖ Méthode d’Euler
Résolution numérique

d’équations ▪ La méthode d’Euler est la méthode numérique la plus simple pour résoudre une équation différentielle. Elle
différentielles
consiste à partir du point y0 à t0 et à intégrer la dérivée y’ obtenue en utilisant l’équation différentielle. On
Initiation à Simulink dy
Initiation à SimScape
part du développement limité y(t +t) = y(t) + t + O( t 2 )
dt
▪ On fixe un pas de temps fini t et une grille de temps, {ti }  {t0  it} et on note yi = y(ti) ,

on obtient alors: yi 1= yi + t . f(ti ,yi )


▪ L’erreur est cumulative : à chaque étape, on utilise le résultat de l’étape précédente et on accroît l’erreur. À
chaque étape, l’erreur commise est en O(t 2 ) , l’erreur totale sur le résultat final est donc contrôlée comme
O(t ) (méthode d’ordre 1), ce qui est assez lent : il faut un pas de temps très petit pour obtenir un résultat
57
M.SAYYOURI proche de la valeur exacte.
Résolution numérique d’équations différentielles
Introduction ▪ Une implémentation de la méthode d’Euler pour résoudre l’équation (re-feq : ODE) sur l’intervalle [t0, tf ]
Calculs élémentaires
avec un pas de temps dt est donc, en code Matlab :
Graphiques 2D et 3D

Recherche de zéro d’une


t = t0:dt:tf; % on fixe la grille de temps
n = length(t);
fonction
y = zeros(1,n); % on fixe la taille du tableau y
Résolution numérique
y(1) = y0; % on fixe la condition initiale
d’équations
for i=1:n-1 % on écrit y(i+1) : i+1 ne doit donc pas dépasser n
différentielles
y(i+1) = y(i) + dt*f(y(i),t(i)); % on applique le schéma numérique
Initiation à Simulink end
Initiation à SimScape

Exercice :
1. Résoudre numériquement, par le biais des méthodes de Euler, l’équation différentielle du premier ordre
suivante :

2. Afficher la solution
3. Analyser l’erreur en fonction du pas de discrétisation .
M.SAYYOURI
Résolution numérique d’équations différentielles
Introduction 1.02
clear all; Euler
Calculs élémentaires
clc; 1
Graphiques 2D et 3D
%%
Recherche de zéro d’une dydt=inline('(-y.*t.^2-y.^2+2.*t)./(1-t.^3)','t','y'); 0.98
fonction a=0;
Résolution numérique b=1; 0.96
d’équations n=70;
0.94
différentielles
h=(b-a)/n;
t=a:h:b;
Initiation à Simulink 0.92
epsilon=0.0001;
Initiation à SimScape
u(1)=1+epsilon; 0.9
%%
for i=1:n-1 0.88
u(i+1)=u(i)+h*(dydt(t(i),u(i)));
end 0.86
%%
0.84
plot(t(1:end-1),u,'o-b')
legend('Euler')
0.82
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
M.SAYYOURI
Résolution numérique d’équations différentielles
Introduction
 Autres méthodes numériques
Calculs élémentaires

Graphiques 2D et 3D
▪ La méthode d’Euler converge très lentement, l’erreur est mal contrôlée. On cherche donc des algorithmes
Recherche de zéro d’une plus efficaces. On ne détaillera pas le déroulé des méthodes, le lecteur intéressé est renvoyé à la littérature sur
fonction
le sujet.
Résolution numérique

d’équations ❖ Méthode du point du milieu :


différentielles la méthode du point du milieu consiste à prendre la valeur de la dérivée au point situé au milieu de chaque
Initiation à Simulink
intervalle de temps. C’est une méthode d’ordre 2, c’est à dire que l’erreur est contrôlée en O(t 2 ).
Initiation à SimScape

Le schéma numérique s’écrit


yi 1= yi + t . f(ti 1/2 ,yi 1/2 )
avec ti 1/2= ti + t/2 et yi 1/2= yi + t/2 . f(ti ,yi )

M.SAYYOURI
Résolution numérique d’équations différentielles
1.02
Introduction f=inline('(-y.*t.^2-y.^2+2.*t)./(1-t.^3)','y','t') point milieu
Calculs élémentaires t0=0; 1
Graphiques 2D et 3D
tf=1; 0.98
Recherche de zéro d’une
n=70;
fonction 0.96
dt=(tf-t0)/n;y0=1;
Résolution numérique
t = t0:dt:tf; 0.94
d’équations
n = length(t);
différentielles 0.92
y = zeros(1,n);
Initiation à Simulink
y(1) = y0; 0.9
Initiation à SimScape
for i=1:n-1 0.88
y(i+1) = y(i)+ dt*f(y(i)+(dt/2)*f(y(i),t(i)),t(i)+dt/2);
end 0.86

plot(t(1:end),y,'o-b') 0.84
legend('point milieu')
0.82
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

M.SAYYOURI
Résolution numérique d’équations différentielles
Introduction ❖ Méthode de Heun :
Calculs élémentaires la méthode de Heun, ou méthode d’Euler améliorée ou encore méthode de Runge-Kutta d’ordre 2 est une
Graphiques 2D et 3D
autre méthode d’ordre O(t 2 ) Son schéma numérique est :
t
Recherche de zéro d’une

fonction yi 1= yi + . (f(ti 1 ,y)+f(ti ,yi )) avec y= yi + t . f(ti ,yi )


Résolution numérique 2
1
d’équations
f=inline('(-y.*t.^2-y.^2+2.*t)./(1-t.^3)','y','t') 0.98
heun

différentielles
t0=0;tf=1; n=70; dt=(tf-t0)/n; y0=1; 0.96
Initiation à Simulink
t = t0:dt:tf; n = length(t);
Initiation à SimScape 0.94
y = zeros(1,n); y(1) = y0;
0.92
for i=1:n-1
yy(i)=y(i)+dt*f(y(i),t(i)); 0.9

y(i+1) = y(i) 0.88

+(dt/2)*(f(yy(i),t(i+1))+f(y(i),t(i))); 0.86

end 0.84

plot(t(1:end),y,'o-b') 0.82
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
legend('heun')
M.SAYYOURI
Résolution numérique d’équations différentielles
Introduction ❖ Méthode de Runge Kutta d’ordre 4 :
Calculs élémentaires
la méthode de Runge-Kutta est une méthode
Graphiques 2D et 3D

Recherche de zéro d’une


générale utilisable à n’importe quel ordre. Le
fonction schéma numérique de l’ordre 4 s’écrit :
Résolution numérique

d’équations f=inline('(-y.*t.^2-y.^2+2.*t)./(1-t.^3)','y','t')
différentielles t0=0;tf=1; n=70; dt=(tf-t0)/n;y0=1; 1
runge-Kuta
Initiation à Simulink t = t0:dt:tf; n = length(t); 0.98

Initiation à SimScape y = zeros(1,n); y(1) = y0; 0.96

for i=1:n-1 0.94


k1=dt*f(y(i),t(i));
0.92
k2=dt*f(y(i)+k1/2,t(i)+dt/2)
0.9
k3=dt*f(y(i)+k2/2,t(i)+dt/2)
k4=dt*f(y(i)+k3,t(i+1)) 0.88

y(i+1) = y(i)+(k1+2*k2+2*k3+k4)/6; 0.86

end 0.84
plot(t(1:end),y,'o-b’), legend('runge-Kuta')
0.82
M.SAYYOURI 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Résolution numérique d’équations différentielles
Introduction Exercice
Calculs élémentaires 1. Résoudre numériquement, par le biais des méthodes de Euler, de Heun et de Runge-Kutta d’ordre 4,
Graphiques 2D et 3D
l’équation différentielle du premier ordre suivante :
Recherche de zéro d’une

fonction

Résolution numérique

d’équations
2. Afficher sur la même figure, la solution des trois méthodes.
différentielles 3. Connaissant la solution exacte de l’équation différentielle ci-dessous:
Initiation à Simulink

Initiation à SimScape

La solution exacte est : 3 𝑒𝑥𝑝(−𝑡/2) + 𝑡 − 2


4. Tracer le graphique donnant l’erreur relative, pour chaque pas de discrétisation, en fonction du nombre
d’itérations.
5. Tracer le graphique donnant le maximum de l’erreur relative en fonction du pas de discrétisation.

M.SAYYOURI
Résolution numérique d’équations différentielles
Introduction Exercice
Calculs élémentaires 1. Résoudre numériquement, par le biais des méthodes de Euler, de Heun et de Runge-Kutta d’ordre 4,
Graphiques 2D et 3D
l’équation différentielle du premier ordre suivante :
Recherche de zéro d’une

fonction

Résolution numérique

d’équations
2. Afficher sur la même figure, la solution des trois méthodes.
différentielles 3. Connaissant la solution exacte de l’équation différentielle ci-dessous:
Initiation à Simulink

Initiation à SimScape

La solution exacte est : 3 𝑒𝑥𝑝(−𝑡/2) + 𝑡 − 2


4. Tracer le graphique donnant l’erreur relative, pour chaque pas de discrétisation, en fonction du nombre
d’itérations.
5. Tracer le graphique donnant le maximum de l’erreur relative en fonction du pas de discrétisation.

M.SAYYOURI
Résolution numérique d’équations différentielles
Introduction
clear all; clc;
dydt=inline('(t-y)/2','y','t');
Calculs élémentaires
funex=inline('3*exp(-t/2)-2+t','t’);
Graphiques 2D et 3D
a=0;b=6; ik=0; epsilon=0.0001; y(1)=1; col={'k','b','r','m','c','g'};
Recherche de zéro d’une for n=60:10:110
fonction dt=(b-a)/n; t=a:dt:b;
Résolution numérique for i=1:n-1
d’équations
k1=dt*dydt(y(i),t(i));
k2=dt*dydt(y(i)+k1/2,t(i)+dt/2);
différentielles
k3=dt*dydt(y(i)+k2/2,t(i)+dt/2);
Initiation à Simulink
k4=dt*dydt(y(i)+k3,t(i+1));
Initiation à SimScape y(i+1)=y(i)+(k1+2*k2+2*k3+k4)/6;
end
ik=ik+1; t=t(1:end-1);
err=abs((funex(t)-y)./funex(t)); max_err(ik)=max(err); pas(ik)=dt;
figure(1); hold on; plot(err,col{ik});
xlabel('NOMBRE D''ITERATIONS '); ylabel('ERREUR RELATIVE')
end
figure(2); plot(t,y,'-*');
hold on; plot(t,funex(t),'o-r')
figure(3); plot(pas,max_err,'r-+’); axis([0.05 0.11 0 7e-08])
M.SAYYOURI xlabel('PAS DE DISCRETISATION’); ylabel('MAXIMUM DE L''ERREUR RELATIVE')
Résolution numérique d’équations différentielles
Introduction  Équations différentielles d’ordre 𝑛
Calculs élémentaires N’importe quelle équation différentielle d’ordre 𝑛 peut être ramenée à un systèmes de 𝑛 équations du premier
Graphiques 2D et 3D
ordre. Nous allons illustrer ceci par un exemple. Soit l’équation différentielle du second ordre suivante :
Recherche de zéro d’une

fonction

Résolution numérique

d’équations

différentielles

Initiation à Simulink Posons


Initiation à SimScape

il vient

 u '1 (t )   0 1   u1 (t )   0 
Donc
     
 u '2 (t )   1 t / 2   u2 (t )   3 

M.SAYYOURI
Résolution numérique d’équations différentielles
Introduction a=0;b=1;n=64;h=(b-a)/n;t=a:h:b; 2
SOLUTION NUMERIQUE
SOLUTION EXACTE
Calculs élémentaires fun=inline('[u(2),(t*u(2))/2-u(1)+3]','t','u');
1.8
Graphiques 2D et 3D %ou bien fun=@(t,u)[u(2),(t*u(2))/2-u(1)+3];
Recherche de zéro d’une
u=[1 0]; 1.6

for i=1:n

y(t)
fonction 1.4
u(i+1,:)=u(i,:)+h*feval(fun,t(i),u(i,:));
Résolution numérique
end 1.2
d’équations
funex=t.^2+1;
1
différentielles plot(t,u(:,1),'o','MarkerSize',8);
Initiation à Simulink hold on 0.8
0 0.2 0.4 0.6 0.8 1
Initiation à SimScape plot(t,funex,'r','LineWidth',1.5); t FONCTION DERIVEE
2
hold on
axis([-0.05 1.1 0.8 2.1])
legend('SOLUTION NUMERIQUE','SOLUTION EXACTE’); 1.5

xlabel('t');

dy/dt
ylabel('y(t)') 1

figure
plot(t,u(:,2),'or','MarkerSize',8)
0.5
axis([-0.05 1.1 0 2.2]);
legend('FONCTION DERIVEE’); xlabel('t’); ylabel('dy/dt')
M.SAYYOURI 0
0 0.2 0.4 0.6 0.8 1
Résolution numérique d’équations différentielles
Introduction  Au moyen de routines Matlab
Calculs élémentaires Matlab comprend un certain nombre de solveurs destinés à la résolution d’équations différentielles. Les
Graphiques 2D et 3D plus utilisés sont ode23 et ode45, qui sont basés sur la méthode de Runge-Kutta explicite à un pas. Le
Recherche de zéro d’une solveur ode113, utilise la méthode de Adams-Bashforth-Moulton multi-pas. Les autres solveurs sont
fonction ode15s, ode23s, ode23t, ode23tb.
Résolution numérique
➢ Ils ont tous la même syntaxe :[t, y] = solveur(eqs, [ti ; tf], yinit, opts).
d’équations
➢ Cette syntaxe renvoie la solution y au temps t.
différentielles
➢ L’argument eqs est le système d’équations différentielles. Ce système peut être défini de plusieurs
Initiation à Simulink
manières. Soit à travers un fichier M-file, dans ce cas on doit rajouter l’identifiant @eqs. Soit à travers
Initiation à SimScape
une commande inline ou bien au moyen de la fonction anonyme.
➢ Ce système d’équations différentielles est résolu sur l’intervalle [ti ; tf], avec les conditions initiales
yinit= [y(ti) ; y(tf)].
➢ L’argument d’entrée opts, de type srtucture, compte les options d’optimisation indiquées dans odeset, sa
syntaxe est donnée par : opts = odeset(’Property1’, value1, ’Property2’, value2, ...).
Ainsi, chaque propriété est suivie de sa valeur. À titre illustratif, la propriété (’Stats’, ’on’, ...) affiche, à la
fin de l’exécution, des statistiques relatives au calcul effectué.
➢ Pour plus d’informations sur les paramètres d’optimisation, taper help odeset.
M.SAYYOURI
Résolution numérique d’équations différentielles
Introduction Exercice 4
Calculs élémentaires
1. Résoudre symboliquement et numériquement au moyen du solveur ode23, l’équation différentielle du
Graphiques 2D et 3D

Recherche de zéro d’une second ordre suivante :


fonction

Résolution numérique

d’équations

différentielles 2. Afficher sur la même figure, la solution numérique et la solution analytique.


Initiation à Simulink
Exercice 5
Initiation à SimScape
1. Résoudre numériquement au moyen du solveur ode45, l’équation différentielle du second ordre suivante :

 y "(t )   (1  y 2 ) y '  y

 y (0)  1 , y'(0)=0
2. Afficher sur la même figure, la solution numérique pour différentes valeurs de 𝛼. Il en est de même pour
les fonctions dérivées. Avec, le paramètre 𝛼 qui prend ses valeurs de 1.5 à 4 par pas de 0.5.

M.SAYYOURI
Résolution numérique d’équations différentielles
Introduction %exercice 4
Calculs élémentaires %solution analytique
Graphiques 2D et 3D syms t
Recherche de zéro d’une ySym=dsolve('D2y+3*y=4*sin(t)+exp(-t)','y(0)=1','Dy(0)=1','t’)
fonction
%Solution numerique
Résolution numérique
a=0; b=10; n=200; h=(b-a)/n; tn=a:h:b; y=[1;1];
d’équations
eqs=@(tn,y)[y(2);-3*y(1)+4*sin(tn)+exp(-tn)];
différentielles
opts=odeset('Stats','on','RelTol',1e-3);
Initiation à Simulink
[tn,ysol]=ode23(eqs,[tn(1);tn(end)],y , opts);
Initiation à SimScape
plot(tn,ysol(:,1),'o-','LineWidth',1);
hold on ;
plot(tn,double(subs(ySym,t,tn)),'o-r','LineWidth',1)
xlabel('t','FontSize',12);
ylabel('y(t)','FontSize',12);
ih1=legend('SOLUTION NUMERIQUE','SOLUTION ANALYTIQUE');
set(ih1,'Interpreter','none','Location','NorthWest','Box','off','Color','
none')
M.SAYYOURI
Résolution numérique d’équations différentielles
Introduction %exercice 5
Calculs élémentaires clc;
Graphiques 2D et 3D
clear all;
Recherche de zéro d’une
close all;
a=1;b=25;n=100;h=(b-a)/n;t=a:h:b; y=[1;0];
fonction
alpha=[1.5;2.0;2.50;3.0;3.5;4.0];
Résolution numérique
col={'o-k','o-m','-co','o-g','o-','o-r'};
d’équations
for ik=1:numel(alpha)
différentielles eqs=@(t,y)[y(2);alpha(ik)*(1-y(1).^2)*y(2)-y(1)];
Initiation à Simulink opts=odeset('Stats','on','RelTol',1e-3);
Initiation à SimScape [t,ySol]=ode45(eqs,[t(1);t(end)],y, opts);
figure(1);
plot(t,ySol(:,1),col{ik});
hold on;
xlabel('t','FontSize',12);
ylabel('y(t)','FontSize',12)
figure(2);plot(t,ySol(:,2),col{ik});
hold on;
xlabel('t','FontSize',12);
ylabel('y^{’’}(t)','FontSize',12)
M.SAYYOURI end
Initiation à Simulink
Introduction
SIMULINK® est un outil de conception visuel, intégré à l'environnement MATLAB.
Calculs élémentaires

Graphiques 2D et 3D
▪ Il fournit un environnement de modélisation graphique par schéma-blocs.
Recherche de zéro d’une ▪ Il permet de modéliser, simuler et analyser les systèmes dynamiques.
fonction
▪ Il supporte les systèmes linéaires et non-linéaires, modélisé en temps continus, discrets
Résolution numérique
ou hybrides.
d’équations différentielles

Initiation à Simulink
Il est largement utilisé dans le monde, dans différents domaines tels que :
Initiation à SimScape Aérospatial et Défense;
Automobile;
Communications ;
Electronique et Traitement du signal;
Instrumentation médicale…
Des bibliothèques de blocs Simulink spécialisés (BlockSets) dans divers domaines.
M.SAYYOURI
Initiation à Simulink
Introduction

Calculs élémentaires
Solid
Graphiques 2D et 3D

Blocksets
Works SimMechanics SimPowerSystems
Recherche de zéro d’une

fonction

Résolution numérique SimScape SIMULINK StateFlow


d’équations différentielles

Initiation à Simulink

Initiation à SimScape Neural

Toolboxes
Filter Design Network
MATLAB

Image Wavelet
processing
Fenêtre de Fenêtres
commande graphiques

M.SAYYOURI
Initiation à Simulink
Introduction

Calculs élémentaires
 Simscape : modélisation physique multi-domaines (mécanique, électrique,
Graphiques 2D et 3D

Recherche de zéro d’une


hydraulique, …).
fonction
 Stateflow : environnement de conception pour le développement de machines à
Résolution numérique

d’équations différentielles
états.
Initiation à Simulink
 SimMechanics : modélisation mécanique 3-D avec possibilité d'importer des
Initiation à SimScape
modèles SolidWorks.
 SimElectronics : modélisation de systèmes d'électronique et d'électromécanique.
 SimPowerSystems : modélisation de systèmes d'électrotechnique et
d'électronique de puissance.

M.SAYYOURI
Initiation à Simulink
Introduction

Calculs élémentaires Toutes représentations sous Simulink se fait au moyen de blocs, caractérisés par leur fonction
Graphiques 2D et 3D et leurs entrées/sorties :
Recherche de zéro d’une

fonction

Résolution numérique

d’équations différentielles

Initiation à Simulink
Ils sont reliés entres eux par des signaux temporels :
Initiation à SimScape

M.SAYYOURI
Initiation à Simulink
Introduction

Calculs élémentaires

Graphiques 2D et 3D
L’outil principal de Simulink
Recherche de zéro d’une est l’explorateur de librairies.
fonction
Il comprend tout ce qui est
Résolution numérique
nécessaire sous Simulink :
d’équations différentielles

Initiation à Simulink
Les blocs regroupés en
Initiation à SimScape
librairies par caractéristiques
communes
La barre d’outils pour la
gestion des modèles
Une aide très complète

M.SAYYOURI
Initiation à Simulink
Introduction

Calculs élémentaires Librairie


Graphiques 2D et 3D « Commonly used ».
Recherche de zéro d’une Contient les blocs les
fonction plus fréquents :
Résolution numérique
Constante
d’équations différentielles

Initiation à Simulink
Gain
Initiation à SimScape Sommateur
Intégrateur
Mux

M.SAYYOURI
Initiation à Simulink
Introduction

Calculs élémentaires
Librairie « Sinks ».
Graphiques 2D et 3D
Contient les blocs de
Recherche de zéro d’une
sorties, en particulier :
fonction
Visualisation graphique :
Résolution numérique
Scope, Floating Scope,
d’équations différentielles
Display
Initiation à Simulink

Initiation à SimScape
Enregistrement des
données : To File, To
Workspace
Création de ports de
sortie : Out1

M.SAYYOURI
Initiation à Simulink
Introduction

Calculs élémentaires
Librairie « Sources ».
Contient les blocs d’entrées,
Graphiques 2D et 3D

Recherche de zéro d’une


en particulier :
fonction

Résolution numérique
Génération de signaux :
Step, Sine Wave, Ramp, Pulse
d’équations différentielles
Generator, …
Initiation à Simulink

Initiation à SimScape Chargement de données :


From File, From Workspace
Création de ports d’entrée :
In1

M.SAYYOURI
Initiation à Simulink
Introduction

Calculs élémentaires
Exercice de prise en main de Simulink :
Graphiques 2D et 3D Visualisation simultanée d’une sinusoïde et de son intégrale
Recherche de zéro d’une

fonction

Résolution numérique

d’équations différentielles

Initiation à Simulink

Initiation à SimScape

M.SAYYOURI
Initiation à Simulink
Introduction

Calculs élémentaires
1 – Création d’un nouveau modèle :
Graphiques 2D et 3D

Recherche de zéro d’une Cliquez sur l’icône


fonction

Résolution numérique dans la barre d’outils Matlab


d’équations différentielles

Initiation à Simulink
Cliquez sur l’icône
Initiation à SimScape
Pour créer un schéma-bloc.

Pensez à enregistrer votre modèle


dans votre espace de travail

M.SAYYOURI
Initiation à Simulink
Introduction

Calculs élémentaires 2 – Ajout des blocs :


Graphiques 2D et 3D
Ajout par « glisser / déposer » (drag and
Recherche de zéro d’une
drop) de la fenêtre de librairie vers la
fonction fenêtre du modèle :
Résolution numérique
Librairie « commonly used » :
d’équations différentielles

Initiation à Simulink Intégrateur, Mux


Initiation à SimScape
Librairie « Sinks » :
Scope
Librairie « Sources » :
Sine Wave

M.SAYYOURI
Initiation à Simulink
Introduction

Calculs élémentaires
3 – Organisation des blocs :
Graphiques 2D et 3D

Recherche de zéro d’une


Pour déplacer un bloc vous
pouvez :
fonction

Résolution numérique Cliquer et glisser le bloc


d’équations différentielles
Sélectionner le bloc, et le
Initiation à Simulink déplacer au moyen des flèches
Initiation à SimScape du clavier.

Lorsque vous déplacez un bloc, si l’une de ses entrée/sortie coïncide avec une sortie/entrée
d’un autre bloc, un trait bleu apparait.
Cela vous permet d’aligner convenablement les blocs.

M.SAYYOURI
Initiation à Simulink
Introduction

Calculs élémentaires 4 – Connection des blocs :


Graphiques 2D et 3D
Pour connecter une entrée à une sortie vous devez :
Recherche de zéro d’une

fonction Cliquer sur le port (une croix apparait)


Résolution numérique
Maintenir enfoncé le bouton. En arrivant sur
d’équations différentielles l’autre port, une double croix apparait.
Initiation à Simulink
Relâcher le bouton de la souris
Initiation à SimScape

Connections à réaliser :

M.SAYYOURI
Initiation à Simulink
Introduction

Calculs élémentaires
5 – Création d’un branchement :
Graphiques 2D et 3D
Pour brancher une entrée à un signal
Recherche de zéro d’une
existant vous devez :
fonction

Résolution numérique Cliquer sur le port (une croix apparait)


d’équations différentielles
Maintenir enfoncé le bouton. En
Initiation à Simulink Arrivant sur le signal, une double croix
Initiation à SimScape apparait.
Relâcher le bouton de la souris

M.SAYYOURI
Initiation à Simulink
Introduction

Calculs élémentaires 6 – Simulation :


Graphiques 2D et 3D

Recherche de zéro d’une


Cliquer sur l’icône pour
fonction lancer la simulation
Résolution numérique

d’équations différentielles

Initiation à Simulink Double-cliquer sur le scope pour


Initiation à SimScape visualiser le résultat

Cliquer sur l’icône pour


adapter la fenêtre à la taille

M.SAYYOURI
Initiation à Simulink
Introduction

Calculs élémentaires Paramètres de simulation :


Graphiques 2D et 3D Menu « Simulation » → « Configuration Paramètres »
Recherche de zéro d’une

fonction

Résolution numérique

d’équations différentielles

Initiation à Simulink

Initiation à SimScape

M.SAYYOURI
Initiation à Simulink
Introduction

Calculs élémentaires Intervalle de simulation :


Graphiques 2D et 3D

Recherche de zéro d’une

fonction

Résolution numérique

d’équations différentielles
Temps de début : généralement laissé à 0s.
Initiation à Simulink

Initiation à SimScape Temps de fin : dépend des caractéristiques temporelles des signaux à visualiser (par
défaut = 10s). Pour une simulation en continu, mettre la valeur à « inf ».

M.SAYYOURI
Initiation à Simulink
Introduction

Calculs élémentaires Solveur : résolution numérique par pas temporels


Graphiques 2D et 3D

Recherche de zéro d’une


Zoom sur une région :
fonction
la résolution numérique
Résolution numérique

d’équations différentielles
se fait à intervalles de
Initiation à Simulink

Initiation à SimScape temps variables ou fixes.

la solution globale est

obtenue par interpolation

linéaire entre ces différents points (segments de droites).

M.SAYYOURI
Initiation à Simulink
Introduction

Calculs élémentaires Types de solveurs : « variable-step »


Graphiques 2D et 3D

Recherche de zéro d’une

fonction

Résolution numérique

d’équations différentielles

Initiation à Simulink

Initiation à SimScape

M.SAYYOURI
Initiation à Simulink
Introduction

Calculs élémentaires
Types de solveurs : «fixed-step »
Graphiques 2D et 3D

Recherche de zéro d’une

fonction

Résolution numérique

d’équations différentielles

Initiation à Simulink

Initiation à SimScape

M.SAYYOURI
Initiation à Simulink
Introduction

Calculs élémentaires Différences entre pas fix et pas variable :


Graphiques 2D et 3D
« Variable-step » :
Recherche de zéro d’une

fonction
+ : précision (adaptation du pas aux variations du signal)
Résolution numérique

d’équations différentielles - : lenteur (processus itératif pour calcul du pas variable)


Initiation à Simulink
« Fixed-step » :
Initiation à SimScape

+ : rapidité (calcul direct)


- : précision (dépend des variations du signal)

M.SAYYOURI
Initiation à Simulink
Introduction

Calculs élémentaires
En cas de « mauvaise » simulation :
Graphiques 2D et 3D
Préférer au maximum un « Variable-step » (par défaut). Mettre une valeur de « Max
Recherche de zéro d’une

fonction Step Size » suffisamment petite.


Résolution numérique

d’équations différentielles
Si calcul de simulation trop long, préférer alors un « Fixed-step », mettre une valeur
Initiation à Simulink suffisamment petite pour le pas.
Initiation à SimScape

A savoir :

Si vous avez des non-linéarités dans votre modèle, choisir un solveur « stiff » (odes).

Le «Fixed-step» est le seul qui soit réalisable physiquement (période d’échantillonnage


fixe) et donc le seul qui permet de la génération de code ou l’implémentation dans un
composant.
M.SAYYOURI
Initiation à Simulink
Introduction

Calculs élémentaires
Le processus de modélisation d’un système peut être décomposé en 6 étapes :
Graphiques 2D et 3D

Recherche de zéro d’une


Définition du système
fonction

Résolution numérique Identification des composants


d’équations différentielles

Initiation à Simulink Mise en équations


Initiation à SimScape
Conception du schéma-bloc

Simulation du système

Validation du modèle

M.SAYYOURI
Initiation à SimScape
Introduction

Calculs élémentaires
SIMSCAPE™ étend la gamme de produits Simulink avec des outils de modélisation et de
Graphiques 2D et 3D
simulation de systèmes physiques dans les domaines suivants :
Recherche de zéro d’une

fonction
Mécanique
Résolution numérique

d’équations différentielles
Hydraulique
Initiation à Simulink

Initiation à SimScape Pneumatique

Thermique

Electrique

Electromagnétique

M.SAYYOURI
Initiation à SimScape
Introduction

Calculs élémentaires
A l’instar de Simulink, SimScape à une approche de réseau physique ressemblant à un
Graphiques 2D et 3D

Recherche de zéro d’une


schématique où :
fonction
Les blocs correspondent à des composants physiques : un ressort, une pompe, un
Résolution numérique

d’équations différentielles moteur, une résistance, …


Initiation à Simulink

Initiation à SimScape
Les connecteurs de ces blocs sont typés.

Les liaisons correspondent à des connections physiques permettant le transfert


d’énergie.

M.SAYYOURI
Initiation à SimScape
Introduction

Calculs élémentaires
2 Types de connecteur :
Graphiques 2D et 3D
Port physique conservatif : port bidirectionnel représentant une connetion physique , lié
Recherche de zéro d’une

fonction aux variables physiques du type de port.


Résolution numérique

d’équations différentielles
Port de signal physique : port unidirectionnel qui transfert un signal typé. Ils permettent
Initiation à Simulink l’action ou la mesure d’une certaine grandeur physique en un ou plusieurs points du
Initiation à SimScape
réseau.

M.SAYYOURI
Initiation à SimScape
Introduction

Calculs élémentaires
Port physique conservatif :
Graphiques 2D et 3D Caractérisé par son couple de variables conjuguées : les variables « Through »
Recherche de zéro d’une (traversante) et « Across » (transversale).
fonction

Résolution numérique

d’équations différentielles

Initiation à Simulink

Initiation à SimScape

La fonctionnalité de chaque bloc est définie par la relation entre ces 2 variables.
M.SAYYOURI
Initiation à SimScape
Introduction

Calculs élémentaires Types de variable :


Graphiques 2D et 3D

Recherche de zéro d’une


Domaine Physique Variable « transversale » Variable « traversante»
fonction

Résolution numérique Electrique Tension Courant


d’équations différentielles
Hydraulique Pression Débit
Initiation à Simulink
Magnétique Force magnétomotrice Flux
Initiation à SimScape

Mécanique rotationnelle Vitesse angulaire Couple


Mécanique translationnelle Vitesse linéaire Force
Pneumatique Pression et température Débit massique et Flux
thermique

Thermique Température Flux thermique

M.SAYYOURI
Initiation à SimScape
Introduction

Calculs élémentaires
Port physique de signal :
Graphiques 2D et 3D Permet de manipuler directement une grandeur précise.
Recherche de zéro d’une
Comportement semblable aux signaux Simulink.
fonction

Résolution numérique
Librairie d’opérateurs mathématiques spécifiques.
d’équations différentielles Permet le lien entre SimScape et Simulink.
Initiation à Simulink

Initiation à SimScape

M.SAYYOURI
Initiation à SimScape
Introduction

Calculs élémentaires Lois des réseaux :


Graphiques 2D et 3D

Recherche de zéro d’une

fonction
En chaque nœud, la somme des variables traversantes entrantes est égale à la somme
Résolution numérique
des variables traversantes sortantes.
d’équations différentielles

Initiation à Simulink
Chaque port conservatif connecté à un nœud possède la même variable transversale.
Initiation à SimScape

M.SAYYOURI
Initiation à SimScape
Introduction

Calculs élémentaires Librairies SimScape :


Graphiques 2D et 3D

Recherche de zéro d’une


Chaque domaine physique possède sa propre librairie divisée en plusieurs catégories :
fonction
➢ Eléments (divisée éventuellement en sous-catégories)
Résolution numérique

d’équations différentielles
➢ Actionneurs
Initiation à Simulink

Initiation à SimScape ➢ Capteurs

➢ Utilitaires (pour certains domaines seulement)

Librairie spécifique pour les signaux physiques.

Librairie d’utilitaires : contient les blocs permettant la simulation du réseau et


l’interfaçage avec Simulink
M.SAYYOURI
Initiation à SimScape
Introduction

Calculs élémentaires
Règles de conception :
Graphiques 2D et 3D

Recherche de zéro d’une Deux ports conservatifs de nature différentes ne peuvent pas être reliés entre eux.
fonction

Résolution numérique Chaque réseau physique doit posséder au moins une référence.
d’équations différentielles

Initiation à Simulink
Chaque réseau physique doit posséder un solveur : c’est lui qui va résoudre les
Initiation à SimScape équations du réseau physique en chaque nœud en tenant compte des relations entre
variables imposées par les composants. Il peut être connecté à n’importe quel lien du
réseau physique.

M.SAYYOURI
Initiation à SimScape
Introduction
Exemple 1 : redressement mono alternance
Calculs élémentaires

Graphiques 2D et 3D

Recherche de zéro d’une

fonction

Résolution numérique

d’équations différentielles

Initiation à Simulink

Initiation à SimScape

M.SAYYOURI
Initiation à SimScape
Introduction
Exemple 2 : analogie système mécanique – système électrique
Calculs élémentaires

Graphiques 2D et 3D
Une vibration est un mouvement d'oscillation autour d'une position d'équilibre stable. Le comportement
Recherche de zéro d’une des circuits électriques R, L, C linéaires (fig 2) et celui des systèmes mécaniques masse, ressort avec
fonction
frottements visqueux (fig 1) est représenté par des équations différentielles semblables (second ordre,
Résolution numérique
coefficients constants). Il est possible de passer d'un circuit électrique à un système mécanique en
d’équations différentielles

Initiation à Simulink
assimilant :
Initiation à SimScape

M.SAYYOURI
Initiation à SimScape
Introduction

Calculs élémentaires Oscillateur mécanique :


Graphiques 2D et 3D

Recherche de zéro d’une

fonction

Résolution numérique

d’équations différentielles

Initiation à Simulink

Initiation à SimScape

M.SAYYOURI
Initiation à SimScape
Introduction

Calculs élémentaires
Oscillateur électrique :
Graphiques 2D et 3D

Recherche de zéro d’une

fonction

Résolution numérique

d’équations différentielles

Initiation à Simulink

Initiation à SimScape

M.SAYYOURI
Initiation à SimScape
Introduction

Calculs élémentaires

Graphiques 2D et 3D

Recherche de zéro d’une

fonction

Résolution numérique

d’équations différentielles

Initiation à Simulink

Initiation à SimScape

Fin

M.SAYYOURI

Vous aimerez peut-être aussi