0% ont trouvé ce document utile (0 vote)
10 vues79 pages

Introduction à MATLAB pour Mathématiques

Ce document est un cours sur l'utilisation de MATLAB pour les mathématiques, structuré en plusieurs chapitres abordant l'installation, les opérations arithmétiques, la programmation et la représentation graphique. Il met en avant les fonctionnalités de MATLAB, notamment la résolution de problèmes complexes et la création de visualisations. Des exercices pratiques sont inclus pour aider les étudiants à appliquer les concepts appris.

Transféré par

KAISSERLI Zineb
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
10 vues79 pages

Introduction à MATLAB pour Mathématiques

Ce document est un cours sur l'utilisation de MATLAB pour les mathématiques, structuré en plusieurs chapitres abordant l'installation, les opérations arithmétiques, la programmation et la représentation graphique. Il met en avant les fonctionnalités de MATLAB, notamment la résolution de problèmes complexes et la création de visualisations. Des exercices pratiques sont inclus pour aider les étudiants à appliquer les concepts appris.

Transféré par

KAISSERLI Zineb
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

RÉPUBLIQUE ALGÉRIENNE DÉMOCRATIQUE ET POPULAIRE

Ministère de l’Enseignement Supérieur et de la Recherche Scienti…que


Université Abdelhamid Ibn Badis de Mostaganem
Faculté des Sciences Exactes et de l’Informatique

Cours d’Outils de Programmation pour les Mathématiques 2

Ali Merina Houria


Année universitaire 2020/2021
Contents

Introduction 1
0.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
0.1.1 Recherche des zéros d’une fonction . . . . . . . . . . . . . . . . . . . 2

Généralités et prise en main 5


0.2 Démarrage de MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
0.3 Le Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
0.4 Opérations arithmétiques sur les scalaires . . . . . . . . . . . . . . . . . . . 7
0.4.1 Priorité des opérateurs . . . . . . . . . . . . . . . . . . . . . . . . . . 8
0.4.2 Utilisation et a¤ectation d’une variable . . . . . . . . . . . . . . . . 8
0.4.3 Quelques fonctions mathématiques . . . . . . . . . . . . . . . . . . . 12
0.5 Dé…nir les vecteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
0.5.1 Manipuler un vecteur . . . . . . . . . . . . . . . . . . . . . . . . . . 15
0.5.2 Opérations sur les vecteurs . . . . . . . . . . . . . . . . . . . . . . . 16
0.6 Dé…nir une matrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
0.6.1 Manipuler une matrice . . . . . . . . . . . . . . . . . . . . . . . . . . 21
0.6.2 Opérations matricielles : addition et soustraction . . . . . . . . . . . 22
0.6.3 Produit Matriciel . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
0.6.4 Inverse et division . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
0.6.5 Résoudre un système linéaire . . . . . . . . . . . . . . . . . . . . . . 24
0.7 Exercices d’application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

Introduction à la programmation sous Matlab 29


0.8 Les …chiers .m sur Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
0.8.1 Ecrire des scripts M-…les . . . . . . . . . . . . . . . . . . . . . . . . . 29
0.8.2 Ecrire des …chiers functions . . . . . . . . . . . . . . . . . . . . . . . 30

ii
CONTENTS iii

0.9 Les Opérateurs de comparaisons . . . . . . . . . . . . . . . . . . . . . . . . 32


0.10 Opérateurs logiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
0.11 Branchement conditionnel IF . . . . . . . . . . . . . . . . . . . . . . . . . . 36
0.12 Boucle for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
0.13 Boucle while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
0.13.1 Instruction break . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
0.13.2 La commande SWITCH . . . . . . . . . . . . . . . . . . . . . . . . . 39
0.13.3 Instruction continue . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
0.14 Exercices d’application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

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

University of Mostaganem M.A. Zemirni


CONTENTS iv

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.

University of Mostaganem M.A. Zemirni


Introduction

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. mode interactif : MATLAB exécute les instructions au fur et à mesure qu’elles

1
Introduction

sont données par l’usager.

2. mode exécutif: MATLAB exécute ligne par ligne un "…chier.m" (programme en


langage MATLAB).

Matlab trouve ses applications dans de nombreuses disciplines. Il constitue un outil


numérique puissant pour la modélisation des systèmes physiques, la simulation des mod-
èles mathématiques, la conception et la validation d’applications (tests en simulation et
expérimentation) . Le logiciel de base peut être complété par de multiples boîtes à outils
qu’on appelle toolboxes. Celles-ci sont des bibliothèques de fonctions dédiées à des do-
maines particuliers. On peut citer par exemple : l’Automatique, le traitement du signal,
l’analyse statistique, l’optimisation.
Le document est structuré principalement en trois chapitres :

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

0.1.1 Recherche des zéros d’une fonction

Problème: On cherche x0 tel que f (x0 ) t 0:


Un exemple pratique montrant une des fonctionnalité de MATLAB est la recherche
d’un zéro d’une foncton. Cependant, il existe une commande appelée fzero qui a deux
paramètres d’entrées, la fonction f et le point initiale x0 qui permet de trouver le zéro de
f autour de x0 :

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

Les méthodes graphiques peuvent généralement trouver une estimation de x0 , comme


