11
Introduction à Matlab MASTER OIV Emmanuel Marin - F 155 [email protected] Année universitaire 2004 – 2005 Université Jean Monnet Saint-Étienne Introduction à Matlab Master OIV - 2 Table des matières 1. Introduction ______________________________________________________________ 3 2. Démarrer et quitter MATLAB _______________________________________________ 3 3. Matrices et MATLAB ______________________________________________________ 4 3-1. Génération de vecteurs et de sous-matrices ___________________________________________5 3-2. Sous-ensemble d’une matrice : ____________________________________________________5 3-3. Grandeur, norme ou dimension et longueur___________________________________________5 4. Variables prédéfinies _______________________________________________________ 5 4-1. Liste des variables : _____________________________________________________________6 5. Opérateurs arithmétiques ___________________________________________________ 6 6. Fonctions mathématiques ___________________________________________________ 6 6-1. Fonctions mathématiques spéciales _________________________________________________7 6-2. Fonctions applicables aux nombres complexes ________________________________________7 6-3. Changements de coordonnées _____________________________________________________7 7. Aide _____________________________________________________________________ 7 8. Sauvegarde et chargement___________________________________________________ 8 9. Commandes système _______________________________________________________ 9 10. Opérations matricielles ___________________________________________________ 9 11. Opérateurs booléens et logiques ___________________________________________ 10 11-1. Opérateurs relationnels__________________________________________________________10 11-2. Opérateurs logiques ____________________________________________________________10 11-3. Opérateurs Scalaires____________________________________________________________11 12. Matrices particulières ___________________________________________________ 11 13. Chaînes de caractères ___________________________________________________ 12 14. Analyse de données _____________________________________________________ 13 14-1. Sommes produits et différences ___________________________________________________13 14-2. Statistiques ___________________________________________________________________14 15. Systèmes linéaires et calcul matriciel _______________________________________ 14 15-1. Déterminant, inverse et rang d’uns système _________________________________________14 15-2. Résolution des systèmes linéaires et factorisation LU__________________________________14 15-3. Valeurs propres et vecteurs propres ________________________________________________14 16. Représentations graphiques ______________________________________________ 14 16-1. Graphiques à deux dimensions____________________________________________________15 16-2. Autres systèmes de coordonnées __________________________________________________15 16-3. Contrôle du graphique __________________________________________________________15 16-4. Graphiques à trois dimensions ____________________________________________________16 17. Analyse des fonctions ____________________________________________________ 16 18. Calcul intégral et E.D.O. _________________________________________________ 17 19. Programmation avec MATLAB ___________________________________________ 18 19-1. Instructions conditionnelles ______________________________________________________18 19-2. Boucles______________________________________________________________________18 20. Interfaces graphiques ___________________________________________________ 19 21. Fichiers .m et exemples __________________________________________________ 19

Introduction à Matlab - dossier.univ-st-etienne.fr · Université Jean Monnet Saint-Étienne Introduction à Matlab Master OIV - 5 1 4 2 5 3 6 3-1. Génération de vecteurs et de

Embed Size (px)

Citation preview

Introduction à Matlab

MASTER OIV Emmanuel Marin - F 155

[email protected]

Année universitaire 2004 – 2005

Université Jean Monnet Saint-Étienne Introduction à Matlab

Master OIV - 2

Table des matières 1. Introduction ______________________________________________________________ 3 2. Démarrer et quitter MATLAB _______________________________________________ 3 3. Matrices et MATLAB ______________________________________________________ 4

3-1. Génération de vecteurs et de sous-matrices ___________________________________________5 3-2. Sous-ensemble d’une matrice : ____________________________________________________5 3-3. Grandeur, norme ou dimension et longueur___________________________________________5

4. Variables prédéfinies _______________________________________________________ 5 4-1. Liste des variables : _____________________________________________________________6

5. Opérateurs arithmétiques ___________________________________________________ 6 6. Fonctions mathématiques ___________________________________________________ 6

6-1. Fonctions mathématiques spéciales _________________________________________________7 6-2. Fonctions applicables aux nombres complexes ________________________________________7 6-3. Changements de coordonnées _____________________________________________________7

7. Aide _____________________________________________________________________ 7 8. Sauvegarde et chargement___________________________________________________ 8 9. Commandes système _______________________________________________________ 9 10. Opérations matricielles ___________________________________________________ 9 11. Opérateurs booléens et logiques ___________________________________________ 10

11-1. Opérateurs relationnels__________________________________________________________10 11-2. Opérateurs logiques ____________________________________________________________10 11-3. Opérateurs Scalaires____________________________________________________________11

12. Matrices particulières ___________________________________________________ 11 13. Chaînes de caractères ___________________________________________________ 12 14. Analyse de données _____________________________________________________ 13

14-1. Sommes produits et différences ___________________________________________________13 14-2. Statistiques ___________________________________________________________________14

