SUPPORT DE COURS - Cours.pdf · • MATLAB garde en mémoire les variables qui ont été créées....

76
Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar 1 Dr. Omari Mohammed Maître de Conférences Classe A Université d’Adrar Courriel : [email protected] SUPPORT DE COURS Matière : Outils de Programmation pour les Mathématiques Niveau : 1 ère Année Licence en Mathématiques et Informatique

Transcript of SUPPORT DE COURS - Cours.pdf · • MATLAB garde en mémoire les variables qui ont été créées....

Page 1: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

1 Dr. Omari Mohammed

Maître de Conférences Classe A

Université d’Adrar

Courriel : [email protected]

SUPPORT DE COURS

Matière : Outils de Programmation pour les

Mathématiques

Niveau : 1ère

Année Licence en Mathématiques et

Informatique

Page 2: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

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.

Evaluation : Juste le contrôle continu (pas d’examen final !!!)

• Tests de Cours : 50 % (4 tests, en éliminant la note la plus faible)

• Tests de TPs : 50 % (4 tests, en éliminant la note la plus faible)

• Les tests ne seront jamais rattrapés en cas d’absence. Néanmoins, une seule

absence de test est compensée par l’élimination de la note la plus faible.

Site web : www.mohammedomari.webs.com

Page 3: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

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

R2013a R2012b R2012a R2011b R2011a

R2010b R2010a

R2009b R2009a R2008b R2008a

R2007b R2007a R2006b

R2006a R14SP3 R14SP2

R14 R13SP2

Page 4: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

4 •

• L’environnement de MATLAB possède 4 fenêtres :

a. Au centre l'invite de commande (command window).

b. En haut à droite le contenu de l'espace courant de travail (workspace).

c. A gauche la liste des fichiers du répertoire courant (current folder).

d. En bas à droite l'historique des commandes tapées (command history).

• MATLAB nous offre la possibilité d’entrer des commandes dans la fenêtre de

commandes avec le prompt « >> ».

• Toutes les commandes sont en minuscules et en anglais.

• Lorsque l’on entre une commande, MATLAB affiche systématiquement le résultat de

cette commande dans cette même fenêtre.

• La commande help permet de donner un aperçu des commandes disponibles :

>> help

HELP topics:

matlabxl\matlabxl - MATLAB Builder EX

matlab\demos - Examples.

matlab\graph2d - Two dimensional graphs.

matlab\graph3d - Three dimensional graphs.

matlab\graphics - Handle Graphics.

matlab\plottools - Graphical plot editing tools

matlab\scribe - Annotation and Plot Editing.

matlab\specgraph - Specialized graphs.

matlab\uitools - Graphical user interface components and tools

Page 5: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

5 toolbox\local - General preferences and configuration information.

matlab\optimfun - Optimization and root finding.

matlab\codetools - Commands for creating and debugging code

matlab\datafun - Data analysis and Fourier transforms.

matlab\datamanager - (No table of contents file)

matlab\datatypes - Data types and structures.

matlab\elfun - Elementary math functions.

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

Page 6: SUPPORT DE COURS - Cours.pdf · • 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.

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

• Lorsqu’on n’utilise pas des variables, le résultat de la commande est automatiquement

affecté à la variable ans qui peut être par la suite utilisée comme une variable normale :

>> 5 + 5

ans =

10

>> a = a + ans

a =

20

• Afin de cacher le résultat d’une commande, mettez un point-virgule « ; » à la fin de la

commande :

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

Page 7: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

7 14500

>> c = 1 + 2.4i

c =

1.0000 + 2.4000i

• MATLAB fournie un ensemble des constants prédéfinis :

a. i, j le nombre imaginaire (racine carré de -1)

b. pi 3.1415...

c. eps 2.2204e-016

d. Inf nombre infini

e. realmax la valeur maximale absolue des réels

f. realmin la valeur minimale absolue des réels

>> i

ans =

0 + 1.0000i

>> pi

ans =

3.1416

>> eps

ans =

2.2204e-16

>> inf

ans =

Inf

>> realmax

ans =

1.7977e+308

>> realmin

ans =

2.2251e-308

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

Page 8: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

8 5. Historique

• 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

GLCSimulation file1 salesman test1

LEACH ps substr

>> clear a ans

>> who

Page 9: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

9 >> exist a

ans =

0

>> a = 10 ;

>> exist a

ans =

1

• La commande clc permet d’effacer le contenu de la fenêtre de commande.

• Le symbole ‘%’ dans une ligne a pour effet que le reste de la ligne ne sera pas exécuté ;

ceci permet d'insérer des commentaires.

>> la = 10 % largeur

la =

10

>> lo = 20 % longueur

lo =

20

>> su = la * lo % surface = largeur * longueur

su =

200

• 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:

Page 10: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

10 a ans la lo s su

>> save

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

7. Les Opérations Arithmétiques de Base :

• MATLAB fournie une séries des opérations arithmétiques de base :

� a + b addition

� a – b soustraction

� a / b division

� a * b multiplication

� a ^b ou power(a,b) mettre a à la puissance de b

� mod(a, b) le reste de la division entière de a sur b

� abs(a) la valeur absolue

� ceil(a) la valeur entière supérieure

� floor(a) la valeur entière inférieure

� round(a) la valeur entière la plus proche de a

� fix(a) la valeur entière

� a & b ou and(a,b) et logique

� a | b ou or(a,b) ou logique

� ~a ou not(a) négation logique

� xor(a,b) ou exclusif logique

� false valeur logique de faux

� true valeur logique de vrai

� a == b égalité

� a ~= b inégalité

� a > b supérieur

� a >= b supérieur ou égal

Page 11: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

11 � a < b inférieur

� 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

>> format long e

>> ans

Page 12: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

