21
TP Informatique 3 INITIATION A MATLAB But de TP : Le but de ce TP est de s’initier au programme de calcule numérique MATLAB. Contenu du TP : Definition de MATLAB Presentation de l’environnement de travail de MATLAB Fichier, script et type des donnees et de variables. Lecture , affichage et sauvegarde des donnees. Vecteurs et matrices.

INITIATION A MATLAB - assemchelli.com A MATLAB - Bouira univ... · Matlab est un logiciel de calcul numérique produit par MathWorks, utilisé dans de nombreux domaines d’application

Embed Size (px)

Citation preview

Page 1: INITIATION A MATLAB - assemchelli.com A MATLAB - Bouira univ... · Matlab est un logiciel de calcul numérique produit par MathWorks, utilisé dans de nombreux domaines d’application

TP Informatique 3

INITIATION A MATLAB

But de TP :

Le but de ce TP est de s’initier au programme de calcule numérique MATLAB.

Contenu du TP :

Definition de MATLAB Presentation de l’environnement de travail de MATLAB Fichier, script et type des donnees et de variables. Lecture , affichage et sauvegarde des donnees. Vecteurs et matrices.

Page 2: INITIATION A MATLAB - assemchelli.com A MATLAB - Bouira univ... · Matlab est un logiciel de calcul numérique produit par MathWorks, utilisé dans de nombreux domaines d’application

Définition de MATLABMatlab est un logiciel de calcul numérique produit par MathWorks, utilisé dans denombreux domaines d’application. Il se fonde sur le calcul matriciel. Matlab est d’ailleurs unraccourci pour “Matrix Laboratory”.

Matlab est un puissant outil de calcul numérique et visualisation. Son nom signifie matrixlaboratory, c’est à dire un environnement interactif de travail avec des matrices. La facilitéde développement des applications dans son langage fait qu’il est pratiquement devenu lestandard dans son domaine.Actuellement, on trouve des nombreuses boîtes à outils (Toolboxes) qui contiennent desfonctions spécialisées permettant d’utiliser l’environnement Matlab pour résoudre desclasses spécifiques deproblèmes.

Page 3: INITIATION A MATLAB - assemchelli.com A MATLAB - Bouira univ... · Matlab est un logiciel de calcul numérique produit par MathWorks, utilisé dans de nombreux domaines d’application

Commandes d’ordre généralhelp permet de donner l’aide sur un problème donné.whoet whos: listent les variables utilisées dans l’espace courant.

exist : check si une fonction ou une variable existe dans le workspacewhat: liste les fichiers .m et .mat dans le répertoire utilisé.ans:dernière réponse retournée après exécution d’une commande.clock: affiche l’année, le mois, le jour, l’heure, les minutes et les secondes.date: affiche la date.clear: efface toutes les variables existant en mémoire.clc: efface l’écran (fenêtre) de MATLAB.

quit : quitter la session de MATLAB.Aspects élémentaires1.1 Aideshelp-> donne de l’aide sur une fonction ou un toolkit (help help)helpdesk-> documentation en hypertexte (requiert Netscape ou autre)helpwin-> aide en ligne dans une fenêtre séparéelookfor-> recherche d’un mot clé (lent)which-> localise fonctions et fichiers

1.2 Variables scalaires, workspace, opérations élémentaires

Page 4: INITIATION A MATLAB - assemchelli.com A MATLAB - Bouira univ... · Matlab est un logiciel de calcul numérique produit par MathWorks, utilisé dans de nombreux domaines d’application

>> var=2var = 2

>>autre=3;

>>who% fournit la liste des fonctions définies dans le workspaceYour variables are:autre var

>>whos% donne plus d'informations que who Sous Windows, vous avez accès au“Workspace browser” dans la barre d’outils.

>>clearautre

>>whoYour variables are:var

>>clear% efface toutes les variables du workspace Opérations élémentaires:+ - * / or \ ^

>> 4/2ans =2

>> 2\4ans =2

1.3 Commentaires, ponctuation>> s=2+3 % je fais une sommes = 5

>>cout_moyen = cout ...% commande sur deux lignes/ nombre;

1. 4 Variables spéciales / Constants

pi 3.1415926535897

Page 5: INITIATION A MATLAB - assemchelli.com A MATLAB - Bouira univ... · Matlab est un logiciel de calcul numérique produit par MathWorks, utilisé dans de nombreux domaines d’application

