40
INSTITUT POLYTECHNIQUE DES SCIENCES AVANCEES Initiation à MATLAB Support de cours Mme VALENTIN Sontsada (Edition 2004 - 2005) INSTITUT POLYTECHNIQUE DES SCIENCES AVANCEES 24, rue Pasteur – 94270 LE KREMLIN-BICETRE * Tél. : 01.44.08.01.00 * Fax : 01.44.08.01.13 Etablissement Privé d’Enseignement Supérieur – SIRET N° 433 695 632 00011 – APE 803Z

Cours Matlab

Embed Size (px)

Citation preview

Page 1: Cours Matlab

INSTITUT POLYTECHNIQUE DES SCIENCES AVANCEES

Initiation à MATLAB

Support de cours

Mme VALENTIN Sontsada (Edition 2004 - 2005)

INSTITUT POLYTECHNIQUE DES SCIENCES AVANCEES24, rue Pasteur – 94270 LE KREMLIN-BICETRE * Tél. : 01.44.08.01.00 * Fax : 01.44.08.01.13

Etablissement Privé d’Enseignement Supérieur – SIRET N° 433 695 632 00011 – APE 803Z

Page 2: Cours Matlab

1. PRÉSENTATION DE MATLAB.....................................................................................5

1.1 CALCULS NUMÉRIQUES USUELS..................................................................................5

1.1.1 Exemple d’application.............................................................................................51.1.2 Les fonctions mathématiques usuelles..................................................................61.1.3 Calculs sur un ensemble de valeurs.......................................................................6

1.2 GRAPHIQUES...................................................................................................................6

1.2.1 Représentations graphiques 2D.............................................................................61.2.2 Représentation graphique d’une fonction...............................................................7

1.3 PROGRAMMATION...........................................................................................................7

1.3.1 Créer ses propres fonctions...................................................................................71.3.2 Créer un sous-programme.....................................................................................9

2. ANALYSE....................................................................................................................10

2.1 SUITES RÉELLES...........................................................................................................10

2.1.1 Définition...............................................................................................................102.1.2 Itérations et étude de suites.................................................................................10

3. ALGÈBRE LINÉAIRE..................................................................................................12

3.1 MATRICES.......................................................................................................................12

3.1.1 Notations et vocabulaire.......................................................................................123.1.2 Définir des matrices avec Matlab.........................................................................13

3.2 OPÉRATIONS SUR LES MATRICES..............................................................................15

3.2.1 Addition.................................................................................................................153.2.2 Multiplication par des scalaires.............................................................................153.2.3 Multiplication des matrices...................................................................................153.2.4 Transposée d’une matrice....................................................................................163.2.5 Inversion de matrices carrées..............................................................................16

3.3 SYSTÈMES LINÉAIRES..................................................................................................17

3.3.1 Définition...............................................................................................................173.3.2 Opérations fondamentales sur les systèmes.......................................................183.3.3 Méthode de résolution de Gauss.........................................................................193.3.4 Systèmes de Cramer............................................................................................213.3.5 Utilisation de Matlab.............................................................................................21

REFERENCES BIBLIOGRAPHIQUES..............................................................................23

FICHES MEMO..................................................................................................................25

2/37

Page 3: Cours Matlab

FICHE 1 : SAUVEGARDER LES COMMANDES UTILISÉES..................................................27

FICHE 2 : GÉRER ET SAUVEGARDER DES VARIABLES.....................................................29

FICHE 3 : GESTION DE L’AFFICHAGE...................................................................................31

FICHE 4 : SE RENSEIGNER SUR UNE FONCTION OU UNE COMMANDE..........................33

FICHE 5 : DÉFINIR ET GÉRER DES TABLEAUX : VECTEURS ET MATRICES.......................................................................................................................35

FICHE 6 : TRACER DES GRAPHIQUES 2D............................................................................37

MINI-PROJETS..................................................................................................................39

MINI-PROJET 1 : PARTS D’UN MARCHE...............................................................................41

MINI-PROJET 2 : MATRICES MAGIQUES DE TYPE (3,3)......................................................43

MINI-PROJET 3 : RÉSOLUTION D’UN SYSTÈME DE CRAMER............................................45

MINI-PROJET 4 : DIVISION EUCLIDIENNE ET SUITE PSEUDO-ALEATOIRE.....................................................................................................................47

3/37

Page 4: Cours Matlab

1. PRÉSENTATION DE MATLAB

1.1 CALCULS NUMÉRIQUES USUELS

1.1.1 Exemple d’application 

Trouver les racines du polynôme du 2nd degré :

P(x) = 3.7x²+x-1.5

Solution de la forme :

x=−b±√b ²−4ac2a

On commence par définir les paramètres du problème :

>> a=3.7a = 3.7>> b=1 ;>> c= -1.5 ;

Nota :

- Les trois variables a,b et c apparaissent dans la fenêtre Workspace.

- Dans la fenêtre Command Window, on peut aussi utiliser l’instruction who ou whos.

- Pour effacer les paramètres de la mémoire courante, on utilise l’instruction clear (ou clear all) pour tout effacer. Dans le cas où on veut uniquement effacer la variable a : clear a.

- En terminant la ligne d’instruction par un point-virgule, on n’affiche pas le résultat de l’opération.