12 ans =

2.142857142857143e+00

>> format rational

>> ans

ans =

15/7

9. Les Coordonnées Polaires :

• Un complexe est généralement représenté sous la forme algébrique ou cartésienne.

• Un complexe peut également être représenté sous la forme polaire ρeθi

, où ρ est son

module et θ son argument.

>> c = 2 + 2i % forme algébrique ou cartésienne

c =

2.0000 + 2.0000i

>> theta = angle(c) % angle de c

theta =

0.7854

>> ro = abs(c) % module de c

ro =

2.8284

>> ro*exp(theta*i) % forme polaire

ans =

2.0000 + 2.0000i

>> [theta, ro] = cart2pol(2,2) % conversion au polaire

theta =

0.7854

ro =

2.8284

>> [x y] = pol2cart(theta, ro) % conversion au cartésien

x =

2.0000

y =

2

Page 13: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

13 Chapitre 2

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

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

Page 14: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

14 8.0000 8.5000 9.0000 9.5000

Column 19

10.0000

>> v = [0 : pi/10: pi]

v =

Columns 1 through 9

0 0.3142 0.6283 0.9425 1.2566

1.5708 1.8850 2.1991 2.5133

Columns 10 through 11

2.8274 3.1416

• La fonction linspace(i, j, k) génère un vecteur de k éléments allant de i à j :

>> v = linspace(1, 10, 10)

v =

1 2 3 4 5 6 7 8 9

10

• La fonction logspace(i, j, k) génère un vecteur de k éléments allant de 10i à 10

j :

v = logspace(0, 2, 5) % 10^0, 10^0, 10^0, 10^0, 10^0,

v =

1.0000 3.1623 10.0000 31.6228 100.0000

% 10^0, 10^1.5, 10^1, 10^1.5, 10^2

• Un vecteur colonne peut être créé par énumération de ces valeurs

(coordonnées) séparées par des points-virgules:

>> v = [1 ; 2.3 ; 4 ; 5]

v =

1.0000

2.3000

4.0000

5.0000

• Un vecteur colonne peut être obtenu à partir d’un vecteur ligne en utilisant les

opérations « trans-conjugué » (‘) et « transposé » (.‘):

Page 15: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

15 >> v = [1 2.3 4 5]

v =

1.0000 2.3000 4.0000 5.0000

>> v' % transposé et trans-conjugé

ans =

1.0000

2.3000

4.0000

5.0000

>> w = [1 2.3 4+i 5]

w =

1.0000 2.3000 4.0000 +

1.0000i 5.0000

>> w' % trans-conjugué

ans =

1.0000

2.3000

4.0000 - 1.0000i

5.0000

>> w.' %transposé

ans =

1.0000

2.3000

4.0000 + 1.0000i

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

Page 16: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

16 0

>> v = ones(1,5)

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

3. Opérations sur Les Vecteurs

>> v = [1 2 3 4]; w = [2 4 6 8];

>> v + w % addition

ans =

3 6 9 12

>> v – w % soustraction

ans =

-1 -2 -3 -4

>> v * w' % produit scalaire

ans =

60

>> v .* w % produit terme-à-terme

ans =

2 8 18 32

Page 17: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

17 >> v ./ w % division terme-à-terme

ans =

0.5000 0.5000 0.5000 0.5000

>> v + 3 % addition d’un scalaire

ans =

4 5 6 7

>> v - 3 % soustraction d’un scalaire

ans =

-2 -1 0 1

>> v * 3 % produit avec un scalaire

ans =

3 6 9 12

>> v / 3 % division sur un scalaire

ans =

0.3333 0.6667 1.0000 1.3333

>> v .^ 2 % mise à une puissance

ans =

1 4 9 16

>> x = [1 2 3]; y = [4 5 6 7]; z = [8 9];

>> v = [x y z] % concaténation

v =

1 2 3 4 5 6 7 8 9

>> length(v) % taille

ans =

9

>> a = [1 2]; b = [1; 2];

>> length(a)

ans =

2

>> length(b)

ans =

2

>> size(a) % nombre de lignes et de colonnes

ans =

1 2

>> size(b)

ans =

2 1

Page 18: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

18 4. Adressage et Indexage

>> v = [1:1:5]*2

v =

2 4 6 8 10

>> v(3) % 3ème é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

>> v([5 3 1]) % les éléments v(5), v(3), et v(1)

ans =

10 6 2

5. Opérations Statistiques

>> x = [2 4 5 6 7];

>> max(x) % maximum

ans =

7

>> min(x) % minimum

ans =

2

>> sum(x) % somme des valeurs

ans =

24

>> prod(x) % produit des valeurs

ans =

1680

>> mean(x) % moyenne des valeurs

ans =

4.8000

>> median(x) % la valeur médiane (après le tri)

Page 19: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

19 ans =

5

>> 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� �(� − �̅)�

��

� �(�) = !���(�)

Page 20: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

20 6. Affichage Graphique des Fonctions:

• Les possibilités graphiques de MATLAB sont innombrables. Pour créer le graphe de la

fonction sinus par exemple, nous commençons par définir deux vecteurs:

x = 0:0.5:20; y = x^2;

• ensuite nous construisons le graphe au moyen de la commande:

plot(t,y)

• On peut superposer un quadrillage (ou le faire disparaître) par les commandes:

grid (ou grid off)

• On peut aussi mettre un titre, mettre des étiquettes aux axes:

title('graphe de sinus'), xlabel('x'), ylabel('sinus(x)')

>> x = linspace(0, 100, 1000);

% créer une liste de 1000 éléments

>> y = x.^2; % obtenir leurs carrées

>> plot(x,y) % afficher le graphe des carrées

>> grid % afficher la grille

>> title('y = x^2'), xlabel('x'), ylabel('y')

