Vous êtes sur la page 1sur 41

Formation Matlab et Calcul Scientifique

Cours 1: Variables, scripts et opérations

Département Génie Industriel

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
I Matlab : MATrix LABoratory
I Langage de programmation
I Paltforme de développement destinée au calcul scientifique
I Réaliser des tâches coûteuses avec une vitesse plus rapide
I Utilité : Résolution numérique des problèmes mathématiques
I Equations aux Dérivées Partielles (EDP)
I Systèmes Linéaires
I Valeurs Propres de Matrices
I Méthodes d’optimisation, ....
I Avantage :
I langage interprété (exécute les commandes sans passer par une
étape de compilation)
I intègre des fonctions mathématiques élémentaires
I méthodes numériques pour le calcul matriciel
I outils de représentation graphique en 2D ou 3D
I Objectif : Acquérir les bases de ce logiciel
Pour commencer
Commandes d’environnement
Les commandes d’environnement de MATLAB les plus
courantes sont :
I cd : permet de se déplacer d’un répertoire à un autre
I ls ou dir : affiche les fichiers contenus dans le répertoire
courant ou un autre
I pwd : affiche le répertoire courant
I who ou whos : liste les variables déjà déclarées par l’utilisateur
I clear all : supprime la liste des variables déjà déclarées
I clc : efface l’ensemble des commandes MATLAB introduite
sur l’écran
I exit ou quit : permet de quitter l’interface MATLAB
I tic et toc : calcule le temps mis par MATLAB pour exécuter
une commande ou un script
I cputime : retoune le temps total (en sec) mis par
l’application MATLAB
Help / docs
I help
I La fonction la plus importante pour comprendre MATLAB
I Pour avoir des informations comment utiliser une fonction
matlab :
>> help sin
I Pour ouvrir une fent̂re d’aide intéractive
>> helpdesk
I Chercher une commande sans avoir une idée sur le nom de
cette commande
>> lookfor (exemple : lookfor cosinus)

I liste des fonctions et des liens liés à la doc


I Pour avoir une description détaillée avec des exemples :
>> doc sin
I Pour rechercher une fonction en spécifiant des mots-clés :
>> doc + Search tab
Help / docs
I help
I La fonction la plus importante pour comprendre MATLAB
I Pour avoir des informations comment utiliser une fonction
matlab :
>> help sin
I Pour ouvrir une fent̂re d’aide intéractive
>> helpdesk
I 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

I liste des fonctions et des liens liés à la doc


I Pour avoir une description détaillée avec des exemples :
>> doc sin
I 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

I Les scripts sont


I collection de commandes exécuté en séquence
I écrite dans l’éditeur MATLAB
I enregistré en tant que fichiers MATLAB (.m extension)

I Pour créer un fichier de commande MATLAB


>> edit Bonjour.m

I ou cliquer
Scripts : the Editor

http ://ocw.mit.edu/terms
Scripts : quelques notes

I COMMENTAIRE !
I Tout ce qui suit un % est considéré comme un commentaire
I Le premier commentaire est une description du script
I Commentaire : comprendre le fonctionnement du code plus
tard

I 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

I MATLAB est un langage simplifié


I Pas besoin d’initialiser les variables !

I La plupart des variables que vous traitez seront des vecteurs


ou des matricess
Variables spéciales

I Pour créer une variable, il suffit d’affecter une valeur à un


nom :
>> var1=3.14
I Les chaines de caractères sont déclarées avec des apostrophes :
>> myString=’bonjour tout le monde’
I Les noms des variables
I premier caractère doit être une LETTRE
I après cela, n’importe quelle combinaison de lettres, chiffres et
I Sensible aux majuscules et minuscules ! (var1 est différent de
Var1)
I Variables intégrées. Ne pas utiliser ces noms !
I i et j peut être utilisé pour indiquer des nombres complexes
I pi a la valeur 3.1415926....
I ans stocke la dernière valeur non affecté
I Inf et -Inf sont +∞ et −∞
I NaN represente ’Not a Number’
Scalaire
I Les nombres réels sont écrits sous les formes décimales ou
scientifiques usuelles :
2, 3.214, -.546, 1.21e33, 5.78e-16, . . .
I On peut introduire une variable explicitement
>> a = 10
I apparaı̂t dans l’espace de travail !

I ou en fonction des valeurs explicites et variables existantes


>> c = 1.3*45-2*a

I Pour ne pas afficher la sortie, terminer la ligne par un point


virgule
>> var2 = 13/3 ;

I Il existe aussi certaine varaibles prédifinie


eps = 2.2204e-16 (précision machine), realmin =
2.2251e-308, realmax = 1.7977e308
Vecteurs lignes

I 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] ;
I Command window :

I Workspace :
Vecteurs colonnes

I Vecteur colonne : entre crochets des valeurs séparées par


point-virgule
>> column = [4 ;2 ;7 ;4]
I Command window :

I Workspace :
size & length

I Vous pouvez faire la différence entre un vecteur ligne et un


vecteur colonne par :
I En regardant dans workspace
I Affichage de la variable dans command window
I Utilisation de la fonction size

I Pour obtenir la longueur d’un vecteur, utilisez la fonction