15. Systèmes linéaires et calcul matriciel _______________________________________ 14 15-1. Déterminant, inverse et rang d’uns système _________________________________________14 15-2. Résolution des systèmes linéaires et factorisation LU__________________________________14 15-3. Valeurs propres et vecteurs propres ________________________________________________14

16. Représentations graphiques ______________________________________________ 14 16-1. Graphiques à deux dimensions____________________________________________________15 16-2. Autres systèmes de coordonnées __________________________________________________15 16-3. Contrôle du graphique __________________________________________________________15 16-4. Graphiques à trois dimensions ____________________________________________________16

17. Analyse des fonctions____________________________________________________ 16 18. Calcul intégral et E.D.O. _________________________________________________ 17 19. Programmation avec MATLAB ___________________________________________ 18

19-1. Instructions conditionnelles ______________________________________________________18 19-2. Boucles ______________________________________________________________________18

20. Interfaces graphiques ___________________________________________________ 19 21. Fichiers .m et exemples __________________________________________________ 19

Université Jean Monnet Saint-Étienne Introduction à Matlab

Master OIV - 3

1. Introduction De nombreux logiciels interactifs de calcul scientifique existent et sont disponibles sur le marché. Parmi ceux-ci, MATLAB1 est un produit très intéressant pour développer des calculs numériques. Il intègre un environnement graphique et ses atouts principaux sont :

La surprenante simplicité d’utilisation provenant de la vectorisation,

La puissance de calcul, La précision des résultats.

MATLAB est un outil de base enrichi par ses nombreuses bibliothèques (”toolboxes”) qui évitent, dans de nombreux cas, de programmer les techniques numériques les plus courantes. Cependant pour les développements spécifiques, il offre les mêmes possibilités de programmation structurée que les langages scientifiques courants (C, FORTRAN...). Ecrit en langage C optimisé, le code de MATLAB comporte également des blocs spécifiques écrits en langage assembleur pour obtenir des performances améliorées. La disponibilité de MATLAB est remarquable puisqu’il peut être exécuté sur n’importe quel type d’ordinateur utilisé par les scientifiques : PC, Macintosh, Station de travail, gros ordinateurs sous UNIX, etc ... Les possibilités de ce logiciel sont considérables et dans une introduction à MATLAB il s’agit de présenter quelques éléments caractéristiques dans le cadre d’un cours particulier. Une utilisation régulière et un approfondissement progressif de la connaissance du logiciel sont nécessaires pour une utilisation professionnelle de ce produit.

2. Démarrer et quitter MATLAB

Dans l’environnement Windows cliquer deux fois sur l’icône du logiciel qui se trouve probablement dans le dossier MATLAB. Généralement, comme pour tout autre logiciel, il suffit d'aller :

1. Menu démarrer 2. Programmes 3. Matlab 4. Matlab

1 MATLAB est une marque déposée par The MathWorks, Inc.

Université Jean Monnet Saint-Étienne Introduction à Matlab

Master OIV - 4

Utilisez les menus déroulants ou les commandes raccourcies courantes pour quitter : fichier/quitter ou alt F4. MATLAB peut être utilisé en mode interactif, comme une calculette classique ou en mode programmation. Dans ce dernier cas un programme (encore appelé script) est écrit au moyen d’un éditeur de texte quelconque ou l'éditeur de Matlab. Il est enregistré dans un fichier dont le nom se termine par l’extension ”.m”. Dans l’environnement UNIX, il suffit de taper matlab pour démarrer Une fenêtre de commande de l’environnement MATLAB est ouverte et permet d’écrire des commandes pour exécuter des calculs ou encore pour lancer des programmes. Un message invite à des démonstrations du produit et de l’aide est disponible en ligne en tapant help. Des menus permettent de sélectionner les renseignements désirés. Pour quitter MATLAB, il suffit de taper la commande : exit

3. Matrices et MATLAB MATLAB signifie Matrix Laboratory et il traite des données sous des forme très diverses (scalaires, complexes, vecteurs, matrices) avec bien souvent les mêmes opérateurs et des fonctions désignées par le même nom (polymorphisme). La même expression c=a*b, par exemple, dépend donc entièrement des types de a et b. La variable A étant une matrice, nous pouvons la rentrer par : >> A=[1 2 3 4 5 ; 0 1 2 3 9 ; 2 1 4 5 3 ; 8 7 6 5 4] (entrée) A= 1 2 3 4 5 0 1 2 3 9

2 1 4 5 3 8 7 6 5 4

A est une variable mémorisée utilisable par la suite. Elle s’affiche à l’écran. L’espace sépare les éléments d’une même ligne. Le ; sépare les lignes. Autre façon d’entrer une matrice : >> B=[1 2 3 4 5 6] ; Le ; à la fin de cette expression évite l’affichage de B. La transposée de B est B’ >> C=B’ C=