% afficher le titre et les étiquettes

• 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, …).

Page 21: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

21 • La commande legend('show') permet de montrer la légende, par contre la commande

legend('hide') permet de la cacher.

>> x = linspace(1,100, 100);

% créer une liste de 100 éléments

>> y1 = x; % 1ère fonction

>> y2 = 2*x+1; % 2ème fonction

>> y3 = -x+3; % 3ème fonction

>> plot(x, y1, x, y2, x, y3)

>> legend('x', '2x + 1', '-x + 3')

>> grid

>> legend('hide')

>> legend('show')

>> title('graphe de trois fonctions')

>> xlabel('x'), ylabel('y')

• La commande axis([xmin xmax ymin ymax]) permet d'introduire la valeur maximale et

minimale pour chaque axe. La commande axis auto permet de choisir automatiquement

les valeurs limites de chaque axe.

>> axis([1 5 1 5]) % échelle unique pour x et y

>> axis([1 5 1 10]) % échelle différent pour x et y

>> axis auto % échelle automatique pour x et y

Page 22: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

22 • La commande plot(x, y, LineSpec) affiche un graphe avec la spécification donnée par

LineSpec qui est formée au plus de trois valeurs: style de ligne, type de marquer, et la

couleur. Par exemple plot(x, y, '-+b') affiche un graphe bleu de la forme -+-+-+…

• Noter bien que la spécification 'type de marqueur' est utilisée pour les points choisies

(vecteurs x et y), par contre la spécification 'style de ligne' couvre toute la courbe.

Symbole Style de ligne

- Ligne solide (par défaut)

-- La ligne non continue

: La ligne pointillée

-. La ligne tiret-point

Symbole Type de Marqueur

o Cercle

+ Signe plus

* Astérisque

. Point

x Croix

s Carré

d Diamant

^ Triangle vers le haut

v Triangle vers le bas

> Triangle pointant à droite

< Triangle pointant à gauche

p Pentagramme

h Hexagramme

Symbole Couleur

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

Page 23: SUPPORT DE COURS - Cours.pdf · • 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.

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é

7. Tri d'un Vecteur:

• Deux opérations particulièrement utiles à effectuer sur des vecteurs sont les opérations

de tri et de recherche.

• La commande sort(A) retourne un vecteur trié en ordre croissant depuis un vecteur

d'entrée A.

• En fait, la commande sort retourne deux vecteurs: vecteurs des valeurs triées et

vecteurs de leurs indices avant le tri.

>> A = fix(100*rand(1, 10)) %10 valeurs entre 0 et 100

A =

85 62 35 51 40 7 23 12 18 23

>> sort(A)

Page 24: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

24 ans =

7 12 18 23 23 35 40 51 62 85

>> [svecteur ivecteur] = sort(A)

svecteur =

7 12 18 23 23 35 40 51 62 85

ivecteur =

6 8 9 7 10 3 5 4 2 1

• Les commandes sort(A, 'ascend') et sort(A, 'descend') retournent un vecteur trié en

ordre croissant (décroissant respectivement).

>> sort(A, 'ascend')

ans =

7 12 18 23 23 35 40 51 62 85

>> sort(A, 'descend')

ans =

85 62 51 40 35 23 23 18 12 7

• 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' 'b' 'k' 'v' '$' '0']

B =

Sbkv$0 % concaténés par défaut

>> B = ['s';'b';'k';'v'; '$'; '0']

% on utilise un vecteur colonne

Page 25: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

25 B =

s

b

k

v

$

0

>> sort(B)

ans =

$

0

b

k

s

v

>> uint8(ans) % code ascii

ans =

36

48

98

107

115

118

>> C = [1+2i 2+2i -1+2i -2+2i]

C =

1.0000 + 2.0000i 2.0000 + 2.0000i -1.0000 + 2.0000i -

2.0000 + 2.0000i

>> [cvecteur ivecteur] = sort(C)

cvecteur =

1.0000 + 2.0000i -1.0000 + 2.0000i 2.0000 + 2.0000i -

2.0000 + 2.0000i

ivecteur =

1 3 2 4

>> abs(cvecteur)

Page 26: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

26 ans =

2.2361 2.2361 2.8284 2.8284

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

>> B = ['CC'; 'AAA';'BBBB']

% chaînes de caractères de différentes tailles

??? Error using ==> vertcat

CAT arguments dimensions are not consistent.

>> B = ['CC '; 'AAA ';'BBBB']

% rendre les chaînes de caractères à la même

% taille en ajoutant des espaces à la fin

B =

CC

AAA

BBBB

Page 27: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

27 >> sort(B)

% résultat incorrect

ans =

AA

BBA

CCBB

>> B = cellstr(B)

B =

'CC'

'AAA'

'BBBB'

>> sort(B)

% résultat correct

ans =

'AAA'

'BBBB'

'CC'

8. Recherche d'un Elément dans un Vecteur:

• La commande find(A) retourne un vecteur des indices des valeurs non-nulles d'un

vecteur A.

• find(cond A) retourne les indices des valeurs satisfaisantes d'une condition sur le

vecteur A.

>> A = fix(100*rand(1, 10))-50 % 10 valeurs entre -50 et 50

A =

-27 -15 32 -49 -46 -34 14 23 14 -5

>> A(2) = 0; A(6) = 0 % rendre quelques valeurs nulles

A =

-27 0 32 -49 -46 0 14 23 14 -5

>> j = find(A) % sauvegarder les indices

ans =

1 3 4 5 7 8 9 10

Page 28: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

28 >> A(j) % afficher les valeurs non nulles

ans =

-27 32 -49 -46 14 23 14 -5

>> [Lin Col B] = find(A) % i, j, A[i, j]

Lin =

