Vous êtes sur la page 1sur 68

Table des matières

I PROGRAMMATION SOUS MATLAB 1

1 Introduction à MATLAB 3
1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Utilisation de MATLAB . . . . . . . . . . . . . . . . . . . . . . . 5
1.3 Arithmétique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3.1 Nombres réels . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3.2 Ordre des calculs . . . . . . . . . . . . . . . . . . . . . . . 8
1.4 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4.1 Séquences des calculs . . . . . . . . . . . . . . . . . . . . . 9
1.5 Fonctions mathématiques . . . . . . . . . . . . . . . . . . . . . . 10
1.6 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2 Programmation en MATLAB 13
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2 Vecteurs et matrices . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.3 Boucles for et while . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.3.1 Boucles for . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.3.2 Boucles while . . . . . . . . . . . . . . . . . . . . . . . . 20
2.4 Boucles if-then-else . . . . . . . . . . . . . . . . . . . . . . . . 20
2.5 Boucles switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.6 Fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.7 Graphes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.7.1 Graphes 2D . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.7.2 Graphes 3D . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.8 Import et export des données . . . . . . . . . . . . . . . . . . . . 30
2.8.1 Les commandes load et save . . . . . . . . . . . . . . . . 31
2.8.2 Autres fonctions input-output . . . . . . . . . . . . . . . . 32
2.9 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

i
ii

3 MATLAB et Analyse numérique 39


3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.2 Polynômes et interpolation . . . . . . . . . . . . . . . . . . . . . 39
3.2.1 Évaluation d’un polynôme . . . . . . . . . . . . . . . . . . 39
3.2.2 Interpolation . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.3 Intégration et dérivation . . . . . . . . . . . . . . . . . . . . . . . 42
3.4 Équations non linéaires . . . . . . . . . . . . . . . . . . . . . . . 43
3.4.1 Équations algébriques . . . . . . . . . . . . . . . . . . . . 43
3.4.2 Équations différentielles . . . . . . . . . . . . . . . . . . . 44
3.5 Résolution numérique d’équations différentielles . . . . . . . . . . 44
3.5.1 Équations différentielles ordinaires(EDO) . . . . . . . . . 44
3.5.2 Équations aux dérivées partielles(EDP) . . . . . . . . . . 45
3.6 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

4 Cellules et structures 49
4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.2 Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.3 Les cellules ( Cell Array) . . . . . . . . . . . . . . . . . . . . . . . 51

5 Résumé des commandes MATLAB 53


5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.2 Gestions des commandes et des fonctions . . . . . . . . . . . . . 53
5.3 Gestions des variables et de l’espace de travail . . . . . . . . . . . 53
5.4 Commandes système . . . . . . . . . . . . . . . . . . . . . . . . . 54
5.5 Fenêtre de commandes MATLAB . . . . . . . . . . . . . . . . . . 54
5.6 Variables prédéfinies . . . . . . . . . . . . . . . . . . . . . . . . . 54
5.7 Durée et Date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
5.8 Matrices prédéfinies . . . . . . . . . . . . . . . . . . . . . . . . . 55
5.9 Instructions de contrôle . . . . . . . . . . . . . . . . . . . . . . . 55
5.10 Instructions spécifiques . . . . . . . . . . . . . . . . . . . . . . . . 56
5.11 Fonctions mathématiques élémentaires . . . . . . . . . . . . . . . 56
5.12 Polynômes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
5.13 Analyse de données par colonne . . . . . . . . . . . . . . . . . . . 57
5.14 Différences finies, interpolation et intégration . . . . . . . . . . . 57
5.15 Équations non linéaires et optimisation . . . . . . . . . . . . . . . 58
5.16 Graphiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Table des figures

1.1 Fonctionnalités de MATLAB . . . . . . . . . . . . . . . . . . . . 4


1.2 Bureau de MATLAB. . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3 Espace de travail de MATLAB. . . . . . . . . . . . . . . . . . . . 9

2.1 Ouvrir, sauvegarder et exécuter un fichier MATLAB. . . . . . . . 13


2.2 Fonctions de MATLAB. . . . . . . . . . . . . . . . . . . . . . . . 22
2.3 Tracer plusieurs graphes sur la même fenêtre. . . . . . . . . . . . 26
2.4 Échelle semi-logarithmique pour y. . . . . . . . . . . . . . . . . . 28
2.5 Tracer un graphe en 3D. . . . . . . . . . . . . . . . . . . . . . . . 29
2.6 Surface z = x2 + y 2 . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.7 Fonction contour et contour3. . . . . . . . . . . . . . . . . . . . 30
2.8 Gradients et niveaux des surfaces. . . . . . . . . . . . . . . . . . 31

3.1 Le polynôme d’interpolation de degré 4. . . . . . . . . . . . . . . 41


3.2 Distribution de la température dans le mur. . . . . . . . . . . . . 47

4.1 Vecteurs multidimensionnels. . . . . . . . . . . . . . . . . . . . . 49

iii
iv
Liste des tableaux

2.1 Différents types de marqueurs et couleurs. . . . . . . . . . . . . . 27


2.2 Les commandes d’entrée-sortie et les accès aux fichiers. . . . . . . 31
2.3 Constantes a et b pour différentes espèces. . . . . . . . . . . . . . 37

5.1 Gestions des commandes et des fonctions . . . . . . . . . . . . . 53


5.2 Gestions des variables et de l’espace de travail . . . . . . . . . . . 53
5.3 Commandes système. . . . . . . . . . . . . . . . . . . . . . . . . . 54
5.4 Fenêtre de commandes MATLAB . . . . . . . . . . . . . . . . . . 54
5.5 Variables prédéfinies . . . . . . . . . . . . . . . . . . . . . . . . . 54
5.6 Durée et Date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
5.7 Matrices prédéfinies . . . . . . . . . . . . . . . . . . . . . . . . . 55
5.8 Instructions de contrôle . . . . . . . . . . . . . . . . . . . . . . . 55
5.9 Instructions spécifiques . . . . . . . . . . . . . . . . . . . . . . . . 56
5.10 Fonctions mathématiques élémentaires . . . . . . . . . . . . . . . 56
5.11 Polynômes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
5.12 Analyse de données par colonne . . . . . . . . . . . . . . . . . . . 57
5.13 Différences finies, interpolation et intégration . . . . . . . . . . . 57
5.14 Équations non linéaires et optimisation . . . . . . . . . . . . . . . 58
5.15 Graphiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

v
vi
Première partie

PROGRAMMATION SOUS
MATLAB

1
Chapitre

1
Introduction à MAT-
LAB

1.1 Introduction
M ATLAB est un logiciel commercial de calcul scientifique et de visualisation.
Sa terminologie est inspirée de MATrix ou Matrice et LABoratory ou Labo-
ratoire. MATLAB traite plusieurs domaines de la physique mathématique et de
l’engineering.

