Introduction à MATLAB pour Mathématiques
Introduction à MATLAB pour Mathématiques
Introduction 1
0.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
0.1.1 Recherche des zéros d’une fonction . . . . . . . . . . . . . . . . . . . 2
ii
CONTENTS iii
Représentation graphique en 2D et 3D 42
0.15 La commande « plot » et la commande « …gure » . . . . . . . . . . . . . . 42
0.16 Graphiques multiples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
0.17 Formater un graphique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
0.18 Types de représentations graphiques . . . . . . . . . . . . . . . . . . . 49
0.19 Représentation de plusieurs repères dans une même …gure . . . . . . . . . . 49
0.20 Représentation graphique en 3D . . . . . . . . . . . . . . . . . . . . . . . . 50
0.21 Courbes en 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
0.22 Surfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
0.23 Exercices d’application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Annexes 57
0.24 TP1:Prise en main de Matlab : manipulation des vecteurs et des matrices . 57
0.24.1 1- Manipulation des vecteurs . . . . . . . . . . . . . . . . . . . . . . 57
0.25 TP2: Prise en main de Matlab : manipulation des vecteurs et matrices . . . 63
0.25.1 2- Manipulation des matrices . . . . . . . . . . . . . . . . . . . . . . 63
0.26 TP 3: Les …chiers scripts et functions . . . . . . . . . . . . . . . . . . . . . 67
0.27 TP 4: Les graphiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Bibliography 75
Préface
Nous avons choisi MATLAB pour illustrer ce cours car, parmi les systèmes actuels, il
nous semble être le seul à être à la fois d’accès facile, très di¤usé (aussi bien par le nombre
d’utilisateurs que par la diversité des machines le supportant). MATLAB est un langage
de haut niveau et un environnement interactif qui permet de résoudre des problèmes
d’ingénierie et scienti…ques à grande échelle. Il permet au programmeur de dé…nir et de
manipuler des fonctions, de visualiser des expressions mathématiques, de résoudre des
systèmes d’équations, d’intégrer des expressions algébriques, et bien plus encore.
La programmation est devenue un outil indispensable dans notre vie moderne. Elle
nous permet de créer des applications et des sites web, de gérer des bases de données,
d’automatiser des tâches et bien plus encore, ce qui peut aider à réduire le temps et les
coûts nécessaires pour e¤ectuer certaines tâches. La programmation peut nous aider aussi
à résoudre des problèmes complexes et à trouver des solutions innovantes.
Matlab est un langage de programmation très populaire dans les domaines des sciences,
de la technologie, de l’ingénierie et des mathématiques (STEM). Il est utilisé pour résoudre
des problèmes complexes et pour analyser des données. Il peut être utilisé pour créer
des modèles mathématiques, des simulations numériques et des applications graphiques.
Les étudiants en STEM peuvent tirer parti de Matlab pour résoudre leurs problèmes
scienti…ques et technologiques. Matlab o¤re une variété d’outils puissants qui peuvent
aider les étudiants à comprendre leurs sujets plus rapidement et plus e¢ cacement. Les
étudiants peuvent également utiliser Matlab pour créer des visualisations complexes qui
peuvent être utilisées pour expliquer leurs concepts à un public plus large.
MATLAB est un logiciel de calcul numérique commercialisé par la société Math-
Works. Il a été initialement développé à la …n des années 70 par Cleve Moler, professeur
de mathématique à l’université du Nouveau-Mexique puis à Stanford, pour permettre aux
étudiants de travailler à partir d’un outil de programmation de haut niveau et sans appren-
dre le Fortran ou le C. C’est est un logiciel de calcul matriciel à syntaxe simple (relative-
ment à des langages évolués comme C, C++). Avec ses fonctions spécialisées. L’avantage
indéniable de MATLAB réside en une syntaxe assez simple et intuitive. L’abrévation MAT-
LAB signi…e en anglais "Matrix laboratory", tous les objets en jeu sont des matrices, y
compris les scalaires ( qui sont considérés comme matrices 1 1). En MATLAB, il existe
deux modes de fonctionnement :
1
Introduction
1 L’objectif du chapitre 1 est de donner une introduction à Matlab avec des indications
pour l’installation et une description de l’interface graphique.
2 Le chapitre 2 est dédié aux fonctions, les …chiers scripts, comment les utiliser et comment
les construire, ainsi , qu’aux premiers éléments de programmation : les opérateurs
logiques, les structures conditionnelles et les boucles.
3 Dans le chapitre 3, on traite de l’utilisation des scripts a…n d’organiser le travail et aussi
des moyens de générer des graphiques en deux et trois dimensions.
Chaque chapitre contient une section d’une série d’exercices, elle sert à aider l’étudiant
à pratiquer les notions vues en cours.
La partie d’annexes est constitué de textes de travaux pratiques élaborés pour étudier
pratiquement les instructions Matlab déjà présentés en séances de cours.
0.1 Motivation
2
Introduction
Il faut fournir alors, d’une part la fonction f elle-même, et d’autre part une estimation
de x0 .Comme toute langage de calcul numérique approché la commande fzero est basée sur
un algorithme de résolution, l’e¢ cacité de cet algorithme est comme toujours dépendante
de la valeur estimée choisie.
Par exemple on cherche le zéro de la fonction suivante :
f (x) = cos(x) x2
3
Introduction
f = @(x) (cox(x)-x^2) ;
fzero(f,1)
ans =
0.8241
fzero(f,-1)
ans =
- 0.8241
4
Généralités et prise en main
Ce chapitre montre comment utiliser MATLAB pour faire des opérations arithmétiques.
On montre ensuite comment dé…nir des variables: scalaires, vecteurs, matrices (l’opérateur
d’a¤ectation) et utiliser ces variables dans les calculs arithmétiques.
On suppose que le logiciel est installé sur l’ordinateur et que l’utilisateur peut démarrer le
programme. Une fois le programme démarré, la fenêtre du bureau MATLAB s’ouvre avec
la disposition par défaut (0.2). La mise en page a une barre d’outils en haut et quatre
fenêtres en dessous.
5
Chapitre 1. Leishmaniose viscérale
>> quit.
4. Workspace (espace de travail) : permet de visualiser les variables dé…nies, leur type,
la taille occupée en mémoire. On peut vider l’espace de travail avec la commande :
0.3 Le Help
Une façon e¢ cace de découvrir Matlab est d’utiliser le help. Pour obtenir de l’aide sur
un sujet, une instruction ou une fonction, on tape help suivi par le sujet, l’instruction ou
la fonction désirée.
1. helpwin ouvre une fenêtre contenant la liste des commandes Matlab ainsi que leurs
documentations.
6
Chapitre 1. Leishmaniose viscérale
4. lookfor nom : recherche une instruction à partir du mot clé nom (si on ne connait
pas la commande) exemple lookfor plot donne une liste de toutes les commandes
qui ont un rapport avec plot. lookfor sin : on trouvera que la commande sin
correspond, sans surprise, à la fonction sinus.
Dans cette partie, on aborde uniquement les opérations arithmétiques sur des scalaires,
qui sont des nombres (tableau 1 1). Comme cela sera expliqué plus loin dans le chapitre,
les nombres peuvent être utilisés dans les calculs arithmétiques directement (comme avec
une calculatrice) ou ils peuvent être a¤ectés à des variables, pour ensuite être utilisées
dans les calculs.
Les symboles des opérations arithmétiques sont:
Example 0.4.1
Si l’on regarde ce que donne l’exemple d’addition :
2+3
ans =
5
On peut remarquer que lorsqu’aucune variable d’a¤ectation n’est pas spéci…ée pour
stocker le résultat de l’opération, MATLAB stocke le résultat dans une variable appelée
ans (diminutif pour answer). Cette variable sera écrasée à chaque nouvelle opération.
Pour éviter cela, on peut spéci…er le nom d’une variable pour stocker le résultat. On
pourra alors réutiliser le résultat de l’opération plus tard. Par exemple :
x=3+2
x=
5
7
Chapitre 1. Leishmaniose viscérale
x prend alors la valeur 5. Cette variable peut alors être réutilisée dans un calcul suivant
:
x=2
ans =
2:5000
MATLAB exécute les calculs selon l’ordre de priorité a¢ ché ci-dessous. Cet ordre est le
même que celui utilisé dans la plupart des calculatrices.
1. ()
2. ^
3. * /
4. +
Example 0.4.2
3 + 2 4^2
Example 0.4.3
((3 + 2) 4)^2
Une variable est une zone mémoire qui stocke une valeur et qui peut être référencée par
un nom. Elle est utilisée pour stocker des données et des informations qui peuvent être
modi…ées au cours de l’exécution d’un programme..
On distingue plusieurs types de variable selon les données qu’elles servent à stocker
(nombre, tableau, matrice, structure). Contrairement à d’autres langages de programma-
8
Chapitre 1. Leishmaniose viscérale
tion, sous MATLAB le type des variables n’a pas besoin d’être spéci…é, MATLAB infère
le type d’une variable en fonction de la donnée que l’on y stocke.
Les variables sont créées lors de la première a¤ectation (opération qui permet d’attribuer
une valeur à une variable).
A = 0 on a¤ecte la valeur 0 à la variable A, si A n’existait pas auparavant, elle est
créée.
B = 11 on a¤ecte la valeur 11 à la variable B.
On peut alors utiliser une variable dans un calcul ou pour a¤ecter son contenu à une
autre variable.
A = B on a¤ecte la valeur contenue dans B à la variable A, A vaut à présent 11, B
reste inchangée.
A = A + 1 ,on a¤ecte la valeur contenue dans A incrémentée de 1 à la variable A, A
vaut à présent 12.
Sous MATLAB, l’a¤ectation se fait à l’aide de l’opérateur =
A=0
B = 11
A=B
A=A+1
Remark 0.4.1 1) Le symbole ";" est utilisé par Matlab dans deux situations di¤érentes:
-Pour ne pas a¢ cher le résultat d’une commande( par exemple :A=0; si on regarde
dans le workspace, on va voir que la variable a été crée, mais matlab ne va pas l’a¢ cher).
-Pour séparer les lignes d’un tableau (matrice, vecteur).
2) Il faut éviter d’utiliser comme nom de variable des noms déjà employés comme
nom de fonctions (par ex : min, max, exp ...). MATLAB générera également une erreur
si un des mots-clés réservés suivant est utilisé : for, end, if, while, function, return, elseif,
case, otherwise, switch, continue, else, try, catch, global, persistent, break. Ces mots-clés
font partie de la syntaxe du langage MATLAB, nous verrons dans la suite des exemples
d’utilisation de certains de ces mots-clés.
3) On a un choix très ouvert pour le nom, mais ce nom doit commencer par une lettre.
Par exemple, si vous commencez par un nombre 12A égale 3, ça ne pourra pas marcher.
Et en e¤et, vous avez une erreur.12A= 3 Error: Unexpected MATLAB expression
9
Chapitre 1. Leishmaniose viscérale
4) Il n’est pas nécessaire de déclarer une variable. Sa taille ou son type sont dé…nis
automatiquement.
5) Le nombre de charactères doit être inferieur à 63 (namelengthmax).
6) Aussi, il faut savoir que si vous avez une variable en minuscules et une variable qui
s’appelle presque pareil, mais en majuscules, MatLab va considérer ces 2 variables comme
di¤érentes.
7) Le résultat d’une opération est a¢ ché avec 5 chi¤res signi…catifs. La précision par
défaut correspond au format short. Pour plus de précision, on choisira le format long.
Aspects élémentaires
Il est également possible de lister les variables du workspace via l’instruction « whos, who
»,
who a¢ chage des variables dans l’espace de travail,
whos a¢ chage détaillé des variables dans l’espace de travail.
On peut aussi utiliser la commande class: elle retourne le nom de la classe à laquelle
appartient la variable donnée comme argument.
La commande « clear » permet de supprimer une variable du workspace (« clear
all » les supprime toutes, clear var1 var2 e¤ace que les variables var1 et var2). Toutes
les commandes tapées dans la Command window peuvent être retrouvées et éditées grâce
aux touches de direction. Appuyez sur la touche * pour remonter dans les commandes
précédentes, + pour redescendre.
Des commandes permettent de véri…er le type d’une variable.
isnumeric, ischar ou islogical permet de véri…er si une variable est respectivement
numérique, de type caractères ou logique. Ces fonctions renvoient 0 si c’est faux, et 1 si
c’est vraie.
Pour les variables de types caractères: char, la déclaration se fait à l’aide du symbole
apostrophe, on peut aussi lier des mots à l’aide des crochets.
Example 0.4.4
On veut créer la chaine de caractères Good Moring, on fait :
s1=’Good’;
s2=’Morning’;
s=[s1 s2]
s = Good Morning
10
Chapitre 1. Leishmaniose viscérale
Constantes prédé…nies
Il existe des symboles auxquels sont associés des valeurs prédé…nies. En voici quelques uns
:
pi le nombre , i ou j le nombre complexe, eps :2.2204e-16, NAN not a number
Attention, ces valeurs peuvent être écrasées si le symbole est redé…ni
pi=1
pi=
1
clear pi
pi
ans =
3.1416
Matlab peut aussi manipuler explicitement des nombres complexes:
a = 2 + i*3;
b = 1 - i;
a+b
ans=
3 + 2i
11
Chapitre 1. Leishmaniose viscérale
Fonctions trigonométriques :
Symbole Fonction
sin(x) la fonction sinus
cos(x) la fonction cosinus
tan(x) la fonction tangente
asin(x) la fonction arcsinus
acos(x) la fonction arccosinus
atan(x) la fonction arctangente
sinh(x) la fonction sinus hyperbolique
cosh(x) la fonction cosinus hyperbolique
tanh(x) la fonction tangente hyperbolique
Fonctions puissances, exponentielle, racine carrée et logarithmes :
QUELQUES GÉNÉRALITÉS
12
Chapitre 1. Leishmaniose viscérale
3. L’instruction what renvoie la liste des …chiers spéci…ques à Matlab, notamment ceux
possédant l’extension .m, dans le répertoire courant.
6. Les noms des …chiers de programmes simples (scripts) et des fonctions doivent être
suivis de l’extension .m. Ces noms ne doivent comporter ni caractères spéciaux
(accents, slash, etc.) ni espaces.
7. Le symbole "%" sert à faire un commentaire sous Matlab, toute instruction écrite
aprés "%" ne sera pas évaluer.
help elfun
Pour une liste de fonctions mathématiques plus avancées ou sur les matrices, taper
:help specfun, help elmat
Quelques fonctions, comme sqrt et sin sont des fonctions (built-in). Ceci signi…e
qu’elles font parties intégrantes du noyau Matlab.
La méthode la plus simple pour dé…nir un vecteur est de donner sa description explicite à
l’aide de la commande [ ], par exemple :
13
Chapitre 1. Leishmaniose viscérale
vec1 = [1 3 5];
vec2 = [9 10 11];
vec = [vec1 vec2]
vec=
1 3 5 9 10 11
vec1 = [1 3 5];
vec = vec1’
vec=
1
3
5
Remark 0.5.1 Il n’est pas nécessaire de dé…nir la taille d’un vecteur (c’est automatique),
par contre la commande length() permet de retourner cette quantité.
length(vec)
ans =
3
Lorsque l’on veut a¢ cher le graphe d’une fonction f telle que y = f(x) sous Matlab, il
faut dé…nir deux vecteurs : un pour le vecteur x, l’autre pour le vecteur y = f(x). Matlab
ne fait pas du calcul formel, il faut donc discretiser l’axe des x. On utilise pour ce faire la
fonction linspace(a,b,n). Cette commande génère un vecteur ligne de n éléments espacés
linéairement entre a et b. Par défaut n = 100.
Une autre méthode pour générer des vecteurs espacés linéairement consiste à utiliser
l’opérateur (:), on fait alors : [a:s:b]. On crée alors un vecteur entre a et b avec un
espacement s :
vec=[1:2:10]
vec =
13579
14
Chapitre 1. Leishmaniose viscérale
vec = linspace(1,10,10)
vec =
1 2 3 4 5 6 7 8 9 10
vec(4)
ans =
4
vec(4.2)
S u b sc rip t in d ic e s m u st b e re a l p o sitive inte g e rs o r lo g ic a l.
vec = linspace(1,89,9)
vec =
1 12 23 34 45 56 67 78 89
vec(3:6)
ans =
23 34 45 56
vec(4:2:8)
ans =
34 56 78
subvec=[1 3 5]; vec(subvec)
ans =
1 23 45
le mot-clé end permet d’accéder au dernier élement.
15
Chapitre 1. Leishmaniose viscérale
Les opérations algébriques usuelles +, -, *, / doivent être prises avec précautions pour les
vecteurs. La somme et la di¤érence sont des opérations termes à termes, et nécessitent
donc des vecteurs de même dimension. Le produit * est le produit matriciel. Nous y
reviendrons dans la section sur les matrices. Pour utiliser la mutliplication ou la division
termes à termes on doit remplacer * par .* et / par ./
16
Chapitre 1. Leishmaniose viscérale
vec = linspace(1,10,10);
out=sqrt(vec)
out =
Columns 1 through 5
1.0000 1.4142 1.7321 2.0000 2.2361
Columns 6 through 10
2.4495 2.6458 2.8284 3.0000 3.1623
out2=vec.^2
out2 =
Columns 1 through 5
1 4 9 16 25
Columns 6 through 10
36 49 64 81 100
out3=cos(vec)
out3 =
Columns 1 through 5
0.5403 -0.4161 -0.9900 -0.6536 0.2837
Columns 6 through 10
0.9602 0.7539 -0.1455 -0.9111 -0.8391
Il existe aussi des commandes qui sont propres aux vecteurs.
[J, I] = sort(x) : retourne en plus les indices des élements d’un vecteur x.
17
Chapitre 1. Leishmaniose viscérale
[J, I] = …nd(x) retourne des lignes (dans le vecteur I) et des colonnes (dans le
vecteur J) des élements non nuls du x.
median(x) : médiane.
Ces fonctions peuvent être appliquées aux vecteurs même pour les matrices
Certaines fonctions de Matlab s’appliquent à l’ensemble d’un vecteur. Lorsqu’on les
applique à des matrices, elles opèrent colonne par colonne.
0 1
1 2
A=@ A
3 4
A = [1 2 ; 4 3]
A=
12
43
18
Chapitre 1. Leishmaniose viscérale
A = [1 2 5 ; 4 3 6]
A=
125
436
[m n] = size(A)
m=
2
n=
3
size(A,1)
ans =
2
On peut construire trés simplement une matrice ”par blocs”. Si les quatres matrices
(aux dimensions compatibles), on dé…nit la matrice
0 1
A B
M =@ A
C D
19
Chapitre 1. Leishmaniose viscérale
eye(3)
ans =
100
010
001
ones(2,4)
ans =
1111
1111
zeros(2)
ans =
00
00
rand(2,3)
ans =
0.8147 0.1270 0.6324
0.9058 0.9134 0.0975
20
Chapitre 1. Leishmaniose viscérale
A = [1 2 5 ; 4 3 6]
A=
125
436
A(2,1)
ans =
4
Lorsque l’on souhaite extraire une colonne ou une ligne entière on utilise le symbole
(:) comme on va le voir dans l’exemple suivant :
A(2,:)
ans =
436
A(:,1)
ans =
1
4
Toutes les combinaisons sont alors possibles. On peut extraire 2 colonnes par exemple
en faisant :
A(:,[1 2])
ans =
12
43
Comme pour les vecteur il est possible d’obtenir la transposée d’une matrice avec la
commande ’.
A’
ans =
14
23
56
Il existe des commandes matlab permettant de manipuler globalement des matrices.
La commande diag permet d’extraire la diagonale d’une matrice : si A est une matrice,
21
Chapitre 1. Leishmaniose viscérale
diag(A) est le vecteur composé des éléments diagonaux de A. La même commande permet
aussi de créer une matrice de diagonale …xée : si v est un vecteur de taille n, A=diag(v)
est la matrice diagonale dont la diagonale est v.
A=eye(3)
diag(A)’
A=
100
010
001
ans =
111
v=[1:3];
diag(v)
ans =
100
020
003
On passe maintenant au opérations matricielles qui sont à la base du calcul sous Mat-
lab.. L’objectif ici est de revoir les opérations matrcielles telles que : l’addition et la
soustraction, le produit et l’inversion des matrices.
On commence par l’addition et la soustraction. Ces opérations sont possibles unique-
ment sur des matrices de taille identique. Ce sont des opérations termes à termes, similaires
aux opérations scalaires. Par exemple :
0 1 0 1 0 1
1 5 4 2 5 7
@ A+@ A=@ A
3 2 0 4 3 2
A = [1 5 ; -3 2]; B = [4 2 ; 0 -4];
M = A+B
M=
57
-3 -2
22
Chapitre 1. Leishmaniose viscérale
Par contre la multiplication mérite une attention particulière. Il existe deux types de
multiplication : la multiplication dite matricielle et la multiplication termes à termes.
Commençons par cette dernière : la multiplication termes à termes est l’analogue de
l’addition et de la soustraction vues précédemment. Sous Matlab elle se note de façon
spéci…que pour la distinguer de la vraie multiplication matricielle : A.*B
A = [1 5 ; -3 2]; B = [4 2 ; 0 -4];
M = A.*B
M=
4 10
0 -8
De même si l’on souhaite obtenir le carré d’une matrice (au sens du produit termes à
termes de cette matrice par elle même) on écrit : A.^2
A = [1 5 ; -3 2 ; 1 3]; M=A.^2
M=
1 25
94
19
Comme on a dit précédemment, il faut faire attention à la taille des matrices pour que
le produit soit dé…ni. Par exemple si l’on essaie de faire calculer le produit BA on obtient
une erreur :
A = [4 2 ; 0 1]; B = [1 2 3; 5 4 6]; B*A
Error using *Inner matrix dimensions must agree.
23
Chapitre 1. Leishmaniose viscérale
Maintenant que l’on dispose du produit matriciel, on peut dé…nir l’inversion. En e¤et, on
note A 1, l’inverse de A (quand il existe) et on dé…nit A 1 par :
A = [4 2 ; 0 1]; M = inv(A)
M=
0.2500 -0.5000
0 1.0000
La division se dé…nit à partir de l’inverse :
A=B = AB 1:
Elle nécessite donc que B soit inversible et que les dimensions de A et B soient com-
patibles. Elle s’implémente sous Matlab de façon simple :
Nous allons maintenant utiliser le formalisme matriciel pour résoudre un système d’équations.
Le système que nous cherchons à résoudre est le suivant :
8
>
> 3x + 5y + z = 1
>
<
7x 2y + 4z = 3
>
>
>
: 6x + 3y + 2z = 3:
24
Chapitre 1. Leishmaniose viscérale
tel que
M X = b:
Pour obtenir les solutions du système linéaire, il ne reste plus qu’à inverser la matrice
M . On a donc :
1
X=M b:
Il existe deux méthodes pour implémenter ce calcul sous Matlab. La première méthode
reprend ce que nous avons appris précédemment. On doit dé…nir la matrice M et le vecteur
b, calculer l’inverse de M et faire le produit avec b :
M = [3 5 1 ; 7 -2 4 ; -6 3 2]; b = [1 -3 3]’;
X=inv(M)*b
X=
-0.3100
0.3886
0.0131
La seconde méthode est plus élégante. Elle introduit la division à gauche. Lorsque
l’on note sous Matlab M nb cela signi…e inv(M ) b. C’est la division à gauche. Rappelons
nous que la division à droite (la division usuelle) était dé…nit à l’aide de l’inverse : b=M
signi…e b inv(M ):
Remark 0.6.1 la fonction prédé…nie "solve" permet de calculer les racines d’une ou un
système d’équations. Si nous voulons l’appliquer sur notre exemple, il su¢ t d’écrire:
syms x y z
[x,y,z]=solve(’3*x+5*y+z==1,7*x-2*y+4*z==-3,-6*x+3*y+2*z==3’,[x,y,z])
x=
-71/229
y=
89/229
z=
-3/229
25
Chapitre 1. Leishmaniose viscérale
Exercice 1: (Exercice de type Calculatrice) Faire les calculs suivants (en ligne de com-
mande) :
x = 1 + 3=2
y = x2 + 1
w = (1 + y)x
Exercice 2: Donner les commandes Matlab permettant de calculer les expressions suivantes
:
26
Chapitre 1. Leishmaniose viscérale
q p
4+ 7
1. 5
p
b2 + b2 4ac
2. 2a ;a = 3; b = 3; c = 4
3. e x3 x2 ; x =6
4. e x sin x; x = 0:5
5 + 11
1.
12 6
1 1 1
+ +
2. 2 32 5
4
6
5
3 + 5 + 6
1 2
3. +
12 62 3
1
2
4. 1+ 3
2
12 62
TC = aTF + b;
27
Chapitre 1. Leishmaniose viscérale
28
Introduction à la programmation
sous Matlab
La plupart du travail sous Matlab va consister à créer ou modi…er des …chiers .m . Lor-
sque l’on réalise une tâche sous Matlab, il est trés souvent possible de le faire en utilisant
uniquement la Command Window. Cependant lorsque cette tache devient plus com-
plexe (plusieurs dizaines de ligne de code) ou que l’on souhaite pouvoir la transmettre à
quelqu’un d’autre simplement, on utilise la fenêtre Editor. On crée un …chier .m qui peut
être au choix un script ou une fonction (function en anglais).
Un …chier de script est un …chier contenant une suite d’instruction MATLAB. Les …chiers
script ont une extension de nom de …chier .m. Les M-…les peuvent être des scripts qui
exécutent simplement une suite d’instructions ou peuvent être des fonctions.
Example 0.8.1
Créer le script "test script" (soit vous tapez >>edit test_script.m, soit vous faites ’File’-
>’New’->’M-…le’ puis ’Save As’ en spéci…ant "test script.m" comme nom) avec la suite
29
Chapitre 1. Leishmaniose viscérale
d’instructions suivante :
Matlab permet de dé…nir des fonctions. Une fonction est un ensemble d’instructions
regroupées de manière à ne pas devoir les répéter régulièrement. Une fonction peut prendre
des arguments et renvoyer des valeurs. (Par exemple, si l’on fourni à une fonction une
date de naissance, cette fonction peut renvoyer l’âge de la personne)
La dé…nition d’une fonction se fait de la manière suivante :
Attention, pour que matlab reconnaisse une fonction et sache l’utiliser à partir de
l’espace de travail, il est obligatoire que le nom du M-…le soit identique au nom donné à
la fonction.
A titre d’exemple, nous allons créer une fonction de calcul de la moyenne. Dans
le répertoire courant, créer le …chier myMean.m (>>edit myMean.m) contenant le code
30
Chapitre 1. Leishmaniose viscérale
suivant :
myMean(note)
a = myMean(note)
[a,b] = myMean(note)
[a,b,c] = myMean(note)
31
Chapitre 1. Leishmaniose viscérale
%*******************************************************%
% Programme Principal %
%*******************************************************%
clear all
clc
note = [2,18,5,15] % déclaration de mon vecteur
[a,b,c] = myMean(note) % appel à ma fonction myMean()
Il est indisponsable de sauvegarder ce …chier script dans le même dossier que le …chier
de la fonction myMean() .
Symbole Signi…cation
== égal à
> strictement superieur
< strictement inferieur
>= superieur ou égal
<= inferieur ou égal
~= di¤érent
Le résultat d’une évaluation d’un test logique à l’aide des opérateurs de comparaison
peut être "vrai" ou "faux" c-à-d 1 si vrai , 0 si faux
32
Chapitre 1. Leishmaniose viscérale
Example 0.9.1
x=3,y=4,x==3,x==y,x~=3,x~=y,x>3,x<3
x=
3
y=
4
ans=
1
ans=
0
ans=
0
ans=
1
ans=
0
ans=
0
Question
Que se passe-t’il si l’un des opérandes est un tableau de valeurs numériques ? Et si les
deux opérandes sont des tableaux ?
A=[1 4; 3 2]
A=
14
32
A>2
ans =
01
10
33
Chapitre 1. Leishmaniose viscérale
A=[1 2 ; 3 -2];
B=[-3 2.5 ; 1 -1];
T=A>B
T=
10
10
Les opérateurs logiques sont des opérateurs qui s’appliquent exclusivement sur des valeurs
de type logique. Ils permettent la combinaison de conditions logiques.
Syntaxe Matlab
Opérateur logique Symbole Fonction
A et B A&B and(A,B)
A ou B AjB or(A,B)
Négation de A ~A not(A)
A et B peuvent être des valeurs scalaires logiques ou des tableaux de valeurs logiques
de même dimensions. Pour les tableaux, ces opérations s’appliquent terme à terme.
34
Chapitre 1. Leishmaniose viscérale
Example 0.10.1
a = 1; b = 0; c = 1; d = 0;
a&c
ans =
1
a&b
ans =
0
b&d
ans =
0
b&a
ans =
0
Un ET logique entre 2 propositions renvoie VRAI si et seulement si les deux propositions
sont vraies.
ajc
ans =
1
ajb
ans=
1
bjd
ans=
0
bja
ans=
1
Un OU logique entre 2 propositions renvoie FAUX si et seulement si les deux propositions
35
Chapitre 1. Leishmaniose viscérale
sont fausses.
~a
ans =
0
~b
ans=
1
~bja
ans =
1
~(bja)
ans =
0
Forme 1
if <expression booléenne>
<suite d’instructions exécutée si l’expression est VRAI>
end
Forme 2
if <expression booléenne>
<suite d’instructions 1 exécutée si l’expression est VRAI>
else
<suite d’instructions 2 exécutée si l’expression est FAUSSE>
end
Forme 3
if <condition1>
<suite d’instructions 1 exécutée si condition1 est VRAI>
elseif <condition 2>
<suite d’instructions 2 exécutée si condition1 est FAUSSE et que condition 2 est
VRAI>
. . .
else
36
Chapitre 1. Leishmaniose viscérale
La boucle for répète une suite d’instruction un nombre …ni de fois. Sa syntaxe est la
suivante :
for compteur=valeur initiale:pas:valeur …nale
une suite d’instructions
end
Example 0.12.1
N=5;
for k = 1:N
x(k)= 1/2*k;
end
Cet exemple construit élément par élément un vecteur x de dimension 5.
Il arrive que nous souhaitions répéter une suite d’instructions jusqu’à qu’une condition soit
satisfaite. Si l’on ne connait pas le nombre d’itérations nécessaire à l’avance, une boucle
while est préférable par rapport à une boucle for.
while <condition>
<suite d’instructions>
37
Chapitre 1. Leishmaniose viscérale
end
La <suite d’instructions> va être répétée tant que <condition> est vrai, ou dit autre-
ment jusqu’à ce que <condition> soit fausse.
Le terme expression est une expression logique. Si cette dernière est vraie, le bloc
instructions est exécuté. Puis, expression est de nouveau testée. L’exécution du bloc est
répétée tant que le test est vrai.
Example 0.13.1
compteur = 0;
while compteur < 10
disp(‘toujours dans la boucle’) ;
compteur = compteur + 1;
end
Cet exemple a¢ che 10 fois la chaîne de caractère toujours dans la boucle.
Example 0.13.2
Faire un programme qui calcule la somme suivante :
s = 1 + 2 + 3 + :::, on arrête le calcul quand s>5
clear all
clc
s=1;i=1;%initialisation de deux variables i, s
while s<=5 %le test d’arrêt
i=i+1%incrémentation de i
s=s+i % l’expression de s
end
38
Chapitre 1. Leishmaniose viscérale
t = -2:10;
for i = 1:length(t)
if t(i) == 0
break;
end
end
L’instruction SWITCH est une instruction de choix comme le IF mais avec la particularité
de pouvoir e¤ectuer plusieurs IF.
La commande SWITCH doit être utilisée dans le cas ou, par exemple, en fonction de
la valeur d’une variable, elle permet de gérer plus élégamment les tests portant sur un seul
critère pouvant prendre plus de deux valeurs entières, voici sa syntaxe :
Switch Variable
case Cst_1
script 1 (séquence d’instructions)
case Cst_2
script 2 (séquence d’instructions)
...
case Cst_n
script n (séquence d’instructions)
otherwise
(séquence d’instructions)
end
L’argument variable est de type numérique ou chaîne de caractères ;
Cst_1, . . . , Cst_n sont des constantes numérique ou des constantes chaîne de cara-
ctères;
Script i est une séquence d’instructions à exécuter si variable == Cst_i.
39
Chapitre 1. Leishmaniose viscérale
Example 0.13.3
switch x
case 0,
resultat = a + b;
case 1,
resultat = a * b;
case 2,
resultat = a/b;
case 3,
resultat = a^b;
otherwise
resultat = 0;
end
En fonction de la valeur de x une opération particulière est e¤ectuée.
L’instruction continue : dans une instruction for, while, l’instruction continue provoque
l’arrêt de l’itération courante, et le passage au début de l’itération suivante.
L’instruction continue interrompe l’exécution du bloc d’instructions en cours d’exécution,
et passe à l’itération suivante de la boucle for ou while.
Supposons que l’on parcoure un vecteur t pour réaliser un certain traitement sur tous
les éléments, sauf ceux qui sont positifs :
for i = 1:length(t)
if (t(i) > 0 )
continue; % on passe au i suivant dans le for
end
... % traitement de l’élément courant
end
Exercice 1 :
1- Ecrire une fonction qui calcule la moyenne pondérée x, d’une série statistique.
40
Chapitre 1. Leishmaniose viscérale
i=N
X
1
Rappel : x = N ni xi :
i=1
Exercice 2 :
-Ecrire un programme qui calcule le maximum d’un vecteur.
-Ecrire une fonction qui calcule le factoriel d’un nombre n.
Exercice 3 :
-Ecrire une fonction qui calcule le factoriel de la somme de deux éléments consécutifs
d’un vecteur.
-Ecrire une fonction qui calcule le factoriel de la somme terme à terme de deux vecteurs.
41
Représentation graphique en 2D
et 3D
La commande plot est utilisée pour créer un graphique en 2D avec axes linéaires. Il s’agit
de la façon la plus simple de créer une représentation graphique dans Matlab :
plot (x,y) %2-D graphique avec axes linéaires
ici x représente l’abscisse et y représente l’ordonnée (x et y sont des vecteurs).
Quand la commande "plot" est exécutée, une fenêtre appelée "…gure" apparait auto-
matiquement.
Il est possible de créer une …gure pour chaque graphique avec la commande "…gure"
la syntaxe pour dessiner deux fonctions dans deux …gures di¤érentes est la suivante :
y(x),z(x)
…gure (1),plot(x,y(x))
…gure(2),plot(x,z(x))
42
Chapitre 1. Leishmaniose viscérale
Example 0.15.1
x=0:.1:pi;y=sin(x);y2=cos(x);
…gure(1),plot(x,y)
…gure(2),plot(x,y2)
Tous les paramètres graphiques (épaisseur des lignes, échelles, limite d’axes) peuvent
être modi…és en ajoutant des arguments (optionnels):
plot (x,y, ‘LineSpec’, ‘PropertyName’, ‘PropertyValue’)
LineSpec: « line speci…ers » qui dé…nissent le style et la couleur des lignes ainsi que
le type de marqueurs. Ils peuvent se combiner entre eux et l’ordre n’importe pas.
STYLE LineSpec
Solide -
Traitillé --
Pointillé :
Point-trait -.
Couleur LineSpec
Rouge r
Vert g
Bleu b
Cyan(bleu-vert) c
Magenta(rouge violacé) m
Jaune y
Noir k
Blanc w
43
Chapitre 1. Leishmaniose viscérale
Marqueur LineSpec
plus +
cercle o
astérisque *
point .
croix x
triangle ^,<,>,v
carré s
diamant d
étoile p,h
Example 0.15.2
x=0:.1:pi;y=sin(x);
plot(x,y,’- - r *’)
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
0 0.5 1 1.5 2 2.5 3 3.5
44
Chapitre 1. Leishmaniose viscérale
Example 0.15.3
x = [-pi:0.5:pi]
y = sin(x)
plot(x,y,’–b*’,’LineWidth’,2,’MarkerSize’,12)
0.8
0.6
0.4
0.2
-0.2
-0.4
-0.6
-0.8
-1
-4 -3 -2 -1 0 1 2 3
La commande plot permet aussi de représenter plusieurs graphes dans un même graphique.
Les paramètres graphiques se comportent de la même façon.
plot (x1,y1, x2,y2,x3,y3, . . . , xn,yn) 2-D graphique avec axes linéaires
45
Chapitre 1. Leishmaniose viscérale
Example 0.16.1
x1 = [-pi:0.5:pi]
y1 = sin(x1);
y2 = cos(x1);
plot(x1,y1,’–b*’,x1,y2,’–g*’,’LineWidth’,2)
0.8
0.6
0.4
0.2
-0.2
-0.4
-0.6
-0.8
-1
-4 -3 -2 -1 0 1 2 3
La commande hold on permet de garder une fenêtre (…gure) ouverte et ainsi ajouter
d’autres graphiques dans cette fenêtre. La commande hold o¤ arrête ce procédé.
Example 0.16.2
x1 = [-pi:0.5:pi]
y1 = sin(x1); y2 = cos(x1);
plot(x1,y1,’–b*’,’LineWidth’,2)
hold on
plot(x1,y2,’g*’,’LineWidth’,5)
hold o¤
46
Chapitre 1. Leishmaniose viscérale
0.8
0.6
0.4
0.2
-0.2
-0.4
-0.6
-0.8
-1
-4 -3 -2 -1 0 1 2 3
Example 0.17.1
x=-2:0.01:1;
y=x.^2;
plot(x,y)
xlabel(’x’)
ylabel(’y’)
title(’x^2’),grid
47
Chapitre 1. Leishmaniose viscérale
2
x
4
3.5
2.5
y
1.5
0.5
0
-2 -1.5 -1 -0.5 0 0.5 1
x
0.8
0.6
0.4
0.2
-0.2 sin(x)
cos(x)
-0.4 x2
-0.6
-0.8
-1
-1 -0.5 0 0.5 1
48
Chapitre 1. Leishmaniose viscérale
Se référer à Matlab help pour les di¤érents arguments optionnels de chaque type
Plusieurs repères peuvent être mis l’un à côté de l’autre dans une même …gure avec la
commande "subplot" cette commande divise la …gure en mxn sous fenêtres contenant
chacune un graphique. La forme générale de cette commande est la suivante :
subplot(m,n,p)ou subplot(mnp), avec:
m:le nombre de ligne,n:nombre de colonne,p: la position
Example 0.19.1
x=[-pi:0.1:pi];
subplot(1,2,1)
plot(x,tan(x))
subplot(1,2,2)
plot(x,cos(x))
hold on
plot(x,sin(x))
hold o¤
49
Chapitre 1. Leishmaniose viscérale
100 1
0.8
80
0.6
60 0.4
0.2
40
0
20
-0.2
0 -0.4
-0.6
-20
-0.8
-40 -1
-4 -2 0 2 4 -4 -2 0 2 4
0.21 Courbes en 3D
Une courbe en 3D par une liste de triplets (x; y; z): L’instruction plot3 attend trois argu-
ments : les x, les y et les z.
Voici un exemple de courbe paramétrée :
t=linspace(-2,2,300);
plot3(exp(-3*t/10).*2.*sin(t), exp(-t/20).*cos(2*t), exp(-3*t))
grid
50
Chapitre 1. Leishmaniose viscérale
0.22 Surfaces
x = -1:0.2:1
x=
Columns 1 through 7
-1.0000 -0.8000 -0.6000 -0.4000 -0.2000 0 0.2000
Columns 8 through 11
0.4000 0.6000 0.8000 1.0000
y = -2:0.2:2
y=
Columns 1 through 7
-2.0000 -1.8000 -1.6000 -1.4000 -1.2000 -1.0000 -0.8000
Columns 8 through 14
-0.6000 -0.4000 -0.2000 0 0.2000 0.4000 0.6000
Columns 15 through 21
0.8000 1.0000 1.2000 1.4000 1.6000 1.8000 2.0000
En combinant toutes ces valeurs de x et y, on obtient n m points dans le plan (x; y):
Il faut maintenant construire deux tableaux, l’un contenant les n m abscisses de ces
51
Chapitre 1. Leishmaniose viscérale
52
Chapitre 1. Leishmaniose viscérale
Exemple :
x = -1:0.2:1;
y = -2:0.2:2;
[X,Y] = meshgrid(x,y);
Z = 5*X.^2 +4*Y .^2 ;
…gure(1)
mesh(X,Y,Z)
title(’mesh’)
…gure(2)
subplot(2,2,1)
mesh(X,Y,Z)
title(’mesh’)
subplot(2,2,2)
meshc(X,Y,Z)
title(’meshc’)
subplot(2,2,3)
surf(X,Y,Z)
title(’surf’)
subplot(2,2,4)
sur‡(X,Y,Z)
title(’sur‡’)
…gure(3)
contour(X,Y,Z,[-0.5 0 0.5 1 2 3 ])
ch = contour(X,Y,Z, [-0.5 0 0.5 1 2 3 ]);
clabel (ch),grid
title(’contour’)
53
Chapitre 1. Leishmaniose viscérale
Pour tracer les courbes z = Cte d’une surface z = f (x; y); on peut utiliser la fonc-
tion contour. Elle s’utilise comme les instructions précédentes, mais fournit un graphe
2D dans le plan (x, y). Plusieurs paramètres optionnels peuvent être spéci…és, notam-
ment le nombre de courbes de contours à a¢ cher. Avec les matrices X; Y; Z construites
précédemment, on pourra par exemple essayer, pour tracer 10 lignes de niveau :
>> contour(X,Y,Z, 10)
Notons que l’on peut indiquer à MATLAB quelles lignes de niveaux a¢ cher. Par
exemple pour dessiner les courbes z = 0:5; 0; 0:5; 1; 2 et 3; on peut écrire :
>> contour(X,Y,Z, [-0.5 0 0.5 1 2 3 ])
Dans ce cas, il est également intéressant d’ajouter les valeurs de z le long des di¤érentes
lignes de contour. Pour cela il faut a¤ecter une variable avec la sortie de la commande
contour et utiliser la fonction clabel :
54
Chapitre 1. Leishmaniose viscérale
Exercice 1 :
En utilisant la commande plot, tracer la fonction suivante :
8
< sin(2x + 1) si x>0,
f (x) =
: cos(4x) sinon.
C’est une fonction y=f(x), où f est dé…nie par morceaux puisque sa valeur dépend d’un
test logique dé…nissant, dans cet exemple, deux domaines de dé…nition.
Voilà comment dé…nir y en fonction de x :
x=-2*pi:pi/25:2*pi;
y = sin(2*x+1) .* (x>0) + cos(4*x) .* not(x>0);
On ajoute les deux expressions sin(2x+1) et cos(4x) en les pondérant par la condition
logique dé…nissant leurs domaines de validité puis on la dessine à l’aide de la commande
plot.
plot(x,y)
55
Chapitre 1. Leishmaniose viscérale
Exercice 2 :
Tracer les fonctions suivantes :
-f (x) = 2x2 4, avec x dans [ 10; 10] :
- la fonction f (x) = x2 avec la couleur rouge et le marqueur * et la fonction g(x) = x3
avec la couleur vert et le marqueur +, sur le domaine [ 5; 5] :
-la fonction f (x) = 4x21 + x22 sur le plan [ 2; 2] [ 2; 2] :
56
Annexes
Déroulement
Votre module comporte plusieurs séances de travaux pratiques. Le but de ces séances est
multiple :
- Aborder certaines notions du cours de mathématiques sous un angle plus concret/visuel.
- Vous donner une première approche d’un logiciel professionnel de calcul scienti…que.
On suppose que vous avez réussi à installer Matlab. Commencez par lancer l’interface
graphique de MATLAB. Vous observez une fenêtre ( déja vu en cours). Pour commencer
:
L’environnement MATLAB se présente sous la forme d’un espace de travail (Command
Window), où un interpréteur de commandes exécute des opérations et des fonctions.
57
Chapitre 2. Les modèles mathématiques de la leishmaniose viscérale
Mieux vaut apprendre à se repérer tout seul que de demander en permanence à son voisin
comment faire. Ne serait-ce qu’au cas où il faudrait utiliser dans l’examen une fonction
dont on ne se souvient la syntaxe que vaguement.
58
Chapitre 2. Les modèles mathématiques de la leishmaniose viscérale
Exercice 2 : Trouver la commande qui calcule le conjugé d’un nombre complexe . Taper
help de cette commande.
Application
Soit z un nombre complexe tel que : z = 8 + 4i
1. calculer le conjugué de z .
Exercice 3 :
Donner les commandes Matlab permettant de calculer les expressions suivantes :
q p
3+ 5
1. 17
p
b2 + b2 4ac
2. 2a+4c ;a = 2; b = 3; c = 1
3. e x2 (ln x)2 ; x = 2
Matlab traite un seul type d’objet : les matrices ou tableaux! Les scalaires sont
des matrices 1 1, les vecteurs lignes des matrices 1 n, les vecteurs colonnes des matrices
n 1.
On peut construire des vecteurs et des matrices en entrant leurs coe¢ cients.
Exemples :
59
Chapitre 2. Les modèles mathématiques de la leishmaniose viscérale
1. vecteurs
>> x=[4;5;6] % les ";" séparent les éléments d’un vecteur colonne.
>> x=[1,2,3] % les "," ou les blancs séparent les éléments d’un vecteur ligne.
>> y = [x,x,x]
>> z = [x x x]
2. Matrices
>> y=[22;33;44];
>> mat1=[x’y]
>>[n,m]=size(mat1)
3. Les polynômes : Matlab représente un polynôme sous forme d’un vecteur ligne
contenant les coe¢ cients classés dans l’ordre des puissances décroissances.
60
Chapitre 2. Les modèles mathématiques de la leishmaniose viscérale
Application:
(1) Construire une suite partant de 3 et allant à 5 par pas de 0:5.
(2) Construire une suite décroissante d’entiers de 15 à 3.
(3) Construire une suite de longueur 100 de à .
Exercice 4 :
Le nom MATLAB provient de MATRIX LABORATORY. C’est un logiciel qui bien
utilisé permet d’e¤ectuer de façon relativement e¢ cace des opérations sur des tableaux,
des vecteurs ou des matrices
Taper u = [4; 5; 6], v = [2; 4; 6]; w = [2; 4; 6]: Quelle est la di¤érence entre v et w ?
61
Chapitre 2. Les modèles mathématiques de la leishmaniose viscérale
Que produit selon vous la commandeM = [1; 2; 3; 4; 5; 6; 7; 8; 9]? que donne la com-
mande M(2,3).
0 1
3 0 1
B C 4 5 6
B C
Construire les matrices A = B 1 2 C et B = @ A
@ A 1 2 3
5 10 12
Tester l’e¤et des opérateurs « ^» , « :^» , « =» et« :=» sur les matrices et les vecteurs.
Construire en une seule ligne un vecteur ligne contenant les carrés de tout les mul-
tiples de 3 compris entre 0 et 100. Construire un vecteur ligne contenant les 20
premières puissances de 2
62
Chapitre 2. Les modèles mathématiques de la leishmaniose viscérale
Exercice 1 :
Ecrire la matrice carrée M de taille 11 11 contenant les entiers de 1 à 121 rangés.
Extraire de cette matrice les matrices suivantes :
–la sous-matrice formée par les coe¢ cients mij pour i = 1; :::; 5 et j = 8; :::11;
–celles des coe¢ cients mij pour (i; j) 2 f1; 2; 5; 6; 9; 10g f1; 2; 5; 6; 9; 10g;
Exercice 2 :
1. Essayer des fonctions sur la matrice A. Par exemple, quels sont ses valeurs et vecteurs
propres? Puis, construire une matrice C de même taille que A. Essayer A+C, A C,
A: C.
63
Chapitre 2. Les modèles mathématiques de la leishmaniose viscérale
2. Résolution du système 8
< 2x1 + 4x2 = 6
: x + 2x = 11
2 1
Vecteur
>> x=rand(1,5)
>> mean(x)
>> std(x)
>> median(x)
>> sort(x)
Matrice
>> A=rand(3)
>> sort(A)
>> sort(A’)
>> max(A)
>> max(A’)
>> max(max(A))
>> sum(A)
>> cumsum(A)
>> prod(A)
>> di¤(A)
>> D=A([1,2],1:3)
>> sum(D,1)
>> sum(D,2)
Application :
64
Chapitre 2. Les modèles mathématiques de la leishmaniose viscérale
Calculer 10!.
Tirer 30 nombres aléatoirement dans l’intervalle [0; 1]. Quelle est la valeur minimale
du vecteur et la position du coe¢ cient qui la réalise? Véri…er.
Attention de ne pas confondre = qui sert à a¤ecter une valeur à une variable
et == qui sert à tester l’égalité. Les opérateurs relationnels peuvent
être utilisés avec des scalaires ou des matrices. Le résultat d’évaluation
d’une expression relationnelle est 1 (vrai) ou 0 (faux). Appliqués à une
matrice, ils rendent une matrice de même dimension, formée de 1 et de 0.
Application
>> u=5
>> u==5
>> u<=12
Reprendre la matrice
>> A=[1 2 3; 2 3 1; 3 1 2]
>> Ar=(A<=2)
>> [J,I]= …nd(A==1)
Exercice 3 :
Reprenons le vecteur y1 = [3:2; 4:8; 3:3; 3:2; 3:1; 4:2; 3:2; 3:3].
Tirer 110 nombres aléatoirement dans l’intervalle [0; 1] et grouper les dans un vecteur
x = (xi )i=1;:::;110 .
65
Chapitre 2. Les modèles mathématiques de la leishmaniose viscérale
Exercice d’application :
1. Créer le vecteur D = [cos(0),cos( 3 ),cos( 23 ),cos( )]. puis créer de deux façons
di¤érentes la matrice, 0 1
3 2 1 0
B C
B C
B 2 3 2 1 C
L=B
B
C;
C
B 1 2 3 2 C
@ A
0 1 2 3
Utiliser H;pour:
(1) Créer un vecteur colonne à six éléments appelé va qui contient les éléments du
deuxième et cinquième colonnes de H.
(2) Créer un vecteur colonne à sept éléments appelé vb contenant les éléments 3 à 6 de
la troisième ligne de B et les éléments de la deuxième colonne de H:
(3) Créer un vecteur colonne à neuf éléments, appelé vc, contenant les éléments du
deuxième, quatrième et sixième colonnes de H .
66
Chapitre 2. Les modèles mathématiques de la leishmaniose viscérale
Exercice 1 :
Créer la matrice M 1, à partir de la commande suivante :
>>M1 = magic(6)
Cette commande va créer une matrice de dimension (6 6) ayant des propriétés par-
ticulières.
Créer une matrice M5 composée de l’intersection des 1ere et 2eme lignes de M 1 1et
des 4eme , 5eme et 6eme colonnes de M 1
4. D’utiliser le nom d’une fonction Matlab telle que : sqrt, sin, cos,. . . etc.
5. D’utiliser deux mots séparées (par exemple : program st, program 1).
67
Chapitre 2. Les modèles mathématiques de la leishmaniose viscérale
Pour exécuter un script, on écrit tout simplement son nom dans la fenêtre de com-
mandes puis on clique sur entrer.
Si le script contient une (des) erreur(s), la ligne contenant l’erreur ainsi le type d’erreurs
sont a¢ chées dans la fenêtre des commandes.
Matlab contient un grand nombre de fonctions prédé…nies comme sin, cos,sqrt, sum,etc.
Il est possible de créer nos propres fonctions en écrivant leurs codes"sources" dans des
…chiers "M-Files" en représentant la syntaxe suivante :
function [s1 ; s2 ; :::; sn ] =nom_fonction (arg1 ; arg2 ; :::; argn )
% le corps de la fonction
s1 = :::% la valeur retournée pour s1
s2 = :::% la valeur retournée pour s2
...
sn = :::% la valeur retournée pour sn
end
Où:s1 ; s2 ; :::; sn sont les valeurs retournées(sorties),arg1 ; arg2 ; :::; argn sont les argu-
ments (entrées).
Le rôle d’une fonction est d’é¤ectuer des opérations sur une ou plusieurs entrées pour
obtenir un résultat qui sera appelé sortie.
Voici un exemple simple d’utilisation de fonctions (créer une fonction matlab appelée
"addition" qui a pour but de calculer la somme et la di¤érence de deux nombres x, y).
Etape 1 : Création de la fonction
Dans un …chier nommé addition.m, on écrit le texte suivant :
function [result1,result2] = addition(x,y)
result1 = x + y;
result2=x-y;
end
Etape 2 : Création d’un script qui utilise la fonction :
Dans un …chier nommé monscript.m (qui se trouve dans le même répertoire que addi-
tion.m), on écrit le texte suivant :
[a,b]=addition(2,3)( % a ici représente la somme, b représente la di¤érence
Il ne reste plus qu’à exécuter monscript.m.
68
Chapitre 2. Les modèles mathématiques de la leishmaniose viscérale
Exercice 2 :
Ecrire un …chier script pour créer une matrice J de taille (3 10) de la forme suivante.
0 1
1 1 1 1 1 0 0 0 0 0
B C
B C
J =B 0 0 0 0 0 1 1 1 1 1 C
@ A
0:5831 0:4062 0:2354 0:4088 0:9711 0:8083 0:6523 0:2193 0:3891 0:5491
(Utiliser les fonctions ones, zeros et rand ainsi que la concaténation de matrices)
Exercice 3 :
Exercice 4 :
1. Ecrire un script qui cherche le minimum d’un vecteur sans utiliser la fonction "min".
Pour se faire, initialiser une variable "mini" avec le premier élément du vecteur,
puis écrire une boucle "for" qui passera en revue chaque élément du vecteur et qui
testera si celui-ci est inferieur à "mini", si il est inferieur, on mettra à jour "mini"
avec l’élément courant du vecteur. Ainsi une fois tout le vecteur parcouru, "mini"
devrait contenir la valeur minimale du vecteur.
69
Chapitre 2. Les modèles mathématiques de la leishmaniose viscérale
Exercices 5 :
1. Écrire une fonction qui prend en entrée un vecteur et retourne le nombre de valeurs
distinctes dans ce vecteur.
Exercice d’application :
avec a une constante donnée. Ecrire une fonction Matlab pour g(x):
3. Ecrire une fonction MATLAB qui prend en entrée un vecteur et renvoie le produit
des éléments du vecteur.
Graphiques 2D
Un graphique sert à représenter dans une grande majorité des cas une grandeur physique.
Il est donc primordial de gérer les unités des axes que l’on utilise. De nombreuses
fonctions servent à personnaliser les axes en ajoutant vos propres labels, légendes et titres.
Di¤érents types de représentations sont aussi possibles, suivant le type de données que
l’on désire représenter. Nous ne présentons ici que les graphiques de type courbes, mais il
existe aussi des fonctions réalisant des histogrammes, des barres ou des camenberts pour
les données de types statistiques ou proportionnelles (help specgraph pour plus de détails).
70
Chapitre 2. Les modèles mathématiques de la leishmaniose viscérale
plot : relie deux points successifs par une ligne, ce qui donne une courbe.
stem : les di¤érents points ne sont pas reliés entre eux, mais apparaissent comme
des échantillons.
stairs les valeurs des points restent identiques jusqu’au point suivant. Similaire à un
bloqueur d’ordre 0 pour un échantillonneur (capacité très grande).
comet trace la courbe de manière continue, comme une comète qui passe.
semilogx, semilogy, loglog idem que plot sur une courbe, semi logarithmique en x ou
y ou sur une courbe logarithmique.
La première utilisation d’une de ces fonctions entraîne la création d’une fenêtre appelée
…gure. Les suivantes se tracent par défaut dans la même …gure, en e¤açant la courbe
précédente. Il est donc nécessaire de créer une nouvelle …gure pour a¢ cher 2 graphiques
di¤érents. La commande …gure crée une nouvelle fenêtre et la commande close ferme la
fenêtre en cours d’utilisation. Toute les …gures sont repérées par un numéro qui peut être
utilisé comme argument de …gure ou close pour rappeler une ancienne …gure. La syntaxe
est la même pour toutes ces fonctions. Elle permet notamment de tracer plusieurs courbes
en même temps :
>> plot(x1,y1,’couleur1’,x2,y2,’couleur2’,... )
L’argument couleur est un caractère, correspondant à une couleur dont la liste est don-
née dans l’aide de la fonction plot. Quand on ne désire tracer qu’une seule courbe, les argu-
ments x1 et ’couleur’sont optionnels. Attention, car on perd dans ce cas là l’information
sur l’axe des abscisses, et donc sur une unité (souvent le temps ou la fréquence) de la
grandeur représentée.
Il est aussi possible de superposer les courbes à l’aide de la commande hold on, qui
maintient l’a¢ chage. De la même manière hold o¤ supprime le maintient de l’a¢ chage.
Ainsi :
>> x = 0 :0.01 :2*pi;
>> y1 = sin(2*x);
71
Chapitre 2. Les modèles mathématiques de la leishmaniose viscérale
>> y2 = cos(x);
>> plot(x,y1,’r’,x,y2,’b’)
Équivaut à
>> plot(x,y1,’r’)
>> hold on;
>> plot(x,y2)
Créer un …chier “.m”permettant de comparer les di¤érents types de visualisations sur
le signal sinusoïdal généré précédemment.
La fonction polar permet de représenter des fonctions en coordonnées polaires. Ceci
présente un grand intérêt pour les diagrammes de directivité. Par exemple, ici un dia-
gramme de directivité de type cardioïde.
>> theta = 0 :0.01 :2*pi;
>> r = 1 + cos(theta+2);
>> polar(theta,r)
Remarque : il peut être nécessaire de faire un hold o¤ avant!
zoom : permet de zoomer dans la …gure a l’aide de la souris (clic gauche = zoom
+, clic droite = zoom-, double clic droite = retour à l’a¢ chage de départ, bouton
gauche appuyé ! dessin de la zone à zoomer).
72
Chapitre 2. Les modèles mathématiques de la leishmaniose viscérale
Exercices :
Ecrire la syntaxe Matlab qui donne les …gures suivantes :
Graphique en 3D
73
Bibliographie
Exemple :
>> t = 0:pi/25:10*pi;
>> plot3(sin(t+3),cos(2*t),t)
Exercice
Ecrire un programme qui permet de tracer la surface z = cos(2x) sin(y + x) en utilisant
x = [ 6 6];y = x;
74
Bibliography
[2] A Guide TO MATLAB for Beginners and Experienced Users, HUNT, Brian R., LIPS-
MAN, Ronald L.,et ROSENBERG, Jonathan M. Cambridge university press 1995.
[4] Essential MATLAB for Engineers and Scientists, Brian H. Hahn and Daniel T.
Valentine, Sixth Edition 2017.
75