i i 2 = - 1j j 2 = - 1eps précision numérique relativerealmin plus petit nombre à virgule flottante manipulablerealmax plus grand nombre à virgule flottante manipulableinf infini. Est obtenu quand on essaie d'évaluer une expression dont le résultat

excède realmaxNaN not-a-number. Est obtenu quand on essaie d'effectuer une opération non-

définie comme 0/0

>>pi% π

ans =

3.14

>>inf * 1 % l'infini

ans =

Inf

>> 0/0 %indefini

ans =

NaN

>>i % i^2 = -1ans =

I

>>j % j^2 = -1 , i == jans =

i

>>epsans =2.2204e-16

>>realmaxans =1.7977e+308>>realmin

Page 6: INITIATION A MATLAB - assemchelli.com A MATLAB - Bouira univ... · Matlab est un logiciel de calcul numérique produit par MathWorks, utilisé dans de nombreux domaines d’application

ans =2.2251e-308

1.5 Nombres complexes>> a = 3+5i ;>> b = 5+3j ; % j == i>> c= 1-2ic =1.0000 - 2.0000i>> d = 3*(2-sqrt(-1)*3)d =6.0000 - 9.0000i

real(a) :partie réelle de a imag(a) :partie imaginaire de a abs(a) :module de a si a est complexe, valeur absolue si a est réel angle(a) :argument de a

1.6 Fonctions mathématiquesLes fonctions trigonométriques et hyperboliques sont:sin,cos, tan :Sinus, Cosinus, Tangentesinh,cosh, tanh :Hyperbolic Sine, Hyperbolic Cosine, Hyperbolic Tangent.asin,acos,atan: fonction réciproque de Sinus, Cosinus, Tangente…etc.Sind ,cosd , tand : Sinus, Cosinus, Tangente en dégrées.

Les fonctions mathématiques incorporées sont:exp(x) : exponentielle de xLog(x) : logarithme népérien de x, ln(x)log10(x) :logarithme décimal de x

sqrt(x) : racine carrée de xabs(x):valeur absolue de x,sign(x):fonction valant 1 si x est positif ou nul et 0 sinon.mod (a ,b) : modulo de devision entier de a sur b.

Les fonctions d'arrondis sont:round(x): entier le plus proche de x,floor(x): arrondi par défaut,ceil(x) : arrondi par excès,fix(x) : arrondi par défaut un réel positif et par excès un réel négatif.

Page 7: INITIATION A MATLAB - assemchelli.com A MATLAB - Bouira univ... · Matlab est un logiciel de calcul numérique produit par MathWorks, utilisé dans de nombreux domaines d’application

factor(x): les facteurs premiers d’un nombre xisprime(x) : vérifier si un nombre x est un nombre premierprimes(x): lister tous les nombres premiers inférieur à xgcd(x) : le PGCD de xlcm(x): le PPCM de xnchoosek(N , k) : nombre de combinaisons différentes de N éléments pris k à k

1.7 AffichageFORMAT Set output format.

All computations in MATLAB are done in double precision. FORMAT may be used to switchbetween different output display formats as follows:

FORMAT SHORT (default) Scaled fixed point format with 5 digits. FORMAT LONG Scaled fixed point format with 15 digits. FORMAT SHORT G Best of fixed or floating point format with 5 digits. FORMAT LONG G Best of fixed or floating point format with 15 digits.

Examples:>> pians =3.1416

>>format long g

>>pians =3.14159265358979

1.8 Entrées-sortiesDeux commandes utiles pour gérer le workspace, dont la taille dépend de votre espace deswap:>>save % écrit toutes les variables du workspace dans le fichier matlab.mat>>load % charge dans le workspace toutes les variables du fichier matlab.mat Entrées-sortiessur des fichiers disques:

>> N = input( ’Nombre de boucles désirées >’); % entrée interactive>>disp(N) % affiche la valeur de N

Page 8: INITIATION A MATLAB - assemchelli.com A MATLAB - Bouira univ... · Matlab est un logiciel de calcul numérique produit par MathWorks, utilisé dans de nombreux domaines d’application

Vecteurs2.1 Création de vecteurs

Par défaut, le vecteur est une ligne à plusieurs colonnesa) vecteur ligne par énumération des composantes:>> v = [1 3.4 5 -6]v =1.0000 3.4000 5.0000 -6.0000

