Vous êtes sur la page 1sur 17

` TP1 : INTRODUCTION A MATLAB

Rsum. Matlab est un logiciel de calcul numrique, utilis dans de nombreux domaines e e e e dapplication. Il est bas sur le calcul matriciel. Matlab est dailleurs un raccourci pour Mae trix Laboratory. Le but de ce document est daider les dbutants en Matlab, en introduisant e les commandes les plus courantes.

1. Lacc`s e Pour lancer lexcution de Matlab, tapez dans une fentre xterm : matlab6.5. Lintere e face graphique de Matlab appara alors. A droite, la partie o` lon entre les commandes. t u Le caract`re )) signie que Matlab attend une instruction. A gauche, en haut, les variables e denvironnement, en bas, les derni`res commandes tapes. Regardez le contenu des menus e e droulants. e Exercice 1. Excutez lintroduction de Matlab, chargez laide. Bref, faites un petit tour du e propritaire selon le tableau ci-dessous... e intro help demo info lance une introduction a Matlab ` produit une liste de toutes les commandes par th`mes e dmonstration donnant une reprsentation des fonctionnalits de bases de Matlab e e e information sur la boite a outils disponibles `

2. Laide dans Matlab Mieux vaut apprendre a se reprer tout seul que de demander en permanence a son voisin ` e ` comment faire. Ne serait-ce quau cas o` il faudrait utiliser dans lexamen une fonction dont u on ne se souvient que vaguement quelle est sa syntaxe... ouvre une fentre contenant la liste des commandes e Matlab ainsi que leurs documentations help donne la liste de toutes les commandes par th`mes e help nom dcrit la fonction nom.m e lookfor nom recherche une instruction a partir du mot cl nom ` e helpwin

Exercice 2. Trouvez la fonction qui donne les valeurs propres dune matrice. Tapez help de cette fonction.

` TP1 : INTRODUCTION A MATLAB

3. Commandes gnrales e e 3.1. Gestion des chiers. Vous pouvez utiliser la petite fentre en haut a droite, ou a e ` ` dfaut : e pwd cd rep dir delete ache le nom du rpertoire courant pour Matlab e change le rpertoire courant pour Matlab qui devient rep e fournit le catalogue dun rpertoire e eace des chiers ou des objects graphiques

3.2. Calculs lmentaires. Dans la partie commandes de linterface, ee )) 5+8 Rsultat : )) 13 e Pour conserver le rsultat, il faut lassigner dans un objet : e )) a=5+8 )) a Pour ne pas faire acher le rsultat, mettez ; a la n de la commande : e ` )) a=5+8; 3.3. Constantes prdnies. e e pi 3.1415... eps 2.2204e-016 Inf nombre inni NaN nest pas un nombre ; exprime parfois une indtermination e

3.4. Historique. Matlab conserve lhistorique des commandes. Il est donc possible de rcuprer e e des instructions dj` saisies (et ensuite de les modier dans le but de les rutiliser) : ea e , , , permet de se dplacer dans les lignes de commandes e tapes dans la fentre de commandes e e

3.5. Variables denvironnement. Matlab garde en mmoire les variables qui ont t cres. e e e ee On les voit en haut, a gauche, lorsque Matlab dispose dune interface graphique. Sinon, on ` peut les acher et les eacer par la ligne de commande : who whos donne la liste des variables prsentes dans lespace de e travail donne la liste des variables prsentes dans lespace de e travail ainsi que leurs proprits ee donne la liste des chiers .m et .mat prsents dans le e rpertoire courant e

what

clear var1 . . . varn eace les variables var1 , . . . varn de lespace de travail clear eace toutes les variables cres dans lespace de travail e

` TP1 : INTRODUCTION A MATLAB

