• Aucun résultat trouvé

Introduction à MATLAB Simulink Control toolbox

N/A
N/A
Protected

Academic year: 2022

Partager "Introduction à MATLAB Simulink Control toolbox"

Copied!
78
0
0

Texte intégral

(1)

Département de Génie Energétique et Environnement

.

Département de Génie Electrique.

Introduction à MATLAB

Simulink Control toolbox

MC ESHER

Edition janvier 2007 D PLANSON, JM RETIF

Institut National des Sciences Appliquées de Lyon

(2)
(3)

SOMMAIRE MATLAB

1 INTRODUCTION. ... 1

1.1 INTRODUCTION A MATLAB... 2

2 L'ENVIRONNEMENT MATLAB - GENERALITES... 5

2.1 PRESENTATION DE LINTERFACE... 5

2.2 TRAVAIL EN MODE INTERACTIF OU EXECUTIF... 6

2.3 FONCTION "HELP" ... 9

2.4 ESPACE DE TRAVAIL (WORKSPACE)... 10

3 OPERATIONS MATHEMATIQUES. ... 13

3.1 SCALAIRE, VECTEUR, MATRICE. ... 13

3.2 OPERATIONS ARITHMETIQUES... 17

3.3 VARIABLES ET FONCTIONS... 18

4 GRAPHIQUES. ... 20

4.1 GRAPHIQUES 2D. ... 20

4.2 GRAPHIQUES 3D. ... 23

5 PROGRAMMATION AVEC MATLAB... 24

5.1 COMMUNICATION AVEC LUTILISATEUR. ... 24

5.2 OPERATEURS RELATIONNEL ET LOGIQUE. ... 24

5.3 INSTRUCTIONS DE CONTROLE... 25

5.4 FICHIERS *.M OU SCRIPTS... 26

5.5 CREATION DE FONCTIONS MATLAB. ... 26

6 FONCTIONS AVANCEES... 27

6.1 TRAITEMENT DES POLYNOMES... 27

6.2 INTERPOLATIONS. ... 27

6.3 INTEGRATION NUMERIQUE. ... 28

6.4 RESOLUTION DE SYSTEMES DEQUATIONS NON-LINEAIRES. ... 29

6.5 RESOLUTION DE SYSTEMES DEQUATIONS DIFFERENTIELLES ORDINAIRES. ... 29

7 RESUME, NON EXHAUSTIF, DES COMMANDES MATLAB ... 31

7.1 MATHEMATIQUES... 31

7.2 GRAPHIQUES... 32

7.3 CARACTERES SPECIAUX... 33

7.4 ANALYSE DE DONNEES... 33

7.5 PROGRAMMATION ET TYPES DE DONNEES... 33

7.6 IMPORTATION ET EXPORTATION DE DONNEES... 34

7.7 OUTILS DU BUREAU ET ENVIRONNEMENT DE DEVELOPPEMENT... 34

(4)

CONTROL SYSTEM TOOLBOX

1. REPRESENTATION DES SYSTEMES...35

1.1. Rappel sur les représentations continues. ...35

1.1.1. Cas continu, saisi d’une fonction de transfert. ...35

1.1.2. Cas continu, saisi d’une matrice de transfert. ...36

1.1.3. Cas continu, saisi des équations d’état...37

1.2. Rappel sur les systèmes échantillonnés. ...38

1.2.1. Cas discret, fonction de transfert...38

1.2.2. Cas discret, matrice de transfert...39

1.2.3. Cas discret, équations...40

1.3. Traitement des transmittances...41

2. CHANGEMENT ENTRE LES FORMALISMES TRANSMITTANCE ET EQUATIONS DETAT. ....43

2.1. Passage d’une fonction de transfert vers une équation d’état. ...43

2.1.1. Cas continu mono variable. ...43

2.1.2. Cas discret monovariable. ...44

2.2. Passage d’une matrice de transfert vers des équations d’état. ...45

2.3. Passage entre des équations d’état et une fonction de transfert. ...46

2.4. Passage entre des équations d’état et une matrice de transfert. ...46

3. DISCRETISATION DUN SYSTEME CONTINU...48

3.1. Discrétisation d’une fonction de transfert...48

3.2. Discrétisation des équations d’état continues. ...48

4. PASSAGE DUN SYSTEME DISCRET A UN SYSTEME CONTINU. ...50

4.1. Cas d’une fonction de transfert. ...50

5. ANALYSE DES ZEROS ET DES POLES DU SYSTEME...50

5.1. Cas d’une fonction de transfert ...51

5.2. Cas d’un système multivariable. ...52

6. ANALYSE FREQUENTIELLE...53

7. ANALYSE TEMPORELLE...54

8. EXEMPLE POUR UNE FONCTION DE TRANSFERT CONTINUE DU SECOND ORDRE...55

9. SOMMAIRE DES PRINCIPALES FONCTIONS. ...57

SIMULINK 1 INTRODUCTION A SIMULINK... 65

2 DEMARRAGE DE SIMULINK... 65

2.1 LES DIFFERENTES BIBLIOTHEQUES... 66

3 UTILISATION DE SIMULINK... 69

3.1 CONSTRUCTION DUN DIAGRAMME SIMULINK... 69

3.2 CHOIX DES PARAMETRES DE SIMULATION... 70

3.3 LANCEMENT DE LA SIMULATION... 71

(5)

Préface

Matlab constitue aujourd’hui un outil de simulation incontournable pour l’ingénieur.

A l’orée de ce nouveau millénaire le concepteur regarde « l’avenir » de son projet technologique au sein du silicium tel la Pythie de Delphes qui augurait du futur dans les entrailles de quelques gallinacés.

(6)
(7)

MATLAB

1 INTRODUCTION.

Ce document est un guide simplifié du logiciel MATLAB et SIMULINK pour les étudiants des départements de Génie Energétique et Environnement et de Génie Electrique de l’INSA de Lyon. C’est ce logiciel que vous utiliserez durant les trois années que vous passerez au département. Il sera utilisé en TP et TD et servira à illustrer certaines parties de cours (Automatique continue en 4éme et 5éme année, Signaux Systèmes en 3ème année, Traitement du Signal en 4ème année, TP de MAP, etc…). L’objectif est de présenter quelques notions de base pour permettre aux étudiants un démarrage rapide. Le logiciel dispose d’une aide en ligne très performante, qui comprend une grande quantité d’exemple qu’il ne faut pas hésiter à consulter.

De plus, sur les serveurs de « The Mathworks » (compagnie propriétaire de Matlab, Simulink, etc… ) www.mathworks.com et www.mathworks.fr vous trouverez quantité de démonstrations, exemples et tutoriaux et même d’anciennes versions de Matlab (tournant sous DOS) que vous pourrez télécharger pour travailler chez vous.

Pour toutes remarques ou commentaires sur ce document «Introduction à MATLAB et Simulink» joignez nous par courriel : [email protected] ou jean-marie.retif@insa- lyon.fr.

On peut positionner l’enseignement de MATLAB au sein du Département GEN de la façon suivante :

ANALYSE NUMERIQUE

SIMULINK

COMMANDE DES PROCEDES CONTINUS SIMULINK

+ Boîtes à outils Spécialisées

Simulink

Cours 3GEN

Noyau MATLAB

TOOLBOXES (Boîtes à outils

spécialisées)

Logiciel

Matlab Cours

5GEN

CALCUL ET MODELISATION DES REACTEURS

(8)

1.1 Introduction à MATLAB.

1.1.1 Généralités.

MATLAB est un logiciel de calcul matriciel développé il y a plus de vingt ans, qui permet avec les versions actuelles de piloter des instruments de mesure, de faire de l’analyse d’images, du traitement du signal, etc… MATLAB est compatible avec les différents systèmes d’exploitation usuels (Windows , Unix, Mac, Linux).

Le cœur du logiciel étant le calcul matriciel, on retrouvera donc toutes les fonctions nécessaires à ces calculs, ce type de représentation (matrice) étant lui aussi à la base de l’automatique, tout naturellement c’est devenu l’un des premiers logiciels de simulation de systèmes linéaires. Afin d’en faciliter l’utilisation de nombreuses fonctions de tracé, de sauvegarde, etc… lui ont été adjointes et il est ainsi devenu un standard de logiciel de calcul scientifique.

