Matlab (Matrix Laboratory)

Download Report

Transcript Matlab (Matrix Laboratory)

Matlab (Matrix Laboratory)
• Langage de programmation évolué.
• Traitement direct d’opérations matricielles,
dont l’inversion et l’analyse d’opérateurs
ou la résolution de systèmes linéaires.
• Environnement pour la programmation et
la recherche de « bugs », facilité
d’observation des résultats.
… Quelques commandes de bases, pour plus complexe, voir l’aide du logiciel.
manipulation de vecteurs et de
matrices
• A = [1 2 3 ; 4 5 6 ; 7 8 9] correspond à:
123
456
789
• Si une commande se termine par un ; le résultat n'est pas affiché
dans le fenêtre de commande.
• x=d:i:f : vecteur ligne x contenant les nombres allant de d à f par
incrément de i.
• A(1:5,7:10) : sous-matrice 5x4 contenant les éléments des cinq
premières lignes et de quatre colonnes de la matrice A(m≥ 5,n≥10).
• zeros(m,n), eye(m,n), rand(m,n): matrice zéro, matrice identité et
matrice contenant des éléments aléatoires.
• size(A), length(A): dimension de la matrice A
Commandes de contrôle
• clear vidange de la mémoire
• save sauvegarde les données en mémoire
dans le fichier matlab.mat
• load recharge les données sauvegardées
dans matlab.mat en mémoire
Pour apprendre ce que je
n’évoquerai pas…
• en naviguant dans les menus … aide
• helpwin -> fenêtre d’aide
• Dans la fenêtre :
- guide de l’utilisateur
- index des commandes
- recherche de commandes
- programmes de démonstration
Opérations de base sur des réels
• +,-,*,/
• cos, exp, log, log10, …
• test de l’interface :
2*2
donne la réponse 4 à l’écran
a=2*2 assigne la réponse 4 à a… et l’écrit
a=2*2; fait la même chose sans rien écrire en
réponse.
who : liste les variables ayant été créées
whos : aussi en donnant plus de détails
La liste des variables est accessible dans la fenêtre
workspace
Suppression des variables créées : clear
Création d’un vecteur colonne :
x=1:5
y=0:2:10
z=0:0,1:2*pi
Création d’un vecteur ligne :
x=linspace(0,1,10) … de 0 à 1 avec 10 points équirépartis
Tracé d’une fonction :
x = 0:.1:2*pi;
y = sin(x);
plot(x,y)
vecteur des abscisses
vecteur des ordonnées
Tracé de la fonction y=f(x)
Création de matrice :
a = [1 2 3;4 5 6;7 8 9]
matlab répond par
a=
123
456
789
Contenu dans des
crochets [ ]
Le ; passe à la ligne
Concaténation de matrices :
>> b = [a 10*a;-a [1 0 0;0 1 0;0 0 1]]
b=
1 2 3 10 20 30
4 5 6 40 50 60
7 8 9 70 80 90
-1 -2 -3 1 0 0
-4 -5 -6 0 1 0
-7 -8 -9 0 0 1
zeros : matrice remplie de zéros
ones : matrice remplie de 1
rand : matrice aléatoire entre 0 et 1
randn : matrice aléatoire en distribution normale
eye : matrice identité
Ecriture : z= zeros (nlignes, ncolonnes)
u = rand(1,5)
n = randn(5,5)
u(3) :
u([1 2 3]) , u(1:3)
i=1:3, u(i)
troisième élément de u
trois premiers éléments de u
Même opération pour les matrices :
>> a = [1 2 3;4 5 6;7 8 9]
a=
123
456
789
>> a(3,2)
ans =
8
>> a(2:3,3)
ans =
6
9
>> a(2,:)
ans =
456
>> a(:,3)
ans =
3
6
9
Tester a(4) :
Matlab compte les indices
par colonnes successives.
Tester a(:):
Indice « end »
>> q = 4:10
q=
4 5 6 7 8 9 10
>> q(end)
ans =
10
>> q(end-4:end)
ans =
6 7 8 9 10
>> q(end-2:end)
ans =
8 9 10
This
indice « end »
pour les
matrices
>> q = [spiral(3) [10;20;30]]
q=
7 8 9 10
6 1 2 20
5 4 3 30
>> q(end,end)
ans =
30
>> q(2,end-1:end)
ans =
2 20
>> q(end-2:end,end-1:end)
ans =
9 10
2 20
3 30
>> q(end-1,:)
ans =
Détruire une ligne ou une colonne de matrice :
>> a = [1 2 3;4 5 6;7 8 9]
a=
123
456
789
>> a(:,2) = []
a=
13
46
79
Opérations matricielles
• A': matrice transposée de A
• +,-,*: addition, soustraction et multiplication de
matrices
• A^n: A à la puissance n
• /,\: « division de matrices »:
X=A\B est une solution de A*X=B
X=B/A est une solution de X*A=B
• inv(A): inverse la matrice A
• det(A): déterminant de la matrice A
• trace (A): trace de la matrice A.
Opérations élément par élément
• .+, .-, ./, .\, .*, .^: addition, soustraction,
divisions, multiplication, exponentiation
élément par élément
• Les autres fonctions (racine,
exponentielle,..) sont appelées par les
commandes utilisées dans la plupart des
languages informatiques.
analyse de données
• max(A), min(A) : plus grand et plus petit
élément de chaque colonne de la matrice
A.
• sum(A), prod(A), std(A): somme, produit et
déviation standard des éléments de
chaque colonne de la matrice A.
fonctions matricielles
• [L,U]=lu(A): factorisation de la matrice A en
matrices triangulaires L et U.
• [U,S,V]=svd(A): trois facteurs de la
décomposition en valeurs singulières: A=U*S*V',
où les éléments diagonaux de S sont les valeurs
singulières.
• rank(A), cond(A): rang et condition de la matrice
A
• eig(A): vecteur colonne contenant les valeurs
propres de la matrice A (possibilité d’obtenir les
vecteurs propres par la même commande).
structures de contrôle
• if condition... instructions ... end
branchement
• for index=début:incrément:fin...
instructions ... end
boucle
• fwhile condition... instructions ... end
boucle conditionnelle
Appel à fonctions
Appel par le programme principal :
… de la fonction « lagrange » dont
voici le script (fichier lagrange.m).
- inter est la sortie de la fonction
(plusieurs sorties possibles)
-fxp,xp,x,n sont des variables
d’entrée
fpextra=lagrange(fxp,xp,xpextra(i),n)
function [inter] =lagrange(fxp,xp,x,n)
work=0;
for i=1:n+1
prod=1;
for j=1:n+1
if (~(j==i))
prod=prod*(x-xp(j))/(xp(i)-xp(j));
end
end
work=work+fxp(i)*prod;
end
inter=work;
end
Affichages graphiques
• plot: graphe x,y
• mesh: surface en trois dimension
• contour: graphe sous forme de carte à lignes de
niveaux
• surf: tracé 3D d’un champ
• …..y’en a plein, voir la rubrique d’aide
• figure(2), figure(3) : création de nouvelles
figures.
• hold on : permet de continuer à tracer ou écrire
sur une figure sans l’effacer.
• close(2), close(3) : fermeture des figures.
Quelques exemples de tracés…
Programme de tir balistique :


 X