=

654321

B

=

45678354129321054321

A

Université Jean Monnet Saint-Étienne Introduction à Matlab

Master OIV - 5

1 4 2 5 3 6

3-1. Génération de vecteurs et de sous-matrices Les : sont utilisés pour représenter une série de valeurs. i :k Séquence de nombres de i à k par pas de 1. i<k, donne [ ] ; i,

k qcq. i :j :k Séquence de valeurs de i à k par pas de j. i, j, k qcq.

Dernière valeur <=k linspace(a, b) Vecteur de 100 valeurs régulièrement espacées sur [a, b]. linspace(a, b, n) Vecteur de n éléments. Le pas exact est déduit de n. logspace(a, b) Vecteur de 50 éléments d’une échelle logarithmique entre 10a

et 10b logspace(a, b, n) Distribution logarithmique de n valeurs sur [10a, 10b]

3-2. Sous-ensemble d’une matrice : A(i, j) Elément dont l’entrée est (i, j) dans la matrice A. A( :, j) Donne la jème colonne de A. A(i, :) Donne la ième ligne de A. A(i :k, j :l) Sous matrice comprise entre les lignes i à k et les colonnes de

j à l. A( :, :) A inchangée A( :) Une seule colonne avec toutes les colonnes de A mises bout à

bout. A(j :k) Donne les éléments de j à k de A( :) sous forme de vecteur

ligne.

3-3. Grandeur, norme ou dimension et longueur size(M) donne le nombre de lignes et le nombre de colonnes de M length(M) donne le plus grand nombre entre m et n

4. Variables prédéfinies ans Valeur de la dernière expression calculée. eps La très petite différence entre 1 et le nombre qui suit

immédiatement. realmax (realmin) Le nombre réel le plus grand (le plus petit) pi 3.141 592 653 589 793

Université Jean Monnet Saint-Étienne Introduction à Matlab

Master OIV - 6

inf Infini (par exemple 1/0) inf évite l’arrêt de l’exécution. NaN « Not a Number » par exemple 0/0 ou inf/inf. i, j 1− , pour les complexes. Attention à i ou j comme index de

boucle ! nargin, (nargout) Nombre d’arguments d’une fonction, en entrée (en sortie)

4-1. Liste des variables : who Liste nominative whos Liste complétée par des données supplémentaires (taille...) Effacement des variables : clear Efface l’ensemble (voir la sauvegarde des variables) clear A B Efface A et B seulement.

5. Opérateurs arithmétiques Les opérateurs s’appliquent aux matrices moyennant précautions et respect des règles d’usage sur les matrices. Les éléments sont de type entier, réel ou complexe. Par ordre de priorité des opérations, nous avons : ^ : Puissance .^ : Puissance de chaque élément * : Multiplication .* : Multiplication de chaque élément / : Division à droite (ordinaire) ./ : Division à droite de chaque élément \ : Division à gauche (left division) .\ : Division à gauche de chaque élément + : Addition - : Soustraction

Les parenthèses changent l’ordre des priorités. L’apostrophe dans M’ donne la conjuguée transposée. Par contre M.’ donne la transposée.

6. Fonctions mathématiques Appliquées à un argument scalaire ou complexe, les fonctions mathématiques s’appliquent également aux vecteurs et aux matrices en agissant sur chaque élément indépendamment. abs(x) sign(x) sqrt(x) pow2(x, f)

|x| 1, -1 ou 0

x x*2f

exp(x) log(x) log10(x) log2(x)

e x base e base 10 base 2

Université Jean Monnet Saint-Étienne Introduction à Matlab

Master OIV - 7

sin(x) cos(x) tan(x) cot(x) sec(x)

x en rad 1/cos(x)

asin(x) acos(x) atan(x) atan2(x,y) acot(x)

arc en rad atan(x/y), [-π, +π]

A voir avec l’aide Fonctions hyperboliques sinh(x) ...

Fonctions hyperboliques inverses asinh(x) ...

Valeurs arrondies ... round(x) fix(x) floor(x)

ceil(x) gcd(x, y) lcm(x, y) rat(x)

6-1. Fonctions mathématiques spéciales Ce sont par exemple les fonctions legendre(n, x) → fonctions de Legendre. besselj(n, x) ou besselk(n, x) → fonctions de Bessel Jn(x) et Kn(x) gamma(x) → fonctions Γn(x) erf(x) → function erreur

6-2. Fonctions applicables aux nombres complexes Soit z=x+yi=reθi real(z) → x imag(z) → y abs(z) →r conj(z) → z angle(z) →θ

Exemple :

z=1+2i ; x=real(z), y=imag(z), r=abs(z), zc=conj(z), th=angle(z) ; m=[x y r zc th] ' % Le ' donne un vecteur colonne. Préciser !

