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
4 Cellules et structures 49
4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.2 Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.3 Les cellules ( Cell Array) . . . . . . . . . . . . . . . . . . . . . . . 51
iii
iv
Liste des tableaux
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.
3
4 CHAPITRE 1. INTRODUCTION À MATLAB
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.
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
1.3 Arithmétique
>> 3 + 2 ≺ Entrée
>> 5 - 2 ≺ Entrée
>> 3 * 4 ≺ Entrée
>> 5 / 2 ≺ Entrée
∧
>> 2 3 ≺ Entrée
>> 2 \ 5 ≺ Entrée
>> 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.
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 :
Les plus petits et plus grands nombres réels positifs dans MATLAB sont res-
pectivement donnés par
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).
- 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
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
>> b = 4 ; ≺ Entrée
>> x = 7; y = 3; ≺ Entrée
>> z = x + y; disp ( [ ’La somme z = ’, num2str ( z ) ] ) ; ≺ 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
Ô 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.
— 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.
13
14 CHAPITRE 2. PROGRAMMATION EN MATLAB
>> 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
>> A ( 2 , 2 : 3 ) ≺ Entrée
ans =
5 6
>> 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’ ≺ 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 :
— 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
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(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 :
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 :
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
>> find ( A > 0.5 ) % renvoie les indices des éléments de A qui sont
>0.5
>> A = [2 3 4; 5 4 3];
>> b = size(A);
>> disp(b)
>> [ lignes , colonnes ] = size( A ) ;
>> disp ( [ lignes colonnes ] )
— Exemple
>> A = [1 0.5 ; 0.4 2] ; B = [ 1 ; 2 ] ; ≺ Entrée
>> X = inv(A)* B ≺ Entrée
X=
0.5556
0.8889
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
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 :
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
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 :
if condition 1
instruction 1.1
instruction 1.2
...
elseif condition 2
instruction 2.1
instruction 2.2
...
else
instruction 1
instruction 2
end
— Exemple
switch ( CAS )
case CAS1
ACTION 1
case CAS2
ACTION 2
otherwise
ACTION 3
end
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).
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
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
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 )
fminbnd ( @function , x1 , x2 )
function y = fmin ( x )
y = 1 - x . * exp ( - x ) ;
2.7. GRAPHES 25
x = fminbnd (@fmin,0,5)
fminsearch(@function, x0)
function y = fmins ( x )
y = 1 - x ( 1 ) . * exp ( - x( 1 ).∧ 2 - x ( 2 ).∧ 2 ) ;
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
plot ( x , sin ( x ) ) ;
plot ( [ 0 4 ] , [ 1 3 ] ) ;
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)
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
(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
x = 0 : 0.01 : 4 ;
semilogy ( x , exp ( x ) ), grid
28 CHAPITRE 2. PROGRAMMATION EN MATLAB
2.7.2 Graphes 3D
[ 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
3 3 3 3 3 3
4 4 4 4 4 4
5 5 5 5 5 5
La fonction contour peut être utilisée pour tracer les contours (Figure 2.7).
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
1.
contour( x , y, V); hold on
quiver (x, y, dx, dy); hold off
A =
1 2 3
4 5 6
save data.txt A -ascii
A = load (’ data.txt ’ )
save filename x y z
[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.)
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.
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);
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
Ô EXERCICE 03
Ô EXERCICE 04
Ô 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
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
si x < 0;
0,
si 0 ≤ x ≤ 1;
x,
f (x) =
2 − x, si 1 ≤ x ≤ 2;
0, si x > 2;
Ô EXERCICE 15
Ô 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.
Ô 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.
Ô EXERCICE 24
On veut tracer avec MATLAB la fonction
2
+0.5(x−y)2 ]
z(x, y) = e−0.5[x
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...
>> y = polyval ( p , x )
39
40 CHAPITRE 3. MATLAB ET ANALYSE NUMÉRIQUE
» roots ( p )
ans =
3.00000000000000
2.00000000000000
1.00000000000000
» 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
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
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
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 )
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
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
— 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
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
∧ ∧
x = dsolve ( ’ Dx 2 + x 2 = 1 ’ , ’ x ( 0 ) = 0 ’ )
Le résultat est
x =
[ - sin ( t ) ]
[ sin ( t ) ]
— 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 );
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
3.6 Exercices
Ô EXERCICE 01
2x − 2x = 0
Ô EXERCICE 02
y = t3 + cos(t)
Ô EXERCICE 03
On se propose d’approximer la fonction
y(t) = 10 ∗ e−t + k
Vérifier ce modèle.
Ô EXERCICE 04
On désire calculer la valeur de l’intégrale suivante :
Z 1
dx
√
0 1 + x
Ô 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.
— Exemple
Prenons l’exemple du vecteur multidimensionnel A (3,3,2), il sera repré-
senté comme suit
La première page contient
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 ’
mail : ’ fatehb@enpc.dz ’
num : ’ 01234556 ’
note : [ 12 9 14 17 ]
4.3. LES CELLULES ( CELL ARRAY) 51
etudiant . note ( 2 )
ans =
9
etudiant ( 1 : 2 ) . nom
ans =
Bouhabila Fateh
ans =
blel Farid
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.
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 ] ;
>> 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
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.
53
54 CHAPITRE 5. RÉSUMÉ DES COMMANDES MATLAB
5.12 Polynômes
5.16 Graphiques
[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