g
t rait éeen réduisant l' ordre différent el,
i par composant se
2
dt
n 1
n
 z n 1  z n

x

x
 z
 x
n
n

v

v

v

v
z 
x
z 
x

 t
 δt

t
δ
t
,
  n 1 n
,  n 1 n
 v

v
 z  g  x  0
 vz  vz   g  vx  vx  0
 t

 t
 t
t
2
z n 1 est la valeur de z préditeau tempst n  (n  1)t
On part de z1  5, x1  0, v1x  2, v1z  2. Calculer les valeursde la position
et de la vitesseaux tempssuivants,sur un tempstotalTtot avec
un pas de tempst que vousdéfinirez,en ut ilisant une boucle for ou while
St ockerces valeursdans des vecteursx (n ), z (n ),...
- Tracer la trajectoire de la particule (X,Y). Placer X en abscisse et Y en ordonnée,
et écrire « Trajectoire » en titre de la figure.
- Tracer la norme de la vitesse en fonction du temps. Placer « t » en abscisse et
« ||v|| » en ordonnée.
- Effectuer les opérations d’habillage de la figure directement grâce à l’interface
graphique de matlab, puis en les programmant dans le code source.
Diffusion stationnaire 1D
0
1
x
Maillage xi  (i  1)x, i  1...N  1, x  1 / N
T (0)  0
T1  0
 2
 T  2T  T
 T
i 1
i
i 1
 S ( xi ) pour i  2, N
 2  S ( x)  
2
x
 t

TN 1  1
T (1)  1
- Choisir une source S arbitraire
- Ecrire le système d’équations comme un système linéaire AT=b, avec T le vecteur
colonne solution et b le vecteur colonne second membre.
- Programmer sous matlab les matrices A et le vecteur b.
- En déduire T et le tracer en fonction de x.
- Calculer le spectre de la matrice A et le tracer.
Ligne 1
i
T1  0 C.L. en x=0
.
.
.
.
.
.
1 0
1  2 1 0
.
.
.
.

  


  

0 ... 0 1  2 1 0 ...

  


  

.
.
.
0 1 2
0 .
0 .
.
.
.
.
.
0
Ligne n
Ligne i
Tn 1  1
0  T1   0 
0  T2   s2x 2 
  

     
  
2
  Ti 1   si 1x 
0  Ti    six 2 
  
2
  Ti 1   si 1x 
     
  
2 
1  Tn   snx 
1 Tn 1   1 
C.L. en x=1
Ti1  2Ti  Ti1  six2
Schéma