Vous êtes sur la page 1sur 31

Ecole Nationale dIndustrie et des Mines

Introduction
MatLab
MATrix LABoratory
I.MEDARHRI
O.KAFI
2012-2013

Plan
1.
2.
3.
4.
5.
6.
7.
8.

Introduction
Syntaxe du langage
Vecteurs et Matrices
Fonctions
Boucles
Test
Graphiques
EDP

1. Introduction
MATrix LABoratory
Logiciel Interactif de calcul bas sur le calcul matriciel
Calcul scientifique ou Ingnierie
Permet de raliser des simulations numriques bases sur des
algorithmes danalyse numrique
Affichages graphiques
Programmation : dition de scripts
Mise en uvre trs rapide

2.

Syntaxe du langage(1/3)

Suite dinstructions spares ou non par des points virgules.


Sans point virgule : affichage du rsultat

Pour les enchanements de commandes un peu compliqu


crire un script dans un fichier .M (M-Files)

2. Syntaxe du langage(2/3)
Utilisation de laide en ligne

Dans la ligne de commande :


help [function]

2. Syntaxe du langage(3/3)
Premiers pas

Dfinir un scalaire :
>> a=21;
>> c=2+i
c = 2.0000 + 1.0000i

Fonctions courantes:
Trigonomtrie : sin, cos, tan, asin, acos, atan
Complexes : real, imag
Fonctions classiques : exp, log, sqrt, ^

Quelques constantes
>> pi
ans = 3.1416
Complexes : i
>> i^2
ans =
-1

3.Vecteurs et Matrices (1/7)


o Pour dfinir un vecteur le syntaxe est une des suivantes:
>> v+w
>> v=[2,-3+i,5]
% vecteur ligne
v =
2.0000
-3.0000+1.0000i
5.0000

%vecteur transconjugu
>> v
ans =
2.0000
-3.0000 - 1.0000i
5.0000
>> v.

% vecteur transpos

ans =
2.0000
-3.0000 + 1.0000i
5.0000
% vecteur colonne
>> w=[-3;pi;8]
W=
-3.0000
3.1416
8.0000

%somme de 2 vecteurs

ans =
-1.0000

0.1416+1.0000i 13.0000

>> v*W %produit scalaire euclidien


ans =
24.5752 +3.1416i
>> w.*v; %produit des composantes
>> w./v; %division des composantes

Remarques:
Les composantes sont spares
par espace ou des virgules pour
les vecteurs ligne.
Gnration des vecteurs:
[BorneInf : pas : BorneSup]
linspace(a,b,N):N composantes
uniformment rparties entre a et
b.

3.Vecteurs et Matrices (2/7)

Les matrices suivent la mme syntaxe que les vecteurs:

>>% dfinir une matrice 3x3

>>%Extraction des lments dune matrice

>> M=[1,2,3 ;4,5,6 ;7,8,9]


>>P
>> M =
1
4
7

2
5
8

1.
1.
1.
1.
1.

3
6
9

>> %une autre syntaxe


>>P=[1 1 0 0 0;...
1 2 1 0 0;...
1 3 3 1 0;...
1 4 6 4 1]
>>P =
1.
1.
0.
0.
1.
2.
1.
0.
1.
3.
3.
1.
1.
4.
6.
4.

=
0.
1.
2.
3.
4.

0.
0.
1.
3.
6.

P(3: end,2:3)

0.
0.
0.
1.

0.
0.
0.
1.
4.

0.
0.
0.
0.
1.

3.Vecteurs et Matrices (3/7)


Oprations matricielles
+

*
^

\
/
.*
.^
.\
./

Addition
C=A+B
Soustraction
C=A-B
Multiplication
C=A*B
Puissance
C = A^2
Transpose
C = A'
division gauche x = A\b
division droite
x = b/A
Multiplication lment lment
Puissance lment par lment
division gauche lment par lment
division droite lment par lment

>> u=[1 2 3];


>> v=[1;2;3];
>> u*v
ans =
14
>> u*u
??? Error using ==> mtimes
Inner matrix dimensions must
agree.

Attention aux
correspondances de
tailles pour *, /

3.Vecteurs et Matrices (4/7)


Les fonctions scalaire courantes (sin, exp, log
) peuvent aussi sappliquer sur des matrices
(composante par composante)
>> A=[pi pi/2; pi/2 pi]
A=
3.1416 1.5708
1.5708 3.1416
>> cos(A)
ans =
-1.0000 0.0000
0.0000 -1.0000

