Upload
hamzahariate
View
36
Download
2
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)
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)
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)
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)
• 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)