1 1 1 1 1 1 1 1

Col =

1 3 4 5 7 8 9 10

B =

-27 32 -49 -46 14 23 14 -5

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

• La commande find(A, k) ou find(A, k, 'first') retourne au plus un vecteur des k premiers

indices des valeurs non-nulles d'un vecteur A.

• La commande find(A, k, 'last') retourne au plus un vecteur des k derniers indices des

valeurs non-nulles d'un vecteur A.

• Les commandes find(cond A, k, 'first') et find(cond A, k, 'first') filtrent le vecteur A selon

la condition introduite et prennent les k premiers ou k derniers indices.

Page 29: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

29 >> find(A>=0)

ans =

2 3 6 7 8 9

>> find(A>=0, 2)

ans =

2 3

>> find(A>=0, 2, 'first')

ans =

2 3

>> find(A>=0, 2, 'last')

ans =

8 9

9. Insertion, Modification et Suppression d'un Elément dans un Vecteur:

• La modification d'un élément (ou plusieurs éléments) dans un vecteur peut être effectué

par de son index (ou leurs index) comme suit:

• A(i1): l'élément i1 du vecteur A.

• A(i1: i2): un sous-vecteur de A à partir de l'index i1 jusqu'à l'index i2.

• A(i1: pas: i2): un sous-vecteur de A à partir de l'index i1 jusqu'à l'index i2 avec un pas.

• A([i1 i2 … in]): un sous-vecteur de A en prendre en considération les indices i1, i2, …, in.

>> A = zeros(1, 10)

A =

0 0 0 0 0 0 0 0 0 0

>> B = ones(1, 10)

B =

1 1 1 1 1 1 1 1 1 1

>> A(4) = B(7) % un seul élement

A =

0 0 0 1 0 0 0 0 0 0

>> A(1:3) = B(5:7) % un sous-vecteur contigu

Page 30: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

30 A =

1 1 1 1 0 0 0 0 0 0

>> A(5:2:9) = B(1:2:5) % un sous vecteur non contigu

A =

1 1 1 1 1 0 1 0 1 0

>> A([6 8 10]) = B(8:10) % des éléments bien déterminés

A =

1 1 1 1 1 1 1 1 1 1

• 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

Page 31: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

31 Chapitre 3

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

>> A = zeros(2, 2), B= ones(2, 3)

A =

0 0

0 0

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

Page 32: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

32 >> A = rand(3, 3) %des valeurs aléatoires entre 0 et 1

A =

0.9575 0.9706 0.8003

0.9649 0.9572 0.1419

0.1576 0.4854 0.4218

>> A = randi(10, 3, 3) %des valeurs entiers aléatoires

% entre 1 et 10

A =

10 7 10

8 1 7

10 9 8

• La matrice identité peut être obtenue par la commande eye(lin, col) :

>> eye(3, 3) % matrice identité de 3x3

ans =

1 0 0

0 1 0

0 0 1

>> eye(4, 4) % matrice identité de 4x4

ans =

1 0 0 0

0 1 0 0

0 0 1 0

0 0 0 1

>> eye(4, 3) % matrice identité de 4x3

ans =

1 0 0

0 1 0

0 0 1

0 0 0

• 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):

Page 33: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

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

% vecteur ligne de 12 éléments

V =

1 2 3 4 5 6 7 8 9 10

11 12

>> A = reshape(V, 3, 4) % matrice identité de 3x4

A =

1 4 7 10

2 5 8 11

3 6 9 12

>> A = reshape(V, 4, 3) % matrice identité de 4x3

A =

1 5 9

2 6 10

3 7 11

4 8 12

>> A = reshape(V, 2, 6) % matrice identité de 2x6

A =

1 3 5 7 9 11

2 4 6 8 10 12

>> A = reshape(V, 6, 2) % matrice identité de 6x2

A =

1 7

2 8

3 9

4 10

5 11

6 12

Page 34: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

34 2. Propriétés des matrices

• Matlab fournie quelque opérations pour extraire les propriétés de base des matrices :

>> A = [1 2 1; 1 1 2; 2 2 1]

A =

1 2 1

1 1 2

2 2 1

>> det(A) % déterminant

ans =

3

>> size(A) % taille (lignes , colonnes)

ans =

3 3

>> diag(A) % le vecteur du diagonal

ans =

1

1

1

>> trace(A) % la trace (somme su diagonal)

ans =

3

>> triu(A) % matrice triangulaire supérieure

ans =

1 2 1

0 1 2

0 0 1

>> tril(A) % matrice triangulaire inférieure

ans =

1 0 0

1 1 0

2 2 1

Page 35: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

35

>> A' % le transposé

ans =

1 1 2

2 1 2

1 2 1

>> A_1 = inv(A) % l’inverse

A_1 =

-1.0000 0 1.0000

1.0000 -0.3333 -0.3333

0 0.6667 -0.3333

>> A*A_1

ans =

1.0000 0 -0.0000

0 1.0000 0

0 0 1.0000

3. Rang d’une matrice et forme échelonnée :

• Une matrice A est dite échelonnée en lignes si :

a. Chaque ligne non nulle de A commence avec strictement plus de 0 que la

ligne précédente.

b. Les lignes nulles (ne contenant que des 0) de A viennent en bas après les

lignes non nulles.

• Une matrice A est dite en forme échelonnée réduite si :

a. A est échelonnée.

b. Pour chaque ligne, la première valeur non-nulle est la seule non-nulle dans sa

colonne.

• La commande rref retourne la forme échelonnée réduite. Malheureusement, Matlab

(version 2012) ne fournie aucune commande pour la forme échelonnée (sans

réduction). En conséquence, le programmeur doit programmer cette commande en cas

de besoin.

