Université Pierre et Marie Curie - Paris VI
Outils Mathématiques et utilisation de Matlab
Cours 2013-2014
Licence Professionnelle (L3)
Instrumentation Optique et Visualisation
Quentin Glorieux
Table des matières
Avant-Propos
1 Introduction à Matlab
1.1 La philosophie de Matlab
1.2 L’interface de Matlab
1.2.1 Command Window
1.2.2 Workspace
1.2.3 Command History
1.2.4 Current Folder
1.2.5 Editor
1.2.6 Help
”Hello World”
1.3.1
Script
1.3.2 Fonction
1.3
1.4 Outils de base
1.4.1 Types de variables
1.4.2 Précision
1.4.3 Arithmétique et opérations sur les scalaires
1.5 Vecteurs
1.5.1 Définir un vecteur
1.5.2 Manipuler un vecteur
1.5.3 Opérations vectorielles
1.6 Matrices
1.6.1 Définir une matrice
1.6.2 Manipuler une matrice
1.6.3 Opérations matricielles : addition et soustraction
1.6.4 Opérations matricielles : produit
1.6.5 Opérations matricielles : inverse et division
1.6.6 Résoudre un système linéaire
1.7 Représentation graphique
1.7.1 Graphique d’une fonction
1.7.2 Graphique de plusieurs fonctions
1.7.3 Bar graphs et Box plots
1.7.4 Histogrammes
1.7.5 Nuage de points
1.7.6 Graphiques des fonctions de 2 variables
1.7.7
Images
1.8 Notions de programmation
1.8.1 Boucles
1.8.2 Test SI
Travaux Pratiques 1
2 Traitement du signal
2.1 Séries de Fourier
2.2 Application a la synthese de signaux sous Matlab
2.3 Transformée de Fourier
2.3.1 Définition
2.3.2 Transformée de Fourier discrète
5
1
1
1
1
2
2
2
3
4
4
4
4
5
5
5
6
8
8
9
10
11
11
13
14
14
15
16
18
18
19
22
23
24
24
26
27
27
27
29
33
33
34
36
36
36
4 Table des matières
2.3.3 Un exemple pas à pas de FFT
2.4 Corrigés
36
40
Avant-Propos
Il s’agit des notes de cours destinées aux étudiants de Licence Professionnelle
LIOVIS de l’UPMC. Ce cours suppose une familiarité avec les notions de bases
d’algèbre, d’analyse et de statistiques. Le format de ce cours est composé de 4
séances de 4h de cours associées à 4 séances de 4h de travaux pratiques. Chaque
couple de séances (cours-TP) porte sur un theme di↵érent associé a un chapitre
de ces notes. L’utilisation de logiciel de calcul est devenu depuis les années 70 ab-
solument indispensable dans le domaine scientifique, aussi bien pour le technicien
que l’ingénieur ou le chercheur. Matlab a été développé par la société Mathworks.
Il s’agit d’un des langages de programmation scientifique les plus populaires.
Dans ce cours nous allons parcourir les bases de Matlab pour analyser des
données ecacement, et simuler numériquement des systèmes physiques. Il
faut bien comprendre la di↵érence entre ces deux objectifs. D’une part une série
de données est produite par une expérience et notre objectif est d’analyser ces
données pour en faire ressortir les éléments les plus pertinents. Lorsque l’on parle
de donnée, il peut s’agir par exemple d’une mesure d’un paramètre physique, du
cours de la bourse, des réponses à un sondage ou bien de tout autres valeurs pou-
vant être tabulées.
Lorsque l’on parle de simulations numériques, on s’intéresse à la modélisation d’un
système ce qui passe le plus souvent par la résolution d’équations di↵érentielles.
Pour ces deux objectifs, nous allons utiliser des notions de mathématiques qui se-
ront parfois nouvelles pour le lecteur. Ce cours n’a pas prétention à être un cours
formel et rigoureux du point de vue mathématiques et je présenterai donc uni-
quement les points nécessaires à la compréhension des concepts sans entrer dans
les détails. Lorsque cela sera nécessaire, j’indiquerai les références bibliographiques
permettant de traiter ces notions mathématiques plus en profondeur.
La particularité de Matlab est de manipuler uniquement des variables numé-
riques (pas de calcul formel). Par défaut ces variables sont codées sur 64 bits
(double précision) et peuvent contenir jusqu’à 16 chi↵res significatifs. Les nombres
les plus grands manipulés par Matlab sont 10306, au delà de cette limite ils seront
considérés comme infini et notés Inf. Réciproquement, les nombres les plus petits
306, au delà de cette limite ils seront considérés comme zéro et notés 0.
sont 10
Lorsqu’une valeur est manquante ou si le résultat d’un calcul n’existe pas ( 0
0 par
exemple), la variable prendra la valeur Nan.
Des alternatives libres existent
comme par exemple Scilab, R ou
Octave.
Nous verrons que les problèmes
d’arrondi peuvent s’avérer im-
portant lors que nous étudierons
la stabilité des méthodes de réso-
lution d’équations di↵érentielles.
,
Ce cours est divisé en 2 parties. Dans le chapitre 1, je vais introduire l’interface
de Matlab et nous écrirons le premier programme afin d’acher un message simple.
Nous étudierons ensuite la structure des données ainsi que les opérations de base
, /). Une part importante de ce chapitre sera consacré à la présentation
(+,
⇤
de données sous forme de graphiques en 2D et 3D, ce qui nous simplifiera la
tache pour de nombreux exercices par la suite. Je ferai également quelques rappels
de statistiques élémentaires. Enfin, ce chapitre se termine par la présentation du
produit matriciel et son utilisation.
Le chapitre 2 a pour but d’introduire les notions essentielles au traitement de
données. L’analyse et le traitement de données est un sujet très vaste qui néces-
siterais un cours a part entiere. Je présenterai ici principalement deux sujets : le
filtrage en utilisant les principes de la transformée de Fourier ainsi que la recherche
de corrélations dans un ensemble de données.
6 Avant-Propos
Nous reviendrons en detail sur
les formats de données plus loin
dans ce cours. En e↵et c’est un
point très important car la pré-
cision d’un ordinateur n’est pas
infinie et donc tout les nombres
utilisés seront des arondis.
Chapitre 1
Introduction à Matlab
1.1 La philosophie de Matlab
L’objectif de ce premier chapitre est d’introduire les outils nécessaires à l’uti-
lisation de Matlab. En programmation on parle d’objet pour décrire de manière
générale les concepts que l’on manipulent, de la même manière que l’on parle de
variables en mathématiques. L’objet le plus commun dans Matlab est la matrice.
C’est donc un tableau d’éléments d’un type donné, par exemple un tableau d’en-
tiers, de réels, de texte, de variable logiques...
Le format de la matrice est libre, il se définit par le nombre de lignes et le
nombre de colonnes. Une matrice colonne (n lignes X 1 colonne) est appelée
vecteur. Dans ce chapitre nous allons donc apprendre a définir, a acher et à
réaliser des opérations sur ces matrices.
Le deuxième point que nous allons aborder est une révision de statistiques de
base et leur utilisation dans Matlab. Un vecteur définit précédemment peut conte-
nir des variables qui décrivent une expérience (par exemple les notes d’une classe
lors d’un cours de Mathématiques), et il est donc intéressant de connaitre les pro-
priétés statistiques de celui-ci.
Nous aborderons pour finir la représentation graphique sous Matlab. En e↵et,
pour présenter des données, on est tres souvent amener a réaliser des graphes. Nous
verrons quelques une des possibilités de Matlab dans ce domaine, ce qui nous sera
très utile par la suite.
1.2 L’interface de Matlab
Avant de commencer le cours proprement dit, nous allons nous familiariser avec
l’interface de Matlab. Selon la version utilisée, l’interface peut changer légèrement
mais les points centraux resteront identiques.
1.2.1 Command Window
C’est le terminal dans lequel on doit taper les commandes et sur lequel on
verra l’achage des résultats. Une ligne commence toujours par >>. Essayez la
commande suivante :
>> 1+1
ans =
2
et comparez à la commande :
>> 1+1;
2
1.2. L’interface de Matlab
La commande whos() peut éga-
lement être utilisée seule (sans
argument). Elle retourne alors la
liste des variables.
Deux points sont à noter ici. Le premier est que Matlab définit une variable ans,
lorsque l’on e↵ectue un calcul. Cette variable (qui veut dire answer /réponse),
s’ache sur le terminal lorsque l’on omet le signe ; en fin de ligne. Ici ans est une
matrice de taille 1x1 (une ligne par une colonne). Une commande utile lorsque l’on
a un doute sur le type de variable que l’on vient de créer est whos :
>> whos(’ans’)
Name
Size
Bytes Class
Attributes
ans
1x1
8 double
Cette commande retourne le nom de la variable (ans), sa taille (1x1), le nombre
d’octets utilisés (8), et le type de données (ici réel en double précision).
Une seconde commande utile est clc. Cette commande permet de vider l’écran
de Command Window pour repartir sur une fenêtre propre.
De plus, Matlab supporte l’auto-complétion, c’est à dire que si vous connaissez
le début d’une commande, vous pouvez n’entrer que les premières lettres et utiliser
la touche Tab pour chercher parmi les commandes commençant ainsi.
1.2.2 Workspace
Dans cette fenêtre, on obtient la liste des variables connues par Matlab . Il
est possible de double-cliquer sur une variable pour l’acher. Un clic-droit sur les
variables o↵re de nombreuses options telles que : Copiez, Collez, Supprimez etc.
1.2.3 Command History
Lorsque l’on e↵ectue une analyse de données sur les résultats d’une expérience
il est essentiel de conserver une trace de toutes les opérations qui ont été réalisées.
C’est la base de la traçabilite et de la reproductibilité des résultats scientifiques.
Il est possible de cliquer sur une commande dans cette fenêtre pour l’exécuter
a nouveau. On peut également remonter dans la liste de commandes en se pla-
çant dans la Command Window et en pressant les flèches de direction. Matlab
est également capable de remonter dans la liste de commandes en ne prenant en
compte que les commandes qui commencent par certains caractères. Si l’on re-
cherche une commande que l’on a entrées précédemment, on peut taper le début
de cette commande puis la flèche du haut et Matlab cherchera uniquement parmi
les commandes ayant le même début.
Par ailleurs, il est parfois important d’enregistrer dans un fichier indépendant
la liste des commandes utilisées. Pour ce faire on utilise :
>> diary filename
Cette commande va créer un fichier filename qui enregistrera toutes les com-
mandes entrées jusqu’à ce que l’on utilise diary off.
1.2.4 Current Folder
Je viens de le décrire la commande diary permet de créer un fichier. On peut se
poser la question légitime d’ou Matlab va stocker ces données. Il est tres important
de bien maitriser ce point si l’on souhaite ne pas se perdre dans l’ensemble des
Publicité
fichiers auxquels nous allons faire appel via Matlab. Matlab définit ce qui s’appelle
le PATH (chemin). C’est les dossiers dans lesquels Matlab va chercher lorsque l’on
appelle un commande. Le PATH est divisé en deux sous-parties : d’une part le
MATLABPATH et d’autre par le USERPATH.
Le premier (MATLABPATH) correspond aux di↵érents dossiers auxquels Matlab va
faire référence pour utiliser des fonctions prédéfinies par Matlab. Il s’agit si l’on
veut des chemins par défaut dans lesquels Matlab cherche les fonctions et il peut
contenir un grand nombre de dossiers. L’exemple de code suivant permet d’acher
le MATLABPATH :
Introduction à Matlab 3
Le USERPATH est un sous en-
semble du MATLABPATH qui doit
être personalisé à chaque session.
C’est la première ligne lorsque
l’on entre la commande path.
L’importation de données étant
un point fondamental nous le
traiterons en détail par la suite.
La syntaxe de la fonction n’est
pas le sujet ici. Nous reviendrons
en détails sur cela plus tard ainsi
que sur la commande sqrt()
>> path
Le second (USERPATH) est un unique dossier qui est propre à l’utilisateur lors d’une
session. Il est fortement conseillé de définir le USERPATH, immédiatement lorsque
l’on commence une session Matlab. Le fichier diary par exemple est sauvé dans
le USERPATH. Deux méthodes peuvent être utilisée pour modifier le USERPATH. En
ligne de commande :
>> newpath = ’C:\Research_Project’;
userpath(newpath)
ou bien en sélectionnant File> Set Path dans les menus déroulants.
La fenêtre Current Folder ache donc le contenu du USERPATH. On peut na-
viguer entre les dossiers en utilisant la même nomenclature que sous Unix. On peut
tester notamment les commandes suivantes : cd, ls ,cd .., mkdir(’newfolder’).
Respectivement ces commandes permettent de changer de dossier, de lister les fi-
chiers du dossier, de remonter d’un niveau dans l’arborescence, et de créer un
dossier newfolder. On peut tester le code suivant pour créer un nouveau dossier
puis l’ajouter au path :
>> mkdir(’c:/\texttt{Matlab }/myfiles’)
addpath(’c:/\texttt{Matlab }/myfiles’)
Une autre application très importante de la fenêtre Current Folder est d’a-
cher la listes des fichiers de données qui peuvent être chargés par l’utilisateur. En
e↵et, tres souvent les données a analyser seront générées par un autre logiciel puis
importées dans Matlab via la commande importdata(filename).
1.2.5 Editor
La plupart de votre travail sous Matlab va consister à créer ou modifier des
fichiers .m qui est le suxe standard pour les procédures Matlab. Lorsque l’on
réalise une tache sous Matlab, il est très souvent possible de le faire en utilisant
uniquement la Command Window. Cependant lorsque cette tache devient plus
complexe (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 fichier .m qui peut être au choix un script ou une fonction (function en an-
glais). Un script est une suite de commande que l’on aurait tout aussi bien pu
taper dans la Command Window. Une fonction permet d’étendre les possibilités
au delà des fonctions préprogrammées par les développeurs de Matlab .
Par exemple, on pourra réaliser une fonction racineplus2(input) qui à un
paramètre d’entrée input va répondre pinput + 2 : Pour créer un fichier .m on peut
soit utiliser les menus contextuels, soit entrer la commande : edit FileName.m.
On entre ensuite le code suivant :
function [ output ] = racineplus2( input )
output=sqrt(input+2);
end
Lorsque l’on sauve cette fonction sous la forme d’un fichier .m, il est important
de nommer le fichier racineplus2.m et de sauver ce fichier dans le USERPATH. On
peut ensuite appeler cette fonction simplement dans la Command Window par :
>> racineplus2(7)
ans =
3
Il est évident que cette fonction ne fait pas partie des fonctions de base de Matlab :
pourquoi choisir +2 et pas +3. Cependant si l’on souhaite l’utiliser souvent il est
utile de définir une fonction utilisateur qui sera rapide à utiliser. Une fois que
l’on a créé un fichier .m, il est possible d’accéder à l’éditeur en double-cliquant sur
le nom du fichier dans la fenêtre Current Folder.
4
1.3. ”Hello World”
La tradition d’utiliser ”Hello
World” comme message de test
a été initiée par Brian Kerni-
ghan et Dennis Ritchie dans le
livre The C Programming Lan-
guage publié en 1978.
1.2.6 Help
Le menu d’aide de Matlab est une des bases de son succès. En e↵et, l’aide est
essentielle lorsque l’on programme avec un langage de haut-niveau comme Matlab,
ou le nombre de fonctions est tres important et la syntaxe est parfois complexe.
Pour accéder à l’aide on peut au choix sélectionner une fonction et presser F1,
taper help FunctioNname ou utiliser les menus déroulants. L’aide doit être vu
comme complémentaire de ce cours. Ici j’explique les outils mathématiques que
nous utiliserons, dans l’aide de Matlab vous trouverez la syntaxe des di↵érentes
fonctions. Mais j’insiste : il est essentiel que vous vous familiarisiez avec les outils
de l’aide de Matlab pour réussir dans ce cours.
1.3 ”Hello World”
Tout cours de programmation qui se respecte commence par l’exemple ”Hello
World”. Il s’agit d’un bref programme pour mettre en place les di↵érents éléments
nécessaires. Nous allons réaliser deux exemples de ce programme pour mettre en
évidence la di↵érence entre un script et une fonction.
1.3.1 Script
Le script est le fichier .m le plus simple. Il s’agit simplement d’une liste de
commandes mises bout à bout et sauvegardée dans un fichier. Pour commencer
on fixe le USERPATH. On crée ensuite un fichier .m dans ce dossier et on nomme ce
fichier hello.m. On édite ensuite le fichier .m de la façon suivante :
str=’Hello world’;
str
Sauvez ensuite ce script. Puis dans la fenêtre Command Window, on tape la com-
mande : hello.
Voila nous avons fait le programme le plus simple possible de Matlab, voyons
comment nous pouvons l’améliorer.
1.3.2 Fonction
Une fonction va permettre de rentrer des arguments en entrée et d’obtenir
di↵érentes variables en sortie. On va essayer ici de modifier le script hello.m
pour en faire une fonction qui prend votre prénom en entrée et retourne Hello
Votreprénom en sortie. On commence de façon similaire à pour un script : on crée
un fichier .m que l’on nomme hello2.m.
function [ str ] = hello2 ( prenom )
str = [’Hello ’, prenom ];
end
On sauvegarde le fichier .m puis on l’appelle depuis la fenêtre Command Win-
dow. Cette fois la fonction a besoin d’un paramètre en entrée, on tape donc :
hello2(’Quentin’). On obtient l’achage voulu. La syntaxe d’une fonction est
relativement simple et doit être connue. On définit ce que va retourner la fonc-
tion : function [output1,output2 ... outputN]. Puis on nomme la fonction,
ici : = hello2(). On définit alors les paramètres d’entrée hello2(input1, im-
put2, ... inputM). On peut passer alors au corps même de la fonction, qui doit
contenir une définition de toutes les variables de sortie output1,output2 ...
outputN. Finalement, une fonction se conclut toujours par end.
1.4 Outils de base
Introduction à Matlab 5
On l’a déjà dit, le principe de base de Matlab est de considérer la plupart
des objets comme des matrices. Ainsi les opérations usuelles +,
, / doivent se
⇤
comprendre comme des opérations matricielles. On consacrera la section suivante
à ces opérations. Nous allons dans un premier temps regarder ce qu’ils se passent
pour les matrices 1x1 (c’est à dire un seul élément), puis pour les matrices 1xn ou
nx1 (c’est à dire des vecteurs ligne ou colonne).
,
On peut définir la partie imagi-
naire d’un complexe en utilisant
au choix i ou j.
1.4.1 Types de variables
Il existe cinq grands types de variables sous Matlab : les entiers, les réels, les
complexes, les chaˆınes de caractères et le type logique. Définissons une variable de
chaque type :
>> a = 1.3; b = 3+i; c = ’bonjour’;
>> d1 = true(1==1); d2 = logical(1);
>> e = int8(2);
a représente un réel, b un complexe, c une chaine de caractères, d1 et d2 sont deux
manières de définir une variable logique (VRAI dans le cas présent) et e est un
entier codé sur 8 bits. On peut alors vérifier le type de ces di↵érentes variable en
utilisant la fonction whos :
>> whos
Name
a
b
c
d1
d2
e
Size
Bytes Class
Attributes
1x1
1x1
1x7
1x1
1x1
1x1
complex
8 double
16 double
14 char
1 logical
1 logical
1 int8
Il n’est donc pas nécessaire (impossible en fait) de déclarer le type de variable
lorsque l’on crée une variable dans Matlab. Il peut alors s’avérer utile de vérifier
quel est le type d’une variable. On utilise les fonctions ischar,islogical,isreal.
1.4.2 Précision
Avant de poursuivre, je vais mentionner quelques une des limites qu’il est im-
portant de connaitre lorsque l’on fait du calcul numérique. Il s’agit du réel le plus
grand et le plus petit qui peuvent être manipulé par Matlab, ainsi que de la préci-
sion sur ces derniers. Les constantes realmax et realmin renvoient respectivement
le plus grand (petit) nombre à virgule flottante manipulable. La constante eps
renvoie la précision numérique relative.
>> min=realmin
max=realmax
precision=eps
min = 2.2251e-308
max = 1.7977e+308
precision = 2.2204e-16
10308 avec une précision de 10
16, vous allez me dire pourquoi s’intéresse t’on à
cela ? Pour en comprendre l’importance revenons a la maniere dont un ordinateur
code des nombres entiers et réels. Un ordinateur travaille uniquement en binaire
(base 2).Les nombres entiers sont donc codés en binaire sur un nombre plus ou
moins important de bits.Si l’on décide de coder un entier naturel (donc non néga-
tif) sur 8 bits, on aura acces a tout les entiers entre 0 et 28
1 = 255. De même si
désormais on souhaite travailler avec des entiers relatifs, toujours sur 8 bits, alors
Pour definir ou convertir un
nombre en entier on utilise uint
ou int pour les entiers naturel ou
relatifs suivi du nombre de bits.
Par exemple uint16 signifie un
entier naturel codé sur 16 bits.
6
1.4. Outils de base
on aura accès aux entiers entre
entiers jusqu’à 64 bits.
27 =
128 et 27
1 = 127. Matlab supporte les
Passons maintenant aux nombres réels. Il existe deux types principaux de
codage pour les nombres réels : simple précision (single) ou double précision
(double). Ces deux codages utilisent le principe de la virgule flottante (float).
Cela consiste à représenter un nombre par son signe (+1 ou -1) s, les chi↵res signifi-
10e. Lorsqu’il
catifs (ou mantisse) m et un exposant e. Le nombre s’écrit alors s
est codé en simple précision (c’est à dire sur 32 bits), le nombre se compose d’un bit
de signe, 8 bits d’exposant, et 23 bits pour la mantisse. Si la mantisse est codée sur
23 bits, cela signifie que l’on peut obtenir les nombres entre 0 et 223
1 = 8388607,
ainsi un nombre réel codé en simple précision aura environ 7 chi↵res significatifs
(ce qui est parfois relativement peu). En double précision (c’est à dire sur 64 bits),
le nombre se compose d’un bit de signe, 11 bits d’exposant, et 52 bits pour la
mantisse. Dans ce cas, on obtient environ 16 chi↵res significatifs (c’est le sens de
la constante eps).
m
⇤
⇤
Bien choisir son type de données permet d’optimiser la mémoire utilisée ainsi
que la rapidité et la précision des calculs numériques. Il s’agit donc d’un critère
important lors de l’évaluation de la qualité d’un code.
Un dernier point est le nombre de chi↵res lors de l’achage à l’écran. Le nombre
de chi↵res retenus pour l’achage n’est pas nécessairement le même que celui
retenu pour la précision (il ne peut pas être plus grand c’est évident !). Les deux
formats les plus utilisés sont short (défaut) et long qui correspondent à 5 et 15
chi↵res respectivement.
1.4.3 Arithmétique et opérations sur les scalaires
Avant de commencer, je conseille
d’utiliser les trois commandes
suivantes : clc pour nettoyer
l’écran, clear all pour suppri-
mer toutes les variables créées
auparavant, et close all pour
fermer toutes les fenêtres in-
utiles.
Nous allons nous intéresser aux opérations mathématiques de bases avec des
matrices 1x1, c’est à dire des nombres. Commençons par les 4 opérations que vous
,
connaissez depuis l’école primaire : +,
, /.
⇤
>> x = 1+1
x = 2
On peut également travailler avec des variables définies par l’utilisateur :
Publicité
>> x = 2; y = 1.5 ;
somme = x+y
difference = x-y
produit = x*y
division = x/y
somme = 3.5000
difference = 0.5000
produit = 3
division = 1.3333
Matlab est sensible à la casse :
la variable ToTo est di↵érente de
tOtO
On peut également utiliser les fonctions trigonométriques, puissance, logarith-
miques etc
>> x = 2; y = pi;
cos(y)
exp(x)
sqrt(x)
ans = -1
ans = 7.3891
ans = 1.4142
Voici une liste (non exhaustives) des fonctions incorporées dans Matlab :
Introduction à Matlab 7
Evidemment les fonction hyper-
boliques et inverses sont aussi va-
lables pour le cosinus et la tan-
gente
exp(x)
log(x)
log10(x)
xˆn
sqrt(x)
abs(x)
sign(x)
sin(x)
cos(x)
tan(x)
asin(x)
sinh(x)
asinh(x)
:
:
:
:
:
:
:
:
:
:
:
:
:
exponentielle de x
logarithme néperien de x
logarithme en base 10 de x
x à la puissance n
racine carrée de x
valeur absolue de x
1 si x > 0 et 0 si x
0
sinus de x
cosinus de x
tangente de x
sinus inverse de x (arcsin de x)
sinus hyperbolique de x
sinus hyperbolique inverse de x
On pourra également utiliser les fonctions d’arrondis :
round(x)
floor(x)
ceil(x)
:
:
:
entier le plus proche de x
arrondi par défaut de x
arrondi par excés de x
ainsi que les fonctions d’arithmétiques :
rem(m,n)
lcm(m,n)
gcd(m,n)
factor(n)
:
:
:
:
reste de la division entière de m par n
plus petit commun multiple de m et n
plus grand commun diviseur de m et n
décomposition en facteurs premiers de n
Enfin lorsque l’on travaille avec des complexe on pourra utiliser :
conj(z)
:
conjugué de z
abs(z)
: module de z
angle(z)
real(z)
imag(z)
:
:
:
argument de z
partie réelle de z
partie imaginaire de z
8
1.5. Vecteurs
Exercices
(1.1) Evaluez les quantités suivantes dans Matlab avec 5 chi↵res significatifs :
(a)
tanh(e)
(b)
log10(2)
(c)
1
1+ 1
1+ 1
2
(d) PGCD(48972, 36533112)
(e)
e102.7
(g) PPCM (318,732)
(h) p3⇡
(f)
(i)
cos
1( ⇡
4 )
ln 1
⇡ .
(1.2) Calculez 8
100
0.5
2
4
10
. Commentez le résultat.
(1.3) Calculez e14 et 382801⇡ jusqu’au 15ème chi↵res significatifs. Quel est le
⇥
⇤
plus grand ?
(1.4) Quelle est la meilleure approximation de p7 : 2709
210 , 10583
4000 ou 2024
765 ?
Pour grouper des éléments de
types di↵erents par exemple des
caractères et des réels, on utili-
sera les structures.
(1.5) Comparez la division a droite / et la division a gauche
. Commentez.
\
(1.6) Trouvez la partie réelle et imaginaire des nombres complexes suivants :
(a)
ei(3⇡+4)
(b)
1
1+i
(c)
1).
ln(
(1.7) Calculez la norme et l’argument des nombres complexes suivants :
(a)
ei(3⇡+4)
(b)
1
1+i
(c)
1).
ln(
(d)
3 + 7i
(e)
i3 + 1
(f)
ei ⇡
5 .
1.5 Vecteurs
Passons maintenant à l’utilisation des vecteurs. Un vecteur sous Matlab est une
collection de d’éléments du même type. Un vecteur pourra représenter des valeurs
expérimentales ou bien les valeurs discrétisées d’une fonction continue.
1.5.1 Définir un vecteur
La méthode la plus simples pour définir un vecteur est de donner sa description
explicite à l’aide de la commande [ ], par exemple :
vec = [1 2 4 7 9 2.3]
vec =
1.0000
2.0000
4.0000
7.0000
9.0000
2.3000
On peut également définir un vecteur colonne en utilisant le ;
col = [1 ; 2 ; 4 ; 7]
col =
1
2
4
7
Introduction à Matlab 9
ones(m,1) sera donc vecteur co-
lonne de longueur m dont tous les
éléments valent 1 (de même pour
zeros et rand).
On peut concaténer deux vecteurs :
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 pour passer d’une ligne à une colonne
ou réciproquement :
vec1 = [1 3 5];
vec = vec1’
vec =
1
3
5
Il n’est pas nécessaires de définir 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 acher le graph d’une fonction f telle que y = f (x) sous
Matlab, il faut définir 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 [a,s,b]. On crée alors un vecteur entre a et b avec un espacement s :
vec=[1:2:10]
vec =
1
3
5
7
9
Il existe enfin des vecteurs spéciaux prédéfinis dans Matlab :
ones(1,n)
zeros(1,n)
rand(1,n)
:
:
:
vecteur ligne de longueur n dont tous les éléments valent 1
vecteur ligne de longueur n dont tous les éléments valent 0
vecteur ligne de longueur n dont les éléments sont générés
de manière aléatoire entre 0 et 1.
1.5.2 Manipuler un vecteur
Il est important également de se familiariser à la manipulation de vecteurs,
c’est-a-dire être capable d’extraire des sous-ensembles a l’aide des indices. Le keme
élément d’un vecteur vec peut être aché grâce à la commande vec(k). k doit
être un entier sinon Matlab retournera une erreur :
>> vec = linspace(1,10,10)
2
vec = 1
Publicité
3
4
5
6
7
8
9
10
>> vec(4)
ans = 4
>> vec(4.2)
Subscript indices must be real positive integers or logical.
10
1.5. Vecteurs
On peut également utiliser des vecteurs d’indices pour extraire un sous-vecteur :
>> vec = linspace(1,89,9)
vec =
12
23
1
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
45
23
1.5.3 Opérations vectorielles
Pour les exposants on utilise
vec.^2
Les opérations algébriques usuelles +,
, / doivent être prises avec précau-
⇤
tions 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
et / par ./
la mutliplication ou la division termes à termes on doit remplacer
par .
⇤
,
⇤
⇤
>> vec = [1 3 5 6]; vec2 = [10 20 30 40];
>> vec+vec2
ans = 11
>> vec-vec2
ans = -9
23
35
46
-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 fonc-
tions définies précédemment pour les vecteurs. Par exemple :
>> 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
Introduction à Matlab 11
commandes
s’appliquent
Ces
aussi aux matrices. Dans ce cas
la commande porte sur chaque
vecteur colonne de la matrice.
Il existe aussi des commandes qui sont propres aux vecteurs.
sum(x)
prod(x)
max(x)
min(x)
:
:
:
:
somme des éléments du vecteur x
produit des éléments du vecteur x
plus grand élément du vecteur x
plus petit élément du vecteur x
mean(x)
: moyenne des éléments du vecteur x
sort(x)
fliplr(x)
:
:
ordonne les éléments du vecteur x par ordre croissant
renverse l’ordre des éléments du vecteur x
Exercice
(1.8) Manipulation de vecteurs
Donnez le code Matlab qui permet de :
a. Créez un vecteur colonne vec de 5 éléments linéairement espacés entre 2 et 3.
b. Ajoutez deux lignes à la fin de ce vecteur avec la valeur 0.
c. Ajoutez 1 au deuxieme et sixieme éléments de ce vecteur.
d. Créez un second vecteur vec2 colonne de même dimension que vec contenant
les entiers pairs supérieurs ou égaux à 6.
e. Définir un vecteur sumvec comme la somme des deux vecteurs vec et vec2.
f. Définir un vecteur prodvec comme le produit termes à termes des deux vecteurs
vec et vec2.
g. Quel est la somme des éléments de prodvec ?
h. Quel est la moyenne des éléments de sumvec ?
i. Quel est le plus grand élément du vecteur v3 = vec2+pvec2+1
vec.(vec2+1) ?
1.6 Matrices
Nous arrivons maintenant aux matrices ! C’est le coeur de Matlab. Donc on se
concentre ! ! !
1.6.1 Définir une matrice
Une matrice va se définir de façon similaire à un vecteur avec la commande [].
A =
1
4
✓
2
3
◆
On définit la matrice A :
>> A = [1 2 ; 4 3]
A =
1
4
2
3
12
1.6. Matrices
Cela est équivalent à
>> A = [1 2
4 3]
A =
1
4
2
3
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]
2
A = 1
3
4
5
6
>> [m n] = size(A)
m = 2
n = 3
>> size(A,1)
ans = 2
On peut construire très simplement une matrice ”par blocs”. Si A, B, C, D désignent
4 matrices (aux dimensions compatibles), on définit la matrice blocs :
par l’instruction M = [A B ; C D].
M =
A B
C D
✓
◆
Comme pour les vecteurs il existe des matrices prédéfinies :
la matrice identité (carrée de taille n)
la matrice à m lignes et n colonnes dont tous les éléments valent 1
la matrice à m lignes et n colonnes dont tous les éléments valent 0
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.
une matrice magique de dimension n.
0
0
1
1
1
1
1
:
:
:
:
:
eye(n)
ones(m,n)
zeros(m,n)
rand(m,n)
magic(n)
>> eye(3)
ans =
1
0
0
0
1
0
>> ones(2,4)
ans =
1
1
1
1
>> zeros(2)
ans =
0
0
0
0
>> rand(2,3)
ans =
Publicité
0...