Exercice 3. (1) Tapez la commande a=1:7;. Tapez les commandes a, who et whos. (2) Utilisez pour modier a : a=1:2;. (3) Tapez la commande b=a+2;. Rxcutez les commandes who et whos en utilisant . ee e Tapez clear et b. 4. Les types de donnes e Matlab traite un seul 1 type dobjet: les matrices ! Les scalaires sont des matrices 1 1, les vecteurs lignes des matrices 1 n, les vecteurs colonnes des matrices n 1. 4.1. Construction explicite. On peut former des vecteurs et des matrices en entrant leurs coecients. scalaires )) s=30 vecteurs numriques e )) x=[1;2;3] (les ; sparent les lments dun vecteur colonne) e ee )) x=[1,2,3] (les , ou les blancs sparent les lements dun vecteur ligne) e e )) x )) y = [x,x,x] )) z = [x x x] matrices )) M=[11 12 13 14;21 22 23 24; 31 32 33 34; 41 42 43 44] (o` les ; sparent les lignes dune matrice) u e Construction a partir de plusieurs vecteurs de mme longueur : ` e )) y=[11;22;33]; )) mat1=[x y] vecteurs de cha de caract`res ne e La cha de caract`res est un vecteur ligne. Pour le crer, on entre les caract`res en ne e e e commenant et en terminant par (quote). c )) ch=matlab les nombres complexes Dans Matlab, un nombre complexe est de la forme : z = a + ib. )) c=2+i les polynmes o Matlab reprsente un polynme sous forme dun vecteur ligne contenant les coee o cients classs dans lordre des puissances dcroissances. Par exemple le polynme P e e o dexpression P (x) = x2 6x + 9 est reprent par e
1. ou presque... Voir lappendice !

` TP1 : INTRODUCTION A MATLAB

)) P=[1 -6 9] Exercice 4. Entrez les dirents vecteurs et matrices et donnez la longueur et la taille de e chacun (Utilisez help pour trouver les fonctions qui donnent longueur et taille). 4.2. Cration rapide. Certaines commandes permettent de crer plus rapidement des vece e teurs prcis : e )) l1=1:10 (Un vecteur contenant les entiers de 1 a 10) ` )) l2=1:1:10 )) l3=10:-1:1 )) l4=1:0.3:pi )) l1(2)=l3(3) )) l4(3:5)=[1,2,3] )) l4(3:5)=[] )) l5=linspace(1,5,5) )) help linspace )) who )) whos )) clear l1 l2 l3 l5 )) who )) clc (eace le contenu de la fentre de commande) e )) clear NB : Une ligne de commande commenant par le caract`re % nest pas excute par Matlab. c e e e Cela permet dinsrer des lignes de commentaires. Et il faut commenter ses programmes, ... e surtout ceux de lexamen ! Exercice 5. Construire : (1) une suite partant de 8 et allant a 5 par pas de 0.25. ` (2) une suite dcroissante dentiers de 15 a 3. e ` (3) une suite de longueur 100 de a . ` 4.3. Oprations vectorielles. Les tableaux suivants rsument certaines commandes coue e ramment utilises. e Vecteurs n:m n:p:m linspace(n,m,p) lenght(x) x(i) x(i1:i2) x(i1:i2)=[] [x,y] x*y x*y nombres de n a m par pas de 1 ` nombres de n a m par pas de p ` p nombres de n a m ` longueur de x i-`me coordonne de x e e coordonnes i1 a i2 de x e ` supprimer les coordonnes i1 a i2 de x e ` concatner les vecteurs x et y e produit scalaire des vecteurs lignes x et y produit scalaire des vecteurs colonnes x et y

` TP1 : INTRODUCTION A MATLAB

Matrices size(A) A(i,j) A(i1:i2,:) A(i1:i2,:) =[] A(:,j1:j2) A(:,j1:j2)=[] A(:) diag(A) nombre de lignes et de colonnes de A coecient dordre i,j de A lignes i1 a i2 de A ` supprimer les lignes i1 a i2 de A ` colonnes j1 a j2 de A ` supprimer les colonnes j1 a j2 de A ` concatner les vecteurs colonnes de A e coecients diagonaux de A

