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