Par ailleurs, avec ses fonctions de boucle (for, while, …), de condition (if, else, …) et de test (égalité, >, <, ==, …), il peut être considéré comme un langage de programmation (certaines universités nord-américaines l’utilise comme logiciel d’apprentissage de l’informatique scientifique).

Le cœur du logiciel MATLAB comprend essentiellement 5 éléments : Un environnement et des outils de développement

L’environnement visible est constitué de fenêtres graphiques telles que la Fenêtre de Commandes, l’historique des Commandes, un Editeur de texte et différents navigateurs qui permettent de visualiser l’espace de travail, les fichiers, et les chemins d’accès.

Une bibliothèque de fonctions mathématiques

Cette bibliothèque est constituée d’un ensemble très complet de fonctions mathématiques préprogrammées telles que la somme, le sinus….ou des fonctions plus complexes telles que l’inverse d’une matrice, ses valeurs propres, la transformée de Fourier etc…

Le langage MATLAB

MATLAB comporte un certain nombre d’instructions qui permettent d’utiliser des instructions de contrôle, différentes structures de données, d’effectuer des entrées/sortie.

MATLAB permet donc d’écrire des programmes permettant de résoudre des problèmes complexes.

Les graphiques

MATLAB possède une interface et une bibliothèque permettant de produire des graphiques de qualité en deux ou trois dimensions, de créer des animations, etc…Au niveau de l’utilisation au Département GEN, la possibilité de résoudre un problème mathématique et de produire des graphiques dans un unique environnement de travail constitue un des atouts majeurs de MATLAB.

Une interface externe

C’est une bibliothèque qui permet d’écrire des programmes en C ou en Fortran qui interagissent avec MATLAB ou d’inclure dans MATLAB des fonctions écrites en C ou Fortran. Cette fonctionnalité ne sera pas évoquée dans le cadre de ce fascicule.

(9)

1.1.2 Spécificités de MATLAB

Par rapport à d'autres langages tels que Fortran, C ou C++, MATLAB possède quelques particularités:

- il n'est pas nécessaire de compiler un programme pour l'exécuter.

- il n'est pas nécessaire de déclarer les variables utilisées dans un programme ; il est possible d'effectuer une déclaration dynamique de variables, c'est-à-dire de créer et supprimer des variables au cours de l'exécution d'un programme.

- il est possible d'exécuter un grand nombre d'opérations sur les matrices sans utiliser de boucles sur les indices des éléments des matrices, ce qui permet d'écrire des programmes

"compacts".

- MATLAB possède une interface graphique qui permet de visualiser très rapidement et facilement les résultats dans des graphiques de qualité. Cette interface graphique est l’un des atouts majeurs de MATLAB.

