Cinquième édition
Utilisation de Matlab
André Fortin
Professeur titulaire
GIREF
Département de mathématiques et de statistique
Université Laval
31 août 2016
ii
Table des matières
iii
iv Table des matières
Chapitre 1
Ce texte est une très brève introduction à l’utilisation de Matlab pour le cours d’analyse nu-
mérique pour ingénieurs. Idéalement, vous devriez lire ce document assis devant votre ordinateur
pour essayer les commandes proposées. Le temps que vous mettrez à lire cette introduction vous
permettra sans doute de réaliser beaucoup plus vite les devoirs.
http://www.giref.ulaval.ca/afortin/livre-ananum.html
Tous les codes MATLAB se trouvent dans l’archive zip nommée MATLAB.zip. Vous devez
enregistrer le fichier zip dans votre compte informatique ou dans votre ordinateur personnel et
décompresser l’archive. Cette archive contient les fichiers et répertoires suivants :
MATLAB/README
MATLAB/README.Linux
MATLAB/README.Win_FSG
MATLAB/README.Win_Mat
MATLAB/README.Win_PC
MATLAB/startup.m
MATLAB/exemples_fonctions/
MATLAB/programmes_matlab_analyse_numerique/
MATLAB/travail/
programmes_matlab_analyse_numerique
Ces programmes nécessitent l’utilisation de fonctions dont on trouvera des exemples dans le dossier :
1
2 Chapitre 1
exemples_fonctions
travail
est vide. Vous pouvez travailler dans ce répertoire pour modifier les programmes fournis ou créer
vos propres fonctions MATLAB. En travaillant dans ce répertoire vous éviterez de modifier ou
d’effacer par erreur l’un des programmes fournis.
Pour utiliser efficacement ces programmes MATLAB il faut prendre quelques minutes pour confi-
gurer votre environnement informatique. Il faut lire attentivement le contenu du fichier README
de l’archive zip et choisir la configuration appropriée à votre environnement informatique personnel.
Ce fichier va vous aiguiller selon votre situation :
— Si vous travailler avec le système d’exploitation Windows 7 et votre compte informatique de
la FSG : lire le fichier README.Win_FSG
— Si vous travailler avec la machine virtuelle Windows 7 dans le laboratoire informatique
VCH-1069 : lire le fichier README.Win_Mat
— Si vous utilisez MATLAB avec votre ordinateur personnel et le système d’exploitation Win-
dows : lire le fichier README.Win_PC
— Si vous travaillez sous Linux : lire le fichier README.Linux
Comme dernière étape, il est fortement conseillé de créer un fichier Matlab spécial appelé «star-
tup.m» qui indiquera à Matlab où se trouvent vos fichiers. Tout est clairement indiqué dans le
fichier «startup.m» fourni où vous devez décommenter les lignes correspondant à votre situation.
C’est facile et rapide.
Si tout va bien, vous avez maintenant accès à tous les programmes. Pour vous en assurer, tapez
l’instruction suivante dans la fenêtre commande de MATLAB (Command Window)
Si vous obtenez
il faut s’assurer que le contenu du fichier startup.m est approprié et qu’il a bien été exécuté à
l’ouverture du logiciel MATLAB.
Généralités sur Matlab 3
b =
1 2 3
>> A = [1 2 3; 4 5 6; 7 8 9]
4 Chapitre 1
A =
1 2 3
4 5 6
7 8 9
On a ainsi le vecteur b (1 par 3) et la matrice A (3 par 3). Si on essaie le produit A ∗ b
>> A*b
Error using *
Inner matrix dimensions must agree.
car le produit n’est pas compatible. Par contre, le vecteur transposé (de dimension 3 par 1) fera
l’affaire et on peut faire l’opération A ∗ b0 :
A*b’
ans =
14
32
50
Il existe aussi des opérateurs qui agissent terme à terme sur les vecteurs et les matrices et qui
sont très utiles en pratique. On les note
.^ .* et ./
On peut ainsi multiplier terme à terme deux vecteurs ou deux matrices ayant exactement les mêmes
dimensions :
>> b = [1 2 3] ;
>> c = [-1 2 -3];
>> b.*c
ans =
-1 4 -9
>> b./c
ans =
-1 1 -1
>> b.^3
ans =
Généralités sur Matlab 5
1 8 27
>> cos(b)
ans =
pour une fonction de deux variables. On peut ensuite les utiliser par la commande :
>> a = f_anonym(3)
a =
7
>> b = f_anonym2(1,2)
b =
3
>> vec1 = [1 2 3] ;
>> vec2 = [4 5 6] ;
>> f_anonym(vec1)
ans =
-1 2 7
>> f_anonym(vec1,vec2)
ans =
15 27 43
On notera que l’utilisation du produit «.*» dans les définitions permet de prendre des vecteurs en
arguments.
8 Chapitre 1
Pour les fonctions plus complexes, on doit créer un fichier FUNCTION. À la différence des
fichiers SCRIPT de Matlab, les fichiers FUNCTION ont une syntaxe plus rigoureuse. En effet, tout
comme pour une fonction mathématique, un fichier FUNCTION possède des arguments d’entrée et
des arguments de sortie. Pour pouvoir utiliser un fichier FUNCTION, il suffit de créer à l’aide de
l’éditeur de Matlab un fichier texte (ASCII) que vous pouvez nommer comme vous voulez pourvu
qu’il soit muni du suffixe «.m» tout comme pour les fichiers SCRIPT.
Par exemple, si l’on veut utiliser la fonction mathématique f (x) = x2 , on peut éditer un fichier
nommé par exemple «fonc.m» qui s’écrit :
% Un exemple de fichier FUNCTION
% ------------------------------
function y = fonc(x)
y = x .^ 2;
et le tour est joué. Il est préférable d’utiliser le même nom de fichier que celui de la
fonction elle-même.
Remarquez la syntaxe de la première ligne (après les 2 lignes de commentaires) qui doit abso-
lument être respectée. Notez ici encore l’utilisation de l’opérateur «.^» qui permettra d’utiliser un
vecteur comme argument d’entrée x. Il est d’ailleurs recommandé de toujours utiliser les opérateurs :
.^ .* et ./
dans la définition des fichiers FUNCTION sauf si effectivement on y utilise des produits matriciels
classiques.
Pour utiliser la fonction du fichier «fonc.m», il suffit d’entrer au clavier :
» fonc(2)
ans =
4
On peut aussi placer le résultat dans une autre variable :
» b = fonc(5)
b =
25
ou encore puisque l’on peut utiliser des vecteurs :
» vecteur = [ 1 2 3];
» reponse = fonc(vecteur)
reponse =
1 4 9
qui est également un vecteur.
À la différence des fichiers SCRIPT, les variables à l’intérieur d’un fichier FUNCTION ne sont
pas disponibles à l’extérieur. On dit qu’elles sont locales. Si l’on essaie d’obtenir la valeur des
variables locales x et y :
Généralités sur Matlab 9
» x
??? Undefined function or variable x.
» y
??? Undefined function or variable y.
Matlab ne les reconnaît pas.
La syntaxe plus générale des fichiers FUNCTION est la suivante :
function [y1, y2, y3, ... yn] = fonc2(x1,x2,x3,... xm)
et l’ on a une fonction de m arguments d’entrée et de n arguments de sortie. Par exemple, dans le
fichier «cercle.m», on a programmé le périmètre et l’aire d’un cercle en fonction de son rayon :
function [peri, aire] = cercle(R)
%
% argument d’entrée:
% le rayon: R
% arguments de sortie:
% le périmètre: peri
% l’aire: aire
peri = 2 * pi * R;
aire = pi * R.^2;
Pour utiliser cette fonction, il n’est pas nécessaire d’utiliser les mêmes noms de variables que
ceux utilisés dans le fichier FUNCTION lui-même. Il suffit de s’assurer qu’il y a le même nombre
d’arguments d’entrée et de sortie. On peut se servir de cette fonction en écrivant par exemple :
[y1, y2] = cercle(3)
y1 =
18.8496
y2 =
28.2743
Notez que les variables peri, aire et R sont locales. Par contre, les variables y1 et y2 sont bien
définies et contiennent respectivement le périmètre et l’aire du cercle. On aurait pu aussi écrire :
» rayon = 5;
» [per, surf] = cercle(rayon)
per =
31.4159
surf =
78.5398
Ce sont maintenant les variables per, surf et rayon qui sont définies (les variables y1, y2 le
sont aussi à moins qu’on ne les ait effacées).
En terminant, notons que, dans un fichier FUNCTION, on ne programme que le strict nécessaire
au calcul des variables de sortie en fonction des variables d’entrée. Il ne faut pas y mettre de
commandes superflues. Par exemple, dans la définition de la FUNCTION «fonc.m», si l’on ajoute
des commandes pour tracer cette fonction dans l’intervalle [0, 5], chaque fois que le fichier «fonc.m»
sera appelé, un graphique sera produit, ce qui peut devenir gênant. Si l’on souhaite tracer cette
fonction, on créera plutôt un fichier SCRIPT «tracer.m» de la forme :
% Fichier tracer.m
%
% Partition de l’intervalle [0,5]
x = 0 : 0.01 : 5.0 ;
% Evaluation de la fonction sur tout le vecteur x
y = fonc(x);
% Graphique de la fonction
plot(x,y, ’-’)
qui produira le graphique souhaité.
Notons enfin que les algorithmes pour le cours d’analyse numérique ont été programmés à l’aide
de fichiers FUNCTION : bissect.m, newton.m, etc.
2 Chapitre 1
Chapitre 2
Tous les programmes fournis fonctionnent essentiellement de la même manière, avec des argu-
ments d’entrée et de sortie qui varient suivant la méthode. Un simple copier-coller des exemples
d’appel (obtenu à l’aide la commande «help») est souvent suffisant pour les utiliser. Vous pouvez
aussi vous inspirer des programmes fournis pour créer vos propres applications dans Matlab.
ans =
Inf
>> 0/0
ans =
NaN
eps C’est une variable interne de Matlab qui contient la précision machine (en double précision).
>> eps
ans =
3
4 Chapitre 2
2.220446049250313e-16
L’exemple de la section 1.3 illustre comment créer un fichier SCRIPT pour déterminer la
précision machine.
Programmes spécifiques 5
Exemples d’appel:
Si vous avec une fonction anonyme (@) (on ne met pas les apostrophes)
[x, err] = newton(f_anonyme, df_anonyme, 2.0, 10, 1.0e-6)
[x, err] = newton(f_anonyme, df_anonyme, 2.0, 10, 1.0e-6, ’resul.dat’)
Arguments
Entree:
1) f: Le nom entre apostrophes (’ ’) du fichier .m contenant la fonction f(x).
comme par exemple ’fonc’ (correspondant à un fichier fonc.m)
ou encore le nom de la fonction anonyme comme par exemple
f_anonyme = @(x) x*x - 2.;
2) df: mêmes indications qu’au point 1 mais pour la dérivée de la fonction;
3) x0: Vous devez fournir un estimé initial.
4) nmax: Vous devez fournir le nombre maximal d’itérations.
5) epsilon: Vous devez fournir le critère d’arrêt.
6) resul: Si vous voulez les résultats dans un fichier, vous
devez fournir le nom entre apostrophes (’ ’) de ce fichier.
Exemple: ’resul.dat’ qui créera un fichier nommé resul.dat.
Retour:
1) x est un vecteur contenant les différentes itérations.
2) S’il y a convergence, err est le vecteur dont les composantes sont |x_n - r|,
r étant la racine trouvée. Sinon, err est une matrice vide.
Il suffit donc de modifier à votre guise les arguments pour résoudre un problème à l’aide de la
méthode de Newton.
Programmes spécifiques 7
9.967851718861696e-01
>> I = int_simpson13(fn, 0, pi/2, 8)
I =
1.000008295523968e+00
a calculé l’intégrale de la fonction y = sin(x) dans l’intervalle [0, π/2] avec 8 sous-intervalles en
utilisant respectivement les méthodes des trapèzes et Simpson 1/3.
10 Chapitre 2
>> fn = @(t,y) -y + t + 1;
>> [t,y] = euler_explicite(fn, 0.0, [1], 0.1, 10)