• Le rang d’une matrice A est le nombre de lignes non nulles dans sa forme échelonnée en

lignes.

• La commande rank retourne le rang d’une matrice.

Page 36: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

36 >> A = [1 2 3; 1 3 2; 2 3 2] % matrice singulière

A =

1 2 3

1 3 2

2 3 2

>> det(A)

ans =

-5

>> rref(A) % forme échelonnée réduite

ans =

1 0 0

0 1 0

0 0 1

>> rank(A) % rang

ans =

3

% construction de la forme échelonnée (non réduite)

>> A(1,:) = A(1,:) / A(1, 1) % division sur le pivot a11

A =

1 2 3

1 3 2

2 3 2

>> A(2,:) = A(2,:) - A(1, :), A(3,:) = A(3, :) - 2*A(1,:)

% rendre nulle les valeurs de la première colonne

% après a11

A =

1 2 3

0 1 -1

2 3 2

A =

1 2 3

0 1 -1

0 -1 -4

Page 37: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

37 >> A(2,:) = A(2,:)/A(2,2) % division sur le pivot a22

A =

1 2 3

0 1 -1

0 -1 -4

>> A(3,:) = A(3, :) + A(2,:)

% rendre nulle les valeurs de la deuxième colonne

% après a22

A =

1 2 3

0 1 -1

0 0 -5

>> B = [1 2 3; 2 4 6; 2 3 2] % matrice non-singulière

B =

1 2 3

2 4 6

2 3 2

>> det(B)

ans =

0

>> rref(B) % matrice non-singulière avec une ligne nulle

ans =

1 0 -5

0 1 4

0 0 0

>> rank(B)

ans =

2

>> C = [1 2 3; 2 4 6; 3 6 9] % matrice non-singulière

C =

1 2 3

2 4 6

3 6 9

Page 38: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

38 >> det(C)

ans =

0

>> rref(C) % matrice non-singulière avec deux lignes nulles

ans =

1 2 3

0 0 0

0 0 0

>> rank(C)

ans =

1

4. Opérations sur les matrices

• En algèbre, Il y a plusieurs opérations de base qui s’effectuent sue les matrices.

Néanmoins, ces opérations souvent exigent des pré-conditions avant s’exécuter :

a. A + B, A - B : (addition et soustraction) A et B ont la même dimension, sauf

pour les scalaires.

b. A.*B, A./B : (multiplication et division terme à terme) A et B ont la même

dimension, sauf pour les scalaires.

c. A*B : (multiplication) le nombre des colonnes de A égale au nombre de lignes

de B, sauf pour les scalaires.

d. A/B : (division) A et B sont carrées et de même dimension, et B est singulière

(inversible, ou déterminant non nulle) , sauf pour les scalaires.

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

A =

1 2 3

4 5 6

7 8 9

>> A + 2

ans =

3 4 5

6 7 8

Page 39: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

39 9 10 11

>> A - 2

ans =

-1 0 1

2 3 4

5 6 7

>> A * 2

ans =

2 4 6

8 10 12

14 16 18

>> A^2 % A*A

ans =

30 36 42

66 81 96

102 126 150

>> A.^2 % mettre au carré les éléments de A

ans =

1 4 9

16 25 36

49 64 81

>> 2.^A % mettre chaque élément comme une puissance

ans =

2 4 8

16 32 64

128 256 512

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

Page 40: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

40 1 1 2

1 1 1

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

Page 41: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

41 • Comme pour les vecteurs, la commande find(A) trouve les valeurs non nulles dans une

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

>> [lin col val] = find(A>5) % trouver les valeurs

% supérieures à 5

lin =

3

Page 42: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

42 3

col =

1

3

val = % valeurs logiques (true, true, …

1

1

>> ind = sub2ind(size(A), lin, col)

% convertir les indices lin, col

% en indices linéaires

ind =

3

9

>> A(ind) % les valeurs > 5

ans =

7

8

Page 43: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

43 10. L’indexage dans une matrice:

• La modification d'un élément (ou plusieurs éléments) dans une matrice peut être

effectué par de son index comme suit:

• A(i), A(i, j): l'élément de l’index i ou (i, j) de la matrice A.

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

A =

1 2 3

4 5 6

7 8 9

>> A(7) % indexage linéaire

ans =

3

>> A(1, 3) % indexage ligne-colonne

ans =

3

>> index = sub2ind(size(A), 1, 3)

% conversion de l’indexage ligne-colonne

% à l’indexage linéaire

index =

7

>> [i, j] = ind2sub(size(A), 7)

% conversion de l’indexage linéaire

% à l’indexage ligne-colonne

i =

1

j =

3

Page 44: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

44 • 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

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: 2, 1:2)

ans =

1 2

4 5

>> A(1:2:3, 1:2:3)

ans =

1 3

7 9

>> A([1 5 6 8])

ans =

1 5 8 6

>> A([1 3], [1 2])

ans =

1 2

7 8

Page 45: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

45 >> A(1,:)

ans =

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

11. L’Affectation et la Modification et Suppression dans une matrice:

• L’affectation d’un scalaire dans une matrice indicée généralise le scalaire sur toute la

matrice.

• L’affectation d’une matrice à une autre exige l’égalité des tailles des deux matrices.

>> A = ones(4,4)

A =

1 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

Page 46: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

46 >> A(1:2, 1:2) = 2 % affectation d’un scalaire dans

% une sous-matrice indicés

A =

2 2 1 1

2 2 1 1

1 1 1 1

1 1 1 1

>> A(1:4, 1:4) = 2 % affectation d’un scalaire dans

% une sous-matrice indicés

A =

2 2 2 2

2 2 2 2

2 2 2 2

2 2 2 2

>> A = 2 % affectation d’un scalaire dans une matrice

% sans indice rend la matrice comme scalaire