- MATLAB possède une bibliothèque mathématique très riche ; ainsi, la plupart des algorithmes usuels utilisés en analyse numérique (intégration de fonctions, résolution d'équations différentielles,...) existent sous forme de fonctions préprogrammées.

- MATLAB possède un certain nombre de Boîtes à Outils (ou Toolbox) spécialisées qui permettent d'effectuer de l'Acquisition et du Traitement d'Images ou du Signal, d'interfacer un appareil de mesure (oscilloscope, camera,...) ou une carte de numérisation analogique/digital, de résoudre des équations aux dérivées partielles,...

- MATLAB possède une Toolbox particulière, nommée SIMULINK, qui permet de simuler des systèmes; l’utilisation de cette fonctionnalité de MATLAB fait l’objet d’un enseignement spécifique au Département GEN.

- Il est possible de suivre l'exécution d'un programme instruction par instruction, et de le

"debugger" grâce à un éditeur spécial.

- Enfin, MATLAB a une diffusion mondiale, tant au plan universitaire qu’industriel.

1.1.3 Fonctions spéciales de MATLAB (Toolbox)

A partir du noyau dur, des boites à outils ont été élaborées, ainsi nous pouvons trouver des modules pour le traitement du signal (Signal Processing Toolbox) l’automatique classique (Control system toolbox) ainsi que pour l’Automatique avancée (Robust control, Nonlinear Control Design).

A l’heure actuelle Matlab dispose d’environ 45 boites à outils dans des domaines aussi divers que l’Automatique, le Traitement du Signal des Images et des Télécommunications, l’Analyse de données, les Mathématiques appliquées, la Finance, le Temps Réel. Ces boites à outils contiennent des instructions spécifiques au domaine de la boîte à outil que vous pourrez appeler dans vos lignes de commande. Au département vous utiliserez surtout les boîtes à outils suivantes : Control toolbox pour l’automatique continue et Signal Processing toolbox pour le traitement du signal.

Il existe aussi des outils complémentaires (14) pour générer des programmes C ou C++, des liens avec Excel, des Bases de Données (Oracle, Microsoft SQL Server, etc..), des instruments de mesures (GPIB, VISA), des serveurs Web et d’autres choses. Des Bibliothèques SIMULINK dans le domaine du Génie Electrique, de la Mécanique et de l’espace sont aussi disponibles.

(10)

Depuis cette année il existe aussi une boite à outil qui permet de faire directement des acquisitions à partir de cartes placées dans le PC ou d’instruments de mesures (Oscilloscope, générateur de fonctions, analyseur de spectre, etc …) au format GPIB ou VISA.

Il est aussi possible de piloter des systèmes en temps réel grâce à xPC Target ou Dspace. A partir de Simulink et des modèles mis au point en simulation, on génère "du code Temps réel" qui sera téléchargé sur la machine cible, qui pilotera le système. Il est aussi possible de généré du code qui sera embarqué sur un système autonome.

Matlab et Simulink sont à l’heure actuelle les logiciels les plus utilisés tant dans le monde de la Recherche que dans l’Industrie. Ce sont des outils généraux qui sont capables de résoudre une grande quantité de problèmes, mais on peut toujours trouver des logiciels beaucoup plus performants pour des domaines très spécifiques.

L’intérêt d’outils de simulation avancés ne doit pas faire perdre de vue à l’utilisateur que la représentation interne des nombres est entachée d’erreurs qui peuvent conduire à des résultats erronés. Il faut donc faire très attention dans l’interprétation que vous ferez lors de l’utilisation de ces logiciels de calcul numérique. En effet vous allez travailler avec des données codées (approximées) sur un nombre d’octets plus ou moins important… Vous allez ensuite faire des calculs avec ces approximations et donc les résultats seront entachés d’erreurs plus ou moins importantes… La pertinence des résultats issus de la résolution par une méthode numérique est fortement sujette à la forme, au conditionnement numérique initial, au niveau de précision des variables, au test de convergence, aux méthodes de résolution choisies…. L’ingénieur et l’étudiant doivent à tout moment rester critique et avoir conscience du résultat qu’il doit obtenir à priori.

Matlab est un langage interprété (comme le BASIC), c’est à dire que les lignes sont interprétées (transformées en langage machine) et exécutées ligne à ligne au fur et à mesure de leur écriture.

Il est donc nécessaire d’avoir dans sa machine le logiciel pour exécuter un programme fait par quelqu’un d’autre ou par vous-même.

Il existe trois possibilités pour exécuter ces programmes :

Mode interactif. Ce qui est décrit précédemment, lignes exécutées au fur et à mesure de leur écriture.

Mode exécutif. Matlab exécute un fichier spécifique (M-file, extension .m) qui sera exécuté ligne

(11)

2 L'ENVIRONNEMENT MATLAB - GENERALITES 2.1 Présentation de l’interface

Pour lancer MATLAB, il faut double-cliquer sur l'icône de la Figure 1 présent sur le bureau du PC. La version disponible au Département GEN est une version 7.0 destinée à l’enseignement.

Une fenêtre telle que celle de la Figure 2 va s’ouvrir.

Figure 1 Icône du logiciel Matlab

Figure 2 Interface de Matlab

La figure 2 montre que, par défaut, l'interface de MATLAB comporte plusieurs éléments et fenêtres :

- une fenêtre principale, intitulée Command Window (ou Fenêtre de Commandes) située dans la partie droite de la fenêtre principale ; c'est dans cette fenêtre que sont tapées les instructions dont l'exécution sera obtenue en tapant sur la touche Entrée (ou Return) du clavier; c'est aussi dans cette fenêtre que l'on tape le nom d'un programme (ou script) dont on souhaite lancer l'exécution ;

- une fenêtre située en haut à gauche comportant deux onglets, intitulés Workspace (Espace de Travail) et Current Directory (Répertoire courant). Un clic sur l’onglet Workspace permet de visualiser les variables qui sont présentes en mémoire de l'ordinateur, leur type, leur taille,....C’est un outil très utile pour identifier des sources

Fenêtre de commandes (Command Window)

Historique des commandes (Command History)

Répertoire courant (Current Directory)

Espace de travail (Workspace) Aide de Matlab

(Help)

(12)

d’erreurs dans un programme. Un clic sur l’onglet Current Directory permet d’afficher un gestionnaire de fichiers qui liste les différents sous-répertoires et fichiers présents dans le répertoire courant, ainsi que la taille et le type de ces fichiers ;

- différents onglets intitulés File, Edit, Debug, Desktop, Window, Help. L’onglet Help, également accessible par l’icône comportant un point d’interrogation jaune, permet d’accéder à l’aide de Matlab.

Remarque

Lorsque l’on ouvre le logiciel MATLAB le répertoire de travail par défaut est

généralement C:\Matlab7\work. Toute opération de stockage de fichiers sur le disque dur sera donc effectuée dans ce répertoire, ce qui est fortement déconseillé. Il est donc

nécessaire de spécifier le répertoire de travail grâce à une instruction décrite plus loin, ou en utilisant l’onglet de navigation situé en haut de la fenêtre principale.

2.2 Travail en mode interactif ou exécutif

Il existe principalement deux façons de travailler avec MATLAB :

- un mode interactif (fonctionnement par ligne de commande), pour lequel on tape dans la fenêtre de commande les instructions dont l'exécution s'effectue à l'aide de la touche Entrée (ou Return) du clavier. Ce mode de fonctionnement est très utile si on veut exécuter quelques tâches ou calculs très simples en temps réel; il devient vite inefficace lorsqu’il s’agit d’enchaîner de nombreuses tâches (résolution d’une équation différentielle, tracé des résultats, stockage des résultats sur le disque dur,…) ;

- un mode exécutif qui consiste à lancer l’exécution d’une suite d’instructions qui auront été préalablement tapées dans une fenêtre d’édition. Le contenu de cette fenêtre est stocké sur le disque dur dans un fichier dont l’extension est .m (par exemple, monprogramme.m), et son exécution sera obtenue en tapant monprogramme dans la Fenêtre de Commande, suivi de la touche Entrée (Matlab comprend alors qu’il doit exécuter le contenu des lignes du fichier intitulé monprogramme.m). En fait, il existe deux types de fichiers .m décrits plus loin.

Ces deux modes de fonctionnement, qui sont utilisés dans le cadre de cet enseignement, nécessitent que le logiciel MATLAB soit installé sur la machine. Il existe néanmoins une troisième possibilité qui consiste à compiler un fichier .m afin de créer un exécutable qui pourra être lancé sur n’importe quelle machine non pourvue de Matlab.

Les deux modes de fonctionnement interactif et exécutif sont illustrés dans l’exemple suivant qui trace la fonction x =sin(t) pour t compris entre 0 et 2π.

Exemple de fonctionnement en mode interactif

Pour fonctionner en mode interactif (par ligne de commandes), il faut taper chaque instruction à exécuter dans la Fenêtre de Commandes à côté du symbole >>, suivi de la touche Entrée.

Pour éviter de stocker des fichiers n’importe où sur le disque dur, à l’aide de la barre de navigation, il faut d’abord se placer dans un répertoire de travail, par exemple le répertoire

(13)

>> t = [0 :2*pi/100 :2*pi] ;

>> x = sin(t) ;

>> plot(t,x) ;

>> save monfichier t x ;

>> clear all ;

>> load monfichier ;

L’affichage dans les fenêtres Workspace et Current Directory permet de surveiller le résultat de l’exécution de chacune des lignes.

La première ligne de commande a pour effet de créer une variable nommée t, constituée de réels double précision, t variant de 0 à 2π, avec un pas égal à 2π/100. Cette variable t est effectivement présente en mémoire de l'ordinateur (fenêtre Workspace), sous la forme d’un tableau à 1 ligne et 101 colonnes.

La deuxième ligne de commande a pour objet de créer une variable x , de la même dimension que t, et dont chaque terme x(i) est égal au sinus de t(i), i variant de 1 à 101. La création effective de cette variable x est visualisée dans la fenêtre Workspace.

La troisième ligne de commande a pour objet de tracer dans une fenêtre graphique la courbe x(t).

La quatrième ligne de commande a pour effet de créer sur le disque dur dans le répertoire courant un fichier intitulé monfichier.mat (l’extension d’un fichier de données Matlab est par défaut .mat) et contenant les deux variables t et x.

La cinquième ligne de commande a pour effet d’effacer de la mémoire de l’ordinateur toutes les variables.

Enfin, la sixième ligne de commande a pour effet de charger en mémoire le contenu du fichier monfichier.mat.

Pour sauvegarder sur le disque dur le graphique, sélectionner dans l’onglet File situé en haut à gauche de cette fenêtre l’option Save As… et choisir par exemple mafigure pour le nom du fichier. L’examen de la Fenêtre Current Directory montre qu’il existe maintenant deux fichiers sur le disque dur :

- un fichier de données intitulé monfichier.mat ; - un fichier graphique intitulé mafigure.fig.

Remarques

i) Ces deux fichiers possèdent des extensions propres à Matlab (.mat et .fig); leur contenu ne peut donc être lu qu’avec Matlab. Vous aurez néanmoins l’occasion de voir qu’il existe d’autres formats de stockage qui permettent à ces fichiers et figures d’être utilisés par d’autres logiciels d’utilisation courante (Word, Excel, Powerpoint,…).

ii) Toutes les lignes de commande sont terminées par un point-virgule ; en l’absence du point virgule, MATLAB va non seulement exécuter l’instruction correspondant à cette ligne, mais également afficher à l’écran le résultat de cette exécution (par exemple, pour la première ligne, affichage à l’écran de toutes les valeurs de la variable t).

iii) Comme le montre cet exemple, MATLAB ne nécessite pas de déclaration de type ou de taille de variable. Lorsque MATLAB rencontre un nouveau nom de variable, il crée automatiquement cette variable, et lui alloue la quantité de mémoire nécessaire.

iv) La première ligne de commande pour la création de la variable t illustre la façon dont on peut travailler avec une seule instruction sur tous les éléments d’un tableau sans utiliser de boucles. Le contenu de la variable t est identique à celui qu’on obtiendrait en remplaçant la première ligne par les trois lignes suivantes :

(14)

for k=1 :101

t(k)=(k-1)*2*pi/100 ; end

Exemple de fonctionnement en mode exécutif

On souhaite maintenant réaliser les mêmes instructions, mais en mode exécutif, c’est-à-dire en lançant l’exécution d’un programme stocké sur le disque dur dans un fichier dont l’extension MATLAB est .m. Un clic sur l’icône situé en haut à gauche de la barre de commande (qui représente une feuille de papier) a pour effet ouvrir une fenêtre d’édition, dans laquelle il faut taper les 6 lignes de commande précédentes. Pour sauvegarder dans un fichier du disque dur le contenu de ces instructions, il faut sélectionner dans l’onglet File situé en haut à gauche de cette fenêtre l’option Save As…et donner au fichier un nom, par exemple monprogramme. L’examen du répertoire courant permet de vérifier la création sur le disque dur du fichier intitulé monprogramme.m. Pour lancer l’exécution du programme, il faut alors taper monprogramme dans la fenêtre de commande à côté du symbole >>. De même que pour le mode interactif, l’exécution des instructions conduit à la création des variables t et x, au tracé du graphique x(t) et à la création sur le disque dur d’un fichier monfichier.mat contenant les variables t et x.