indiqué ci-dessous (??), les graphes des fonctions x 7! x2 et x 7! cos(x); se coupent en
deux points sur [ ; ] ; au voisinage de 1; 1 donc x0 peut être choisi égale à l’une de ces
deux valeurs.

Figure 1 : Estimation de x0 graphiquement

On peut trouver numériquement la solution et résoudre ce problème en dé…nissant une


fonction anonyme à l’aide de l’opérateur "@" si on prend x0 = 1, on trouve le premier
zéro, si on prend x0 = 1, on trouve le deuxième :

3
Introduction

f = @(x) (cox(x)-x^2) ;
fzero(f,1)
ans =
0.8241
fzero(f,-1)
ans =
- 0.8241

Donc, les zéros de la fonction f (x) = cos(x) x2 sont approximativement 0:8241 et


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.

0.2 Démarrage de MATLAB

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.

Figure 2: Interface Graphique de Matlab

Le logiciel propose un véritable environnement de travail composé de multiples fenêtres.


Nous pouvons distinguer quatre blocs :

1. Current directory (répertoire courant) : permet de naviguer et de visualiser

5
Chapitre 1. Leishmaniose viscérale

le contenu du répertoire courant de l’utilisateur. Les programmes de l’utilisateur


doivent être situés dans ce répertoire pour être visible et donc exécutable.

2. Command window (console d’exécution) : à l’invite de commande « >> » ,


l’utilisateur peut entrer les instructions à exécuter. Il s’agit de la fenêtre principale
de l’interface. Le symbole >> situé à gauche indique que l’interpréteur est prêt à
recevoir une commande, chaque ligne etant exécutée immédiatement après la touche
Entrée.

Pour mettre …n à la session de travail et quitter l’environnement MATLAB, il su¢ t


de taper la commande :

>> quit.

On peut vider cette fenêtre avec la commande :

Edit –> clear Command Window.

3. Command history : historique des commandes que l’utilisateur a exécutées. Il


est possible de faire glisser ces commandes vers la fenêtre de commande. On peut
vider cette fenêtre avec la commande :

Edit –> clear Command History.

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 :

Edit –> clear Workspace.

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.

2. help : donne la liste de toutes les commandes par thèmes.

3. help nom : décrit la fonction nom.m (si on connait exactement la commande).

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.

0.4 Opérations arithmétiques sur les scalaires

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:

Opération Symbole Exemple


Addition + 5+3
Soustraction 5 3
Mutiplication 5 3
Division = 5=3
Puissance ^ 5^3 53 = 125

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

0.4.1 Priorité des opérateurs

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

16 1) Evaluation de 4^2 car ^ a la priorité par rapport aux autres opérateurs et +

32 2) Evaluation de 2 16 car a la priorité par rapport à l’opérateur +

ans = 35 3) Pour …nir, évalutation de 3 + 32

Example 0.4.3
((3 + 2) 4)^2

5 1) Evaluation de 3 + 2 car () à la priorité sur

20 2) Evaluation de 5 4 car () à la priorité sur ^

ans = 400 3) Pour …nir, évalutation de 20^2

0.4.2 Utilisation et a¤ectation d’une variable

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

0.4.3 Quelques fonctions mathématiques

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 :

power ou (^) sqrt exp log log10

Fonctions réels vers entiers (arrondi, troncature. . . ):


round(x) : entier le plus proche de x
‡oor(x) : arrondi par défaut de x.
ceil(x) : arrondi par excés de x.
Fonctions autres :
sign(var): (signe) retourne 1 si var>0, -1 si var<0 et 0 si var=0.
abs(var): module de var.
real(var): partie réelle de var.
imag(var): partie imaginaire de var.
gcd(var1,var2): plus grand diviseur commun des entiers var1 et var2.
lcm(var1,var2): plus petit multiple commun des entiers var1 et var2.

QUELQUES GÉNÉRALITÉS

1. L’instruction which <nom_fonction> retourne le chemin d’accès de la fonction


spéci…ée. La sélection de ce dernier et un clic droit permettent alors d’éditer le code
correspondant.

12
Chapitre 1. Leishmaniose viscérale

2. L’instruction type <nom_…chier> permet de visualiser le contenu de ce …chier.

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.

4. Pour sauvegarder la session en cours dans un …chier texte, utiliser la commande


diary. En…n, les commandes DOS cd, pwd, dir sont utilisables dans Matlab.

5. La séquence de touches CTRL-C permet de mettre …n à toute opération ou exécu-


tion en cours.

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.

8. Pour une liste des fonctions mathématiques élémentaires, taper

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.

0.5 Dé…nir les vecteurs

La méthode la plus simple pour dé…nir un vecteur est de donner sa description explicite à
l’aide de la commande [ ], par exemple :

v=[1 2 3] vecteur ligne


u=[1;2;3] vecteur colonne
On peut concaténer deux vecteurs :

13
Chapitre 1. Leishmaniose viscérale

vec1 = [1 3 5];
vec2 = [9 10 11];
vec = [vec1 vec2]
vec=
1 3 5 9 10 11

Et on peut également prendre la transposée(ou par la commande transpose) pour


passer d’une ligne à une colonne ou réciproquement :

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

0.5.1 Manipuler un vecteur

Il est important également de se familiariser à la manipulation de vecteurs, c’est-‘a-dire


