Vous êtes sur la page 1sur 69

Outils de programmation

pour les mathématiques

Présenté par: ALI SAOUCHA

Université d’Alger 1
n_ali_saoucha@esi.dz

June 21, 2020

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 1 / 69


L’environnement MATLAB

MATLAB (MATrix LABoratory) est un langage de script émulé par un


environnement de développement du même nom.
Il est utilisé à des fins de calcul numérique. Développé par la société The
MathWorks.
MATLAB permet de manipuler des matrices, d’afficher des courbes et
des données, de mettre en œuvre des algorithmes, de créer des interfaces
utilisateurs.
Il peut s’interfacer avec d’autres langages comme le C, C++, Java, et
Fortran.
Les utilisateurs de MATLAB (environ 4 millions en 2019) sont de
milieux très différents comme l’ingénierie, les sciences et l’économie
dans un contexte aussi bien industriel que pour la recherche.
Matlab peut s’utiliser seul ou bien avec des toolboxes (« boîte à outils »).

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 2 / 69


L’environnement MATLAB
Sa popularité est due principalement aux points suivants :
Sa richesse: avec MATLAB, il est possible de réaliser des manipulations
mathématiques complexes en écrivant peu d’instructions. Il peut évaluer
des expressions, dessiner des graphiques et exécuter des programmes
classiques. Et surtout, il permet l’utilisation directe de plusieurs milliers
de fonctions prédéfinie.
L’utilisation des boites à outils (toolboxes): ce qui augmente sa
popularité dans plusieurs disciplines (simulation, traitement de signal,
imagerie, intelligence artificielle,...etc.).
La simplicité de son langage de programmation: un programme écrit
en MATLAB est plus facile à écrire et à lire comparé au même
programme écrit en C ou en PASCAL.
La gestion des variables: une caractéristique de MATLAB est que les
variables n’ont pas à être déclarées, leur nature se déduisant
automatiquement lors de l’affectation, ce qui libère l’utilisateur de
s’occuper de typage de données et ainsi de lui éviter les problèmes de
transtypage.
Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 3 / 69
L’environnement MATLAB

Actuellement MATLAB est à la version 9.x et au démarrage il affiche


plusieurs fenêtres. Selon la version on peut trouver les fenêtres suivantes:
Current Folder : indique le répertoire courant ainsi que les fichiers
existants.
Workspace : indique toutes les variables existantes avec leurs types et
valeurs.Il est possible de double-cliquer sur une variable pour l’afficher.
Un clic-droit sur les variables offre de nombreuses options telles que :
Copiez, Collez, Supprimez etc.
Command History : garde la trace de toutes les commandes entrées par
l’utilisateur.
Command Window : nous l’utilisons pour formuler nos expressions et
interagir avec MATLAB, et c’est la fenêtre la plus utiliser.

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 4 / 69


L’environnement MATLAB

Figure: L’environnement MATLAB (Version 2011 / 7.13)

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 5 / 69


L’environnement MATLAB

Figure: L’environnement MATLAB (Version 2019 / 9.6)


Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 6 / 69
L’environnement MATLAB

Au-dessus du bandeau de répertoire, il y a les menus de l’interface, organisés


sous la forme de trois onglets : HOME, PLOTS et APPS.
onglet HOME:L’onglet HOME est composé de plusieurs parties:
FILE : où on peut créer un nouveau script (ou fichier de commandes) ou
d’autres objets, ouvrir un script déjà existant, etc.
VARIABLE où il est possible d’importer des données, de sauver les
variables de l’espace de travail dans un fichier .mat, etc.
CODE présente des fonctionnalités pour analyser les codes, c’est-à-dire
les programmes MATLAB que vous avez écrits
ENVIRONMENT permet de configurer l’IDE comme on le souhaite
RESSOURCES permet d’accéder à des ressources et des aides en ligne.
onglet PLOT: L’onglet PLOT est un moyen de tracer différents types de
courbes à partir de données existantes.
onglet APP: L’onglet APPS permet de récupérer des applications
MATLAB. Les applications sont des objets nouveaux dans MATLAB et
ne seront pas présentées par la suite.
Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 7 / 69
Première interaction avec MATLAB
L’utilisation la plus basique de MATLAB consiste à utiliser l’interpréteur
de commandes (Command Window) comme une calculatrice.
Pour évaluer une expression mathématique il suffit de l’écrire juste après
le curseur », puis on clique sur la touche Entrer pour voir le résultat.
Le résultat est mis automatiquement dans une variable appelée ans (pour
answer). Celle-ci peut être utilisée dans un autre calcul.
Si nous voulons qu’une expression soit calculée mais sans afficher le
résultat, on ajoute un point-virgule ; à la fin de l’expression.
1 >> 5+6
2 ans =
3 11
4 >> ans+1
5 ans =
6 12
7 >> 5+6 ;
8 >>

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 8 / 69