Remarque

A travers la présentation des deux modes de fonctionnement interactif et exécutif, les trois types de fichiers propres à MATLAB qui seront utilisés dans le cadre de cet enseignement ont été présentés:

- programme : fichier avec extension .m - données : fichier avec extension .mat - figure : fichier avec extension .fig

(15)

2.3 Fonction "help"

Pour obtenir de l'aide sur un sujet, une instruction ou une fonction, on tape help suivi par le sujet, le nom de l'instruction ou de la fonction désirée.

Exemple :

» help atan

atan Inverse tangent.

atan(X) is the arctangent of the elements of X.

See also atan2.

La réponse proposée suggère souvent une aide sur une instruction similaire (‘See also …’) Une autre méthode pour obtenir de l’aide consiste à taper helpdesk dans une console et on obtient alors la fenêtre suivante qui fait appel à l’environnement Netscape :

Il est possible d’accéder à une aide en ligne très complète comprenant notamment toute la documentation en cliquant sur le « ? » dans la barre de menu de la console Matlab.

(16)

2.4 Espace de travail (Workspace).

Les variables sont définies au fur et à mesure que l'on donne leurs noms et leurs valeurs numériques ou leurs expressions mathématiques.

Les variables ainsi définies sont stockées dans l'espace de travail et peuvent être utilisées dans les calculs ultérieurs. Attention, le langage Matlab fait la différence entre les majuscules et les minuscules.

(17)

2.4.1 Information sur l’espace de travail.

Pour obtenir une liste des variables dans l'espace de travail, on utilise les instructions suivantes : who Affichage des variables dans l'espace de travail.

whos Affichage détaillé des variables dans l'espace de travail.

La deuxième instruction (whos) donne beaucoup plus de détails.

Exemple d’utilisation de l’instruction « who »

Exemple d’utilisation de l’instruction « whos »

(18)

2.4.2 Enregistrement des variables de l’espace de travail dans un fichier.

Pour enregistrer les variables de l'espace de travail dans un fichier, on utilise les instructions suivantes :

save Enregistrer toutes les variables dans un fichier matlab.mat. Dans une session ultérieure, taper load pour ramener l'espace de travail enregistrée.

save fichier1.mat x y z A X Enregistrer les variables x, y, z, A, X dans le fichier fichier1.mat. Dans une session ultérieure, taper load fichier1 pour recharger le nom et le contenu des variables x, y, z, A, X dans l'espace de travail.

2.4.3 Commandes DOS/UNIX.

Il est possible d’utiliser certaines commandes des systèmes d’exploitation DOS/UNIX.

pwd permet de connaître le répertoire courant de travail

cd .. permet de remonter d’un niveau dans la hiérarchie des répertoires cd directory_name permet d’accéder au répertoire ‘directory_name’

dir ou ls permettent de connaître le contenu du répertoire courant mkdir directory_name permet de créer un répertoire directory_name

delete(‘file_name’) supprime un fichier file_name

(19)

3 OPERATIONS MATHEMATIQUES.

3.1 Scalaire, vecteur, matrice.

L'élément de base de MATLAB est la matrice. Un scalaire est ainsi une matrice de dimension 1×1, un vecteur colonne de dimension n est une matrice n×1, un vecteur ligne de dimension n, une matrice 1×n.

Contrairement aux langages de programmation usuels, il n'est pas obligatoire de déclarer les variables avant de les utiliser et, de ce fait, il faut prendre toutes les précautions dans la manipulation de ces objets. Les variables sont affectés directement à l’aide du signe égal (=).

3.1.1 Scalaires.

Les scalaires se déclarent directement :

>> x = 0.12;

>> a = 1.7e-4;

Les nombres complexes peuvent être écrits sous forme cartésienne ou polaire : Forme cartésienne : 0.5 + i*2.7 -1.2 + j*0.789 2.5 + 9.7i Forme polaire : 1.25*exp(j*0.246)

Pour choisir le format d'affichage pour les nombres, on utilise l'instruction format :

format short 0.1234

format long 0.12345678901234

format short e 1.2341E+002

format long e 0.123456789012345E+002

format hex 0123456789ABCDEF

Nota : i) le format hexadécimal est utilisé pour les calculs en base 16.

ii) ne pas confondre format d’affichage et précision machine 3.1.2 Vecteurs.

Il existe différentes façons de définir un vecteur :

- soit en donnant la liste de ses éléments entre crochet « [ ] » :

>> V_ligne = [0 1 2]

V_ligne =

0 1 2

Pour les vecteurs colonne, on sépare les éléments par des points-virgules :

>> V_colonne = [0;1;2]

V_colonne = 0

1 2

- soit en utilisant l'opérateur d'incrémentation (:). Ainsi, pour créer un vecteur ligne constitué des valeurs de 0 à 1 par incrément de 0,2 :

>> V = [0:0.2:1]

V =

Columns 1 through 6

0 0.2000 0.4000 0.6000 0.8000 1.0000

(20)

Par défaut, l'incrément est de 1:

>> V = [0:5]

V =

0 1 2 3 4 5

- soit en utilisant une fonction qui génère un vecteur. Exemple :

>> x=linspace(1,10,6) % variation linéaire : 6 valeurs sont réparties linéairement dans l’intervalle donné allant de 1 à 10.

x =

1.0000 2.8000 4.6000 6.4000 8.2000 10.0000 ou :

>> y=logspace(1,3,7) % variation logarithmique – 7 valeurs sont réparties linéairement sur une échelle logarithmique dans l’intervalle donné

y =

1.0e+003 *

0.0100 0.0215 0.0464 0.1000 0.2154 0.4642 1.0000

Remarque :

Lorsqu'on ajoute un «;» à la fin d'une instruction, elle est exécutée mais le résultat n'est pas affiché :

>> a=[1 2 3 4 5];

>> b=-2.5;

>> c=b*a;

>>

Lorsqu'il n'y a pas de «;» à la fin d'une instruction, elle est exécutée et le résultat est affiché :

>> a=[1 2 3 4 5]

a =

1 2 3 4 5

>> b=-2.5 b = -2.5000

>> c=b*a c =

-2.5000 -5.0000 -7.5000 -10.0000 -12.5000

>>

On se servira de cette remarque pour afficher les résultats de calcul à l’écran.

(21)

3.1.3 Matrices.

Les matrices peuvent être construites directement :

>> M = [1 2 3; 4 5 6 ; 7 8 9]

M =

1 2 3 4 5 6 7 8 9

On peut avoir accès aux éléments de la matrice par :

>> m21 = M(2,1) % 2e ligne, 1ère colonne m21 =

4

Il est aussi possible de stocker dans un vecteur une ou plusieurs lignes (ou colonnes). Ainsi, si l'on veut stocker la deuxième colonne de la matrice M :

>> V = M(:,2) % ici, (:) signifie toutes les lignes V =

2 5 8

De la même manière, si l'on veut stocker les lignes 2 et 3 :

>> M2=M(2:3,:) % (2:3) signifie ligne 2 à 3 et (:) signifie toutes les colonnes M2 =

4 5 6

7 8 9

Il existe aussi des matrices prédéfinies dans Matlab, notamment :

Zeros Matrice de 0

Ones Matrice de 1

Eye Matrice identité

Linspace Vecteur linéairement espacé Logspace Vecteur logarithmiquement espacé

rand Nombre aléatoire à répartition uniforme randn Nombre aléatoire à répartition normale

ones(N,N) définit une matrice carré contenant des 1 et de taille N×N.

zeros(N,N) définit une matrice carré contenant des 0 et de taille N×N.

Valeurs propres d’une matrice : [v,d] = eig(X)

Produit un matrice diagonale d des valeurs propres de X et une matrice pleine v dont les colonnes correspondent aux vecteurs propres tel que X d⋅ = ⋅v d.