être capable d’extraire des sous-vecteurs à l’aide des indices. Le kième élément d’un
vecteur vec peut être a¢ ché grâce à la commande vec(k). k doit être un entier sinon
Matlab retournera une erreur :

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.

On peut également utiliser l’opérateur (:) pour extraire un sous-vecteur :

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.

vec(end) %dernier élément


ans=
89

15
Chapitre 1. Leishmaniose viscérale

0.5.2 Opérations sur les vecteurs

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 ./

vec = [1 3 5 6]; vec2 = [10 20 30 40];


vec+vec2
ans =
11 23 35 46
vec-vec2
ans =
-9 -17 -25 -34
vec.*vec2
ans =
10 60 150 240
vec2.*vec
ans =
10.0000 6.6667 6.0000 6.6667
De la même manière que pour les scalaires, on peut appliquer toutes les fonctions
dé…nies précédemment pour les vecteurs. Par exemple :

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.

sum(x) : somme des éléments du vecteur x.

prod(x) : produit des éléments du vecteur x.

max(x) : plus grand élément du vecteur x.

min(x) : plus petit élément du vecteur x.

mean(x) : moyenne des éléments du vecteur x.

sort(x) : ordonne les éléments du vecteur x par ordre croissant.

‡iplr(x) : renverse l’ordre des éléments du vecteur x.

[J, I] = sort(x) : retourne en plus les indices des élements d’un vecteur x.

…nd(x) : retourne les indices non nuls 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.

cumsum(x) : vecteur contenant la somme cumulée des éléments de x.

prod(x) : produit des éléments de x.

cumprod(x) : vecteur contenant le produit cumulé des éléments de x.

di¤(x) : vecteur des di¤érences entre deux éléments consécutifs de x.

mean(x) : moyenne des éléments de x.

median(x) : médiane.

std(x) : écart type.

sqrt exp log sin cos


tan asin acos atan round
‡oor ceil abs angle conj

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.

Application : Construire un vecteur quelconque et essayer les fonctions ci-dessus.

0.6 Dé…nir une matrice

Une matrice va se dé…nir de façon similaire à un vecteur avec la commande [ ]. On dé…nit


la matrice A :

0 1
1 2
A=@ A
3 4

A = [1 2 ; 4 3]
A=
12
43

18
Chapitre 1. Leishmaniose viscérale

Cela est équivalent à


A = [1 2
4 3]
A=
12
43
Une matrice est composée de m lignes et n colonnes. Si on souhaite connaitre la valeur
de m ou n, on utilise la commande size(A)

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

par l’instruction M = [A B ; C D].


Il existe des commandes matlab pour des matrices prédé…nies :
eye(n) : la matrice identité (carrée de taille n).
ones(m,n) : la matrice à m lignes et n colonnes dont tous les éléments valent 1.
zeros(m,n) : la matrice à m lignes et n colonnes dont tous les éléments valent 0.
rand(m,n) : une matrice à m lignes et n colonnes dont les éléments sont générés de
manière aléatoire entre 0 et 1.

19
Chapitre 1. Leishmaniose viscérale

magic(n) : une matrice magique de dimension n.

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

Matrices creuses (help sparfun)


Les matrices creuses (sparse matrix) sont des matrices caractérisées par un nombre très
important d’éléments nuls. D’un point de vue informatique, un traitement particulier de
ces matrices permet un gain en place mémoire et en coût calculatoire. Fonctions dé…nition
sparse création d’une matrice creuse full conversion d’une matrice creuse issparse retourne
1 si la matrice est creuse speye matrice identité creuse.

20
Chapitre 1. Leishmaniose viscérale

0.6.1 Manipuler une matrice

Pour extraire un élément de la matrice on indique la ligne et la colonne de celui-ci :

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

0.6.2 Opérations matricielles : addition et soustraction

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

0.6.3 Produit Matriciel

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

Sous Matlab, on calcule le produit matriciel en utilisant simplement le signe A*B :

A = [4 2 ; 0 1]; B = [1 2 3; 5 4 6]; M=A*B


M=
14 16 24
5 4 6

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

0.6.4 Inverse et division

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 :

A = [4 2 ; 0 1]; B = [1 2 ; 5 4]; M = A/B


M=
-1.0000 1.0000
0.8333 -0.1667

0.6.5 Résoudre un système linéaire

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:

On dé…nit alors la matrice M à partir des coe¢ cients de ce système


0 1
3 5 1
B C
B C
M =B 7 2 4 C:
@ A
6 3 2
0 1
x
B C
B C
Si on note X = B y C, on peut voir que les trois lignes du produit M X correspondent
@ A
z
0 1
1
B C
B C
aux trois lignes du système. On peut alors dé…nir la matrice b = B 3 C ;
@ A
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

Il existe des commandes Matlab préde…nies pour manipuler les matrices

A’: transposée d’une matrice A.

25
Chapitre 1. Leishmaniose viscérale

rank(A) : rang d’une matrice A.

inv(A) : inverse d’une matrice A.

expm(A) : exponentielle d’une matrice A.

det(A) : déterminant d’une matrice A.

trace(A) : trace d’une matrice A.

poly(A) : polynôme caractéristique d’une matrice A.

eig(A) : valeurs propres d’une matrice A.

[U,D]=eig(A) : vecteurs propres et valeurs propres d’une matrice A.