b) vecteur ligne par description:>> x = [0 : pi/10 : pi] % [valeur-initiale : incrément : valeur-finale]x =0 0.3142 0.6283 0.9425 1.2566 1.5708 1.8850 2.1991 2.5133 2.8274 3.1416

c) vecteur colonne:>>xcol = x’xcol =00.28560.57120.85681.14241.42801.71361.99922.28482.57042.85603.1416

d) génération de vecteurs métriques>> x = linspace(0, pi, 11) % génère le même x que ci-dessus (11 valeurs. réparties de 0 à pi)x =0 0.3142 0.6283 0.9425 1.2566 1.5708 1.8850 2.1991 2.5133 2.8274 3.1416

>>logspace(0, 2, 11) % crée un vecteur log à 11 composantes entre 100 et 10 2ans =1.0000 1.5849 2.5119 3.9811 6.3096 10.0000 15.848925.1189 39.8107 63.0957 100.0000

Page 9: INITIATION A MATLAB - assemchelli.com A MATLAB - Bouira univ... · Matlab est un logiciel de calcul numérique produit par MathWorks, utilisé dans de nombreux domaines d’application

2.2 Adressages et indexages>> x(3) % 3ème élément du vecteur xans =0.5712

>>x(2 : 4) % un bloc de composantesans =0.2856 0.5712 0.8568

>>x([8 3 9 1]) % une sélection de composantes (on les désigne avec un autrevecteur!)ans =1.9992 0.5712 2.2848 0

2.3 Combinaison de vecteurs>> a = [1:3]a =1 2 3

>> b=[10:10:30]b =10 20 30

>> c = [a b]c =1 2 3 10 20 30

On peut faire plus compliqué:>> d=[a(2:-1:1) b] % on accole b avec une portion de a dans l’ordre renverséd =2 1 10 20 30

Notez la différence entre () et [] :

Page 10: INITIATION A MATLAB - assemchelli.com A MATLAB - Bouira univ... · Matlab est un logiciel de calcul numérique produit par MathWorks, utilisé dans de nombreux domaines d’application

2.3Fonctions sur les vecteurs

sum(x) : somme des éléments du vecteur x,prod(x) : produit des éléments du vecteur x,max(x) : plus grand élément du vecteur x,min(x) : plus petit élément du vecteur x,mean(x) : moyenne des éléments du vecteur x,sort(x) : ordonne les éléments du vecteur x par ordre croissant,fliplr(x) : échange la position des éléments du vecteur x.

Page 11: INITIATION A MATLAB - assemchelli.com A MATLAB - Bouira univ... · Matlab est un logiciel de calcul numérique produit par MathWorks, utilisé dans de nombreux domaines d’application

Matrices3.1 Création de matrices

Un matrice est un ensemble de lignes comportant toutes le même nombre de colonnesMatlab, depuis la version 5, supporte les matrices à n dimensions (n>2)a) Par énumération des éléments>> m1 = [ 1 2 3 ; 4 5 6 ; 7 8 9] % on sépare les lignes par des point-virgulesm1 =1 2 34 5 67 8 9

On peut étendre aux matrices les autres manières de définir des vecteurs. Par exemple:>> m2 = [1:1:3 ; 11:1:13]m2 =1 2 311 12 13

>> m3 = [1:1:3 ; logspace(0, 1, 3)]m3 =1.0000 2.0000 3.00001.0000 3.1623 10.0000

3.2 TranspositionL’opérateur apostrophe utilisé pour créer un vecteur colonne est en fait l’opérateurtransposition:>> m2’ans =1 112 123 13

3.3 Opérations scalaires-matricesUne telle opération agit sur chaque élément de la matrice:>> m2’ * 10 % de même: 4*m2 m2-10 m2/4ans =10 11020 12030 130

Une exception:>> m2^2

Page 12: INITIATION A MATLAB - assemchelli.com A MATLAB - Bouira univ... · Matlab est un logiciel de calcul numérique produit par MathWorks, utilisé dans de nombreux domaines d’application

??? Errorusing ==> ^Matrix must be square.

Dans ce cas, Matlab veut calculer le produit matriciel m2 * m2 .La solution est l’usage dupoint qui force l’opération sur chaque élément:>>m2 .^ 2ans =

1 4 9121 144 169