La fonction find(C(A)) revoie les indices


dans le tableau A des composantes
vrifiant la condition C(A).
>>find(A); %renvoie les indices des
composantes de A #0
>> find(A>-1) %renvoie les indices des
composantes de A >-1

3.Vecteurs et Matrices (5/7)


Quelques fonctions matricielles

eye :

-->I4 = eye(4,4)
I4 =
1.
0.
0.
0.
1.
0.
0.
0.
1.
0.

diag :

ones,
zeros :

0.

0.

-->rand(3,2)
ans =

rand :

0.
0.
0.
1.

-->d = [1 3 9 27];
-->diag(d)
ans =
1.
0.
0.
0.
3.
0.
0.
0.
9.
0.
0.
0.

0.7263507
0.1985144
0.5442573

0.2320748
0.2312237
0.2164633

-->A = [1 2 3 ; 4 5 6 ; 7 8 9];
-->diag(A)
ans =
0.
0.
0.
27.

-->ones(2,4)
ans =

1.
5.
9.

-->zeros(2,2)
ans =

1.

1.

1.

1.

1.

1.

1.

1.

0.
0.

0.
0.

3.Vecteurs et Matrices (6/7)


Principales Oprations sur les Matrices

3.Vecteurs et Matrices (7/7)


Exercice dapplication
(1) Dfinir ces vecteurs sous Matlab.

2 1 5
1
3
3 1 7

A
=
u = 4 v = 2


4 3 2
2

(2) Soient la matrice A :


Calculer

Au, AAT , ( AAT ) 1 , I 3 A

(3) Soit les deux vecteurs suivant :


Calculer

3u , u 1 , u 2 , v AAT , ( AAT ) 1

(4) Gnrer un vecteur w de 10 valeurs rparties uniformment entre 0 et Pi


Crer le vecteur z contenant les 5 premires valeurs de w

Fonctions utiles : eye, sqrt, norm, linspace, abs

4. Fonctions(1/6)
Scripts et Fonctions
Scripts (fichiers .m) :

Enchanement de commandes MATLab


regroupes sous un nom de fichier

Pour conserver une trace de son travail

Fonctions (fichiers .m) :

Enchanement de commandes qui renvoie une ou des valeurs


Permet de dcouper un programme long et compliqu en
plusieurs fonctions pour une meilleure lisibilit
Permet dexcuter le mme code avec des paramtres diffrents
sans copier-coller
Calcul avec un certain algorithme, qui pourra tre ventuellement
remplac par un autre algo juste en changeant le nom de la
fonction appele.

4. Fonctions(2/6)
Fonctions (.m)

Un fichier peut regrouper plusieurs fonctions

Syntaxe :
function [o_1, ..., o_M] = test(x_1, ..., x_N)
...
...
end

test : Nom de la fonction


Extension : .m
o_1, , o_M : Arguments de sortie

Pour rcuprer les valeurs calcules par la fonction

x_1, , x_N : Arguments dentres

Passage par valeur : Valeurs non modifies dans le programme appelant.

4.Fonctions(3/6)
Editeur intgr

Pour excuter le script :

run(nomscript)
test()

4. Fonctions(4/6)
Quelques commandes d'environnement
importantes
path : permet de savoir quels sont les dossiers que Matlab rfrence
et de spcifier de nouveaux dossiers windows o se trouvent des
ressources personnelles, par exemple :
path(path,'D:\matlab7.0\work')
Avant dexcuter une fonction il faut toujours sassurer quon travail
dans le bon rpertoire

4. Fonctions(5/6)
Exemples
function [y]=fact1(n)
y = prod(1:n)
End

function [r,theta]=polaire(x,y)
r = sqrt(x.^2+y.^2);
theta = atan(y./x);
End

function test()

Fonction enregistre dans le


fichier fct1.m

Fonction enregistre dans le


fichier polaire.m

Fonction enregistre dans le


fichier test.m

5. Fonctions(6/6)
Exemples
Appel de la fonction :
>> fact1(4)
Ans =
24.
>> polaire(2,3)
ans =
3.6056
>> r=polaire(2,3)
r =
3.6056
>> [r, theta]=polaire(2,3)
r =
3.6056
theta =
0.9828

ATTENTION aux
arguments de sortie !

Par dfaut : un seul

Syntaxe pour rcuprer les


deux arguments de sortie

5. Boucles(1/2)
Boucle for

Parcourt un vecteur d'indices et effectue chaque pas


toutes les instructions dlimites par l'instruction end.
x=[1 2 3];
s=0;
for i=1:length(x)
s = s + x(i);
end
s

