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 tempst 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 s2x 2
2
Ti 1 si 1x
0 Ti six 2
2
Ti 1 si 1x
2
1 Tn snx
1 Tn 1 1
C.L. en x=1
Ti1 2Ti Ti1 six2
Schéma