31
Introduction à MatLab MATrix LABoratory I.MEDARHRI O.KAFI 2012-2013 Ecole Nationale d’Industrie et des Mines

Initiation MatLab

Embed Size (px)

DESCRIPTION

Initiation à matlab

Citation preview

Introduction à MatLab

MATrix LABoratory

I.MEDARHRI O.KAFI

2012-2013

Ecole Nationale d’Industrie et des Mines

Plan

1. Introduction 2. Syntaxe du langage 3. Vecteurs et Matrices 4. Fonctions 5. Boucles 6. Test 7. Graphiques 8. EDP

• MATrix LABoratory • Logiciel Interactif de calcul basé sur le calcul matriciel

• Calcul scientifique ou Ingénierie

• Permet de réaliser des simulations numériques basées sur des

algorithmes d’analyse numérique • Affichages graphiques

• Programmation : édition de scripts

Mise en œuvre très rapide

1. Introduction

2. Syntaxe du langage(1/3) • Suite d’instructions séparées ou non par des points virgules.

Sans point virgule : affichage du résultat

Pour les enchaînements de commandes un peu compliqué Écrire un script dans un fichier .M (M-Files)

Utilisation de l’aide en ligne • Dans la ligne de commande :

help [function]

2. Syntaxe du langage(2/3)

Premiers pas…

Définir un scalaire : >> a=21; >> c=2+i c = 2.0000 + 1.0000i

2. Syntaxe du langage(3/3)

Fonctions courantes: Trigonométrie : 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)

>> v=[2,-3+i,5] % vecteur ligne v = 2.0000 -3.0000+1.0000i 5.0000 >> v’ %vecteur transconjugué ans = 2.0000 -3.0000 - 1.0000i 5.0000 >> v.’ % vecteur transposé ans = 2.0000 -3.0000 + 1.0000i 5.0000 >> w=[-3;pi;8] % vecteur colonne W= -3.0000 3.1416 8.0000

>> v+w’ %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

o Pour définir un vecteur le syntaxe est une des suivantes:

Remarques: Les composantes sont séparées

par espace ou des virgules pour les vecteurs ligne.

Génération des vecteurs: [BorneInf : pas : BorneSup] linspace(a,b,N):N composantes

uniformément réparties entre a et b.

>>% définir une matrice 3x3 >> M=[1,2,3 ;4,5,6 ;7,8,9] >> M = 1 2 3 4 5 6 7 8 9

Les matrices suivent la même syntaxe que les vecteurs:

>>%Extraction des éléments d’une matrice >>P = 1. 0. 0. 0. 0. 1. 1. 0. 0. 0. 1. 2. 1. 0. 0. 1. 3. 3. 1. 0. 1. 4. 6. 4. 1.

3.Vecteurs et Matrices (2/7)

>> %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. 0. 1. 2. 1. 0. 0. 1. 3. 3. 1. 0. 1. 4. 6. 4. 1.

P(3: end,2:3)

Opérations matricielles

Attention aux correspondances de tailles pour *, /

+ Addition C = A + B − Soustraction C = A - B * Multiplication C = A * B ^ Puissance C = A^2 ‘ Transposée C = A' \ division gauche x = A\b / division droite x = b/A .* Multiplication élément à élément .^ Puissance élément par élément .\ division gauche élément par élément ./ division droite élément par élément

>> u=[1 2 3]; >> v=[1;2;3]; >> u*v ans = 14 >> u*u

??? Error using ==> mtimes Inner matrix dimensions must agree.

3.Vecteurs et Matrices (3/7)

Les fonctions scalaire courantes (sin, exp, log …) peuvent aussi s’appliquer 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

3.Vecteurs et Matrices (4/7)

La fonction find(C(A)) revoie les indices dans le tableau A des composantes vérifiant 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

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

0. 0. 0. 1.

Quelques fonctions matricielles…

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

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

eye :

diag :

ones, zeros :

-->ones(2,4) ans = 1. 1. 1. 1.

1. 1. 1. 1.

-->zeros(2,2) ans = 0. 0. 0. 0.

rand : -->rand(3,2) ans = 0.7263507 0.2320748 0.1985144 0.2312237 0.5442573 0.2164633

3.Vecteurs et Matrices (5/7)

Principales Opérations sur les Matrices

3.Vecteurs et Matrices (6/7)

Exercice d’application