0.7 Exercices d’application

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

v1 = 4=3 R3 (où R= 7) % dans Matlab s’écrit « pi »

a = cos( ) + sin( ) %cos(x) et sin(x) sont des fonctions prédé…nies

b = ln(v1) % logarithme népérien de x s’écrit log(x)

c = ey+x % exponentielle de y+x s’écrit exp(y+x)


p
d= a3 + b2 %racine carrée de a^3+b^3 s’écrit sqrt(a^3+b^3)

s = jyj% valeur absolue de y s’écrit abs(y)

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

Exercice 3: Evaluer les expressions suivantes :

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

Exercice 4: Celcius et Fahrenheit. Opérations matricielles


La relation entre les échelles de températures Celsius et Fahrenheit est linéaire.
On peut la représenter par une relation de la forme

TC = aTF + b;

où TC est la température en degrés Celsius et TF la température en degés Fahrenheit.


Deux points sont bien connus sur ces deux échelles : le point de fusion de l’eau, de à
TF = 32 et TC = 0 et le point d’ébullition à TF = 212 et TC = 100.
On peut donc identi…er les coe¢ cients a et b grâce à ces données.
a. Donner le système d’équation qui permet d’obtenir a et b.
b. Donner la forme matricielle de ce système.
c. Résolver ce système en utilisant l’inversion matricielle puis en utilisant la division à
gauche.

Exercice 5: Manipulation de matrices


0 1
12
a. Construire la matrice M = @ A:
3i + 4 1

27
Chapitre 1. Leishmaniose viscérale

b. Construire la matrice T tridiagonale à l’aide de la commande diag( ) utilisée 3 fois


: 0 1
1 2 1 0 0
B C
B C
B 1 2 1 0 0 C
B C
B C
T =B 0 1 2 1 0 C:
B C
B C
B 0 0 1 2 1 C
@ A
0 0 0 1 2
c. Extraire de T les deux premières colonnes.
d. Extraire de T les éléments des colonnes et des lignes 2 à 4.
e. Créer une matrice T2 où la ligne 1 est échangée avec la ligne 3 puis la colonne 2 est
remplacée par les valeurs de la colonne 4.
f. Construire les matrice A, B
0 1 0 1
6 0 1 0 1 8 0 2 0 2
B C B C
B C B C
B 1 4 1 0 1 C B 2 4 2 0 2 C
B C B C
B C B C
A=B 1 0 4 0 1 C;B = B 2 0 1 0 2 C
B C B C
B C B C
B 0 0 0 2 0 C B 0 0 0 2 0 C
@ A @ A
0 0 0 0 1 0 0 0 0 1

en sachant que v = [6;4;-3;-2;1];


A = diag(5:-1:1)
A(1:3,[1,3,5]) = A(1:3,[1,3,5]) + ones(3,3)
A = diag(v);
A(1:3,[1,3,5]) = A(1:3,[1,3,5]) + 2*ones(3,3);

28
Introduction à la programmation
sous Matlab

Dans ce chapitre, on va présenter les mécanismes d’écriture et d’éxécution des programmes


MALAB.

0.8 Les …chiers .m sur 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).

0.8.1 Ecrire des scripts M-…les

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 :

clear all %e¤ace toutes les variables du workspace


a = 1;
b = 2;
c = 3, d = 4;
e = a*b/(c+d)+5;
scal = 11;
k=scal+2*e

Sauvegardez puis exécutez le script (menu Debug->Save&Run ou Fleche verte ou F5).


Observez la sortie sur la ligne de commande et conclure quant à l’utilisation des ; et ,
Il est également possible d’exécuter le script depuis la ligne de commande, taper
>>test_script.

0.8.2 Ecrire des …chiers functions

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 :

function arguments de sortie = nom_De_Ma_Fonction (arguments d’entrée)

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 :

function [mu,minv,maxv] = myMean( tab )


% Ligne de dé…nition de fonction, Dé…nie le nom de la fonction ainsi que le nombre
% et l’ordre des arguments d’entrée et de sortie
%***************************************************************************
% Texte d’aide
% Description du programme qui sera a¢ ché lorsqu’on demandera
%
% MYMEAN(TAB) calcul de moyenne sur un tableau 1D
% Pour un tableau ’tab’à 1 dimension [mu,minv,maxv] = myMean( tab )
% retourne la moyenne ’mu’, le minimum ’minv’le maximum ’maxv’des
% éléments de ’tab’
%***************************************************************************
%***************************************************************************
% Corps de la fonction
%***************************************************************************
mu = sum(tab)/ length(tab);
minv = min(tab);
maxv = max(tab);

Pour notre exemple de calcul de la moyenne, le …chier devra obligatoirement s’appeler


myMean.m.
Pour exécuter cette fonction. - Créer un vecteur (par ex, >>note = [2,18,5,15] ) et
appeler la fonction myMean() des manières suivantes :

myMean(note)
a = myMean(note)
[a,b] = myMean(note)
[a,b,c] = myMean(note)

- Essayer d’accéder à l’aide (>>help myMean).

31
Chapitre 1. Leishmaniose viscérale

Créer un …chier script appelé programme principal:

%*******************************************************%
% 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() .

0.9 Les Opérateurs de comparaisons