Première interaction avec MATLAB

Il est possible d’écrire plusieurs expressions dans la même ligne en les


faisant séparées par des virgules ou des points virgules. Par exemple :
1 >> 5+6, 2*5−1, 12−4
2 ans =
3 11
4 ans =
5 9
6 ans =
7 8
8 >> 5+6; 2*5−1, 12−4;
9 ans =
10 9
11 >>

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 9 / 69


Première interaction avec MATLAB
Les opérations de base dans une expression sont:
L’opération La signification
+ L’addition
- La soustraction
* La multiplication
/ La division
\ La division gauche (ou la division inverse)
^ La puissance
’ Le transposé
() Les parenthèses spécifient l’ordre d’évaluation
L’évaluation se fait de gauche à droite en considérant les priorités:
Les opérations La préiorité (1= max, 4=min)
Les parenthèses (et) 1
La puissance ^ et le transposé ’ 2
La multiplication * et la division / 3
L’addition + et la soustraction - 4
Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 10 / 69
Première interaction avec MATLAB
Pour créer une variable, on utilise la structure: nom_variable = valeur
Il n ’est pas nécessaire de déclarer les variables avant de les utiliser, ni de
les typer. Leur type (entier, réel, complexe, chaîne de caractères,
tableaux, etc) s’affectera automatiquement en fonction du calcul effectué
ou de la valeur affectée.
Le nom d’une variable ne doit contenir que des caractères
alphanumériques ou le symbole ’_’ (underscore), et doit commencer par
une lettre de l’alphabet (a-z) .
MATLAB est sensible à la casse (A et a sont deux identifiants différents)
1 >> a = 10 ;
2 >> u = cos(a) ;
3 >> v = sin(a) ;
4 >> u^2+v^2
5 ans =
6 1

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 11 / 69


Première interaction avec MATLAB

Les Principaux types de variables:


Le type double
Un double est un nombre stocké en double précision, c’est-à-dire sur
64bits (ou 32bits, selon l’architecture matériel de l’ordinateur que vous
utilisez).
Cela signifie que contrairement à la plupart des langages, MATLAB code
de la même manière l’entier 1, et le réel 1.0.

Le type char
Pour un caractère seul, ou une chaîne de caractères ;

Le type logical
Pour les valeurs logiques vraie (true) ou faux (false).

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 12 / 69


Première interaction avec MATLAB

Un point essentiel du langage Matlab, il permet d’utiliser


dynamiquement les variables et même de leurs changer de type au cours
du programme.
Par exemple:
1 >> a=5
2 a =
3 5
4 >> b='bonjour'
5 b =
6 'bonjour'
7 >> b= false
8 b =
9 logical
10 0
11 >>

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 13 / 69


Première interaction avec MATLAB
Pour voir la liste des variables utilisées, on consulte la fenêtre Workspace
Si cette fenêtre n’est pas ouverte dans votre session actuelle de
MATLAB, il vous suffit d’appeler la commande workspace pour ouvrir
cette fenêtre.
Le workspace affiche toutes les variables présentes actuellement en
mémoire.
Vous pouvez y afficher différentes informations, telles que : • Le nom de
la variable • sa valeur • son type (class en anglais) • sa taille (size) • son
occupation mémoire (en Bytes, 1 byte valant 8 bits, comme un octet en
français).

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 14 / 69


Première interaction avec MATLAB
De manière similaire à ce que l’on voit dans le Workspace, la commande
whos donne un ensemble d’informations sur les variables en mémoire.
La commande whos, permet très simplement d’afficher les informations
concernant uniquement une variable, ou toutes les variables
correspondant à un filtre.
1 >> whos('a')
2 Name Size Bytes Class Attributes
3 a 1x1 8 double

Si l’on veut les informations de toutes les variables dont le nom