MATLAB a été développé par Cleve Moler (Université de New Mexico à la fin
de l’année 1970 pour permettre à ces étudiants d’accéder à des routines dans
les packages LINPACK et EISPACK sans être besoin d’écrire des programmes
en Fortran. Cette première version contient seulement 80 fonctions. Les calculs
numériques se feront de façon plus facile (simple). Plusieurs obstacles ont été
supprimés. Les variables, vecteurs ou matrices ne sont pas déclarés au début du
programme et sont manipulés selon les lois mathématiques. En 1984 Cleve a
fondé avec ces collègues une compagnie appelée MathWorks 1 pour commercia-
liser MATLAB [3]. En 2000, MATLAB a été réécrit pour utiliser les nouvelles
bibliothèques BLAS et LAPACK [4].
Il est écrit principalement en langage C et C++. Si on parle de ces qualités, on
peut dire que c’est le meilleur langage pour les ingénieurs, car il englobe pas
mal de fonctions. A part cela, le seul problème qu’on rencontre des fois est qu’il
est plus au moins lent que le langage C, si on considère le temps d’exécution des
programmes utilisant des boucles [5].
Son utilisation peut être résumée dans la Figure 1.1.

MATLAB possède les particularités suivantes par rapport à d’autres langages :


— la programmation facile,
— la continuité parmi les valeurs entières, réelles et complexes,
— la gamme étendue des nombres et leurs précisions,
— la bibliothèque mathématique très compréhensive,
— l’outil graphique qui inclus les fonctions d’interface graphique et les utili-
taires,
— la possibilité de liaison avec les autres langages classiques de programma-
tions (C ou Fortran).
Dans MATLAB, aucune déclaration n’est à effectuer sur les nombres. En effet,
il n’existe pas de distinction entre les nombres entiers, les nombres réels, les
1. The MathWorks(voir le site www.mathworks.com)

3
4 CHAPITRE 1. INTRODUCTION À MATLAB

Figure 1.1 – Fonctionnalités de MATLAB

nombres complexes et la simple ou double précision. Cette caractéristique rend


le mode de programmation très facile et très rapide.
La bibliothèque des fonctions mathématiques dans MATLAB donne des ana-
lyses mathématiques très simples. En effet, l’utilisateur peut exécuter dans le
mode commande n’importe quelle fonction mathématique se trouvant dans la
bibliothèque sans avoir à recourir à la programmation.
Pour l’interface graphique, des représentations scientifiques et même artistiques
des objets peuvent être créées sur l’écran en utilisant les expressions mathé-
matiques. Les graphiques sur MATLAB sont simples et attirent l’attention des
utilisateurs, vu les possibilités importantes offertes par ce logiciel.
MATLAB comprend aussi un ensemble d’outils spécifiques à des domaines, ap-
pelés Toolboxes (ou Boîtes à Outils). Indispensables à la plupart des utilisateurs,
les Boîtes à Outils sont des collections de fonctions qui étendent l’environnement
MATLAB pour résoudre des catégories spécifiques de problèmes.
Une matrice est un vecteur de nombres organisé sous forme de n lignes et m

colonnes. Un exemple est la matrice (n × m = 2 × 3) suivante :


1.2. UTILISATION DE MATLAB 5

 
1 2 3
A= .
4 5 6

La localisation de chaque élément de la matrice peut être faite utilisant des in-
dices de ligne et colonne. Dans cet exemple, on aura

A ( 1 , 1 ) = 1, A ( 1 , 2 ) = 2, A ( 1 , 3 ) = 3, A ( 2 , 1 ) = 4,
A ( 2 , 2 ) = 5 , A ( 2 ,3 ) = 6.

Le premier indice identifie le nombre de la ligne, le second est le nombre de


la colonne.
L’ordinateur est nécessaire parcequ’il nous permet de faire plusieurs calculs rapi-
dement, donc c’est efficace pour des données numériques sous forme de vecteurs
ou de matrices.

Pour réussir des applications de MATLAB, il faut [6] :


— apprendre les lois exactes pour écrire sous MATLAB et savoir utiliser les
fonctions de MATLAB,
— connaître les mathématiques associés au problème que vous vouliez ré-
soudre,
— développer un plan logique (algorithme) pour résoudre un problème par-
ticulier.
Ce chapitre vous permet à apprendre quelques lois fondamentales de MATLAB.
Avec l’expérience, vous serrez capable à concevoir, développer, et implémenter
des outils de calculs et de graphiques pour des problèmes d’engineering.

1.2 Utilisation de MATLAB

P our démarrer MATLAB, double cliquer sur l’icône de MATLAB sur votre
bureau. La fenêtre suivante apparaisse (Figure 1.2).
L’une parmi plusieurs choses que vous allez aimer dans MATLAB (et qui le
différencie par rapport à d’autres langage comme C++ et FORTRAN ) est son
utilisation d’une façon alternative. Cela signifie que vous pouvez taper quelques
commandes dans la fenêtre de commande (command window) pour obtenir des
résultats rapidement.
Quand on appuie sur la touche entrée (ou return) dans la fenêtre de com-
mande, tout ce qui est écrit après le prompt est interprété 2 . MATLAB vérifie
d’abord que ce qui a été écrit correspond soit à des variables déjà définies soit à
des programmes ou des commandes MATLAB. Si ce n’est pas le cas, MATLAB
retourne un message d’erreur. Autrement, la commande est exécutée et une sor-
tie est éventuellement affichée. Dans tous les cas, le système revient ensuite au
prompt pour signaler qu’il est prêt à recevoir de nouvelles commandes.

2. Ainsi un programme MATLAB n’a pas besoin d’être compilé contrairement à d’autres
langages comme le Fortran ou le C.
6 CHAPITRE 1. INTRODUCTION À MATLAB

Figure 1.2 – Bureau de MATLAB.

1.3 Arithmétique

Maintenant, on va examiner si MATLAB peut faire les calculs arithmétique


correctement.
taper 2 + 3 dans la fenêtre de commande (command window) suivi de ≺ Entrée
 comme suit :

>> 3 + 2 ≺ Entrée 

Les commandes sont prises en compte seulement si vous tapez ≺ Entrée . La


réponse dans ce cas est bien sûr 5. Ici, il faut noter que lorsque l’utilisateur ne
fixe pas de variable de sortie, MATLAB place le résultat d’une opération dans
ans. Après essayer

>> 5 - 2 ≺ Entrée 
>> 3 * 4 ≺ Entrée 
>> 5 / 2 ≺ Entrée 

>> 2 3 ≺ Entrée 
>> 2 \ 5 ≺ Entrée 

Les symboles *, /, et ∧ désignent la multiplication , la division et l’exponentia-


tion respectivement. La dernière commande signifie que le dénominateur est à
gauche (2) et le numérateur à droite (5). Donc elle est équivalente à 5 / 2.
Maintenant entrer les commandes suivantes :

>> 3 .* 4 ≺ Entrée 
1.3. ARITHMÉTIQUE 7

>> 5 ./ 2 ≺ Entrée 
>> 2 .∧ 3 ≺ Entrée 

Un point devant ces opérations arithmétiques n’a pas changer les résultats parce
que ces des nombres. Mais les résultats changent lorsque ces nombres sont rem-
placés par des vecteurs (nous allons voir ça dans les prochaines sections).
Une ligne avec >> est appelée ligne de commande. Vous pouvez utiliser ↑ pour
éditer les commandes qui ont été tapées avant.
Qu’est vous pensez que MATLAB va donner comme résultat de 0 / 1, 1 /
0 et 0 / 0. Une division par zéro donne le résultat Inf ou ∞ (infinity). Par
ailleurs le résultat NaN (Not a Number) est obtenu lorsque on a 0 / 0.

1.3.1 Nombres réels

O n va faire quelques expériences en MATLAB pour illustrer la manière dont


un ordinateur traite les nombres réels. Les résultats de nos calculs dépendent
principalement du fonctionnement interne de l’ordinateur, et seulement à un
degré moindre du langage de programmation. Considérons le nombre a = 1/6.
Entrons au clavier le quotient 1/6 après le prompt (représenté par le symbole
>>). Nous obtenons :

>> 1/6 ≺ Entrée 


ans =
0.1667

qui est un nombre avec quatre décimales. On peut s’étonner que ce réel ne soit
représenté qu’avec quatre décimales alors que son représentation interne utilise
16 décimales. Les nombres réels sont arrondis par l’ordinateur. Cela signifie
que seul un nombre fixe de décimales est renvoyé, et que la dernière décimale
affichée est augmentée d’une unité dès lors que la première décimale négligée
est supérieure ou égale à 5. Dans MATLAB, un même nombre peut être affiché
différemment selon le format. Par exemple, pour 1/6, voici quelques formats de
sortie possibles en MATLAB :

— format short donne 0.1667,


— format short e donne 1.6667e-001
— format long donne 0.166666666666667
— format long e donne 1.666666666666667e-001

Les plus petits et plus grands nombres réels positifs dans MATLAB sont res-
pectivement donnés par

— realmin = 2.225073858507201 . 10−308 ,


— realmax = 1.797693134862316 . 10+308 .

Un nombre positif plus petit que realmin produit un message d’erreur appelé
underflow et est traité soit de manière particulière, soit comme s’il était nul.
8 CHAPITRE 1. INTRODUCTION À MATLAB

Un nombre positif plus grand que realmax produit un message d’erreur appelé
overflow et est remplacé par la variable Inf (qui est la représentation de +∞
dans l’ordinateur).

1.3.2 Ordre des calculs

C e problème représente une source importante d’erreurs et difficile à détecter.


Par exemple les commandes 3+4/5 et (3+4)/5 sont différentes, la première est
4 3+4
3+ et la dernière . Les parenthèses ont été utilisées pour forcer MAT-
5 5
LAB à évaluer premièrement l’expression (3+4) et après le résultat est divisé
sur 5.

- Exemple
b+c a
Déterminer les valeurs des expressions a et b− , où a = 2, b = 3,
c − d2 c+d
b+
b
c = −4 et d = −3.

>> a = 2 ; b = 3 ; c = - 4 ; d = - 3 ; ≺ Entrée 
>> a * ( b + c ) / ( c - d∧ 2) ≺ Entrée 
ans =
1.5385e − 001

>> b - a / ( b + ( c + d ) / b ) ≺ Entrée 
ans =
−8.8818e − 016

Pour plus d’informations taper : help precedence.

1.4 Variables
Les variables définies par l’utilisateur sont rangées dans l’espace mémoire de
MATLAB (espace de travail ), ces variables sont dites globales. Le "Workspace"
(Figure 1.3) permet d’observer les variables existantes. Les commandes who ou
whos permettent d’obtenir les mêmes informations.
Maintenant, on va affecter des valeurs à des variables pour faire des opérations
arithmétiques avec ces variables. Premièrement entrer la commande a = 5.

>> a = 5 ≺ Entrée 
1.4. VARIABLES 9

Figure 1.3 – Espace de travail de MATLAB.

a est une variable qui a reçu la valeur de 5. Maintenant, essayer d’entrer la


commande a = a + 3 suivi d’une autre ligne de commande a = a × 5. Est ce
vous êtes d’accords de la valeur finale de a = 40 ?.
Maintenant essayer la commande

>> b = 4 ; ≺ Entrée 

Notons au passage que Le point-virgule ici, empêche l’affichage de b à l’écran,


ce qui permettra éventuellement des programmes plus rapides. La commande
disp(variable) affiche simplement la variable (ce qui est écrit entre crochets).
On peut aussi utiliser disp pour afficher des messages (ex. disp(’La masse
volumique =’). Pour afficher un message et une valeur sur la même ligne, uti-
liser les commandes suivantes :

>> x = 7; y = 3; ≺ Entrée 
>> z = x + y; disp ( [ ’La somme z = ’, num2str ( z ) ] ) ; ≺ Entrée


Vous pouvez afficher utilisant la fonction fprintf comme suit :


>> fprintf(’La somme z= % 4.2f n ’,z); ≺ Entrée 

1.4.1 Séquences des calculs

C alculer le périmètre p et la surface A du triangle de faces a,b et c selon les


formules suivantes :
p p
p=a+b+c ; s= ; A = s(s − a)(s − b)(s − c)
2
Dont le code est le suivant :

a = input ( ’Entrer la valeur de a : ’ ) ;


10 CHAPITRE 1. INTRODUCTION À MATLAB

b = input ( ’ Entrer la valeur de b : ’ ) ;


c = input ( ’ Entrer la valeur de c : ’ ) ;
P = a + b + c;
s = P/2 ;
A = sqrt ( s * ( s - a ) * ( s - b ) * ( s - c ) );
disp ( [ ’Le périmètre P = ’, num2str ( P ) ] ) ;
disp ( [ ’La surface A = ’, num2str ( A ) ] ) ;

1.5 Fonctions mathématiques


MATLAB a tous les fonctions mathématiques qu’on peut les trouver sur une
calculatrice scientifique comme sin, cos et log. Tapez les commandes suivantes :

>> sqrt(pi) ≺ Entrée 


>> exp(pi) ≺ Entrée 
>> log(pi) ≺ Entrée 
>> date ≺ Entrée 
>> calendar ≺ Entrée 

La commande help suivie du nom de la fonction permet d’avoir des informa-


tions à propos de n’importe quelle fonction intégrée avec MATLAB.

>> help NomDeFonction ≺ Entrée 

1.6 Exercices
Ô EXERCICE 01
— quels sont parmi les nombres suivants qui ne sont pas acceptés par
MATLAB : 9,87 : .0 : 25.82 : 3.57e2 : 3.57e2.2 : 2.3*e+3 : 2.3*e-3
— quels sont parmi les variables suivantes qui ne sont pas acceptées par
MATLAB : a2 : a.2 : 2a : ’a’b : ab : maX : a a : a− a : a*2
— Supposant que x = 2 et y = 5. Utiliser MATLAB pour calculer :
yx3 3x x5 1
, , 5 et (1 − 4 )−1 .
x − y 2y x − 1 x
b b
— Traduire les expressions suivantes en MATLAB. a + : a + :
c c+d
b
a+ 3 5
c + d : a 21 : ab+c : abc : (ab )c : a − a + a .
b 3 a+5
a+
c−d
Ô EXERCICE 02
Traduire ce qui suit en commandes MATLAB.
— Ajouter 1 à a et stocker le résultat dans a,
— Calculer a3 , ajouter b à ce résultat et stocker le résultat dans a,
1.6. EXERCICES 11

— a reçoit la plus grande valeur de b et c,


— Diviser la somme de a et b sur le produit de c et d, et stocker le
résultat dans x.

Ô EXERCICE 03
1. Quel est l’erreur dans les commandes suivantes ?
— n+1 = n,
— Fahrenheit temp = 9*C/5+32,
— 2=a.

−b + b2 − 4a.c
2. Écrire des commandes qui calculent x = avec a = 2,
2.a
b = −10 et c = 12.
3. Calculer le volume d’un cylindre sachant que r = 8m et L = 15m.

Ô EXERCICE 04
Calculer la pression du chlore Cl2 utilisant les équations d’état suivantes :
nRT nRT an2
P = (gaz parfait) et P = − 2 (van der Waals). Sachant
V V − nb V
an2
que le terme nb est une correction due au volume des molécules et 2
V
est une correction due aux interactions moléculaires. Quelle est la cause
de la différence de pression ?.
données : n = 1 mol, V = 22.41 L, T = 273.2 K, a = 6.49 et b = 0.0562.
12 CHAPITRE 1. INTRODUCTION À MATLAB
Chapitre

2
Programmation en
MATLAB

2.1 Introduction
Un script (fichier) MATLAB est composé d’une suite d’instructions, toutes
séparées par une virgule ou un point virgule. Comme tout langage, MATLAB
possède aussi un certain nombre d’instructions syntaxiques (boucles simples,
conditionnelles, etc...) et des commandes élémentaires (lecture, écriture, etc...).
Dès que le calcul à effectuer implique un enchaînement de commandes un peu
compliqué, il vaut mieux écrire ces dernières dans un fichier. Par convention un
fichier contenant des commandes MATLAB porte un nom avec le suffixe .m et
s’appelle pour cette raison un M-file ou encore script. On utilisera l’éditeur
intégré au logiciel en cliquant sur New pour ouvrir un nouveau fichier ou bien
sur Open pour ouvrir un fichier exixtant (Figure 2.1). Une fois le fichier enre-
gistré sous un nom valide, on peut le sauvegarder en cliquant sur Save et en
fin l’exécuter en tapant son nom dans la fenêtre de commande ou en cliquant
sur F5 ou bien en cliquant sur Run. Les M-file seront créés dans le répertoire
courant, accessible depuis cette fenêtre.

Figure 2.1 – Ouvrir, sauvegarder et exécuter un fichier MATLAB.

— Exemple :
Créer dans le répertoire courant un M-file en cliquant sur l’icone New
Script et taper les instructions suivantes :
a = 2 ;
b = 3 ;
somme = a + b ;
Utiliser Save as pour enregistrer ce fichier sous le nom de lasomme.m.
cliquer sur Run ou F5 pour exécuter ce fichier.

Habituellement, on utilise les fichiers SCRIPT afin de :

13
14 CHAPITRE 2. PROGRAMMATION EN MATLAB

— Initialiser le système (fonctions clear et clc),


— Déclarer les variables,
— Effectuer les opérations algébriques,
— Appeler les fonctions,
— Tracer les figures.
Notant que la fonction clear sert à supprimer tous les variables dans l’espace de
travail (work space) et la fonction clc supprime toutes les commandes écrites
avant.
Le type de donnée privilégié sous MATLAB est les tableaux à une ou deux di-
mensions, qui correspondent aux vecteurs et matrices utilisés en mathématiques
et qui sont aussi utilisés pour la représentation graphique.

2.2 Vecteurs et matrices


Les variables comme a et b vu précédemment sont des scalaires. MATLAB
utilise aussi les vecteurs et les matrices.
Pour définir une matrice, on utilise les symboles ’[ ]’ pour délimiter le début
et la fin des éléments, l’espace (ou la virgule ’,’ ) pour séparer les valeurs sur
une ligne et le symbole ’;’ pour délimiter les lignes. Ainsi la commande :

>> A = [1 2 3 ; 4 5 6 ] ≺ Entrée 
donne
A=
1 2 3
4 5 6
Cette matrice a 2 lignes et 3 colonnes. On peut appeler l’élément de la deuxième
ligne et la première colonne par :

>> A ( 2 , 1 ) ≺ Entrée 
ans =
4

Les sous matrices peuvent être aussi appelées par :

>> A ( 2 , 2 : 3 ) ≺ Entrée 
ans =
5 6

Éléments de la deuxième et troisième colonne dans la deuxième ligne. ’ :’ sans


nombre peut être utilisée pour indiquer toutes les lignes ou toutes les colonnes :

>> A ( : , 1 ) ≺ Entrée 
ans =
1
4
2.2. VECTEURS ET MATRICES 15

Ils ya plusieurs commandes pour entrer des types spéciales de matrices. Par
exemple le vecteur v :

>> v = 2 : 0.5 : 4 ≺ Entrée 


v=
2.000 2.500 3.000 3.500 4.000

v est un vecteur ligne contenant cinq éléments de 2 à 4 avec un incrément


de 0.5. Un vecteur colonne peut être obtenu facilement en utilisant la transposé
du vecteur v (v’) :

>> v’ ≺ Entrée 
ans =
2.000
2.500
3.000
3.500
4.000
La fonction linspace peut être utilisée pour initialiser un vecteur. Exemple
linspace(0,2,10) va créer un vecteur contenant 10 éléments entre 0 et 2.
Une matrice qui contient 1 peut être obtenue par :

>> B = ones ( 2 , 3 ) ≺ Entrée 


B=
1 1 1
1 1 1
Une matrice qui contient 0 peut être obtenue par :

>> B = zeros ( 2 , 3 ) ≺ Entrée 


B=
0 0 0
0 0 0

— Exemple
Entrer la matrice suivante utilisant la fonction zeros.
 
1 2 3 4
 2 0 0 0 
A=  3
.
0 0 0 
4 0 0 0
Dans le but de faire ça, on utilise les commandes suivantes

>> A = zeros( 4 );
>> r = 1:4;
16 CHAPITRE 2. PROGRAMMATION EN MATLAB

>> A ( : , 1 ) = r’; % Première colonne


>> A ( 1 , : ) = r % Première ligne

On peut définir les opérations arithmétiques sur les matrices. Voici un exemple
de la somme et du produit de deux matrices.

>> A = [ 1 2 ; 3 4 ]; B = [ -1 0 ; 1 2 ] ; C = A + B ≺ Entrée

C=
0 2
4 6
Le résultat est équivalent à

C=
A(1,1) + B(1,1) A(1,2) + B(1,2)
A(2,1) + B(2,1) A(2,2) + B(2,2)
>> C = A * B ≺ Entrée 
C=
1 4
1 8
m
X
Le résultat est équivalent à Cij = Aik Bkj . On peut multiplier les matrices
k=1
élément par élément :

>> C = A.* B ≺ Entrée 


C=
−1 0
3 8
Le résultat est équivalent à

C=
A(1,1) ∗ B(1,1) A(1,2) ∗ B(1,2)
A(2,1) ∗ B(2,1) A(2,2) ∗ B(2,2)
La même chose pour la division et l’exponentiation :

>> C = A./ B ≺ Entrée 


C=
−1 inf
3 2

>> A.∧ 2 ≺ Entrée 


ans =
1 4
9 16
>> A∧ 2 ≺ Entrée 
ans =
7 10
15 22
2.2. VECTEURS ET MATRICES 17

Si A est une matrice carrée de dimension n, son inverse est une matrice car-
rée de dimension n, notée A−1 , qui satisfait la relation AA−1 = A−1 A = I. On
peut obtenir A−1 avec la commande inv(A). Une matrice identité I de dimen-
sion 3 est obtenue utilisant :

>> I = eye ( 3 ) ≺ Entrée 


I=
1 0 0
0 1 0
0 0 1
MATLAB renvoie un message d’erreur quand on tente d’effectuer des opéra-
tions entre matrices de dimensions incompatibles. Par exemple :

>> A = [1 2 3; 4 5 6]; ≺ Entrée 


>> B = [7 8 9; 10 11 12]; ≺ Entrée 
>> C = [13 14; 15 16; 17 18]; ≺ Entrée 
>> A + C ≺ Entrée 
??? Error using ==> +
Matrix dimensions must agree.

La concaténation verticale consiste à mettre des matrices les une sur les autres.
Les différentes matrices doivent avoir le même nombre de colonnes. Par exemple :
>> A = [ 1 2 3 ]
A =
1 2 3
>> B = ones ( 2 , 3 )
B =
1 1 1
1 1 1
>> C = [ 3 2 1 ]
C =
3 2 1

>> X = [ A ; B ; C ]
X =
1 2 3
1 1 1
1 1 1
1 1 1
3 2 1
La concaténation horizontale consiste à mettre des matrices les unes à coté des
autres. Les différentes matrices doivent impérativement avoir le même nombre
de lignes. Considérons l’exemple précédent

>> X = [ A’ B’ C’ ]
X =
1 1 1 3
2 1 1 2
3 1 1 1
18 CHAPITRE 2. PROGRAMMATION EN MATLAB

Vous trouvez quelques fonctions des matrices en ANNEXE.


Les commandes tril(A) et triu(A), permettent d’extraire les parties triangu-
laires supérieure et inférieure de la matrice A.
La fonction find(CO) renvoie les indices dans le tableau A des éléments vérifiant
la condition CO. Par exemple

>> A = rand ( 1 , 5 ) % crée un vecteur ligne contenant 5 éléments


répartis aléatoirement entre 0 et 1.

>> find ( A > 0.5 ) % renvoie les indices des éléments de A qui sont
>0.5

>> find ( A ) % renvoie les indices des éléments de A différents de


0

>> find ( A == 0.2 ) % renvoie les indices des éléments de A égales


a 0.2.
La fonction size retourne deux valeurs ; le nombre de lignes et le nombre de
colonnes.

>> A = [2 3 4; 5 4 3];
>> b = size(A);
>> disp(b)
>> [ lignes , colonnes ] = size( A ) ;
>> disp ( [ lignes colonnes ] )

La solution d’un système linéaire A . X = B est donnée par X = inv(A)* B.

— Exemple
>> A = [1 0.5 ; 0.4 2] ; B = [ 1 ; 2 ] ; ≺ Entrée 
>> X = inv(A)* B ≺ Entrée 
X=
0.5556
0.8889

ou directement X = A \ B. Le résidu est donc r = A * X - B .

Des fois, la matrice A est tridiagonale. Pour la faire rentrée, on utilise la fonction
sparse comme suit

>> A = [ 1 2 0 0 ; 3 1 2 0 ; 0 3 1 2 ; 0 0 3 1 ] % tridiagonale
>> a = sparse ( 2 : n , 1 : n - 1 , 3, n , n ) ;
>> b = sparse ( 1 : n , 1 : n , 1 , n , n ) ;
>> c = sparse ( 1 : n - 1 , 2 : n , 2 , n , n ) ;
>> B = a + b + c ; B = full ( B )
2.3. BOUCLES FOR ET WHILE 19

Avec a, b et c sont
 
b1 c1 0 0
 a2 b2 c2 0 
A=
 
0 a3 b3 c3 
0 0 a4 b4

De façon générale c’est :

sparse(lignes, colonnes, entrées, m, n).

2.3 Boucles for et while


M ATLAB permet deux types de boucles, une boucle for (comparable à la
boucle Fortran do ou à la boucle C for) et une boucle while.

2.3.1 Boucles for

En général, la forme commune de la boucle for est


for index = j :k
commandes
end
ou
for index = j :m :k
commandes
end
ou bien sur la même ligne
for index = j :k, commandes, end

La boucle for est très utiles dans la plupart des applications. Elle répète des
instruction pendant que le compteur de la boucle balaie les valeurs rangées dans
un vecteur ligne.En MATLAB, il est parfois beaucoup plus efficace d’utiliser les
opérateurs algébriques usuels par exemple, le ’ .* ’.
Entrer les commandes suivantes :

>> for i = 1 : 5 ≺ Entrée 


disp ( i ) ≺ Entrée 
end ≺ Entrée 

Maintenant, taper

>> A = [ 1 2 3 ]; B = [ 4 5 6 ]; ≺ Entrée 
>> for i = 1 : 3 ≺ Entrée 
C ( i ) = A ( i ) * B ( i ) ≺ Entrée 
end ≺ Entrée 

Les trois dernières lignes peuvent être remplacées par une seule ligne : C =
A .* B.
20 CHAPITRE 2. PROGRAMMATION EN MATLAB

2.3.2 Boucles while

U ne boucle while permet de répéter une opération tant qu’une condition n’est
pas remplie.

while expression
commandes
end

— Exemple :

>> n = 0 ; somme=0; ≺ Entrée 


>> while somme < 100 ≺ Entrée 
n = n + 1 ; ≺ Entrée 
somme = somme + n ; ≺ Entrée 
end ≺ Entrée 

2.4 Boucles if-then-else


Ce type de structures de programmation est très utile pour vérifier des
conditions. Elles ont la forme générale suivante

if condition 1
instruction 1.1
instruction 1.2
...
elseif condition 2
instruction 2.1
instruction 2.2
...
else
instruction 1
instruction 2
end

où condition 1, condition 2, ... représentent des ensembles d’instructions, dont la


valeur est 0 ou 1 (faux ou vrai). La première condition ayant la valeur 1 entraîne
l’exécution de l’instruction correspondante. Si toutes les conditions sont fausses,
les instructions instruction 1, instruction 2, ... sont exécutées. Si la valeur de
condition k est zéro, les instructions instruction k.1, instruction k.2, ... ne sont
pas exécutées et l’interpréteur passe à la suite.
Les opérateurs logiques utilisés dans les conditions sont : and (&), or (|), not
( ˜ ). Les opérateurs de comparaison sont : supérieur à (>), supérieur ou
égal à (>=), inférieur à (<), inférieur ou égal à (<=), égal à (==),
différent de (˜=).
2.5. BOUCLES SWITCH 21

— Exemple

>> Re = input( ’ Entrer la valeur du nombre de Reynolds Re = ’


) ; ≺ Entrée 
>> if Re < 2300 ≺ Entrée 
disp ( ’ Le régime est laminaire ’ ); ≺ Entrée 
else ≺ Entrée 
disp ( ’ Le régime est turbulent ’ ); ≺ Entrée 
end ≺ Entrée 

D’autres expressions logiques plus compliquées peuvent être construites utilisant


les opérateurs logiques. Par exemple l’équation quadratique ax2 + bx + c = 0 a
une seule racine lorsque b2 − 4ac = 0 et a 6= 0. Cela peut être traduit par les
commandes suivantes :

>> a = input(’Entrer la valeur de a =’); ≺ Entrée 


>> b = input(’Entrer la valeur de b =’); ≺ Entrée 
>> c = input(’Entrer la valeur de c =’); ≺ Entrée 
>> if (b ∧ 2 - 4 * a * c == 0) & (a ˜ = 0) ≺ Entrée 
x = -b / (2*a) ≺ Entrée 
end ≺ Entrée 

2.5 Boucles switch


L es 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 est le
suivant :

switch ( CAS )
case CAS1
ACTION 1
case CAS2
ACTION 2
otherwise
ACTION 3
end

Par exemple, on veut un calcul pour déterminer l’exponentielle ou le logarithme


d’un nombre entré par l’utilisateur. Une manière simple de rendre le programme
interactif serait d’utiliser le script suivant :

operation = input ( ’ Opération : (1) exp ; (2) log ? ’ ) ;


nombre = input ( ’ Valeur = ’ ) ;
switch operation
22 CHAPITRE 2. PROGRAMMATION EN MATLAB

case 1
b = exp ( nombre )
case 2
b = log ( nombre )
otherwise
disp ( ’ mauvais choix – operation ’ )
end

2.6 Fonctions
L es fonctions communes de MATLAB peuvent être obtenues en tapant sur F1
(Figure 2.2).

Figure 2.2 – Fonctions de MATLAB.

De nouvelles fonctions peuvent être ajoutées à MATLAB par l’utilisateur. Dès


que la fonction nécessite plusieurs instructions, il vaut mieux la définir dans un
fichier à part à l’aide de l’éditeur de texte.
2.6. FONCTIONS 23

On peut écrire des fonctions MATLAB que l’on peut ensuite appeler depuis un
script. De manière générale, la syntaxe de définition d’une fonction externe est

function [y1 ,...,yn ] = nom de la fonction(x1 ,...,xm )

x1 ,....xm , les m arguments d’entrée (qui ne sont pas définis à l’intérieur de


la fonction) et y1 ,...,yn , les n arguments de sortie.
Prenons l’exemple de la fonction suivante :

function [ sortie ] = f ( entree)


sortie = 2 * entree + 1 ;

Cette fonction est sauvegardée par défaut dans le fichier f.m (le nom du fichier
porte obligatoirement le nom de la fonction). Maintenant, dans la fe-
nêtre de commande, taper

>> f(1)

Cette fonction peut être aussi appelée d’un script. Pour cela, on tape les ins-
tructions suivantes dans un script appelé script.m

clc ; clear ;
x0 = 0 ;
x1 = [1 2 3 4 5] ;
y1 = f ( x1 ) % appeler la fonction f

Pour connaître les arguments d’entrée passés à l’appel de la fonction f, on utilise


nargin

>> nargin( ’ f ’ ) ≺ Entrée 


ans =
1

De manière analogue pour les arguments de sortie, on utilise nargout.


Chaque fonction MATLAB dispose de ses propres variables locales, qui sont
disjointes de celles des autres fonctions et de celles de l’espace de travail. Ce-
pendant, si plusieurs fonctions (et éventuellement l’espace de travail) déclarent
une même variable comme global, alors elles partagent toutes une copie de
cette variable. Soit le script suivant

clc ; clear ;
global rho vis
rho = 1000 ; vis = 0.001 ;
u = [ 0.01 0.02 0.03 ] ;
RE = Reynolds ( u )

Qui fait appelle à la fonction Reynolds suivante qui calcule le nombre de Rey-
nolds pour différentes valeurs de la vitesse u.
24 CHAPITRE 2. PROGRAMMATION EN MATLAB

function y = Reynolds ( u )
global rho vis
d = 0.1 ; % d est une variable locale
y = rho * u * d / vis

Une fonction ne comportant qu’un petit nombre d’instruction peut être définie
directement dans la fenêtre de commandes de la manière suivante

>> f = inline ( ’ 2 * x ∧ 2 + 3 * x - 1 ’ )
f =
Inline function:
f ( x ) = 2 * x ∧ 2 + 3 * x - 1
>> f(2)
ans =
13

Pour trouver une racine d’une fonction d’une variable, la fonction fzero est
utilisée avec la syntaxe d’appel

x = fzero ( fun , x0 )

trouve un zéro près de x0, si x0 est un scalaire. La valeur x renvoyée par fzero
est près d’un point où la fonction fun (inline ou @fun pour un fichier MAT-
LAB)change de signe ou bien NaN si la recherche a échouée. Si x0 est un vecteur
à 2 composantes, fzero le comprend comme un intervalle tel que fun(x0(1))
et fun(x0(2)) sont de signes opposés. Si ce n’est pas le cas il y a une erreur.
Prenant la fonction précédente


>> f = inline ( ’ 2 * x 2 + 3 * x - 1 ’ )
>> x0 = fzero ( f , 0 )
x0 =
2.8078e − 001

Si c’est une fonction dans un fichier MATLAB. L’appel sera comme suit

>> x0 = fzero ( @f , 0 )

La fonction fminbnd cherche le minimum d’une fonction d’une seule variable


dans un intervalle donné. La syntaxe est

fminbnd ( @function , x1 , x2 )

Soit la fonction suivante

function y = fmin ( x )
y = 1 - x . * exp ( - x ) ;
2.7. GRAPHES 25

Le minimum de cette fonction entre 0 et 5 est

x = fminbnd (@fmin,0,5)

Si on a une fonction à plusieurs variables. La fonction fminsearch sera uti-


lisée avec la syntaxe suivante

fminsearch(@function, x0)

Avec x0 le vecteur initiale. Soit la fonction suivante

function y = fmins ( x )
y = 1 - x ( 1 ) . * exp ( - x( 1 ).∧ 2 - x ( 2 ).∧ 2 ) ;

L’appel est comme suit

fminsearch(@fmins, [0 , 0])
ans =
-0.7071 0.000

2.7 Graphes
Dans toutes les représentations graphiques, MATLAB se base sur des données
discrètes rangées dans des matrices ou des vecteurs colonnes. Par exemple, pour
représenter des courbes du type y = f( x ) ou des surfaces z = f( x , y ), les
données x, y, z doivent être des vecteurs colonnes (x et y) ou des matrices (z)
aux dimensions compatibles. Les fonctions graphiques principales sont données
dans le cinquième chapitre.

2.7.1 Graphes 2D

Un graphe 2D est tracé utilisant la fonction plot suivante


plot ( x , y )

trace le graphe du vecteur y en fonction du vecteur x de même taille. Soit


les commandes suivantes

plot ( x , sin ( x ) ) ;
plot ( [ 0 4 ] , [ 1 3 ] ) ;

On peut tracer plusieurs courbes sur le même graphe

plot ( x1 ,y1 ,x2 ,y2 ,x3 ,y3 ,...)

ou utilisant la fonction hold on


26 CHAPITRE 2. PROGRAMMATION EN MATLAB

plot ( x1 , y1 )
hold on
plot ( x2 , y2 )

On peut aussi tracer plusieurs graphes sur la même fenêtre utilisant la fonc-
tion subplot.

subplot(m, n, p)

divise la fenêtre en m × n graphes et p l’emplacement du graphe (Figure 2.3).

x = [ 0 1 2 3 4 ] ; y = x .∧ 2; z = x .∧ 2 + y . ∧
2 ;
subplot ( 2 , 2 , 1 )
plot ( x , y )
subplot ( 2 , 2 , 2 )
plot ( x , z )
subplot ( 2 , 2 , 3 )
plot ( y , z )
subplot ( 2 , 2 , 4 )
plot ( x , exp ( x ) )

L’instruction de dessin plot peut être complétée par des arguments optionnels

Figure 2.3 – Tracer plusieurs graphes sur la même fenêtre.

(couleur, type de trait, échelle sur les axes, etc...). La visualisation du résul-
tat s’effectue dans une fenêtre graphique (avec possibilité de zoom, de rotation,
d’impression). Les différents types de couleurs et de marqueurs sont regroupés
dans le tableau 2.1.
2.7. GRAPHES 27

Table 2.1 – Différents types de marqueurs et couleurs.

Type Valeurs Définitions


c cyan
’m’ magenta
’y’ jaune
Couleur ’r’ rouge
’g’ vert
’b’ bleu
’k’ noir
+ signe plus
’o’ cercle non rempli
’*’ astérisque
’s’ carré non rempli
Type de marqueur
’d’ diamant non rempli
’v’ triangle pointé vers le bas non rempli
’p’ pentagramme non rempli
’h’ hexagramme non rempli

Par exemple, la commande plot(x,y,’r+-’,’Linewidth’,2) crée une courbe


reliant les points (xi , yi ) (pour i = 1,...,n) tracée avec rouge et un + sur chaque
point i et de 2 points d’épaisseur.
La commande MATLAB pour utiliser l’échelle semi-logarithmique est semilogy
( x , y ) (échelle log10 pour y seulement) , où x et y sont des tableaux de même
taille. En écrivant grid on après la commande plot, on obtient un quadrillage
comme sur la Figure 2.4. Par exemple

x = 0 : 0.01 : 4 ;
semilogy ( x , exp ( x ) ), grid
28 CHAPITRE 2. PROGRAMMATION EN MATLAB

Figure 2.4 – Échelle semi-logarithmique pour y.

2.7.2 Graphes 3D

Les graphes 3D sont tracés utilisant la fonction plot3 (Figure 2.5)


t = 0 : pi / 50 : 10 * pi ;
plot3 ( t , exp ( - 0.02 * t ).* sin ( t ), exp( - 0.02 * t ).* cos
( t ) ;
xlabel ( ’ axe-x ’ ), ylabel ( ’ axe-y ’ ), zlabel ( ’ axe-z ’ )

Le code suivant, illustre comment on trace un graphe 3D (Figure 2.6) (z =


x2 + y 2 ) de type surface pour 0 ≤ x ≤ 5, 0 ≤ y ≤ 5.

[ x y ] = meshgrid (0 : 5 )
x =
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5

y =
0 0 0 0 0 0
1 1 1 1 1 1
2 2 2 2 2 2
2.7. GRAPHES 29

Figure 2.5 – Tracer un graphe en 3D.

3 3 3 3 3 3
4 4 4 4 4 4
5 5 5 5 5 5

z = x. ∧ 2 + y. ∧ 2 % générer les points de surface.


z =
0 1 4 9 16 25
1 2 5 10 17 26
4 5 8 13 20 29
9 10 13 18 25 34
16 17 20 25 32 41
25 26 29 34 41 50

La fonction contour peut être utilisée pour tracer les contours (Figure 2.7).

[ x y ] = meshgrid ( -2.1 :0.15 : 2.1 , -6 : 0.15 : 6); % maillage différent


de x et y
u = 80 * y.∧ 2 .* exp ( -x.∧ 2 - 0.3 * y. ∧ 2);
contour(u)
contou3(u)

Les vecteurs peuvent être visualisés utilisant la fonction quiver (Figure 2.8).

[ x y ] = meshgrid ( - 2 : .2 : 2 , - 2 : .2 : 2 ) ;
V = x. ∧ 2 + y ;
dx = 2 * x
dy = dx ; % dy de même taille que dx
dy ( : , : ) = 1 ; % tous les éléments de dy prennent la valeur de
30 CHAPITRE 2. PROGRAMMATION EN MATLAB

Figure 2.6 – Surface z = x2 + y 2 .

Figure 2.7 – Fonction contour et contour3.

1.
contour( x , y, V); hold on
quiver (x, y, dx, dy); hold off

2.8 Import et export des données


On peut avoir à lire des données numériques ou alphanumériques dans un fi-
chier, par exemple des données expérimentales ou des conditions initiales d’un
calcul. Inversement, on peut vouloir sauver le résultat d’un calcul, pour s’en
servir ultérieurement dans MATLAB ou dans un autre programme. Les com-
mandes qui seront utilisées sont regroupées dans le tableau 2.2. Les données
sont sauvegarder sous deux formats : texte et binaire. Dans le format texte,
les données sont codées en ASCII et peuvent être vues dans un éditeur de texte.
Par contre, sous format binaire, on ne peut pas les voir avec un éditeur de texte.
Le format binaire est plus efficace en terme de capacité de stockage [6].
2.8. IMPORT ET EXPORT DES DONNÉES 31

Figure 2.8 – Gradients et niveaux des surfaces.

Table 2.2 – Les commandes d’entrée-sortie et les accès aux fichiers.


dlmread(’NomDeFichier’,’Délimiteur’) Lecture du fichier
dlmwrite(’NomDeFichier’),M,’Délimiteur’) Ecriture de M dans le fichier
textread(’NomdeFichier’,’Format’) Lecture du fichier
fid=open(’NomdeFiechier’) Ouverture du fichier
fprintf(fid,’format’,données) Ecriture des données
close(fid) Ferméture

2.8.1 Les commandes load et save

L e meilleur moyen de sauvegarder les données entre des sessions de MATLAB


est d’utiliser la commande save. La commande suivante est utilisée pour sau-
vegarder la matrice A en format ASCII dans un fichier data.txt.

A =
1 2 3
4 5 6
save data.txt A -ascii

Ces données sont stockées sous la forme suivante

1.0000000e + 000 2.0000000e + 000 3.0000000e + 000


4.0000000e + 000 5.0000000e + 000 6.0000000e + 000
32 CHAPITRE 2. PROGRAMMATION EN MATLAB

Pour importer ces données, on utilise

A = load (’ data.txt ’ )

Maintenant pour les données binaires. On utilise la commande

save filename x y z

Cette commande sauvegarde x, y et z dans un fichier filename.mat.


La commande load filename importe les données x, y et z dans le fichier
filename

2.8.2 Autres fonctions input-output


M = dlmread(’NomDeFichier’,’Délimiteur’)

Lit des données numériques du fichier ASCII NomDeFichier, chaque nombre


est séparé du suivant par le caractère Délimiteur ou par un retour à la ligne. La
virgule et l’espace sont des délimiteurs par défaut.

[A,B,C,...] = textread(’NomDeFichier’,’format’)

Lit les variables avec le format spécifié jusqu’à épuisement du fichier. (Le nombre
de variables à lire et le nombre de données dans le fichier doivent correspondre.)

fid = fopen ( ’ NomDeFichier ’ ) % ouvre le fichier


A = fscanf ( fid , format )

[ A , nombre ] = fscanf ( fid , format , size )

Lit les données avec le format spécifié. Un format est une chaine de caractères
spécifiant en lecture le type de données à lire :

’% d’ pour un entier
’% f’ pour un réel
’% c’ pour un caractère.

On peut éventuellement spécifier le nombre maximal de données à lire avec


le paramètre size, et le paramètre de sortie nombre renvoie le nombre de don-
nées effectivement lues. Pour écrire des résultats sur l’écran la méthode la plus
simple et de taper le nom de la variable sans la faire suivre d’un point virgule.
Si on veut un format plus lisible, en particulier, afficher plusieurs variables sur
la même ligne, on peut utiliser la commande fprintf, comme dans l’exemple ci-
dessous

a=1.5;b=2;
fprintf(’a = %f et b = %d ’,a,b);
a = 1.5 et b = 2
2.9. EXERCICES 33

Ou dans un fichier

fprintf(’NomDeFichier’,’a = %f et b = %d ’,a,b);

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


syntaxe est :

>> xlsread classeur.xls

2.9 Exercices
Ô EXERCICE 01
1. Créer un vecteur ligne x = 4, 10, −1 et 0,
2. Créer un vecteur colonne y = −5.3, −2, 0.9 et 1,
3. Créer un vecteur ligne de coordonnées contenant les nombres de -5,-
4,...,4,5 et déterminer sa taille,
4. Créer un vecteur colonne de coordonnées contenant les nombres de
-500,- 499,...,499,500 et déterminer sa taille.

Ô EXERCICE 02

L’évolution d’une réaction d’ordre 1 en système fermé est donnée par


∂c
l’équation différentielle : = k c, La condition initiale est c ( t = 0 ) =
∂t
c0 . La solution de l’équation différentielle est : c ( t ) = c0 exp ( k t )
Écrire des instructions qui calculent la concentration en fonction du temps.
Données : k = 1, c0 = 1 ; t = 0 : 0.1 : 1 .

Ô EXERCICE 03

— Calculer le polynôme y = (x + 2)2 (x3 + 1) pour x = −1 : 0.1 : 1,


x2
— Calculer la fonction y = 3 pour x = 1 : 0.01 : 2,
x +1
 
xcosx
— Calculer la fonction y = sin pour x = 1 : 0.02 : 3.
x2 + 3x + 1

Ô EXERCICE 04

Une population est modélisée par la formule suivante :


197273000
P (t) =
1+ e−0.03134(t−1913.25)
avec t représente l’année. Écrire des commandes qui permettent le calcul
de la population chaque 10 ans de 1790 à 2000.
34 CHAPITRE 2. PROGRAMMATION EN MATLAB

Ô EXERCICE 05  
1 0 0 0
Soit la matrice A définie par : A= 0 1 0 0 . Exprimer A
1 1 1 1
en fonction de eye, ones et zeros.

Ô EXERCICE 06
 
1 7.3 −5.6 2
— Créer une matrice A =  1.4 8 −3 0  .,
−2 6.3 1 −2
— Extraire la deuxième ligne de A,
— Extraire la troisième colonne de A,
— Que font les instructions suivantes
B = A ’ ; B = diag ( A ) ; B = det ( A );
v = [ 3 , 5 , 7 , 12 ] ;
A ( v ) = A ( v ) + 0.01 ;
A ( v ) = abs ( A ( v ) );
3 * A ; cos ( A ) ; exp ( A );.

Ô EXERCICE 07  
1 2
Considérons les matrices suivantes A=I et B= . Compa-
3 4
rer les résultats des calculs suivants : A*B, A.*B, A/B, A./B, B*B et B−1 *B.
−1

Ô EXERCICE 08

Écrire des commandes qui stockent dans une matrice A une première co-
lonne contenant le vecteur x de 1 à 100 avec un pas de 10. Une deuxième
colonne contient log(x) et la troisième colonne contient exp(x).

Ô EXERCICE 09
Résoudre les systèmes d’équations suivants :
2a + c = 5 3a + 2c − d = 3
3a − 2c = 4 2a − 2c + 3d = 9
a−c−d=2

Ô EXERCICE 10

Donner les résultats des commandes suivantes pour n=4 :


n = input( ’Le nombre de termes ? ’ );
s = 0;
for k = 1 : n
s = s + 1/(k ∧ 2);
end;
disp ( sqrt ( 6 * s ) )
Réécrire ces commandes en utilisant les opérations sur les vecteurs et la
2.9. EXERCICES 35

fonction sum.

Ô EXERCICE 11
Écrire des commandes qui calculent
6
X
— La somme 2i ,
i=1
6
X
— La somme ij , avec j = 1, 2 et 3,
i=1
N  
Y 2
— Le produit 1+ , avec N = 10.
i=1
i

Ô EXERCICE 12
Considérons les vecteurs suivants x = 1 : 11, y = x2 et la matrice z = [ x ;
11
X 11
X 11
X
2 * ones ( 1 , size ( x , 2 ) ) ; y ]. Calculer x(i), y(i), z(1,i),
i=1 i=1 i=1
11
X 11
X
z(2,i) et z(3,i).
i=1 i=1

Ô EXERCICE 13
Calculer i, j et m du script suivant (à la main). Vérifier en l’exécutant.
v = [3 1 5];i = 1;
for j = v,i = i + 1;
if i == 3,i = i + 2;m = i + j,end
end

Ô EXERCICE 14

Construire une boucle de conditions if qui évalue la fonction suivante :

si x < 0;


 0,
si 0 ≤ x ≤ 1;

x,
f (x) =


 2 − x, si 1 ≤ x ≤ 2;
0, si x > 2;

Ô EXERCICE 15

Écrire un script qui calcule les racines de l’équation quadratique ax2 +


bx + c = 0.

Ô EXERCICE 16

Prédire les valeurs des variables après l’exécution des codes suivants.
36 CHAPITRE 2. PROGRAMMATION EN MATLAB

1. x = 2 ; y = 1 ;
if x > 2 ; y = x ; end
2. a = 1 ; b = 2 ;
if a == 1 ; b = a + 1 ; end
3. u = 1 ; v = 2 ; w = -2 ;
if (u˜ = 0) & (u < abs ( w ) )
u = u + w ;
else
u = u - v ;
end

Ô EXERCICE 17

x5 − 3
1. Écrire un script pour la fonction f (x) = √ ,
x2 + 1
2. Tester la fonction sur quelques valeurs (en ligne de commandes), par
exemple f(1) = -1.4142, f( 0 ) = - 3,
3. Tester les commandes nargin(’f’), nargout(’f’),
4. Que font les instructions suivantes
function z = f1 ( x , y )
if ( nargin == 1 )
z = 2 * x ;
elseif ( nargin == 2 )
z = x + y ;
end

Ô EXERCICE 18
Écrire un fichier function qui contient les équations de chute libre sui-
vantes

1 2
1. Cas sans résistance de l’air y = gt
2
g g
2. Cas avec résistance de l’air y = t − 2 (1 − e−kt )
k k
Données : t = 0 : 5 secondes, g = 9.81 m/s2 , k = 0.2.

Ô EXERCICE 19
Écrire un fichier function qui permet de calculer le volume et la surface
1
suivante : V = π 2 (a + b)(b − a)2 , A = π 2 (b2 − a2 ) à partir des arguments
4
a = 0.25 cm et b = 2 cm. Faire les modifications nécessaires lorsque a est
un vecteur ( 0.25 ≤ a ≤ 2 ).

Ô EXERCICE 20

Écrire un fichier function qui calcule la pression des espèces (tableau 2.3)
utilisant l’équation de van der Waals
2.9. EXERCICES 37

RT a
P = − 2
V −b V
Données : R = 0.08206 L.atm/(mol.K) ; T = 300 K ; et V = 20 L/mol.

Table 2.3 – Constantes a et b pour différentes espèces.

Gaz a(L2 − atm/mol2 ) b(L/mol)


Hélium, He 0.0341 0.0237
Hydrogène, H2 0.244 0.0266
Oxygène, O2 1.36 0.0318
Chlore, Cl2 6.49 0.0562
Dioxyde de carbone, CO2 3.59 0.0427

Ô EXERCICE 21

Écrire le programme MATLAB qui trace sur le même graphe ainsi que sur
des graphes différents les fonctions suivantes sur l’intervalle [ −1 1 ].
f1 (x) = xsin(1/x), f2 (x) = x∧ 3 et f3 (x) = x∧ 2
Ajouter le titre, les axes, la légende et la grille.

Ô EXERCICE 22
Soit les données expérimentales suivantes
Sur une même figure, faites tracez les graphiques suivants :

t (min) 1 2 3 4 5 6 7 8 9 10
CA mol/L 1 0.9 0.8 0.73 0.67 0.62 0.58 0.55 0.53 0.52

— CA en fonction du temps
— −dCA
dt en fonction de CA
— ln dt en fonction de lnCA
−dCA
sur un graphique loglog
Évaluer
 les dérivées numériquement (pour les points i=1...10) par :

−dCA −3CA1 + 4CA2 − CA3

dt i=1 2∆t
CA(i+1) − CA(i−1)

−dCA

 dt i=2...9 2∆t
−dCA CA8 − 4CA9 + 3CA10

dt i=10 2∆t

Ô EXERCICE 23
Le système d’équation suivant décrit le changement de concentration de
deux espèces dans un réacteur fermé.

dCA 5 1 2
= 0.5714(10 − CA ) − CA − CA ;
dt 6 6
38 CHAPITRE 2. PROGRAMMATION EN MATLAB

dCB 5 5
= −0.5714CB + CA − CB
dt 6 3
Avec CA (0) = 5 mol/l et CB (0) = 0 mol/l.

— résoudre ce système d’équations différentielles.


— Tracer les courbes de concentrations des espèces sur la même figure.

Ô EXERCICE 24
On veut tracer avec MATLAB la fonction
2
+0.5(x−y)2 ]
z(x, y) = e−0.5[x

pour x et y entre -4 et 4. A l’aide de deux boucles for imbriquées, cal-


culez la valeur de la fonction à chaque point du domaine (utilisez des
incréments de 0.05 dans les deux directions). Tracez ensuite la courbe
obtenue à l’aide de la fonction mesh(vecteurX, vecteurY, matriceZ).
Vérifiez l’appel à cette fonction en tapant help mesh à l’appel MATLAB.
Tracez ensuite les mêmes valeurs à l’aide des fonctions surf(vecteurX,
vecteurY, matriceZ) et contour((vecteurX, vecteurY, matriceZ).
Chapitre

3 MATLAB et Analyse
numérique

3.1 Introduction
A ce stade, vous pouvez écrire un programme MATLAB qui contient des opé-
rations arithmétiques, des vecteurs, des matrices, des boucles for et de décisions
if et également affiche les résultats. En engineering, souvent, on aura besoin de
méthodes numériques qui nous permettent de résoudre les problèmes d’inter-
polation, d’intégration numérique, et de résolution des équations différentielles
etc...

3.2 Polynômes et interpolation


3.2.1 Évaluation d’un polynôme

L es polynômes sont des fonctions très particulières. La commande polyval,


permet d’évaluer un polynômes en un ou plusieurs points. Ses arguments en
entrée sont un vecteur p et un vecteur x, où les composantes de p sont les coef-
ficients du polynôme rangés en ordre des degrés décroissants, de an à a0 , et les
composantes de x sont les points où le polynôme est évalué. Le résultat peut
être stocké dans un vecteur y en écrivant :

>> y = polyval ( p , x )

Par exemple, les valeurs de p(x) = x7 + 3x2 − 1, aux points équirépartis xk =


−1 + k/4 pour k = 0,...,8, peuvent être obtenus en procédant ainsi :

>> p = [1 0 0 0 0 3 0 -1]; x = [ -1 : 0.25 : 1 ] ;


>> y = polyval ( p , x )
y =
Columns 1 through 5:
1.00000 0.55402 -0.25781 -0.81256 -1.00000
Columns 6 through 9:
-0.81244 -0.24219 0.82098 3.00000

La commande roots donne une approximation des racines d’un polynôme et


ne nécessite que le vecteur p en entrée. Par exemple, on peut calculer les zéros
de p(x) = x3 − 6x2 + 11x − 6 en écrivant :

» p = [1 -6 11 -6]; format long;

39
40 CHAPITRE 3. MATLAB ET ANALYSE NUMÉRIQUE

» roots ( p )
ans =
3.00000000000000
2.00000000000000
1.00000000000000

La commande p = conv ( p1 , p2 ) donne les coefficients du polynôme ré-


sultant du produit de deux polynômes dont les coefficients sont contenus dans
les vecteurs p1 et p2 (la même chose pour la commande p = deconv ( p1 ,
p2 ) qui donne le rapport de convolution de deux polynômes) . Considérons par
exemple le produit des deux polynômes p1(x) = x4 − 1 et p2(x) = x3 − 1 :

» p1 = [ 1 0 0 0 -1 ];
» p2 = [ 1 0 0 -1 ] ;
» p = conv( p1 , p2 )
p =
1 0 0 -1 -1 0 0 1

3.2.2 Interpolation

D ans le domaine de l’analyse numérique des données, on a souvent besoin


d’établir un modèle mathématique liant plusieurs séries de données expérimen-
tales. L’interpolation polynomiale consiste à approcher la courbe liant les deux
séries de mesures par un polynôme. Les coefficients optimaux de ce polynôme
sont ceux qui minimisent la variance de l’erreur d’interpolation. Ce principe
(voir plus loin) est connu sous le nom de la méthode des moindres carrés. La
fonction polyfit retourne le polynôme de degré n permettant d’approcher la
courbe au sens des moindres carrés.
L’instruction c = polyfit ( x , y , n ) fournit également les coefficients du
polynôme d’interpolation. Soit le code suivant

x = [ -55 -25 5 35 65 ] ; y = [ -3.25 -3.2 -3.02 -3.32 -3.1 ] ;


format short e; c = polyfit ( x , y , 4 )
c =
8.2819e-08 -4.5267e-07 -3.4684e-04 3.7757e-04 -3.0132e+00

Le graphe du polynôme d’interpolation est alors obtenu comme suit (Figure


3.1) :

z = linspace ( x ( 1 ), x( end ) , 100 ) ;


p = polyval ( c , z ) ;
plot ( z , p , x , y , ’o’) ; grid on ;

Méthode des moindres carrés

Dans le cas général, la méthode des moindres carrés est utilisée pour calcu-
3.2. POLYNÔMES ET INTERPOLATION 41

Figure 3.1 – Le polynôme d’interpolation de degré 4.

ler les constantes d’une fonction d’interpolation quelconque (régression). Par


exemple, soit (x,y) des données interpolées par fonction y = ax + be−x + c. Le
but est de déterminer les constantes a, b et c. La méthode des moindres carrés
consiste à minimiser
N
X 2
e= axi + be−xi + c − yi
i=1
Cela revient à chercher a, b et c qui minimisent cette erreur, donc
N
∂e X
2xi axi + be−xi + c − yi = 0

=
∂a i=1
N
∂e X −xi
axi + be−xi + c − yi = 0

= 2e
∂b i=1
N
∂e X
2 axi + be−xi + c − yi = 0

=
∂c i=1

Ces équations peuvent être combinées sous la forme matricielle pour donner

e−xi
 P 2 P P    P 
xi
P −x Pxi−2x xi
P −x a xi yi
e−xi yi 
P
P xi
e Pe −xi e i  b  =  P
 i i
P
xi e 1 c yi
42 CHAPITRE 3. MATLAB ET ANALYSE NUMÉRIQUE

3.3 Intégration et dérivation

M ATLAB contient les commandes diff et int qui fournissent respectivement


l’expression
Z analytique de la dérivée f (x), de l’intégrale indéfinie d’une fonction
0

donnée f (x)dx.
x2 + 2x + 2
Pour appliquer ceci à la fonction f (x) = , on procède ainsi :
x2 − 1
» f = ’( x∧ 2 + 2 * x + 2 ) / ( x∧ 2 - 1 ) ’;
» syms x
» diff( f )
( 2 * x + 2 ) / ( x∧ 2 - 1 ) - 2 * ( x∧ 2 + 2 * x + 2 ) / ( x∧ 2 -
1 )∧ 2 * x
» int ( f )
x + 5 / 2 * log ( x - 1 ) - 1 / 2 * log ( 1 + x )

La variable x doit être déclarée comme symbolique (syms x). La commande


diff ( f , n ) donne sa dérivée à l’ordre n.
L’intégration numérique d’intégrale est très importante en génie des procédés
(par exemple en calculs des réacteurs chimiques, en procédés de séparations,
etc.). La fonction d’intégration la plus populaire est quad. Il s’agit d’une mé-
thode adaptative de l’algorithme de Simpson. Son utilisation est comme suit

function y = func ( x )
y = 1. / ( x. ∧ 3 - 2 * x - 5 );
Q = quad(@func,0,2);% calcul l’intégrale de la fonction func entre
0 et 2

De la même manière, la dérivée peut être calculée numériquement. Soit la


fonction f (x) = x2 , on peut calculer la valeur de sa dérivé au point x = 2
f (x + h) − f (x)
(f 0 (x) = ) comme suit.
h
h = 1 ; x = 2;
format short e
for i = 1 : 20
fp = ( f ( x + h ) - f ( x ) ) / h ;
disp ( [ h fp ] )
h = h / 10 ;
end

La fonction diff retourne un vecteur des différences entre les éléments adjacents.
Soit le vecteur x = [ x(1) x(2) ... x(n) ], diff(x) = [ x(2)-x(1) x(3)-x(2)
... x(n)-x(n-1) ] .

— Exemple
Les valeurs expérimentales de la capacité calorifique de l’ammoniaque sont
données dans le tableau suivant :
3.4. ÉQUATIONS NON LINÉAIRES 43

T(°C) Cp cal/g.mol.C
0 8.371
18 8.472
25 8.514
100 9.035
200 9.824
300 10.606
400 11.347
500 12.045

— Calculer les coefficients de la fonction d’interpolation suivante : Cp =


a + bT + cT 2 + dT 3 ,
— Calculer la quantité de chaleur nécessaire pour augmenter la tempé-
rature de 150 mol/h d’ammoniaque de 0 °C à 200 °C sachant que :
R Tout
Q = n Tin Cp dT .

— Solution
clc ;clear ;
T=[ 0 18 25 100 200 300 400 500] ;
Cp=[8.371 8.472 8.514 9.035 9.824 10.606 11.347 12.045] ;
P=polyfit(T,Cp,3) ;
n=150 ; syms t
Cpf = P (4) + P (3) ∗ t + P (2) ∗ t2 + P (1) ∗ t3 ;
Q=n*int(Cpf,0,200)
2.7180e+005

3.4 Équations non linéaires


3.4.1 Équations algébriques

L a fonction solve est utilisée pour résoudre ce type d’équations. soit le code
suivant :

syms a b c x
Q = a * x ∧ 2 + b * x + c ;
solve ( Q )

Ce qui donne
ans =
[ 1 / 2 / a * ( - b + ( b ∧ 2 - 4 * a * c ) ∧ ( 1 / 2 ) ) ]
[ 1 / 2 / a * (- b - ( b ∧ 2 - 4 * a * c ) ∧ ( 1 / 2 ) ) ]

— Exemple
Supposons qu’on le système d’équations suivant :
x ∧ 2 * y ∧ 2 = 0
44 CHAPITRE 3. MATLAB ET ANALYSE NUMÉRIQUE

x - y / 2 - 1 = 0
On veut résoudre ce système pour x et y. Premièrement, on va créer les
variables symboliques.

— Solution
syms x y
Après, on utilise la fonction solve
[ x , y ] = solve ( x∧ 2 * y∧ 2 , x - y / 2 - 1 )
Ce qui donne
x =
1
0
y =
0
-2

3.4.2 Équations différentielles

L a fonction dsolve calcule des solutions symboliques des équations diffé-


rentielles ordinaires. Les équations contiennent la lettre D qui dénote la dif-
férentiation. Les symboles D2, D3, ... , DN, corresponds à la deuxième, troi-
sième,...,Nième dérivée.

∧ ∧
x = dsolve ( ’ Dx 2 + x 2 = 1 ’ , ’ x ( 0 ) = 0 ’ )

Le résultat est

x =
[ - sin ( t ) ]
[ sin ( t ) ]

3.5 Résolution numérique d’équations différentielles


3.5.1 Équations différentielles ordinaires(EDO)

Le problème de résolution d’équations différentielles ordinaires aux conditions


initiales est courant en génie des procédés(réacteur fermé, réacteur agité en
continu(régime transitoire), réacteur piston homogène et hétérogène(régime per-
manent), opérations unitaires ...etc). Des méthodes sont programmées dans
MATLAB et elles sont relativement semblables dans leur utilisation. La plus
populaire est la méthode de Runge-Kutta d’ordres 4 et 5 à pas variable implan-
tée dans la fonction ode45. Les autres fonctions, par exemple ode23 (méthode
d’Euler) et ode15s (pour les problèmes plus ardus à résoudre) sont appelées,
dans leur appel de base, de la même manière que ode45.
3.5. RÉSOLUTION NUMÉRIQUE D’ÉQUATIONS DIFFÉRENTIELLES 45

— Exemple
Soit l’équation différentielle suivante
dy
= t2 + y 2
dt
avec la condition initiale y(0) = 1. Les codes suivants illustrent comment
utiliser la fonction ode45 (Runge-Kutta d’ordre 4 et 5) pour résoudre cette
équation.
function [out] = func ( t , y )
out = t.∧ 2-y.∧ 2;% Calculer la fonction de dérivé
Il est donc nécessaire d’écrire un fichier function contenant l’expression
numérique des dérivées avant d’appeler ode45.
Ensuite, le prototype d’appel est le suivant (normalement fait dans un
script).
t = [ 0 1 ] ;
yinit = 1 ;
[ t , y ] = ode45 ( ’func’ , t ,yinit ) ;
plot ( t , y );
Dans le cas ou on a un système d’équations. Par exemple
dx
=t−y
dt
dy
=x
dt
Avec les conditions initiales x(0) = y(0) = 0. On utilise la fonction
function [ out ] = func (t , in )
% in ( 1 ) est x ( t ) et in ( 2 ) est y ( t ).
out = zeros ( 2 , 1 ) ;
out( 1 ) = t - in ( 2 ) ;
out( 2 ) = in ( 1 );

Autres fonctions sont disponibles dans MATLAB, à savoir ode23, ode113,


odel5S, ode23S, ode23T, ode23TB. Pour plus de détails sur les fonc-
tions ode, taper par exemple help ode45.

3.5.2 Équations aux dérivées partielles(EDP)

Dans ce cas, les variables dépendantes varient en fonction du temps et l’espace.


Les équations obtenues sont classées selon l’ordre(ordre de la dérivée spatiale le
plus élevé), linéarité(coefficients qui sont constants ou qui varient) et conditions
aux limites et condition initiale. Le plus souvent, on est ramené à résoudre
des équations ou système d’équations aux dérivées partielles linéaires de type
elliptiques, paraboliques ou hyperboliques.
La fonction pdepe de MATLAB résout les équations paraboliques et elliptiques
de la forme :
      
∂u ∂u −m ∂ ∂u ∂u
c x,t,u, =x m
x .f x,t,u, + s x,t,u, (3.1)
∂x ∂t ∂x ∂x ∂x
avec :
m : dépend du système de coordonnées m=0, 1 et 2 pour cartésiennes, cylin-
46 CHAPITRE 3. MATLAB ET ANALYSE NUMÉRIQUE

driques
 et sphériques
 respectivement
∂u
f x,t,u, représente le terme flux
 ∂x
∂u
s x,t,u, représente le terme source
 ∂x 
∂u
c x,t,u, appelée matrice de masse et elle est diagonale.
∂x
La condition initiale : u(x,t0 ) = u0 (x)  
∂u
Les conditions aux limites a et b sont données par : p(x,t,u)+q(x,t).f x,t,u, =
∂x
0

— Exemple
Soit un mur d’épaisseur 1m initialement à la température de 100 °C. Les
parois de ce mur sont maintenues à la température ambiante de 15 °C.
Déterminer la distribution de la température dans le mur de t=0 jusqu’a
t=25000 s. L’équation de conduction est donnée par :

∂T ∂2T
=α 2
∂t ∂x

k
avec α = = 5 × 10−7 m2 /s représente la diffusivité thermique.
ρ.cp
— Solution
La fonction pdepe pour la résolution de l’équation (3.1) est donnée par :
function pdeconduc
m = 0;
x = linspace(0,1,10) ;
t = linspace(0,25000,54) ;
sol = pdepe(m,@pdeconducde,@pdeconducic,@pdeconducbc,x,t) ;
Tsol = sol( :, :,1) ; surf(x,t,Tsol) ;
xlabel(’x(m)’) ;ylabel(’t(sec)’) ; zlabel(’T(deg C)’) ;
function [c,f,s] = pdeconducde(x,t,T,DTDx) % définie c, f, et s
alpha = 5e-7 ; c = 1 ; f =alpha*DTDx ; s = 0 ;
end
function T0 = pdeconducic(x) % définit la condition initiale
T0 = 100 ;
end
function [pl,ql,pr,qr] = pdeconducbc(xl,Tl,xr,Tr,t) % définit les conditions
aux limites
pl = Tl-15 ; ql = 0 ; pr = Tr-15 ; qr = 0 ;
end
end
Ce code génère le graphe suivant :
3.6. EXERCICES 47

Figure 3.2 – Distribution de la température dans le mur.

3.6 Exercices
Ô EXERCICE 01

La méthode de Newton-Raphson permet de déterminer les racines d’une


équation algébrique non-linéaire. L’algorithme est le suivant :

1. Poser x(0) % valeur initiale


2. Tant que (x(k+1) = x(k))/x(k+1) plus grand qu’un critère
- Calculer x(k+1) = x(k) - f (xk )/f 0 (xk )
-k=k+1
3. Sortie

A l’aide de cet algorithme, déterminer les racines de l’équation :

2x − 2x = 0

Vérifiez avec la fonction fzero.

Ô EXERCICE 02

1. En utilisant la fonction solve, et en utilisant des variables symbo-


liques, trouvez les solutions de l’équation x2 + 1 = 0.
2. Soit l’expression suivante :

y = t3 + cos(t)

En utilisant les variables symboliques et la fonction diff, détermi-


nez l’expression de dy/dt. Évaluez la dérivée pour t = 5 (utilisez la
fonction eval).
48 CHAPITRE 3. MATLAB ET ANALYSE NUMÉRIQUE

Ô EXERCICE 03
On se propose d’approximer la fonction

y(t) = 10 ∗ e−t + k

Pour t entre 0 et 10 (utilisez un incrément de 0.1) par un polynôme d’ordre


5. Le paramètre k est généré par la fonction aléatoire :

k = rand(length(t),1) % t est un vecteur colonne

Vérifier ce modèle.

Ô EXERCICE 04
On désire calculer la valeur de l’intégrale suivante :
Z 1
dx

0 1 + x

Dans un premier temps, on vous demande de réaliser une fonction MAT-


LAB qui utilise la méthode de Simpson suivante (quatre points équidis-
tants notés 0...3)
Z
3h
f (x)dx ≈ (f0 + 3f1 + 3f2 + f3 )
8
Comparez la solution à celle obtenue à l’aide de la fonction quad.

Ô EXERCICE 05
Programmez un fichier script et un fichier function qui permet de ré-
soudre le système d’équations différentielles non-linéaire suivant :
dCA 5 1 2
= 0.5714 ∗ (10 − CA ) − ∗ CA − ∗ CA
dt 6 6
dCB 5 5
= −0.5714 ∗ CB + ∗ CA − ∗ CB
dt 6 3
Avec CA (0) = 5 mol/L et CB (0) = 0 mol/L. Faites tracez les courbes
de la concentration CA et CB en fonction du temps pour une période de
10 unités de temps sur deux graphiques différents (sur la même figure).
Chapitre

4
Cellules et structures

4.1 Introduction
L es vecteurs multidimensionnels A(:,:,:) sont une extension des matrices
(deux dimensions), ils sont représentés par la Figure 4.1.

Figure 4.1 – Vecteurs multidimensionnels.

— Exemple
Prenons l’exemple du vecteur multidimensionnel A (3,3,2), il sera repré-
senté comme suit
La première page contient

>> A(:,:,1)=[1 0 3,4 -1 2; 8 2 1]

et la deuxième page contient

>> A(:,:,1)=[6 8 3; 4 3 6;5 9 2]

On peut utiliser la commande cat pour créer des vecteurs multidimen-


sionnels. Soit l’exemple suivant

49
50 CHAPITRE 4. CELLULES ET STRUCTURES

— Exemple  
8 2
Considérons les deux matrices suivantes A= et B=
9 5
 
  8 2
4 6  9 5 
. Donc C = cat(1,A,B) est équivalent à C = [A; B] =  ,
7 3  4 6 
 7 3
8 2 4 6
C = cat(2,A,B) est équivalent à C = [A B] = et C =
9 5 7 3
cat(3,A,B) produit un vecteur tridimensionnel composé de deux pages. La
première contient A et la deuxième contient B. L’élément C(2,1,1) = 9 et
C(2,2,2) = 3.

4.2 Structures
Jusqu’a présent, on a vu seulement les vecteurs dont les éléments sont de même
type (numérique). Une structure MATLAB permet de mettre différents type
de données dans ces champs. Par exemple, on peut créer une structure appelée
etudiant dans les champs sont :

etudiant . nom = ’ Bouhabila Fateh ’ ;


etudiant . mail = ’ fatehb@enpc.dz ’ ;
etudiant . num = ’ 01234556 ’ ;
etudiant . note = [ 12 09 14 17 ] ;

Taper le nom de la structure, dans ce cas etudiant

etudiant =
nom : ’ Bouhabila Fateh ’
mail : ’ fatehb@enpc.dz ’
num : ’ 01234556 ’
note : [ 12 9 14 17 ]
4.3. LES CELLULES ( CELL ARRAY) 51

On peut accéder à sa deuxième note par

etudiant . note ( 2 )
ans =
9

Pour ajouter un autre élément (étudiant) à cette structure, on procède comme


suit :

etudiant (2) . nom = ’ blel Farid ’ ;


etudiant (2) . mail = ’ faridb@enpc.dz ’ ;
etudiant (2) . num = ’ 01234557 ’ ;
etudiant (2) . note = [ 13 10 15 18 ] ;

Pour visualiser les deux noms, on tape

etudiant ( 1 : 2 ) . nom
ans =
Bouhabila Fateh
ans =
blel Farid

4.3 Les cellules ( Cell Array)


Un Cell Array est une matrice (objet) de données dont chaque élément est une
cellule. On peut grouper les données qui sont reliées entre elles mais pas force-
ment de même dimension ( numérique, caractère, et structures). Voici l’exemple
suivant

Exemple
Soit A un vecteur cellule 2 × 2. Ces cellules contiennent la ville, la date, la
température de l’air (prise à 8h, 12h et 17h), et la température de l’eau mesurée
en même temps mais à des endroits différents.

Constantine 15 Juillet 2020


21 23 22
[27 35 32]  23 25 24 
22 24 23

on aura donc
52 CHAPITRE 4. CELLULES ET STRUCTURES

A {1,1} = { 0 Constantine 0 };
A {1,2} = { 0 15 Juillet 2014 0 };
A {2,1} = [ 27 35 32 ] ;
A {2,2} = [ 21 23 22 ; 23 25 24 ; 22 24 23 ] ;

On peut visualiser A en tapant :

>> celldisp(A)
A {1,1} {1} =
Constantine
A {2,1} =
27 35 32
A {1,2} {1}=
15 Juillet 2020
A {2,2} =
21 23 22
23 25 24
22 24 23

L’ accès au éléments d’une cellule est comme suit


T = A {2,2} (2,3)
T =
24
La fonction cell vous permet de générer des vecteurs cellules vides :
a = cell(2,2) % vecteur cellule 3 × 2 vide a =
[ ] [ ]
[ ] [ ]

Finalement, on peut utiliser la fonction cellplot pour la représentation.


Chapitre

5
Résumé des com-
mandes MATLAB

5.1 Introduction
Les différentes commandes et fonctions de MATLAB sont regroupées par sujet
d’intérêt dans les sections suivantes.

5.2 Gestions des commandes et des fonctions

Table 5.1 – Gestions des commandes et des fonctions


help Aide
What listing du nom des fichiers MATLAB présents
type impression d’un fichier MATLAB
which localise les fonctions et fichiers
path défini les chemins d’accès aux fichiers et fonctions

5.3 Gestions des variables et de l’espace de tra-


vail

Table 5.2 – Gestions des variables et de l’espace de travail


who affiche les variables courantes
whos affiche les variables courantes, format long
save sauve l’espace de travail sur disque
load restaure l’espace de travail à partir du disque
clear efface les variables et fonctions de la mémoire
size renvoie la taille d’une matrice
length renvoie la longueur d’un vecteur
disp affiche une matrice de texte

53
54 CHAPITRE 5. RÉSUMÉ DES COMMANDES MATLAB

5.4 Commandes système

Table 5.3 – Commandes système.


cd change le répertoire courant
pwd affiche le répertoire courant
dir, ls liste les fichiers
delete suppression de fichiers

5.5 Fenêtre de commandes MATLAB

Table 5.4 – Fenêtre de commandes MATLAB


clc efface la fenêtre de commande
home curseur en haut de l’écran
format définit le format d’affichage
echo affiche les instructions exécutées par un script

5.6 Variables prédéfinies

Table 5.5 – Variables prédéfinies


ans réponse à une expression sans assignation
eps précision de la virgule flottante
realmax plus grand nombre flottant
realmin plus petit nombre flottant positif
pi π
inf ∞
NaN Not a Number
nargin nombre d’arguments d’entrée d’une fonction
nargout nombre d’arguments de sortie d’une fonction
5.7. DURÉE ET DATE 55

5.7 Durée et Date

Table 5.6 – Durée et Date


date date courante
clock horloge
etime durée d’exécution
tic, toc affiche le début et la fin d’exécution
cputime temps CPU écoulé

5.8 Matrices prédéfinies

Table 5.7 – Matrices prédéfinies


zeros matrice de 0
ones matrice de 1
eye matrice identité
diag matrice diagonale
linspace vecteur linéairement espacé
logspace vecteur logarithmiquement espacé
meshgrid grille pour les graphiques 3D
reshape redimensionnement
tril partie triangulaire inférieure
triu partie triangulaire supérieure
’ transposition

5.9 Instructions de contrôle

Table 5.8 – Instructions de contrôle


if test conditionnel
else complète if
end terminaison de if, for et while
for instruction de répétition avec compteur
while instruction de répétition avec test
break interrompt une boucle for ou while
return retour
error affiche un message et interrompt l’exécution
56 CHAPITRE 5. RÉSUMÉ DES COMMANDES MATLAB

5.10 Instructions spécifiques

Table 5.9 – Instructions spécifiques


input indicateur d’attente d’entrée
pause attente
function définition de fonction
eval exécute une chaîne de caractère
feval exécute une fonction définie dans une chaîne
global définit les variables comme globales

5.11 Fonctions mathématiques élémentaires

Table 5.10 – Fonctions mathématiques élémentaires


abs valeur absolu ou module
sqrt racine carrée
round arrondi à l’entier le plus proche
sign signe de
rem reste de la division
exp exponentiel
log log népérien
log10 log décimal
5.12. POLYNÔMES 57

5.12 Polynômes

Table 5.11 – Polynômes


poly construit un polynôme à partir des racines
roots calcul des racines
polyval évaluation en un point
polyvalm évaluation en une matrice de points
conv, deconv multiplication, division
polyfit polynôme d’approximation
polyder différentiation

5.13 Analyse de données par colonne

Table 5.12 – Analyse de données par colonne


max valeur max
min valeur min
mean valeur moyenne
std écart type
sort tri en ordre croissant
sum somme des éléments
prod produits des éléménts
cumsum vecteur des sommes partielles cumulées
cumprod vecteur des produits partiels cumulés
hist histogramme

5.14 Différences finies, interpolation et intégra-


tion

Table 5.13 – Différences finies, interpolation et intégration


diff approximation de la dérivée
gradient approximation du gradient
spline interpolation spline cubique
interp1 interpolation monodimensionnel
interp2 interpolation bidimensionnel
griddata maillage de données
quad intégration numérique de Simpson
quad8 intégration numérique de Newton-Cotes
trapz intégration numériques par la méthode de trapèzes
58 CHAPITRE 5. RÉSUMÉ DES COMMANDES MATLAB

5.15 Équations non linéaires et optimisation

Table 5.14 – Équations non linéaires et optimisation


fmins minimisation d’une fonction à une variable
fminsearch minimisation d’une fonction à plusieurs variables
fsolve résolution d’un système d’équations non-linéaires
fzero zéro d’une fonction à une seule variable

5.16 Graphiques

Table 5.15 – Graphiques


plot graphe linéaire
loglog graphe en échelle log-log
semilogx graphe en échelle semi-log (abscisse)
semilogy graphe semi-log (ordonnée)
bar histogramme bâtons
rose histogramme en pseudo camembert
title titre du graphe
xlabel légende abscisse
ylabel légende ordonnée
grid dessin d’une grille
text texte
gtext placement de texte avec la souris
hold gère la surimpression
subplot sous fenêtres graphique
axis contrôle l’apparence et l’échelle des axes
mesh surface maillée
meshc combinaison mesh + dessin des équi-niveaux
surf surface 3D à facettes
surfc combinaison de surf + dessin des équi-niveaux
plot3 dessin de lignes et points en 3D
contour dessin 2D des équi-niveaux
contour3 dessin 3D des équi-niveaux
quiver affichage du gradient sous forme de flèches
Bibliographie

[1] M. M. Rathore. Engineering heat and mass transfer, third edition. Univer-
sity Science Press, 2015.
[2] C. J. Geankoplis. Transport processes and unit operations, third edition.
Prentice-Hall International, 1993.
[3] C. Woodford and C. Phillips. Numerical methods with worked examples :
matlab edition. Springer, 2012.
[4] G. Lindfield and J. Penny. Numerical methods using MATLAB, Fourth
Edition. Academic Press, 2019.
[5] F. Saleri A. Quarteroni and P. Gervasio. Calcul scientifique, cours, exercices
corrigés et illustrations en matlab et octave. Springer, 2010.
[6] B. Hahn and D. Valentine. Essential MATLAB for engineers and scientists,
Seventh edition. Elsevier, 2019.
[7] A. Kusiak J.-L. Battaglia and J.-R. Puiggali. Introduction aux transferts
thermiques, Cours et exercices corrigés. Dunod, Paris, 2010.
[8] A. Selamet V. S. Arpaci and S.H. Kao. Introduction to heat transfer.
Prentice-Hall, USA, 2000.
[9] W. S. Janna. Engineering heat transfer. CRC Press, 2000.
[10] M. Thirumaleshwar. Fundamentals of heat and mass transfer. Pearson
Education, 2006.
[11] J. P. Grivet. Méthodes numériques appliquées pour le scientifique et l’ingé-
nieur. EDP Sciences, 2009.
[12] E.Goncalvés. Méthodes, analyse et calculs numériques. Institut polytech-
nique de grenoble, 2005.
[13] E. Holzbecher. Environmental modeling using Matlab. Springer, 2007.
[14] J. D. Hoffman. Numreical methods for engineers and scientists. Marcel
Dekker, New York, 2001.
[15] D. R. Lynch. Numreical partial differential equations for environmental
scientists and engineers. Springer, 2005.

59
60 CHAPITRE 5. RÉSUMÉ DES COMMANDES MATLAB

[16] B. Lucquin and O. Pironneau. Introduction au calcul scientifique. Masson,


Paris, 1996.
[17] N. Z. Sun and J. F. Thovert. Mathematical modeling of ground water
pollution. Springer-Verlag, Berlin, 1996.
[18] J. M. Coulson and J. F. Richardson. Chemical engineering volume 2A,
Sixth edition. Butterworth-Heinemann, 2019.
[19] L. Svarovsky. Solid-liquid separation, Fourth Edition. Butterworth Heine-
mann, 2000.
[20] J. Litster. Design and processing of particulate products. Cambridge Uni-
versity Press, 2016.
[21] E. Ortega-Rivas. Unit operations of particulate solids (theory and practice).
CRC Press, 2012.
[22] J. M. Coulson and J. F. Richardson. Chemical engineering volume 2, Fifth
edition. Butterworth-Heinemann, 2002.
[23] J. M. Coulson. The flow of fluids through granular beds ; effect of particle
shape and voids in streamline flow. Trans. Inst. Chem. Eng., 27, 237-57,
1949.
[24] M. R. J. Wyllie and K. R. Gregory. Fluid flow through unconsolidated
porous aggregates effect of porosity and particle shape on Kozeny-Carman
constants. Ind. Eng. Chem., 47,1379-88, 1955.
[25] S. M. Peker and S. S. Helvaci. Solid-liquid two phase flow. Elsevier, 2008.
[26] H. Khawaja and M. Moatamedi. Multiphysics modellin of fluid-particulate
systemseparation. Academic Press, 2020.
[27] J. Bear and A. Verruijt. Modeling groundwater flow and pollution. D.Reidel
Publishing company, 1982.
[28] J. Bear. Dynamics of fluis in porous media. Elsevier New-York, 1979.
[29] D. Klotz, K. P. Seiler, H. Moser, and F. Neumajer. Dispersivity and velocity
relationship from laboratory and field experiments. Journal of Hydrology,
45 :16–184, 1980.
[30] J. P. GOURLIA. Téchniques de l’ingénieur, modélisation en génie des
procédés. J 1022-2 à J 1022-7, 1997.
[31] S. Szenknect. Transfert de radioéléments en zone non saturée. These de
Doctorat de l’Université JOSEPH FOURIER - GRENOBLE I, 2003.
[32] J. Benitez. Principles and modern applications of mass transfer operations,
second edition. Wiley, 2009.
[33] R. Singh. Membrane technology and engineering for water purification,
second edition. Elsevier, 2015.
[34] D. C. Prieve. Unit operations of chemical engineering. Carnegie Mellon
University, 2017.
[35] P. Wuithier. Raffinage et génie chimique tome 1. Institut Francais du
Pétrole, 1972.
[36] B. Grandjean. Notes du cours de distillation et extraction volume 1 et 2.
-, 2013.
[37] R. E. Treybal. liquid extraction. McGRAW-HILL, 1951.
5.16. GRAPHIQUES 61

[38] P. Wuithier. Raffinage et génie chimique tome 2. Institut Francais du


Pétrole, 1972.
[39] P. Trambouze. Petrolium refining, materiels and equipment. Technip, Pa-
ris, 1999.
[40] E. Y. Kung and R. B. Beckmann. Dispersed-phase holdup in a rotating
disk extraction column. AIChE, 7 (1961) 319-342.
[41] A. Kumar and S. Hartland. A unified correlation for the prediction of
dispersed-phase holdup in liquid-liquid extraction columns. Industrial and
Engineering Chemistry Research, 34 (1995) 3925-3940.
[42] A. Kumar and S. Hartland. Computational strategies for sizing liquid-liquid
extractors. Industrial and Engineering Chemistry Research, 38 (1999) 1040-
1056.
[43] J. Gmehling, M. Kleiber, B. Kolbe, and J. Rarey. Chemical thermodynamics
for process simulation. Wiley-VCH, 2019.
[44] Juma Haydary. Chemical process design and simulation. Aspen plus and
HYSYS aplications. John Wiley, 2019.
[45] D. Ch. Yee Foo et al. Chemical engineering process simulation. Elsivier,
2017.
[46] M. E. Hanyak Jr. Chemical process simulation and the Aspen HYSYS
software. M. E. Hanyak Jr. Publisher, 2012.
[47] R. Sinnott and G. Towler. Chemical engineering design. Elsevier, 2019.
62 CHAPITRE 5. RÉSUMÉ DES COMMANDES MATLAB

Vous aimerez peut-être aussi