- Matlab différencie les caractères minuscules des majuscules.

- Lorsque l’on affecte une nouvelle valeur à une variable, la précédente valeur est remplacée.

On continue la résolution en calculant le déterminant et les deux racines :

4/37

>> delta = b^2-4*a*c;>> x1 = (-b+sqrt(delta)) / (2*a)x1 = 0.5158>> x2 = (-b-sqrt(delta)) / (2*a)x2 = -0.7860

Page 5: Cours Matlab

Nota :

- On peut éditer les commandes ultérieures en utilisant la flèche ↑. Pour retrouver la commande plus rapidement, on tape le(s) premier(s) caractère(s) et on utilise la flèche ↑.

- Pour modifier les caractères d’une commande, on utilise les flèches → ou ←.

1.1.2 Les fonctions mathématiques usuelles

De nombreuses fonctions mathématiques sont disponibles dans Matlab. Une liste exhaustive est présentée dans l’aide de Matlab.

Pour ouvrir la fenêtre de l’aide en ligne, on utilise l’instruction : >> helpwin

Les fonctions mathématiques élémentaires se trouvent dans Elementary math functions (matlab/elfun).

1.1.3 Calculs sur un ensemble de valeurs

Matlab permet d’effectuer des calculs sur un ensemble de valeurs. Au préalable, il nous faut stocker ces valeurs dans un vecteur (ou tableau).

Exemple : Calculer

y=x2 (1+e−x )

pour x = 0, 0.2, 0.4, … , 1.

On définit un vecteur de valeurs régulièrement espacées en donnant successivement la valeur initiale 0, le pas 0.2 et enfin la valeur finale 1 :

>> x = [0 :0.2 :1] 

On calcule ensuite les images de ces valeurs. Pour procéder au calcul sur toutes les valeurs de x, on remplace les opérateurs ^ et *, respectivement par .^ et .* :

>> y = x.^2 .* (1+exp(-x))

1.2 GRAPHIQUES

1.2.1 Représentations graphiques 2D

La commande plot permet de tracer tous les graphes plans. On l’utilise sous la forme :

plot(abscisse, ordonnée, options)

options est une chaîne de caractères permettant de préciser par exemple le type ou la couleur du tracé.

Exemple :

5/37

Page 6: Cours Matlab

>> x = [0 :0.2 :10]>> y = x.^2 .* (1+exp(-x))>> plot(x,y,’b - -’)

Par défaut, la figure s’ajuste automatiquement à l’ensemble des points à représenter, mais la commande axis permet d’imposer ces propres choix.

Pour ajouter un quadrillage, on utilise l’instruction grid on.

Plusieurs tracés peuvent être effectués sur la même figure grâce à la commande hold on.

Pour ouvrir une nouvelle figure, il suffit de taper : >> figure

La commande clf permet d’effacer la figure courante.

On peut nommer les axes avec les commandes xlabel ou ylabel, selon l’axe considéré, inclure un titre (title) ou une légende (legend).

>> xlabel(‘x’)>> ylabel(‘y’)>> title(‘tracé de y = x^2(1+exp(-x))’)

Il peut s’avérer intéressant d’importer un tracé vers un document world. Pour cela, on sélectionne dans la fenêtre figure

File Export

et on choisit un format de conversion (.png, .jpeg, …).

On peut aussi tracer plusieurs graphes sur la même figure : subplot

1.2.2 Représentation graphique d’une fonction

L’instruction ezplot permet de tracer simplement les graphes de fonctions.

Exemples :

>> ezplot(‘x^2*(1+exp(-x))’)>> ezplot('x^3 + 2*x^2 - 3*x + 5 - y^2')>> ezplot('t*cos(t)','t*sin(t)',[0,4*pi])

1.3 PROGRAMMATION

1.3.1 Créer ses propres fonctions

Exemple :

Soit la fonction f1 définie par :

f 1( x )=x ln x

6/37

Page 7: Cours Matlab

On définit la fonction dans un fichier m, qui doit être enregistré dans le répertoire de travail courant (Current Directory) sous le nom f1.m.

Le contenu du fichier doit respecter l’une des deux syntaxes suivantes :

f1.m

% définition de la fonction y=x.ln(x)function y = f1(x)y = x.*log(x) ;

function y = f1(x)% définition de la fonction y=x.ln(x)y = x.*log(x) ;

Le commentaire, situé en début ou juste sous la déclaration function, est le texte affiché dans la Command Window si on appelle

>> help f1

L’instruction function indique qu’il s’agit d’une fonction et la syntaxe y = f1(x) renseigne sur le(s) entrée(s)/sortie(s) : le calcul de la fonction dépend de x et la valeur de la sortie est enregistrée sous y.

Nota :

- On affecte le même nom à la fonction et au fichier m.

- L’utilisation de l’opération .* permettra d’appliquer cette fonction à un tableau de valeurs.

- La fonction log de Matlab calcule le logarithme népérien. (voir help log)

L’utilisateur peut alors procéder selon les besoins :

- soit à des calculs numériques unitaires :

>> f1(1.5)ans = 0.6082

- soit à des calculs sur des tableaux de valeurs :

>> f1([1 :0.2 :2])ans = 0.2188 0.4711 0.7520 1.0580 1.3863

