Vous êtes sur la page 1sur 49

Initiation ` Matlab a

Nicolas Hudon (nicolas.hudon@polymtl.ca) URCPC, Ecole Polytechnique de Montral e 22 janvier 2004

Table des mati`res e


1 Introduction 2 Prsentation de MATLAB e 3 Fichiers SCRIPT et FUNCTION 3.1 Fichiers SCRIPT . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Fichiers FUNCTION . . . . . . . . . . . . . . . . . . . . . . . . . 4 Oprations mathmatiques avec MATLAB e e 4.1 Scalaires, vecteurs, matrices . . . . . . . . . 4.2 Graphiques simples . . . . . . . . . . . . . . 4.3 Fonctions mathmatiques simples . . . . . . e 4.3.1 Fonctions mathmatiques usuelles . e 4.3.2 Fonctions matricielles . . . . . . . . 5 Programmation avec MATLAB 5.1 Oprateurs logiques . . . . . . e 5.2 Boucles if-elseif-else . . . . . . 5.3 Boucles for . . . . . . . . . . . 5.4 Boucles while . . . . . . . . . . 5.5 Boucles switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 4 7 8 9 11 11 20 22 22 24 25 26 27 28 29 30 33 33 38 40 42 43 45 46

6 Fonctions avances e 6.1 Graphiques . . . . . . . . . . . . . . . . . . . . . 6.2 Importer et exporter des donnes . . . . . . . . . e 6.3 Variables symboliques . . . . . . . . . . . . . . . 6.4 Racines dune quation polynomiale . . . . . . . e 6.5 Rgression . . . . . . . . . . . . . . . . . . . . . . e 6.6 Intgration numrique . . . . . . . . . . . . . . . e e 6.7 Solution dquations direntielles ordinaires avec e e

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . valeurs initiales

7 Rfrences ee 49 7.1 Rfrences gnrales . . . . . . . . . . . . . . . . . . . . . . . . . 49 ee e e 7.2 Rfrences spciques au gnie chimique . . . . . . . . . . . . . . 49 ee e e 7.3 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

Introduction

Lobjectif de ce court document est de vous initier au logiciel MATLAB de la compagnie Mathworks et ` la programmation dans cet environnement. Lide a e est de vous exposer les bases de cet outil de travail et de vous habiliter ` rsoudre a e des probl`mes de gnie chimique avec celui-ci, particuli`rement pour les cours e e e suivants : GCH2530 GCH3110 GCH3120 GCH3130 GCH3140 GCH3150 Programmation numrique en gnie chimique e e Calculs des racteurs chimiques e Procds de sparation e e e Commande des procds de gnie chimique I e e e Mcanique des uides applique e e Transfert thermique

Le prsent document se divise comme suit. Apr`s quelques lments de base e e ee de MATLAB (section 2), vous verrez comment utiliser des chiers SCRIPT et FUNCTION (section 3). Ensuite, on introduira les principales oprations e usuelles sur les scalaires, les vecteurs et les matrices avec MATLAB ainsi que certaines oprations mathmatiques (section 4). La section 5 montre les direntes e e e boucles de programmation en MATLAB. La section 6 prsente quelques fonce tions plus avances qui vous seront utiles dans le cadre des cours ci-haut mene tionns. Finalement, on fournit une courte liste de rfrences utiles (livres et e ee sites WEB).

Prsentation de MATLAB e

MATLAB est beaucoup plus quun langage de programmation. Il sagit dune console dexcution (shell ) au mme titre que les consoles DOS ou UNIX. e e Comme toutes les consoles, MATLAB permet dexcuter des fonctions, dattrie buer des valeurs ` des variables, etc. Plus spciquement, la console MATLAB a e permet deectuer des oprations mathmatiques, de manipuler des matrices, e e de tracer facilement des graphiques. La gure 1 prsente lcran MATLAB de e e base.
Ouverture d'un nouveau fichier .m Ouverture de Simulink Rpertoire courant

Invite MATLAB

Fig. 1 Ecran MATLAB

SIMULINK nest pas au programme de cours dinitiation. Llment le plus imee portant ici est linvite MATLAB o` lutilisateur peut aecter des valeurs ` des u a variables et eectuer des oprations sur ces variables. Par exemple : e
>> x = x = 4 >> y = y = 2 >> x + ans = 6 >> x * ans = 8 >> 4

Ici, il faut noter que lorsque lutilisateur ne xe pas de variable de sortie, MATLAB place le rsultat dune opration dans ans. Il est toujours possible de e e conna tre les variables utilises et leur type ` laide de la fonction whos. Par e a exemple, pour les manipulations prcdentes : e e
>> whos Name ans x y Grand total >> Size Bytes 1x1 8 1x1 8 1x1 8 is 3 elements using 24 bytes Class double array double array double array

La solution de x + y a donc t perdue. Il est donc prfrable de toujours donner ee ee des noms aux variables de sortie :
>> x = 4; >> y = 2; >> a = x + y a = 6 >> b = x * y b = 8 >> whos Name Size Bytes a 1x1 8 b 1x1 8 x 1x1 8 y 1x1 8 Grand total is 4 elements using 32 bytes >>

Class double double double double

array array array array

Notons au passage que le point-virgule permet de ne pas acher la valeur ` a lcran, ce qui permettra ventuellement des programmes plus rapides. e e La fonction clear permet deacer des variables. Par exemple :
>> clear x >> whos Name a b y Grand total >> % on efface x de la mmoire e Size Bytes 1x1 8 1x1 8 1x1 8 is 3 elements using 24 bytes Class double array double array double array