length
http ://ocw.mit.edu/terms
save/clear/load
I Utiliser save pour enregistrer des variables dans un fichier
>> save myFile a b
I enregistrer les variables a et b dans le fichier myfile.mat
I le fichier myfile.mat est sauvegardé dans current directory
I répertoire de travail par défaut est
>> \MATLAB
I 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
I Utiliser clear pour supprimer des variables de l’environment
>> clear a b
I Regarder dans workspace, les variables a and b sont partis
I Utiliser load pour apporter des variables dans l’environment
>> load myFile
I Regarder dans workspace, les variables a et b sont de retour
I Peut faire la même chose
>> save myenv ; clear all ; load myenv ;
Ecrire/Lire dans un fichier

I 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

I Impression dans un fichier

http ://ocw.mit.edu/terms
Ecrire/Lire dans un fichier

I Impression dans un fichier

I 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

I Operations arithmétique (+, −, ∗, /)


>> 7/45
>> (1 + i) ∗ (2 + i)
>> 1 / 0
>> 0 / 0
I Exponentiation (∧ )
>> 4∧ 2
>> (3 + 4 ∗ j)∧ 2
I Expressions compliquées, utilisez des parenthèses
>> ((2 + 3) ∗ 3)∧ 0.1
I La multiplication n’est pas implicite
>> 3(1 + 0.7) affiche une erreur
I Pour effacer command window
>> clc
Fonctions intégrées

I MATLAB a une bibliothèque riche de fonctions intégrées


I On fait appel à une fonction - on met les paramètres entre
parenthèses
Transposé

I 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.’
I Le symbole 0 donne la transposition hermitienne, i.e. transpose
et conjugue tous les nombres complexes
I Pour un vecteur réel .0 et 0 donnent le même résultat
Addition et Soustraction

I L’addition et la soustraction se font élément par élément pour


tailles compatibles :

I Ce qui suit donnerait une erreur


>> c = row + column
I Utilisez la transposition pour avoir des tailles compatibles
>> c = row’+ column
>> c = row + column’
I Peut additionner ou multiplier les termes d’un vecteur
>> s=sum(row) ;
>> p=prod(row) ;
Fonctions élément par élément : Element-Wise Functions

I Toutes les fonctions qui agissent sur des scalaires agissent


également sur des vecteurs
>> t = [1 2 3] ;
>> f = exp(t) ;
I est la même que
>> f = [exp(1) exp(2) exp(3)] ;
I Les opérateurs (* / ∧ ) ont deux modes de fonctionnement
I element-wise (élément par élément)
I standard
Opérateurs : element-wise
I 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
I Multiplication peut être fait de manière standard ou élément
par élément (element-wise)
I Multiplication standard(*) est soit un produit scalaire ou un
produit externe
I Exponentiation standard (∧ ) ne peut se faire que sur des
scalaires ou des matrices carrées
I La division à gauche et à droite (/ \) est la même que la
multiplication par inverse

http ://ocw.mit.edu/terms
Initialisation Automatique

I Initialiser un vecteur de nombres ones, zeros, ou random


>> o=ones(1,10)
I vecteur ligne avec 10 éléments, tous 1
>> z=zeros(23,1)
I vecteur colonne avec 23 éléments, tous 0
>> r=rand(1,45)
I vecteur ligne avec 45 éléments (uniform [0,1])
>> n=nan(1,69)
I vecteur ligne de NaNs (utile pour représenter des variables non
initialisées)
Initialization Automatique

I Pour initialiser un vecteur dont ses éléments sont répartient


uniformément (vecteur linéaire), utiliser linspace
>> a=linspace(0,10,5)
I commence à 0, se termine à 10 (inclus), 5 valeurs
I Peut également utiliser l’opérateur ” :”
>> b=0 :2 :10
I commence à 0, par incréments de 2, et se termine ≤ 10
I incrément peut être décimal ou négatif
>> c=1 :5
I si incrément n’est pas spécifié, une valeur par défaut est 1
I Pour initialiser des valeurs logarithmiquement espacées,
utiliser logspace
I similaire à linspace, mais voir help
Indice d’un vecteur

I L’indexation commence par 1 et non par 0


I a(n) retourne le nème élément

I 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
I Sélectionner des lignes ou des colonnes d’une matrice, utilisez
le

I MATLAB contient des fonctions pour vous aider à trouver les


valeurs souhaitées dans un vecteur ou une matrice
>> vec = [5 3 1 9 7]
I Pour obtenir la valeur minimale et son indice :
>> [minVal,minInd] = min(vec) ;
I max
I Pour trouver des indices de valeurs spécifiques
>> ind = find(vec == 9) ;
>> ind = find(vec > 2 & vec < 6) ;
Exercices

I 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 0 , u ∗ v 0 , v 0 ∗ u, u ∧ 2, 2.∧ u, 2∧ u.

I 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

I Exemple
>> x=linspace(0,4*pi,10) ;
>> y=sin(x) ;

I Tracer y en fonction de ces indices


>> plot(y) ;

I Tracer y en fonction de x
>> plot(x,y) ;
Utilité du plot ?
I plot génère des points en chaque paire (x, y), puis relie les
points avec une ligne
I Pour tracer une fonction plus lisse, augmenter le nombre de
point d’évaluation
>> x=linspace(0,4*pi,1000) ;
>> plot(x,sin(x)) ;
I Les vecteurs x et y doivent être de même taille, ou bien vous
aurez une erreur >> plot([1 2], [1 2 3])
I error ! !

Vous aimerez peut-être aussi