Académique Documents
Professionnel Documents
Culture Documents
SUPPORT DE COURS
2
Matière : Outils de Programmation pour les
Mathématiques
Programme :
1- Environnement de MATLAB et Structures de Données.
2- Opérations Vectorielles et Matricielles.
3- Ensembles, Polynômes, Fonctions, Dérivation, Intégrales.
4- Programmation : Fonctions et Procédures.
5- Graphisme : Représentation Graphique des Résultats.
6- Utilisation des Fichiers : Lecture et Ecriture.
7- GUI : Interfaces Graphiques.
Bibliographie :
M. Mokhtari et A. Mesbah : Apprendre et maitriser Matlab. Springer.
B. Laurent : Documents pour les TPs de Matlab.
3
Chapitre 1
Environnement de MATLAB et Structures de Données
1. Introduction
• Développé par la société « The MathWorks », MATLAB (matrix laboratory) est un logiciel
commercial utilisé à des fins de calcul numérique.
• C’est un langage de programmation de quatrième génération et un environnement de
développement.
• 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, et peut
s’interfacer avec d’autres langages comme le C, C++, Java, et Fortran.
• Il permet de réaliser des simulations numériques basées sur des algorithmes d'analyse
numérique.
• Il peut donc être utilisé pour la résolution approchée d'équations différentielles,
d'équations aux dérivées partielles ou de systèmes linéaires, etc...
• L'objectif de cette matière est premièrement l’apprentissage de ce logiciel parce qu'il
est de plus en plus utilisé dans la recherche scientifique, la simulation des
expérimentations des réseaux, en électronique, etc.
• Presque 50% des étudiants de licence et de master utilisent Matlab pendant leurs
projets de fin d’étude.
2. Environnement de MATLAB
• MATLAB a passé par plusieurs versions : La version la plus récente (R2014a) a été lancée
en mars 2014.
R2013b R2010b R2007b R14
•
4
• Pour obtenir les informations concernant une section particulières, entrez help section :
>> help elfun
Elementary math functions.
Trigonometric.
sin - Sine.
sind - Sine of argument in degrees.
sinh - Hyperbolic sine.
asin - Inverse sine.
asind - Inverse sine, result in degrees.
asinh - Inverse hyperbolic sine.
cos - Cosine.
cosd - Cosine of argument in degrees.
cosh - Hyperbolic cosine.
acos - Inverse cosine.
acosd - Inverse cosine, result in degrees.
...
• Pour avoir de l’aide directement sur une commande, entrez help commande :
>> help sin
SIN Sine.
SIN(X) is the sine of the elements of X.
See also asin, sind.
Reference page in Help browser
doc sin
• helpwin ouvre une fenêtre contenant la liste des commandes Matlab ainsi que leurs
documentations.
• Matlab est un langage interprété, c’est à dire qu’il exécute directement (sans
compilation) les commandes qu’on entre dans la fenêtre de commandes.
Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar
6
3. Manipulation de variables
• MATLAB gère les nombres entiers, réels, complexes, les chaînes de caractères ainsi que
les tableaux de nombres de façon transparente : Il est inutile de déclarer préalablement
le type de la variable que l’on manipule, même pour les tableaux et les matrices, il suffit
simplement d’assigner une valeur au nom de la variable avec l’instruction « = ».
>> a = 10
a =
10
4. Les Scalaires
• Le type de scalaire manipulé est transparent pour l’utilisateur. Ce type peut être entier,
réel ou complexe.
>> a = 1
a =
1
>> b = 1.02
b =
1.0200
>> x = 1.45e4
x =
Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar
14500
>> c = 1 + 2.4i 7
c =
1.0000 + 2.4000i
5. Historique
8
• MATLAB conserve l'historique des commandes.
• Il est donc possible de récupérer des instructions déjà saisies en utilisant les touches de
flèches (← → ↑ ↓), et ensuite de les modifier dans le but de les réutiliser.
6. Variables d'environnement
• MATLAB garde en mémoire les variables qui ont été créées. On les voit en haut, à
gauche, lorsque MATLAB dispose d'une interface graphique. On outre, on peut les
afficher et les effacer par la ligne de commande :
a. who donne la liste des variables présentes dans l'espace de travail.
b. whos donne la liste des variables présentes dans l'espace de travail
ainsi que leurs propriétés.
c. what donne la liste des fichiers (.m) et (.mat) présents dans le
répertoire courant.
d. clear var1… varn efface les variables var1…varn de l'espace de travail.
e. clear efface toutes les variables crées dans l'espace de travail.
f. exist var vérifie si une fonction ou une variable existe dans le workspace.
>> who
Your variables are:
a ans
>> whos
Name Size Bytes Class Attributes
a 1x1 8 double
ans 1x1 8 double
>> what
MATLAB Code files in the current folder
C:\Users\omari\Documents\Research\Matlab\GUI
>> exist a
ans = 9
0
>> a = 10 ;
>> exist a
ans =
1
• Si une commande ne peut être écrite sur une seule ligne, il suffira d'ajouter à la fin de la
ligne au moins trois points '...' et MATLAB concaténera cette ligne et la suivante (jusqu'à
un maximum de 1024 caractères).
>> s = 1/2 + 2/3 + 3/4 + 4/5 + 5/6 ...
+ 7/8 + 8/9 + 9/10 + 10/11 + 11/12 ...
+ 12/13 + 13/14 + 14/15 + 15/16 + ...
16/17 + 17/18 + 18/19 + 19/20
s =
15.5451
• Les commandes save et load permettent d’écrire (charger) toutes les variables du
workspace dans le fichier matlab.mat. Si un nom de fichier est spécifié (save myfile ou
load myfile) l’espace de travail est sauvegardé (chargé) conformément.
>> who
Your variables are:
Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar
a ans la lo s su
>> save 10
Saving to:
C:\Users\omari\Documents\Research\Matlab\GUI\matlab.mat
>> clear
>> who
>> load
Loading from: matlab.mat
>> who
Your variables are:
a ans la lo s su
a<b inférieur
11
a <= b inférieur ou égal
log(a) logarithme naturel
log2(a) logarithme de la base 2
log10(a) logarithme de la base 10
conj(c) le conjugué d’un nombre complexe
real(c) la partie réelle d’un nombre complexe
imag(c) la partie imaginaire d’un nombre complexe
angle(c) l’argument d’un nombre complexe
abs(c) le module d’un nombre complexe
8. La commande format :
• Par défaut, MATLAB affiche les valeurs numériques réelles sous format de point fixe à 5
chiffres.
• On peut changer la façon dont les valeurs numériques sont affichées à comme suit:
a. format short point fixe, 5 chiffres (aussi short g)
b. format long point fixe, 15 chiffres (aussi long g)
c. format short e point flottant, 5 chiffres
d. format long e point flottant, 15 chiffres
e. format rational format rationnel
>> format short g
>> 15/7
ans =
2.1429
>> format long g
>> ans
ans =
2.14285714285714
>> format short e
>> ans
ans =
2.1429e+00
ans =
2.142857142857143e+00 12
>> format rational
>> ans
ans =
15/7
Chapitre 2
13
Opérations Vectorielles
1. Introduction
• MATLAB traite un seul type d'objet : les matrices !
a. Les scalaires sont des matrices 1 x 1.
b. les vecteurs lignes sont des matrices 1 x n.
c. les vecteurs colonnes sont des matrices n x 1.
2. Les Vecteurs
• Par défaut, le vecteur est une ligne à plusieurs colonnes.
• Un vecteur ligne peut être créé par énumération de ces valeurs (coordonnées) séparées
par des espaces ou des virgules:
>> v = [1 2.3 4 5]
v =
1.0000 2.3000 4.0000 5.0000
• Un vecteur ligne peut être aussi créé par description de la valeur initiale, l’incrément, et
la valeur finale :
>> v = [1 : 1 : 10]
v =
1 2 3 4 5 6 7 8 9
10
>> v = [1 : 0.5 : 10]
v =
Columns 1 through 9
1.0000 1.5000 2.0000 2.5000 3.0000
3.5000 4.0000 4.5000 5.0000
Columns 10 through 18
5.5000 6.0000 6.5000 7.0000 7.5000
Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar
Columns 10 through 11
2.8274 3.1416
• Un vecteur colonne peut être obtenu à partir d’un vecteur ligne en utilisant les
opérations « trans-conjugué » (‘) et « transposé » (.‘):
Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar
>> v = [1 2.3 4 5]
v = 15
1.0000 2.3000 4.0000 5.0000
• Les fonctions zeros et ones initialisent des vecteurs lignes (zeros(1, k) et ones (1, k)) ou
colonnes (zeros(k, 1) et ones(k, 1)) par des zéros ou des uns :
>> v = zeros(1,5)
v =
0 0 0 0 0
>> v = zeros(5,1)
v =
0
0
0
0
Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar
0
>> v = ones(1,5) 16
v =
1 1 1 1 1
>> v = ones(5,1)
v =
1
1
1
1
1
• La fonction rand initialise des vecteurs lignes (rand(1, k)) ou colonnes (rand(1, k)) par des
valeurs aléatoires entre 0 et 1 :
>> v1 = rand(1, 5) % 5 valeurs aléatoires (0–1)
v1 =
0.0975 0.2785 0.5469 0.9575 0.9649
>> v2 = rand(1, 5) % 5 autres valeurs aléatoires (0-1)
v2 =
0.1576 0.9706 0.9572 0.4854 0.8003
>> v3 = 10 * rand(1, 5) % 5 valeurs aléatoires (0-10)
v3 =
1.4189 4.2176 9.1574 7.9221 9.5949
4. Adressage et Indexage
18
>> v = [1:1:5]*2
v =
2 4 6 8 10
ème
>> v(3) % 3 élément
ans =
6
>> v(2:4) % sous-vecteur du 2ème au 4ème élément
ans =
4 6 8
>> v(2:end) %sous-vecteur du 2ème au dernier élément
ans =
4 6 8 10
5. Opérations Statistiques
>> x = [2 4 5 6 7];
>> max(x) % maximum
ans =
7
ans =
5 19
>> var(x) % la variance des valeurs
ans =
3.7000
>> std(x) % l’écart type des valeurs
ans =
1.9235
() =
() =
()
() = ̅ =
(
+ 1) = 2
+ 1 (
)
() = (
) + (
+ 1)
= 2
(
)
2
1
() = ( − ̅ )
() = !()
Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar
• Afin d'afficher deux ou plusieurs graphes en même temps, une série des coordonnées
(x,y) est introduise à la fonction plot: plot(x1, y1, x2, y2, …) .
• La légende (surtout en cas de plusieurs graphes) peut être affichée en utilisant la
commande legend(legend1, legend2, …).
Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar
Symbole Couleur
y Jaune
m Magenta
c Cyan
r Rouge
g Vert
b Bleu
w Blanc
k Noir
Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar
23
>> x = linspace(1,100, 10); % 10 éléments
>> y1 = x;
>> y2 = 2*x+1;
>> y3 = -x+3;
>> plot(x, y1, '-b', x, y2, '--or',x, y3, ':vg')
% y1 en bleu et ligne solide
% y2 en rouge et ligne non-continue, marquer o
% y3 en vert et ligne en pointillé
>> sort(A)
Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar
ans =
7 12 18 23 23 35 40 51 62 85 24
• Le tri d'un vecteur est basé sur les caractéristiques des éléments du vecteur d'entrée:
a. Les entiers et les réels: Selon leurs valeurs.
b. Les complexes: Selon le module puis l'argument (ou la phase).
c. Les caractères: Selon le code ascii.
>> A = [5 7 2 8]
A =
5 7 2 8
>> sort(A)
ans =
2 5 7 8
B =
s 25
b
k
v
$
0
>> sort(B)
ans =
$
0
b
k
s
v
>> abs(cvecteur)
Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar
ans =
2.2361 2.2361 2.8284 2.8284 26
>> angle(cvecteur)
ans =
1.1071 2.0344 0.7854 2.3562
• Une liste des chaînes de caractères est triée selon leurs premiers caractères.
Néanmoins, ces chaînes doivent avoir la même taille pour être stocké dans le même
vecteur.
• Par ailleurs, si les chaînes ont des tailles différentes, on les stocke d'abord dans un cellstr
avant d'effectuer le tri.
>> B = ['CCC'; 'AAA';'BBB']
% chaînes de caractères de même taille
B =
CCC
AAA
BBB
>> sort(B)
ans =
AAA
BBB
CCC
>> sort(B)
% résultat incorrect 27
ans =
AA
BBA
CCBB
>> B = cellstr(B)
B =
'CC'
'AAA'
'BBBB'
>> sort(B)
% résultat correct
ans =
'AAA'
'BBBB'
'CC'
>> find(A>=0)
ans =
2 3 6 7 8 9
>> find(A<0)
ans =
1 4 5 10
>> find(A>30)
ans =
3
>> find(A==30)
ans =
Empty matrix: 1-by-0
>> find(A==14)
ans =
7 9
>> find(A>=0)
ans = 29
2 3 6 7 8 9
>> find(A>=0, 2)
ans =
2 3
A =
1 1 1 1 0 0 0 0 0 0 30
• La suppression d'un ou plusieurs éléments d'un vecteur peut être effectuée en utilisant
le vecteur vide []:
>> A(5) = []
A =
1 2 3 4 6 7 8 9 10
>> A(1:3) = []
A =
4 6 7 8 9 10
• L'insertion d'un nouvel élément dans un vecteur nécessite l'index exact de l'élément afin
de concaténer la partie gauche, le nouvel élément et la partie droite, en construisant le
nouveau vecteur:
>> A = [2 4 8 10 12] % vecteur de 5 élément
A =
2 4 8 10 12
>> x = 6; i = 3; % élément à insérer et son index
>> A = [A(1:i-1) x A(i:end)]
% concaténer partie gauche + élément + partie droite
A =
2 4 6 8 10 12
Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar
Chapitre 3
31
Calcul Matriciel
1. Introduction
• Les matrices suivent la même syntaxe que les vecteurs.
• Les composantes des lignes sont séparées par des virgules ou des espaces et chaque
ligne est séparée de l'autre par un point virgule.
• La commande repmat(val, lin, col) crée une matrice pleine des valeurs dupliqués .
• Les commandes zeros(lin, col) et ones(lin, col) créent des matrices des zéros et des uns,
respectivement.
>> A = [1 2 3; 4 5 6; 7 8 9]
A =
1 2 3
4 5 6
7 8 9
>> A = repmat(1, 4, 3)
A =
1 1 1
1 1 1
1 1 1
1 1 1
B =
1 1 1
1 1 1
• Comme pour les vecteurs, une matrice peut être définie aléatoirement en utilisant les
commande rand(lin, col) et randi(max, lin, col) :
Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar
• Une matrice peut être produise à partir d’une autre matrice ou un autre vecteur en
utilisant la commande reshape(Vec, [lin, col]) en changeant sa dimension (le nombre
d’éléments doit être identique):
Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar
>> V = [1 2 3 4 5 6 7 8 9 10 11 12]
% vecteur ligne de 12 éléments 33
V =
1 2 3 4 5 6 7 8 9 10
11 12
>> A*A_1
ans =
1.0000 0 -0.0000
0 1.0000 0
0 0 1.0000
>> det(A)
ans =
-5
1 2 3
0 1 -1
0 -1 -4
Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar
>> det(B)
ans =
0
>> rank(B)
ans =
2
>> det(C)
ans = 38
0
>> rank(C)
ans =
1
>> A + 2
ans =
3 4 5
6 7 8
Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar
9 10 11
>> A - 2 39
ans =
-1 0 1
2 3 4
5 6 7
>> A * 2
ans =
2 4 6
8 10 12
14 16 18
>> A/2
ans =
0.5000 1.0000 1.5000
2.0000 2.5000 3.0000
3.5000 4.0000 4.5000
>> B = [1 1 2; 1 1 1; 2 1 1]
B =
Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar
1 1 2
1 1 1 40
2 1 1
>> A+B
ans =
2 3 5
5 6 7
9 9 10
>> A-B
ans =
0 1 1
3 4 5
5 7 8
>> A*B
ans =
9 6 7
21 15 19
33 24 31
>> A.*B
ans =
1 2 6
4 5 6
14 8 9
>> A/B
ans =
1 2 -1
1 5 -1
1 8 -1
>> A./B
ans =
1.0000 2.0000 1.5000
4.0000 5.0000 6.0000
3.5000 8.0000 9.0000
Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar
• Comme pour les vecteurs, la commande find(A) trouve les valeurs non nulles dans une
41
matrice. find(cond A) trouve les valeurs satisfaisantes de la condition en question.
>> A = [1 0 2; 4 5 0; 7 0 8]
A =
1 0 2
4 5 0
7 0 8
>> [lin col val] = find(A) % trouver les valeurs non nulles
lin =
1
2
3
2
1
3
col =
1
1
1
2
3
3
val =
1
4
7
5
2
8
3
42
col =
1
3
1 2 3
4 5 6
7 8 9
j =
3
Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar
• A(i: j), A(i1: i2, j1: j2): une sous-matrice de A à partir de l'index linéaire i jusqu'à l'index j (i1
44
et i2 index des lignes, j1 et j2 index des colonnes).
• A(i: pas: j), A(i1: pas: i2, j1: pas: j2): une sous-matrice de A à partir de l'index i jusqu'à
l'index j avec un pas (i1 i2 index des lignes, j1 j2 index des colonnes).
• A([i1 i2 … in]), A([i1 i2 … in] ,[j1 j2 … jn]): une sous-matrice de A en prendre en considération
les indices i1, i2, …, in (pour l’indexage ligne-colonne, on considère i1,i2,…,in des indices
des lignes, j1,j2,…,jn indices des colonnes).
>> A = [1 2 3; 4 5 6; 7 8 9]
A =
1 2 3
4 5 6
7 8 9
>> A(1: 5)
ans =
1 4 7 2 5
>> A(1:2:5)
ans =
1 7 5
>> A(1,:)
ans = 45
1 2 3
>> A(:,2)
ans =
2
5
8
>> A(:,:)
ans =
1 2 3
4 5 6
7 8 9
>> A(:)
ans =
1
4
7
2
5
8
3
6
9
>> A = ones(4,4)
A =
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
>> B = zeros(4, 4)
B =
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar
• La suppression d'un ou plusieurs éléments d'un vecteur peut être effectuée en utilisant
le vecteur vide []:
>> A = reshape(linspace(1, 16, 16), [4, 4])
A =
1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16
>> B = zeros(3, 3)
B =
0 0 0
0 0 0
0 0 0
>> C = [A B; B A]
C =
1 1 1 0 0 0
1 1 1 0 0 0
1 1 1 0 0 0
0 0 0 1 1 1
0 0 0 1 1 1
0 0 0 1 1 1
>> sin(A)
ans =
-0.4121 0.9589 -0.8415 0.1411
-0.9894 0.7568 0 -0.7568
-0.6570 -0.1411 0.8415 -0.9589
0.2794 -0.9093 0.9093 -0.2794
Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar
>> abs(A)
ans = 49
9 5 1 3
8 4 0 4
7 3 1 5
6 2 2 6
>> sort(A)
ans =
-9 -5 -1 3
-8 -4 0 4
-7 -3 1 5
-6 -2 2 6
>> sum(A)
ans =
-30 -14 2 18
>> sum(sum(A))
ans =
-24
>> prod(A)
ans =
3024 120 0 360
>> prod(prod(A))
ans =
0
>> min(A)
ans =
-9 -5 -1 3
>> max(A)
ans =
-6 -2 2 6
Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar
>> mean(A)
ans = 50
-7.5000 -3.5000 0.5000 4.5000
Chapitre 4 51
Exemple : (système su dessus)
1 2 5
5=6 7, 8 = 637 6 7, 9=6 7
1 −1 −1
o XA = B, où
A matrice des coefficients.
X vecteur ligne des inconnues.
B vecteur ligne comme second membre.
Exemple : (système su dessus)
1 1
5=6 7, 8 = : 3; : ;, 9 = :5 − 1;
2 −1
• On appelle opérations élémentaires sur les lignes L1, …, Ln du système (S) l’un des
trois opérations suivantes :
o 1. Multiplier la ligne Li par un scalaire α non nul, et on note : Li ← αLi,
Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar
2 + 43 = 10
2
− 3 = −1
(ligne 1 multipliée par 2)
+ 23 = 5
2
3 + 33 = 9
(ligne 1 multipliée par 2 ajoutée à ligne 2)
B =
14
32
>> X = A\B
X =
4
5
B =
14 32 53
>> X = B/A
X =
4 5
>> X = inv(A)*B
X =
4
5
B =
14 32
>> X = B*inv(A)
X =
4 5
Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar
• Pour les commande A\B et B/A, si la matrice A n’est pas singulière, le résultat est
54
(0/0) pour un nombre infini de solutions, et (k/0, k≠0) pour l’ensemble vide ().Pour
les commande inv(A)*B et B*inv(A), si la matrice A n’est pas singulière, le résultat est
toujours (k/0, k≠0).
>> A = [1 1; 2 2], B = [2 4]'
A =
1 1
2 2
B =
2
4
>> A\B
Warning: Matrix is singular to working precision.
ans =
0/0
0/0
B =
2
5
>> A\B
Warning: Matrix is singular to working precision.
ans =
1/0
-1/0
>> inv(A)*B
Warning: Matrix is singular to working precision.
ans =
Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar
1/0 55
1/0
• Une deuxième méthode pour résoudre un système linéaire (AX = B) est de faire
décomposer la matrice A à la multiplication de 2 matrices triangulaires L et U
(inférieure et supérieure), ensuite résoudre deux systèmes linéaires comme suit :
o Résoudre premièrement LY = B.
o Ensuite, résoudre UX = Y.
>> A = [1 2; 3 4], B = [14 32]'
A =
1 2
3 4
B =
14
32
>> [L U] = lu(A)
L =
1/3 1
1 0
U =
3 4
0 2/3
>> Y = L\B
Y =
32
10/3
>> X = U\Y
X =
4
5
Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar
• Une troisième méthode pour résoudre un système linéaire (AX = B) est de faire
56
concaténer les deux matrice A et B dans une nouvelle matrice C, ensuite extraire la
forme échelonnée réduite de C. La solution est stockée dans la dernière colonne de
C.
>> A = [1 2; 3 4], B = [14 32]'
A =
1 2
3 4
B =
14
32
>> C = [A B]
C =
1 2 14
3 4 32
>> rref(C)
ans =
1 0 4
0 1 5
• Une quatrième méthode pour résoudre un système linéaire (AX = B) est de faire
appeler la commande linsolve(A, B).
>> A = [1 2; 3 4], B = [14 32]'
A =
1 2
3 4
B =
14
32
>> X = linsolve(A, B)
Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar
X =
4 57
5
• Pour les équations à plusieurs variables, Matlab permet de choisir la variable pour
58
laquelle on veut résoudre.
>> solve(a*x + b, x) % résoudre pour x
ans =
-b/a
Chapitre 4
60
Les Polynômes
1. Définition
• Un polynôme de la forme @() =
+
A
A + ⋯ + + + B est
représenté en Matlab par un vecteur ligne [
,
A , … , , , B ] (ou vecteur
colonne).
• Afin d’évaluer un polynôme pour une valeur fixe a, on utilise la commande polyval(P,
a).
>> P = [1 2 1] % définir le polynôme x2+2x+1
P =
1 2 1
ans =
4 % P(1)
ans =
9 % P(2)
2. Opérations arithmétiques
• Matlab fournie deux opérations arithmétiques de multiplication et de division à
travers les commande conv et deconv. Il reste au programmeur de programmer les
deux autres opérations d’addition et de soustraction.
• C = conv(A, B) est la convolution des tableaux A et B, c'est à dire les coefficients du
produit des deux polynômes.
• [Q, R] = deconv(A, B) est la dé-convolution des tableaux A et B où Q est le quotient de
la division et R est le reste (A = conv(B ,Q) + R).
Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar
P2 =
1 1
R =
0 0 1 % Reste = 1
3. Racines et Interpolations
• La commande roots(P) fait extraire les racines d’un polynôme P.
• La commande poly(V) retourne un polynôme depuis ses racines stockées dans le
vecteur V.
>> P = [1 -5 6]
P =
1 -5 6
>> roots(P)
ans =
3.0000
2.0000
au sens des moindres carrées : trouver P tel que !∑ (@( ) − 3 ) est minimal.
>> X = [0 1 2], Y=[-1 0 3]
X =
0 1 2
Y =
-1 0 3
>> polyfit(X, Y, 0)
ans =
0.6667 % P(x) = 2/3 (avec erreur)
>> polyfit(X, Y, 1)
ans =
2.0000 -1.3333 % P(x) = 2x -1/3 (avec erreur)
>> polyfit(X, Y, 2)
ans =
1.0000 0 -1.0000 % P(x) = x^2 -1 (meilleur)
Chapitre 5
64
Programmation en Matlab
1. Introduction
• Un script Matlab est composé d'une suite d'instructions ou de commandes, toutes
séparées par une virgule (,), un point-virgule (;) ou un retour à la ligne (↵).
• Matlab facilite l’édition d’un nouveau script en utilisant le bouton (New Script) qui
fait appel à l’éditeur de Matlab.
• La commande edit aussi fait appel à l’éditeur de Matlab en créant un fichier du nom
spécifié (edit monfichier.m).
• L’éditeur de Matlab crée par défaut un nouveau script sous le nom ‘untitled.m’. Le
programmeur peut spécifie ultérieurement un nom de son choix en utilisant le
bouton (Save).
• Généralement, le script est sauvegardé dans un fichier avec l’extension ‘.m’ (ex :
script1.m) sous le dossier courant. On peut aussi charger un fichier déjà édité en
utilisant le bouton (Open).
Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar
65
66
2. Affichage
• L’affichage des variables se fait simplement par la spécification de leurs noms sans
point virgule à la fin de la ligne.
• La commande disp(X) affiche une variable X (chaine de caractères, entier, …) sur la
fenêtre des commandes. La commande disp n’accepte qu’un seul type de donnée à la
fois. Dans le cas échéant, une conversion de type est toujours nécessaire ; par
exemple, tous les variables sont convertis à des chaines de caractères.
• La commande fprintf() accepte tous genre de variable en utilisant leurs formats de
types : %d pour les entiers, %f pour les réels, %s pour les chaines de caractères, %c
pour le caractères, … . On peut ajouter un retour à la ligne via ‘\n’ et une tabulation
via ‘\t’.
• La commande sprintf() sauvegarde tous genre de variables de la même manière que
fprintf, mais sans affichage sur la fenêtre des commandes. sprintf() retourne une
chaîne de caractères qui peut être affichée ultérieurement en utilisant la commande
disp().
% mon premier script
a = 1;
b = 2;
c = a + b;
disp('la valeur de c est :');
disp(c);
disp(str);
>> script1
la valeur de c est :
3
la somme de 1 et 2 égale à 3
1 + 2 = 3
Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar
% somme
c = a + b;
% affichage
fprintf('%d + %d = %d \n', a, b, c);
>> script1
Entrer a : 2
Entrer b : 3
2 + 3 = 5
entrer un vecteur de 5 éléments : [2 5 7 9 11]
entrer une matrice de 3x3 éléments : [1 2 3; 4 5 6; 7 8 9]
clc;
% lecture d’un entier 68
a = input ('Entrer a : ');
if a == 0
disp('a est nul');
elseif a > 0
disp('a est positif');
else
disp('a est négatif');
end;
>> script1
Entrer a : 2
a est positif
switch a
case 1
disp('UN');
case 2
disp('DEUX');
case 3
disp('TROIS');
case 4
disp('QUATRE');
case 5
disp('CINQ');
otherwise
disp('cet entier n''est pas entre 1 et 5');
end;
>> script1
Entrer un entier entre 1 et 5 : 2
DEUX
Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar
5. Les boucles:
69
• En Matlab, on utilise deux formes de boucle:
o L’instruction for Pour les boucles à nombre d’itération connu :
for variable = valeur initiale : pas : valeur finale
commandes
end ;
o et l’instruction while pour les boucles à condition de continuation.
while condition de continuation
commandes
end ;
clc;
>> script1
1
3
5
7
9
1
3
5
7
9
Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar
6. Les fonctions:
70
• Les fonctions peuvent être déclarées directement dans un fichier script qui doit
obligatoirement porter le même nom de la fonction à déclarer:
% monscript.m % f1.m
… function f1(x)
f1(a) …
… …
f2(b, c)
…
% f2.m
function f2(x, y)
…
…
f2.m
function z = f2(x, y)
z = x + y;
f3.m
function [z w] = f3(x, y)
z = x *y;
w = x/y;
Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar
script.m
clc;
71
a = 20
b = 10
disp('a/2 = ');
f1(a);
c = f2(a, b);
disp('a + b = ');
disp(c);
[c d] = f3(a, b);
disp('a * b = ');
disp(c);
disp('a / b = ');
disp(d);
>> script
a =
20
b =
10
a/2 =
10
a + b =
30
a * b =
200
a / b =
2
• Les variables d'entrée de la fonction sont passés par valeur : On ne peut pas modifier
leurs valeurs.
• Les variables de sortie de la fonction sont passés par résultat : On doit leur affecter
une valeur.
Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar
• Les variables locales sont des variables temporaires à utilisation locale à l’intérieur de
72
la fonction : On ne peut pas les utiliser à l’extérieur.
• En créant un nouveau gui, Matlab affiche une figure avec des icones de contrôles
(boutons, menus, textes, …). Le programmeur peut glisser ces icones sur la forme afin
de construire un GUI.
Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar
73
• Par exemple, on veut créer un simple GUI qui fait lire deux entiers A et B, et affiche
leur somme, produit, soustraction et division. Voici alors les étapes de création et
d’exécution :
o Cliquer sur l’icone ‘Static Text’ puis cliquer le sur la forme afin de créer un
texte statique ‘text1’. Modifier son nom en double-cliquant sur text1.
L’inspecteur d’objet se montre. Chercher la propriété ‘String’ et modifie la
avec la valeur ‘A’.
Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar
74