Les opérateurs de comparaison sont :

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 ?

Comparaison d’un tableau et d’un scalaire

A=[1 4; 3 2]
A=
14
32
A>2
ans =
01
10

Les termes de A supérieurs à 2 donnent 1 (true), les autres 0 (faux).

33
Chapitre 1. Leishmaniose viscérale

Comparaison de deux tableaux

Prenons maintenant deux tableaux quelconques de même dimension, et comparons-les :

A=[1 2 ; 3 -2];
B=[-3 2.5 ; 1 -1];
T=A>B
T=
10
10

Exercice : Que se passe-t’il si A=’MATLAB’,B=’MaTHEMATICA’


A=’MATLAB’, B=’OCTAVE’
A=’MATLAB’,B=’octave’
Tester le résultat des ces commandes :A==B, A~=B ?

0.10 Opérateurs logiques

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

0.11 Branchement conditionnel IF

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

<suite d’instructions n exécutée si aucune des conditions n’est VRAI >


end
Example 0.11.1
x = rand(); %renvoie un nombre aléatoire compris entre 0 et 1 selon une loi uniforme
if x > 0.5
disp(’pile’) %la commande disp permet d’a¢ cher un entier ou une chaine de caractère
else
disp(’face’)
end
Les opérateurs de comparaison et les opérateurs logiques sont utilisés essentiellement
dans les instructions de contrôle if et while.

0.12 Boucle for

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.

0.13 Boucle while

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

L’éxécution nous donne:


i=
2
s= 3
i=
3
s=
6

38
Chapitre 1. Leishmaniose viscérale

0.13.1 Instruction break

L’instruction break : provoque l’arrêt de la première boucle for, while englobante.


L’instruction break interrompt l’exécution du bloc d’instructions en cours d’exécution,
et sort totalement de la boucle for ou while, en ignorant les itérations suivantes.
L’instruction for ci-dessous est stoppée au premier i tel que t(i) est nul :

t = -2:10;
for i = 1:length(t)
if t(i) == 0
break;
end
end

0.13.2 La commande SWITCH

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.

0.13.3 Instruction continue

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

0.14 Exercices d’application

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

Matlab possède un grand nombre de commandes pour l’élaboration de graphiques plus


sophistiqués. : graphiques standards en 2D ou 3D avec axes linéaires, semi-log ou logar-
ithmiques, histogrammes, en escalier, représentation en coordonnées polaires, de courbes
de niveau (« contour ,surface » ). Ce chapitre présente les commandes les plus importantes
à connaitre pour la représentation des graphiques les plus fréquents.

0.15 La commande « plot » et la commande « …gure »

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

Graphe de la fonction sin(x)

PropertyName et PropertyValue permettent de spéci…er l’épaisseur des lignes, la taille

44
Chapitre 1. Leishmaniose viscérale

des marqueurs ainsi que leur apparence ([Link]. couleur du contour).

PropertyName PropertyValue Description


LineWidth réel ( défaut=0.5) épaisseur de la ligne
Markersize réel(défaut=10) taille du marqueur
MarkerEdgeColor couleur(r,g,b,...) couleur de la bordure du marqueur
MarkerFaceColor couleur(r,g,b,...) couleur du marqueur

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

Graphe de la fonction sin(x)

0.16 Graphiques multiples

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

Graphe des fonctions sin(x) et cos(x)

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

Graphe des fonctions sin(x) et cos(x)


(commandes hold on, hold o¤)

0.17 Formater un graphique

C.-à-d. spéci…er le « look » et ajouter des informations dans le graphique.


"xlabel" et "ylabel": ces deux commandes nous permettent de donner un nom à l’axe
de x et l’axe y.
La commande "title": cette commande nous permet de donner un titre à la courbe(ou
graphique)
plot(x,y)
title(’titre’)

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

Graphe de la fonction x^2

La commande "legend": cette commande est utilisée quand on a plusieurs graphiques,


elle permet de donner un nom à chaque graphique.
Exemple:
x1 = [-1:0.1:1]
y1 = sin(x1); y2 = cos(x1);y3=x1.^2;
plot(x1,y1,’r’,x1,y2,’g’,x1,y3),grid
legend(’sin(x)’,’cos(x)’,’x^2’)

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

Graphes des fonctions sin(x),cos(x),x^2

48
Chapitre 1. Leishmaniose viscérale

0.18 Types de représentations graphiques

Se référer à Matlab help pour les di¤érents arguments optionnels de chaque type

Type Description commande


semilogy axe des y en log de base 10 et axe des x linéaire semilogy(x,y)
semilogx axe des x en log et axes des y linéaire semilogx(x,f(x))
loglog les deux axes sont en log de base 10 loglog(x,y)
bar,barh graphique à bars verticales ou horizontales bar(x,y),barh(x,y)
hist histogramme hist(y,nbins);
nbins=nbre des barreaux
stairs graphique en escalier stairs(x,y)
stem graphique de données discrètes(digramme en batons) stem(x,y)
polar graphique à coord. polaires polar(theta, radius)

0.19 Représentation de plusieurs repères dans une même


…gure

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

Graphes des fonctions 1)tan(x), 2) sin(x),cos(x)

0.20 Représentation graphique en 3D

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

Graphe d’une courbe parametree

50
Chapitre 1. Leishmaniose viscérale