- soit à des représentations graphiques, grâce à la commande fplot :

>> fplot(‘f1’,[0.2 2]) ; grid on ;>> title(‘fonction f1(x) = x*log(x)’)

1.3.2 Créer un sous-programme

Un sous-programme permet de mémoriser, d’adapter, de réutiliser un calcul. On l’appelle fonction en informatique (à ne pas confondre avec une fonction au sens mathématique, même si les deux notions se rejoignent parfois, comme l’exemple précédent).

7/37

Page 8: Cours Matlab

Exemple :

Créer une fonction permettant de trouver les racines d’un polynôme du 2nd

degré. On commence par ouvrir un fichier m que l’on enregistre sous solvepoly2.m.

On choisit ensuite les entrées/sorties de la fonction :

- en entrée, on considère les coefficients a,b et c du polynôme P(x)=ax²+bx+c,

- en sortie, les racines sont enregistrées dans un tableau nommé X.

La syntaxe est la suivante :

solvepoly2.m

function X = solvepoly2(a,b,c)% solvepoly2 calcule les racines d’un polynôme du 2nd degré P(x)= ax²+bx+c.% X = solvepoly2(a,b,c), X est un tableau contenant les deux racines.delta = b^2-4*a*c;X(1) = (-b+sqrt(delta)) / (2*a);X(2) = (-b-sqrt(delta)) / (2*a);

Résolvons de nouveau le polynôme de l’exemple 1 à l’aide de cette function. Supposons que l’utilisateur ne connaisse que le nom de la fonction, pour obtenir des renseignements sur celle-ci, il doit taper :

>> help solvepoly2calcule les racines d’un polynôme du 2nd degré P(x)= ax²+bx+c.X = solvepoly2(a,b,c), X est un tableau contenant les deux racines.

Une fois renseigné, il peut maintenant utiliser la fonction :

>> solvepoly2(3.7,1,-1.5)ans = 0.5158 -0.7860

8/37

Page 9: Cours Matlab

2. ANALYSE

2.1 SUITES RÉELLES

2.1.1 Définition

On appelle suite numérique une application définie par :

u : ℵ→ ℜn↦u(n )

u(n) est le terme général de la suite et est souvent noté un. Par abus de langage, la suite u qui est déterminée par ses valeurs u(n)=un, se note :

(un )n≥0

Une suite peut être définie à partir d’un certain rang p fixé. On notera :

(un )n≥ p

Une suite (un )n≥0 est majorée s’il existe une constante M telle que :

∀ n≥0 , un≤M

et elle est minorée s’il existe une constante m telle que :

∀ n≥0 , un≥m

Elle est bornée s’il existe une constante C > 0 telle que :

∀ n≥0 , | un|≤C

Il est facile de vérifier qu’une suite est bornée si, et seulement si, elle est majorée et minorée.

2.1.2 Itérations et étude de suites

Pour étudier les suites sous Matlab, il est essentiel de connaître les instructions d’itération classiques, while et for, permettant de répéter un traitement sur les termes successifs d’une suite.

La syntaxe générale est :

for variable = [valeurinitiale : pas : valeurfinale],

% traitements à répéter

end

ou bien

while conditionàrespecter,

% traitements à répéter

9/37

Page 10: Cours Matlab

end

Nota :

- Une boucle d’itération se termine obligatoirement par l’instruction end.

- A la fin de la première ligne de la boucle, la virgule n’est pas obligatoire, mais le point-virgule n’est pas accepté !

Exemple :

On veut calculer les 10 premiers termes d’une suite géométrique de raison 0.5 et de premier terme u(1)=100. Les termes successifs de la suite sont enregistrés dans un tableau (ou vecteur) :

u = [u(1) u(2) … u(n)], n=10

>> u(1) = 100 ;>> for k=[1 :1 :9],u(k+1) = 0.5 * u(k) ;end

Aucun résultat ne s’affiche en présence du point-virgule à la fin de l’opération. Pour obtenir les 5 premiers termes de la suite, on tape :

>> u(1:5) ans = 100.0000 50.0000 25.0000 12.5000 6.2500

10/37

Page 11: Cours Matlab

3. ALGÈBRE LINÉAIRE

3.1 MATRICES

3.1.1 Notations et vocabulaire

3.1.1.1 Définition

Un tableau M constitué de n lignes et de p colonnes est appelé matrice de type (n,p) et est noté :

M=[a11 a12 … a1 j ⋯ a1 p

a21 a22 … a2 j … a2 p

⋮ ⋮ ⋱ ⋮ ⋱ ⋮ai1 ai2 … aij … a ip

⋮ ⋮ ⋱ ⋮ ⋱ ⋮an 1 an2 … anj … anp

]La notation abrégée est

p,...,1j

