Matlab (Matrix Laboratory) Langage de programmation évolué. Traitement direct d’opérations matricielles, dont l’inversion et l’analyse d’opérateurs ou la résolution de systèmes linéaires. Environnement pour la programmation et la recherche de « bugs », facilité d’observation des résultats. … Quelques commandes de bases, pour plus complexe, voir l’aide du logiciel.
manipulation de vecteurs et de matrices A = [1 2 3 ; 4 5 6 ; 7 8 9] correspond à: 1 2 3 4 5 6 7 8 9 Si une commande se termine par un ; le résultat n'est pas affiché dans le fenêtre de commande. x=d:i:f : vecteur ligne x contenant les nombres allant de d à f par incrément de i. A(1:5,7:10) : sous-matrice 5x4 contenant les éléments des cinq premières lignes et de quatre colonnes de la matrice A(m≥ 5,n≥10). zeros(m,n), eye(m,n), rand(m,n): matrice zéro, matrice identité et matrice contenant des éléments aléatoires. size(A), length(A): dimension de la matrice A
Commandes de contrôle clear vidange de la mémoire save sauvegarde les données en mémoire dans le fichier matlab.mat load recharge les données sauvegardées dans matlab.mat en mémoire
Pour apprendre ce que je n’évoquerai pas… en naviguant dans les menus … aide helpwin -> fenêtre d’aide Dans la fenêtre : - guide de l’utilisateur - index des commandes - recherche de commandes - programmes de démonstration
Opérations de base sur des réels +,-,*,/ cos, exp, log, log10, … test de l’interface : 2*2 donne la réponse 4 à l’écran a=2*2 assigne la réponse 4 à a… et l’écrit a=2*2; fait la même chose sans rien écrire en réponse.
who : liste les variables ayant été créées whos : aussi en donnant plus de détails La liste des variables est accessible dans la fenêtre workspace Suppression des variables créées : clear
Création d’un vecteur colonne : x=1:5 y=0:2:10 z=0:0,1:2*pi Création d’un vecteur ligne : x=linspace(0,1,10) … de 0 à 1 avec 10 points équirépartis
Tracé d’une fonction : x = 0:.1:2*pi; y = sin(x); plot(x,y) vecteur des abscisses vecteur des ordonnées Tracé de la fonction y=f(x)
Création de matrice : a = [1 2 3;4 5 6;7 8 9] matlab répond par a = 1 2 3 4 5 6 7 8 9 Contenu dans des crochets [ ] Le ; passe à la ligne
Concaténation de matrices : >> b = [a 10*a;-a [1 0 0;0 1 0;0 0 1]] b = 1 2 3 10 20 30 4 5 6 40 50 60 7 8 9 70 80 90 -1 -2 -3 1 0 0 -4 -5 -6 0 1 0 -7 -8 -9 0 0 1
zeros : matrice remplie de zéros ones : matrice remplie de 1 rand : matrice aléatoire entre 0 et 1 randn : matrice aléatoire en distribution normale eye : matrice identité Ecriture : z= zeros (nlignes, ncolonnes) u = rand(1,5) n = randn(5,5) u(3) : troisième élément de u u([1 2 3]) , u(1:3) i=1:3, u(i) trois premiers éléments de u
Même opération pour les matrices : 1 2 3 4 5 6 7 8 9 >> a(3,2) ans = 8 >> a(2:3,3) 6 9 >> a(2,:) >> a(:,3) ans = 3 6 9 Tester a(4) : Matlab compte les indices par colonnes successives. Tester a(:):
Indice « end » >> q = 4:10 q = 4 5 6 7 8 9 10 >> q(end) ans = 10 >> q(end-4:end) 6 7 8 9 10 >> q(end-2:end) 8 9 10 This
>> q = [spiral(3) [10;20;30]] 7 8 9 10 6 1 2 20 5 4 3 30 >> q(end,end) ans = 30 >> q(2,end-1:end) 2 20 >> q(end-2:end,end-1:end) 9 10 3 30 >> q(end-1,:) indice « end » pour les matrices
Détruire une ligne ou une colonne de matrice : 1 2 3 4 5 6 7 8 9 >> a(:,2) = [] 1 3 4 6 7 9
Opérations matricielles A': matrice transposée de A +,-,*: addition, soustraction et multiplication de matrices A^n: A à la puissance n /,\: « division de matrices »: X=A\B est une solution de A*X=B X=B/A est une solution de X*A=B inv(A): inverse la matrice A det(A): déterminant de la matrice A trace (A): trace de la matrice A.
Opérations élément par élément .+, .-, ./, .\, .*, .^: addition, soustraction, divisions, multiplication, exponentiation élément par élément Les autres fonctions (racine, exponentielle,..) sont appelées par les commandes utilisées dans la plupart des languages informatiques.
analyse de données max(A), min(A) : plus grand et plus petit élément de chaque colonne de la matrice A. sum(A), prod(A), std(A): somme, produit et déviation standard des éléments de chaque colonne de la matrice A.
fonctions matricielles [L,U]=lu(A): factorisation de la matrice A en matrices triangulaires L et U. [U,S,V]=svd(A): trois facteurs de la décomposition en valeurs singulières: A=U*S*V', où les éléments diagonaux de S sont les valeurs singulières. rank(A), cond(A): rang et condition de la matrice A eig(A): vecteur colonne contenant les valeurs propres de la matrice A (possibilité d’obtenir les vecteurs propres par la même commande).
structures de contrôle if condition... instructions ... end branchement for index=début:incrément:fin... instructions ... end boucle fwhile condition... instructions ... end boucle conditionnelle
Appel à fonctions Appel par le programme principal : … de la fonction « lagrange » dont voici le script (fichier lagrange.m). - inter est la sortie de la fonction (plusieurs sorties possibles) fxp,xp,x,n sont des variables d’entrée fpextra=lagrange(fxp,xp,xpextra(i),n) function [inter] =lagrange(fxp,xp,x,n) work=0; for i=1:n+1 prod=1; for j=1:n+1 if (~(j==i)) prod=prod*(x-xp(j))/(xp(i)-xp(j)); end work=work+fxp(i)*prod; inter=work;
Affichages graphiques plot: graphe x,y mesh: surface en trois dimension contour: graphe sous forme de carte à lignes de niveaux surf: tracé 3D d’un champ …..y’en a plein, voir la rubrique d’aide figure(2), figure(3) : création de nouvelles figures. hold on : permet de continuer à tracer ou écrire sur une figure sans l’effacer. close(2), close(3) : fermeture des figures.
Quelques exemples de tracés…
Programme de tir balistique :
- Tracer la trajectoire de la particule (X,Y) - Tracer la trajectoire de la particule (X,Y). Placer X en abscisse et Y en ordonnée, et écrire « Trajectoire » en titre de la figure. - Tracer la norme de la vitesse en fonction du temps. Placer « t » en abscisse et « ||v|| » en ordonnée. - Effectuer les opérations d’habillage de la figure directement grâce à l’interface graphique de matlab, puis en les programmant dans le code source.
Diffusion stationnaire 1D x 1 - Choisir une source S arbitraire - Ecrire le système d’équations comme un système linéaire AT=b, avec T le vecteur colonne solution et b le vecteur colonne second membre. - Programmer sous matlab les matrices A et le vecteur b. En déduire T et le tracer en fonction de x. - Calculer le spectre de la matrice A et le tracer.
Ligne 1 C.L. en x=0 i Ligne n C.L. en x=1 Ligne i Schéma