0.22 Surfaces

Génération des points (meshgrid)


Pour dé…nir une surface, il faut un ensemble de triplets (x; y; z). Si on a en tout n m
points, cela signi…e que l’on a n m valeurs de x, n m valeurs de y et n m valeurs
de z. Il apparaît donc que abscisses, ordonnées et cotes des points de la surface peuvent
être stockés dans des tableaux de taille n m:
Toutes les instructions de tracé du surface, par exemple surf, mesh auront donc la
syntaxe suivante
surf (Mx , My , Mz )
Mx : tableau d’abscisses, My : tableau d’ordonnées, Mz : tableau de cotes.
Il reste maintenant à construire ces tableaux. Prenons tout d’abord le cas de la surface
dé…nie par :
z = 5x2 + 4y 2 ;

dont on veut tracer la surface représentative sur [ 1; 1] [ 2; 2]: Pour dé…nir un


quadrillage de ce rectangle, il faut dé…nir une suite de valeurs x1 ; :::xm pour x et une suite
de valeurs y1 ; :::yn pour y, par exemple :

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

points l’autre les n m ordonnées, soit :


La fonction meshgrid s’en charge :
>> [X,Y] = meshgrid(x,y);
Il reste maintenant à calculer les z = 5x2 + 4y 2 correspondants. C’est là que les calculs
terme à terme sur les matrices montrent leur e¢ cacité : on applique directement la formule
aux tableaux X et Y , sans oublier de mettre un point devant les opérateurs *, / et ^
>> Z = 5*X.^2 +4*Y .^2 ;
Tracé de la surface
Ensuite on peut utiliser toutes les fonctions pour tracer de surface, par exemple mesh
>> mesh(X,Y,Z)
Les instructions les plus courantes sont
– mesh graphique de type maille
–meshc qui fonctionne comme mesh mais ajoute les courbes de niveau dans le plan
(x; y)
–surf graphique de type surface.
–sur‡qui « peint» la surface comme si elle était éclairée.
– surfc qui fonctionne comme surf mais ajoute les courbes de niveau dans le plan
(x; y):

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

Graphe de la surface z=5*x^2+4*y^2

Di¤erence entre mesh, meshc, surf, sur‡

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

>> ch = contour(X,Y,Z, [-0.5 0 0.5 1 2 3 ]);


>> clabel (ch)

Graphe par la fonction contour

0.23 Exercices d’application

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

Graphe d’une fonction de…nie par morceaux

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

0.24 TP1:Prise en main de Matlab : manipulation des vec-


teurs et des matrices

0.24.1 1- Manipulation des vecteurs

L’objectif de ce TP est de familiariser l’étudiant avec le langage MATLAB, sa structure,


ses objets et ses fonctions.

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.

Echau¤ement et premier contact

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.

Exercice1 : (Quelques commandes Matlab, Commandes de type Calculatrice)


Commençant par tester les commandes suivantes :
–clock : a¢ che l’année, le mois, le jour, l’heure, les minutes et les secondes.
– date : A¢ che la date.

57
Chapitre 2. Les modèles mathématiques de la leishmaniose viscérale

– ans : quand on introduise des instructions anonymes (sans variables en sortie), le


Matlab considère une variable ’ans’par défaut pour enregistrer le résultat.
– input : permet de lire une valeur à partir du clavier (l’instruction habituelle lire).
Exemple : a = input (’taper un nombre :’)
–disp : permet d’a¢ cher un tableau de valeurs numériques ou de caractères. L’autre
façon d’a¢ cher un tableau est de taper son nom. La commande ’disp’ se contente
d’a¢ cher le tableau sans écrire le nom de la variable, ce qui peut améliorer certaines
présentations. On utilise fréquemment la commande disp avec un tableau qui est une
chaîne de caractères pour a¢ cher un message. Exemple :
>> disp(’la valeur saisie est’).
3*5,4 : E¤ectue l’opération demandée.
x = 3 5 : le résultat de l’opération est a¤ecté à la variable x.
x : permet d’a¤…cher x.
Y = 3 x; : Création de Y, important: terminer la commande par ; supprime
l’a¢ chage du résultat.
Y : a¢ che la valeur de Y
Y = 1 + Y ^3 Opération de mise à une certaine puissance remarquer que Y à changer,
sa première ecriture est oubliée, on utilisera souvent cette réa¤ectation.
– who : donne la liste des variables dé…nies dans l’espace de travail actuel (essayer
whos).
– whos : donne la liste des variables dé…nies dans l’espace de travail avec plus de
détails.
E = x + Y : a¢ che le résultat de x + Y a¤ecté à la variable E.
who: véri…er que E a été rajoutée.
–clear : permet de détruire une variable de l’espace de travail (si aucune n’est spéci…ée,
toutes les variables seront e¤acées).
–clc : e¤ace le contenu de la fenêtre des commandes et a¢ che uniquement l’invite «
».

L’aide dans Matlab

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

intro lance une introduction à MATLAB.


helpwin ouvre une fenêtre contenant la liste des commandes Matlab ainsi que leurs
documentations.
help donne la liste de toutes les commandes par thèmes.
help nom décrit la fonction nom.m.
doc clc donne une description complète de la commande clc.
lookfor nom recherche une instruction à partir du mot clé nom.

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 .

