Formation Matlab et Calcul Scientifique Cours 1: Variables, scripts et opérations Moncef Mahjoub ENIT-LAMSIN, BP 37, 1002 Tunis Belvedere, Tunisie
Plan Pour commencer Scripts Introduire des variables Manipulation des variables Plotting
Plan Pour commencer Scripts Introduire des variables Manipulation des variables Plotting
Introduction Matlab : MATrix LABoratory Langage de programmation Paltforme de développement destinée au calcul scientifique Réaliser des tâches coûteuses avec une vitesse plus rapide Utilité : Résolution numérique des problèmes mathématiques Equations aux Dérivées Partielles (EDP) Systèmes Linéaires Valeurs Propres de Matrices Méthodes d optimisation,... Avantage : langage interprété (exécute les commandes sans passer par une étape de compilation) intègre des fonctions mathématiques élémentaires méthodes numériques pour le calcul matriciel outils de représentation graphique en 2D ou 3D Objectif : Acquérir les bases de ce logiciel
Pour commencer
Commandes d environnement Les commandes d environnement de MATLAB les plus courantes sont : cd : permet de se déplacer d un répertoire à un autre ls ou dir : affiche les fichiers contenus dans le répertoire courant ou un autre pwd : affiche le répertoire courant who ou whos : liste les variables déjà déclarées par l utilisateur clear all : supprime la liste des variables déjà déclarées clc : efface l ensemble des commandes MATLAB introduite sur l écran exit ou quit : permet de quitter l interface MATLAB tic et toc : calcule le temps mis par MATLAB pour exécuter une commande ou un script cputime : retoune le temps total (en sec) mis par l application MATLAB
Help / docs help La fonction la plus importante pour comprendre MATLAB Pour avoir des informations comment utiliser une fonction matlab : >> help sin Pour ouvrir une fenˆtre d aide intéractive >> helpdesk Chercher une commande sans avoir une idée sur le nom de cette commande >> lookfor (exemple : lookfor cosinus) liste des fonctions et des liens liés à la doc Pour avoir une description détaillée avec des exemples : >> doc sin Pour rechercher une fonction en spécifiant des mots-clés : >> doc + Search tab
Help / docs help La fonction la plus importante pour comprendre MATLAB Pour avoir des informations comment utiliser une fonction matlab : >> help sin Pour ouvrir une fenˆtre d aide intéractive >> helpdesk Chercher une commande sans avoir une idée sur le nom de cette commande >> lookfor (exemple : lookfor cosinus) Exercice : Trouver dans l aide le nom de la fonction renvoyant les valeurs propres d une matrice liste des fonctions et des liens liés à la doc Pour avoir une description détaillée avec des exemples : >> doc sin Pour rechercher une fonction en spécifiant des mots-clés : >> doc + Search tab
Plan Pour commencer Scripts Introduire des variables Manipulation des variables Plotting
Scripts : Overview Les scripts sont collection de commandes exécuté en séquence écrite dans l éditeur MATLAB enregistré en tant que fichiers MATLAB (.m extension) Pour créer un fichier de commande MATLAB >> edit Bonjour.m ou cliquer
Scripts : the Editor http ://ocw.mit.edu/terms
Scripts : quelques notes COMMENTAIRE! Tout ce qui suit un % est considéré comme un commentaire Le premier commentaire est une description du script Commentaire : comprendre le fonctionnement du code plus tard Toutes les variables créés et modifiées dans un script existent dans l espace de travail, même après qu il a cessé de fonctionner
Plan Pour commencer Scripts Introduire des variables Manipulation des variables Plotting
Types de variables MATLAB est un langage simplifié Pas besoin d initialiser les variables! La plupart des variables que vous traitez seront des vecteurs ou des matricess
Variables spéciales Pour créer une variable, il suffit d affecter une valeur à un nom : >> var1=3.14 Les chaines de caractères sont déclarées avec des apostrophes : >> mystring= bonjour tout le monde Les noms des variables premier caractère doit être une LETTRE après cela, n importe quelle combinaison de lettres, chiffres et Sensible aux majuscules et minuscules! (var1 est différent de Var1) Variables intégrées. Ne pas utiliser ces noms! i et j peut être utilisé pour indiquer des nombres complexes pi a la valeur 3.1415926... ans stocke la dernière valeur non affecté Inf et -Inf sont + et NaN represente Not a Number
Scalaire Les nombres réels sont écrits sous les formes décimales ou scientifiques usuelles : 2, 3.214, -.546, 1.21e33, 5.78e-16,... On peut introduire une variable explicitement >> a = 10 apparaît dans l espace de travail! ou en fonction des valeurs explicites et variables existantes >> c = 1.3*45-2*a Pour ne pas afficher la sortie, terminer la ligne par un point virgule >> var2 = 13/3 ; Il existe aussi certaine varaibles prédifinie eps = 2.2204e-16 (précision machine), realmin = 2.2251e-308, realmax = 1.7977e308
Vecteurs lignes Vecteur ligne : entre crochets on sépare les valeurs par une virgule ou un espace >> row = [1 2 5.4-6.6] >> row = [1, 2, 5.4, -6.6] ; Command window : Workspace :
Vecteurs colonnes Vecteur colonne : entre crochets des valeurs séparées par point-virgule >> column = [4 ;2 ;7 ;4] Command window : Workspace :
size & length Vous pouvez faire la différence entre un vecteur ligne et un vecteur colonne par : En regardant dans workspace Affichage de la variable dans command window Utilisation de la fonction size Pour obtenir la longueur d un vecteur, utilisez la fonction length
http ://ocw.mit.edu/terms
save/clear/load Utiliser save pour enregistrer des variables dans un fichier >> save myfile a b enregistrer les variables a et b dans le fichier myfile.mat le fichier myfile.mat est sauvegardé dans current directory répertoire de travail par défaut est >> \MATLAB Assurez-vous que vous êtes dans le dossier de votre choix lors de l enregistrement des fichiers. A l heure actuelle, nous devrions être en (utiliser pwd) : >> C :\Program Files\MATLAB\R2012b\bin Utiliser clear pour supprimer des variables de l environment >> clear a b Regarder dans workspace, les variables a and b sont partis Utiliser load pour apporter des variables dans l environment >> load myfile Regarder dans workspace, les variables a et b sont de retour Peut faire la même chose >> save myenv ; clear all ; load myenv ;
Ecrire/Lire dans un fichier Impression à l écran : La commande d écriture est fprintf >> fprintf(format,var1,var2,...), où format est une chaîne de caractère décrivant le format d écriture des variables var 1, var 2,... Les principaux type de fromats d écriture sont : %d entier %5d : entier de longueur 5, ex : 34562 %f réel %5.2f : réel de longueur 5 avec 2 chiffres après la %e exponentiel %10.8e : nombre de la forme -21.01e+05 %g réel double précision entre %e et %f %s chaîne de caractères fprintf( Convergence en %d iterations,3) fprintf( \n Convergence en %d iterations,3)
Ecrire/Lire dans un fichier Impression dans un fichier http ://ocw.mit.edu/terms
Ecrire/Lire dans un fichier Impression dans un fichier Lecture de données http ://ocw.mit.edu/terms
Plan Pour commencer Scripts Introduire des variables Manipulation des variables Plotting
Opérations scalaires de base Operations arithmétique (+,,, /) >> 7/45 >> (1 + i) (2 + i) >> 1 / 0 >> 0 / 0 Exponentiation ( ) >> 4 2 >> (3 + 4 j) 2 Expressions compliquées, utilisez des parenthèses >> ((2 + 3) 3) 0.1 La multiplication n est pas implicite >> 3(1 + 0.7) affiche une erreur Pour effacer command window >> clc
Fonctions intégrées MATLAB a une bibliothèque riche de fonctions intégrées On fait appel à une fonction - on met les paramètres entre parenthèses
Transposé L opérateur de transposition transforme un vecteur colonne en un vecteur ligne et vice versa >> a = [1 2 3 4 + i] >> transpose(a) >> a >> a. Le symbole donne la transposition hermitienne, i.e. transpose et conjugue tous les nombres complexes Pour un vecteur réel. et donnent le même résultat
Addition et Soustraction L addition et la soustraction se font élément par élément pour tailles compatibles : Ce qui suit donnerait une erreur >> c = row + column Utilisez la transposition pour avoir des tailles compatibles >> c = row + column >> c = row + column Peut additionner ou multiplier les termes d un vecteur >> s=sum(row) ; >> p=prod(row) ;
Fonctions élément par élément : Element-Wise Functions Toutes les fonctions qui agissent sur des scalaires agissent également sur des vecteurs >> t = [1 2 3] ; >> f = exp(t) ; est la même que >> f = [exp(1) exp(2) exp(3)] ; Les opérateurs (* / ) ont deux modes de fonctionnement element-wise (élément par élément) standard
Opérateurs : element-wise Pour faire des opérations élément par élément (element-wise), utilisez le point :. (.*,./,. ). Les deux dimension doivent être les mêmes http ://ocw.mit.edu/terms
Operateurs : standard Multiplication peut être fait de manière standard ou élément par élément (element-wise) Multiplication standard(*) est soit un produit scalaire ou un produit externe Exponentiation standard ( ) ne peut se faire que sur des scalaires ou des matrices carrées La division à gauche et à droite (/ \) est la même que la multiplication par inverse http ://ocw.mit.edu/terms
Initialisation Automatique Initialiser un vecteur de nombres ones, zeros, ou random >> o=ones(1,10) vecteur ligne avec 10 éléments, tous 1 >> z=zeros(23,1) vecteur colonne avec 23 éléments, tous 0 >> r=rand(1,45) vecteur ligne avec 45 éléments (uniform [0,1]) >> n=nan(1,69) vecteur ligne de NaNs (utile pour représenter des variables non initialisées)
Initialization Automatique Pour initialiser un vecteur dont ses éléments sont répartient uniformément (vecteur linéaire), utiliser linspace >> a=linspace(0,10,5) commence à 0, se termine à 10 (inclus), 5 valeurs Peut également utiliser l opérateur : >> b=0 :2 :10 commence à 0, par incréments de 2, et se termine 10 incrément peut être décimal ou négatif >> c=1 :5 si incrément n est pas spécifié, une valeur par défaut est 1 Pour initialiser des valeurs logarithmiquement espacées, utiliser logspace similaire à linspace, mais voir help
Indice d un vecteur L indexation commence par 1 et non par 0 a(n) retourne le nème élément L indice peut être un vecteur. Dans ce cas, chaque élément de ce vecteur est recherché, et le résultat renvoyé est un vecteur de même taille que celui des indices.
http ://ocw.mit.edu/terms
Indexation avancée Sélectionner des lignes ou des colonnes d une matrice, utilisez le MATLAB contient des fonctions pour vous aider à trouver les valeurs souhaitées dans un vecteur ou une matrice >> vec = [5 3 1 9 7] Pour obtenir la valeur minimale et son indice : >> [minval,minind] = min(vec) ; max Pour trouver des indices de valeurs spécifiques >> ind = find(vec == 9) ; >> ind = find(vec > 2 & vec < 6) ;
Exercices Exercice 1 Tapez les commandes suivantes et en commenter les résultats : n = 5, u = rand(n, 1), u/2, u./2, 2./u, u(3), u(2 : n 1), u(end), length(u), size(u), v = ones(5, 1), v = 2 u 3 v, u v, u. v, u, u v, v u, u 2, 2. u, 2 u. Exercice 2 On note u, v et w les vecteurs suivants : u = (1, 1, 3, 5) T, v = (10, 1, 3, 1) T w = (5, 1, 4, 5) T. Calculer 3u, u 2, 2u v + 4w, 2u v + 4w 1, v 3w.
Plan Pour commencer Scripts Introduire des variables Manipulation des variables Plotting
Tracé des figures Exemple >> x=linspace(0,4*pi,10) ; >> y=sin(x) ; Tracer y en fonction de ces indices >> plot(y) ; Tracer y en fonction de x >> plot(x,y) ;
Utilité du plot? plot génère des points en chaque paire (x, y), puis relie les points avec une ligne Pour tracer une fonction plus lisse, augmenter le nombre de point d évaluation >> x=linspace(0,4*pi,1000) ; >> plot(x,sin(x)) ; Les vecteurs x et y doivent être de même taille, ou bien vous aurez une erreur >> plot([1 2], [1 2 3]) error!!