» [v,d]=eig(A) v =

-0.4152 0.3001 - 0.5584i 0.3001 + 0.5584i 0.8079 0.0363 - 0.4525i 0.0363 + 0.4525i -0.4182 0.5330 - 0.3285i 0.5330 + 0.3285i d =

-0.8260 0 0

(22)

0 5.6030 + 1.1550i 0 0 0 5.6030 - 1.1550i Inversion d’une matrice.

inv(X) inversion de la matrice X

» inv(A) ans =

-0.3963 0.5456 0.2455 1.2702 -0.9057 -0.6720 -0.5722 0.5571 0.4337 Matrice exponentielle.

expm(X) Matrice exponentielle Transposée d’une matrice.

B = A' La matrice B est égale à la matrice A transposée Somme de deux matrices.

C = A + B

produit de deux matrices.

D=A*B

EMPLOI DES INDICES

Les éléments d'un vecteur ou d'une matrice peuvent être adressés en utilisant les indices sous la forme suivante :

t(10) élément no. 10 du vecteur t

A(2,9) élément se trouvant à ligne 2, colonne 9 de la matrice A B(:,7) la colonne 7 de la matrice B

B(3,:) la ligne 3 de la matrice B Addition

D = A - B Soustraction Z = X*Y Multiplication

X = B/A Équivalent à B*inv(A) OPÉRATION «ÉLÉMENT PAR ÉLÉMENT»

Les opérations «élément par élément» des vecteurs et des matrices sont effectuées en ajoutant un point (.) avant les opérations * / \ ^ '

Exemple 2 :

>> A=[1 2 3 4 5];

>> B=[6 7 8 9 10];

>> C=A.*B C =

6 14 24 36 50

>> D=A./B D =

0.1667 0.2857 0.3750 0.4444 0.5000

(23)

3.2 Opérations arithmétiques

3.2.1 Opérations arithmétiques usuelles.

Les opérations usuelles d'addition, de soustraction et de multiplication par scalaire sur les

vecteurs et les matrices sont définis dans MATLAB. Les expressions mathématiques sont écrites de la façon habituelle :

z = 5*exp(-0.4*x)*sin(7.5*y);

+ Addition

- Soustraction

* Multiplication

^ Elévation à la puissance

′ Transposée de la matrice

/ Division à droite

\ Division à gauche

En revanche, dans le cas de la multiplication (ou de la division) de vecteurs (ou de matrices), il faut faire attention à leurs dimensions. En effet :

>> V1 = [1 2];

>> V2 = [3 4];

>> V = V1 * V2 % multiplication de vecteurs

??? Error using mtimes

Inner matrix dimensions must agree.