commence par la lettre a, on utilise la syntaxe whos 0 a∗0 .
Contrairement à la commende whos, la commende who peut etre itulusée
afin d’afficher juste les noms des variables sans détails
1 >> who
2 Your variables are:
3 a ans u v

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 15 / 69


Première interaction avec MATLAB

MATLAB offre beaucoup de commandes pour l’interaction avec l’utilisateur.


A titre d’exemples nous citons:

Commande Utilité
who Affiche le nom des variables utilisées
whos Affiche des informations sur les variables utilisées
clear x y Supprime les variables x et y
clear / clear all Supprime toutes les variables
clc Efface l’écran des commandes
exit / quit Fermer l’environnement MATLAB

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 16 / 69


Les nombres en MATLAB

MATLAB utilise:
une notation décimale conventionnelle, avec un point décimal ’.’
et le signe ’+’ ou ’–’ pour les nombres signés
la lettre ’e’ pour spécifier le facteur d’échelle en puissance de 10.
les caractères ’i’ et ’j’ (indifféremment) pour designer la partie
imaginaire pour les nombres complexes .

Le type Exemples
Entier 5 / -83
Réel en notation décimale 0.0205 / 3.1415926
1.60210e-20 (1.60210 × 10−20 )
Réel en notation scientifique
6.02252e23 (6.02252 × 1023 )
Complexe 5+3i / -3.14159j

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 17 / 69


Les nombres en MATLAB

En MATLAB, les calculs réels sont en double précision par défaut, ce qui
permet d’obtenir une précision de calcule allant jusqu’à 16 chiffres. Mais il
faut noter les points suivants :
Le résultat d’une opération de calcule est par défaut affichée avec quatre
chiffres après la virgule.
Pour afficher d’avantage de chiffres utiliser la commande format long
(14 chiffres après la virgule).
Pour retourner à l’affichage par défaut, utiliser la commande format
short.
Pour afficher uniquement 02 chiffres après la virgule, utiliser la
commande format bank.
Pour afficher les nombres sous forme d’une ration, utiliser la commande
format rat.

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 18 / 69


Les nombres en MATLAB
format short affiche les nombres avec 04 chiffres après la virgule
format long affiche les nombres avec 14 chiffres après la virgule
format bank affiche les nombres avec 02 chiffres après la virgule
format rat affiche les nombres sous forme d’une ration (a/b)
13 >> 8/3
1 >> 8/3 14 ans =
2 ans = 15 2.6667
3 2.6667 16 >> 7.2*3.1
4 >> format long 17 ans =
5 >> 8/3 18 22.3200
6 ans = 19 >> format rat
7 2.66666666666667 20 >> 7.2*3.1
8 >> format bank 21 ans =
9 >> 8/3 22 558/25
10 ans = 23 >> 2.6667
11 2.67 24 ans =
12 >> format short 25 26667/10000
Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 19 / 69
Les nombres en MATLAB

La fonction vpa peut être utilisé afin de forcer le calcule de présenter plus de
décimaux significatifs en spécifiant le nombre de décimaux désirés.
1 >> sqrt(2)
2 ans =
3 1.4142
4 >> vpa(sqrt(2),50)
5 ans =
6 1.4142135623730950488016887242096980785696718753769

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 20 / 69


Les constantes en MATLAB :
MATLAB définit les constantes suivantes :
La constante Sa valeur
pi π = 3.1415 . . .
exp(1) e =√2.7183 . . .
i = √−1
j = −1
inf ∞
NaN Not a Number (Pas un numéro Ex 0/0)
eps ε ≈ 2 × 10−16
Attention: Les noms des constantes n’est pas réservé.
 6 1
1 >> pi 7 >> clear pi
2 ans = 8 >> pi
3 3.1416 9 ans =
4 >> pi=1 10 3.1416
5 pi = 


Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 21 / 69
Les fonctions en MATLAB :
Parmi les fonction les plus fréquemment utilisées, on peu citer:

La fonction Sa signification
sin(x) / cos(x) le sinus et le cosinus de x (en radian)
tan(x) / atan(x) le tangent et l’arc tangent de x (en radian)
asin(x) / acos(x) l’arc sinus et l’arc cosinus de x (en radian)
sqrt(x) la racine carrée de x
abs(x) la valeur absolue de x
exp(x) l’exponentielle de x
log(x) logarithme naturel de x / ln(x)
log10(x) logarithme à base 10 de x / log10(x)
imag(x) la partie imaginaire du nombre complexe x
real(x) la partie réelle du nombre complexe x
round(x) arrondi un nombre vers l’entier le plus proche
floor(x) arrondi un nombre vers l’entier le plus petit
ceil(x) arrondi un nombre vers l’entier le plus grand

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 22 / 69