6-3. Changements de coordonnées cartésiennes → polaires polaires → cartésiennes [th, r]=cart2pol(x, y) [x, y]=pol2cart(th, r) cartésiennes →sphériques sphériques →cartésiennes [al, th, r]=catr2sph(x, y, z) [x, y, z]=sph2cart(al, th, r)

7. Aide

Université Jean Monnet Saint-Étienne Introduction à Matlab

Master OIV - 8

L’aide en ligne est très pratique et donne des renseignements clairs. help Sélectionner une rubrique ensuite help command Efficace pour rectifier help dir demo Didacticiels expo info whatsnew Lors des changements de version

8. Sauvegarde et chargement save Sauvegarde les variables dans le fichier binaire save fichier " fichier.mat save fichier.dat v1 v2 –ascii Sauvegarde les variables au format ascii load Lecture d'un fichier binaire load fichier load fichier.dat v1 v2 Lecture d’un fichier de données : supposons que A.dat contienne la matrice 1 4 5 4 2 9 >> load A.dat, A A= 1 4 5 4 2 9 Nous remarquons que la variable prend le nom du fichier (sans l’extension). On peut utiliser des fonctions de lecture et d’écriture plus élaborées compatibles avec C ou FORTRAN, moyennant les vérifications d’ordre de lecture et d’écriture des matrices en mémoire. Il existe d’autres fonctions pour lire et écrire dans un fichier :

fread et fwrite pour lire et écrire des fichiers binaires. wk1read et wk1write pour lire et écrire des fichiers au format

wk1 (Lotus et excel). dlmread et dlmwrite pour lire et écrire des fichiers dont le

délimiteur est quelconque.

Exemple :

Sauvegarde dans un fichier texte de la matrice M. Les valeurs de M sont séparées par le délimiteur. dlmwrite ('NomDufichier','Delimiteur',M) M=dlmread('NomDufichier','Delimiteur')

Université Jean Monnet Saint-Étienne Introduction à Matlab

Master OIV - 9

9. Commandes système Les commandes système ressemblent en partie à celles d’UNIX avec des variantes. Lancer help commande pour avoir plus d’informations sur la commande à utiliser et pour avoir des précisions sur les options éventuelles. what Liste les fichiers MATLAB dans un répertoire ou un sous

répertoire dir Liste des fichiers. Utilisation de chemin (path) et emploi de

caractères génériques (wilcards) ls Liste de fichiers. Format et présentation différents pwd Répertoire de travail delete f Supprime le fichier f cd Déplacement dans l’arborescence des répertoires path Affiche les chemins d’accés décrits pour MATLAB type f Pour afficher f.m (préciser le suffixe : f. ; f.dat ...) dbtype f Ajoute le numéro de ligne à l’affichage dbtype f l1 ln Limite l’affichage entre les lignes l1 et ln lasterr Inscrit à nouveau le dernier message d’erreur ! Insérer à la suite de ! une commande du système

d’exploitation

10. Opérations matricielles Les opérations matricielles élémentaires addition, soustraction portent sur des matrices de mêmes tailles. Il est également possible d’additionner ou de soustraire une matrice et un scalaire. Le résultat est une matrice de même dimension dans laquelle chaque élément subit l’opération. La multiplication C=AB est possible si le nombre de colonnes de A est égal au nombre de lignes de B. Exemple : Définir a et b, effectuer c=a*b et vérifier la taille par size(c). dot(x, y) Produit scalaire (dot product) dot(A, B) A et B sont des matrices m×n et le résultat est un vecteur de longueur n. cross(x, y) Produit vectoriel des vecteurs x et y. cross(A, B) Donne une matrice 3×n et chaque colonne est le produit

vectoriel des matrices A et B de dimension 3×n. kron(A, B) Produit tensoriel de A et B

Université Jean Monnet Saint-Étienne Introduction à Matlab

Master OIV - 10

La division matricielle évite d’avoir à écrire la matrice inverse qui s’exprime A-

1=inv(A) Deux cas sont considérés ici, lorsque A est une matrice carrée : Ax=b x=A-1b x et b sont des matrices colonne x=A\b xA=b x=bA-1 x et b sont des matrices ligne x=b/A=(A’\b’)’

11. Opérateurs booléens et logiques

11-1. Opérateurs relationnels Dans une expression, la plus haute priorité est donnée aux opérateurs arithmétiques. Les opérateurs relationnels viennent ensuite. Utiliser des parenthèses pour adapter cette règle ou pour améliorer la lisibilité des expressions. Le nombre d’opérateurs de relation est limité à 6 : < <= > >= == égal à ~= non égal à Ils permettent de comparer des matrices de même dimension. Il permettent également la comparaison d’un scalaire et d’une matrice. Chaque élément est comparé avec le scalaire. Le résultat est vrai ou faux, ce qui se traduit par des 1 ou des 0 dans la matrice résultat.