A =

2

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

Page 47: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

47 >> B(3:4, 3:4) = 2

B =

0 0 0 0

0 0 0 0

0 0 2 2

0 0 2 2

>> A(1:2,1:2) = B(3:4, 3:4)

% affectation d’une sous-matrice à une autre

A =

2 2 1 1

2 2 1 1

1 1 1 1

1 1 1 1

• 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

>> A(1,:) = [] % supprimer une ligne

A =

2 6 10 14

3 7 11 15

4 8 12 16

>> A(:,2) = [] % supprimer une colonne

A =

2 10 14

3 11 15

4 12 16

>> A(4) = [] % supprimer un élément

A =

2 3 4 11 12 14 15 16

Page 48: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

48 • La concaténation des matrices se fasse de la même manière que les vecteurs:

>> A = ones(3,3)

A =

1 1 1

1 1 1

1 1 1

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

12. Les fonctions appliquées sur les matrices:

• Lorsqu’une matrice est fournie en entrée pour une fonction, généralement une matrice

des fonctions des éléments est produise :

>> A = reshape(linspace(1, 16, 16), [4, 4]) - 10

A =

-9 -5 -1 3

-8 -4 0 4

-7 -3 1 5

-6 -2 2 6

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

Page 49: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

49 >> abs(A)

ans =

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

Page 50: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

50 >> mean(A)

ans =

-7.5000 -3.5000 0.5000 4.5000

13. Les Matrices Spéciales:

• Matlab définit plusieurs fonctions afin de produire des matrices très connues en

mathématiques :

>> pascal(4)

ans =

1 1 1 1

1 2 3 4

1 3 6 10

1 4 10 20

>> toeplitz([1 2 3 4 5], [1 2 3 4 5])

ans =

1 2 3 4 5

2 1 2 3 4

3 2 1 2 3

4 3 2 1 2

5 4 3 2 1

>> rosser('single')

ans =

611 196 -192 407 -8 -52 -49 29

196 899 113 -192 -71 -43 -8 -44

-192 113 899 196 61 49 8 52

407 -192 196 611 8 44 59 -23

-8 -71 61 8 411 -599 208 208

-52 -43 49 44 -599 411 208 208

-49 -8 8 59 208 208 99 -911

29 -44 52 -23 208 208 -911 99

>> vander([1 2 3 4])

ans = % A(i, j) = v(i)^(n-j)

1 1 1 1

8 4 2 1

27 9 3 1

64 16 4 1

Page 51: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

51

Chapitre 4

Résolution des Systèmes Linéaires et Non-Linéaires

1. Résolutions des Systèmes Linéaires

• Un système linéaire est un ensemble de n équations à p variables de la forme :

"#$ ����� + ����� + ⋯ + ��&�& = '������ + ����� + ⋯ + ��&�& = '�⋮���� + ���� + ⋯ + �&�& = '

� où �) ∈ +, '- ∈ +, � ∈ {1, … , �}, 1 ∈ {1, … , }.

Les �) sont appelés les coefficients du système ; les '- sont le second membre du

système (ou la partie gauche).

• Exemple :

2� + 23 = 5� − 3 = −1� Les variables sont x et y, ��� = 1, ��� = 2, ��� = 1, ��� = −1, '� = 5, '� = −1.

• En calcul matriciel, un système linéaire s’écrit comme en deux formes :

o AX = B, où

� A matrice des coefficients.

� X vecteur colonne des inconnues.

� B vecteur colonne comme second membre.

Exemple : (système su dessus)

5 = 61 21 −17, 8 = 6�37 �� 6����7, 9 = 6 5−17

o XA = B, où

� A matrice des coefficients.

� X vecteur ligne des inconnues.

� B vecteur ligne comme second membre.

Exemple : (système su dessus)

5 = 61 12 −17, 8 = :� 3; �� :�� ��;, 9 = :5 − 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,

Page 52: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

52 o 2. Ajouter à la ligne Li k fois une autre ligne Lj et on note : Li ←Li + kLj ,

o 3. Echanger les lignes Li et Lj , et on note : Li ↔ Lj .

• Exemple :

Le système 2� + 23 = 5� − 3 = −1� est équivalent à :

22� + 43 = 10� − 3 = −1 � (ligne 1 multipliée par 2)

2 � + 23 = 53� + 33 = 9� (ligne 1 multipliée par 2 ajoutée à ligne 2)

2. Résolution d’un système linéaire

• Matlab fournie plusieurs techniques afin de résoudre un système linéaire.

Néanmoins, il reste à l’utilisateur de vérifier la compatibilité du système linéaire (s’il

existe solution).

• Par exemple, si le déterminant de A est non-nul alors le système accepte une

solution. Par contre, si le déterminant est nul le système peut accepter un nombre

infini de solution ou un ensemble vide des solutions

• La commande X = A\B fait résoudre le système linéaire AX = B (noter l’antislash).

• La commande X = B/A fait résoudre le système linéaire XA = B (noter le slash).

>> A = [1 2; 3 4], B = [14 32]'

A =

1 2

3 4

B =

14

32

>> X = A\B

X =

4

5

>> A = [1 2; 3 4]', B = [14 32]

A =

1 3

2 4

Page 53: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

53 B =

14 32

>> X = B/A

X =

4 5

• On peut calculer directement l’inverse de A en le multipliant par B. Il faut noter que

la multiplication matricielle n’est pas commutative !

• La commande X = inv(A)*B fait résoudre le système linéaire AX = B.

• La commande X = B*inv(A) fait résoudre le système linéaire XA = B.

>> A = [1 2; 3 4], B = [14 32]'

A =

1 2

3 4

B =

14

32

>> X = inv(A)*B

X =

4

5

>> A = [1 2; 3 4]', B = [14 32]