Matrices particuli`res e zeros(m,n) ones(m,n) eye(n) diag(x) magic(n) rand(m,n) randn(m,n) matrice nulle de taille m,n matrice de taille m,n dont tous les coecients valent 1 matrice identit de taille n e matrice diagonale dont la diagonale est le vecteur x carr magique de taille n e matrice de taille m,n a coecients i.i.d.de loi uniforme sur [0,1] ` matrice de taille m,n a coecients i.i.d. de loi normale N (0,1) `

Exercice 6. [Extraction de composantes.] Entrez la matrice )) A=[1 2 3 ; 2 3 1 ; 3 1 2 ] Quels sont les rsultats des commandes suivantes? e )) A([2 3],[1 3]) )) A([2 3],1:2) )) A([2 3],:) )) A([2 3],end) )) A(:) Exercice 7. Crez des matrices particuli`res. Exemple de cration dune matrice par blocs : e e e )) C=[A, zeros(3,2); zeros(2,3), eye(2)] Rpliquez le vecteur colonne [1; 3; 6] pour en faire une matrice 319, de deux mani`res : en e e utilisant ones et en eectuant une multiplication matricielle, puis en trouvant la commande ad hoc de rplication. e Exercice 8. Ecrire la matrice carre M dordre 12 contenant les entiers de 1 a 144 rangs e ` e par ligne. Extraire de cette matrice les matrices suivantes : la sous-matrice forme par les coecients a ij pour i = 1,...,6 et j = 7,...12 ; e celles des coecients aij pour (i,j) {1,2,5,6,9,10}2 ; celle des coecients aij pour i + j pair.

` TP1 : INTRODUCTION A MATLAB

5. Les oprations matricielles et les fonctions e 5.1. Les oprations matricielles. e A rank(A) inv(A) expm(A) det(A) trace(A) poly(A) eig(A) [U,D]=eig(A) + * ^ .* .^ A\b b/A ./ transpose de A e rang de A inverse de A exponentielle de A dterminant de A e trace de A polynme caractristique de A o e valeurs propres de A vecteurs propres et valeurs propres de A addition, soustraction multiplication, puissance (matricielles) multiplication, puissance terme a terme ` solution de Ax = b solution de xA = b division terme a terme `

Exercice 9. Essayez des fonctions sur la matrice A. Par exemple, quels sont ses valeurs et vecteurs propres? Puis, construisez une matrice C de mme taille que A. Essayez A+C, A*C, A.*C. e Ensuite, dnissez la matrice B comme tant la matrice A a laquelle on a ajout le vecteur e e ` e colonne [1; 2; 3]. Dterminez son noyau. Y a-t-il une fonction prdnie dans Matlab qui e e e dtermine le noyau dune matrice? Le cas chant, y a-t-il des dirences entre les mthodes e e e e e employes pour le calcul du noyau? e Exercice 10. Rsolution dun syst`me sous-dimensionn : e e e 2x1 + x2 3x3 = 1 x1 2x2 + x3 = 2

(1) Ecrivez le syst`me sous la forme matricielle Ax = b (o` vous dnissez A et b) et e u e calculez le rang de la matrice A. (2) Dnissez la matrice B comme tant la matrice A a laquelle on a ajout le vecteur e e ` e colonne b. (3) Calculez le rang de la matrice B. Conclusion? (4) Dnissez le vecteur c = [1; 1; 1] et dterminez limage du vecteur c par la matrice e e A. (5) Rsolvez lquation Ax = b. e e NB : A\b est quivalent a inv(A)*b si A est inversible. e `

` TP1 : INTRODUCTION A MATLAB

5.2. Les fonctions. e Fonctions elmentaires sqrt sin asin round abs exp cos acos floor angle log tan atan ceil conj

Certaines fonctions de Matlab sappliquent a lensemble dun vecteur. Lorsquon les ap` plique a des matrices, elles op`rent colonne par colonne. ` e Exercice 11. Construire un vecteur quelconque et essayer les fonctions ci-dessus. Le tableau suivant dcrit le rsultat de quelques unes de ces fonctions lorsquelles sont e e appliques a un vecteur x : e `

Fonctions vectorielles max(x) maximum min(x) minimum sort(x) tri par ordre croissant [y, I] = sort(x) retourne en plus les indices des lements de x e find(x) retourne les indices non nuls de x [y, I] = find(x) retourne des lignes (dans le vecteur I) et des colonnes (dans le vecteur J) des lements non nuls du x e sum(x) somme des lments de x ee cumsum(x) vecteur contenant la somme cumule des lments de x e ee prod(x) cumprod(x) diff(x) mean(x) median(x) std(x) produit des lments de x ee vecteur contenant le produit cumul des lments de x e ee vecteur des dirences entre deux lments conscutifs de x e ee e moyenne des lments de x ee mdiane e cart type e

Exemple 1. Regardez leet des instructions suivantes. )) x=rand(1,5) )) mean(x) )) std(x) )) median(x) )) sort(x)