3.4 Opérations entre matricesa) Multiplications>> m1 % rappelons la définition de m1m1 =1 2 34 5 67 8 9

>>m2 % rappelons la définition de m2m2 =1 2 311 12 13>> m1 * m2’ % le produit matriciel n’est possible que lorsque les dimensionssont cohérentesans =14 7432 18250 290>> m1 * m2??? Errorusing ==> *Inner matrix dimensions must agree.

Multiplication élément par élément:>>m2 .*m3 % (m2 et m3 ont les mêmes dimensions)ans =1.0000 4.0000 9.000011.0000 37.9473 130.0000

b) Divisions>> m2/m3 % division matricielle à droiteans =

Page 13: INITIATION A MATLAB - assemchelli.com A MATLAB - Bouira univ... · Matlab est un logiciel de calcul numérique produit par MathWorks, utilisé dans de nombreux domaines d’application

1.0000 -0.00009.5406 -1.5960

>>m2\m3% division matricielle à gauche (cf algèbre linéaire!)ans =-0.5000 -0.8257 -0.45000 0 00.5000 0.9419 1.1500

Division élément par élément:>> m2./m3 % chaque élément de m2 est divisé par l’élément équivalent de m3ans =1.0000 1.0000 1.000011.0000 3.7947 1.3000>> m2 .\ m3 % chaque élément de m3 est divisé par l’élément équivalent m2ans =1.0000 1.0000 1.00000.0909 0.2635 0.7692

>> m3./m2 % chaque élément de m3 est divisé par l’élément équivalent m2ans =1.0000 1.0000 1.00000.0909 0.2635 0.7692

3.5 Matrices particulières>>ones(3)ans =1 1 11 1 11 1 1

>>zeros(2,5)ans =0 0 0 0 00 0 0 0 0

>>eye(4) % aussi: eye(2,4)ans =1 0 0 00 1 0 0

Page 14: INITIATION A MATLAB - assemchelli.com A MATLAB - Bouira univ... · Matlab est un logiciel de calcul numérique produit par MathWorks, utilisé dans de nombreux domaines d’application

0 0 1 00 0 0 1

>>diag([1 : 4])ans =1 0 0 00 2 0 00 0 3 00 0 0 4

>>rand(1,7) % nombres aléatoires entre 0 et 1ans =0.9355 0.9169 0.4103 0.8936 0.0579 0.3529 0.8132

>>ceil(10* rand(3,3)) % nombres aléatoires entières entre 1 et 10ans =8 5 1

2 9 5

6 5 10

3.6 Caractéristiques des matrices>>size(m3) % dimensionsans =2 3

>>length(m3) % equivalent à max(size(m3)) : dimension maximumans =3

>>rank (m3) %rang (nombre de colonnes ou lignes linéairement indépendantes)ans =1

3.7 Manipulations de matrices et sous-matricesa) Access aux éléments d’une matrice

>>a(1)% premier element

Page 15: INITIATION A MATLAB - assemchelli.com A MATLAB - Bouira univ... · Matlab est un logiciel de calcul numérique produit par MathWorks, utilisé dans de nombreux domaines d’application

>>a(1,1)% element dans la première ligne ,la première colonne

>>a(2,2) = 4

>>a(:, 1)% la première colonne

>>a(1, :)% la premièreligne

>>a(1, 2 : 3)

>>a([1 2] , [2, 4])

b) Fonctions de manipulation des matrices:>> A = [1 2 3 ; 4 5 6 ; 7 8 9 ]A =1 2 34 5 67 8 9

>>flipud(A) % flip up-downans =7 8 94 5 61 2 3

>>fliplr(A) % flip left-rightans =3 2 16 5 49 8 7

>>rot90(A,2) %2 rotations de 90 degres (sens trigo)ans =9 8 76 5 43 2 1

>>reshape(A,1,9) % change la forme de la matriceans =1 4 7 2 5 8 3 6 9

Page 16: INITIATION A MATLAB - assemchelli.com A MATLAB - Bouira univ... · Matlab est un logiciel de calcul numérique produit par MathWorks, utilisé dans de nombreux domaines d’application

>>diag(A) % extrait la diagonale de Aans =159

>>diag (ans) % diag travaille dans les 2 sens !ans =1 0 00 5 00 0 9

>>triu(A) % extrait le triangle supérieur de Aans =1 2 30 5 60 0 9

>>tril(A) % triangle inférieurans =1 0 04 5 07 8 9

