Démonstration 1

Transcription

Démonstration 1
PL: calculs de base avec Matlab
Fabian Bastin
9 septembre 2013
Résumé
Dans ce court tutoriel, nous verrons brièvement les opérations de base
sur les matrices et les vecteurs, ainsi que l’accès à leurs composantes. Le
propos sera étendu en attaquant des problèmes d’algèbre linéaire simple.
1
Introduction
Le langage Matlab est un langage entièrement pensé en termes matriciels.
Matlab est un acronyme pour “Matrix labratory”. De ce fait, il convient particulièrement aux problèmes d’algèbre linéaire, et dispose de nombreuses fonctions
d’analyse numérique, ainsi que de la possibilité d’écrire ses propres fonctions.
Toute entrée est une matrice réelle ou complexe ; les éléments d’une même ligne
peuvent être séparés avec des virgules ou des espaces, tandis que les lignes sont
séparées par un retour à la ligne ou un point-virgule. Alors, basé sur la notation
matricielle, un scalaire est une matrice de taille 1 × 1 et un vecteur est une
matrice de taille n × 1 ou 1 × n, etc.
Une alternative open-source, acceptée dans le cadre du cours est Freemat,
disponible à l’adresse http://freemat.sourceforge.net/. Veuillez noter que
des logiciels tels que Scilab, bien que similaires à Matlab, présentent plusieurs
différences significatives, et dès lors ne seront pas considérés comme valables
pour les devoirs.
2
Opérations générals
2.1
Scalaires et constants
Matlab/Freemat :
1. Scalaire : en fait, une variable scalaire est une variable matricielle dégénérée
de 1 × 1 élément.
2. Constant : un certain nombre de constants utiles
— pi → la valeur de “pi”
— i ou j → nombre imaginaire
— e → la valeur de “e”
1
— Inf ou inf → infini
— N aN ou nan → indéterminé
— eps → le plus petit nombre représentable par l’ordinateur
2.2
Opérateurs arithmétiques de base
Matlab
— + ou plus → addition
— − ou minus → soustraction
— ∗ ou mtimes → multiplication
— / ou mrdivide → division
— \ ou mldivide → division à gauche
— ∧ ou mpower ou ∗∗ → puissance
2.3
Opérateurs relationnels
Matlab
— == ou eq → test d’égalité
— ∼= ou ! = ou ne → test différence
— < ou lt → test d’infériorité
— > ou gt → test de supériorité
— <= ou le → test d’infériorité ou égalité
— => ou ge → test de supériorité
— false ou 0 → faux (logique)
— true ou 1 → vrai (logique)
2.4
Opérateurs logiques
Matlab
— ∼/not/ ! expression → négation logique
— expression1 & expression2 → et logique
— expression1 && expression2 → et logique
— expression1 k expression2 ou (expression1,expression2) → ou logique
— expression1 k k expression2 → ou logique
3
Matrices
3.1
Déclarations
— a=[1 2 3;4 5 6] : créé une matrice de 2 lignes et 3 colonnes contenant
les éléments 1 2 3 sur la première ligne et 4 5 6 sur la deuxième ;
— b=[1 ;2 ;3] : Créé un vecteur colonne valant 1 2 3.
— a=[1,2,3] : identique à a =[1 2 3].
— b=[a;1 2 3] : crée une matrice dont la première ligne vaut a et la
deuxième ligne vaut 1 2 3. ;
— a=1:5 : crée un vecteur valant 1 2 3 4 5. ;
2
— a=1:2:10 : crée un vecteur valant 1 3 5 7 9 ;
— a=[1 3:5] : crée un vecteur valant 1 3 4 5. ;
— a=zeros(3) : crée une matrice de 0 de taille 3 × 3 ;
— a=ones(2,4) : crée une matrice de 1 de taille 2 × 4.
La commande zeros est très souvent utilisée pour déclarer une matrice,
vu qu’en Matlab, les variables ne sont pas déclarées. Ce n’est toutefois pas
nécessaire, et la taille des matrices peut augmenter dynamiquement. L’opération
de transposition est réalisée avec l’opérateur ’ : a=(1:3)’.
3.2
Accès aux éléments et sous-matrices
Soit la matrice
A=[1 2 3
4 5 6]
et le vecteur
b=[1 2 3].
L’accès à l’élément (i, j) de A s’obtient simplement avec A(i,j). On peut
accéder à une sous-matrice en entrant l’indice de début et l’indice de fin, séparés
de :. Omettre les indices revient à sélectionner le premier ou dernier indice, par
exemple
A(:,2:3)
donnera
ans =
2
5
3
6
Il également possible d’utiliser un vecteur d’indices. Il est dès lors facile d’extraire une sous-matrice. Par exemple, sélectionnons les colonnes 1 et 3 de A, de
diverses manières :
B = A(:, [1 3] )
B = [ A(:,1) A(:,3) ]
x = [ 1 3 ]; B = [ A(:,x) ]
A(:) crée un vecteur colonne formé par tous les éléments de A.
En général, si “mat” est une matrice, alors
— mat(i,j) → l’ĺḿent (i,j) de mat
— mat(i, :) → la ligne i de mat
— mat(i :j, :) → les lignes i à j de mat
— mat( :,j) → la colonne j de mat
— mat( :,k :m) → les colonne k à m de mat
— mat(i :j,k :m) → les éléments se trouvent dans laes lignes i à j et dans
les colonnes k à m de mat
3
3.3
Opérations de base
— A’ : transposition normale si A est une matrice réelles et transposition
conjuguée si A est une matrice complexe (conjugué de la transposée) ;
— A.’ : transposition non conjuguée de matrice complexe A ;
— C=B^-1 : inverse de B ;
— C*B : produit matriciel ;
— C.*B : produit terme à terme ;
— C+B : somme ;
— C^2 : C.C (puissance matricielle) ;
— C.^B : Puissance terme à terme ;
— C./B : division terme à terme ;
— C\B : équivalent à B^-1*C ;
— B/C Equivalent à C’\B’)’.
Note : on peut remplacer une des opérandes par un scalaire. Par exemple B+2
ajoute 2 à chacun des termes de B.
3.4
Fonctions usuelles sur les matrices
— size(B) : vecteur correspond aux dimensions de B ;
— size(B,1) : vecteur correspond à la taille de la première dimension de
B;
— length(v) : taille de v ;
— length(B) : maximum entre le nombre de lignes et le nombre de colonnes
(length(B) = max(size(B))) ;
— x=diag(B) : vecteur colonne contenant la diagonale de B ;
— diag(x) : matrice diagonale dont la diagonale correspond à x ;
— det(B) : déterminant ;
— norm(B) : norme ;
— rank(B) : rang ;
— trace(B) : trace ;
— min(x) : minimum des composantes de x ;
— max(x) : maximum des composantes de x ;
Les fonctions de Matlab offrent souvent la possibilité de retourner un nombre
variable de résultats. Ainsi, pour x = [ 2 5 3 6],
a = max(x)
renverra 6, tandis que
[a p] = max(x)
donnera a = 6, p = 4. Il est possible d’obtenir de l’aide sur une fonction avec la
commande help, suivi du nom de la fonction.
4
4
RAPPELS IMPORTANTS
Soit le problème linéaire suivant :
Min cT x
Sujet à Ax = b
x≥0
A une matrice de m lignes et n colonnes (mxn) et b un vecteur colonne de
m lignes. On suppose m ≤ n et A est supposée de plein rang (ie les lignes de A
sont linéairement indépendantes, rg(A) = m).
Définition 1 Une sous matrice B de A est dite base si B est une sous-matrice
carrée inversible (ie B −1 existe), de dimensions m × m.
Définition 2 Les variables de base B sont les variables associées aux colonnes de la base B.
Définition 3 Une solution de base associée à la base B, notée w correspond
à poser les variables hors bases à zéro (elles sont au nombre de n − m), et à
déterminer le vecteur des variables de base xB = B −1 b. xR vecteur regroupant
les variables hors base, on représente w = [xB , xR ]t .
Définition 4
5
Une solution de base est dite réalisable si xB ≥ 0.
Exemple 3 page 25
Min
Sujet à
−2x1 − x2
x1 + 38 x2 + x3 = 4
x1 + x2 + x4 = 2
2x1 + x5 = 3
x1 , x2 , x3 , x4 , x5 ≥ 0

1
A = 1
2
8
3
1
0

1 0 0
0 1 0
0 0 1
Enumérez à l’aide de Matlab les différentes bases et déduisez la solution
optimale de ce problème.
5