Vous êtes sur la page 1sur 41

Formation Matlab et Calcul Scientifique

Cours 1: Variables, scripts et op´erations

Moncef Mahjoub

ENIT-LAMSIN, BP 37, 1002 Tunis Belvedere, Tunisie

Scientifique Cours 1: Variables, scripts et op´erations Moncef Mahjoub ENIT-LAMSIN, BP 37, 1002 Tunis Belvedere, Tunisie
Scientifique Cours 1: Variables, scripts et op´erations 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

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´eveloppement destin´ee au calcul scientifique

R´ealiser des tˆaches coˆuteuses avec une vitesse plus rapide Utilit´e : R´esolution num´erique des probl`emes math´ematiques

Equations aux D´eriv´ees Partielles (EDP) Syst`emes Lin´eaires Valeurs Propres de Matrices M´ethodes d’optimisation,

Avantage :

langage interpr´et´e (ex´ecute les commandes sans passer par une ´etape de compilation) int`egre des fonctions math´ematiques ´el´ementaires m´ethodes num´eriques pour le calcul matriciel outils de repr´esentation graphique en 2D ou 3D

Objectif : Acqu´erir les bases de ce logiciel

le calcul matriciel outils de repr´esentation graphique en 2D ou 3D Objectif : Acqu´erir les bases

Pour commencer

Pour commencer
Pour commencer

Commandes d’environnement

Les commandes d’environnement de MATLAB les plus courantes sont :

cd : permet de se d´eplacer d’un r´epertoire `a un autre

ls ou dir : affiche les fichiers contenus dans le r´epertoire courant ou un autre

pwd : affiche le r´epertoire courant

who ou whos : liste les variables d´ej`a d´eclar´ees par l’utilisateur

clear all : supprime la liste des variables d´ej`a d´eclar´ees

clc : efface l’ensemble des commandes MATLAB introduite sur l’´ecran

exit ou quit : permet de quitter l’interface MATLAB

tic et toc : calcule le temps mis par MATLAB pour ex´ecuter une commande ou un script

cputime : retoune le temps total (en sec) mis par l’application MATLAB

MATLAB pour ex´ecuter une commande ou un script cputime : retoune le temps total (en sec)

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´eractive >> helpdesk Chercher une commande sans avoir une id´ee sur le nom de cette commande >> lookfor (exemple : lookfor cosinus)

liste des fonctions et des liens li´es `a la doc

Pour avoir une description d´etaill´ee avec des exemples :

>> doc sin Pour rechercher une fonction en sp´ecifiant des mots-cl´es :

>> doc + Search tab

: >> doc sin Pour rechercher une fonction en sp´ecifiant des mots-cl´es : >> doc +

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´eractive >> helpdesk Chercher une commande sans avoir une id´ee 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´es `a la doc

Pour avoir une description d´etaill´ee avec des exemples :

>> doc sin Pour rechercher une fonction en sp´ecifiant des mots-cl´es :

>> doc + Search tab

: >> doc sin Pour rechercher une fonction en sp´ecifiant des mots-cl´es : >> doc +

Plan

Pour commencer

Scripts

Introduire des variables

Manipulation des variables

Plotting

Plan Pour commencer Scripts Introduire des variables Manipulation des variables Plotting

Scripts : Overview

Les scripts sont

collection de commandes ex´ecut´e en s´equence ´ecrite dans l’´editeur MATLAB enregistr´e en tant que fichiers MATLAB (.m extension)

Pour cr´eer un fichier de commande MATLAB >> edit Bonjour.m

ou cliquer

que fichiers MATLAB (.m extension) Pour cr´eer un fichier de commande MATLAB >> edit Bonjour.m ou
que fichiers MATLAB (.m extension) Pour cr´eer un fichier de commande MATLAB >> edit Bonjour.m ou

Scripts : the Editor

Scripts : the Editor http ://ocw.mit.edu/terms

http ://ocw.mit.edu/terms

Scripts : the Editor http ://ocw.mit.edu/terms

Scripts : quelques notes

COMMENTAIRE !

Tout ce qui suit un % est consid´er´e comme un commentaire Le premier commentaire est une description du script Commentaire : comprendre le fonctionnement du code plus tard