c)Exercice- Définissez A une matrice 3x3

>>A = ceil(rand(3)*10)

- Mettez à zéro l’élément (3,3)

>>A(3, 3) = 0

- Changez la valeur de l’élément dans la 2ème ligne, 6ème colonne, que se passe-t-il?

>>A(2, 6) = 13

- Mettez tous les éléments de la 4ème colonne à 4

>>A( :, 4) = 4

Page 17: INITIATION A MATLAB - assemchelli.com A MATLAB - Bouira univ... · Matlab est un logiciel de calcul numérique produit par MathWorks, utilisé dans de nombreux domaines d’application

- Créez B en prenant les lignes de A en sens inverse

>>B= flipud(A)

ou

>> B=A( 3 :-1 :1, :)

- Créer C en accolant toutes les lignes de la première et troisième colonne de B à la droite deA

>>C = [ A B( :, [1 3])]

- Créer D sous-matrice de A faite des deux premières lignes et les deux dernières colonnes de

A. Trouvez aussi une manière de faire qui ne dépende pas de la taille de A.

>>D = A([1 2] , [5 6])

3.8 Fonctions sur les matrices

Les fonctions matricielles les plus courantes sont:

det(A) renvoie le déterminant de la matrice carrée A.eig(A) renvoie les valeurs propres (eigenvalues) de la matrice carrée A. Si l'on souhaite

également les vecteurs propres on exécutera [V,D] = eig(A) qui renvoie unematrice diagonale D formée des valeurs propres de A et une matrice V dont lesvecteurs colonnes sont les vecteurs propres correspondant.

poly(A) renvoie les coefficients du polynôme caractéristique associé à la matricecarrée A. On sera vigilant à l'ordre dans lequel sont rangés les coefficients: lepremier élément du vecteur est le coefficient du monôme de plus haut degré.Ainsi dans l'exemple suivant il faut lire p(x) = x3 - 6 x2 - 72 x -27 ,>> A = [1 2 3 ; 4 5 6 ; 7 8 0]; p = poly(A)p =

1 -6 -72 -27inv(A) renvoie l'inverse de la matrice carrée A.rank(A) renvoie le rang de la matrice carrée A.trace(A) renvoie la trace de la matrice A.expm(A) renvoie l'exponentielle matricielle de A.

Page 18: INITIATION A MATLAB - assemchelli.com A MATLAB - Bouira univ... · Matlab est un logiciel de calcul numérique produit par MathWorks, utilisé dans de nombreux domaines d’application

3.9 Matrices clairseméesLorsque seulement quelques éléments d’une matrice sont non-nuls, on peut la définir

comme une sparse matrix. Sa description contient seulement les éléments non nuls.

>>A_normal = [0 1 0 ; 1 0 0; 0 0 1] % matrice normale

A_normal = 0 1 0 1 0 0 0 0 1

>>A_sparse = sparse(A_normal) % matrice clairsemée

A_sparse = (2,1) 1 (1,2) 1 (3,3) 1sparsepeut aussi être utilisé pour créer directement une matrice clairsemée:

>> S = sparse([2 1 3 4], [1 2 3 1], [4 5 6 7], 4, 3)S =(2,1) 4(4,1) 7(1,2) 5(3,3) 6

Le gain de place dans le workspace est d’autant plus significatif que la matrice est grande(on utilise bucky, une matrice clairsemée prédéfinie):>>clear>>B_sparse = bucky;% matrice clairsemée>>B_full = full(B_sparse); % matrice complète>>whosName Size Bytes ClassB_sparse 60x60 28800 double arrayB_full 60x60 2404 sparsearrayfull a convertit la matrice clairsemée en matrice complète.

Page 19: INITIATION A MATLAB - assemchelli.com A MATLAB - Bouira univ... · Matlab est un logiciel de calcul numérique produit par MathWorks, utilisé dans de nombreux domaines d’application
Page 20: INITIATION A MATLAB - assemchelli.com A MATLAB - Bouira univ... · Matlab est un logiciel de calcul numérique produit par MathWorks, utilisé dans de nombreux domaines d’application

Instructions du contrôle

Page 21: INITIATION A MATLAB - assemchelli.com A MATLAB - Bouira univ... · Matlab est un logiciel de calcul numérique produit par MathWorks, utilisé dans de nombreux domaines d’application