` TP1 : INTRODUCTION A MATLAB

)) )) )) )) )) )) )) )) )) )) ))

A=rand(3) sort(A) [B, I]=sort(A) sort(A) max(A) max(A) max(max(A)) sum(A) cumsum(A) prod(A) diff(A)

)) D=A([1,2],1:3) )) sum(D,1) )) sum(D,2) Exercice 12. Soit X une matrice 2 n contenant les coordonnes de n points du plan. e Comment faire pour obtenir une matrice o` les points sont ordonns par ordre croissant des u e abscisses? Exercice 13. Calculer 10!. Exercice 14. (1) Soit le vecteur de dimension 8 de composantes : 3.2, 4.8, 3.3, 3.2, 3.1, 4.2, 3.2, 3.3. Entrez le vecteur y = (yi )i=1,...,8 correspondant. (2) Construisez a laide des fonctions prcdentes la suite des moyennes mobiles, ` e e yn = 1 n
n

yi .
i=1

Extrayez y8 . Donnez une fonction qui calcule directement y 8 a partir de y. `

Exercice 15. Tirez 20 nombres alatoirement dans lintervalle [0,1]. Quelle est la valeur mie nimale du vecteur et la position du coecient qui la ralise? Vriez. e e 6. Oprateurs relationnels et logiques e Ils permettent de relier logiquement deux matrices. Oprateurs relationnels <, <=, >=, == (galit), = (dirent) e e e e Oprateurs logiques e & (et), | (ou), ou not (non)

NB : Attention de ne pas confondre = qui sert a aecter une valeur a une variable et == ` ` qui sert a tester lgalit. ` e e

` TP1 : INTRODUCTION A MATLAB