Exercice récapitulatif :

Créer une variable x et donnez-la la valeur 2, puis écrivez les expressions


suivantes :
e1+x
ln(x)
√ • sin−1 (2x) •

• 3x3 − 2x2 + 4x • 1− 2x 2x3
−1

solution
1 >> x=2 ;
2 >> 3*x^3−2*x^2+4*x ;
3 >> exp(1+x)/(1−sqrt(2*x)) ;
4 >> abs(asin(2*x)) ;
5 >> log(x)/(2*x^3)−1 ;

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 23 / 69


Sauvegarde des variables:
Lorsque Matlab se ferme, le Workspace est détruit, ce qui signifie que
toutes les variables sont perdues.
Il est cependant possible de sauvegarder les variables dans un fichier mat
grâce à la commande save.
1 >> a=45 ; b='bonjour' ; c=a+5i ; d=true; e = 12.5;
2 >> save('MesVariables')
La commande ci-dessous, crée un fichier nommé MesVariables.mat qui
contient toutes les variables (a,b,c,d et e). Ce Fichier est enregistré dans
le dossier en cours (Current Folder).

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 24 / 69


Sauvegarde des variables:
La commande save permet aussi de sauvegarder une seule variable au
lieu de tout le workspace.
1 >> a=45 ; b='bonjour' ; c=a+5i ; d=true; e = 12.5;
2 >> save('var_a', 'a')
3 >> save('var_b', 'b')
Les commandes ci-dessous, crée deux fichiers nommés var_a.mat et
var_b.mat qui contiennent les variables a et b dans le dossier en cours

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 25 / 69


Charger des variables sauvegardées
Au démarrage de matlab le workspace est toujours vide. La commande
load permet de charger des variables sauvegardées dans un fichier.
1 >> load('MesVariables')

La commande ci-dessus charge toutes les variables contenues dans le


fichier MesVariables sauvegardé précédemment.
Il faut s’assurer que le fichier chargé (MesVariables) soit disponible dans
la fenêtre Current Folder Sinon matlab génére une erreur!

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 26 / 69


Charger des variables sauvegardées
Il est aussi possible de charger qu’une seule variable depuis un fichier en
indiquant le nom de la variable après le nom du fichier
1 >>load('Mes_Variables','a')

La commande ci-dessus charge toutes les variables contenues dans le


fichier MesVariables sauvegardé précédemment.
La commande ci-dessus charge uniquement la variables a dans le
workspace

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 27 / 69


Chapitre 2: Les vecteurs

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 28 / 69


Les vecteurs
Un vecteur sous Matlab est une collection de d’éléments du même type.
Si les éléments sont arrangés horizontalement on dit que le vecteur est un
vecteur ligne.
Par contre si les éléments sont arrangés verticalement on dit que c’est un
vecteur colonne.
Pour créer un vecteur ligne il suffit d’écrire la liste de ses composants
entre crochets [et] et de les séparés par des espaces ou des virgules
comme suit :
1 % Création d'un vecteur ligne V
2 >> V = [ 5 , 2 , 13 , −6 ]
3 V =
4 5 2 13 −6
5 % Création d'un vecteur ligne U
6 >> U = [ 4 −2 1 ]
7 U =
8 4 −2 1

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 29 / 69


Les vecteurs
Pour créer un vecteur colonne il est possible d’utiliser une des méthodes
suivantes:
1 écrire les composants du vecteur entre crochets [et] et de les séparés par

des points-virgules (;) comme suit :


1 >> U = [ 4 ; −2 ; 1 ]
2 U =
3 4
4 −2
5 1

2 écrire verticalement le vecteur :