11-2. Opérateurs logiques Ces opérateurs ont la priorité est la plus faible. Ils agissent sur des matrices. Il est également possible de comparer un scalaire avec une matrice. Un élément nul correspond à false (0), et tous les autres éléments positifs ou négatifs correspondent tous à true (1). & et | ou ~ not xor ou exclusif Les matrices à comparer doivent avoir même dimension. Les éléments de la matrice résultante de même dimension sont des 0 ou des 1. A & B Deux éléments correspondants non nuls donne 1. C’est 0 autrement. A | B Deux éléments correspondants nuls donne 0. C’est 1 dans les autres

cas. ~A Retourne l’élément 1 seulement si l’élément de A correspondant est

nul.

Université Jean Monnet Saint-Étienne Introduction à Matlab

Master OIV - 11

xor(A, B) Retourne 1 seulement si un seul des éléments est non nul.

11-3. Opérateurs Scalaires On appelle ainsi les opérations entre éléments correspondant de deux matrices. Ces opérations permettent d'effectuer des calculs sur l'ensemble des éléments de deux tableaux. Les opérations scalaires sont notées par un point suivi du signe opératoire. Dans le cas de deux matrices, qui doivent avoir les mêmes dimensions, l'opération se fait élément par élément. Si l'un des deux opérateurs est un scalaire, l'opération scalaire ou matricielle donne le même résultat. Observez le résultat des quelques exemples d'opérations scalaires et matricielles suivantes (certaines sont impossibles). Soient deux vecteurs colonnes x=[1 2 3]' et y=[4 5 6]'

x+y x.*y x'*y x^2 x.^2 x\y x.\y x/y x./y x.^2 (x*y')^2

12. Matrices particulières Pour générer des matrices particulières il est parfois utile de partir de matrices composées d’éléments uniformes : 1 ou 0. ones(n) Matrice nxn de 1 ones(m, n) Matrice mxn de 1 zeros(n) Matrice nxn de 0 zeros(m, n) Matrice mxn de 0 eye(n) Matrice identité nxn eye(m, n) Matrice identité mxn Une matrice de 1 de même dimension que la matrice M s’obtient par : ones(size(M)) diag(A) Retourne une colonne contenant les éléments diagonaux de A.

Université Jean Monnet Saint-Étienne Introduction à Matlab

Master OIV - 12

diag(x) Donne une matrice carrée diagonale contenant les éléments du vect. x.

diag(A, k) Retourne une colonne contenant les éléments de la kème

diagonale de A. diag(x, k) Donne une matrice carrée de taille (n+abs(k))x(n+abs(k))

contenant les éléments du vecteur x de longueur n sur la kème diagonale.

Exemple pour construire la matrice ci-contre :

A=5*eye(5)+diag(ones(1,1),1)+diag(ones(4,1),-1) ;

13. Chaînes de caractères Une chaîne (string) est définie par des apostrophes.

mon_text=’**Ceci est une chaine de 40 caracteres**’ verif=length(mon_texte) verif= 40

Ce texte est mémorisé sous la forme d’un vecteur ligne dans lequel chaque élément contient le code ASCII du caractère. L’affichage à l’écran donne le texte. Chaque élément est accessible séparément. Ainsi, mon_texte(3)=’c’ supprime la majuscule. Les chaînes de caractères se comportent comme les vecteurs. Pour afficher mon_text, il suffit d’écrire mon_text, comme pour une variable. Mais il est plus commode d’utiliser la fonction d’affichage disp, par exemple dans un fichier .m. disp(A) Affiche le contenu de la matrice A. Si A est une chaîne, la

chaîne est écrite. input(str) Affiche le texte de str et attend une valeur input(str, ’s’) Affiche le texte de str et attend une chaine de caractères

(nom, instruction...)

=

5100015100015100015100015

A

Université Jean Monnet Saint-Étienne Introduction à Matlab

Master OIV - 13

Exemples :

n=input(’Donner un nombre : ’) Donner un nombre : 5.123

A=input(’Entrer une matrice ligne par ligne : ’) ; Entrer une matrice ligne par ligne : [1 :3 ; 4 7 8]

n= 5.1230

A=input(’Entrer une matrice : ’) ; Entrer une matrice : rand(4)*hilb(4)

[m n]=input(’Donner la dimension de A : ’) ; Donner la dimension de A : size(A)

login=input(’Quel est votre login name ? ’, ’s’) ; Quel est votre login name ? tartampion

Insérer l’instruction pause pour le contrôle de l’exécution d’un fichier .m pause Suspend l’exécution du script qui reprend en frappant une

touche. pause(n) Suspend l’exécution du script pendant n secondes.

14. Analyse de données Dans cette partie, A et B sont des matrices et x est un vecteur. Maximum et minimum max(x) Donne le plus grand élément. Si x est complexe, le résultat correspond à max(abs(x)) max(A) Donne un vecteur ligne avec les maxima de chaque colonne. [y, p]=max(A) y et p sont deux vecteurs ligne ; y contient les maxima et p