2. a¢ cher la partie réelle de z.

3. a¢ cher la partie imaginaire 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

4. (1 + x)5 e x cos(x); x = 0:5

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.

>>n=length(x)%calcule la taille du vecteur x

>> x=[1,2,3] % les "," ou les blancs séparent les éléments d’un vecteur ligne.

>> x’%calcule le transposé du vecteur x

>> y = [x,x,x]

>> z = [x x x]

2. Matrices

>> M=[11 12 13 14;21 22 23 24; 31 32 33 34; 41 42 43 44] % où les ";" séparent


les lignes d’une matrice.

On peut construire une matrice à partir de plusieurs vecteurs de même longueur :

>> 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.

>> P=[1 -7 10] % Représente Le polynôme P (x) = x2 7x + 10:

Tester l’e¤et des commandes suivantes(en ligne de commande)


>> l11 = 1:10 % Un vecteur contenant les entiers de 1 à 10)
>> l22 = 1:1:10
>> l33 = 10:-1:1
>> l44 = 1:0.3:pi
>> l11(2) = l3(3)
>> l44(3:5) = [1,2,3]
>> l44(3:5) = [ ]
>> l5 = linspace(1,5,5)
>> help linspace
>> who
>> whos

60
Chapitre 2. Les modèles mathématiques de la leishmaniose viscérale

>> clear l11 l22 l33 l5


>> who
>> clc % e¤ace le contenu de la fenêtre de commande.
>> clear

Un bon programme est un programme BIEN COMMENTE.

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 à .

Application sur les opérations vectorielles : Donnez la commande de


(1) vecteur de nombres de n à m par pas de 1
(2) vecteur de nombres de n à m par pas de p
(3) vecteur de p nombres de n à m
(4) la longueur d’un vecteur x
(5) la i-ème coordonnée d’un vecteur x
(6) les coordonnées i1 à i2 d’un vecteur x
(7) supprimer les coordonnées i1 à i2 d’un vecteur x
(8) concaténer les vecteurs x et y
(9) le produit scalaire des vecteurs lignes x et y
(10) le produit scalaire des vecteurs colonnes x et y
(11) créer une matrice de taille [u; v], à partir de x

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

À quoi servent les commandes u(2) ? w(3) ?

Que renvoie 2u? u + v? u + w ?

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

Exécuter les commandes AB, AM , M A, M v, M w,vv::. Lesquelles renvoient une


erreur ?

Calculer y = M w, puis M ny. Que fait la commande « n» ?

Réessayer les commandes précédentes en remplaçant « » par « : »

Tester l’e¤et des opérateurs « ^» , « :^» , « =» et« :=» sur les matrices et les vecteurs.

Que donnent les commandes suivantes : 0 : 10; 2 : 0:5 : 6; 1 : 0:3 : 5

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

Si v est un vecteur, sum(v) renvoie la somme de toutes les composantes de v.


106
X 1
Utiliser cette fonction pour évaluer :
k3
k=1

62
Chapitre 2. Les modèles mathématiques de la leishmaniose viscérale

0.25 TP2: Prise en main de Matlab : manipulation des


vecteurs et matrices

0.25.1 2- Manipulation des matrices

Application sur les opérations matricielles : Donner la commande qui :

(1) a¢ che le nombre de lignes et de colonnes d’une matrice A


(2) a¢ che le coe¢ cient d’ordre i; j d’une matrice A
(3) a¢ che les coe¢ cients des lignes i1 à i2 d’une matrice A
(4) supprime la k eme ligne d’une matrice A
(5) a¢ che les coe¢ cients diagonaux d’une matrice A

Application : Entrer la matrice


>> A=[1 2 5; 2 4 -1; -3 1 8 ]
Quels sont les résultats des commandes suivantes?
>> A([2 3],[1 3])
>> A([2 3],1:2)
>> A([2 3],:)
>> A([2 3],end)
>> A(:)
>> A(5)
>> reshape(A(:),size(A))

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

Ecrire le système sous la forme matricielle Ax = b (où vous dé…nissez A et b) et


trouver la solution?

Regarder l’e¤et des instructions suivantes.

Vecteur

>> x=rand(1,5)

>> mean(x)

>> std(x)

>> median(x)

>> sort(x)

Matrice

>> A=rand(3)

>> sort(A)

>> [B, I]=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.

Opérateurs relationnels et logiques


Ils permettent de relier logiquement deux matrices.
Opérateurs relationnels <; <=; >=; == (égalité), ~ = (di¤érent)
Opérateurs logiques & (et), j (ou), ou not (non)

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].

Donner la commande qui répondre à la question suivante : existe-t-il une coor-


donnée du vecteur y1 inférieure à 3:2?

Tirer 110 nombres aléatoirement dans l’intervalle [0; 1] et grouper les dans un vecteur
x = (xi )i=1;:::;110 .

Prendre ai = 2 xi pour tout i = 1:::; 110.

Prendre la partie entière de ces nombres (à l’aide de la fonction ‡oor) : bi = [ai ].

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

Résoudre alors le système :


0 10 1 0 1
1
9 4 1 0 x
B CB 1 C B cos(0) C
B CB C B C
9 4 1 C B x2 C B C
1
B 4
B CB C=B cos( 3 ) C
B CB C B C
B 1 4 9 4 C B x3 C B 1 C
@ A@ A B
@ cos( 23 ) C
A
0 1 4 9 x4 1
cos( )