Le signe de pourcentage (%) permet de mettre ce qui suit sur une ligne en commentaire (MATLAB nen tiendra pas compte ` lxcution). a e e La sortie de la fonction whos donne, entre autre, la classe de la variable. Plusieurs classes de variables sont disponibles ` lutilisateur de MATLAB. Les classes a les plus utiles pour lutilisateur dbutant sont le double tel que prsent plus e e e haut et les variables char, pour le texte, et les variables symboliques, que nous prsenteront ` la section 6.3. Pour les variables char, la dclaration se fait entre e a e apostrophe :
>> mot1 = hello mot1 = hello

Il est possible de concatner des mots ` laide des parenth`ses carres (la fonction e a e e strcatde MATLAB permet deectuer sensiblement la mme tche) : e a
>> mot1 = hello; >> mot2 = world; >> mot1_2 = [mot1 mot2] % lemploi de permet dintroduire un espace mot1_2 = hello world

Supposons que lon veuille crire un programme qui calcul la racine carre dun e e nombre entr par lutilisateur et qui ache le rsultat dans une phrase. On peut e e convertir les nombres en cha de caract`res en utilisant la fonction num2str. ne e
a = input(Entrez un nombre: ); % utilisation de input, lutilisateur % doit entrer un nombre. b = sqrt(a); str = [La racine carre de num2str(a) est num2str(b)]; e % composition de la phrase de sortie disp(str) % utilisation de display pour afficher le rsultat ` lcran e a e

Le rsultat serait le suivant : e


Entrez un nombre: 23 % 23 est entr par lutilisateur e La racine carre de 23 est 4.7958 e % sortie ` lcran a e

La prochaine section montre comment raliser de courts programmes comme e celui utilis dans le dernier exemple. e

Fichiers SCRIPT et FUNCTION

Jusqu` prsent, lutilisation que nous avons faite de MATLAB sapparente a e beaucoup ` celle dune calculatrice. Pour des tches rptitives, il sav`re beaua a e e e coup plus pratique et judicieux dcrire de courts programmes pour eectuer e les calculs dsirs. Il existe deux types de chiers qui peuvent tre programms e e e e avec MATLAB : les chiers SCRIPT et FUNCTION. Dans les deux cas, il faut lancer lditeur de chier et sauvegarder le chier avec lextension .m. e

3.1

Fichiers SCRIPT

Le chier SCRIPT permet de lancer les mmes oprations que celles crites e e e directement ` linvite MATLAB. Toutes les variables utilises dans un a e SCRIPT sont disponibles ` linvite MATLAB. Par exemple, le chier a test.m qui reprend lexemple prcdent (assurez-vous que le chier test.m se e e trouve bel et bien dans le rpertoire indiqu dans la fentre Rpertoire courant) : e e e e
% test.m clear all x = 4; y = 2; a = x + y b = x * y whos

produit la sortie suivante lorsque quappel : e


>> test a = 6 b = 8 Name a b x y Grand total >>

Size Bytes 1x1 8 1x1 8 1x1 8 1x1 8 is 4 elements using 32 bytes

Class double double double double

array array array array

Habituellement, on utilise les chiers SCRIPT an de : Initialiser le syst`me (fonctions clear ) e Dclarer les variables e Eectuer les oprations algbriques e e Appeler les fonctions Tracer les gures

Il est utile ici de noter que le langage MATLAB nest pas un langage compil e ` (contrairement au langage C++, par exemple). A chaque appel dun SCRIPT (ou dune FUNCTION), le logiciel lit et excute les programmes ligne par ligne. e Lorsque MATLAB dtecte une erreur, le logiciel arrte et un message derreur e e ainsi que la ligne o` lerreur est dtecte sachent ` lcran. Apprendre ` u e e a e a lire les messages derreur est donc important pour dboguer vos programmes e rapidement et ecacement.

3.2

Fichiers FUNCTION

Lide de base dune fonction est deectuer des oprations sur une ou plusieurs e e entres ou arguments pour obtenir un rsultat qui sera appel sortie. Il est e e e important de noter que les variables internes ne sont pas disponibles ` linvite a MATLAB. Par exemple, la fonction suivante (avec une seule sortie, le rsultat e de laddition) :
function a = ma_function(x,y) a = x + y; b = x * y;

produit la sortie suivante :


>> a = ma_fonction(4,2) a = 6 >> whos Name Size Bytes a 1x1 8 Grand total is 1 element using 8 bytes >>

Class double array

Le rsultat de la multiplication nest plus disponible. On peut cependant modie er les sorties de la mani`re suivante : e
function [a,b] = ma_function(x,y) a = x + y; b = x * y;

pour obtenir :
>> [a,b] = ma_fonction(4,2) a = 6 b = 8 >> whos Name Size Bytes a 1x1 8 b 1x1 8 Grand total is 2 elements using 16 bytes >>

Class double array double array

On peut viter lachage des sorties en utilisant le point-virgule : e


>> [a,b] = ma_fonction(4,2); >> whos Name Size Bytes a 1x1 8 b 1x1 8 Grand total is 2 elements using 16 bytes >>

Class double array double array

Habituellement, on utilise les chiers FUNCTION an de : Programmer des oprations rptitives e e e Limiter le nombre de variables dans linvite MATLAB Diviser le programme (probl`me) de mani`re claire e e

10

Oprations mathmatiques avec MATLAB e e

Dans cette section, nous prsenterons les lments mathmatiques de base de e ee e MATLAB.

4.1

Scalaires, vecteurs, matrices

Llment de base de MATLAB est la matrice. Cest-`-dire quun scalaire est ee a une matrice de dimension 1x1, un vecteur colonne de dimension n est une matrice nx1, un vecteur ligne de dimension n, une matrice 1xn. Contrairement aux langages de programmation usuels (i.e. C++), il nest pas obligatoire de dclarer les variables avant de les utiliser et, de ce fait, il faut prendre toutes les e prcautions dans la manipulation de ces objets. e Les scalaires se dclarent directement, par exemple : e
>> x = 0; >> a = x;

Les vecteurs ligne se dclarent de la mani`re suivante : e e


>> V_ligne = [0 1 2] V_ligne = 0 1 2

Pour les vecteurs colonne, on spare les lments par des points-virgules : e ee
>> V_colonne = [0;1;2] V_colonne = 0 1 2

Il est possible de transposer un vecteur ` laide de la fonction transpose ou avec a lapostrophe (). Ainsi,
>> V_colonne = transpose(V_ligne) V_colonne = 0 1 2 >> V_colonne = V_ligne V_colonne = 0 1 2

11

Le double point ( :) est loprateur dincrmentation dans MATLAB. Ainsi, e e pour crer un vecteur ligne des valeurs de 0 ` 1 par incrment de 0.2, il sut e a e dutiliser (notez le nombre dlments du vecteur) : ee
>> V = [0:0.2:1] V = Columns 1 through 6 0 0.2000

0.4000

0.6000

0.8000

1.0000

Par dfaut, lincrment est de 1. Ainsi, pour crer un vecteur ligne des valeurs e e e de 0 ` 5 par incrment de 1, il sut dutiliser : a e
>> V = [0:5] V = 0 1

On peut accder ` un lment dun vecteur et mme modier celui-ci directement e a ee e (Notez que contrairement au C++, il ny a pas dindice 0 dans les vecteurs et matrices en MATLAB) :
>> a = V(2); >> V(3) = 3*a V = 0 1

Les oprations usuelles daddition, de soustraction et de multiplication par scae laire sur les vecteurs sont dnis dans MATLAB : e
>> V1 = [1 2]; >> V2 = [3 4]; >> V = V1 + V2 % addition de vecteurs V = 4 6 >> V = V2 - V1 % soustraction de vecteurs V = 2 2 >> V = 2*V1 V = 2 4 % multiplication par un scalaire

12

Dans le cas de la multiplication et de la division, il faut faire attention aux dimensions des vecteurs en cause. Pour la multiplication et la division lment ee par lment, on ajoute un point devant loprateur (.* et ./). Par exemple : ee e
>> V = V1.*V2 V = 3 8 % multiplication lment par lment e e e e

>> V = V1./V2 % division lment par lment e e e e V = 0.3333 0.5000

Cependant, MATLAB lance une erreur lorsque les dimensions ne concordent pas (remarquez les messages derreur, ils sont parfois utiles pour corriger vos programmes) :
>> V3 = [1 2 3] V3 = 1 2 3 >> V = V1.*V3 ??? Error using ==> .* Matrix dimensions must agree.

La multiplication de deux vecteurs est donne par (*). Ici, lordre a de limpore tance :
>> V1 = [1 2]; % vecteur 1x2 >> V2 = V1; % vecteur 2x1 >> V = V1*V2 V = 5 >> V = V2*V1 V = 1 2 2 4

Il est aussi possible de concatner des vecteurs. Par exemple : e


>> V1 = [1 >> V2 = [3 >> V = [V1 V = 1 2]; 4]; V2] 2 3 4

13

De mme, pour les vecteurs colonnes : e


>> V1 = [1;2]; >> V2 = [3;4]; >> V = [V1;V2] V = 1 2 3 4

On peut aussi crer des matrices, par exemple, e


>> V1 = [1 2]; >> V2 = [3 4]; >> V = [V1;V2] V = 1 2 3 4

qui nest pas quivalent ` : e a


>> V1 = [1;2]; >> V2 = [3;4]; >> V = [V1 V2] V = 1 3 2 4

Il faut donc tre tr`s prudent dans la manipulation des vecteurs. Par exemple, e e une mauvaise concatnation : e
>> V1 = [1 2]; >> V2 = [3;4]; >> V = [V1;V2] ??? Error using ==> vertcat All rows in the bracketed expression must have the same number of columns.

Les matrices peuvent aussi tre construites directement : e


>> M = [1 2; 3 4] M = 1 2 3 4

On peut videmment avoir acc`s aux lments de la matrice par : e e ee


>> m21 = M(2,1) m21 = 3 % 2e ligne, 1ere colonne

14

On peut aussi compter les lments. MATLAB compte alors tous les lments ee ee dune ligne (de gauche ` droite) avant daccder ` la ligne suivante. Ainsi, dans a e a la matrice 3x3 suivante :
>> A = [1 2 3; 4 5 6;7 8 9] A = 1 2 3 4 5 6 7 8 9

la valeur des lments ai,j sont donnes par leur rang aect par MATLAB. Le ee e e 5e lment est 5 : ee
>> a5 = A(5) a5 = 5

Il est aussi possible de stocker dans un vecteur une ou plusieurs lignes (ou colonnes). Ainsi, si lon veut stocker la deuxi`me colonne de la matrice A : e
>> V = A(:,2) V = 2 5 8 % ici, (:) signifie toutes les lignes

De la mme mani`re, si lon veut stocker les lignes 2 et 3 : e e


>> M2=A(2:3,:) M2 = 4 7 5 8 6 9 % (2:3) signifie ligne 2 ` 3 a % et (:) signifie toutes les colonnes

Il est possible dinverser inv(), detransposer transpose() ou avec lapostrophe () les matrices :
>> invM = inv(M) invM = -2.0000 1.0000 1.5000 -0.5000 >> transpM = M transpM = 1 3 2 4

15

Un des intrts de MATLAB est la possibilit dutiliser directement les oprations ee e e mathmatiques pr-dnies pour les matrices. Laddition et la soustraction sont e e e directes (attention aux dimensions) ainsi que la multiplication par un scalaire :
>> A = [1 2;3 4]; >> B = [4 3;2 1]; >> C = A+B % addition C = 5 5 5 5 >> D = A-B % soustraction D = -3 -1 1 3 >> C = 3*A % multiplication par un scalaire C = 3 6 9 12

Pour la multiplication et la division, les oprateurs usuels (* et /) sont dnis e e pour la multiplication et division matricielles :
>> C = A*B % multiplication de matrices C = 8 5 20 13 >> D = A/B D = 1.5000 2.5000 % division de matrices -2.5000 -3.5000

An de raliser la multiplication et la division lment par lment, on prc`de e ee ee e e les oprateurs par un point (.* et ./) : e
>> C = A.*B % multiplication lment par lment e e e e C = 4 6 6 4 >> D = A./B D = 0.2500 1.5000 % division lment par lment e e e e 0.6667 4.0000

16

Dautres oprations sur les matrices seront prsentes dans les sections subsquentes. e e e e Il faut noter certaines matrices spciales qui peuvent tre utilises, par exemple e e e la matrice identit : e
>> I = eye(3) % matrice identit e I = 1 0 0 0 1 0 0 0 1

On peut aussi dclarer des vecteurs (et des matrices) ne contenant que des zros e e ou des 1.
>> V_nul = zeros(1,2) % un vecteur de 1 ligne, 2 colonnes de 0 V_nul = 0 0 >> V_un = ones(1,2) % un vecteur de 1 ligne, 2 colonnes de 1 V_un = 1 1 >> M_un = ones(2,2) % une matrice 2x2 de 1 M_un = 1 1 1 1

Dans certaines applications, il est parfois utile de conna les dimensions dune tre matrice, et la longueur dun vecteur (retourns, par exemple, par une fonction). e Dans ce cas, on utilise les fonctions length et size.
>> V = [0:0.1:10]; % utilisation de length - vecteur 1x101 >> n = length(V) n = 101 >> M = [1 2 3; 4 5 6]; % utilisation de size - matrice 2x3 >> [n,m] = size(M) n = 2 m = 3 >> dim = length(M) dim = 3 % utilisation de length sur une matrice % donne la plus grande dimension, ici le nombre de colonnes

17

Voici quelques exercices sur la manipulation des vecteurs et des matrices :

Exercices 1. On veut vrier que la multiplication de matrices nest pas commutative. e Soient deux matrices : 3 4 4 A = 6 5 3 10 8 2 4 5 8 B = 3 11 12 2 1 7 Ralisez un code MATLAB qui permet, pour les matrices A et B donnes, de e e vrier que : e ABBA=0

2. En utilisant les matrices dnies au numro 1, vriez lidentit suivante : e e e e (A + B)T = AT + BT Utilisez la fonction transpose de MATLAB pour transposer les matrices.

3. On dsire solutionner un syst`me dquations algbriques linaires, cest-`e e e e e a dire, un syst`me reprsent par : e e e Ax=b Avec A, une matrice de dimension nxn, x et b, des vecteurs colonne de dimension n. La solution de ce syst`me est donn par : e e x = A1 b 18

En utilisant la fonction inv de MATLAB pour inverser la matrice, solutionnez le syst`me dcrit par la matrice A, dnie au numro 1 et le vecteur b, la premi`re e e e e e colonne de la matrice B, de ce numro. e

19

4.2

Graphiques simples

Cette sous-section ne vise qu` vous permettre de tracer les solutions pour les a exercices qui suivent. Veuillez vous rfrer ` la section 6 pour plus dinformaee a tions. La fonction plot permet de tracer des courbes en MATLAB. Les argument de cette fonction sont les vecteurs des variables indpendantes et dpendantes (en e e alternance), comme dans lexemple qui suit :
>> x = [0:0.01:2*pi]; >> plot(x,cos(x),x ,sin(x))

qui produit la sortie graphique de la gure 2 :


1

0.8

0.6

0.4

0.2

0.2

0.4

0.6

0.8

Fig. 2 sin(x) vs cos(x) On aurait aussi pu simplier par :


>> plot(x,[cos(x) sin(x)])

20

Ces graphiques manquent cependant de clart. Il faut toujours nommer les axes e (et mettre les units si possible), proposer une lgende, etc. Ceci est videmment e e e un peu long ` crire ` linvite MATLAB. Un SCRIPT est tout indiqu : ae a e
% graphique.m clear all close all % ferme les anciennes figures x = [0:0.01:2*pi]; y1 = cos(x); y2 = sin(x); figure(1) plot(x, y1,.,x, y2,+) % cos(x) en points, sin(x) en + title(sinus et cosinus) xlabel(x) ylabel(f(x)) legend(cos(x),sin(x),0) % le 0 place la lgende ` c^t des courbes e a o e

Et on obtient la gure 3.
sinus et cosinus 1

0.8 cos(x) sin(x)

0.6

0.4

0.2 f(x)

0.2

0.4

0.6

0.8

3 x

Fig. 3 sin(x) vs cos(x)-corrig e Pour en savoir plus, particuli`rement sur les couleurs et types de courbes, tapez e help plot ` linvite MATLAB. a

21

Fonction sin(x) cos(x) tan(x) exp(x) log(x) sqrt(x) power(x,a) abs(x) asin(x) acos(x) atan(x) sinh(x) cosh(x) tanh(x) round(x) oor(x) ceil(x)

Description sinus de x ; x en radians cosinus de x ; x en radians tangente de x ; x en radians exponentielle de x logarithme en base e de x racine carre de x e puissance a de x valeur absolue de x sin1 de x ; rsultat en radians e cos1 de x ; rsultat en radians e tan1 de x ; rsultat en radians e sinus hyperbolique de x cosinus hyperbolique de x tangente hyperbolique de x arrondit un nombre ` lentier le plus pr`s a e arrondit vers lentier immdiatement au-dessous e arrondit vers lentier immdiatement au-dessus e

Tab. 1 Fonctions courantes en MATLAB

4.3

Fonctions mathmatiques simples e

Les oprateurs algbriques (+, -, *, /, .*,./) ont t dnis ` la sous-section e e ee e a prcdente pour les scalaires, vecteurs et matrices. On montrera ici (sans tre e e e exhaustif), les principales fonctions mathmatiques fournies dans MATLAB et e leur utilisation. Pour les fonctions non prsentes, lutilisateur peut toujours e e utiliser laide des fonctions avec la fonction help qui prend pour argument le nom de la fonction. Par exemple, la fonction cosinus :
>> help cos COS Cosine. COS(X) is the cosine of the elements of X.

Overloaded methods help sym/cos.m

Dans un premier temps, on prsente les fonctions mathmatiques usuelles et leur e e appel dans MATLAB. Ensuite, on prsente les principales fonctions spciques e e aux matrices. 4.3.1 Fonctions mathmatiques usuelles e

Toutes les fonctions mathmatiques de base sont dj` programmes dans MATe ea e LAB. Le tableau 1 prsente les plus courantes. e

22

Exercices

4. On veut vrier graphiquement la dnition de la fonction sinh(x) : e e ex ex 2

sinh(x) =

Produisez un code MATLAB qui trace deux courbes sur un mme graphique. e La premi`re, en utilisant directement la fonction sinh(x) de MATLAB et la e deuxi`me en utilisant la dnition avec les exponentielles. Utilisez un vecteur x e e de -2 ` 2 par incrments de 0.1. a e

5. Vriez graphiquement (pour les mmes valeurs de x quau numro 4 que : e e e sinh(x) cosh(x)

tanh(x) =

ATTENTION ` la division de deux vecteurs ! a

23

Fonction det(A) trace(A) rank(A) norm(A) inv(A) poly(A) eig(A) svd(A) min(V) max(V) sum(V)

Description dterminant de la matrice A e trace de la matrice A rang de A (nombre de colonnes ou de lignes linairement indpendantes) e e norme de A (peut sappliquer ` un vecteur V) a inverse de A polynme caractristique de la matrice A o e valeurs propres de la matrice A dcomposition en valeur singuli`re de la matrice A e e indice du plus petit l. du vecteur V e indice du plus grand l. du vecteur V e somme des lment du vecteur V ee Tab. 2 Fonctions matricielles en Matlab

4.3.2

Fonctions matricielles

Toutes les fonctions matricielles de base sont dj` programmes dans MATLAB. ea e Le tableau 2 prsente les plus courantes. e

Exercices

6. En utilisant la fonction eye, vriez que (utilisez la matrice A dnie au e e numro 1) : e AA1 = A1 A = I

7. En utilisant les fonctions trace et eig vriez que (utilisez la matrice A dnie e e au numro 1) : e trA = n i i=1 O` les i sont les valeurs propres de la matrice A. u

24

Programmation avec MATLAB

Cette section prsente les direntes structures de programmation avec MATe e LAB. Pour ltudiant familier avec la programmation C++ ou Fortran, il ne e sagit que de se familiariser avec la syntaxe propre ` MATLAB. Pour ltudiant a e moins familier avec les structures de base en programmation, les exercices ` la a n de la section sont indiqus pour devenir fonctionnels avec ces structures. e

25

Oprateur e a a == b a<b a>b a <= b a >= b a =b

Description NOT - retourne 1 si a gal 0, 1 si a gal 0 e e retourne 1 si a gal b, 0 autrement e retourne 1 si a est plus petit que b, 0 autrement retourne 1 si a est plus grand que b, 0 autrement retourne 1 si a est plus petit ou gal ` b, 0 autrement e a retourne 1 si a est plus grand ou gal ` b, 0 autrement e a retourne 1 si a est dirent de b, 0 autrement e Tab. 3 Oprateurs de comparaisons e

5.1

Oprateurs logiques e

Avant de dbuter la prsentation des boucles de programmation conditionnelles, e e il est important de se familiariser avec les oprateurs logiques. Le premier type e de ces oprateurs permet de comparer des valeurs entre elles (tableau 3). e Par exemple, on veut comparer deux valeurs entre elles :
>> a = sin(2*pi); >> b = cos(2*pi); >> bool = (a>b) bool = 0 >> a a = -2.4493e-016 % ici a devrait galer 0, la prcision est limite! e e e >> b b = 1

Il faut noter ici que lemploie de loprateur == est tr`s risqu lorsque lon e e e compare des valeurs numriques. En eet, la prcision de lordinateur tant e e e limite, il est prfrable dutiliser une condition sur la dirence comme dans le e ee e code suivant :
if abs(a-b) < eps bool = 1; else bool = 0; end % eps est la prcision machine (2.2204e-016) e

26

P 1 1 0 0

Q 1 0 1 0

P et Q 1 0 0 0

Tab. 4 Table de vrit - oprateur ET e e e P 1 1 0 0 Q 1 0 1 0 P ou Q 1 1 1 0

Tab. 5 Table de vrit - oprateur OU e e e Il est aussi possible de lier entre elles des conditions par loprateur et (&) et e ou (|). Les tables de vrits de ces deux oprateurs sont prsentes aux tableaux e e e e e 4 et 5. Ces notions seront utiles pour la construction des conditions des prochaines sections.

5.2

Boucles if-elseif-else

Ce type de structure de programmation est tr`s utile pour vrier des conditions. e e En pseudo-code, on peut rsumer par le schma suivant : e e
si CONDITION1, FAIRE ACTION1. % condition 1 remplie sinon et si CONDITION2, FAIRE ACTION2. % condition 1 non-remplie, % mais condition 2 remplie sinon, FAIRE ACTION3 % conditions 1 et 2 non-remplies

En MATLAB, le pseudo-code prcdent devient : e e


if CONDITION1 ACTION1; elseif CONDITION2 ACTION2; else ACTION3;

27

Par exemple, on reoit un entier a, sil est impair ngatif, on le rend positif. Sil c e est impair positif, on lui ajoute 1. Sil est pair, on ajoute 2 ` sa valeur absolue. a La courte fonction suivante permet de raliser cette transformation (notez ici, e lemploi du modulo pour dterminer si lentier est divisible par 2). e
function b = transf_entier(a) if a < 0 & mod(a,2) ~= 0 % mod permet de trouver b = -a; % le reste dune division elseif a >= 0 & mod(a,2) ~= 0 b = a + 1; else b = abs(a)+2; end

5.3

Boucles for

Les boucles for sont tr`s utiles dans la plupart des applications mathmatiques e e (par exemple, pour eectuer un calcul sur tous les lments dun vecteur). ee En MATLAB, il est parfois beaucoup plus ecace dutiliser les oprateurs e algbriques usuels dnis plus tt (par exemple, le .*). Dans les cas o` il est e e o u impossible de se soustraire ` lutilisation de ces boucles, voici le prototype en a pseudo-code de ces boucles.
incrment = valeur initiale e Pour incrment=valeur_initiale jusqu` valeur finale e a ACTION1...N AJOUTER 1 ` incrment a e

En MATLAB, ce pseudo-code devient :


for i = 0:valeur_finale ACTION1; ACTION2; ... ACTIONN; end

Remarquez que lincrment peut tre dirent de 1, par exemple si lon veut e e e calculer les carrs des nombres pairs entre 0 et 10 : e
for i=0:2:10 carre = i^2 end

28

5.4

Boucles while

Une boucle while permet de rpter une opration tant quune condition nest e e e pas remplie. En pseudo-code, elle peut tre schmatise de la faon suivante : e e e c
Tant que CONDITION est VRAIE ACTION1..N

En MATLAB, on crit ce type de boucle de la mani`re suivante : e e


while CONDITION ACTION1; ACTION2; ... ACTIONN; end

Ce type de boucle est tr`s souvent utilis pour converger vers une valeur dsire. e e e e Par exemple, on veut trouver le nombre dentiers positifs ncessaires pour avoir e une somme plus grande que 100. On pourrait raliser cette tche de la mani`re e a e suivante :
function n = nombre_entier n = 0; % initialisation des valeurs somme = 0; while somme < 100 n=n+1; % itration de n e somme = somme + n; % nouvelle somme end

29

5.5

Boucles switch

Les boucles switch permettent parfois de remplacer les boucles if-elseif-else, particuli`rement dans le cas de menus. Le prototype de ce type de boucle en e pseudo-code est le suivant :
Dterminer CAS e CAS choisi est CAS1 ACTION1 CAS choisi est CAS2 ACTION2 AUTREMENT ACTION3

En MATLAB, on obtient le code suivant :


switch (CAS) case {CAS1} ACTION1 case {CAS2} ACTION2 otherwise ACTION3 end

Par exemple, on veut faire une calculatrice simple en MATLAB, pour dterminer e lexponentielle ou le logarithme en base e dun nombre entr par lutilisateur. e Une mani`re simple de rendre le programme interactif serait dutiliser le SCRIPT e suivant :
operation = input(Opration: (1) exp ; (2) log ? ); e nombre = input(Valeur : ); switch operation case 1 b = exp(nombre) case 2 b = log(nombre) otherwise disp(mauvais choix -- operation) end

Avec la sortie (par exemple) suivante :


>> calcul_rapide Opration: (1) exp ; (2) log ? 1 e Valeur : 0.5 b = 1.6487 >>

30

Exercices

8. En utilisant la fonction xor de MATLAB, construisez la table de vrit de e e loprateur OU EXCLUSIF. e

9. On veut comparez le temps de calcul ncessaire ` MATLAB avec une boucle e a for versus le temps ncessaire avec une opration vectorielle. Pour ce faire, on e e utilise les commandes tic et toc :
>> tic >> OPRATION E >> toc

MATLAB ache alors le temps utilis pour raliser lopration. Dans un chier e e e SCRIPT, eectuez le calcul suivant : et 1 + et

x(t) =

Utilisez le vecteur [0 : 0.001 : 1]. Dans un premier temps, solutionnez ` laide a des oprateurs vectoriels. Ensuite, utilisez la boucle for : e
clear x for i=1:length(t) % incrment dans tout le vecteur t e x(i) = exp(t(i))/(1 + exp(t(i)); end

Essayez ensuite en mettant la ligne clear x en commentaire.

10. Soit lquation quadratique suivante : e ax2 + bx + c = 0 On dsire dterminer, pour des param`tres a, b et c donns, de quels types sont e e e e les racines de x. Il sagit, selon la valeur du discriminant, dacher ` lutilisaa teur le type des racines (relles identiques, relles distinctes, complexes). Pour e e lachage, utilisez :
message = ([Les racines de lquation sont ...]); e

Utilisez une fonction qui prend les param`tres a, b et c comme argument et qui e renvoie le diagnostic.

31

11. La fonction arctan(x) peut tre approxime par : e e (1)m x2m+1 (|x| < 1) 2m + 1

tan1 (x) M m=0

On dsire savoir le nombre M qui permet, pour une valeur de x donne, dape e proximer avec une erreur infrieure ` 106 . Ralisez une fonction MATLAB qui e a e prend comme argument, le nombre x, qui vrie si la condition est remplie et, e ` laide dune boucle while, dtermine le nombre ditrations M . Le programme a e e doit lancer un message derreur si la condition nest pas remplie.

12. La mthode de Newton-Raphson permet de dterminer les racines dune e e quation algbrique non-linaire. Lalgorithme est le suivant : e e e
0. Poser x(0) % estim initial e 1. Tant que f(k) - 0 plus grand quun crit`re e 1.1. Calculer x(k+1) = x(k) - f(x_k)/f(x_k) 1.2. k = k + 1 2. Sortie

` A laide de cet algorithme, dterminer les racines de lquation : e e 2x 2x = 0 Vriez leet de lestim initial sur le nombre ditrations. e e e

32

Fonctions avances e

Les direntes parties de cette section sont plus spciques aux dirents cours e e e (sauf les sous-sections 6.1 et 6.2 qui traitent des sorties graphiques et des entrese sorties dans des chiers). Quelques exercices sont prsents dans chacune des e e sous-sections.

6.1

Graphiques

On a vu prcdemment comment faire des gures simples ` laide de la fonction e e a plot. On peut aussi faire plusieurs fentres graphiques sur une mme gure (dans e e le cas, par exemple, o` lon voudrait tracer deux courbes dordres de grandeur u dirents). La gure 4 prsente un exemple ` ne pas faire, soit de tracer la e e a temprature et la concentration en fonction du temps dans un racteur sur la e e mme gure. e
2200

2000

1800 Ca(t) T(t) 1600 Ca (mol/m3) et T (K)

1400

1200

1000

800

600

400

200

0.2

0.4

0.6

0.8

1 temps (h)

1.2

1.4

1.6

1.8

Fig. 4 C(t) et T(t) sur une mme gure e

33

La gure 5 prsente les mmes donnes, mais dans deux fentres graphiques : e e e e
2100 2080 Ca (mol/m3) 2060 2040 2020 2000 1980 1960 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2

350 340 330 320 310 300

T (K)

0.2

0.4

0.6

0.8

1 temps (h)

1.2

1.4

1.6

1.8

Fig. 5 C(t) et T(t) sur une mme gure - corrig e e Le code utilise le concept de gure et de subplot, tel que demontr dans le code e suivant :
figure(1) % dclaration dune figure. e subplot(2,1,1) % on dclare une matrice de graphiques e % de 2 lignes (indice1), 1 colonne (indice2) % et le premier plot est dans la premi`re fen^tre e e plot(t,Ca) ylabel(Ca (mol/m^3)) subplot(2,1,2) % 2 lignes, 1 colonne, 2e graphique plot(t,T) ylabel(T (K)) xlabel(temps (h))

34

Fonction semilogx semilogy loglog polar mesh

Description axe des x logarithmique axe des y logarithmique axes des x et des y logarithmique graphique en coordonnes polaires e graphique 3D

Tab. 6 Fonctions de graphiques Dans lutilisation de subplot, MATLAB compte les fentres de graphique comme e dans le cas des matrices (en compltant chaque ligne). e Il existe plusieurs fonctions pour tracer certaines formes spciales de graphique. e Une synth`se de ces fonctions est prsente au tableau 6. e e e Les exercices qui suivent permettront de tester lutilisation de quelquesunes de ces fonctions. Dans le doute au sujet des appels de ces fonctions, nhsitez pas e ` utiliser le help... a

35

t (min) 1 2 3 4 5 6 7 8 9 10

CA (mol L1 ) 1.00 0.90 0.80 0.73 0.67 0.62 0.58 0.55 0.53 0.52

Tab. 7 Donnes dexprimentation e e Exercices

13. Une exprience dans un racteur batch sont prsentes au 7. e e e e Sur une mme gure, faites tracez les graphiques suivants : e a - CA (t) en fonction du temps ; bcdCA (t) dt

en fonction de CA (t) ; en fonction de ln(CA (t)) sur un graphique loglog ;

ln(dCA (t)) dt

Evaluez les drives numriquement (pour les points i = 1...10) par : e e e dCA (t) dt dCA (t) dt 3CA1 + 4CA2 CA3 2t CA(i+1) CA(i1) 2t

i=1

i=2...9

dCA (t) dt

i=10

CA8 4CA9 + 3CA10 2t

36

14. On veut tracer avec MATLAB la fonction z(x, y) = e0.5[x


2

+0.5(xy)2 ]

` pour x et y entre -4 et 4. A laide de deux boucles for imbriques, calculez la e valeur de la fonction ` chaque point du domaine (utilisez des incrments de a e 0.05 dans les deux directions). Tracez ensuite la courbe obtenue ` laide de la a fonction mesh(vecteurX, vecteurY, matriceZ). Vriez lappel ` cette fonction e a en tapant help mesh ` lappel MATLAB. Tracez ensuite les mmes valeurs ` a e a laide des fonctions surf(vecteurX, vecteurY, matriceZ) et contour((vecteurX, vecteurY, matriceZ).

37

6.2

Importer et exporter des donnes e

Dans plusieurs cours, il vous sera ncessaire de conserver vos solutions numriques e e dune session de travail ` lautre. La mthode la plus facile est dutiliser les fonca e tions save et load de MATLAB. Les chiers crs porte lextension .mat par ee dfaut (ceux-ci ne sont accessibles quavec MATLAB). Voici un exemple dutie lisation simple.
>> A = ones(3); % matrice >> b = zeros(3,1); % vecteur >> save ma_session % le fichier ma_session.mat est cr dans ee % le rpertoire courant e >> clear >> whos % les variables ne sont plus dans la mmoire e >> load ma_session % On va chercher tous les lments de la session e e >> whos Name Size Bytes Class A 3x3 72 double array b 3x1 24 double array Grand total is 12 elements using 96 bytes

Il est aussi possible de sauvegarder les variables dans un chier ASCII et lui donner un format dsir. Elles pourront ensuite tre lues par dautres logiciels e e e (par exemple, EXCEL) et avec MATLAB (en utilisant aussi la fonction load ). Dans le cas suivant, on ne sauvegarde que la matrice A de lexemple prcdent. e e
>> save ma_session.dat -ASCII A >> load ma_session.dat

La fonction xlsread permet de charger en MATLAB des chiers EXCEL.


>> xlsread classeur.xls

Pour plus dinformation ` ce sujet, vous pouvez consulter help leformats. a

38

Exercices

15. Sauvegardez la matrice z(x, y) calculez ` lexercice 14 dans un chier ASCII a (.dat). Ouvrez le chier ` laide dEXCEL. a

16. MATLAB permet de dnir direntes formes de structures. Une structure e e associe un nom de variable (une cha de caract`re) ` la variable dans une ne e a cellule (type gnrique de variable - voir help cell pour plus dinformation). e e Supposons que lon utilise la fonction de lexercice 14 : z(x, y) = ea[x
2

+b(xy)2 ]

avec a = 0.5 et b = 0.5 dans lexercice prcdent. On pourrait stocker cet essai e e dans une seule et unique variable :
OBJET_ESSAI = struct(matrice,{z},a, {a}, b, {b}) % {}: cellules

Avec la sortie suivante :


>> OBJET_ESSAI = z: [161x161 double] a: 0.5000 b: 0.5000

On peut accder aux direntes variables de cette structure par : e e


>> OBJET_ESSAI.a ans = 0.5000 >>

On dsire organiser la sauvegarde des variables x, y, z, a et b dans un chier e .mat ` laide dune structure. Crez une forme plus compl`te de la structure a e e prsente. Sauvegardez ensuite cet objet dans un chier .mat. e e

39

6.3

Variables symboliques

MATLAB permet la manipulation dexpressions symboliques (cest-`-dire de a variables sans aectation numrique) de la mme mani`re que MAPLE. Il faut e e e cependant dclarer les variables au pralable. Par exemple, on veut calculer e e la matrice Jacobienne associes ` un syst`me de deux quations direntielles e a e e e ordinaires.
%dclaration des variables symboliques e syms z1 z2 real %dclaration de fonctions mathmatiques e e f1 = z1-z2^2+4; % f1:= del z1/del t f2 = 5*(1-exp(-z1/66)); % f2:= del z2/del t %Cration de la matrice jacobienne e % A=[(del f1)/(del z1) (del f1)/(del z2) % (del f2)/(del z1) (del f2)/(del z2)]; A = jacobian([f1;f2],[z1 z2]);

MATLAB produit le rsultat suivant (remarquez la classe des variables) : e


>> A = jacobian([f1;f2],[z1 z2]) A = [ 1, [5/66*exp(-1/66*z1),0] >> whos Name A f1 f2 z1 z2 Grand total -2*z2]

Size Bytes Class 2x2 354 sym object 1x1 142 sym object 1x1 158 sym object 1x1 128 sym object 1x1 128 sym object is 63 elements using 910 bytes

Il est possible ensuite dvaluer lexpression ` dirents points (z1,z2) en utilisant e a e la fonction feval.
>> >> >> >> A1 z1 = 0; z2 = 0; A1 = eval(A) A1 = 1.0000 0.0758

0 0

>>

40

Les exercices qui suivent permettront dillustrer dautres fonctions qui peuvent tre appliques aux variables et objets de la classe symbolique. e e

Exercices

17. En utilisant la fonction solve, et en utilisant des variables symboliques, trouvez les solutions de lquation x2 + 1 = 0. e

18. Soit lexpression suivante : y = t3 + cos(t) En utilisant les variables symboliques et la fonction di, dterminez lexpression e de dy . Evaluez la drive pour t = 5 (utilisez la fonction eval ). e e dt

41

6.4

Racines dune quation polynomiale e

Ce probl`me est relativement courant (dans certains probl`mes de thermodynae e mique par exemple). Supposons que lon ait ` rsoudre lquation polynomiale a e e dordre 5 suivante : x5 + 3x4 8x3 + 12x2 x + 4 = 0 Il sut de dclarer un vecteur contenant les coecients du polynme : e o
>> poly = [1 3 -8 12 -1 4];

et dappeler la fonction roots de MATLAB :


>> roots(poly) ans = -5.0623 1.1051 + 1.1056i 1.1051 - 1.1056i -0.0739 + 0.5638i -0.0739 - 0.5638i

Exercices

19. Programmez une fonction qui permet de dterminez le nombre de racines e relles dun polynme. Pour ce faire, utilisez la fonction isreal(x) de MATLAB e o qui retourne 1 si x est rel et 0 sinon. e

42

6.5

Rgression e

Cette sous-section prsente une mthode relativement simple pour eectuer des e e rgressions dans MATLAB (qui vous permettront de vrier les rsultats obe e e tenus par dautres mthodes enseignes dans les cours). Cette mthode peut e e e savrer une alternative intressante ` EXCEL dans vos cours de laboratoire... e e a Supposons deux vecteurs de donnes : e
>> x = [0 1 2 3 4 5]; % variable indpendante e >> y = [0 2.2 4.5 5.4 5.5 5.5]; % var. dpendante e

On veut avoir le meilleur mod`le dordre 3 reliant ces donnes entre elles : e e
>> vect_modele = polyfit(x,y,3) vect_modele = 0.0074 -0.4091 2.9636

-0.0865

Le mod`le est donc : e 0.0074x3 0.4091x2 + 2.9636x 0, 0865 = 0 Vrions maintenant ce mod`le. Tout dabord, on utilise le mod`le pour dterminer e e e e les nouvelles valeurs de y, appeles ymodele et on trace un simple graphique : e
>> y_modele=polyval(vect_modele,x); >> plot(x,y,+,x,y_modele,*)

La gure 6 prsente le rsultat. e e


6

0.5

1.5

2.5

3.5

4.5

Fig. 6 Essai dune rgression e

43

Exercices

20. On se propose dapproximer la fonction y(t) = 10 et + k pour t entre 0 et 10 (utilisez des incrments de 0.1) par un polynme dordre 5. e o Le param`tre k est gnr par une fonction alatoire : e e ee e
k = rand(length(t),1) % t est un vecteur colonne

44

6.6

Intgration numrique e e

Lintgration numrique dintgrale est tr`s importante en gnie chimique (par e e e e e exemple en Calculs des racteurs chimiques, en Procds de sparations, etc.). La e e e e fonction dintgration la plus populaire est quad. Il sagit dune mthode adape e tive de lalgorithme de Simpson. Supposons que lon veuille valuer lintgrale e e suivante : sin(x)dx x pour lintervalle ]0, 1]. Il sut dutiliser les lignes de code suivantes :
>> S = quad(sin(x)./x,0,1) S = 0.9461

Encore une fois, on vous rappelle que cette fonction vous permet de vrier les e rsultats obtenus par une mthode enseigne dans un cours (et ne vous soustrait e e e pas ` lobligation den programmer quelques unes) ! a

Exercices

21. On dsire calculer la valeur de lintgrale suivante : e e


1 0

dx 1+ x

Dans un premier temps, on vous demande de raliser une fonction MATLAB e qui utilise la mthode de Simpson 3/8 (quatre points quidistants nots 0...3) : e e e 3h (f0 + 3f1 + 3f2 + f3 ) 8

f (x)dx

Comparez la solution ` celle obtenue ` laide de la fonction quad. a a

45

e Elment t y fonctionDi vecteur temps vecteur C.I.

Description vecteur colonne du temps rsultant e matrice des solutions fonction qui produit les drives ` chaque incrment de temps e e a e vecteur du temps dappel [ tinitial tnal] vecteur colonne des conditions initiales e Tab. 8 Elments dappel ` ode45 a

6.7

Solution dquations direntielles ordinaires avec vae e leurs initiales

Le probl`me de rsolution dquations direntielles ordinaires aux conditions e e e e initiales est courant en gnie chimique. Dans plusieurs cours du baccalaurat, e e vous avez appris des mthodes pour solutionner ce type de probl`me (mthode e e e dEuler, algorithme de Runge-Kutta). Ces mthodes sont programmes dans e e MATLAB et elles sont relativement semblables dans leur utilisation. La plus populaire est la mthode de Runge-Kutta dordres 4 et 5 ` pas variable implante e a e dans la fonction ode45. Les autres fonctions, par exemple ode23 (mthode dEue ler) et ode15s (pour les probl`mes plus ardus ` rsoudre) sont appels, dans leur e a e e appel de base, de la mme mani`re que ode45. Le prototype dappel est le suie e vant.
>> [t, y] = ode45(fonctionDiff,[vecteur temps],[vecteur cond. initiales])

Les lments de cet appel sont rsums au tableau 8. ee e e

46

Il est donc ncessaire dcrire un chier fonction contenant lexpression numrique e e e des drives avant dappeler ode45. Par exemple, on veut rsoudre le syst`me e e e e dquations direntielles suivant : e e dx1 = asin(x(1)) + cos(x(2)) dt dx2 = cos(x(1)) + bsin(x(2)) dt Avec les conditions initiales x1 (0) = 0 et x2 (0) = 1 pour une dure de 10 units e e de temps. a et b sont des param`tres. La fonction fonctionDi serait la suivante : e
% fonctionDiff.m function dxdt = fonctionDiff(t,x) % param`tres e a = 1; b = 0.5; % quations diffrentielles e e dxdt(1) = a*sin(x(1)) + cos(x(2)); dxdt(2) = cos(x(1)) + b*sin(x(2)); % vecteur colonne dxdt = [dxdt(1);dxdt(2)];

et lappel ` ode45 (normalement fait dans un SCRIPT) : a


>> [t,y] = ode45(fonctionDiff,[0 10],[0;1]);

Regardons maintenant les sorties t (un vecteur colonne de 69 lments) et y ee (une matrice de 69 lignes et de 2 colonnes, soient x1 et x2 ) :
>> whos Name Size Bytes Class t 69x1 552 double array y 69x2 1104 double array Grand total is 207 elements using 1656 bytes

Pour tracer les graphiques, on pourrait utiliser le code suivant :


figure(1) subplot(2,1,1) plot(t,y(:,1)) % y(:,1) signifie la premi`re colonne de y e subplot(2,1,2) plot(t,y(:,2)) % y(:,2) signifie la deuxi`me colonne de y e

47

Exercices

22. Programmez un chier SCRIPT et un chier FUNCTION qui permet de rsoudre le syst`me dquations direntielles non-linaire suivant : e e e e e 5 1 dCA (t) 2 = 0.5714 (10 CA (t)) ( ) CA (t) ( ) CA (t) dt 6 6 dCB (t) 5 5 = 0.5714 CB (t) + ( ) Ca ( ) CB (t) dt 6 3 Avec CA (0) = 5 mol/L et CA (0) = 0 mol/L. Faites tracez les courbes de CA (t) et CB (t) en fonction du temps pour une priode de 10 units de temps sur deux e e graphiques dirents (sur une mme gure). e e

48

7
7.1

Rfrences ee
Rfrences gnrales ee e e

Il existe beaucoup de livres sur le march sur lutilisation et la programmation e avec MATLAB. Deux sont tr`s intressants et tr`s complets : e e e Duane Hanselman et Bruce Littleeld, Mastering MATLAB 6- A Comprehensive Tutorial and Reference, Prentice-Hall, Upper Saddle (NJ), 2001. E.B. Magrab et.al., An Engineering Guide to MATLAB, Prentice-Hall, Upper Saddle (NJ), 2000. Il faut noter que la documentation compl`te de MATLAB (en incluant tous les e toolboxes se trouvent sur le site de Mathworks (www.mathworks.com)

7.2

Rfrences spciques au gnie chimique ee e e

Ici encore, il existe une beaucoup de livres et de documentation sur le WEB. Quelquesuns des plus utiliss sont les suivants : e Alkis Constantinides et Navid Mostou, Numerical Methods for Chemical Engineers with MATLAB Applications, Prentice Hall International Series in the Physical and Chemical Engineering Sciences, Upper Saddle (NJ), 1999. B. Wayne Bequette, Process Dynamics - Modeling, Analysis, and Simulation, Prentice Hall International Series in the Physical and Chemical Engineering Sciences, Upper Saddle (NJ), 1998.

7.3

Notes

Il existe plusieurs toolboxes de MATLAB aux usages tr`s spciques. Beaucoup e e sont relis au contrle et seront introduits, lorsque ncessaire, dans le cours de e o e commande. Le toolbox optimization est aussi tr`s utile en gnie chimique et e e son utilisation est traite dans les livres de la section 7.1. Finalement, certains e probl`mes de transfert peuvent tre solutionns ` laide du PDE toolbox. Dans e e e a les cours concerns, ces outils peuvent aider ` valider les rsultats obtenus ` e a e a laide des techniques enseignes dans ces cours. Il est toujours possible dobtenir e la liste des fonctions disponible dans un toolbox avec la commande :
>> help nom_toolbox

Certains toolbox nalement, poss`dent des interfaces usagers et des dmonstrations e e ` qui facilitent grandement leur apprentissage. A condition de fouiller un peu !

49

Vous aimerez peut-être aussi