A =

1 3

2 4

B =

14 32

>> X = B*inv(A)

X =

4 5

Page 54: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

54 • Pour les commande A\B et B/A, si la matrice A n’est pas singulière, le résultat est

(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

>> A = [1 1; 2 2], B = [2 5]'

A =

1 1

2 2

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 =

Page 55: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

55

1/0

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

Page 56: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

56 • Une troisième méthode pour résoudre un système linéaire (AX = B) est de faire

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)

Page 57: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

57 X =

4

5

3. Résolutions des équations et des inéquations, linéaires et non-linéaires

• Matlab utilise la commande solve afin de résoudre les équations et les inéquations,

les systèmes linéaires et non linéaires.

• Tout d’abord, il est nécessaire de déclarer des variables symboliques des équations

(ou inéquations, …) en utilisant la commande syms.

• Il faut noter que solve retourne des solutions sous forme symbolique ou formelle au

lieu de numérique (racine de 2 à la forme numérique de 1.4142 et la forme formelle

2^(1/2)).

>> solve(x^2-1) % résoudre x2 – 1 = 0

Undefined function or variable 'x'.

>> syms x % definer la variable symbolique x

>> solve(x^2-1) % résoudre x2 – 1 = 0

ans =

1

-1

>> solve(x^2-1 == 1) % résoudre x2 – 1 = 1

ans =

2^(1/2)

-2^(1/2)

• Matlab peut aussi résoudre des équations de forme générale ou paramétrique.

>> syms x a b c

>> solve(a*x+b == 0)

ans =

-b/a

>> solve(a*x^2 + b*x + c == 0)

ans =

-(b + (b^2 - 4*a*c)^(1/2))/(2*a)

-(b - (b^2 - 4*a*c)^(1/2))/(2*a)

Page 58: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

58 • Pour les équations à plusieurs variables, Matlab permet de choisir la variable pour

laquelle on veut résoudre.

>> solve(a*x + b, x) % résoudre pour x

ans =

-b/a

>> solve(a*x + b, a) % résoudre pour a

ans =

-b/x

>> solve(a*x + b, b) % résoudre pour b

ans =

-a*x

• La commande solve nous aide aussi à résoudre un système linéaire ou non-linéaire

en présentant ses lignes d’équations.

>> syms x y

>> S = solve(x+y == 5, x-y == 1) % système linéaire

S =

x: [1x1 sym]

y: [1x1 sym]

>> [S.x S.y]

ans =

[ 3, 2]

>> solve(x^2 + 1) % équation non-linéaire

ans =

i

-i

>> S = solve(x^2 + y == 0, x + y^2 == 0)

% système non-linéaire

S =

x: [4x1 sym]

y: [4x1 sym]

Page 59: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

59 >> [S.x S.y]

ans =

[ 0, 0] % sol. 1

[ -1, -1] % sol. 2

[ (3^(1/2)*i)/2 + 1/2, 1/2 - (3^(1/2)*i)/2] % sol. 3

[ 1/2 - (3^(1/2)*i)/2, (3^(1/2)*i)/2 + 1/2] % sol. 4

• La commande solve permet aussi de résoudre une inéquation ou un système linéaire

ou non linéaire des inéquations.

>> solve(x^2 - 9 <= 0)

ans =

Dom::Interval([-3], [3]) % [-3, 3]

>> solve(x^2 - 9 >= 0)

ans =