2. A l’aide des commandes ones et eye, créer la matrice 10 10;


0 1
6 4 4
B C
B .. . C
B 4 6 . .. C
A=B B .. . . .
C
C
B . . . . 4 C
@ A
4 4 6

Remplacer la 2eme ligne par la ligne [2 3 2 2 2] :

3. Créer la matrice suivante:


0 1
18 17 16 15 14 13
B C
B C
H = B 12 11 10 9 8 7 C
@ A
6 5 4 3 2 1

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

0.26 TP 3: Les …chiers scripts et functions

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 M1 composée uniquement de la première colonne de M 1

Créer une matrice M2 composée uniquement de la deuxième ligne de M 1

Créer une matrice M3 composée des 2 premières colonnes de M 1

Créer une matrice M4 composée des 2 dernières lignes de M 1

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

Les …chiers Scripts et Functions


Un script est un ensemble des instructions (commandes) Matlab qui joue le rôle du
programme principal.
Pour lancer un script aller à l’onglet « File » , « new » et puis « M-…le » . C’est dans
cette fenêtre qu’on peut écrire l’ensemble des instructions Matlab. Il est en e¤et beauc-
oup plus simple de modi…er des instructions dans un script que de retaper un ensemble
d’instructions MATLAB dans la fenêtre de commandes.
Une fois, vous écrivez le programme vous devez le sauvegarder et lui donner un nom
Cliquer sur « …le » puis « save as »
Remarques importantes :

1. Le script doit avoir une extension de la forme « .m » .

2. Dans l’appelation des scripts, Il faut éviter :

3. D’utiliser les caractères désignant un opérateur spéci…que à Matlab tel que « -» , «


; » , « * » ,. . . etc.

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 :

Ecrire un …chier script pour créer la matrice F suivante :


0 1
B 11 12 13 14 15 16 17 18 19 C
B C
B 21 22 23 24 25 26 27 28 29 C
B C
B C
B 31 32 33 34 35 36 37 38 39 C
B C
B C
B 41 42 43 44 45 46 47 48 49 C
B C
B C
F =B B 51 52 53 54 55 56 57 58 59 C
C
B C
B 61 62 63 64 65 66 67 68 69 C
B C
B C
B 71 72 73 74 75 76 77 78 79 C
B C
B C
B C
B 81 82 83 84 85 86 87 88 89 C
@ A
91 92 93 94 95 96 97 98 99

Modi…er le script pour calculer aussi le minimum de la deuxième ligne de F.

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

2. Modi…er le script pour également sauvegarder la position du minimum dans le vec-


teur.

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 :

1. Écrire un script qui calcule le produit scalaire de deux vecteurs.

2. On considère la fonction suivante :


8
>
> sin x2 + a si x < 0
>
< p
g(x) = 4+ x
si 0 6 x 6 :
>
> x 2 +2x+1
>
: 0 si x >

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.

0.27 TP 4: Les graphiques

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

Les représentations se font en coordonnées cartésiennes mais aussi polaires ou cyl-


indriques.
Les principales fonctions d’a¢ chage sont :

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!

Gestion des axes

Les di¤érentes fonctions suivantes permettent de :

1. Gérer les labels des axes .

2. Commenter sur les …gures.

title : title(’Texte du titre’) ajoute un titre à la …gure.

xlabel : xlabel(’l’axe des x’)

ylabel : ylabel(’l’axe des y’)

legend : legend(’Nom de la courbe 1’,’nom de la courbe 2’, ...)

grid : grid on, grid o¤, quadrille ou non le graphique.

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).

clf : e¤ace la …gure en cours d’utilisation.

72
Chapitre 2. Les modèles mathématiques de la leishmaniose viscérale

ginput : ginput(n) récupère les coordonnées de n points cliqués à la souris dans la


…gure en cours.

Plusieurs repères dans une …gure "subplot"

subplot(m,n,p) ou subplot(mnp) divise la fenêtre graphique courante en une matrice m x


n matrice de repères et sélectionne la p-ième repère comme emplacement de dessin par
défaut. Le numéro du repère est compté ligne par ligne, c’est à dire que l’emplacement
(i,j) de la matrice porte le numéro (i-1)*n + j.
Exemples
subplot(221)
plot()
subplot(222)
plot3()
subplot(2,2,3)
plot()
subplot(2,2,4)
surf()

Exercices :
Ecrire la syntaxe Matlab qui donne les …gures suivantes :

Graphique en 3D

Il y a plusieurs types de graphiques 3D :

73
Bibliographie

plot3(x,y,z,’style’) : Graphique type ligne en 3D.

mesh(x,y,z) : mesh Graphique type maille en 3D.

surf(x,y,z) : surf Graphique type surface en 3D.

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

[1] MATLAB for Engineers, Holly Moore, Pearson Education,2012.

[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.

[3] An Engineer’s Introduction to Programming with MATLAB 2019, By Shawna Lock-


hart, Eric Tilleson Published June 17, 2019.

[4] Essential MATLAB for Engineers and Scientists, Brian H. Hahn and Daniel T.
Valentine, Sixth Edition 2017.

75

Vous aimerez peut-être aussi