Les oprateurs relationnels peuvent tre utiliss avec des scalaires ou des matrices. Le e e e rsultat dvaluation dune expression relationnelle est 1 (vrai) ou 0 (faux). Appliqus a une e e e ` matrices, ils rendent une matrice de mme dimension, forme de 1 et de 0. e e Exemple 2. u=4 u==4 u<=12 Reprenez la matrice A=[1 Ar=(A<=2) 2 3; 2 3 1; 3 1 2] en tapant A=[ .

[B,I]= find(A==1) (Retourne les coordonnes gales a 1, ainsi que leur position.) e e ` Exercice 16. Reprenons le vecteur y. Pour rappel, tapez y. (1) Faites rpondre Matlab a la question suivante : existe-t-il une coordonne du vecteur e ` e y infrieure a 3.3? e ` (2) Construisez un vecteur logique z tel que la i-`me coordonne de ce vecteur sera 1 si e e la i`me coordonne du vecteur y est a lextrieur de lintervalle [8 8 ,8 + 8 ] o` e e ` e y y u 8 est la racine carre de la variance dchantillonnage. e e Exercice 17. (1) Tirez 100 nombres alatoirement (et uniformment) dans lintervalle [0,1] et groupeze e les dans un vecteur x = (xi )i=1,...,100 . (2) Prenez yi = 2 xi pour tout i = 1 . . . ,100. (3) Prenez la partie enti`re de ces nombres (` laide de la fonction floor) : z i = [yi ]. e a Ceci dnit un vecteur z. (Au passage, notez quil existe plusieurs fonctions parties e enti`res, avec des comportements dirents, ceil par exemple...) e e (4) Donnez la frquence de 1 sur lchantillon z. Pouvait-on sattendre a ce rsultat? e e ` e

Rinitialisez lespace de travail en tapant clear (eacement des variables denvironnement) e puis clc. 7. Reprsentation graphique des rsultats. e e 7.1. Reprsentations de points dans le plan. Il existe plusieurs possibilits pour reprsenter e e e un ensemble de points (x(i),y(i)). Les plus utilises sont numres ci-dessous. e e ee trac dune courbe ou dun nuage de points e trac sous forme dun histogramme e diagramme en btons a trac en escalier des valeurs discr`tes e e reprsente des fonctions e trace des histogrammes

plot(x,y,s) bar(x,y,s) stem(x,y,s) stairs(x,y) fplot hist

10

` TP1 : INTRODUCTION A MATLAB

s est un param`tre facultatif constitu dune cha de caract`res qui spcie le type de e e ne e e trac (couleur, dirents tracs en pointills, symboles pour le trac de points). Par dfaut, e e e e e e le trac est continu. Tapez help plot pour avoir la liste des valeurs possibles pour s. e 7.2. Gestion de la fentre graphique. e hold on hold off clf figure(n) close close all subplot(n,m,p) les prochains tracs se superposeront aux tracs dj` eectus e e ea e le contenu de la fentre graphique active sera eac lors du prochain trac e e e eace le contenu de la fentre graphique active e ache ou rend active la fentre graphique numro n e e ferme la fentre graphique active e ferme toutes les fentres graphiques e partage la fentre graphique active en m n espaces graphiques e et slectionne le p-i`me. e e

7.3. Axes et lgendes. e axis([xmin xmax ymin ymax]) grid grid off title(titre) xlabel(titre) ylabel(titre) legend(titre1,titre2,...) text(x,y,texte) gtext(texte) pour dnir les chelles des axes e e quadrillage du graphique titre pour le graphique lgende pour laxe des abscisses e lgende pour laxe des ordonnes e e lgende pour chaque courbe du graphique e texte explicatif a la position (x,y) ` texte positionn a laide de la souris e`

NB : Si a est une variable contenant le nombre 2, la commande text(x,y,[le resultat est num2str(a,3)]) achera le texte le resultat est 1.41 a partir de la position ` x,y de la fentre graphique. e Exemple 3. x= -pi :0.1:3*pi; y=x.*sin(x); plot(x,y) clf plot(x,y) axis([-pi,3*pi,-6,9]) xlabel(x) ylabel(y) title(graphe de la fonction x sin(x) sur lintervalle [ num2str(x(1)) , num2str(x(end)) ]]) plot(x,y,x,2*y) plot(x,[y;2*y]) plot(x,y,r--,x,2*y,g+) fplot([x*sin(x),2*x*sin(x)],[-pi,3*pi])

` TP1 : INTRODUCTION A MATLAB

11

fplot(x*sin(x),[-pi,3*pi],b-) hold on fplot(2*x*sin(x),[-pi,3*pi],yo) hold off t=0:0.1:2*pi; plot(sin(t),sin(2*t)) plot(sin(t),sin(2*t),c-) Exercice 18. Soit f et g les fonctions dnies sur lintervalle [0,10] par : e x x f (x) = exp , g(x) = cos . 25 10 Tracez ces deux fonctions (` laide de fplot) dabord dans une mme fentre graphique mais a e e sur des graphes dirents, puis dans une mme fentre graphique et sur le mme graphe. e e e e 7.4. La sauvegarde dune gure. Une gure peut tre sauvegarde sous plusieurs formats : e e sous un format propre a matlab avec lextension .fig (pour les versions rcentes ` e de Matlab). Pour cela, cliquer sur la commande Save as du menu File de la fentre e graphique et entrer un nom de chier avec lextension .fig dans lencadr qui appara e t. Un tel chier peut tre visualis en utilisant la commande Open du menu File. e e sous un format PostScript en utilisant la commande Export du menu File dune fentre graphique, ou, plus manuellement, en tapant print -dps nomchier. Dans ce e cas, un chier nomchier.ps est cr dans le rpertoire courant. On peut visualiser les ee e chiers PostScript en utilisant le logiciel GhostView (gv), limpression sen faisant par la commande linux lpr.

Exercice 19. (1) Tirer 100 couples de points (x,y) alatoirement dans le carr [0,1] [0,1]. e e (2) Reprsenter le nuage de points obtenus dans une fentre graphique. e e (3) Calculer le centre de gravit G du nuage de points. e (4) Ajouter en rouge au nuage de points le centre de gravit. e (5) Sauvegarder la gure sous le nom nuage.fig. Fermer la fentre graphique. Ouvrir e une nouvelle fentre graphique et faire rapparaitre le chier nuage.fig. e e 7.5. Les histogrammes. La reprentation dun histogramme peut se faire a laide des fonc` tions hist ou histo. Nous dcrivons la fonction hist : e hist(y,C) dessine lhistogramme pour les valeurs du vecteur y rparties en C classes e si C est un scalaire, ou sur les classes centres sur les valeurs du vecteur C si C est un e vecteur. Par dfaut, C vaut 10. e [N,C]=hist(y,C) ne dessine pas dhistogramme mais retoure les vecteurs N et C o` C u est le vecteur des milieux des classes et N est le nombre de valeurs de y appartenant a chaque classe. Lhistogramme sobtient par bar(C,N). `

Exercice 20. Reprendre lexercice prcdent et faire acher dans une mme fentre graphique e e e e deux histogrammes, un pour les abscisses et lautre pour les ordonnes des points tirs. e e

12

` TP1 : INTRODUCTION A MATLAB

8. Utilisation de fichiers. 8.1. Les chiers de sauvegarde. La commande diary nomchier cre un chier (journal de e bord) intitul nomchier qui garde la trace de toutes les commandes que vous avez tapes dans e e la fentre de commandes ainsi que les rponses de lordinateur. diary off permet darrter e e e lcriture du journal de bord, tandis que diary on permet de la reprendre. e save nomchier var1 ... varn save nomchier save -ASCII nomchier var1 ... varn load nom-f sauve la valeur des variables var1 ... varn dans un chier binaire nomchier.mat sauve lensemble des variables existant dans lespace de travail de Matlab dans un chier binaire nomchier.mat sauve la valeur des variables var1 ... varn dans un chier texte nomchier permet de rcuprer toutes les donnes sauvegardes e e e e dans le chier nomchier.mat

Exercice 21. Sauvegardez x, y et le centre de gravit G dans un chier binaire sauv.mat. e Ouvrez ce chier sous Linux (avec Emacs par exemple). Dans Matlab, avec la commande clear, eacez x, y et G. Puis, chargez le chier sauve.mat an de les rcuprer. Vriez la e e e rcupration. e e 8.2. Les programmes script (ou chiers dinstructions). Ce sont des chiers texte avec une extension .m. Ils contiennent des suites dinstructions Matlab qui sont excutes les unes e e apr`s les autres. e Exemple 4. Sauvez dans le rpertoire courant les lignes suivantes sous le nom losange.m : e x=[0 -1 0 1 ; -1 0 1 0 ] y=[-1 0 1 0 ; 0 1 0 -1] plot(x,y) La commande losange achera x, puis y, puis tracera un losange. Si ce chier est plac e dans un rpertoire accessible 2 , la commande losange devient une commande Matlab comme e toutes les autres. 8.3. Les chiers de fonctions. Comme les chiers dinstruction, ce sont des chiers texte avec une extension .m. Leur syntaxe est particuli`re. Ils contiennent la dnition dune fonce e tion et portent le nom de cette fonction. Exemple 5. function d=densnorm(x) % densnorm : densite de la loi N(0,1) % densnorm(x) retourne (1/sqrt(2*pi))*exp(-x2/2) d=(1/sqrt(2*pi))*exp((-x.2)/2);
2. voir ci-dessous le paragraphe Gestion du path

` TP1 : INTRODUCTION A MATLAB

13

Si ce chier est plac dans un rpertoire accessible, la fonction densnorm devient une fonce e tion Matlab comme toutes les autres. Le texte plac en commentaire est le contenu de laide e pour la nouvelle fonction.

Exercice 22. Utilisez la fonction ci-dessus pour tracer (avec plot) la densit de la loi nore male centre rduite entre -5 et 5 en faisant calculer 100 points. Aurait-on pu utiliser fplot? e e Calculez P(5 X 1.96) o` X est une variable alatoire de loi N (0,1). u e 8.4. Dialogue avec lutilisateur. disp(var) ache le contenu de var rep=input(texte) ache la ch de caract`re texte et donne la main a lutine e ` lisateur pour quil entre la valeur de la variable rep pause(n) arrte lexcution dun programme pendant n secondes ; par e e dfaut (sans n), reprend lexcution du programme lorsque e e lutilisateur appuie sur une touche du clavier keyboard arrte lexcution dun programme et donne la main a lutie e ` lisateur jusqu` ce quil tape presse la touche Entre a e

Exemple 6. Essayez les commandes suivantes : n=input(entrez le nombre de simulations) disp([Vous avez tap : num2str(n)]) e

Exercice 23. Ecrire une fonction simule.m qui prend n en argument et : (1) construit un vecteur de n = 100 nombres alatoires (y i )i=1,...,n issus dune loi normale e de moyenne 2 et de variance 1, (2) renvoie la moyenne et la variance de lchantillon observ, e e (3) spare la fentre graphique en deux espaces graphiques et superpose respectivement e e sur chacun deux : lhistogramme de (yi )i=1,...,n et la densit de la loi normale de moyenne 2 et de e variance 1, donne un titre a la gure et ache la moyenne et la variance, ` la fonction de rpartition empirique (utiliser la fonction sort) et la fonction de e rpartition thorique (utiliser la fonction pnorm), et donne un titre a la gure. e e ` Faites tourner le programme pour dautres valeurs de n, plus grandes ou plus petites. Indication : la premi`re ligne du chier de fonction est function [m,v] = simule(n). e

14

` TP1 : INTRODUCTION A MATLAB

9. Les commandes structures e 9.1. Linstruction for. La syntaxe en est la suivante : for variable = vecteur instructions end Les colonnes du vecteur sont aectes, lune apr`s lautre a la variable variable et pour e e ` chacune de ces valeurs, les instructions sont excutes. Remarquez quil faut privilgier les e e e oprations vectorielles a lutilisation de boucles. e ` Exemple 7. Ces quelques lignes calculent n! pour n = 1 a 100. fact = zeros(1,100); ` n=100; fact(1)=1; for k=2:n fact(k)=fact(k-1)*k; end Mais on peut aussi taper simplement : n=100; fact=cumprod(1:n); Lexcution du premier programme prend signicativement plus de temps que lexcution e e du deuxi`me programme. Pour le voir, et comparer lecacit des algorithmes, on peut utiliser e e tic (` placer en dbut de programme) et toc (` placer en n de programme ) qui permettent a e a de compter le temps cpu coul. e e Exercice 24. Excutez les deux programmes ci-dessus en utilisant les commandes tic, e toc an de comparer leur temps dexcution respectif. e

9.2. Les intructions conditionnelles. La mani`re la plus brute de procder est dutiliser e e un bloc if ... then ... else ... end. La syntaxe en est la suivante : if conditions instructions end Les instructions ne sont excutes que si les conditions sont vries, plus prcisment e e e e e e si conditions a une valeur dirente de 0. Une variante plus labore est : e e e if conditions instructions else instructions end

(excutes si les conditions sont vries) e e e e (excutes si les conditions ne sont pas vries) e e e e

Ou encore (avec des embo tements) :

` TP1 : INTRODUCTION A MATLAB

15

if conditions1 instructions (excutes si les conditions1 sont vries) e e e e elseif conditions2 instructions (excutes si les conditions1 ne sont pas vries e e e e mais si les conditions2 le sont) else instructions (excutes si ni les conditions1 ni les conditions2 ne sont vries) e e e e end Exemple 8. Le programme suivant simule le lancer dune pi`ce. e p=0.5; u=rand; if u<p disp(pile) else disp(face) end

NB : Rappelons quune proposition logique (par exemple, (x>0 & x<10)) a pour valeur 1 si elle est vraie et 0 sinon. Dans les calculs, on peut donc viter dutiliser linstruction if en e introduisant des indicatrices densembles. Exercice 25. En tenant compte de cette remarque, simuler la ralisation dune variable e alatoire de loi de Bernoulli de param`tre p. Puis, apr`s cet chauement, crire un programme e e e e e script EstimeParam.m qui : (1) simule un 1000-chantillon de variables alatoires de Bernoulli de param`tre 0.2, e e e (2) ache le nombre de succ`s contenus dans ce 1000-chantillon, e e (3) et trace la courbe des moyennes mobiles en fonction du rang. Excuter le programme. Que remarque-t-on? Quel est le thor`me qui explique le phnom`ne? e e e e e Exercice 26. Nous allons censurer des variables. Soit u une ralisation dun 15-chantillon e e X1 , . . . ,X15 de loi uniforme sur [5,1]. Mettez les observations plus petites que 2 a 10. ` Ceci forme v, ralisation dun 15-chantillon Y 1 , . . . ,Y15 . Quelle est la loi commune aux Yi ? e e 9.3. Linstruction while. Ce format de boucle permet de sarrter conditionnellement (et e non plus a rang x, comme dans une boucle for). La syntaxe en est la suivante : ` e while conditions instructions end Les instructions sont excutes tant que les conditions sont vries. e e e e Exemple 9. Soit f une fonction continue. La fonction suivante recherche par dichotomie une valeur approche a e pr`s dune solution de lquation f (x) = 0 dans lintervalle [a, b], lorsque e ` e e

16

` TP1 : INTRODUCTION A MATLAB

f (a) et f (b) sont de signes dirents (ce qui forme une condition susante dexistence de ce e point dannulation x). function s=dicho(f,a,b,e) % s=DICHO(f,a,b,e) % f : chaine de caracteres contenant le % nom dune fonction (definie a % laide dun fichier .m de type % function) % a,b : bornes de lintervalle de recher % che( a<b ) % e : precision avec laquelle on veut la % valeur approchee de la solution % de f(x)=0 d=b-a; ya=feval(f,a); yb=feval(f,b); if ya==0 s=a; elseif yb==0 s=b; elseif ya*yb<0 while (d>e) x=(b+a)/2; y=feval(f,x); if y==0 s=y; return elseif y*ya<0 b=x; yb=y; else a=x; ya=y; end d=b-a; end s=x; else error(la fonction ne change pas de signe) end Pour mmoire, on donne les instructions de rupture de squence. Il vaut cependant mieux e e programmer susamment proprement pour sen dispenser. Exercice 27. Ecrire une fonction y = Puiss(n,M) qui tant donn un entier n et une valeur e e maximale M > n, calcule les puissances enti`res de ce nombre, les agr`ge dans le vecteur y e e et sarrte lorsque le rsultat dpasse la valeur maximale e e e

` TP1 : INTRODUCTION A MATLAB

17

break termine lexcution de la boucle la plus proche e return Termine lexcution dun chier script sans aller jusqu` sa n e a error(message) ache la cha de caract`res message et interrompt lexcution du prone e e gramme en cours Rfrences e e
[1] M. Mokhtari et A. Mesbah Apprendre et maitriser Matlab. Springer. [2] S. Lemaire. Documents pour la prparation a lagrgation dOrsay. e ` e [3] B. Laurent. Documents pour les tps de Matlab de la Ma se de mathmatiques ingnierie tr e e

Questions et probl`mes supplmentaires pour utilisateurs avertis e e Renseignez-vous, via laide intgre a Matlab, sur les sujets suivants : e e ` les types de donnes et la conversion dun type a lautre, e ` la gestion des chemins dacc`s (i.e. le path). e

Exercice 28. Essayez de mettre les mots chat, chien, oiseau et 45 dans un mme e objet Matlab. Remarquez que Matlab refuse que ledit objet soit de type vecteur : la commande )) [chat; chien; oiseau; 45] provoque une erreur. Pourquoi? Quel type faut-il choisir alors? Ajoutez a lobjet ainsi form ` e un cinqui`me lment : la valeur de , avec 9 dcimales. Rcuprez ensuite la valeur numrique e ee e e e e du quatri`me lment dans un scalaire x. Enn, crivez une procdure qui mette bout a bout e ee e e ` les premi`res lettres de chacun des trois mots, puis les deuxi`mes, etc. e e Exercice 29. Crez un rpertoire de travail TP2 et ajoutez-le au path. Fermez votre session et e e rouvrez-la. Dmarrez Matlab. TP2 est-il toujours dans la liste des chemins? Si non, crez un e e chier pathdef.m (Menu File puis Set path) dans votre rpertoire de dmarrage. A chaque e e lancement de Matlab, il vous sura de tapez la commande pathdef pour que de multiples chemins deviennent accessibles. Ceci permet de classer correctement ses documents dans une arborescence claire.

Vous aimerez peut-être aussi