5 ]
1 >> U=[ 6 U =
2 4 7 4
3 −2 8 −2
4 1 9 1
Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 30 / 69
Les vecteurs
3 calculer le transposé d’un vecteur ligne :
1 % Création d'un vecteur ligne V
2 >> V = [ 4 −2 1 ]'
3 U =
4 4
5 −2
6 1

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 31 / 69


Les vecteurs
Si les composants d’un vecteur X sont ordonnés avec des valeurs
consécutives, nous pouvons le créer avec la notation suivante:

x = premier_élément : dernier_élément

colon(premier_élément,dernier_élément)

1 >> x = 1:8 %Les crochets sont facultatifs.


2 x =
3 1 2 3 4 5 6 7 8
4 >> x = [1:8]
5 x =
6 1 2 3 4 5 6 7 8
7 >> x = colon(1,4)
8 x =
9 1 2 3 4

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 32 / 69


Les vecteurs
Si les composants d’un vecteur X sont ordonnés avec des valeurs
consécutives mais avec un pas (d’incrémentation/décrémentation)
différent de 1, nous pouvons spécifier le pas avec la notation :
X = premier_élément : le_pas : dernier_élément

X = colon(premier_élément,le_pas, dernier_élément)

1 >> X = [0:2:10] % X contient les nombres pairs < 12


2 X =
3 0 2 4 6 8 10
4 >> X = colon(−4,2,6)
5 X =
6 −4 −2 0 2 4 6
7 >> X = 0:0.2:1 %Les crochets sont facultatifs
8 X =
9 0 0.2000 0.4000 0.6000 0.8000 1.0000

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 33 / 69


Les vecteurs
On peut écrire des expressions plus complexes comme :
1 >> V = [ 1:2:5 , −2:2:1 ]
2 V =
3 1 3 5 −2 0
4 >> A = [1 2 3]
5 A =
6 1 2 3
7 >> B = [A, 4, 5, 6]
8 B =
9 1 2 3 4 5 6

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 34 / 69


La fonction linspace :
La création d’un vecteur dont les composants sont ordonnés par intervalle
régulier et avec un nombre d’éléments bien déterminé peut se réaliser avec la
fonction :
linspace (début, fin, nombre d’éléments)

Le pas d’incrémentation est calculé automatiquement par Matlab selon la


formule:
fin − debut
le pas =
nombre d’éléments − 1
1 % un vecteur de quatre élément de 1 à 10
2 >> X = linspace(1,10,4)
3 X =
4 1 4 7 10
5 % un vecteur de quatre élément de 13 à 40
6 >> Y = linspace(13,40,4)
7 Y =
8 13 22 31 40
Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 35 / 69
Les vecteurs

Il existe enfin des vecteurs spéciaux prédéfinis dans Matlab :


ones(1,n) : vecteur ligne de longueur n dont tous les éléements valent 1
zeros(1,n) : vecteur ligne de longueur n dont tous les éléments valent 0
rand(1,n) : vecteur ligne de longueur n dont les éléments sont générés
de manière aléatoire entre 0 et 1.
ones(m,1) sera donc vecteur colonne de longueur m dont tous les
éléments valent 1 (de même pour zéros et rand).
1 >> n=5;
2 >> ones(1,n),zeros(1,n),rand(1,n)
3 ans =
4 1 1 1 1 1
5 ans =
6 0 0 0 0 0
7 ans =
8 0.9058 0.1270 0.9134 0.6324 0.0975

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 36 / 69


Référencement et accès aux éléments d’un vecteur :
L’accès aux éléments d’un vecteur se fait en utilisant la syntaxe générale
suivante:

1 % création du vecteur V qui contient 5 éléments


2 >> V = [5, −1, 13, −6, 7]
3 V =
4 5 −1 13 −6 7
5 % la 3eme position
6 >> V(3)
7 ans =
8 13
9 >> V(3.2)
10 Array indices must be positive integers or logical values.

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 37 / 69


Référencement et accès aux éléments d’un vecteur :
1 % de la deuxième position jusqu'au quatrième
2 >> V(2:4)
3 ans =
4 −1 13 −6
5 % de la 4eme pos jusqu'à la 1ere avec le pas = −2
6 >> V(4:−2:1)
7 ans =
8 −6 −1
9 % de la 3eme position jusqu'à la dernière
0 >> V(3:end)
1 ans =
2 13 −6 7
3 % la 1ere, la 3eme et la 4eme position uniquement
4 >> V([1,3,4])
5 ans =
6 5 13 −6
Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 38 / 69
Référencement et accès aux éléments d’un vecteur :
1 % donner la valeur 8 au premier élément
2 >> V(1) = 8
3 V =
4 8 −1 13 −6 7
5 % ajouter un sixième élément avec la valeur −3
6 >> V(6) = −3
7 V =
8 8 −1 13 −6 7 −3
9 % ajouter un neuvième élément avec la valeur 5
0 >> V(9) = 5
1 V =
2 8 −1 13 −6 7 −3 0 0 5
3 >> U = [1 3 5]; V(U)
4 ans =
5 8 13 7

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 39 / 69


Référencement et accès aux éléments d’un vecteur :
1 % Supprimer le deuxième élément
2 >> V(2) = []
3 V =
4 8 13 −6 7 −3 0 0 5
5 % Supprimer du 3eme jusquau 5eme élément
6 >> V(3:5) = []
7 V =
8 8 13 0 0 5

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 40 / 69


Référencement et accès aux éléments d’un vecteur :

Les opérations algébriques usuelles +, - , * , / doivent être prises avec


précautions pour les vecteurs.
La somme et la diffé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 multiplication ou la division termes à termes on doit
remplacer * par .* et / par ./ Pour les exposants on utilise u.^2.

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 41 / 69


Référencement et accès aux éléments d’un vecteur :

1 %Exemple avec :
2 >> u = [−2, 6, 1] ;
3 >> v = [ 3, −1, 4] ;
4 %Addition des vecteurs (+)
5 >> u+2
6 ans =
7 0 8 3
8 >> u+v
9 ans =
0 1 5 5

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 42 / 69


Référencement et accès aux éléments d’un vecteur :

1 %Exemple avec :
2 >> u = [−2, 6, 1] ;
3 >> v = [ 3, −1, 4] ;
4 %Soustraction des vecteurss (−)
5 >> u−2
6 ans =
7 −4 4 −1
8 >> u−v
9 ans =
0 −5 7 −3

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 43 / 69


Référencement et accès aux éléments d’un vecteur :

1 %Exemple avec :
2 >> u = [−2, 6, 1] ;
3 >> v = [ 3, −1, 4] ;
4 %Multiplication élément par élément (.*)
5 >> u*2
6 ans =
7 −4 12 2
8 >> u.*2
9 ans =
0 −4 12 2
1 >> u.*v
2 ans =
3 −6 −6 4

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 44 / 69


Référencement et accès aux éléments d’un vecteur :

1 %Exemple avec :
2 >> u = [−2, 6, 1] ;
3 >> v = [ 3, −1, 4] ;
4 %Division élément par élément (./)
5 >> u/2
6 ans =
7 −1.0000 3.0000 0.5000
8 >> u./2
9 ans =
0 −1.0000 3.0000 0.5000
1 >> u./v
2 ans =
3 −0.6667 −6.0000 0.2500

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 45 / 69


Référencement et accès aux éléments d’un vecteur :

1 %Exemple avec :
2 >> u = [−2, 6, 1] ;
3 >> v = [ 3, −1, 4] ;
4 %Puissance élément par élément (.^)
5 >> u.^2
6 ans =
7 4 36 1
8 >> u.^v
9 ans =
0 −8.0000 0.1667 1.0000

L’écriture d’une expression tel que : u^2 génère une erreur car cette
expression réfère a une multiplication de matrices (u ∗ u doit être réécrite
u ∗ u0 ou u0 ∗ u pour être valide).

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 46 / 69


Référencement et accès aux éléments d’un vecteur :

De la même manière que pour les scalaires, on peut appliquer toutes les
fonctions définies précédemment pour les vecteurs. Par exemple :
1 >> vec = linspace(1,10,5)
2 vec =
3 1.0000 3.2500 5.5000 7.7500 10.0000
4 >> cos(vec)
5 ans =
6 0.5403 −0.9941 0.7087 0.1038 −0.8391
7 >> sqrt(vec)
8 ans =
9 1.0000 1.8028 2.3452 2.7839 3.1623

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 47 / 69


La fonction linspace :

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éments du vecteur x
min(x) : plus petit éléments du vecteur x
mean(x) : moyenne des éléments du vecteur x
sort(x) : ordonne les éléments du vecteur x par ordre croissant
fliplr(x) : renverse l’ordre des éléments du vecteur x
length(x): La taille d’un vecteur /le nombre de ses composants

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 48 / 69


Chapitre 3: Les matrices

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 49 / 69


Les matrices

Une matrice est un tableau rectangulaire d’éléments (bidimensionnels).


Les vecteurs sont des matrices avec une seule ligne ou une seule colonne
(monodimensionnels).
Pour créer une matrice, il faut respecter les règles suivantes :
1 Les éléments doivent être mises entre des crochets [ et ].
2 Les espaces ou les virgules sont utilisés pour séparer les éléments dans la
même ligne.
3 Un point-virgule (ou la touche entrer) est utilisé pour séparer les lignes.
Le nombre d’éléments dans chaque ligne (nombre de colonnes) doit être
identique dans toutes les lignes de la matrice, sinon une erreur sera
signalée par Matlab. Par exemple:
1 >> x = [1 2 ; 4 5 6]
2 Dimensions of arrays being concatenated are not consistent.

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 50 / 69


Les matrices
 
1 2 3 4
5 6 7 8 
9 10 11 12
Cette matrice pout être écrite en Matlab avec une des syntaxes suivantes :
1 >> A = [1,2,3,4 ; 5,6,7,8 ; 9,10,11,12] ;

1 >> A = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12] ;