n,...,1iij ]a[M

Le premier indice indique le numéro de la ligne et le deuxième indice celui de la colonne.

3.1.1.2 Cas particuliers

Matrices lignes et matrices colonnes

Une matrice de type (1,p) (resp. (n,1)) est appelée matrice ligne (resp. matrice colonne).

Matrice ligne Matrice colonne

( a11 a12 … a1 p ) (a11a21⋮

an 1)

Matrices carrées

Une matrice de type (n,n) est appelée matrice carrée d’ordre n. Parmi les matrices carrées, on peut distinguer :

- les matrices carrées diagonales, vérifiant :

a ij=0 si i≠ j

ou encore

11/37

Page 12: Cours Matlab

M=[a11 0 … 00 a22 ⋱ ⋮⋮ ⋱ ⋱ 00 … 0 ann

]- les matrices carrées triangulaires supérieures ou inférieures,

respectivement définies par :

a ij=0 si i> j et

a ij=0 si i< j

ou bien

M=[a11 a12 … a1 n

0 a22 ⋱ a2 n

⋮ ⋱ ⋱ ⋮0 … 0 ann

] et

M=[ a11 0 … 0a21 a22 ⋱ ⋮⋮ ⋱ ⋱ 0

an 1 an2 … ann]

- les matrices carrées symétriques, telles que :

a ij= a ji , ∀ i , j

- et enfin, les matrices carrées identités qui vérifient :

{aij=0 si i≠ jaii=1

notée

In=[1 0 … 00 1 ⋱ ⋮⋮ ⋱ ⋱ 00 … 0 1

]3.1.2 Définir des matrices avec Matlab

3.1.2.1 Définition et manipulation de matrices quelconques

Exemple :

Définir la matrice

017.0

024

3105.0

952

M

Les matrices sont généralement définies ligne par ligne.

12/37

Page 13: Cours Matlab

Comme les tableaux de valeurs présentés dans le paragraphe 1.1.3, les matrices sont définies entre des crochets. On sépare chaque élément d’une ligne par un espace ou par une virgule et pour indiquer le passage à une nouvelle ligne, on utilise un point-virgule :

>> M = [2 5 9 ; 0.5 10 -3 ; 4 2 0 ; -0.7 1 0]M = 2.0000 5.0000 9.0000 0.5000 10.0000 -3.0000 4.0000 2.0000 0 -0.7000 1.0000 0

On peut aussi définir 3 matrices colonnes et les concaténer :

>> u = [2 ; 0.5 ; 4 ; -0.7] ; v = [5 ; 10 ; 2 ; 1] ; w = [9 ; -3 ; 0 ; 0] ;>> M = [u v w] M = 2.0000 5.0000 9.0000 0.5000 10.0000 -3.0000 4.0000 2.0000 0 -0.7000 1.0000 0

Quelques manipulations utiles :

- Pour accéder au terme aij : >> M(i,j)

- Pour modifier l’élément aij : >> M(i,j) = a

- Pour accéder à toute la iième ligne : >> M(i, :)

- Pour accéder à toute la jième colonne : >> M( : , j )

3.1.2.2 Matrices particulières de Matlab

Il existe plusieurs matrices particulières sous Matlab dont la liste se trouve dans la rubrique elmat de l’aide (helpwin).

Parmi les plus connues, on trouve :

- La matrice identité In définie par :

eye(n)

- La matrice de type (m,n) dont tous les coefficients sont nuls (matrice nulle) :

zeros(m,n)

- La matrice de type (m,n) dont tous les coefficients sont unitaires :

ones(m,n)

Nota : pour définir des matrices carrées d’ordre n, il suffit d’entrée le seul argument n à la commande (ex. : zeros(n), ones(n))

13/37

Page 14: Cours Matlab

3.2 OPÉRATIONS SUR LES MATRICES

3.2.1 Addition

Soient deux matrices de même type :

A=[ a11 a12 … a1 p

a21 a22 … a2 p

⋮ ⋮ ⋱ ⋮an1 an 2 … anp

] et

np2n1n

p22221

p11211

bbb

bbb

bbb

B

…⋮⋱⋮⋮

……

on appelle matrice somme de A et B, la matrice :

S= A +B=[ a11+b11 a12+b12 … a1 p+b1 p

a21+b21 a22+b22 … a2 p+b2 p

⋮ ⋮ ⋱ ⋮an 1+bn1 an 2+bn2 … anp+bnp

]De manière condensée, on a :

S=[ sij ]i=1 ,. . . , nj=1, . . . , p

avec

∀ i=1, . .. , n et ∀ j=1 ,. .. , p , sij=a ij+bij

3.2.2 Multiplication par des scalaires

Soient un scalaire quelconque de et une matrice M de type (n,p), telle que :

p,...,1j

n,...,1iij ]a[M

la matrice M est définie par :

np2n1n

p22221

p11211

aaa

aaa

aaa

M

…⋮⋱⋮⋮

……

Tous les coefficients de la matrice M ont donc été multipliés par le scalaire .

3.2.3 Multiplication des matrices

Soient deux matrices A et B, respectivement de type (n,p) et (p,q) :

14/37

Page 15: Cours Matlab

A=[ aik ] i=1 ,. . . , nk=1 , .. . , p et

B=[bkj ]k=1, . .. , pj=1 , .. . , q

le résultat du produit

)q,n()q,p()p,n(

CBxA

est la matrice C de type (n,q) définie par

q,...,1j

n,...,1iij ]c[C

p

1kkjik

pjipj22ij11iij

ba

ba...babac

3.2.4 Transposée d’une matrice

On appelle transposée de la matrice

p,...,1j

n,...,1iij ]a[M

de type (n,p), la matrice notée tM (ou MT)

n,...,1j

p,...,1iijt ]b[M

de type (p,n) définie par

jiij ab,n,...,1jetp,...,1i

En d’autres termes, tM est obtenue à partir de M en échangeant ses lignes avec ses colonnes. Pour obtenir la tranposée de la matrice M, on tape :

>> M’

3.2.5 Inversion de matrices carrées

Une matrice carrée A d’ordre n est dite inversible s’il existe une matrice carrée B du même ordre telle que :

nIAxBBxA

La matrice B, lorsqu’elle existe est unique. On l’appelle matrice inverse de

A et on la note 1AB

15/37

Page 16: Cours Matlab

Pour inverser une matrice A sous Matlab, on peut utiliser :

inv(A) ou A^(-1)

3.3 SYSTÈMES LINÉAIRES

3.3.1 Définition

Un système linéaire de n équations (n 1) à p inconnues (p 1) est défini par :

(S ) {a11x1+a12 x2+. . .+a1 j x j+.. .+a1 p x p ¿ b1a21 x1+a22 x2+.. .+a2 j x j+. ..+a2 p x p ¿ b2

⋮ai 1x1+ai2 x2+ .. .+aij x j+.. .+a ip x p ¿ bi

⋮an 1 x1+an2 x2+. . .+anj x j+. ..+anp x p ¿ bn

L1L2

Li

Ln

Les données du système linéaire sont :

- les coefficients réels ou complexes aij pour i=1,…,n et j=1,…,p (n et p sont deux entiers connus),

- le second membre du système constitué par les nombres réels ou complexes bi (i=1,…,n),

et Li (i=1,…,n) désigne la iième ligne du système (S).

Les inconnues à déterminer sont les xj (j=1,…,p).

Le système est dit carré lorsque n=p. C’est le cas où il y a autant d’équations que d’inconnues.

On dira que le système est homogène lorsque le second membre est nul (bi=0, i=1,…,n). On peut remarquer qu’un système linéaire homogène admet au moins la solution nulle xi=0, i=1,…,n (qui n’est pas nécessairement la seule).

Systèmes échelonnés

Lorsque tous les coefficients « sous la diagonale » d’un système linéaire sont nul, i.e. :

i> j ⇒a ij=0

on dit que le système est échelonné.

Ils peuvent être de trois formes :

1. les systèmes triangulaires supérieurs, à n équations et n inconnues, de la forme :

16/37

Page 17: Cours Matlab

(S ) {a11 x1+a12 x2+. ..+a1 j x j+ .. .+a1 n xn=b1

a22 x2+. . .+a2 j x j+.. .+a2n xn=b2⋮

aii x i+. ..+ain xn=bi

⋮ann xn=bn

Tous les coefficients aii sont non nuls. Pour obtenir toutes les inconnues xi, on procède par remontées successives. Dans ce cas, on aura une solution unique du système.

2. Les systèmes échelonnés de forme trapézoïdale, où il y a plus d’inconnues que d’équations, cas où n < p. Ils se présentent sous la forme

(S ) {a11 x1+a12 x2+. ..+a1n xn+.. .+a1 p x p=b1a22 x2+. . .+a2 n xn+. ..+a2 p x p=b2

⋮ann xn+. ..+anp x p=bn

Si tous les coefficients aii (i=1,…,n) sont non nuls, le système admet une infinité de solutions, obtenues en donnant des valeurs arbitraires aux p-n inconnues xn+1, xn+2, …, xp. On peut alors exprimer les n premières inconnues x1, x2, …, xn en fonction de ces valeurs arbitraires.

3. Les systèmes échelonnés où on a n > p :

n

1p

p

2

1

ppp

pp2222

pp1212111

b

b

b

b

b

0

0

xa

xa...xa

xa...xaxa

)S(

Il y a ici plus d’équations que d’inconnues, deux possibilités se présentent :

- soit au moins l’un des nombres bp+1, bn n’est pas nul et le système n’admet aucune solution,

- soit tous les nombres bp+1, …, bn sont nuls et on est ramené à un système triangulaire supérieur à p inconnues et p équations.

3.3.2 Opérations fondamentales sur les systèmes

Il existe 3 actions simples (provenant de Gauss) qui permettent de transformer un système (S) en un système équivalent plus simple à résoudre.

17/37

Page 18: Cours Matlab

1. Dans un système donné (S), on peut intervertir 2 lignes quelconques Li et Lk. On écrira

Li ↔ Lk

2. On peut remplacer une ligne quelconque Li par l’un de ses multiples non nuls. On notera

Li←α . Li , α≠0

3. On peut remplacer une ligne quelconque par la somme d’un multiple (non nul) de cette ligne et d’une combinaison finie des autres lignes. Cela se traduit par

Li←α . Li+∑k≠i

βk . Lk , α≠0

Lorsque l’on effectue une quelconque des 3 actions ci-dessus, sur un système linéaire (S), on obtient une nouvelle écriture équivalente de ce système.

3.3.3 Méthode de résolution de Gauss

Cette méthode consiste à effectuer un certain nombre d’actions élémentaires pour obtenir un système équivalent échelonné. Elle s’applique à un système linéaire quelconque (carré ou non).

Exemple :

Trouver toutes les solutions du système à n = 4 équations et p = 5 inconnues :

(S ) { 02x13x14 x1

++++

x2x20x2

++++

3 x37 x36 x 311 x3

−+++

x4x4x40

++++

06 x55 x56 x5

¿¿¿¿

b1b2b3b4

L1L2L3L4

Choisir une ligne dont le coefficient de x1 est non nul et la mettre en première ligne. Ce coefficient est appelé pivot de Gauss.

On choisit d’intervertir les lignes L1 et L2 :

L1↔ L2

On a alors

(S ) {2x103x14 x1

++++

x2x20x2

++++

7 x33 x36 x 311 x3

+−++

x4x4x40

++++

6 x505 x56 x5

¿¿¿¿

b2b1b3b4

L1L2L3L4

18/37

Page 19: Cours Matlab

On cherche ensuite à annuler toute la colonne en dessous du pivot choisi en effectuant des actions élémentaires de Gauss avec la première ligne. On applique donc :

L3←2 L3−3 L1 puis L4←2L4−4 L1

et le système est équivalent à :

(S ) {2x1000

++−−

x2x23x22x2

++−−

7 x33 x39 x 36 x3

+−−−

x4x4x44 x4

++−−

6 x508 x512x5

¿¿¿¿

b2b1

2b3−3b22b4−4 b2

L1L2L3L4

La première ligne ne changera plus. On réitère les deux étapes précédentes pour le sous-système constitué des trois autres lignes :

(S ' ) { x23x22x2

+−−

3 x39 x 36 x3

−−−

x4x44 x4

+−−

08 x512x5

¿¿¿

b12b3−3b22b4−4 b2

L2L3L4

par les actions successives :

L3← L3+3 L2 puis L4← L4+2L2

et on continue pour les sous-systèmes suivants. On a donc :

Finalement, on applique l’action :

L4←2L4−3 L3

et on obtient

(S ) {2x1000

++++

x2x200

++++

7 x33 x300

+−−+

x 4x 44 x40

++−+

6 x508 x50

¿¿¿¿

b2b1

2b3−3b2+3b14 b4−3b3+b2−5b1

L1L2L3L4

On distingue ainsi deux cas :

Si les éléments bi du second membre ne vérifient pas la condition

4 b4−3b3+b2−5b1=0

19/37

4

3

2

1

124

123

1

2

5

5

5

4

4

4

4

3

3

2

21

L

L

L

L

b2b4b2

b3b3b2

b

b

x12

x8

0

x6

x6

x4

x

x

0

0

x3

x7

0

0

x

x

0

0

0

x2

)S(

Page 20: Cours Matlab

alors on a obtenu un système échelonné de type (3) (cf. paragraphe 3.3.1) qui n’admet aucune solution.

En revanche, si la condition est vérifiée, alors par remontées successives, on peut résoudre le système.

3.3.4 Systèmes de Cramer

On suppose que n = p. On considère donc un système carré

(S ) {a11x1+a12 x2+. . .+a1 j x j+.. .+a1n xn ¿ b1a21 x1+a22 x2+.. .+a2 j x j+. ..+a2n xn ¿ b2

⋮a i1 x1+a i2 x2+. ..+a ij x j+. ..+ain xn ¿ b i

⋮an1 x1+an 2 x2+.. .+anj x j+ .. .+ann xn ¿ bn

L1L2

Li

Ln

Le système admet une unique solution si, et seulement si, la méthode de Gauss fait apparaître n pivots successifs tous non nuls. Dans ce cas, on dira que le système est de Cramer.

3.3.5 Utilisation de Matlab

20/37

Page 21: Cours Matlab

REFERENCES BIBLIOGRAPHIQUES

[R1] Applications mathématiques avec Matlab

Tome 1 : algèbre linéaire et géométrieTome 2 : analyse …L. Jolivet, R. LabbasLavoisier 2005, Hermes science

[R2] Introduction à Matlab

J.-T. LaprestéEllipses 1999

21/37

Page 22: Cours Matlab

FICHES MEMO

22/37

Page 23: Cours Matlab

FICHE 1 : SAUVEGARDER LES COMMANDES UTILISÉES

Une session de travail peut être sauvegardée sous 2 formes différentes selon l’utilité ultérieure dont elle fera l’objet :

- Si on veut uniquement visualiser toutes les opérations et résultats affichés dans l’espace de travail, on choisit la commande diary.

Cette instruction permet de sauvegarder sa session de travail dans un fichier texte dès qu’on aura donné l’instruction diary off ou qu’on aura quitté Matlab.

Pour écrire de nouveaux éléments dans le fichier texte ainsi créé après avoir utilisé diary off (durant la même session de travail), on utilise l’instruction diary on.

- Si on veut pouvoir exécuter de nouveau les opérations de la session, il est nécessaire de créer un fichier script de Matlab (soit un m-file).

Ouvrir un fichier m (m-file) qui est un fichier script de Matlab : file new m-file

Ceci ouvre la fenêtre de l’éditeur de Matlab avec un fichier nommé untitled.m, on commence par lui affecter un nom.

23/37

Page 24: Cours Matlab

Pour réutiliser les commandes ainsi enregistrées, il existe plusieurs méthodes :

- Pour exécuter l’ensemble des commandes :

On vérifie que le fichier se trouve dans le répertoire courant (Current Directory)Dans la fenêtre de commande (Command Window), on tape le nom du fichier sans son extension :

>> nomdufichier

Une autre possibilité consiste à utiliser directement la barre de tâche de l’éditeur. En

cliquant sur , on compile directement le fichier. (il faut toutefois vérifier au préalable que le fichier se trouve dans le Current Directory !)

- Pour exécuter une partie des commandes du fichier :

On peut effectuer un copier-coller de l’éditeur vers la fenêtre de commande. L’éditeur possède un raccourci pour ce type de copier-coller : on sélectionne les commandes concernées et avec le clique droit de la souris, on choisit l’option Evaluate selection (cf. figure ci-dessous).

Nota :- il faut absolument éviter les espaces dans les noms des fichiers.

- les commentaires débutent par le caractère % et ils sont automatiquement écrits en vert.

24/37

Page 25: Cours Matlab

FICHE 2 : GÉRER ET SAUVEGARDER DES VARIABLES

Lister les variables de la session de travail 

La fenêtre Workspace liste l’ensemble des variables de la session de travail et renseigne sur le type, la dimension et la taille mémoire de chacune d’entre elles.

Depuis la fenêtre de commande, on peut retrouver ces informations grâce aux instructions who ou whos.

Effacer les variables

Il est parfois utile d’effacer une ou plusieurs variables pour ne pas encombrer l’espace mémoire ou pour réinitialiser la session de travail.

Pour effacer les variables a et b :

>> clear a b

Pour effacer toutes les variables de la session :

>> clear all

ou bien

>> clear

Enregistrer des variables

Il existe des fichiers de sauvegarde de variables spécifiques à Matlab, ils portent l’extension .mat.

Pour enregistrer les variables c et d dans un fichier sauvegarde1.mat :

>> save sauvegarde1 c d

Pour enregistrer dans le même fichier toutes les variables de la session :

>> save sauvegarde1

Nota : si on utilise le même nom de fichier pour sauvegarder de nouvelles variables, les précédentes sont effacées.

Importer des variables d’un fichier .mat

L’instruction load permet de lire les fichiers .mat. Ainsi pour récupérer les variables enregistrées dans le fichier essai.mat, on tape :

>> load essai

25/37

Page 26: Cours Matlab

26/37

Page 27: Cours Matlab

FICHE 3 : GESTION DE L’AFFICHAGE

Raccourcis pour éditer les commandes utilisées dans la fenêtre de commande

On peut éditer les commandes ultérieures en utilisant la flèche ↑.

Pour retrouver la commande plus rapidement, on tape le(s) premier(s) caractère(s) et on utilise la flèche ↑.

Pour modifier les caractères d’une commande, on utilise les flèches → ou ←.

Effacer la fenêtre de commande

Pour effacer la fenêtre de commande, on dispose de l’instruction clc.

27/37

Page 28: Cours Matlab

FICHE 4 : SE RENSEIGNER SUR UNE FONCTION OU UNE COMMANDE

Descriptif

Pour obtenir le descriptif d’une fonction ou commande, on dispose de la fenêtre d’aide de Matlab (>> helpwin) dans laquelle l’index permet de retrouver les commandes disponibles du logiciel. On peut aussi avoir accès au descriptif directement à partir de la fenêtre de commande en tapant :

>> help nomdelacommande

Exemple : >> help min

Nota : en plus du descriptif, l’utilisateur est informé de la syntaxe à suivre pour utiliser la commande selon les possibilités de celle-ci.

De plus, l’aide se termine souvent par un renvoi à d’autres fonctions ou commandes liées à celle recherchée.

Code source

Pour visualiser le code source d’une fonction :

>> help nomdelafonction

Exemple : >> type sphere

Nota : On peut voir que l’aide de la fonction est rappelé au début du code en commentaires

Lorsque le code source est indisponible, Matlab renvoie le message :

>> nomdelafonction is a built-in function

Exemple : >> type min

28/37

Page 29: Cours Matlab

FICHE 5 : DÉFINIR ET GÉRER DES TABLEAUX : VECTEURS ET MATRICES

Comme les vecteurs, les matrices sont généralement définies ligne par ligne et entre des crochets. On sépare chaque élément d’une ligne par un espace ou par une virgule et pour indiquer le passage à une nouvelle ligne, on utilise un point-virgule.

Quelques manipulations utiles

Pour accéder au terme aij : >> M(i,j)Pour modifier l’élément aij : >> M(i,j) = aPour accéder à toute la iième ligne : >> M(i, :)Pour accéder à toute la jième colonne : >> M( : , j )

29/37

Page 30: Cours Matlab

FICHE 6 : TRACER DES GRAPHIQUES 2D

La commande plot permet de tracer tous les graphes plans. On l’utilise sous la forme :

plot(abscisse, ordonnée, options)

options est une chaîne de caractères permettant de préciser par exemple le type ou la couleur du tracé.

Par défaut, la figure s’ajuste automatiquement à l’ensemble des points à représenter, mais la commande axis permet d’imposer ces propres choix.

Pour ajouter un quadrillage, on utilise l’instruction grid on.

Plusieurs tracés peuvent être effectués sur la même figure grâce à la commande hold on.

Pour ouvrir une nouvelle figure, il suffit de taper : >> figure

La commande clf permet d’effacer la figure courante.

On peut nommer les axes avec les commandes xlabel ou ylabel, selon l’axe considéré, inclure un titre (title) ou une légende (legend).

Il peut s’avérer intéressant d’importer un tracé vers un document world. Pour cela, on sélectionne dans la fenêtre figure

File Export

et on choisit un format de conversion (.png, .jpeg, …).

30/37

Page 31: Cours Matlab

31/37

Page 32: Cours Matlab

MINI-PROJETS

32/37

Page 33: Cours Matlab

MINI-PROJET 1 : PARTS D’UN MARCHE

Soient A et B deux produits concurrentiels. On suppose qu’aucun produit nouveau n’apparaît sur le marché. Les parts sur le marché à la date t pour les produits A et B sont représentées par la matrice colonne

Pt=(x t

y t)

avec x t+ y t=1 (puisqu’il n’y a pas d’autre produit que A et B sur le marché).

La répartition prévue à la date t+1 est Pt+1, telle que

Pt+1=( xt +1

y t+1)=M . (x t

y t) avec

M=[0. 4 0 .20 .6 0 .8 ]

On appelle M matrice de transition. On notera que

x t+1+ y t +1=(0. 4 x t+0.6 y t )+(0.6 x t +0 .8 y t )=x t+ y t=1

1. Pour P0=

t (0 .7 0 .3 ), calculer P1, P2, P3, P10 et P20.

2. Effectuer de nouveau les calculs pour d’autres valeurs de P0=

t ( x0 y0 ), vérifiant toujours

x0+ y0=1. Qu’observe-t-on ?

3. Soit d un réel appartenant à l’intervalle ] −1/4 , 3/4 [

. On note x0=1/4+d

. Calculer en fonction de d, les valeurs de y0, P0, P1, P2, puis la récurrence Pn.

4. Quelle est la limite de Pn=t ( xn yn ) lorsque n tend vers  ? Quelle interprétation

économique peut-on faire de ce résultat ?

33/37

Page 34: Cours Matlab

34/37

Page 35: Cours Matlab

MINI-PROJET 2 : MATRICES MAGIQUES DE TYPE (3,3)

Quels chiffres tous différents entre 1 et 9 doit-on mettre dans chaque case du tableau de type (3,3) pour que la somme de chaque ligne, de chaque colonne et des deux diagonales soit toujours égale à 15 ?

Une solution est la matrice

[7 3 42 5 86 7 3 ]

On propose l’étude suivante pour trouver l’ensemble des solutions :

1. On dit qu’une matrice de M3() est magique si les huit sommes de lignes, de colonnes et des deux diagonales sont égales à un nombre donné s. Ecrire cette propriété sous forme d’un système linéaire.

2. Vérifier que ce système est résoluble par la méthode de Gauss pour tout s .

3. Donner l’ensemble solution de ce système. Effectuer des vérifications.

4. Etude du cas s = 15, avec coefficients entiers. Donner toutes les possibilités pour un tableau (3,3) à coefficients entiers tous distincts entre 1 et 9 pour avoir la propriété d’une matrice magique avec s = 15.

35/37

Page 36: Cours Matlab

MINI-PROJET 3 : RÉSOLUTION D’UN SYSTÈME DE CRAMER

On considère le système linéaire

{2x + 3 y − z + t ¿1x − y + 3 z − 2 t ¿03 x − 4 y + z − 3 t ¿0x + 5 y − 2 z + 2 t ¿0

1. Montrer que ce système est de Cramer.

2. Résoudre ce système par la méthode de Gauss. Vérifier le résultat avec la commande rref.

3. Vérifier que l’on obtient aussi cette solution directement par l’inversion matricielle.

4. En adaptant les formules de Cramer au cas d’un système de quatre équations à quatre inconnues, retrouver la solution de ce système.

36/37

Page 37: Cours Matlab

MINI-PROJET 4 : DIVISION EUCLIDIENNE ET SUITE PSEUDO-ALEATOIRE

Question 1 : Division euclidienne

Ecrire une fonction

[q,r] = DivEuclid(a,b)

qui calcule le quotient q et le reste r de la division euclidienne de l’entier a par l’entier b non nul. On pourra, pour effectuer le calcul, utiliser la fonction floor qui donne la partie entière d’un nombre réel, et la fonction mod qui donne le reste de la division euclidienne.

Question 2 : Suite pseudo-aléatoire

Une suite pseudo-aléatoire de nombres entiers est générée de la manière suivante : on se donne 3 entiers fixés a, c et m avec a et m non nuls, on choisit une première valeur x1, on définit par récurrence la suite de valeurs xk par

xk+1 est le reste de la division de axk+c par m

Ecrire une fonction

X = SuiteAlea(a,c,m,x1,n)

qui construit ainsi dans un tableau X une suite de n nombres entiers pseudo-aléatoires, compris entre 0 et m-1.

Tester dans un cas simple, en vérifiant que, pour

a = 13, c = 0, m = 31 , x1 = 1

les 12 premiers nombres obtenus sont

1, 13, 14, 27, 10, 6, 16, 22, 7, 29, 5, 3

Remarque :

En choisissant m suffisamment grand et en divisant tous les termes de la suite obtenue par m, on obtient une suite de nombres réels pseudo-aléatoires dans l’intervalle [0,1].

37/37