les positions. max(A, B) Donne une matrice (même dimension) avec partout l’élément

maximum

14-1. Sommes produits et différences sum(x) Donne la somme des composantes du vecteur x sum(A) Vecteur ligne avec la somme des colonnes cumsum(x) Somme cumulative (le 2ème élément est la somme des deux

premiers ...) cumsum(A) Même principe sur chaque colonne de A prod(x) calcule le produit des éléments de x ; même variantes que

pour sum diff(x) Donne un vecteur de longueur réduite d’une unité avec [x2-x1

...xn-xn-1]

Université Jean Monnet Saint-Étienne Introduction à Matlab

Master OIV - 14

diff(A) Les différences sont calculées sur chaque colonne de A. diff(x, k) Donne la kième différence. Si k=2 c’est diff(diff(x))

14-2. Statistiques mean(x) Valeur moyenne arithmétique median(x) Valeur médiane std(x) Ecart type Voir aussi : mean(A), median(A), std(A)

15. Systèmes linéaires et calcul matriciel Les résolution des équations linéaires interviennent dans presque toutes les applications. Cette résolution se fait au moyen de l’opérateur \.

15-1. Déterminant, inverse et rang d’uns système det(A) Donne le déterminant associé à la matrice carrée A. rank(A) Nombre de lignes et colonnes indépendantes de A inv(A) Inverse de A. Si la matrice est singulière, message d’erreur trace(A) Somme des éléments diagonaux

15-2. Résolution des systèmes linéaires et factorisation LU rref(A) Donne la forme réduite de A selon l’élimination de Gauss-

Jordan [L, U]=lu(A) Factorisation LU. chol(A) Factorisation de Cholesky

15-3. Valeurs propres et vecteurs propres Les commandes de MATLAB pour le calcul des valeurs propres et des vecteurs propres sont efficaces. Soit A une matrice carrée. Il s’agit de trouver les valeurs propres λ telles que Ax=λx. Au scalaire λ correspond le vecteur propre x. eig(A) Retourne un vecteur contenant les valeurs propres de A. [X, D]=eig(A) D est une matrice diagonale contenant les valeurs propres de

A. X est une matrice dont les colonnes sont le vecteurs propres de A.

16. Représentations graphiques Les commandes de représentations graphiques en deux ou trois dimensions de MATLAB sont nombreuses et nous allons répertorier les plus courantes d’entre elles. Pour en savoir plus, découvrir les programmes de démonstration.

Université Jean Monnet Saint-Étienne Introduction à Matlab

Master OIV - 15

16-1. Graphiques à deux dimensions La commande de base est plot. Elle peut comporter des arguments de types différents, pour les coordonnées, complétés par des spécifications de styles et de couleur, rassemblées dans une chaîne de caractères. plot(x1, y1, ...) Représente le vecteur y1 en fonction du vecteur x1. plot(y) Représente le vecteur y en fonction du numéro

d’ordre. plot(z) Représentation (x, y) de la partie imag. en fonction de

la partie réelle. plot(A) Représente les colonnes de A en fonction de l’indice

de la ligne. plot(x, A) Représente les colonnes de A (mxn) en fonction de x

(longueur m). plot(x1, y1 , str1, ...) Mêmes commandes avec en plus les indications de

style et de couleur. Les arguments x1, y1 ou x1, y1, str1 sont cumulables : x2, y2 ...

fplot(fkn, lim, str) Tracer une fonction standard ou une fonction utilisateur (.m). lim=[a b]

Type point Type ligne Couleur . dot * star x lettre x o lettre o + plus

- Trait continu -- Trait pointillé -. Trait mixte : Ligne pointée

y yellow c cyan g green w white m magenta r red b blue k black

16-2. Autres systèmes de coordonnées semilog(x, y) plot(log10(x), y) semiloy(x, y) plot(x, log10(y)) loglog(x, y) plot(log10(x), log10(y))

16-3. Contrôle du graphique clf Efface la fenêtre graphique clc Efface la fenêtre de commande hold on Maintient la fenêtre graphique - Superposition possible. hold off Libère la fenêtre graphique. hold Permet de passer d’un mode à l’autre. subplot(m, n, p) Permet de définir mxn emplacements de graphiques

numérotés p.

Université Jean Monnet Saint-Étienne Introduction à Matlab

Master OIV - 16

Voir les commandes supplémentaires concernant les axes (axis), le quadrillage (grid), le zoom. Voir également les commandes pour les textes associés tels que titre, label, légende :

title, xlabel, ylabel, text, legend. Pour animer une représentation graphique, utiliser la fonction comet : comet(x, y).