1 >> A = [1,2,3,4
2 5,6,7,8
3 9,10,11,12] ;

1 >> A=[[1;5;9] , [2;6;10] , [3;7;11] , [4;8;12]] ;

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 51 / 69


Les matrices:
Une matrice peut être générée par des vecteurs comme le montre les exemples
suivants:
1 >> x = 1:4 % création d'un vecteur x
2 x =
3 1 2 3 4
4 >> y = 5:5:20 % création d'un vecteur y
5 y =
6 5 10 15 20
7 >> z = 4:4:16 % création d'un vecteur z
8 z =
9 4 8 12 16
0 % A est formée par les vecteurs lignes x, y et z
1 >> A = [x ; y ; z]
2 A =
3 1 2 3 4
4 5 10 15 20
5 4 8 12 16
Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 52 / 69
Les matrices:
1 % B est formée par les vecteurs colonnes x, y et z
2 >> B = [x' y' z']
3 B =
4 1 5 4
5 2 10 8
6 3 15 12
7 4 20 16
8 % C est formée par le même vecteur ligne x 2 fois
9 >> C = [x ; x]
0 C =
1 1 2 3 4
2 1 2 3 4

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 53 / 69


Référencement et accès aux éléments d’une matrice

L’accès aux éléments d’une matrice se fait en utilisant la syntaxe générale


suivante :

L’accès à un élément de la ligne i et la colonne j se fait par : A(i, j)


L’accès à toute la ligne numéro i se fait par : A(i, :)
L’accès à toute la colonne numéro j se fait par : A(:, j)

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 54 / 69


Référencement et accès aux éléments d’une matrice
1 >> A = [1,2,3,4 ; 5,6,7,8 ; 9,10,11,12] % création de la matrice
2 A =
3 1 2 3 4
4 5 6 7 8
5 9 10 11 12
6 >> A(2,3) % l'élément sur la 2ème ligne à la 3ème colonne
7 ans =
8 7
9 >> A(1,:) % tous les éléments de la 1ère ligne
0 ans =
1 1 2 3 4
2 >> A(:,2) % tous les éléments de la 2ème colonne
3 ans =
4 2
5 6
6 10

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 55 / 69


Référencement et accès aux éléments d’une matrice
1 % tous les éléments de la 2ème et la 3ème ligne
2 >> A(2:3,:)
3 ans =
4 5 6 7 8
5 9 10 11 12
6 % La sous matrice supérieure droite de taille 2x2
7 >> A(1:2,3:4)
8 ans =
9
0 3 4
1 7 8
2 % la sous matrice: lignes(1,3) et colonnes (2,4)
3 >> A([1,3],[2,4])
4 ans =
5 2 4
6 10 12

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 56 / 69


Référencement et accès aux éléments d’une matrice
1 % Supprimer la troisième colonne
2 >> A(:,3) = []
3 A =
4 1 2 4
5 5 6 8
6 9 10 12
7 % Supprimer la deuxième ligne
8 >> A(2,:) = []
9 A =
0 1 2 4
1 9 10 12

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 57 / 69


Référencement et accès aux éléments d’une matrice
1 % Ajouter une nouvelle colonne {ou A(:,4)=[0;0]}
2 >> A = [A , [0;0]]
3 A =
4 1 2 4 0
5 9 10 12 0
6 % Ajouter une nouvelle ligne {ou A(3,:)=[1,1,1,1]}
7 >> A = [A ; [1,1,1,1]]
8 A =
9 1 2 4 0
0 9 10 12 0
1 1 1 1 1

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 58 / 69


Référencement et accès aux éléments d’une matrice

Les dimensions d’une matrice peuvent être acquises en utilisant la


fonction size.
Avec une matrice A de dimension m × n le résultat de cette fonction est
un vecteur de deux composants, une pour m et l’autre pour n.
1 >> d = size(A)
2 d =
3 3 4

Pour obtenir les dimensions séparément on peut utiliser la syntaxe :


1 >> d1 = size (A, 1) % d1 contient le nombre de ligne (m)
2 d1 =
3 3
4 >> d2 = size (A, 2) % d2 contient le nombre de colonne (n)
5 d2 =
6 4

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 59 / 69


Référencement et accès aux éléments d’une matrice

En Matlab, il existe des fonctions qui permettent de générer


automatiquement des matrices particulières.
Dans le tableau suivant nous présentons-les plus utilisées :

La fonction Signification
zeros(n) Génère une matrice n × n avec tous les éléments = 0
zeros(m,n) Génère une matrice n × m avec tous les éléments = 0
ones(n) Génère une matrice n × n avec tous les éléments = 1
ones(m,n) Génère une matrice m × n avec tous les éléments = 1
eye(n) Génère une matrice identité de dimension n × n
magic(n) Génère une matrice magique de dimension n × n
rand(m,n) Génère une matrice de dimension m × n de valeurs aléatoires

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 60 / 69


Les opérations de base sur les matrices

L’opération Signification
+ L’addition
- La soustraction
.* La multiplication élément par élément
./ La division élément par élément
.\ La division inverse élément par élément
.ˆ La puissance élément par élément
* La multiplication matricielle
/ La division matricielle (A/B) = (A ∗ B−1 )
Les opérations élément par éléments sur les matrices sont les mêmes que
ceux pour les vecteurs (la seule condition nécessaire pour faire une
opération élément par élément est que les deux matrices aient les mêmes
dimensions).
Par contre la multiplication ou la division des matrices requiert quelques
contraintes (consulter un cours sur l’algèbre matricielle pour plus de
détail). (A * B est faisable seulement si A est mxn et B et n*k le resultat est mxk
Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 61 / 69
Référencement et accès aux éléments d’une matrice

1 >> A=ones(2,3)
2 A =
3 1 1 1
4 1 1 1
5 >> B=zeros(3,2)
6 B =
7 0 0
8 0 0
9 0 0
0 >> B=B+3
1 B =
2 3 3
3 3 3
4 3 3

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 62 / 69


Référencement et accès aux éléments d’une matrice
1 >> A*B
2 ans =
3 9 9
4 9 9
5 >> B=[B , [3 3 3]'] % ou bien B(:,3)=[3 3 3]'
6 B =
7 3 3 3
8 3 3 3
9 3 3 3
0 >> B=B(1:2,:) % ou bien B(3,:)=[]
1 B =
2 3 3 3
3 3 3 3

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 63 / 69


Référencement et accès aux éléments d’une matrice
1 >> A=A*2
2 A =
3 2 2 2
4 2 2 2
5 >> A*B
6 ans =
7 9 9
8 9 9
9 >> B=[B , [3 3 3]'] % ou bien B(:,3)=[3 3 3]'
0 B =
1 3 3 3
2 3 3 3
3 3 3 3
4 >> B=B(1:2,:) % ou bien B(3,:)=[]
5 B =
6 3 3 3
7 3 3 3
Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 64 / 69
Fonctions utiles pour le traitement des matrices

Voici quelques fonctions parmi les plus utilisées concernant les matrices :

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 66 / 69


Fonctions utiles pour le traitement des matrices

Suite:

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 67 / 69


Fonctions utiles pour le traitement des matrices

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 68 / 69


Fonctions utiles pour le traitement des matrices

Pour: triu(A,k) ou tril(A,k)


k = 0 est la diagonale principale,
k> 0 est au-dessus de la diagonale principale
k <0 est en dessous de la diagonale principale.
U = triu (A, k) renvoie les éléments sur et au-dessus
de la kème diagonale de A.
L = tril (A, k) renvoie les éléments sur et en dessous
de la kème diagonale de A.
D = diag (v, k) place les éléments du vecteur v sur la
kème diagonale.

Présenté par: ALI SAOUCHA (ALGER1) OPM June 21, 2020 68 / 69


This is the END.

Vous aimerez peut-être aussi