Toutes les variables cr´e´es et modifi´ees dans un script existent dans l’espace de travail, mˆeme apr`es qu’il a cess´e de fonctionner

et modifi´ees dans un script existent dans l’espace de travail, mˆeme apr`es qu’il a cess´e de

Plan

Pour commencer

Scripts

Introduire des variables

Manipulation des variables

Plotting

Plan Pour commencer Scripts Introduire des variables Manipulation des variables Plotting

Types de variables

MATLAB est un langage simplifi´e

Pas besoin d’initialiser les variables !

La plupart des variables que vous traitez seront des vecteurs ou des matricess

Pas besoin d’initialiser les variables ! La plupart des variables que vous traitez seront des vecteurs

Variables sp´eciales

Pour cr´eer une variable, il suffit d’affecter une valeur `a un nom :

>> var1=3.14

Les chaines de caract`eres sont d´eclar´ees avec des apostrophes :

>> myString=’bonjour tout le monde’ Les noms des variables

premier caract`ere doit ˆetre une LETTRE apr`es cela, n’importe quelle combinaison de lettres, chiffres et Sensible aux majuscules et minuscules ! (var1 est diff´erent de

Var1)

Variables int´egr´ees. Ne pas utiliser ces noms !

i et j peut ˆetre utilis´e pour indiquer des nombres complexes pi a la valeur 3.1415926 ans stocke la derni`ere valeur non affect´e Inf et -Inf sont +et −∞ NaN represente ’Not a Number’

stocke la derni`ere valeur non affect´e Inf et -Inf sont + ∞ et −∞ NaN represente

Scalaire

Les nombres r´eels sont ´ecrits sous les formes d´ecimales 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´edifinie eps = 2.2204e-16 (pr´ecision machine), realmin = 2.2251e-308, realmax = 1.7977e308

certaine varaibles pr´edifinie eps = 2.2204e-16 (pr´ecision machine), realmin = 2.2251e-308, realmax = 1.7977e308

Vecteurs lignes

Vecteur ligne : entre crochets on s´epare les valeurs par une virgule ou un espace >> row = [1 2 5.4 -6.6] >> row = [1, 2, 5.4, -6.6] ;

Command window :