121

)(,,,,3 −∞

TT AAAAvuuu

2 1 53 1 74 3 2

A =

(2) Soient la matrice A :

Calculer

(3) Soit les deux vecteurs suivant :

Calculer

(4) Générer un vecteur w de 10 valeurs réparties uniformément entre 0 et Pi Créer le vecteur z contenant les 5 premières valeurs de w

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

(1) Définir ces vecteurs sous Matlab.

AIAAAAAu TT −−3

1,)(,,

321

v− =

142

u =

3.Vecteurs et Matrices (7/7)

Scripts et Fonctions • Scripts (fichiers ‘.m’) : ▫ Enchaînement de commandes MATLab

regroupées sous un nom de fichier

Pour conserver une trace de son travail

• Fonctions (fichiers ‘.m’) : ▫ Enchaînement de commandes qui renvoie une ou des valeurs Permet de découper un programme long et compliqué en plusieurs fonctions pour une meilleure lisibilité Permet d’exécuter le même code avec des paramètres différents 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 appelée.

4. Fonctions(1/6)

Fonctions (.m)

• test : Nom de la fonction • Extension : .m • o_1, …, o_M : Arguments de sortie

Pour récupérer les valeurs calculées par la fonction • x_1, …, x_N : Arguments d’entrées

Passage par valeur : Valeurs non modifiées dans le programme appelant.

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

Syntaxe :

Un fichier peut regrouper plusieurs fonctions

4. Fonctions(2/6)

• Editeur intégré

Pour exécuter le script : run(’nomscript’) test()

4.Fonctions(3/6)

Quelques commandes d'environnement importantes • path : permet de savoir quels sont les dossiers que Matlab référence

et de spécifier de nouveaux dossiers windows où se trouvent des ressources personnelles, par exemple :

path(path,'D:\matlab7.0\work') • Avant d’exécuter une fonction il faut toujours s’assurer qu’on travail

dans le bon répertoire

4. Fonctions(4/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 enregistrée dans le fichier fct1.m

Fonction enregistrée dans le fichier polaire.m

Fonction enregistrée dans le fichier test.m

4. Fonctions(5/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 défaut : un seul

Syntaxe pour récupérer les deux arguments de sortie

5. Fonctions(6/6)

Boucle for • Parcourt un vecteur d'indices et effectue à chaque pas

toutes les instructions délimitées par l'instruction end. x=[1 2 3];

s=0; for i=1:length(x) s = s + x(i); end s

sum(x)

Renvoie s=6

ATTENTION ! Pour les calculs éviter les boucles FOR, et tirer au maximum partie du calcul matriciel Boucle précédente équivalente à:

5. Boucles(1/2)

Boucle WHILE • Effectue une suite de commandes tant qu’une condition

est satisfaite.

epsilon = 0; while ( epsilon<1 ) epsilon = epsilon + 0.1 end

Opérateurs logiques dans les tests :

5. Boucles(2/2)

6. Test Conditionnel IF

if expression … elseif expression … (elseif expression …) else … end

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

Exemple :

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

7. LES GRAPHIQUES(1/3)

• Dans toutes les représentations graphiques, le logiciel se base sur des données discrètes

rangées dans des matrices ou des vecteurs colonnes. L'instruction de dessin correspondante (par exemple plot(x,y) pour tracer des courbes planes) est alors utilisée et éventuellement complétée par des arguments optionnels (couleur, type de trait, échelle sur les axes, etc...). La visualisation du résultat s'effectue dans une fenêtre graphique (avec possibilite de zoom, de rotation, d'impression).

Exemple de representation graphique en dimension deux • Les courbes dans le plan Les surfaces

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

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

• Les points peuvent être matérialises par le symbole p prenant les valeurs suivants : o : + Les couleurs sont repères par leur initiale en anglais : (red),( blue), (black), (white), (yellow), (magenta),(green)

• On peut rajouter un titre à la figure avec la commande title

• On peut représenter plusieurs courbes sur la même figure de plusieurs manières : d'abord par un seul appel à la fonction plot

title('sin(x) sur l''intervalle [0,pi]')

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(2/3)

Principales instructions graphiques

7. LES GRAPHIQUES(3/3)

Applications

• Résolution de l’équation différentielle :

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

8. EDP(1/6)

8. EDP(2/6)

• Problèmes elliptiques

==−−=−

= 0)1()0(

[1,0]sur)sin()sin()()(")(

2

yyxxxyxy

Pπππ

• Analyse du problème : On cherche à déterminer y définie sur ]0,1[ Discrétisation : xi+1 – xi = h avec h=1/n

xi = i h + x0 = i h

x0 x1 xi xi+1 xn

8. EDP(3/6)

Le problème discrétisé

==−−=

=−

= 0

)sin()sin()(

)()()("

)(

0

2

n

iii

iii

yyxxxg

xgxyxyPapp πππ

9. EDP(4/6)

==

−==−+−

=

+−≈

−+

−+

0

1,...,12)(

2)("

0

211

211

n

iiiii

iiii

yy

nigyh

yyyPapp

hyyyxy

9. EDP(5/6)

=

=

+−

+−

+−

+−

=

=⇒=

==−==++−

=

−−

−+

1

3

2

1

1

3

2

1

2

2

2

2

0

21

21

....,

....,

)2(1....................0.........................................0.....01)2(10

0..01)2(10...001)2(

/ematriciell forme sous0

1,...,1)2()(

nn

n

iiii

y

yyy

Y

g

ggg

b

h

hh

h

A

bAYbAY

yynighyhyy

Papp

9. EDP(6/6)