16-4. Graphiques à trois dimensions La représentation graphique en trois dimensions apporte des facilités de visualisation globales dès que z est fonction de x et y. Par exemple pour les diagrammes (P, V, T) deux paramètres peuvent varier simultanément. L’influence sur le troisième s’observe directement. La commande plot qui devient plot3 est utilisée dans ce cas. De façon plus systématique, la commande mesh avec toutes ses variantes permet une représentation filaire. La commande surf et toutes ses options améliore la représentation de surfaces dans l’espace. Voyons quelques commandes de base : plot3(x, y, z) Graphe en trois dimensions. Les vecteurs x, y et z ont

même longueur. comet3(x, y, z) Représentation 3D animée. mesh(Z) Z est un matrice (grille x, y) dont les valeurs sont

reportées suivant z rot90(A) La matrice A subit une rotation de 90°. Très utilisé avec

mesh. surf(X, Y, Z, C) X et Y : vecteurs de longueur m et n. Z : matrice de

dimension (m x n). C est une matrice pour la couleur. Surf trace une surface définie par (xi, yj, zij).

La commande view est utilisée pour changer le point de vue sur la représentation, les angles de vue (azimut dans le plan x, y et élévation) ou encore la perspective.

17. Analyse des fonctions MATLAB possède des commandes puissantes et pratiques pour le traitement des polynômes, l’analyse de fonction (recherche de zéros, de minima), l’interpolation et l’ajustement d’ensemble de données. Un polynôme de degré n consiste en un vecteur ligne de longueur n+1, p=[an an-1 ... a0] interprété comme : p(x)=anxn+ an-1xn-1+ ... + a1x+a0

. polyval(p, x) Evalue le polynôme défini par p pour x scalaire, vecteur ou

matrice.

Université Jean Monnet Saint-Étienne Introduction à Matlab

Master OIV - 17

poly(x) Donne le polynôme dont les racines sont données par le vecteur x.

roots(p) Donne les racines de p(x)=0. Les racines peuvent être complexes.

fzero(fcn, x0) Résoud l’équation donnée par la chaîne fcn désignant le nom de la fonction au voisinage de x0.

fmin(fcn, x1, x2) Donne la valeur minimum d’une fonction (chaîne fcn) entre x1 et x2.

Plusieurs fonctions d’interpolation sont disponibles : interp1, interp2 ... spline. La fonction polfit permet un ajustement polynomial de données. En analyse des signaux, la fonction fft est disponible avec plusieurs formes.

18. Calcul intégral et E.D.O. Différentes méthodes numériques sont proposées trouver la solution d’une intégrale définie ou pour intégrer une équation différentielle ordinaire. Les équations différentielles partielles sont traitées par MATLAB au moyen d’une bibliothèque particulière (Optimization and Partial Differential Equation Toolbox) Intégration par la méthode des trapèzes et par la méthode de Simpson trapz(x, y) Intégrale de y en fonction de x. Les vecteurs x et y ont même

longueur. trapz(y) Intégrale de y en fonction d’une échelle de pas 1. trapz(x, A) Intégrale de chaque colonne de A en fonction de x. Donne un

vecteur. quad(fcn, a, b) La chaîne fcn contient une fonction prédéfinie de MATLAB ou

le nom d’un fichier .m contenant la fonction à intégrer sur l’intervalle [a, b]

MATLAB met en œuvre les méthodes de Runge-Kutta-Fehlberg pour résoudre les EDO. [t, X]=ode23(str, t0, tt, x0)

Calcule la solution d’une EDO ou d’un système d’EDO donné par la chaîne str (fichier .m). La ou les solutions sont contenues dans les colonnes de la matrice X en fonction du vecteur t (abscisses). Les solutions sont calculées de t0 à tt avec comme valeur initiale x0. L’approximation a une erreur relative inférieur ou égale à 10-3.

[t, X]=ode45(str, t0, tt, x0) Calcule la solution d’une EDO ou d’un système d’EDO. L’approximation a une erreur relative inférieur ou égale à 10-6.

Université Jean Monnet Saint-Étienne Introduction à Matlab

Master OIV - 18

19. Programmation avec MATLAB Plusieurs commandes permettent de contrôler l’exécution des instructions. MATLAB peut être vu comme un langage de programmation de haut niveau.

19-1. Instructions conditionnelles if expression logique instructions end if expression logique instructions 1 else Voir également d’autres formes instructions 2 plus complexes avec elseif end Matlab nous permet comme en C d'utiliser la structure switch-case : switch expression case case_expr. instructions case {case_expr1, case_expr2, case_expr3, …} instructions

… otherwise instructions

end

19-2. Boucles Deux commandes sont utilisées pour répéter l’exécution d’instructions : for et while.

La syntaxe de la boucle for est :

for variable = expression instructions end expression est usuellement de la forme i :j :k ou i :j. Les boucles for peuvent être emboitées.

La syntaxe de la boucle while est :

while expression logique instructions end

Université Jean Monnet Saint-Étienne Introduction à Matlab