ou un espace >> row = [1 2 5.4 -6.6] >> row = [1, 2, 5.4,

Workspace :

ou un espace >> row = [1 2 5.4 -6.6] >> row = [1, 2, 5.4,
ou un espace >> row = [1 2 5.4 -6.6] >> row = [1, 2, 5.4,

Vecteurs colonnes

Vecteur colonne : entre crochets des valeurs s´epar´ees par point-virgule >> column = [4 ;2 ;7 ;4]

Command window :

crochets des valeurs s´epar´ees par point-virgule >> column = [4 ;2 ;7 ;4] Command window :

Workspace :

crochets des valeurs s´epar´ees par point-virgule >> column = [4 ;2 ;7 ;4] Command window :
crochets des valeurs s´epar´ees par point-virgule >> column = [4 ;2 ;7 ;4] Command window :

size & length

Vous pouvez faire la diff´erence 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

dans command window Utilisation de la fonction size Pour obtenir la longueur d’un vecteur, utilisez la

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

command window Utilisation de la fonction size Pour obtenir la longueur d’un vecteur, utilisez la fonction
command window Utilisation de la fonction size Pour obtenir la longueur d’un vecteur, utilisez la fonction
http ://ocw.mit.edu/terms

http ://ocw.mit.edu/terms

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´e dans current directory r´epertoire de travail par d´efaut est >> \MATLAB Assurez-vous que vous ˆetes dans le dossier de votre choix lors de l’enregistrement des fichiers. A l’heure actuelle, nous devrions ˆetre 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ˆeme chose >> save myenv ; clear all ; load myenv ;

, les variables a et b sont de retour Peut faire la mˆeme chose >> save

Ecrire/Lire dans un fichier

Impression `a l’´ecran : La commande d’´ecriture est fprintf

>> fprintf(format,var1,var2,

caract`ere d´ecrivant le format d’´ecriture des variables var 1, var 2, Les principaux type de fromats d’´ecriture sont :

),

o`u format est une chaˆıne de

%d

entier

%5d : entier de longueur 5, ex : 34562

%f

r´eel

%5.2f : r´eel de longueur 5 avec 2 chiffres apr`es la

%e

exponentiel

%10.8e : nombre de la forme -21.01e+05

%g

r´eel double pr´ecision

entre %e et %f

%s

chaˆıne de caract`eres

fprintf(’Convergence en %d iterations’,3) fprintf(’\n Convergence en %d iterations’,3)

chaˆıne de caract`eres fprintf(’Convergence en %d iterations’,3) fprintf(’ \ n Convergence en %d iterations’,3)

Ecrire/Lire dans un fichier

Impression dans un fichier

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

http ://ocw.mit.edu/terms

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

Ecrire/Lire dans un fichier

Impression dans un fichier

Ecrire/Lire dans un fichier Impression dans un fichier Lecture de donn´ees http ://ocw.mit.edu/terms

Lecture de donn´ees

Ecrire/Lire dans un fichier Impression dans un fichier Lecture de donn´ees http ://ocw.mit.edu/terms

http ://ocw.mit.edu/terms

Ecrire/Lire dans un fichier Impression dans un fichier Lecture de donn´ees http ://ocw.mit.edu/terms

Plan

Pour commencer

Scripts

Introduire des variables

Manipulation des variables

Plotting

Plan Pour commencer Scripts Introduire des variables Manipulation des variables Plotting

Op´erations scalaires de base

Operations arithm´etique (+, , , /) >> 7/45

>>

(1 + i) (2 + i)

>> 1 / 0 >> 0 / 0

Exponentiation ( )

>>

>>

4 2 (3 + 4 j) 2

4 ∧ 2 (3 + 4 ∗ j ) ∧ 2

Expressions compliqu´ees, utilisez des parenth`eses >> ((2 + 3) 3) 0.1

La multiplication n’est pas implicite >> 3(1 + 0.7) affiche une erreur

Pour effacer command window >> clc

n’est pas implicite >> 3(1 + 0 . 7) affiche une erreur Pour effacer command window

Fonctions int´egr´ees

MATLAB a une biblioth`eque riche de fonctions int´egr´ees

On fait appel `a une fonction - on met les param`etres entre parenth`eses

biblioth`eque riche de fonctions int´egr´ees On fait appel `a une fonction - on met les param`etres
biblioth`eque riche de fonctions int´egr´ees On fait appel `a une fonction - on met les param`etres

Transpos´e

L’op´erateur 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´eel . et donnent le mˆeme r´esultat

i.e. transpose et conjugue tous les nombres complexes Pour un vecteur r´eel . et donnent le

Addition et Soustraction

L’addition et la soustraction se font ´el´ement par ´el´ement pour tailles compatibles :

font ´el´ement par ´el´ement pour tailles compatibles : Ce qui suit donnerait une erreur >> c

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) ;

+ column’ Peut additionner ou multiplier les termes d’un vecteur >> s=sum(row) ; >> p=prod(row) ;

Fonctions ´el´ement par ´el´ement : Element-Wise Functions

Toutes les fonctions qui agissent sur des scalaires agissent ´egalement sur des vecteurs >> t = [1 2 3] ; >> f = exp(t) ;

est la mˆeme que >> f = [exp(1) exp(2) exp(3)] ;

Les op´erateurs (* / ) ont deux modes de fonctionnement

element-wise (´el´ement par ´el´ement) standard

; Les op´erateurs ( * / ∧ ) ont deux modes de fonctionnement element-wise (´el´ement par

Op´erateurs : element-wise

Pour faire des op´erations ´el´ement par ´el´ement (element-wise), utilisez le point : . (.*, ./, . ). Les deux dimension doivent ˆetre les mˆemes

utilisez le point : . ( .* , ./ , . ∧ ). Les deux dimension

http ://ocw.mit.edu/terms

utilisez le point : . ( .* , ./ , . ∧ ). Les deux dimension

Operateurs : standard

Multiplication peut ˆetre fait de mani`ere standard ou ´el´ement par ´el´ement (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´ees

La division `a gauche et `a droite (/ \) est la mˆeme que la multiplication par inverse

La division `a gauche et `a droite ( / \ ) est la mˆeme que la

http ://ocw.mit.edu/terms

La division `a gauche et `a droite ( / \ ) est la mˆeme que la

Initialisation Automatique

Initialiser un vecteur de nombres ones, zeros, ou random >> o=ones(1,10)

vecteur ligne avec 10 ´el´ements, tous 1

>> z=zeros(23,1)

vecteur colonne avec 23 ´el´ements, tous 0

>> r=rand(1,45)

vecteur ligne avec 45 ´el´ements (uniform [0,1])

>> n=nan(1,69)

vecteur ligne de NaNs (utile pour repr´esenter des variables non initialis´ees)

(uniform [0,1]) >> n=nan(1,69) vecteur ligne de NaNs (utile pour repr´esenter des variables non initialis´ees)
(uniform [0,1]) >> n=nan(1,69) vecteur ligne de NaNs (utile pour repr´esenter des variables non initialis´ees)

Initialization Automatique

Pour initialiser un vecteur dont ses ´el´ements sont r´epartient uniform´ement (vecteur lin´eaire), utiliser linspace >> a=linspace(0,10,5)

commence `a 0, se termine `a 10 (inclus), 5 valeurs

Peut ´egalement utiliser l’op´erateur ” :>> b=0 :2 :10

commence `a 0, par incr´ements de 2, et se termine 10 incr´ement peut ˆetre d´ecimal ou n´egatif

>> c=1 :5

si incr´ement n’est pas sp´ecifi´e, une valeur par d´efaut est 1

Pour initialiser des valeurs logarithmiquement espac´ees, utiliser logspace

similaire `a linspace, mais voir help

1 Pour initialiser des valeurs logarithmiquement espac´ees, utiliser logspace similaire `a linspace , mais voir help

Indice d’un vecteur

L’indexation commence par 1 et non par 0

a(n) retourne le n `eme ´el´ement

et non par 0 a(n) retourne le n ` e m e ´el´ement L’indice peut ˆetre

L’indice peut ˆetre un vecteur. Dans ce cas, chaque ´el´ement de ce vecteur est recherch´e, et le r´esultat renvoy´e est un vecteur de mˆeme taille que celui des indices.

de ce vecteur est recherch´e, et le r´esultat renvoy´e est un vecteur de mˆeme taille que
de ce vecteur est recherch´e, et le r´esultat renvoy´e est un vecteur de mˆeme taille que
http ://ocw.mit.edu/terms

http ://ocw.mit.edu/terms

http ://ocw.mit.edu/terms

Indexation avanc´ee

S´electionner des lignes ou des colonnes d’une matrice, utilisez le

des lignes ou des colonnes d’une matrice, utilisez le MATLAB contient des fonctions pour vous aider

MATLAB contient des fonctions pour vous aider `a trouver les valeurs souhait´ees 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´ecifiques >> ind = find(vec == 9) ; >> ind = find(vec > 2 & vec < 6) ;

valeurs sp´ecifiques >> ind = find(vec == 9) ; >> ind = find(vec > 2 &

Exercices

Exercice 1 Tapez les commandes suivantes et en commenter les r´esultats :

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 || .

. Calculer 3 u , || u || 2 , 2 u − v + 4

Plan

Pour commencer

Scripts

Introduire des variables

Manipulation des variables

Plotting

Plan Pour commencer Scripts Introduire des variables Manipulation des variables Plotting

Trac´e 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) ;

y=sin(x) ; Tracer y en fonction de ces indices >> plot(y) ; Tracer y en fonction

Utilit´e du plot ?

plot g´en`ere 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’´evaluation >> x=linspace(0,4*pi,1000) ; >> plot(x,sin(x)) ; Les vecteurs x et y doivent ˆetre de mˆeme taille, ou bien vous aurez une erreur >> plot([1 2], [1 2 3])

error ! !

vecteurs x et y doivent ˆetre de mˆeme taille, ou bien vous aurez une erreur >>