Renvoie s=6

ATTENTION !
Pour les calculs viter les boucles FOR, et tirer au
maximum partie du calcul matriciel
Boucle prcdente quivalente :
sum(x)

5. Boucles(2/2)
Boucle WHILE
Effectue une suite de commandes tant quune condition
est satisfaite.
epsilon = 0;
while ( epsilon<1 )
epsilon = epsilon + 0.1
end

Oprateurs logiques dans les tests :

6.

Test Conditionnel IF
Exemple :
if expression

elseif expression

(elseif expression
)
else

end

function [y]=my_abs(x)
if ( x<0 )
y = -x;
else
y = x;
end
end

Appel :
>> my_abs(-7)
>> ans =
7

7.

LES GRAPHIQUES(1/3)

Dans toutes les reprsentations graphiques, le logiciel se base sur des donnes discrtes
ranges dans des matrices ou des vecteurs colonnes.
L'instruction de dessin
correspondante (par exemple plot(x,y) pour tracer des courbes planes) est alors utilise et
ventuellement complte par des arguments optionnels (couleur, type de trait, chelle sur
les axes, etc...). La visualisation du rsultat s'effectue dans une fentre graphique (avec
possibilite de zoom, de rotation, d'impression).

Exemple de representation graphique en dimension deux

Les courbes dans le plan

x=linspace(0,pi,30);
y=sin(x);
plot(x,y)
plot(x,y,'*-b') %relie les points (xi,yi)
par un trait continu de couleur et
materialise les points avec un symbole
plot(x,y,'*r') %materialise les points
(xi,yi) avec un symbole de couleur

Les surfaces

x=linspace(0,2*pi,31);
z=cos(x)'*cos(x);
plot3(x,x,z)
t = 0:pi/50:10*pi;
plot3(sin(t),cos(t),t)
grid on

7.

LES GRAPHIQUES(2/3)

Les points peuvent tre matrialises par le symbole p prenant les valeurs
suivants : o : + Les couleurs sont repres par leur initiale en anglais :
(red),( blue), (black), (white), (yellow), (magenta),(green)
On peut rajouter un titre la figure avec la commande title
title('sin(x) sur l''intervalle [0,pi]')

On peut reprsenter plusieurs courbes sur la mme figure de plusieurs


manires : d'abord par un seul appel la fonction plot
plot(x,cos(x),x,sin(x),x,exp(-x)) % Matlab va automatiquement utiliser des couleurs
%differentes pour chaque courbe
plot(x,cos(x),'o-r',x,sin(x),'x-b',x,exp(-x),'*-g') % pour specifier le type
% de symbole et la couleur a utiliser pour chaque courbe
legend('cos(x)','sin(x)','exp(-x)') % pour rajouter une legende

7.

LES GRAPHIQUES(3/3)

Principales instructions graphiques

8. EDP(1/6)
Applications
Rsolution de lquation diffrentielle :

y(t)=dy/dt=y2(t) - y sin(t) + cos(t),


y(0)=0

8.

EDP(2/6)

Problmes elliptiques

y" ( x) y ( x) = 2 sin( x) sin( x) sur ]0,1[


( P) =
y (0) = y (1) = 0

8.

EDP(3/6)

Analyse du problme :
On cherche dterminer y dfinie sur ]0,1[
Discrtisation : xi+1 xi = h avec h=1/n
xi = i h + x0 = i h
x0

x1

xi

xi+1

xn

9. EDP(4/6)
Le problme discrtis

y" ( xi ) y ( xi ) = g ( xi )

2
( Papp) = g ( xi ) = sin( xi ) sin( xi )
y = y = 0
0 n

9.

EDP(5/6)

yi +1 2 yi + yi 1
y" ( xi )
h2
yi +1 2 yi + yi 1
yi = g i

2
( Papp ) =
h

y0 = y n = 0

i = 1,..., n 1

9. EDP(6/6)
yi +1 yi (2 + h 2 ) + yi 1 = h 2 g i
( Papp) =
y0 = y n = 0
sous forme matricielle
AY = b Y = A / b
(2 + h 2 ) 1 0 0 ...0

1 (2 + h 2 ) 1 0..0

2
A = 0 1 (2 + h ) 1 0.....0
.........................................

0.................... 1 (2 + h 2 )

i = 1,..., n 1

y1
g1

y2
g2

g , Y = y
=
,
b

3
3

....
....

yn 1
g n 1

Vous aimerez peut-être aussi