Dom::Interval([3], Inf) % ]-∞∞∞∞, -3] ∪∪∪∪ [3, +∞∞∞∞[

Dom::Interval(-Inf, [-3])

>> solve(x^2 - 9 > 0)

ans =

Dom::Interval(3, Inf) % ]-∞∞∞∞, -3[ ∪∪∪∪ ]3, +∞∞∞∞[

Dom::Interval(-Inf, -3)

Page 60: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

60 Chapitre 4

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

>> polyval(P, 0), polyval(P, 1), polyval(P, 2)

ans =

1 % P(0)

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

Page 61: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

61 >> P1 = [1 1 1], P2=[1 1] % P1 = x^2+x+1, P2 = x+1

P1 =

1 1 1

P2 =

1 1

>> conv(P1, P2) % P1*P2

ans =

1 2 2 1 % P1*P2 = x^3+2x^2+2x+1

>> [Q R] = deconv(P1, P2) % P1/P2

Q =

1 0 % Quotient = x

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

>> poly([2 3])

ans =

1 -5 6

Page 62: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

62 • La commande Polyfit(X, Y, n) permet d’approximer un polynôme de dégrée n qui

passent approximativement par les points (X, Y). Cette approximation P(X(i))=Y(i) est

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)

4. Dérivation et Intégration d’un polynôme

• La commande polyder(P) retourne la dérivée d’un polynôme P.

• La commande polyint(P) retourne l’intégral d’un polynôme P. Si on veut calculer

l’intégral entre deux point x1 et x2, on utilise la commande polyval pour évaluer

l’intégral sur ces deux points puis on applique la soustraction.

>> P = [1 2 1] % P(x) = x^2 + 2x + 1

P =

1 2 1

>> Pder = polyder(P) % P’(x) = 2x + 2

Pder =

2 2

Page 63: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

63 >> Pint = polyint(P) % integral(P(x)) = 1/3x^3 + x^2 + x

Pint =

0.3333 1.0000 1.0000 0

>> polyval(Pint, 2) - polyval(Pint, 1)

% integral(P(x)) entre 1 et 2

ans =

6.3333

Page 64: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

64 Chapitre 5

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

Page 65: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

65

• L’exécution du script se fait à travers l’invité de commande en spécifiant juste le nom

du script.

• L’exécution peut être effectuée directement depuis l’éditeur en cliquant sur le

bouton (Run). Néanmoins, les sorties des scripts (affichage des résultats) se fait

toujours sur la fenêtre des commandes.

Page 66: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

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

fprintf('la somme de %d et %d égale à %d \n', a, b, c);

str = sprintf('%d + %d = %d \n', a, b, c);

disp(str);

>> script1

la valeur de c est :

3

la somme de 1 et 2 égale à 3

1 + 2 = 3

Page 67: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

67 3. Introduction des données à partir du clavier :

• La commande input(msg) fait introduire une valeur à partir du clavier en affichant

d’abord un message msg.

clc; % lecture de deux valeurs a = input ('Entrer a : '); b = input ('Entrer b : ');

% somme c = a + b;

% affichage fprintf('%d + %d = %d \n', a, b, c);

% introduction d'un vecteur vec = input('entrer un vecteur de 5 éléments : ');

% introduction d'une matrice mat = input('entrer une matrice de 3x3 éléments : ');

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

4. Les instructions d’alternative (IF et SWITCH):

• Comme dans la majorité des langages de programmation, Matlab permet d’utiliser

l’instruction if selon la syntaxe suivante :

if condition

Commandes

elseif condition

Commandes

else

Commandes

end ;

• Les segments de elseif est else sont optionnels, par contre la parution de if et end est

obligatoire.

Page 68: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

68 clc; % lecture d’un entier 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

• On a aussi la possibilité d'utiliser l’instruction switch-case comme pour le langage C :

switch expression % variable (comme a) ou expression de variables (a+b, f(a), …)

case cas1 % valeur 1 de l’expression

commandes

case cas2 % valeur 2 de l’expression

commandes

otherwise % autre valeurs de l’expression

commandes

end ;

clc; % lecture d'un entier a = input ('Entrer un entier entre 1 et 5 : ');

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

Page 69: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

69 5. Les boucles:

• 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;

% affichage des nombres naturels impairs et inférieurs à 10 % avec la boucle for for i = 1:2:10 disp(i); end;

% avec la boucle while i = 1; while i <= 10 disp(i); i = i + 2; end;

>> script1

1

3

5

7

9

1

3

5

7

9

Page 70: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

70 6. Les fonctions:

• 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:

• Une fonction est déclarée comme suit :

o function nomdefonction(inpar1, inpar 2, …)

% une fonction sans paramètre de sortie.

o function outpar = nomdefonction(inpar1, inpar 2, …)

% une fonction avec un seul paramètre de sortie.

o function [outpar1, outpar2, …] = nomdefonction(inpar1, inpar 2, …)

% une fonction avec plusieurs paramètres de sortie.

• Il faut noter que :

o La fonction ne se termine pas par end comme dans les autres langages

évolués.

o Le point-virgule n’est pas nécessaire à la fin des lignes, sauf si un affichage du

résultat de la ligne en question est requis.

f1.m

function f1(x) disp(x/2);

f2.m

function z = f2(x, y) z = x + y;

f3.m

function [z w] = f3(x, y) z = x *y; w = x/y;

% monscript.m

f1(a)

f2(b, c)

% f1.m

function f1(x)

% f2.m

function f2(x, y)

Page 71: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

71 script.m

clc;

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.

Page 72: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

72 • Les variables locales sont des variables temporaires à utilisation locale à l’intérieur de

la fonction : On ne peut pas les utiliser à l’extérieur.

7. L’interface graphique (GUI):

• Les interfaces graphiques (GUI en anglais) aident à visualiser et contrôler les variables

du programme en question.

• La commande guide permet de créer ou ouvrir un GUI.

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

Page 73: SUPPORT DE COURS - Cours.pdf · • 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.

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

Page 74: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

74

o Répéter la tache précédente pour créer ‘text2’ avec la valeur B.

o Maintenant cliquer sur l’icône ‘Edit Text’ pour créer un ‘edit1’ en plaçant le

juste à coté de ‘text1’ et modifie sa valeur (valeur vide) comme pour text1.

o Répéter la tache précédente pour ‘edit2’.

o De la même manière créer des textes ‘text3’, ‘text4’, ‘text5’, ‘text6’ avec les

valeurs ‘A+B’, ‘A-B’, ‘A*B’, ‘A/B’ respectivement.

o Ensuite créer les édites ‘edit3’, ‘edit4’, ‘edit5’, ‘edit6’ avec des valeurs vides.

o Ajouter un bouton pushbutton1 et nommer le ‘Calculer’.

Page 75: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

75 o Le GUI se figure comme suit :

o Maintenant, cliquer avec le bouton droit de la souris sur le bouton ‘Calculer’

et sélectionner l’option ‘View Callbacks->Callback’ . Matlab interrompe

l’action et demande de sauvegarder le gui (gui1).

o Matlab affiche sur l’éditeur le contenu de gui1.m qui est crée

automatiquement par Matlab.

o Editer la fonction ‘pushbutton1_Callback’ comme suit :

% --- Executes on button press in pushbutton1. function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of

MATLAB % handles structure with handles and user data (see GUIDATA)

% lecture des valeurs d'entrée a = str2num(get(handles.edit1, 'String')); b = str2num(get(handles.edit2, 'String'));

% calcul des valeurs de sortie c = a + b; d = a - b; e = a*b; f = a/b;

Page 76: SUPPORT DE COURS - Cours.pdf · • 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.

Outils de Programmation pour les Mathématiques – Dr. Mohammed Omari - Université d’Adrar

76 % affichage des valeurs de sortie set(handles.edit3, 'String', num2str(c)); set(handles.edit4, 'String', num2str(d)); set(handles.edit5, 'String', num2str(e)); set(handles.edit6, 'String', num2str(f));

• Sauvegarder, puis exécuter le script gui1.m en cliquant sur ‘Run’: