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 ; ; 7 8 9] correspond à: 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
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 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; end inter=work; end fpextra=lagrange(fxp,xp,xpextra(i),n) 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 explicitées dans la fonction via des commentaires.
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… Ouvrir les fichiers matlab_graphique1.m matlab_graphique2.m matlab_graphique3.m
Mise en pratique, un peu d’interpolation
Polynômes de Lagrange et théorème de l’unicité : Sur un support à n+1 points, il existe un seul polynôme de degré N passant par tous les points du support: le polynôme de Lagrange. Calcul:- résolution du système linéaire suivant: - formule de Lagrange: 13 Un support d’interpolation est un ensemble de valeurs f p d’une fonction f définies aux points particuliers x=x p. function [inter] =lagrange(fxp,xp,x,n)
L’écriture polynomiale d’un polynôme de degré N est unique à partir de la connaissance de ses valeurs en N+1 points distincts. Si la fonction à interpoler est un polynôme de degré N, l’erreur d’approximation est nulle mathématiquement, a priori très faible numériquement. Voyons ce qui se passe pour une fonction non polynômiale définie sur le support d’interpolation régulier de Calculer l’interpolation de f sur tous les points d’un maillage dix fois plus raffiné. Comparer les valeurs de l’interpolé à la valeur exacte de f, pour différentes valeurs de N (tracer l’erreur sur les points x’).
- Changer de fonction f, et essayer avec - Revenir à l’ancienne fonction f, mais changer le support d’interpolation,
… c’est supposé être stupéfiant. … le résultat est obtenu à précision spectrale Nous reviendrons sur ce comportement par la suite.