Master OIV - 19

20. Interfaces graphiques Matlab offre la possibilité de réaliser des Interfaces Graphiques (ou GUI Graphical User Interface) très facilement à l’aide de deux fonctions de bases :

Uicontrol : pour créer dans la fenêtre des boutons, des zones d’affichages, des graphiques, etc ...

Uimenu : pour créer des menus supplémentaires à ceux de bases : Fichier (File), Edition (Edit), etc ...

La conception de ces interfaces est rendue encore plus simple grâce à la fonction “GUI Layout Tool” du menu fichier. Les instructions “Set” et “Get” sont très importantes pour la gestion de l’affichage. La seule difficulté réside dans la récupération de la variable (bouton, menu popup, …) pour la modifier ou récupérer la valeur.

21. Fichiers .m et exemples Les fichiers .m comportent des fichiers de commandes ou encore des fonctions (propres à MATLAB ou définies par l’utilisateur).

Exemple : utilisation d’une matrice appelée cal

10235112551276531157311005020105210.50.20.1

=cal

Inscrivons cette matrice dans le ficher de commande calcod.m écrit avec l'éditeur de texte de matlab. % calcod.m : Matrice cal=[0.1 0.2 0.5 1 2 5 10 20 50 100 1 3 7 15 31 65 127 255 511 1023] ; Entrer dans l’ordre les commandes suivantes et interpréter :

>> clear >> calcod(2, :) >> who >> calcod( :) >> calcod >> size(calcod) >> who >> length(calcod)

Exemple de fonction utilisateur

La méthode utilisée pour écrire une fonction est la suivante : a. La première ligne débute par le mot function suivi de l’argument de

sortie (résultats), du nom de la fonction et des paramètres formels de la fonction placés entre parenthèse.

b. le nom du fichier et le nom de la fonction sont identiques.

Université Jean Monnet Saint-Étienne Introduction à Matlab

Master OIV - 20

c. Une fonction peut avoir zéro, un ou plusieurs arguments de sortie et paramètres d’entrée.

d. L’appel de la fonction se fait avec des arguments réels désignés par des noms indépendants qui peuvent être différents des noms des paramètres formels de la fonction.

e. Les commentaires, avec %, situés après la première ligne sont affichés avec help.

Soit à calculer la fonction :

=+−= −

0<=x si 0y0>x pour )xsin(.2e.5)xln(.xy 3x2

Elle est écrite dans le fichier lnesin.m function y=lnesin(x) % lnesin : calcule l’expression exp(-x^2)+sin((x^2)/5) % parametre d’entrée x : scalaire ou vecteur % argument de sortie y de même type y= exp(-x.^2)+sin(0.2*x.^2) ; end ; >> x1=[-10 :0.1 :10] ; >> f1=lnesin(x1) ; >> plot(x1, f1) ; >> help lnesin

Tracer les fonctions sin(2x), sin x2 et sin2x sur l’intervalle 0, 3π

Fichier sin123.m x=linspace(0, 3*pi) ; % Vecteur x y1=sin(2*x) ; % Vecteur y1 avec le sinus de 2x y2=sin(x.^2) ; % Vecteur y2 avec le sinus de x^2 y3=(sin(x)).^2 ; % Vecteur y3 plot(x, y1, x, y2, x, y3) ; % Trois courbes sur le même axe. Lancer l’exécution en écrivant : >> sin123

Analyse d’une fonction appelée fonc avec les commandes fplot, fzero, fmin

Soit y=f(x)= )x3sin(5e)1x( 3x2−− pour x compris entre -1,5 et 1,5, bornes

comprises. Fichier fonc.m : function y=fonc(x)

Université Jean Monnet Saint-Étienne Introduction à Matlab

Master OIV - 21

% fonc.m contient une fonction à analyser y=(x-1).*exp(x.^2)-5*sin(3*x.^3) ; Fichier foppo.m : function y=foppo(x) % foppo.m donne la fonction opposée de la fonction précédente y=-fonc(x) ; Fichier ana.m : % ana.m permet d'analyser une fonction avec fplot, fzero, fmin (pages 13 et 15) fplot('fonc', [-1.5 1.5]); % Racine de la fonction au voisinage de 1.2 r1=fzero('fonc', 1.2); % Position du minimum de la fonction pour x compris entre 0.5 et 1 p1=fmin('fonc', 0.5, 1); m1=fonc(p1); disp('Position du minimum entre 0.5 et 1'); [p1 m1] % Position du maximum de la fonction pour x compris entre -1 et -0.5 p2=fmin('foppo', -1, -0.5); M2=fonc(p2); disp('Position du maximum entre -1 et -0.5'); [p2 M2]

Système linéaire Ax=b

A=[3 1 -1 ; 1 2 4 ; -1 4 5] ; b=[3.6 ; 2.1 ; -1.4] ; x=A\b