MATLAB indique une erreur lorsque les dimensions ne concordent pas (lisez attentivement les messages d'erreur, ils sont parfois utiles pour corriger vos programmes). L’erreur provient ici du fait qu’on ne peut multiplier deux vecteurs lignes (relisez vos cours de calcul matriciel…).

Il est possible par contre de multiplier (ou de diviser) élément par élément. Il suffit d’ajouter un point (.) avant les opérations *, /, \, ^ :

>> V = V1 .* V2 % multiplication de vecteurs élément par élément V =

3 8

3.2.2 Calcul matriciel.

Bien évidemment, Matlab recèle de nombreux moyens propres au calcul matriciel comme l’inversion de matrice (inv), l’extraction de la diagonale de la matrice (diag), la détermination des valeurs propres d’une matrice (eig), de son déterminant (det)… Vous retrouverez une partie de ces commandes à la fin de ce fascicule dans la rubrique résumant les commandes Matlab.

(24)

3.2.3 Analyse des données par colonnes.

De nombreuses commandes Matlab permettent de réaliser des opérations colonne par colonne (ou ligne par ligne), notamment :

Max Valeur maximum

Min Valeur minimum

Mean Valeur moyenne

Sum Somme des éléments

prod Produits des éléments

Std Ecart type

sort Tri par ordre croissant 3.2.4 Fonctions mathématiques élémentaires.

Abs Valeur absolue

Sqrt Racine carrée

Real Partie réelle

imag Partie imaginaire Round Produits des éléments

Sign Signe

exp Exponentielle

Log / log10 Log base e/ log base 10 3.2.5 Fonctions trigonométriques.

Sin, asin, sinh, asinh Sinus, Arcsin trigo et hyperbolique Cos, acos, cosh, acosh

tan, atan, tanh, atanh 3.3 Variables et fonctions

VARIABLES

Exemples de variables en utilisant soit une affectation (signe =) soit une expression mathématique :

a =1.25;

x = 0:0.5:10;

y = a*x;

z = y.^2;

EXPRESSIONS MATHÉMATIQUES

On écrit les expressions mathématiques de la façon habituelle : z = 5*exp(-0.4*x).*sin(7.5*y);

(25)

FONCTIONS MATHÉMATIQUES

Les fonctions mathématiques de base sont données dans le tableau suivant : abs

Valeur absolue Module (nb complexe)

angle

Argument (nb complexe)

sqrt

Racine carrée

real

Partie réelle

imag

Partie imaginaire

conj

Conjuguée (nb complexe)

round

arrondir

fix

Arrondir (vers zéro)

floor

Arrondir (vers -∞) ceil

Arrondir (vers ∞)

sign

signe

rem

reste

exp

exponentielle

log

Logarithme base e

log10

Logarithme base 10

Les fonctions trigonométriques sont données dans le tableau suivant :

sin cos tan asin acos atan

sinh cosh tanh asinh acosh atanh

Exemple 3 :

>> x=-2+5i x =

-2.0000 + 5.0000i

>> a=real(x) a =

-2

>> b=imag(x) b =

5

>> X=abs(x) X =

5.3852

>> alfa=angle(x) alfa =

1.9513 Exemple 4 :

>> w=50;

>> t=0.5e-3;

>> y=25*exp(-4*t)*cos(w*t) y =

24.9423

CRÉATION DE FONCTIONS

L'utilisateur peut créer des fonctions particulières pour ses applications. Voir

«Programmation avec MATLAB».

(26)

4 GRAPHIQUES.

Pour ouvrir une fenêtre dans laquelle seront tracés des graphiques, il faut utiliser l’instruction figure. S’il n’y a besoin que d’une seule fenêtre graphique, cette instruction est optionnelle.

4.1 Graphiques 2D.

4.1.1 Tracée de courbes

On utilise l'instruction plot pour tracer un graphique 2D :

plot(x,y) Trace le vecteur y en fonction du vecteur x.

plot(t,x,t,y,t,z) Trace x(t), y(t) et z(t) sur le même graphique.

plot(t,z,'r--') Trace z(t) en trait mixte rouge.

stem(k,z) Trace z(k.T) en échantillons (pour les fonctions discrètes).

La chaîne de caractères correspond à la définition du symbole et de la couleur utilisés selon le code suivant :

y jaune

.

point - trait plein

m magenta o cercle : trait pointillé

c cyan x croix -. plein pointillé

r rouge + plus -- trait mixte

g vert * *

b bleu s carré

w blanc d losange

k noir v triangle

^ triangle

< triangle

> triangle

p étoile

h étoile

Nota : rien ne vaut mieux qu’un essai ! 4.1.2 Format de graphique On peut choisir le format du graphique :

plot(x,y) Trace y(x) avec des échelles linéaires loglog(x,y) Trace y(x) avec des échelles logarithmiques semilogx(f,A) Trace A(f) avec une échelle log(f)

semilogy(w,B) Trace B(w) avec une échelle log(B) polar(theta,r) Trace r(theta) en coordonnées polaires bar(x,y) Trace y(x) sous forme des barres grid Quadrille le graphe de la fenêtre active

(27)

Exemple 5 :

» t = 0:pi/100:2*pi; % La variable π est prédéfinie et vaut pi = 3.14159265358979 y = sin(t);

plot(t,y)

» grid

» title('Fonction Sinusoidale')

» xlabel('temps (s)'), ylabel('amplitude')

»

4.1.3 Graphique multiple

On peut tracer plusieurs graphiques dans la même fenêtre en utilisant l’instruction subplot pour diviser la fenêtre en plusieurs parties.

Subplot(m,n,p) divise la fenêtre graphique en m×n sous graphique, m et n étant le nombre de lignes et de colonnes respectivement, la variable p désigne le numéro du graphe.

Exemple 6 :

>> t = 0:pi/10:6*pi;

>> y1=cos(t);

» y2=sin(t);

» subplot(2,1,1), plot(t,y1,'r')

» grid

» title('Fonction Cosinus')

» xlabel('absisse (radian)')

» ylabel('cosinus')

» subplot(2,1,2),plot(t,y2,'b')

» grid

» title('Fonction Sinus')

» xlabel('absisse (radian)')

» ylabel('sinus')

(28)

0 2 4 6 8 10 12 14 16 18 20 -1

-0.5 0 0.5 1

cosinus

absisse (radian) Fonction Cosinus

0 2 4 6 8 10 12 14 16 18 20

-1 -0.5 0 0.5

1 Fonction Sinus

absisse (radian)

sinus

4.1.4 Ajout du texte au graphique

title('Titre du graphique') Ajoute un titre au graphique xlabel('Temps') Étiquette de l'axe x ylabel('Tension') Étiquette de l'axe y

gtext('Valeur absolue') Ajoute du texte au graphique à l’endroit pointé par la souris

legend('legende 1',’legende 2’) Insertion d’une légende 4.1.5 Manipulation de graphiques

axis([-1 5 -10 10]) Choix des échelles x = (-1,5) et y = (-10,10)

hold Garde le graphique actif à l'écran (et permet de tracer plusieurs courbes sur le même graphique)

Remarque : toutes les modifications du graphique (échelles, axes, titre, symboles, couleurs,…) peuvent être soit définies par des lignes de programmation (voir les instructions précédentes), soit modifiées à l’aide de la souris. Le premier mode de fonctionnement est intéressant s’il faut tracer automatiquement un grand nombre de figures.

(29)

4.1.6 Impression et enregistrement de graphiques

Impression d’un graphique

A partir du menu Fichier, choisir Imprimer. Il faut impérativement modifier le format défini par défaut de la taille de la feuille (Format lettre US en format A4).

Stockage d’un graphique sur le disque dur

Le contenu d’une fenêtre graphique peut-être stocké au format .fig qui est un format interne à MATLAB ; c’est le seul format de stockage qui permet de retoucher le graphique ultérieurement.

Il est possible de copier une figure MATLAB dans le presse-papier pour l’insérer dans un autre logiciel (Word, Powerpoint,..). Le graphique peut également être stocké sous forme d’image aux différents formats usuels (.bmp, .jpeg, .tif, .eps,…).

4.2 Graphiques 3D.

Le traçage des graphiques 3D est illustré dans les deux exemples suivants.

Exemple 7 :

>> t = 0:0.05:25;

>> x = exp(-0.05*t).*cos(t);

>> y = exp(-0.05*t).*sin(t);

>> z = t;

>> plot3(x,y,z), grid Exemple 8 :

» [x,y] = meshgrid(-2:.1:2, -2:.1:2);

» z = x .* exp(-x.^2 - y.^2);

» mesh(z)

(30)

5 PROGRAMMATION AVEC MATLAB.

5.1 Communication avec l’utilisateur.

On peut afficher un message, une valeur à l'écran avec l’instruction disp : disp('Ceci est un test') Affiche "Ceci est un test" sur l'écran.

On peut entrer une valeur avec l’instruction input :

x = input('Valeur de x = ') Affiche sur l'écran "Valeur de x = " et attendre qu'un nombre soit tapé sur le clavier.

On peut saisir une chaîne de caractères avec l’instruction input :

rep = input(‘choix = ?,’s') Afficher sur l'écran "choix ?" et attendre qu'une chaîne de caractères soit saisie au clavier.

fprintf(‘ceci est un résultat R= %f et C=%f \n’,x1,x2) ; (syntaxe du langage C) 5.2 Opérateurs relationnel et logique.

Une expression relationnelle retourne la valeur 1 sil elle est vraie (ou vérifiée) et la valeur 0 sinon. Les symboles mathématiques suivants sont autorisés dans les conditions de test :

Egal ==

Différent ~=

Inférieur stricte <

Inférieur égal <=

Supérieur >

Supérieur égal >=

ET logique &

OU logique |

NON logique ~

Exemples

>> a=2; %on affecte à a la valeur 2

>> b=5; %on affecte à b la valeur 5

>> c=a<b; %est-ce que a<b ? la réponse est postive, donc c vaut 1

>> d=(a>=b) %est-ce que a>=b ? la réponse est négative donc d vaut 0

Les résultats binaires (0 ou 1) obtenus avec les expressions relationnelles peuvent être exploités à l’aide d’opérateurs logiques tels que :

& opérateur logique et (and)

| opérateur logique ou (or)

~ opérateur logique non (not) Exemples

>> a=2; %on affecte à a la valeur 2

>> b=5; %on affecte à b la valeur 5

(31)

5.3 Instructions de contrôle

Elles sont principalement au nombre de 4 : for, while, if, switch 5.3.1 Boucle For

On peut créer une boucle en utilisant for ... end. On peut aussi réaliser des boucles FOR imbriquées.

Exemple 9 :

Boucle for simple : for i=1:100

wt = 24*i*0.01;

x(i)=12.5*cos(wt+pi/6);

end

Deux boucles for imbriquées : for i=1:5

for j=1:20

amp=i*1.2;

wt=j*0.05;

v(i,j)=amp*sin(wt);

end end

5.3.2 Boucle while.

On peut créer une boucle en utilisant while ... end.

Exemple 10 : n=1;

while n<100 x=n*0.05;

y(n)=5.75*cos(x);

z(n)=-3.4*sin(x);

n=n+1;

end

5.3.3 Instruction if ... elseif ... else.

L'instruction if ... elseif ... else permet de choisir plusieurs options.

Exemple 11 :

n=input('Donner un nombre positif ');

if rem(n,3)==0

disp('Ce nombre est divisible par 3') elseif rem(n,5)==0

disp('Ce nombre est divisible par 5') else

disp('Ce nombre n''est pas divisible par 3 ou par 5') end

(32)

5.3.4 Instruction switch

>> switch k %sélection de la valeur de k

>> case 1 %cas où k=1

>> a=a+b; %instruction effectuée si k=1 >> case 2 %cas où k=2

>> a=a-b; %instruction effectuée si k=2

>> end %fin de la sélection sur k 5.4 Fichiers *.m ou scripts.

Les fichiers M sont des fichiers ASCII contenant des suites d'instructions MATLAB dont le nom a comme extension m. Par exemple «test1.m». Dans la fenêtre Commande, si l'on tape test1, les instructions contenues dans le fichier test1.m seront exécutées une par une. On peut créer des fichiers M à l'aide de l’éditeur de texte «Text Editor».

Exemple d’un script Matlab :

% Ceci est un exemple de fichier M

% Les lignes "commentaires" commencent par "%"

for i=1:10 for j=1:4

x=0.005*i;

y=30+j;

z(i,j)=10*exp(-y*x)*cos(120*pi*x);

end end

5.5 Création de fonctions Matlab.

Une fonction MATLAB est un fichier d’extension .m particulier dont la première ligne du script commence par «function». Une fonction peut être utilisée dans les expressions mathématiques ou dans les instructions MATLAB :

% Commentaire décrivant le but de cette fonction.

function [x1,x2]=bidule(a,b) x1=b/a;

x2=exp(x1);

Les entrées sont a et b (placées entre parenthèses), les sorties sont x1 et x2 (placés entre crochets).

Les variables sont locales. Le nom de sauvegarde de ce fichier doit impérativement être

"bidule.m"

Les commentaires donnés avant la définition de la fonction bidule seront affichés à l'écran lorsqu'on tape help bidule.

Pour faire appel à cette fonction dans une console ou bien à partir d’un script matlab : Définition

de la fonction.

(33)

6 FONCTIONS AVANCEES.

6.1 Traitement des polynômes.

Dans MATLAB, les polynômes sont représentés sous forme de vecteurs lignes dont les

composantes sont données par ordre des puissances décroissantes. Un polynôme de degré n est représenté par un vecteur de taille (n+1).

Le polynôme f(x) = 4x3 – x + 2 s’écrira :

>> f = [4 0 -1 2] ;

Pour déterminer les racines de ce polynôme, il suffit d’utiliser la fonction roots. A l’inverse, connaissant les racines, il est possible de remonter au polynôme grâce à la fonction poly. Pour évaluer le polynôme en un point donné, on utilise la fonction polyval.

>> r = roots (f) r =

- 0.8982 0.4491 + 0.5958i 0.4491 - 0.5958i

>> poly (r) ans =

1 0 -0.25 0.5

>> a = polyval (f, 2.5) % valeur de f en x = 2.5 a =

62

6.2 Interpolations.

L’interpolation polynomiale consiste à approcher par un polynôme la courbe liant deux séries de mesures (régression). Les coefficients optimaux de ce polynôme sont ceux qui minimisent la variance de l’erreur d’interpolation. La fonction polyfit retourne le polynôme P de degré n permettant d’approcher la courbe y = f(x) au sens des moindres carrés. Cette méthode peut s'avérer une alternative intéressante à EXCEL.

>> x = [[1 1.5 2.5 4 5.25] ;

>> y = [0.25 1 1.8 2.3 4.2];

>> p = polyfit(x,y,2) % polynôme de degré 2 p =

0.0627 0.4358 0.0027

Ainsi, le polynôme d’interpolation de y d’ordre 2 est P(x) = 0,0627 x2 + 0,4358 x + 0,0027.

Il est également possible de réaliser une interpolation non-linéaire. Cette dernière consiste à relier les points expérimentaux par une courbe sous forme de segments de droites ou de courbes polynomiales. Ceci peut être réalisé par la fonction interp1. La commande

« interp1(x,y,xi,’type’) » retourne un vecteur de mêmes dimensions que xi et dont les valeurs correspondent aux images des éléments de xi déterminées par interpolation sur x et y. Si f est l’interpolation de y, la chaîne ‘type’ spécifie alors le type d’interpolation (‘linear’ : interpolation linéaire, ‘spline’ : interpolation par splines cubiques, ‘cubic’ : interpolation cubique). Si on ne spécifie pas le type, l’interpolation linéaire est choisie par défaut.

(34)

>> x = 0:10; y = sin(x); xi = 0:.25:10;

>> yi = interp1(x,y,xi,’cubic’);

6.3 Intégration numérique.

La fonction quad permet de réaliser une intégration d’une fonction dans un intervalle donné (une méthode adaptative de l'algorithme de Simpson). La syntaxe la plus générale de la fonction quad est:

>> I = quad(@fun,a,b,tol,trace);

La function fun peut être définie en ligne, ou dans un script.m. Pour spécifier une valeur de l’erreur pour le calcul de l’intégrale, on utilise le paramètre tol (fixé par défaut à 10-6). Le paramètre trace est peu utilisé ; par défaut, lui affecter la valeur [ ]:

Exemple 1

Pour calculer l’intégrale dx xx

01

sin avec une erreur de 10-10:

>> quad (@(x) sin(x)./x, 0, 1,1e-10,[ ]) Warning: Divide by zero.

> In @(x) sin(x)./x In quad at 62 ans =

0.94608307036711

Le symbole @(x) signifie que l’on définit une fonction mathématique qui dépend d’une variable x. MATLAB a détecté une singularité mathématique en x = 0 (Warning), mais a effectué le calcul.

Exemple 2

Si la fonction à intégrer contient un paramètre (par exemple alfa), il faut rajouter alfa dans la liste des arguments d’appel après les arguments obligatoires, comme dans l’exemple suivant:

>> alfa=1;

>> quad (@(x,alfa) sin(alfa*x)./x, 0, 1,1,1e-10,[ ],alfa) Warning: Divide by zero.

> In @(x,alfa) sin(alfa*x)./x In quad at 62

ans =

0.94608307036711 Exemple 3

On peut également définir en ligne la fonction à intégrer de la façon suivante

>> f = inline(′sin(alfa*x)′);

>> alfa=1;

>> quad(f, 0, 1,1,1e-10,[ ],alfa);

(35)

6.4 Résolution de systèmes d’équations non-linéaires.

Soit une fonction f(x) = cos x – 2x2. Pour trouver la valeur de x pour laquelle f(x) = 0, le prototype d’appel utilisant la fonction fzero est le suivant :

a = fzero (‘resol’, valeur initiale)

« resol » est une fonction à créer qui contient l’équation à résoudre ; plus la valeur initiale précisée est proche du résultat final, plus rapide sera la convergence.

Dans un premier temps, il est nécessaire d’écrire le fichier fonction « resol.m ».

% fichier resol function f = resol (x) f = cos(x) – 2*x^2

L’appel à fzero se fait normalement dans un fichier SCRIPT selon :

>> a = fzero (‘resol’, 1) a =

0.6346

6.5 Résolution de systèmes d’équations différentielles ordinaires.

La résolution de systèmes d’équations différentielles ordinaires, aux valeurs initiales connues, est très courante. Ces équations s’écrivent sous la forme :

x’(t) = f(t,x(t)) ∀ 0 < t < T x(0) = a

où x(t) est un vecteur dont on connaît la valeur initiale (à t = 0) et pour lequel on cherche à déterminer l’évolution au cours du temps. L’algorithme le plus usité est celui de Runge-Kutta d’ordre 4-5, déjà programmé dans Matlab sous le nom d’ode45. D’autres fonctions existent, notamment ode23 (méthode d'Euler) et ode15s ou ode23tb (pour les problèmes plus ardus à résoudre) et sont appelés de la même manière que ode45 :

La syntaxe complète pour appeler la fonction ode45 est :

>> [t,x]=ode45(@fun,[t0 t1],x0,options)

La fonction fun qui contient le second membre de l’équation différentielle est définie dans un fichier fun.m. L’intervalle [t0 t1] définit le temps initial et le temps final pour la résolution de l’équation; x0 est la condition initiale pour x à t=t0 Le paramètre optionnel options peut contenir des spécifications d’erreur absolue et relative définies à l’aide de la fonction odeset. A l’issue de la résolution, les paramètres de retour de ode45 sont la liste des valeurs de t, ainsi que la liste des valeurs x(t).

Exemple 1 : Résolution d’une seule équation différentielle

Soit à résoudre l’équation x’(t)=-x avec x(0)=1 ; la solution exacte est x(t)=exp(-t). La fonction et le programme de résolution s’écrivent de la façon suivante :

>> function dx = fun(t,x) %définition du second membre dans la fonction fun

>> dx=-x ; %second membre pour l’équation de x

(36)

>> [t, x] = ode45(@fun,[0 1],1) ;

>> plot(t,x,’-k’,t,exp(-t),’ob’) ;

Exemple 2 : Résolution simultanée de plusieurs équations différentielles

Par exemple, soit à résoudre l’équation différentielle du 2° ordre: x″ = -x avec x(0)=0 et x’(0)=1.

La solution exacte est : x(t) = sin(t). On transforme l’équation du 2° ordre en 2 équations du premier ordre en posant x1=x et x2=x’. Les deux équations à résoudre s’écrivent alors : x’1=x2 et x’2=-x1 avec les conditions initiales x 1(0)=0 et x2(0)=1.

>> function dx =fun(t,x) %définition du second membre dans la fonction fun

>> dx = zeros(2,1) ; %un vecteur colonne

>> dx(1) = x(2) ; %second membre pour l’équation de x1

>> dx(2) = -x(1) ; %second membre pour l’équation de x2

>> [t, x] = ode45(@fun,[0 2*pi],[0 1]) ; %appel à la fonction ode45

>> plot(t, x(1, : ),’-k’,t, sin(t),’ob’) ; %tracé de x1(t) et sin(t)

A l’issue de la résolution, la première ligne de la matrice x est constituée de la liste des valeurs x1(t), et la seconde ligne est constituée de la liste des valeurs de x2(t).

(37)

7 RESUME, NON EXHAUSTIF, DES COMMANDES MATLAB

7.1 Mathématiques Tableaux et matrices

cat concaténation d’un tableau dans une direction end indique le dernier indice d’un tableau

eye matrice identité

find recherche d’une valeur dans un tableau linspace génère un vecteur espacé linéairement

max valeur maximale d’un tableau ou d’une matrice

meshgrid génère deux matrices X et Y pour des graphiques 2D ou 3D min valeur minimale d’un tableau ou d’une matrice

ones matrice constituée de 1 rand matrice de nombres aléatoires size dimension d’une matrice

sum somme des éléments d’un tableau zeros matrice constituée de 0

Algèbre linéaire

det déterminant d’une matrice

eig calcul des valeurs propres et vecteurs propres inv inverse d’une matrice

linsolve résolution d’un système d’équations linéaires lu factorisation LU d’une matrice

rank rang d’une matrice trace trace d’une matrice

′ transposée d’une matrice Fonctions mathématiques élémentaires

atan arctangente

acos arccosinus

asin arcsinus

conj conjugué d’un nombre complexe cos cosinus

exp exponentielle floor partie entière d’un réel

i nombre complexe unité

imag partie imaginaire d’un nombre complexe log logarithme naturel (ou népérien)

log10 logarithme décimal (en base 10) real partie réelle d’un nombre complexe round arrondi à l’entier le plus proche sin sinus

sqrt racine carrée

tan tangente

(38)

Polynômes

polyfit interpolation par un polynôme

polyval évaluation de la valeur d’un polynôme roots calcul des racines d’un polynôme Interpolation

interp1 interpolation 1D interp2 interpolation 2D interp3 interpolation 3D

spline interpolation par des fonctions spline Méthodes numériques non linéaires

dblquad évaluation numérique d’une intégrale double fzero recherche d’un zéro d’une fonction

ode45,ode23 résolution d’équations différentielles du premier ordre quad évaluation numérique d’une intégrale

Variables prédéfinies

eps précision des calculs en virgule flottante i,j nombre complexe égal à la racine carrée de -1 pi 3,14159….

inf infini

NaN Not A Number

7.2 Graphiques Graphiques élémentaires

Loglog graphique en coordonnées log-log polar graphique en coordonnées polaires plot tracé d’une courbe

subplot création de plusieurs graphiques dans une fenêtre Annotation des graphiques

gtext insertion d’un texte avec la souris legend insertion d’une légende

title insertion du titre du graphique xlabel insertion du label de l’axe des x ylabel insertion du label de l’axe des y Graphiques spécialisés

contour tracé d’isovaleurs d’une fonction quiver tracé d’un champ de vitesse

(39)

7.3 Caractères spéciaux

= assignation

[ ] définition de matrices ou vecteurs

( ) gère la priorité des opérations arithmétique

. point décimal

... indique une ligne suite

, séparateur d'arguments ou d'instructions

; fin de lignes (matrices) ou suppression de l'affichage

% commentaires

: manipulation de sous matrices ou génération de vecteurs 7.4 Analyse de données

abs valeur absolue

fft transformée de Fourier discrète directe

ifft transformée de Fourier discrète inverse mean moyenne d’un tableau

std écart-type d’un tableau

trapz intégration numérique (méthode des trapèzes) var variance d’un tableau

7.5 Programmation et types de données Type de données

double conversion en double précision

num2str conversion d’un entier en chaîne de caractères single conversion en simple précision

str2num conversion d’une chaîne de caractères en entier Programmation

else,elseif exécution conditionnelle

for exécution d’un bloc d’instructions pour un nombre de fois spécifié if exécution conditionnelle d’instructions

function déclaration d’une fonction global déclaration de variables globales inline construction d’une fonction en ligne pause interruption momentanée d’un programme switch sélection parmi différents cas

tic, toc chronométrage

while répétition d’instructions tant qu’une condition est vérifiée

(40)

7.6 Importation et exportation de données

save stockage de variables dans un fichier load lecture du contenu d’un fichier

7.7 Outils du bureau et environnement de développement cd changement de répertoire

pwd affiche le répertoire courant

clear suppression de variables en mémoire dir affichage du contenu d’un répertoire

format définition du format de sortie (écran, fichier) help affichage de l’aide pour une fonction

mkdir création d’un répertoire

rmdir suppression d’un répertoire whos liste des variables en mémoire

(41)

CONTROL SYSTEM TOOLBOX1

1. REPRESENTATION DES SYSTEMES.

Les systèmes que nous allons considérer ici sont linéaires invariant dans le temps (LTS system, Linear Time Invariant). Régis par des équations différentielles linéaires à coefficients constants les systèmes étudiés pouront être monovariables (SISO Single Input Single Output) ou multivariables (MIMO Multiple Input Multiple Output). Les représentations que nous en aurons feront appel à des fonctions de transfert ou à des équations d’état soit en temps continus soit échantillonnées.

1.1. Rappel sur les représentations continues.

1.1.1. Cas continu, saisi d’une fonction de transfert.

Nous rappelons qu’un processus régit par une équation différentielle peut par l’intermédiaire de la transformée de Laplace se mettre sous la forme d’une transmittance en p.

Ainsi si nous considérons un système défini par l’équation différentielle suivante :

y(t)+y(t) 10 y(t)+ ⋅ =u(t) 2 u(t)+ ⋅ (1.1)

La fonction de transfert sera :

2

Y(p) p 2

U(p) p p 10

= +

+ + (1.2)

Représentation sous Matlab.

Pour représenter tout système défini par une fonction de transfert, une matrice de transfert, utilisant la transformée de Laplace ou la transformée en z il faut utiliser la fonction tf (transfer function).

Ici pour une simple transmittance de Laplace nous avons explicité deux possibilités. Dans le premier cas le numérateur et le dénominateur sont définis par des vecteurs (variables num et den), dans le second cas la variable p étant définie la fonction de transfert H1c est affectée plus explicitement.

Les variables Hc et H1c contiennent toute l’information de la transmittance.

Instructions Matlab Exécution

%--- première possibilité ---%

num=[1 2];den=[1 1 10];

Hc=tf(num,den)

Transfer function:

s + 2 --- s^2 + s + 10

%--- seconde possibilité ---%

p=tf('p');

H1c=(p+2)/(p^2+p+10)

Transfer function:

p + 2 --- p^2 + p + 10 Exemple 1.1

Les variables Hc et H1c sont structurées en différents champs auxquels on peut avoir accès par la fonction get(sys).

Il est possible de modifier, par exemple le champ InputName, en programmant l’affectation : H1c.inputname='tension'

1 Cette boite à outils, optionnelle contiens diverses fonctions pour concevoir et analyser une commande.

Références

Documents relatifs

It can generate a personalized musculoskeletal model, and can solve from motion-capture data inverse kinematics, external forces estimation, inverse dynamics and muscle

De nombreuses fonctions et instructions ne sont pas detaillees dans cette note, mais leurs codes sont donnes en annexe.. 1 Manipulations de vecteurs et

y0 : Calculate the value of the Bessel function of the second kind of order 0 for the input argument. y1 : Calculate the value of the Bessel function of the second kind of order 1

lit les données à partir de la variable S de type chaîne de caractères à l'aide du format spécié, et les retourne dans la matrice A. count est un argument de sortie optionnel

— Calculer la solution du système Ax = b (du premier exercice du TD précédent) au sens des moindres carrés, par 2 méthodes

Pour ex´ecuter des op´erations entre matrices ´el´ement par ´el´ement il faut faire pr´ec´eder l’op´erateur d’un point... ´ Evaluer la fonction f dans l’intervalle [−1, 1]

[r]

Pour démarrer GUIDE, taper GUIDE dans la fenêtre de commande de Matlab.. Une fenêtre « GUIDE Quick Start » s'ouvrira vous donnant le choix entre quatre